1.PIM-DM的协议报文
1.hello:用于建立和维护PIM邻居关系,在DM和SM中都有hello报文,无法根据hello报文来区分是DM还是SM
2.prune:剪枝报文则用于修剪组播分发树
3.graft:用于将设备所在的分支嫁接到组播分发树
4.graft-ACK:嫁接确认
5.Assert:用于解决重复组播流量
2.邻居发送
运行了PIM协议的路由器,会周期性(30s)发送hello报文,如果在hold time(105s)后,没有收到邻居发过来的hello报文,那么就认为邻居失效了,hello报文目的地址是224.0.0.13
3.扩散机制
上游接口:接收组播数据的接口
下游接口:发送组播数据的接口
扩散机制:距离组播源最近的路由器收到组播流量,首先进行RPF检查,通过之后查找组播路由表,往下游接口发送组播流量,只有生成(S,G)才会转发组播流量,组播路由器如果在210s还是没有组播流量转发,那么就删除
4.断言机制
当多台路由器在同一个网段,那么路由器可能会接收到重复的组播流量,那么为了避免这个问题,可以使用断言机制
5.断言选举规则
选举规则:1.单播路由协议优先级较高者获胜
2.如果优先级相同,则到组播源的开销较小者获胜
3.如果以上都相同,则下游接口IP地址最大者获胜
只有断言获胜者才会发送组播流量,断言失败者会把下游接口从(S,G)表删除
6.剪枝机制
如果路由器下面没有组播接收者,或者组播接收者已经全部离开组,那么路由器就没有必要在接收组播数据
路由器下已经没有接收者或者接收者全部已经离开了这个组,那么路由器会向上游发送prune报文,不希望接收组播数据,上游路由器收到prune报文,就把从接口收到prune报文下游接口删除
如果上游路由器收到了prune报文,删除相关的下游接口,并且会启动一个剪枝计时器,计时器超时后会转发组播流量
7.状态刷新机制
因为剪枝计时器的原因,一旦超时就会发送组播流量。需要通过状态刷新机制,来刷新计时器如果路由器收到了状态刷新报文,那么就会重置计时器。除非这个时候有组成员希望加组
路由器默认是60s发送一次
8.嫁接机制
因为在剪枝计时器超时前,是不会发送组播流量。如果接收者希望快速的收到组播流量,那么这个时候在计时器没有超时,都是接收不到组播流量。就可以使用graft
原理:
当接收者通过IGMP加组,路由器会发送graft报文通知上游路由器,请求恢复组播流量的转发,上游路由器接收到那个graft的接口会重新生成下游接口,然后就可以转发组播数据
9.PIM-SM报文
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地址及优先级等信息
10.RP的选举
静态选举:每一台路由需要指定RP的位置
11.树
RPT:组成员路由器到RP的路径
SPT:源端路由器到RP的路径
12.RPT的构建
RPT的构建:组成员通过IGMP消息加组,IGMP查询器会使用join报文单播向RP,沿途生成一个RPT
13.STP的构建
组播源发送的组播数据,会封装到Register报文,单播发送给RP,RP沿途反向生成SPT
组播源发送的组播流量都是通过register单播发送给RP,这样子,因为是单播,所以可能会加重源端DR的负担
RP构建SPT树之后,会向源端DR发送register-stop报文,告诉源DR,不要在发注册报文过来
14.DR的选举
源端网络或者成员网络,如果多个路由在同一个网段,就会接收到重复的组播流量,那么在SM模型里面是通过DR的选举来避免的
选举机制: 比较DR优先级,IP地址大的直接成为DR
15.RPT的次优路径
1.RP的位置对于成员端DR来说,可能是次优路径。那么路由器走次优路径去获取组播流量
2.过大的组播流量可能会对RP造成负担
3.存在次优路径
16.SPT切换工作
1.成员端DR发送join报文到RP建立RPT路径树,RP返回join消息回来。
2.成员端DR会向组播源建立一个SPT的最优路径
3.标准的PIM协议,RP有一个阈值,当负载超过这个阈值,就开始建立SPT切换。但是在华为的PIM协议里面,这个阈值默认是0,RP收到的第一个组播流量,就会开始建立SPT切换
16.SPT的维护
成员端DR周期性发送join报文
在一定时间(210s)还没有组播流量,那么这个最优的SPT路径会消失,就会恢复成原来的到达RP的一个路径树
17.PIM-SM(SSM)
1.因为SSM模型可以指定只希望接收部分组播源的组播流量,所以成员端DR是可以直接和组播源建立单播建立SPT树
2.不需要RP
3.也不会存在次优路径问题