PIM-SM DR指定路由器以及 PIM-DM指定前转器的区别 【转自网络】
很多同学将PIM-SM DR指定路由器以及 PIM-DM指定前转器的概念搞混,这里做个解释,希望能帮助大家理清。
1、PIM-SM DR 指定路由器
PIM在每一个多路访问网络,使用PIM HELLO消息选择一个DR。
我们看上面这个图,先看左侧,源以及PIM路由器R1和R2共处一个BMA(广播多路访问)网络,那么产生自源的组播数据,R1、R2都能接收到,如果两者都向RP发起Register并转发组播数据,那不就扯淡了么?因此我们在这个MA网络中进行DR选举,DR将负责向RP发起register以及负责将来自源的组播数据转发给RP,非DR当然就暂时先歇着了。
我们再看右侧接受者与R3、R4共处一个MA网络,如果R3与R4都加入RPT共享树并且向这个MA网络转发组播数据,那么接受者将收到重复的组播数据,这实际上是没有意义的,因此在这里也选DR,由DR负责向RP发送Join消息并且形成RPT的分支,最终将接受者所在网络拉到共享树上,另外它也负责将树上的组播流量转发给接受者。
所以,总结一下:
- 靠近源的DR(如上图R2)负责将source的组播数据发给RP(以及发送Register消息);
- 靠近接受者的DR(如上图的R4)负责向RP发送Join消息从而形成共享树,也就是负责将接受者拉到共享树(同时负责将来自源的组播数据转发给接收者)。
IP最大的成为DR,但是这个因素不太稳定,毕竟想要改变DR还得改IP编址,因此增强的PIM协议建议在PIMv2的hello信息中加入DR优先级选项(默认值为1),优先级最高的路由器成为DR。当然并非所有的PIM路由器都支持这个DR优先级选项,不支持的路由器在发送PIM HELLO的时候不携带这个选项,当PIMv2路由器收到一个不包含DR优先级选项的hello时(或此消息中的优先级=0),那么接收方就知道,发送者不支持这个优先级选项,因此这个子网中的DR选举将使用IP地址进行比较。
使用接口级的命令:ip pim dr-priority x 来修改DR优先级。
2、PIM-DM指定前转器(Assert机制)
PIM-DM这个协议比较“执拗”,不管三七二十一,先把组播流量泛洪到网络中,不需要流量的人再剪枝,泛洪-剪枝,如此反复,最终形成SPT最短路径树,或者源树。这么操作其实在上面的拓扑环境中就存在一个问题,上图中,同一个LAN有两台路由器,如果两台路由器都从RPF接口收到组播流量,并且都进行转发,那么MA网络就收到重复的数据了,这时候就要选出转发路由器,由这个指定前转器负责转发组播流量。
这是通过Assert消息实现的,Assert消息中包括源和组的地址、发送者到源的单播路由的度量与发现这条路由的路由协议的AD管理距离。
比较标准如下:
- 先比较AD值
- 如果AD值相等,那么比较各自到源的metric (两者运行同样的单播路由协议,离源更近的优选)
- 如果以上都相等,那么最高IP的那个成为转发路由器
选举出来后,转发路由器继续向多路访问网路发送组播流量,而其他的路由器停止发送,并把下游接口从输出接口表中删除。
具体的操作是如下:
- R1、R2都向网络中转发组播流量
- 他们在这个接口上收到他人发往(S,G)的组播流量,则向这个子网发送Assert消息
- Assert消息中包含如下内容,在收到对方发来的Assert后进行比较。