一、PIM-SM(稀疏模式)
前面我们学习了PIM-DM模式并且完成了简单的组播实验,我们知道了PIM-DM是通过泛洪和剪枝实现组播组成员的管理和组播分发树的建立的。但是在现实环境中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到组多问题:
-
使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击。 -
所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。 -
对于组成员较为稀疏的组播网络,使用"扩散-剪枝"形成组播分发树的效率不高。
简单说就是PIM-DM模式效率不高,全网泛洪和维护PIM路由表占用了无关路由器的性能,存在其缺陷,因此一般用于较为密集的组播网络中。因此也出现了PIM-SM模式,PIM-SM模式根据组播服务模型又可以分为:
-
PIM-SM(ASM):为任意源组播建立组播分发树。 -
PIM-SM(SSM):为指定源组播建立组播分发树。
二、PIM-SM(ASM)介绍
PIM-SM(ASM)模型形成组播分发树的方法是:
-
将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。 -
组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。 -
对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。
PIM-SM(ASM)优点,通过PIM-SM(ASM)模式形成组播分发树有如下好处:
-
只有组播转发路劲上的组播路由器需要维护组播路由表。 -
通过RP可以让所有组播路由器获知组成员的位置。 -
避免“扩散-剪枝”机制,提高组播分发树的形成效率。
三、PIM-SM(ASM)协议报文
3.1 协议报文类型
报文类型 | 报文功能 |
---|---|
Hello | 用于PIM邻居发现,协议参数协商,PIM邻居关系维护等 |
Register(注册) | 用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP |
Register-Stop(注册停止) | RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量 |
Join/Prune(加入/剪枝) | 加入报文用于加入组播分发树,剪枝则用于修剪组播分发树 |
Assert(断言) | 用于断言机制 |
Bootstrap(自举) | 用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP)的汇总信息 |
Candidate-RP-Advertisement(候选RP通告) | C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息 |
3.2 RP的选举
汇聚点RP(Rendezvous Point) 为网络中一台重要的PIM路由器,用于处理源端DR注册信息及组成员加入请求,网络中的所有PIM路由器都必须知道RP的地址,类似于一个供求信息的汇聚中心。RP相当于中介,组播源需要注册到SPT,组播组成员到需要构建RPT到达RP。
目前可以通过以下方式配置RP:
-
静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置。 -
动态RP:通过选举机制在多个C-RP(Candidate-RP,候选RP)之间选举出RP。
静态RP或者是动态RP在设置时均可以指定该RP为哪些组播组提供服务。
动态RP选举:动态选举RP会涉及两类角色C-BSR(Candidate-Bootstrap Router) 与C-RP(Candidate-RP):
-
C-BSR通过竞选能选举出一个唯一的BSR。 -
BSR的作用是收集C-RP的信息并形成RP-Set信息,BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。 -
PIM路由器收到RP-Set消息后,根据RP选举规则选举出合适的RP。
动态选举时先选举出BSR,BSR收集RP的信息发送给所有PIM路由器进而选举出RP。
BSR竞选规则如下:
-
优先级较高者获胜(优先级数值越大优先级越高)。 -
如果优先级相同,IP地址较大者获胜。
RP竞选规则如下:
-
与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。 -
如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。 -
如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。 -
如果以上比较结果都相同,则C-RP的IP地址较大者获胜。
3.3 首次形成组播分发树
PIM-SM(ASM)模式首次形成组播分发树主要依赖RPT构建机制,组播源注册机制与DR选举机制。
-
RPT构建机制:组播叶子路由器主动建立到RP的组播分发树(RPT) -
组播源注册机制:通过该机制形成组播源到RP的组播分发树(SPT) -
DR选举机制:DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。
3.4 RPT构建
RPT:组播成员DR到RP的路径,也就是连接组播组成员的路由器到达RP的路径。
RPT(RP Tree)是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。
当网络中出现组成员(形成IGMP表项)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。
3.5 组播源SPT构建
SPT:组播源到RP的路径,由于没有IGMP,不能生成Join报文,只能使用register与RP交互形成SPT树。
PIM-SM(ASM)模型中,源端DR到RP的组播分发树无法使用Join报文创建,因此需要组播源注册机制帮助形成源端DR到RP的组播分发树(SPT)。
形成SPT需要基于Register报文与Join报文,具体过程如下:
组播源信息注册到RP后,就形成了组播源到RP的SPT,但源端DR此时仍然会将组播数据包封装入Register报文,该方式会造成一些问题:
源端DR最初发送的是单播Register报文,但是该方式会加重源端DR与RP的工作量。
源端DR形成到RP的SPT后,会同时发送单播Register报文和组播报文,造成重复组播包的问题。
组播源DR与RP形成SPT后,RP发送停止注册报文通知采用组播报文发送数据。
组播数据转发流程:组播源到RP形成SPT,组播成员到RP形成RPT,数据从SPT转发到RPT,由RP进行维护。
3.6 PIM DR选举
在源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。
PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免了重复组播报文的问题。就是直连组播源或者组播组成员可能存在多个路由器的情况,选举一台最优的进行转发数据,另外的路由器不转发组播流量。
PIM DR的选举:
-
在PIM-SM(ASM)中各路由器通过比较Hello消息上携带的 优先级和 IP地址,为多路访问网络选举指定路由器DR。 -
接口DR优先级高的路由器将成为该MA网络的DR,在优先级相同的情况下, 接口IP地址大的路由器将成为DR。 -
当DR出现故障后,邻居路由器之间会重新选举DR。 -
DR优先级默认为1,数值越大越优。 -
对于成员端网络,如果有多台组播路由器,则组播路由器的下行接口需要同时开启IGMP与PIM。 -
DR还可充当IGMPv1的查询器。
3.7 RPT次优路径问题
在PIM-SM网络中,一个组播组只对应一个RP。因此组播数据最初都会发往RP,由RP进行转发,这会导致两个问题:
-
过大的组播流量会对RP形成巨大的负担。 -
组播转发路径有可能是次优路径。
简单说就是所有流量到RP可能走的路径不是最优。
3.8 SPT切换
当数据发送至RP后,RP会沿RPT将数据发送给成员端DR。为了解决RPT潜在的次优路径问题,成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT。
设备沿最短路径发送Join消息,该最短路径基于RPF选举规则决定。
设备将Join消息从RPF选举得出的上行接口发出。多路访问网络在SPT切换的过程中可能会存在重复报文,需要利用断言机制快速选定下行接口。
当组播分发树(SPT或RPT)稳定后,成员端DR会周期性发送Join/Prune报文,用于维护组播分发树。如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树。
总结:PIM-SM(ASM)依据RP为核心,建立组播源到RP的SPT组播分发树,RP作为核心建立到达组播组成员DR的RPT组播分发树,组播数据从组播源经过SPT-RP-RPT-组播组成员转发。动态RP的大致工作步骤:
-
选举BSR,BSR再发送RP-set选举出RP -
基于组播源注册机制,源端DR发送Register(注册)报文到RP建立SPT,完成后RP发送Register-Stop(注册停止)完成SPT建立 -
成员端DR向RP发送Join报文,沿途路由器生成(*,G)表项,构建RPT -
组播源通过SPT转发组播数据,当数据发送至RP后,RP会沿RPT将数据发送给成员端DR。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布