1.PIM概述
PIM协议简介
PIM称为协议无关组播。协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF检查,检查通过后创建组播路由表项,从而转发组播报文。
目前在实际网络中,PIM主要有两种模式:
1)PIM-DM(PIM-Dense Mode,PIM密集模式) 。
2)PIM-SM(PIM-Sparse Mode,PIM稀疏模式) ,PIM-SM模式根据组播服务模型又可以分为:
①PIM-SM(ASM):为任意源组播建立组播分发树。
②PIM-SM(SSM):为指定源组播建立组播分发树。
PIM-DM与PIM-SM使用场景
PIM形成组播分发树主要有两种模式,即PIM-DM模式与PIM-SM模式,这两种模式分别用在不同的场景下:
①PIM-DM模式主要用在组成员较少且相对密集的组播网络中,该模式建立组播分发树的基本思路是“扩散-剪枝”,即将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树。
②PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。
组播分发树的分类
通过PIM形成的组播分发树主要分为以下两种:
①以组播源为根,组播组成员为叶子的组播分发树称为SPT(Shortest Path Tree),在PIM-DM与PIM-SM中均有使用。
②以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为RPT(RP Tree),在PIM-SM中使用。
PIM路由表项
PIM路由表项即通过PIM协议建立的组播协议路由表项。
PIM网络中存在两种路由表项:
(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。
组播路由表项
在不同的组播路由器上,组播路由表项会基于不同的表项汇总形成。
最后一跳路由器的组播路由表项主要基于PIM路由表项,IGMP组表项和IGMP路由表项汇总形成。
其余组播路由器的组播路由表项主要基于PIM路由表项形成。
组播路由表项只能基于PIM(S,G)路由表项形成。PIM(*,G)路由表项缺少入接口信息无法形成组播路由表。
2.PIM-DM
基本概念
PIM-DM主要用在组成员较少且相对密集的网络中,通过“扩散-剪枝”的方式形成组播转发树(SPT)。
PIM-DM在形成SPT的过程中,除了扩散(Flooding),剪枝(Prune)机制外,还会涉及邻居发现(Neighbor Discovery),嫁接(Graft),断言(Assert)和状态刷新(State Refresh)机制。
PIM-DM协议报文
PIM协议报文直接采用IP封装,目的地址224.0.0.13,IP协议号103。
PIM-DM与PIM-SM使用的协议报文类型有所不同。
PIM-DM使用报文主要是以下几类:
邻居发现
组播转发路径只能在PIM邻居之间建立,因此邻居发现是形成组播分发树的先决条件。
邻居发现主要通过PIM Hello包完成。
邻居发现与维持:当路由器的接口激活PIM后,接口便周期性发送PIM Hello数据包,目的地址224.0.0.13。交互Hello报文后,组播路由器之间就能知道邻居信息,建立PIM邻居关系。
维持邻居关系:PIM邻居关系依靠Hello包维持,邻居超时时间默认105s,如果超时时间内收不到邻居发来的Hello包,则删除邻居关系。
首次形成组播分发树
PIM-DM模式首次形成组播分发树主要依赖扩散机制、剪枝机制、断言机制与DR选举机制。
扩散机制:组播数据包向所有的PIM邻居泛洪,同时组播路由器产生组播路由表项。
断言机制:当组播转发过程中存在多路访问网络,则需要选举出一个组播转发路由器,避免重复组播报文。
剪枝机制:如果组播路由器下没有组成员,则将源到该组播路由器的组播转发路径剪枝。
①扩散机制
组播源发送的组播报文会在全网内扩散。当PIM路由器接收到组播报文,先进行RPF检查,通过后会在该路由器上创建(S,G)表项,之后会向所有PIM邻居发送。
PIM-DM形成的(S,G)表项有老化时间(默认210s),如果老化时间超时前没有收到新的组播报文,则删除(S,G)表项。
②断言机制
当一个网段内有多个相连的PIM路由器向该网段转发组播报文时,需要通过断言机制(Assert)来保证只有一个PIM路由器向该网段转发组播报文。
通过断言机制的选举规则将决定组播路由器的转发行为:
获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
选举规则:
PIM路由器在接收到邻居路由器发送的相同组播报文后,会向该网段发送断言(Assert)报文,进行Assert选举。Assert报文内会携带到组播源的单播路由前缀,路由优先级与开销。选举规则如下:
单播路由协议优先级较高者获胜。
如果优先级相同,则到组播源的开销较小者获胜。
如果以上都相同,则下游接口IP地址最大者获胜。
③剪枝机制
对于没有组成员连接的组播路由器,组播网络无需再将组播流量继续放往该设备。通过剪枝机制,组播网络可以将此类路径剪枝。
维护组播分发树
组播分发树形成后不会一直存在,也不会一直不变。
在PIM邻居关系稳定,组成员没有变化的情况下,维护组播分发树一般有两种方式:
持续发送组播报文,保证组播路由表项能一直存在。
发送状态刷新报文,保证组播路由表项的下行接口状态不发生变化。
状态刷新机制
在PIM-DM网络中,为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发,离组播源最近的第一跳路由器会周期性地触发State Refresh报文在全网内扩散。
收到State Refresh报文的PIM路由器会刷新剪枝定时器的状态。被裁剪接口的下游叶子路由器如果一直没有组成员加入,该接口将一直处于抑制转发状态。
新成员加组
当有新成员加入组播组后,组播网络需要更新组播分发树,才能将组播数据发往组成员。PIM-DM模式在使用“扩散-剪枝”的方式建立组播分发树后,通过状态刷新机制,使下行接口一旦被抑制就无法自动恢复。
因此需要一些机制来更新组播分发树,一般PIM-DM模式更新组播分发树的方法有两种:
等待组播路由表超时后,全网重新泛洪。该方法不可控,在现网中无法实现
使用嫁接(Graft)机制,当新成员加组后,主动反向建立组播分发路径。现网中一般使用嫁接机制来实现新成员加组。
嫁接机制
PIM-DM通过嫁接机制,使有新组成员加入的网段快速得到组播报文。
叶子路由器通过IGMP了解到与其相连的用户网段上,组播组G有新的组成员加入。随后叶子路由器会基于本地的组播路由表向上游发送Graft报文,请求上游路由器恢复相应出接口转发,将其添加在(S,G)表项下游接口列表中。
3.PIM-SM(ASM)
PIM-SM简介
PM-DM的局限性
中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到组多问题:
使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击。
所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。
对于组成员较为稀疏的组播网络,使用“扩散-剪枝”形成组播分发树的效率不高。
PIM-DM模型使用“扩散-剪枝”形成组播分发树的原因是:组播网络中大部分组播路由器无法得知组成员的位置。
PIM-SM(ASM)工作原理
PIM-SM(ASM)模型形成组播分发树的方法是:
将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。
组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。
对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。
PIM-SM(ASM)协议报文
PIM协议报文直接采用IP封装,目的地址224.0.0.13,IP协议号103。
PIM-SM使用报文主要是以下几类:
RP介绍
汇聚点RP(Rendezvous Point)为网络中一台重要的PIM路由器,用于处理源端DR注册信息及组成员加入请求,网络中的所有PIM路由器都必须知道RP的地址,类似于一个供求信息的汇聚中心。
目前可以通过以下方式配置RP:
静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置。
动态RP:通过选举机制在多个C-RP(Candidate-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。
首次形成组播分发树
PIM-SM(ASM)模式首次形成组播分发树主要依赖RPT构建机制,组播源注册机制与DR选举机制。
RPT构建机制:组播叶子路由器主动建立到RP的组播分发树(RPT)
组播源注册机制:通过该机制形成组播源到RP的组播分发树(SPT)
DR选举机制:DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。
RPT构建
RPT(RP Tree)是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。
当网络中出现组成员(形成IGMP表项)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。
组播源注册机制
1)形成SPT
PIM-SM(ASM)模型中,源端DR到RP的组播分发树无法使用Join报文创建,因此需要组播源注册机制帮助形成源端DR到RP的组播分发树(SPT)。
形成SPT需要基于Register报文与Join报文,具体过程如下:
2)转发组播数据
组播源信息注册到RP后,就形成了组播源到RP的SPT,但源端DR此时仍然会将组播数据包封装入Register报文,该方式会造成一些问题:
源端DR最初发送的是单播Register报文,但是该方式会加重源端DR与RP的工作量。
源端DR形成到RP的SPT后,会同时发送单播Register报文和组播报文,造成重复组播包的问题。
SPT建立后,RP使用Register-Stop报文通知源端DR后续报文可以以组播报文形式发送。
源/末端网络中的重复组播报文
在源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。
PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免了重复组播报文的问题。
PIM DR的选举
在PIM-SM(ASM)中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访问网络选举指定路由器DR。
接口DR优先级高的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。
当DR出现故障后,邻居路由器之间会重新选举DR。
RPT次优路径问题:过大的组播流量会对RP形成巨大的负担。
组播转发路径有可能是次优路径。
SPT切换机制
当数据发送至RP后,RP会沿RPT将数据发送给成员端DR。为了解决RPT潜在的次优路径问题,成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT。
维护组播分发树
当组播分发树(SPT或RPT)稳定后,成员端DR会周期性发送Join/Prune报文,用于维护组播分发树。
如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树。
4.PIM-SM(SSM)
基本概念
SSM模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时,可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后,主机只会收到指定源发送到该组的数据。
SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。
由于SSM提前定义了组播的源地址,所以PIM-SM(SSM)可以在成员端DR上基于组播源地址直接反向建立SPT。
PIM-SM(SSM)无需维护RP、无需构建RPT、无需注册组播源,可以直接在组播源与组成员之间建立SPT。
在PIM-SM(SSM)模型中,关键机制包括邻居发现、DR竞选、构建SPT。
组播分发树的形成与维护
PIM-SM(SSM)模型构建组播分发树的形成主要依赖IGMPv3报文与Join报文。
PIM-SM(SSM)模型形成的组播分发树会一直存在,不会因为没有组播流量而消失。
PIM模型比较