组播的DR的工作原理与故障排查思路详解

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报文的报文格式.

时间: 2024-09-23 02:11:24

组播的DR的工作原理与故障排查思路详解的相关文章

为大家剖析WPAD的工作原理以及故障原因

WPAD是Web ProxyAutoDiscovery的缩写,意思是Web代理服务器自动发现.WPAD的设计目的是让浏览器能自动发现代理服务器,这样用户可以轻松访问互联网而且无需知道哪台计算机是代理服务器.在ISA2006中,WPAD不仅能让客户机浏览器自动发现代理服务器,还可以用于防火墙客户端自动发现代理服务器.显然,WPAD对代理服务器的透明处理让管理员轻松了不少,管理员不再需要去每台客户机上设置代理服务器参数了. 但樱桃好吃树难栽,WPAD的部署并非都是一帆风顺,WPAD的部署可以借助ht

jQuery原理系列-常用Dom操作详解_jquery

1. 事件绑定$(el).bind ie使用attachEvent,其它浏览器使用addEventListener,不同的是ie多了个on前缀,this绑定在window上,需要用call和apply修正this 的指向. if (element.addEventListener) { element.addEventListener(type, handler, useCapture); } else { if (element.attachEvent) { element.attachEve

Android仿京东淘宝自动无限循环轮播控件思路详解

在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于RelativeLayout,首先要考虑的就是自定义的控件需要扩展那些属性,把这些属性列出来.在这里是要实现类似于京东淘宝的无限轮播广告栏,那么首先想到的就是轮播的时长.轮播指示器的样式等等.我在这里列举了一些并且结合到了代码中. 1.扩展属性 (1)是否开启自动轮播的功能. (2)指示器的图形样式,一

NFS服务器的工作原理及故障排除

7.1&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; NFS服务器的工作原理 7.1.1  NFS简介 NFS是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统.NFS由SUN公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813).其最大功能是可以通过网络让不同操作系统的计算机可以共享数据,所以也可以将其看做是一台文件服务器,如图7-1所示.NFS提供了除Samba之外

Java多线程原理及ThreadLocal多线程实例详解

一.线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是程序的一个动态执行过程,是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 Windows系统中,一个运行的exe就是一个进程.线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程共享进程的内存."同时"执行是人的感觉,在线程之间实际上轮换执行. 二.Java

《IP组播(第1卷)》一2.4 组的注册

2.4 组的注册 前文我们已经看到了,为了使本地网段和整个网络中的 IP 组播转发能够正常工作,交换机和网关路由器需要知道有哪些主机对组播组感兴趣,以及这些主机都连接在哪里.如果没有这些信息的话,唯一的做法只有在整个网络域中泛洪组播数据帧.这样做就破坏了使用 IP组播带来的好处. 主机组成员的注册和离开是个动态的过程.当有一台主机加入一个组播组时,交换机就没有必要再向这个网段持续无目的地转发组播数据包了,组成员也就确定了下来.管理网络中组播主机位置的唯一方法就是让组播主机组成员自己向网络中通告加

LVS-DR工作原理图文详解

原文地址: http://www.cnblogs.com/czh-liyu/archive/2011/11/29/2267963.html 为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构: 我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包.数据帧的走向和转换过程. 官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户. 实例场景设备清单: 说

Javascript原型链的原理详解_javascript技巧

本文实例分析了Javascript原型链的原理.分享给大家供大家参考,具体如下: 一.JavaScript原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.在JavaScript中,用 __proto__ 属性来表示一个对象的原型链.当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止! 比如现在有如下的代码: 扩展Object类,添加Clone和Extend

深入理解PHP之OpCode原理详解_php技巧

本文实例讲述了PHP中OpCode的原理.分享给大家供大家参考,具体如下: OpCode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL. 此文主要基于< Understanding OPcode>和 网络,根据个人的理解和修改,特记录下来 : PHP代码: <?php echo "Hello World"; $a = 1 + 1; echo $a; ?> PHP执行这段代码会经过如下4个步骤: 1. Scanning (L