1, 问题描述:
我们一台CPE MP1803路由器作为客户的CE路由器,PC发了IGMP report以后,我们路由器会在IGMP表项里写上该组播组,但是客户那里说上游的Huawei PE设备没有收到我们设备的PIM JOIN报文而最终不能将组播流量引下来。
经过排查,发现客户在同一个局域网中有多个CPE, 而且我们的MP1803不是DR.
所以这就是为什么客户开了debug以后不能在我们路由器的上游接口抓到PIM JOIN报文误认为是我们路由器的问题。
当时建议客户把局域网断开,然后直接用PC接到MP1803的LAN口上面,这个时候PC组播正常工作。
问题找到。下面就是关于局域网DR的工作原理展开论述和实验。
2, 组播DR的工作原理.
PS : 在看该文档前,需要回忆IGMP的工作原理,还有组播客户端如果加入到RP的公共原理部分。详细细节可以参考文档: 一份极强的CCIE笔记 . CISCO CCIE routing and switching –Kaka’s Note
Author: 房智勇
个人理解:
现在我对DR的理解是,如果一个局域网有多个路由器同时做上联,那么在show ip pim neighbor的时候,对于局域网也会选举一个DR出来。
当客户端在发送IGMP report报文的时候,和PC的默认网关没有关系,IGMP report会发送到所有的上游路由器,这个时候只有DR接收到了下游的PC的IGMP report以后才会重新封装PIM的join 报文送到RP去加入. 而对于另外一台非DR的设备,当他收到了IGMP report以后,他只会在自己的IGMP表里面记录该主播组,但是他不会向RP去发送PIM join报文,所以如果有人说,这个路由show ip pim mroute group x.x.x.x 状态怎么是NOT JOINED, 那么需要看该路由器对于局域网到底是否是DR.如果不是DR那么这个现象是正常的,也应该这样.
还有就是如果本台路由器发送了PIM JOIN以后,那么在本台设备上面show ip pim mroute应该可以发现期望组播组的(*,G)表项,然后再看上游路由器,也应该有(*,G)才对,因为我们是往上面送了的.如果我们发了上面也有(*,G),那么就应该核查上面的路由器组播是否正常工作
这里又引出一个问题,在同一个局域网,只有DR才转发主播流量,才发送PIM JOIN报文,那么如果主播组多的情况下,对局域网的DR是否也是一个性能考验呢?
那肯定是是的。
所以在设计网络的时候,如果局域网的主播组需求量很大的话,那么CPE路由器一定要用性能高一点的设备来做,否则的话很有可能因为性能引起瓶颈问题。
我对协议的建议:
MP1800-D(config-if-fastethernet0)#ip pim dr-priority 200 ? <CR>
MP1800-D(config-if-fastethernet0)#ip pim dr-priority 200
Q:你看这里都是基于接口来做的,但是我想对224.1.1.1 R1作为DR,224.1.1.2 R2作为DR,来达到一个负载均衡的功能,这样可以做吗?
A:我觉得真的还算是一个需求,如果一次我有20个主播组需要运行,每个都是高清视频流,那不是对CPE的要求很高才能行吗?每个高清按照4M来算,都是100M的高清。。。。本来4个1800就可以,现在非要3个MP1800加上一个2824才能做这个事情,而且还不能做到备份。换言之是需要4个2824才能完全做热备,否则主2824瘫了,那么任何一个1800都会瘫痪,因为一个1800不能达到100M高清视频流量的线速转发.
3, CCIE学习笔记上面关于这个软件模块的描述.(关于重点我用红色进行标注)---下面都是CISCO的原理,命令输出可能略有不同,原理相同,可以参考.
上面就是PIM JOIN报文的报文格式.