PIM协议(组播)

PIM-DM的工作机制

PIM(Protocol Independent Multicast)协议无关组播,直接封装在IP报文中,协议号为103,组播地址224.0.0.13

以组播组建立从组播源到组成员的转发路径,组播转发路径为树型结构,也称组播分发树

特点:无论网络中的组成员有多少,每条链路上的组播数据只能发送一份

被传递的组播数据在距离组播源源的分叉路口开始复制和转发

PIM有两种模式:

PIM-DM(密集模式)

PIM-SM(稀疏模式)

首先将组播数据报文扩散到各个网段,然后再裁剪掉不存在组成员的网段,通过周期性的“扩散剪枝”,构建并维护一棵连接组播源和组成员的单向无环SPT

采用推(push)模式,来转发组播报文

目的:建立SPT树(最短路径树)

工作机制:

  1. 邻居发现
  2. 扩散和剪枝
  3. 状态刷新
  4. 嫁接
  5. 断言

PIM-DM邻居发现

使用Hello机制发现邻居

DR选举:

邻居发现:路由器周期性发送Hello消息来发现,建立并维护邻居关系(默认是30s,105s计时器超时)

DR 的选举:
在pim协议中路由器通过hello报文中携带的优先级和IP地址为broadcast网络选举DR
DR充当igmpv1的查询器
接口DR优先级大的会优先成为该广播网络的DR,优先级相同比较IP地址大的成为DR
当DR出现故障,邻居之间会重新选举DR

PIM-DM构建SPT(扩散)

启用PIM-DM的路由在接收到组播流量后,首先对组播流量进行RPF检测
RPF检测:反向路径转发检测,是pim协议中组播转发防环的核心手段
RPF检测成功,则创建(S,G)表项,(S,G)表项是由上游接口和下游接口构成
上游接口:就是RPF接口,负责接收(S,G)的组播流量,对于每一个(S,G)表项,RPF接口仅有一个
RPF接口不能是下游接口
如果去往组播源是负载分担,则选择下一跳接口地址大的为RPF接口,RPF接口的pim邻居称为RPF邻居
如果RPF接口上存在多个邻居,则邻居地址大的成为RPF邻居
下游接口:将RPF接口收到的组播流量发送出去的接口,即存在直连成员的接口(由IGMP协议维护)以及存在pim邻居的接口
即将组播流量通过下游接口扩散
剪枝:当路由器发现没有直连组成员,除RPF接口以外的接口也不存在pim邻居,则认为下游接口为空,则向RPF接口发送剪枝报文
上游接口收到剪枝报文后,将自身(S,G)表项中该接口剪枝(210s内不发送该组组播流量),此时,如果该路由器(S,G)表项还存在其他下游接口,则剪枝结束,如果(S,G)表项下游接口为空,继续沿S的RPF发送剪枝报文

嫁接

在剪枝定时器超时之前(210s),如果由组成员加组的需求,需要通过嫁接机制,帮助组成员快速拿到组播流量

路由器收到组成员的报告后,根据报告报文中的组地址,查自身(S,G)表项,获取组播源S的信息

如果不存在对应的(S,G)表项,则无法嫁接,那么就要求全网路由器在组播源活跃期间都必须维护(S,G)表项的存在

PIM-DM模式在组播源活跃期间周期性扩散和剪枝,来保证(S,G)表项不会老化

当存在对应的(S,G)表项,路由器根据组播源的地址进行RPF检查,向去往组播源的RPF接口上的RPF邻居发送单播的嫁接报文

上游路由器接口收到嫁接报文后,将该接口加入到自身的(S,G)表项的下游接口中,引导组播流量的下发,同时恢复单播的嫁接确认报文

剪枝到哪,嫁接到哪

状态刷新

这是PIM-DM新增的机制,华为设备默认开启,思科设备默认关闭,在连接组播源的接口上开启状态刷新机制

由于PIM-DM周期扩散和剪枝,而嫁接的需求不多不频繁,带来带宽和设备资源的浪费

该功能开启后,连接组播源的第一跳路由器在组播源活跃期间,每隔60s向所有的pim邻居发送状态刷新报文,状态刷新报文中携带组播源的地址和组地址,当路由器收到状态刷新报文,则意味着组播源是活跃的,所以重置剪枝接口的剪枝计时器,维持剪枝机制,同时重置(S,G)的老化时间,这样全网路由器依然可以在组播源活跃期间维护(S,G)表项的存在,并保持接口剪枝状态,无需通过周期性扩散和剪枝维护(S,G)表项节省设备资源和链路带宽

Assert(断言)

断言:为了防止在链路上出现相同的组播数据,开发的机制

当路由器在某个下游接口发送(S,G)流量的时候,同时在这个接口也收到该(S,G)的流量,就能感知到该网段存在重复的组播流量,此时该接口就会发送断言报文

断言报文携带三个参数,进行断言的选举,断言的优胜者继续发送组播流量,断言的失败者,将断言失败的接口从自己的(S,G)表项中剪掉

断言报文中携带自身去往组播源地址的路由协议的优先级

自身去往该组播源地址路由的开销值

自身接口的IP地址

先比较: 路由协议优先级,越小越优,相同则比较开销,开销小的优先,开销值相同则比较接口的IP地址,越大越优

PIM-SM(稀疏模式)

使用“拉(Pull)模式”转发组播报文。

在SM中找RP(汇聚点,其实就是一台被设置为RP的网络设备)去拉组播流量

也就是要求全网的路由器都需先知道某个组的RP的地址

连接组成员的路由器会逐跳构建一个以RP为根的RPT树,即共享树,RPT的根是RP,用(*,G)描述

连接组播源的路由器只需要将组播流量分发给这个组的RP即可,构建一颗源到RP 的SPT树,SPT的根是组播源,用(S,G)描述

RPT树的建立过程:

1.当连接组成员的DR路由器收到IGMP报告报文,创建(*,G)表项,根据G查找对应的RP地址,收到报告报文的接口为(*,G)的下游接口

2.根据RP的地址进行RPF检查,找到去往RP的RPF接口,并发送(*,G)join报文,该RPF接口为(*,G)表项的上游接口

3.上游路由器收到(*,G)的join报文后,创建(*,G)表项,收到(*,G)Join的接口为下游接口,根据G的地址查RP地址,找到RP的RPF接口为上游接口,并继续向RPF接口发送(*,G)join,逐跳构建RPT树到RP

源到RP的SPT的建立过程

1.当连接组播源的DR路由器收到组播流量后,根据组地址查到RP的地址,将组播报文通过单播的注册报文(携带源信息和组信息)发送给RP

2.如果RP存在对应(*,G)表项,并存在下游接口,则解封装注册报文,根据RPT树转发组播流量,并根据组播源地址查找RPF接口,发送(S,G)join 逐跳构建SPT树,源端DR构建SPT树后,直接转发组播流量到RP,RP收到后发送注册停止报文

3.如果RP上不存在(*,G)表项或者没有下游接口,则直接注册停止报文给源端DR,源端DR将停止将组播报文封装在注册报文中,RP也不会发送(S,G)的join报文

SPT切换

用户端 DR 周期性检测组播报文的转发速率,一旦发现从 RP 发往组播组 G 的报文速率超过阈值,则触发 SPT 切换:
  • 用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。
  • SPT建立后,组成员端DR会沿着RPT逐跳向RP发送剪枝报文,删除(*,G)表项中相应的下游接口。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。
  • 如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP
连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从 RPT SPT 切换
通过 RPT 树到 SPT 树的切换, PIM-SM 能够以比 PIM-DM 更精确的方式建立 SPT 转发树
  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值