目录
1 PIM简介 ........................................................................................................................................ 2
1.1 PIM-DM 简介 ..................................................................................................................... 2 1.2 PIM-DM 工作机制 ............................................................................................................. 2
1.2.1邻居发现 .................................................................................................................. 2 1.2.2构建SPT ................................................................................................................... 3 1.2.3嫁接.......................................................................................................................... 3 1.2.4断言.......................................................................................................................... 4 1.3 PIM-SM 简介 ...................................................................................................................... 4 1.4 PIM-SM 工作机制 .............................................................................................................. 5
1.4.1邻居发现 .................................................................................................................. 5 1.4.2DR 选举 .................................................................................................................... 5 1.4.3RP发现 ..................................................................................................................... 6 1.4.4构建RPT .................................................................................................................. 8 1.4.5组播源注册 ............................................................................................................. 8 1.4.6RPT 向SPT 切换 ...................................................................................................... 9 1.4.7断言.......................................................................................................................... 9 1.5 SSM 模型在PIM 中的实现 ............................................................................................ 10
1.5.1邻邻居发现 ........................................................................................................... 10 1.5.2DR 选举 .................................................................................................................. 10 1.5.3构建SPT ................................................................................................................. 10
2 PIM协议报文格式 ...................................................................................................................... 12
2.1 PIM报文通用格式 ........................................................................................................... 12 2.2 PIM Hello消息格式 .......................................................................................................... 13 2.3 PIM Register消息格式 ..................................................................................................... 15 2.4 PIM Register-Stop消息格式 ............................................................................................. 17 2.5 PIM Join/Prune消息格式 ................................................................................................. 18 2.6 PIM Graft/Graft-Ack消息格式 ......................................................................................... 21 2.7 PIM Bootstrap消息格式 .................................................................................................. 23 2.8 PIM Assert消息格式 ........................................................................................................ 26 2.9 PIM C-RP Advertisement消息格式 .................................................................................. 27 3 组播相关概念 ............................................................................................................................. 30
3.1 IP组播三种的传递方式 ................................................................................................... 30 3.2 IP组播技术体系结构 ....................................................................................................... 30
1
1 PIM简介
PIM 是Protocol Independent Multicast(协议无关组播)的简称,表示可以利用静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP 等)所生成的单播路由表为IP 组播提供路由。组播路由与所采用的单播路由协议无关,只要能够通过单播路由协议产生相应的组播路由表项即可。PIM 借助RPF(Reverse PathForwarding,逆向路径转发)机制实现对组播报文的转发。当组播报文到达本地设备时,首先对其进行RPF 检查:若RPF 检查通过,则创建相应的组播路由表项,从而进行组播报文的转发;若RPF 检查失败,则丢弃该报文。
根据实现机制的不同,PIM 分为以下两种模式:
PIM-DM(Protocol Independent Multicast-Dense Mode,协议无关组播—密 集模式)
PIM-SM(Protocol Independent Multicast-Sparse Mode,协议无关组播—稀 疏模式)
说明:为了描述的方便,本文中把由支持PIM 协议的组播路由器所组成的网络简称为“PIM 域”。
1.1 PIM-DM 简介
PIM-DM 属于密集模式的组播路由协议,使用“推(Push)模式”传送组播数据,通常适用于组播组成员相对比较密集的小型网络。
PIM-DM 的基本原理如下:
PIM-DM 假设网络中的每个子网都存在至少一个组播组成员,因此组播数据将被扩散(Flooding)到网络中的所有节点。然后,PIM-DM 对没有组播数据转发的分支进行剪枝(Prune),只保留包含接收者的分支。这种“扩散—剪枝”现象周期性地发生,被剪枝的分支也可以周期性地恢复成转发状态。
当被剪枝分支的节点上出现了组播组的成员时,为了减少该节点恢复成转发状态所需的时间,PIM-DM 使用嫁接(Graft)机制主动恢复其对组播数据的转发。
一般说来,密集模式下数据包的转发路径是有源树(Source Tree,即以组播源为“根”、组播组成员为“枝叶”的一棵转发树)。由于有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树(Shortest Path Tree,SPT)。
1.2 PIM-DM 工作机制 1.2.1邻居发现
在PIM 域中,路由器通过周期性地的向所有PIM 路由器(224.0.0.13)以组播方式发送PIM Hello 报文(以下简称Hello 报文),以发现PIM 邻居,维护各路由器之间的PIM 邻居关系,从而构建和维护SPT。 说明:路由器每个运行了PIM 协议的接口都会周期性地发送Hello 报文,从而了解与该接口相关的PIM 邻居信息。
2
1.2.2构建SPT
构建SPT 的过程也就是“扩散—剪枝”的过程:
(1) 在PIM-DM 域中,组播源S 向组播组G 发送组播报文时,首先对组播报文进行扩散:路由器对该报文的RPF 检查通过后,便创建一个(S,G)表项,并将该报文向网络中的所有下游节点转发。经过扩散,PIM-DM 域内的每个路由器上都会创建(S,G)表项。
(2) 然后对那些下游没有接收者的节点进行剪枝:由没有接收者的下游节点向上游节点发剪枝报文(Prune Message),以通知上游节点将相应的接口从其组播转发表项(S,G)所对应的出接口列表中删除,并不再转发该组播组的报文至该节点。 说明:
1)(S,G)表项包括组播源的地址S、组播组的地址G、出接口列表和入接口等。
2) 路由器上收到组播数据的接口称为“上游”,转发组播数据的接口称为“下游”。 剪枝过程最先由叶子路由器发起,如图1所示,没有接收者(Receiver)的路由器(如与Host A直连的路由器)主动发起剪枝,并一直持续到PIM-DM域中只剩下必要的分支,这些分支共同构成了SPT。
“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制,当剪枝超时后便重新开始这一过程。
说明:剪枝在PIM-SM 中有着相似的应用。
1.2.3嫁接
当被剪枝的节点上出现了组播组的成员时,为了减少该节点恢复成转发状态所需的时间,PIM-DM 使用嫁接机制主动恢复其对组播数据的转发,过程如下:
(1) 需要恢复接收组播数据的节点向其上游节点发送嫁接报文(Graft Message)以申请重新加入到SPT 中;
(2) 当上游节点收到该报文后恢复该下游节点的转发状态,并向其回应一个嫁接应答报
3
文(Graft-Ack Message)以进行确认;
(3) 如果发送嫁接报文的下游节点没有收到来自其上游节点的嫁接应答报文,将重新发送嫁接报文直到被确认为止。
1.2.4断言
在一个网段内如果存在多台组播路由器,则相同的组播报文可能会被重复发送到该网段。为了避免出现这种情况,就需要通过断言(Assert)机制来选定唯一的组播数据转发者。
如图2所示,当Router A和Router B从上游节点收到(S,G)组播报文后,都会向本地网段转发该报文,于是处于下游的节点Router C就会收到两份相同的组播报文,Router A和outer B也会从各自的本地接口收到对方转发来的该组播报文。此时,Router A和Router B会通过本地接口向所有PIM路由器(224.0.0.13)以组播方式发送断言报文(Assert
Message),该报文中携带有以下信息:组播源地址S、组播组地址G、到组播源的单播路由的优先级和度量值。通过一定的规则对这些参数进行比较后,Router A和Router B中的获胜者将成为(S,G)组播报文在本网段的转发者,比较规则如下:
(1) 到组播源的单播路由的优先级较高者获胜;
(2) 如果到组播源的单播路由的优先级相等,那么到组播源的度量值较小者获胜; (3) 如果到组播源的度量值也相等,则本地接口IP 地址较大者获胜。
1.3 PIM-SM 简介
PIM-DM 使用以“扩散—剪枝”方式构建的SPT 来传送组播数据。尽管SPT 的路径最短,但是其建立的过程效率较低,并不适合大中型网络。
PIM-SM 属于稀疏模式的组播路由协议,使用“拉(Pull)模式”传送组播数据,通常适用于组播组成员分布相对分散、范围较广的大中型网络。
4
PIM-SM 的基本原理如下:
PIM-SM 假设所有主机都不需要接收组播数据,只向明确提出需要组播数据的主机转发。PIM-SM 实现组播转发的核心任务就是构造并维护RPT(Rendezvous Point Tree,共享树或汇集树),RPT 选择PIM 域中某台路由器作为公用的根节点RP(Rendezvous Point,汇集点),组播数据通过RP沿着RPT 转发给接收者;
连接接收者的路由器向某组播组对应的RP 发送加入报文(Join Message),该报文被逐跳送达RP,所经过的路径就形成了RPT 的分支;
组播源如果要向某组播组发送组播数据,首先由与组播源侧DR(DesignatedRouter,指定路由器)负责向RP 进行注册,把注册报文(Register Message)通过单播方式发送给RP,该报文到达RP 后触发建立SPT。之后组播源把组播数据沿着SPT 发向RP,当组播数据到达RP 后,被复制并沿着RPT 发送给接收者。
说明:复制仅发生在分发树的分支处,这个过程能够自动重复直到数据包最终到达接收者。
1.4 PIM-SM 工作机制 1.4.1邻居发现
PIM-SM使用与PIM-DM类似的邻居发现机制,具体请参见“邻居发现”一节。
1.4.2DR 选举
助Hello 报文还可以为共享网络(如Ethernet)选举DR,DR 将作为该共享网络中组播数据的唯一转发者。
无论是与组播源相连的网络,还是与接收者相连的网络,都需要选举DR。接收者侧的DR 负责向RP 发送加入报文;组播源侧的DR 负责向RP 发送注册报文。
说明:
各路由器之间通过比较Hello 报文中所携带的优先级和IP 地址,可以为多路由器网段选举DR。选举出的DR 对于PIM-SM 有实际的意义;而对于PIM-DM 来说,其本身其实并不需要DR,但如果PIM-DM 域中的共享网络上运行了IGMPv1,则需要选举出DR 来充当共享网络上的IGMPv1 查询器。
在充当DR 的设备上必须使能IGMP,否则连接在该DR 上的接收者将不能通过该DR 加入组播组。
5
如图3所示,DR的选举过程如下:
(1) 共享网络上的各路由器相互之间发送Hello 报文(携带有竞选DR 优先级的参数),拥有最高优先级的路由器将成为DR;
(2) 如果优先级相同,或者网络中至少有一台路由器不支持在Hello 报文中携带竞选DR 优先级的参数,则根据各路由器的IP 地址大小来竞选DR,IP 地址最大的路由器将成为DR。
当DR 出现故障时,其余路由器在超时后仍没有收到来自DR 的Hello 报文,则会触发新的DR 选举过程。
1.4.3RP发现
RP 是PIM-SM 域中的核心设备。在结构简单的小型网络中,组播信息量少,整个网络仅依靠一个RP 进行组播信息的转发即可,此时可以在PIM-SM 域中的各路由器上静态指定RP 的位置;但是在更多的情况下,PIM-SM 域的规模都很大,通过RP 转发的组播信息量巨大。为了缓解RP 的负担并优化RPT 的拓扑结构,可以在PIM-SM 域中配置多个C-RP(Candidate-RP,候选RP),通过自举机制来动态选举RP,使不同的RP 服务于不同的组播组,此时需要配置BSR(BootStrap Router,自举路由器)。BSR 是PIM-SM 域的管理核心,一个PIM-SM 域内只能有一个BSR,但可以配置多个C-BSR(Candidate-BSR,候选BSR)。这样,一旦BSR 发生故障,其余C-BSR 能够通过自动选举产生新的BSR,从而确保业务免受中断。
说明:
一个RP 可以同时服务于多个组播组,但一个组播组只能唯一对应一个RP。 一台设备可以同时充当C-RP 和C-BSR。 如图4所示,BSR负责收集网络中由C-RP发来的宣告报文(Advertisement Message),该报文中携带有C-RP的地址和优先级以及其服务的组范围,BSR将这些信息汇总为RP-Set(RP集,即组播组与RP的映射关系数据库),封装在自举报文(Bootstrap Message)中并发布到整个PIM-SM域。
6
网络中的各路由器将依据RP-Set 提供的信息,使用相同的规则从众多C-RP 中为特定组播组选择其对应的RP,具体规则如下:
(1) 首先比较C-RP 的优先级,优先级较高者获胜。
(2) 若优先级相同,则使用哈希(Hash)函数计算哈希值,该值较大者获胜。 (3) 若优先级和哈希值都相同,则C-RP 地址较大者获胜。
哈希函数的表达式为:Value (G, M, Ci) = (1103515245 * ( (1103515245 * (G & M) +12345) XOR Ci) + 12345) mod 231,其中各符号的含义如表1所示。
7
1.4.4构建RPT
如图5所示,RPT的构建过程如下:
(1) 当接收者加入一个组播组G 时,先通过IGMP 报文通知与其直连的DR;
(2) DR 掌握了组播组G 的接收者的信息后,向该组所对应的RP 方向逐跳发送加入报文;
(3) 从DR 到RP 所经过的路由器就形成了RPT 的分支,这些路由器都在其转发表中生成了(*,G)表项,这里的“*”表示来自任意组播源。RPT 以RP 为根,以DR 为叶子。当发往组播组G 的组播数据流经RP 时,数据就会沿着已建立好的RPT 到达DR,
进而到达接收者。当某接收者对组播组G 的信息不再感兴趣时,与其直连的DR 会逆着RPT 向该组的RP 方向逐跳发送剪枝报文;上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口,并检查自己是否拥有该组播组的接收者,如果没有则继续向其上游转发该剪枝报文。
1.4.5组播源注册
组播源注册的目的是向RP 通知组播源的存在。
8
如图6所示,组播源向RP注册的过程如下:
(1) 当组播源S 向组播组G 发送了一个组播报文时,与组播源直连的DR 在收到该报文后,就将其封装成注册报文,并通过单播方式发送给相应的RP;
(2) 当RP 收到该报文后,一方面解封装注册报文并将封装在其中的组播报文沿着RPT 转发给接收者,另一方面向组播源逐跳发送(S,G)加入报文。这样,从RP 到组播源所经过的路由器就形成了SPT 的分支,这些路由器都在其转发表中生成了(S,G)表项。SPT 以组播源为根,以RP 为叶子。
(3) 组播源发出的组播数据沿着已建立好的SPT 到达RP,然后由RP 把组播数据沿着RPT 向接收者进行转发。当RP 收到沿着SPT 转发来的组播数据后,通过单播方式向与组播源直连的DR 发送注册停止报文( Register-Stop Message),组播源注册过程结束。
1.4.6RPT 向SPT 切换
当接收者侧的DR 发现从RP 发往组播组G 的组播数据速率超过了一定的阈值时,将由其发起从RPT 向SPT 的切换,过程如下:
(1) 首先,接收者侧DR 向组播源S 逐跳发送(S,G)加入报文,并最终送达组播源侧DR,沿途经过的所有路由器在其转发表中都生成了(S,G)表项,从而建立了SPT 分支;
(2) 随后,接收者侧DR 向RP 逐跳发送包含RP 位的剪枝报文,RP 收到该报文后会向组播源方向继续发送剪枝报文(假设此时只有这一个接收者),从而最终实现从RPT 向SPT 的切换。SPT 的切换,PIM-SM 能够以比PIM-DM 更经济的方式建立SPT。
1.4.7断言
PIM-SM使用与PIM-DM类似的断言机制,具体请参见“断言”一节。
9
1.5 SSM 模型在PIM 中的实现
SSM(Source-Specific Multicast,指定信源组播)模型和ASM(Any-Source Multicast,任意信源组播)模型是两个完全对等的模型。目前,ASM模型包括PIM-DM和PIM-SM 两种模式,SSM 模型能够借助PIM-SM 的部分技术来实现。
SSM 模型为指定源组播提供了解决方案,通过IGMPv3 来维护主机与路由器之间的关系。在实际应用中,通常采用PIM-SM 模式的一部分技术来实现SSM 模型。由于接收者已经通过其它渠道(如广告咨询等)知道了组播源的具体位置,因此在SSM模型中无需RP,无需构建RPT,无需组播源注册过程,也无需通过MSDP(Multicast Source Discovery Protocol,组播源发现协议)来发现其它PIM 域内的组播源。
与ASM 模型相比,SSM 模型仅需要IGMPv3 和PIM-SM 部分子集的支持。
1.5.1邻邻居发现
PIM-SSM使用与PIM-SM完全相同的邻居发现机制,具体请参见“邻居发现”一节。
1.5.2DR 选举
PIM-SSM使用与PIM-SM完全相同的DR选举机制,具体请参见 “DR选举”一节。
1.5.3构建SPT
构建为PIM-SM 服务的RPT,还是构建为PIM-SSM 服务的SPT,关键在于接收者准备加入的组播组是否属于SSM 组地址范围(IANA 保留的SSM 组地址范围为232.0.0.0/8)。
图7 PIM-SSM 中构建SPT 示意图
10
如图7所示,Host B和Host C为组播信息的接收者(Receiver),由其借助IGMPv3的报告报文向DR报告自己对来自组播源S、发往组播组G的信息感兴趣。收到该报告报文的DR先判断该报文中的组地址是否在SSM组地址范围内:
如果在SSM 组地址范围内,则构建PIM-SSM,并向组播源S 逐跳发送通道(Channel)的订阅报文(Subscribe Message)。沿途所有路由器上都创建(S,G)表项,从而在网络内构建了一棵以组播源S 为根、以接收者为叶子的SPT,该SPT 就是PIM-SSM 中的传输通道;
如果不在SSM 组地址范围内,则仍旧按照PIM-SM 的流程进行后续处理,此时DR 需要向RP 发送(*,G)加入报文,同时需要进行组播源的注册。
说明:在PIM-SSM 中,借助“通道”的概念表示组播组,借助“订阅报文”的概念表示加入报文。
11
2 PIM协议报文格式
PIM(Protocol Independent Multicast)称为协议无关组播,作为一种组播路由解决方案,也可支持IPv4和IPv6网络,在实践中得到广泛的应用。PIM通过路由器之间交互PIM控制消息实现组播路由功能。PIM控制消息使用IP报文封装。
图1 PIM消息的封装格式
1) IP报文头的协议类型字段值为103,用来标识数据部分封装了PIM消息。
2) IP报文头的目的地址字段用来标识该PIM消息的目的接收者。可以是单播地址,也可以是组播地址。
3) PIM-DM 协议与PIM-SM 协议,支持不同的控制消息。
2.1 PIM报文通用格式
PIM 消息通用头部格式
所有的PIM 控制消息头部有相同的格式,如下图2:
图2 PIM 消息头部格式
字段 Version Type
长度 4 比特 4 比特 说明 PIM 版本,值为2。 消息类型,取值如下: 12
•0:Hello(PIM-DM 与PIM-SM 都适用) •1:Register(只适用于PIM-SM) •2:Register-Stop(只适用于PIM-SM) •3:Join/Prune(PIM-DM 与PIM-SM 都适用) •4:Bootstrap(只适用于PIM-SM) •5:Assert(PIM-DM 与PIM-SM 都适用) •6:Graft(只适用于PIM-DM) •7:Graft-Ack(只适用于PIM-DM) •8:Candidate-RP-Advertisement(只适用于PIM-SM) •9:State Refresh(只适用于PIM-DM) Reserved
8比特 保留 校验和 Checksum 16比特 参考标准 标准 RFC 4601 RFC 3973 RFC 4607 描述 Protocol Independent Multicast - Sparse Mode (PIM-SM):Protocol Specification (Revised) Protocol Independent Multicast - Sparse Mode (PIM-SM):Protocol Specification (Revised) Source-Specific Multicast for IP 2.2 PIM Hello消息格式
Hello 消息
PIM 路由器之间通过交互Hello 消息,发现PIM 邻居并维护邻居关系。Hello 消息同时在PIM-DM 与PIM-SM 中使用。Hello 消息中无法区分是PIM-DM 还是PIM-SM。
封装Hello 消息的IP 报文源地址为本地接口地址,目的地址为224.0.0.13,TTL 值为1。使用组播方式发送。
图1 Hello 消息格式
字段 Version Type Reserved
长度 4 比特 4 比特 8比特 说明 PIM 版本,值为2。 消息类型,值为0。 保留字段,发送时设置为0,接收时忽略此值。 13
Checksum 16比特 Hello Option [1]...[N] 16比特 校验和。 采用Type-Length-Value(TLV)格式,其中: Type:2 字节,Option 参数类型。 Length:Value 字段的长度,字节为单位。 Value:Option 参数值。 Type 值对应的参数名: 1: Holdtime,表示保持邻居为可达状态的超时时间,若超时仍没有收到Hello 消息则认为邻居不可达。 2:该字段由三部分组成: LAN Prune Delay:在共享网段上传递Prune 消息的延迟时间。 Override Interval:在共享网段上执行剪枝前的否决时间。 T:Join 消息抑制能力位。 19: DR Priority,表示各路由器接口竞选DR 的优先级,优先级越高越容易获胜。 20: Generation ID,Hello 消息中携带的随机数,表示当前邻居状态。如果状态发生更新则随机数也会更新。当路由器发现接收到的来自上游的Hello 消息中包含不同Generation ID 值,则认为上游邻居已经丢失或上游邻居状态已经改变。 21: State Refresh Capable,表示邻居状态刷新时间间隔。 24: Address List,PIM 接口的从地址列表。
报文示例
14
图2 PIM Hello 消息(IPv4)
图3 PIM Hello 消息(IPv6)
参考标准同上2.1
2.3 PIM Register消息格式
Register 消息
当PIM-SM 网络中出现活跃组播源时,源端DR 向RP 发送Register 消息,进行源注册。Register 消息只在PIM-SM 中使用。
封装Register 消息的IP 报文源地址为源端DR,目的地址为RP。使用单播方式发送。
15
图1 Register 消息格式
字段 Version Type Reserved B N Multicast data packet 长度 4 比特 4 比特 8比特 1比特 1比特 变长 说明 PIM 版本,值为2 消息类型,值为1 保留位。发送时此字段被清零,接收时不处理此字段。 校验和 边界位 空注册位 保留位。发送时此字段被清零,接收时不处理此字段。 组播数据报文。源端DR 将接收到的组播数据报文封装在Register 消息中发往RP。RP 解封装后,学习到该组播数据报文的(S,G)信息。 Checksum 16比特 Reserved2 30比特 报文示例 图2 PIM Register 消息
参考标准同上2.1
16
2.4 PIM Register-Stop消息格式
Register-Stop 消息
在PIM-SM 网络中,在以下三种情况下,RP 将会向组播源端DR 发送Register-Stop 消息。
•接收者不再通过RP 接收发往某组播组的数据 •RP 不再为某组播组服务
•组播数据转发路径已经由RPT 切换到SPT 组播源端DR 收到Register-Stop 消息后,停止使用Register 注册消息封装组播数据报文,并进入注册抑制状态。
Register-Stop 消息只在PIM-SM 中使用。 封装Register-Stop消息的IP报文源地址为RP,目的地址为源端DR。使用单播方式发送。
图1 Register-Stop 消息格式
字段 Version Type Reserved Group Address Source Address 32比特 组播源地址S 长度 4 比特 4 比特 24比特 32比特 说明 PIM 版本,值为2 消息类型,值为2 保留位。发送时此字段被清零,接收时不处理此字段。 组播组地址G
报文示例
17
图2 PIM Register-Stop 消息
参考标准同上2.1
2.5 PIM Join/Prune消息格式
Join/Prune 消息
一条Join/Prune 消息中可以同时包含Join 信息和Prune 信息。只包含Join 信息的Join/Prune 消息称为Join 消息。只包含Prune信息的Join/Prune 消息称为Prune 消息。
Join/Prune 消息同时在PIM-DM 和PIM-SM 中使用。
封装Join/Prune 消息的IP 报文源地址为本地接口地址,目的地址为224.0.0.13,TTL值为1。使用组播方式发送。
图1 Join/Prune 消息格式
18
图2 Group J/P Record 字段格式
字段 Version Type Upstream Neighbor Address Number of Group Holdtime Group Address Number of Joined Sources Number of Pruned Sources Joined Source Address Pruned Source Address 32比特 请求剪枝的组播源地址。 32比特 请求加入的组播源地址。 16比特 针对该组播组,请求剪枝的组播源总数。 16比特 接收Join/Prune消息的路由器保持相应接口加入/剪枝状态的时间。 32比特 组播组地址 16比特 针对该组播组,请求加入的组播源总数。 8比特 消息中包含的组播组数目。 长度 说明 4 比特 PIM 版本,值为2 4 比特 消息类型,值为3 32比特 上游邻居地址。也就是收到Join/Prune消息的路由器上,进行Join或Prune操作的下游接口地址。
19
报文示例
图3 PIM Join 消息
20
图4 PIM Prume 消息
参考标准同上2.1
2.6 PIM Graft/Graft-Ack消息格式
Graft/Graft-Ack 消息
在PIM-DM 网络中,路由器上出现组成员时,如果本身不在SPT 上,则从对应的(S,G)表项的上游接口发送Graft 消息。上游邻居立即恢复下游接口的转发,同时从该下游接口发出Graft-Ack 消息,表示已经接受嫁接请求。如果上游邻居不在SPT 上,则继续向上游发送Graft 消息。
封装Graft-Ack 消息的IP 报文源地址为下游接口地址,目的地址为Graft 消息的发出者。使用单播方式发送。
Graft 消息格式与Join/Prune 消息相同,仅部分字段取值存在差异。
Graft-Ack 消息与Graft 消息格式相同,并复制了Graft 消息的内容。其中不同的是,Upstream Neighbor Address 字段,在Graft-Ack
消息中填为Graft 消息的发出者地址。
21
图1 Join/Prune 消息格式
图2 Group J/P Record 字段格式
字段 Version Type Upstream Neighbor Address Number of Groups Holdtime Group Address Number of Joined Sources Number of Pruned Sources Joined Source Address 长度 4比特 4比特 32比特 说明 PIM 版本,值为2。 消息类型,Graft 值为6,Graft-Ack 值为7。 在Graft 消息中填上游邻居地址。也就是收到嫁接消息的路由器上,进行嫁接操作的下游接口地址。 在Graft-Ack 消息中填为Graft 消息的发出者地址。 8比特 16比特 32比特 16比特 16比特 32比特 消息中包含的组播组数目。 该字段为0。 组播组地址。 针对该组播组,请求加入的组播源总数。 该字段为0。 待嫁接的(S,G)的源地址。
22
报文示例
图3 PIM Graft 消息
参考标准同上2.1
2.7 PIM Bootstrap消息格式
Bootstrap 消息
当PIM-SM 网络中使用动态RP 时,配置了C-BSR 的路由器从所有PIM 接口周期性的发送Bootstrap 消息,参与BSR 竞选。竞选获胜
者,继续发送Bootstrap 消息,向域内所有PIM 路由器发布RP-Set 信息。 Bootstrap 消息只在PIM-SM 中使用。
封装Bootstrap 消息的IP 报文源地址为C-BSR 地址,目的地址为224.0.0.13,使用组播方式发送。TTL 为1,在PIM-SM 网络中逐
跳转发,最终达到全网泛滥。
23
图1 Bootstrap 消息格式
图2 Group-RP Record 字段格式
字段 Version Type Fragment Tag Hash Mask length BSR-priority BSR-Address Group Address RP-Count Frag RP-Cnt RP-address RP-holdtime RP-Priority 8比特 C-BSR 优先级 32比特 C-BSR 地址 32比特 组播组地址 8比特 8比特 希望为该组服务的C-RP 的总数 在本段内包含的C-RP 地址的个数。对于一个给定的组来说,如果Bootstrap 消息分片,Frag RP-Cnt字段便于将RP-Set 分片。 32比特 C-RP的地址 16比特 C-RP发出的advertisement 消息的老化时间,表示C-RP 的有效时间。 8比特 C-RP 的优先级。 长度 说明 4 比特 PIM 版本,值为2 4 比特 消息类型,值为4 16比特 随机数,用来区分Bootstrap 消息 8比特 C-BSR 的Hash 掩码长度
24
报文示例
图3 PIM Bootstrap 消息参考标准同上2.1
25
2.8 PIM Assert消息格式
Assert 消息
在共享网段上,如果PIM 路由器从(S,G)或(*,G)表项的下游接口收到(S,G)报文,则表示该网段存在其他的转发者。路由器从该下游接口发出Assert 消息,参与竞选。竞选落败者停止下游接口的转发。
Assert 消息同时在PIM-DM 和PIM-SM中使用。 封装Assert 消息的IP 报文源地址为本地接口地址,目的地址为224.0.0.13,TTL值为1。使用组播方式发送。
图1 Assert 消息格式
字段 Version Type Group Address Sources Address R Metric Preference Metric 32比特 到Source address 的单播路由的开销。 4比特 长度 说明 4 比特 PIM 版本,值为2 4 比特 消息类型,值为5 32比特 组播组地址 32比特 如果竞选(S,G)表项的唯一转发者,则为组播源地址。如果竞选(*,G)表项的唯一转发者,则为RP地址。 RPT 位。如果竞选(S,G)表项的唯一转发者,该位为0;如果竞选(*,G)表项的唯一转发者,该位为1。 28比特 到Source address 的单播路径的优先级。 报文示例
26
图2 PIM Assert 消息
参考标准同上2.1
2.9 PIM C-RP Advertisement消息格式
C-RP Advertisement 消息
当PIM-SM 网络中使用动态RP 时,配置了C-RP 的路由器周期性的向BSR 发送Advertisement 消息,通告希望服务的组范围。
C-RP Advertisement 消息只在PIM-SM 中使用。
封装Advertisement 消息的IP 报文源地址为源端C-RP,目的地址为BSR。使用单播方式发送。
图1 Advertisement 消息格式
字段 长度 说明 27
Version 4 比特 PIM 版本,值为2 Type 4 比特 消息类型,值为8 Prefix-Cnt 8比特 组播地址前缀值 Priority 8比特 C-RP优先级 Holdtime 16比特 Advertisement 消息的老化时间。 RP-Address 32比特 C-RP 地址。 Group Address 32比特 组播组地址 报文示例 图2 PIM C-RP Advertisement 消息
28
图3 PIM C-RP Advertisement 消息(注销)
参考标准同上2.1。
29
3 组播相关概念
组播(Multicast)是一种通讯模式,在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。组播提高了数据传送效率,减少了骨干网络出现拥塞的可能性。组播路由器定时的发送询问信息到组播地址224.0.0.1.在这条信息中,组地址域设定为0.0.0.0.这意味着这种询问是面向一个主机所在所有组播组,而不是一个组播组。
组播协议分为主机-路由器之间的组成员关系协议和路由器-路由器之间的组播路由协议。
组播技术是IP网络数据传输三种(单播、组播和广播)方式之一,组播解决了单播和广播方式效率低的问题。当网络中的某些用户需求特定信息时,组播源(即组播信息发送者)仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。
3.1 IP组播三种的传递方式
密集组播、稀疏组播、源特定组播。
现在的组播算法往往具备结合前两种模式的能力。
3.2 IP组播技术体系结构
组播协议分为主机-路由器之间的组成员关系协议和路由器-路由器之间的组播路由协议。
组成员关系协议包括IGMP(互连网组管理协议)。
组播路由协议分为域内组播路由协议及域间组播路由协议。
域内组播路由协议包括PIM-SM、PIM-DM、DVMRP等协议,域间组播路由协议包括MBGP、MSDP等协议。同时为了有效抑制组播数据在链路层的扩散,引入了IGMP Snooping、CGMP等二层组播协议。对组播的技术历史作出了巨大的贡献!
IGMP建立并且维护路由器直联网段的组成员关系信息。域内组播路由协议根据IGMP维护的这些组播组成员关系信息,运用一定的组播路由算法构造组播分发树进行组播数据包转发。域间组播路由协议在各自治域间发布具有组播能力的路由信息以及组播源信息,以使组播数据在域间进行转发。
30
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务