4.2-1 PIM-DM

2025-05-30 09:41:26
Version:4bit,PIM版本,值为2Type:4bit,消息类型 0:Hello(PIM-DM与PIM-SM都适用) 1:Register(只适用于PIM-SM)2:Register-Stop(只适用于PIM-SM)3:Join/P...

Version:4bit,PIM版本,值为2Type:4bit,消息类型

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:8bit,保留Checksum:16bit,校验和

4.2.3 PIM-DM邻居发现(有竞选)

在PIM路由器每个使能了PIM协议的接口上,都会对外发送Hello报文。封装Hello报文的组播报文的目的地址是224.0.0.13(表示同一网段中所有PIM路由器)、源地址为接口的IP地址、TTL数值为1。Hello报文的作用:发现PIM邻居、协调各项PIM协议报文参数、维持邻居关系。

发现PIM邻居

同一网段中的PIM路由器都必须接收目的地址为224.0.0.13的组播报文。这样直接相连的PIM路由器之间通过交互Hello报文以后,就可以彼此知道自己的邻居信息,建立邻居关系。只有邻居关系建立成功后,PIM路由器才能接收其他PIM协议报文,从而创建组播路由表项。协调各项PIM协议报文参数

Hello报文中携带多项PIM协议报文参数,主要用于PIM邻居之间PIM协议报文的控制。具体参数如下:

DR_Priority:表示各路由器接口竞选DR的优先级,优先级越高越容易获胜。该参数只用于PIM-SM中DR的选举。当优先级一样时,IP地址较大者为DR。(点到点链路是不会选举的,只在以太网链路选举)Holdtime:表示保持邻居为可达状态的超时时间。LAN_Delay:表示共享网段内传输Prune报文的延迟时间。Neighbor-Tracking:表示邻居跟踪功能。Override-Interval:表示Hello报文中携带的否决剪枝的时间间隔。维持邻居关系

PIM路由器之间周期性地发送Hello报文。如果Holdtime超时还没有收到该PIM邻居发出的新的Hello报文,则认为该邻居不可达,将其从邻居列表中清除。PIM邻居的变化将导致网络中组播拓扑的变化。如果组播分发树上的某上游邻居或下游邻居不可达,将导致组播路由重新收敛,组播分发树迁移。

为IGMPv1选举查询者

在PIM-DM中通过比较Hello消息上携带的优先级和IP地址,各路由器为多路由器网段选举指定路由器DR,充当IGMPv1的查询器。(优先级高的成为查询器,相同时则IP地址大者为DR)当DR出现故障时,接收Hello消息将会超时,邻居路由器之间会触发新的DR选举过程。

Hello计时器

Hello消息默认发送周期是30秒。Hello超时时间默认为105秒。(报文选项类型Option Type = 1)

4.2.4 PIM-DM扩散

当PIM-DM网络中出现活跃的组播源之后,组播源发送的组播报文将在全网内扩散。当PIM路由器接收到组播报文,根据单播路由表进行RPF检查通过后,就会在该路由器上创建(S,G)表项,下游接口列表中包括除上游接口之外与所有PIM邻居相连的接口,后续到达的组播报文将从各个下游接口转发出去。

最后组播报文扩散到达叶子路由器,会出现以下两种情况:

若与该叶子路由器相连用户网段上存在组成员,则将与该网段相连的接口加入(S,G)表项的下游接口列表中,后续的组播报文会向组成员转发。若与该叶子路由器相连用户网段上不存在组成员,且不需要向其下游PIM邻居转发组播报文,则执行剪枝机制。

拓扑描述

组播源S开始向组播组G发送组播报文。R1接收到源发送的组播报文后,根据单播路由表进行RPF检查。RPF检查通过,创建(S,G)表项,下游接口列表包括与R2和R5相连的接口,后续到达的报文向R2和R5转发。(会向R2和R5转发该组播数据,是因为连接的相应接口建立了PIM-DM邻居关系)R2接收到来自R1的组播报文,RPF检查成功,在本地创建对应(S,G)表项,下游接口列表包括与R3和R4相连的接口,后续到达的报文向R3和R4转发。R5接收到来自R1的组播报文,由于与R5相连下游网段不存在组成员和PIM邻居,执行剪枝。R3接收到来自R2的组播报文,RPF检查成功,在本地创建对应(S,G)表项,下游接口列表添加与组成员PC1相连的接口,后续到达的报文向PC1转发。R4接收到来自R2的组播报文,由于与R4相连下游网段不存在组成员和PIM邻居,执行剪枝。