四、PIM-SM(SSM模型)
SSM模型是借助PIM-SM的部分技术和IGMPv3/MLDv2来实现的,无需维护RP、无需构建RPT、无需注册组播源,可以直接在源与组成员之间建立SPT。
SSM的特点是网络用户能够预先知道组播源的具体位置。因此用户在加入组播组时,可以明确指定从哪些源接收信息。组成员端DR了解到用户主机的需求后,直接向源端DR发送Join报文。Join报文逐跳向上传输,在源与组成员之间建立SPT。
在SSM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、构建SPT。
PIM-SM(SSM模型)邻居发现
邻居发现机制与PIM-DM中的相同。
2、PIM-SM(SSM模型)DR竞选
DR竞选机制与PIM-SM(ASM模型)中的相同。
3、PIM-SM(SSM模型)SPT构建
图1 SPT构建示意图
如上图1所示,SPT的建立过程如下:
1、RouterD、RouterE借助IGMPv3/MLDv2协议了解到用户主机有到相同组播组不同组播源的组播需要,逐跳向源方向发送Join报文。
2、PIM路由器通过Join报文分别创建(S1,G)、(S2,G)表项,从而分别建立了源S1到组成员HostA、源S2到组成员HostB的SPT。
3、SPT建立后,源端就会将组播报文沿着SPT分发给组成员。
4、SSM与ASM模型比较
SSM模型与ASM模型之间的最大差异就是是否指定了组播源,具体的区别如下表1。
五、PIM BFD
为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要快速检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。
BFD(Bidirectional Forwarding Detection,双向转发检测)检测机制可提供毫秒级的快速检测,并采用单一机制对所有类型的介质、协议层进行检测,实现全网统一的检测机制。
其检测原理是在两个系统间建立BFD会话,并沿它们之间的路径周期性发送BFD检测报文,如果一方在检测周期内没有收到BFD检测报文,则认为该路径发生了故障。
在组播的应用中,如果共享网段上的当前DR或Assert winner发生故障,其他PIM邻居会等到邻居关系超时或Assert timer超时才触发新一轮的DR竞选或Assert竞选过程,导致组播数据传输中断,中断的时间将不小于邻居关系的超时时间或Assert timer超时时间,通常是秒级。
PIM BFD能够在毫秒级内检测共享网段内的链路状态,快速响应PIM邻居故障。
如果配置了PIM BFD功能的接口在检测周期内没有收到当前DR或Assert winner发送的BFD检测报文,则认为当前DR或Assert winner发生故障,BFD快速把会话状态通告给RM,再由RM通告给PIM。PIM模块触发新一轮的DR竞选或Assert竞选过程,而不是等到邻居关系超时或Assert timer超时,从而缩小组播数据传输的中断时间,提高组播数据传输的可靠性。
仅PIM-SM网络支持PIM BFD功能。
图1 PIM BFD原理图 如上图1所示,在与用户主机相连的共享网段上,RouterB的下游接口Interface1和RouterC的下游接口Interface2之间建立PIM BFD会话,通过在链路两端发送BFD检测报文检测链路状态。
RouterB作为当前DR,下游接口Interface1负责接收端组播数据的转发。若接口Interface1发生故障,BFD快速把会话状态通告给RM,再由RM通告给PIM。
PIM模块触发新一轮的DR竞选,RouterC作为新当选的DR,下游接口Interface2在短时间内向接收端转发组播数据,从而缩小组播数据传输的中断时间。
六、PIM GR
平滑重启GR(Graceful Restart)属于高可靠性HA(High Availability)技术的一种,实现协议重启时业务的不间断转发(Multicast Non-Stop Forwarding)能力。
PIM GR是一种组播协议GR。在具有双主控板的设备上,PIM GR可以在设备进行主备倒换时实现用户组播流量的正常转发。
目前,仅PIM-SM(ASM模型)与PIM-SM(SSM模型)支持PIM GR,PIM-DM不支持PIM GR。
PIM GR依赖于单播GR。
设备进行主备倒换期间,新主控板的PIM协议需要从下游邻居重新学习PIM加入状态,同时还需要从IGMP成员主机学习加入的组成员。
新主控板的PIM协议通过以上过程完成如下动作:
1、重新计算PIM组播路由表项。
2、维持下游邻居的加入状态。
3、更新转发平面的组播路由表项。
通过PIM GR,设备可以达到主备倒换后快速恢复新的主用主控板的PIM路由表项及刷新接口板组播转发表项的目的,从而最大限度地减少主备倒换对用户组播流量转发的影响。
PIM GR还可用于ISSU(In Service Software Upgrade)软件升级场景,在主控板及接口板升级过程中,保证组播流量的正常转发。
图1 PIM GR示意图
如上图1所示,介绍RouterA进行PIM GR的过程。
PIM GR建立在单播GR的基础上,整个PIM GR的过程分为三个阶段:开始阶段(GR_START)、同步阶段(GR_SYNC)和完成阶段(GR_END)。
1、GR_START(开始阶段):
1.1、RouterA发生主备倒换,PIM协议启动GR定时器,PIM GR进入开始阶段,同时单播开始进行GR。
1.2、PIM协议向所有使能PIM-SM的接口发送携带新的Generation ID的Hello报文。
1.3、RouterA的下游邻居RouterB、RouterD发现RPF邻居的Generation ID改变,向RouterA重新发送Join/Prune报文。
1.4、若网络中使用动态RP,当网络中的邻居收到Generation ID改变的Hello报文后,向RouterA单播发送BSR报文,恢复RouterA的BSR及RP信息。
1.55、RouterA通过接收下游RouterB、RouterD发送的Join/Prune报文,在空的入接口表中创建PIM路由表项,记录下游的加入信息。
在此期间,转发模块转发表项保持不变,维持组播业务数据的转发。
2、GR_SYNC(同步阶段)
单播GR结束,PIM GR进入同步阶段,根据单播路由信息建立组播分发树,恢复PIM路由表项的入接口,更新到源或到RP的加入队列,并通知组播转发模块更新转发表。
3、GR_END(完成阶段)
GR定时器超时,PIM协议完成GR,并通知组播转发模块。组播转发模块老化GR期间未更新的转发表项。
七、PIM(IPv4)应用场景举例
1、单自治域PIM-DM应用举例
图1 单自治域PIM-DM应用组网图
在如上图1所示的小型网络中部署组播业务。该网络中已经部署了完备的IGP,且任意网段路由可达。网络中的组成员分布相对比较密集,要求网络中的用户主机能够按需接收视频点播信息,并在一定程度上节约网络的带宽。
实现方案:
如上图1所示,HostA、HostB和HostC为网络中的信息接收者,通过组播方式接收视频点播信息,整个PIM域采用PIM-DM方式。
RouterA与组播源Source相连;RouterB连接HostA,RouterD和RouterF连接HostB和HostC。
网络部署如下:
1、在所有路由器接口上启用PIM-DM协议。
2、RouterB与HostA之间,RouterD、RouterF与HostB、HostC之间均运行IGMP协议。
为路由器接口配置IGMP协议时,请确保接口参数配置的一致性,即遵循如下原则:
连接在同一网段的所有路由器必须运行相同的IGMP版本(推荐使用IGMPv2),且各接口参数(如查询定时器、组成员关系保持时间等)必须相同。
如果IGMP版本或各参数不相同,会导致不同路由器上IGMP组成员关系不一致。
部署完上述网络后,HostA、HostB和HostC能够接收到组播源的数据,正常收看视频点播信息。
建议在网络边缘配置接口静态加入用户所请求的组播组,可以提高用户收看频道的稳定性。
2、单自治域PIM-SM应用举例
图1 单自治域PIM-SM应用组网图
在如上图1所示的大型网络中部署组播业务。该网络中已经部署了完备的IGP,且任意网段路由可达。网络中的组成员分布相对比较稀疏,要求网络中的用户主机能够按需接收视频点播信息,并在一定程度上节约网络的带宽。
实现方案:
如上图1所示,HostA、HostB和HostC为网络中的信息接收者,通过组播方式接收视频点播信息,整个PIM域采用PIM-SM方式。
RouterA与组播源S1相连,RouterC与组播源S2相连;RouterB连接HostA,RouterE和RouterG连接HostB和HostC。
网络部署如下:
1、在所有路由器接口上启用PIM-SM协议。
2、如上图1所示,网络中的组播源分布比较密集,则可以选择与组播源比较近的核心设备作为C-RP。将RouterC和RouterD的接口配置为C-BSR和C-RP,动态竞选出为PIM-SM网络服务的BSR和RP。
RP部署方式的选择:
1、中小型网络:
建议选择静态RP方式,对设备要求低,也比较稳定。
如果网络中只有一个组播源,建议选择直连组播源的设备作为静态RP,这样可以省略源端DR向RP注册的过程。采用静态RP方式要确保域内所有路由器(包括RP本身)的RP信息以及服务的组播组范围全网一致。
2、大型网络:
可以采用动态RP方式,可靠性高,可维护性强。
如果网络中存在多个组播源,且分布密集,建议选择与组播源比较近的核心设备作为C-RP;如果网络中存在多个用户,且分布密集,建议选择与用户比较近的核心设备作为C-RP。
要注意避免在一个PIM域中不同路由器上分别使用静态RP和动态RP,以防止RP信息不一致。
RouterB与HostA之间,RouterE、RouterG与HostB、HostC之间均运行IGMP协议。
为路由器接口配置IGMP协议时,请确保接口参数配置的一致性,即遵循如下原则:
连接在同一网段的所有路由器必须运行相同的IGMP版本(推荐使用IGMPv2),且各接口参数(如查询定时器、组成员关系保持时间等)必须相同。
如果IGMP版本或各参数不相同,会导致不同路由器上IGMP组成员关系不一致。
部署完上述网络后,HostA、HostB和HostC根据需要向RP发送Join消息,组播源的信息能够到达接收者。
建议在网络边缘配置接口静态加入用户所请求的组播组,可以提高用户收看频道的稳定性。