您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 51CTO-IGMPv3六种report报文之间的交互详解
IGMPv3六种Report报文之间的交互关系许小明2012-1-10一.参数说明和拓扑1.RFC3376中定义的1.EXCLUDE和INCLUDE的定义2.变量A和B代表的含义3.Query的含义4.GMI的定义2.本案例中定义的简写5代表地址为192.168.1.5;6代表地址为192.168.1.6;7代表地址为192.168.1.7,3.本试验中的拓扑图二,RFC3376定义的一些参数1.三种查询包的类型查询消息有三种类型的变体:1、“普通查询”由多播路由器发出,用于获知邻接接口(即查询所传输的网络中所相连的接口)的完整的多播接收状态。在一个普通查询中,组地址字段和源数量(N)字段都为0。2、“指定组查询”由一台多播路由器发出,用于获知邻接接口中跟某一个IP地址相关的多播接收状态。在指定组查询中,“组地址”字段含有需要查询的那个组地址,源数量(N)字段为0。3、“指定组和源查询”由一台多播路由器发出,用于获知邻接接口是否需要接收来自指定的这些源的,发往指定组的多播数据报。在一个指定组和源的查询中,组地址字段含有要查询的多播地址,源地址[i]字段含有相关的源地址。2.组记录类型在一个报告消息中,有一定数量的不同类型的组记录:-“当前状态记录”由一个系统发出,用于响应在一个接口上收到的查询。它报告了接口跟某一个多播IP地址相关的当前的接收状态。当前状态记录的记录类型可以是下面两个值中的一个:值名字和含义1MODE_IS_INCLUDE-标明接口相关于某一指定多播地址的过滤模式为INCLUDE。该组记录中的源地址[i]字段含有该接口的相关于该多播地址的源列表(如果非空的话)。2MODE_IS_EXCLUDE-标明接口相关于某一指定多播地址的过滤模式为EXCLUDE。该组记录中的源地址[i]字段含有该接口的相关于该多播地址的源列表(如果非空的话)。-“过滤模式改变记录”是当本地的IPMulticastListen调用造成本地的接口层相关于某一特定多播IP地址的过滤模式的改变的时候(即从INCLUDE变到EXCLUDE,或者从EXCLUDE变到INCLUDE),由系统发出。这个记录包含在一个报告中,而该报告是从发生改变的那个接口上发出来的。过滤模式改变记录的记录类型是以下两个值中的一个:值名字和含义3CHANGE_TO_INCLUDE_MODE,标明接口相关于某一指定的多播地址的过滤模式改变到INCLUDE。该组记录中的源地址[i]字段含有该指定多播地址相关的新的源列表(如果非空的话)。4CHANGE_TO_EXCLUDE_MODE,标明接口相关于某一指定的多播地址的过滤模式改变到EXCLUDE。该组记录中的源地址[i]字段含有该指定多播地址相关的新的源列表(如果非空的话)。-“源列表改变记录”是当本地的IPMulticastListen调用造成本地的接口层相关于某一特定多播IP地址的源列表发生改变,并且该改变不跟过滤模式的改变产生冲突时,由系统发出。该记录包含在一个报告中,而该报告是从发生改变的那个接口上发出来的。源列表改变记录的记录类型是以下两个值中的一个:值名字和含义5ALLOW_NEW_SOURCE,标明组记录中的源地址[i]字段含有系统希望接收的发往某一多播地址的,新的源的列表。如果这是对一个INCLUDE列表的改变,那么这些地址会被添加到列表中,如果这是对一个EXCLUDE列表的改变,那么这些地址会被从列表中删除。6BLOCK_OLD_SOURCE,标明组记录中的源地址[i]字段含有系统不希望再接收的发往某一多播地址的源的列表。如果这是对一个INCLUDE列表的改变,那么这些地址会被从列表中删除,如果这是对一个EXCLUDE列表的改变,那么这些地址会被添加到列表中。如果源列表的改变是同时添加新的源和阻止旧的源,这两种组记录会同时发往一个多播地址,一个是ALLOW_NEW_SOURCE,另一个是BLOCK_OLD_SOURCE。我们把过滤模式改变记录和源列表改变记录都统一称作状态改变记录。不能识别的记录类型值必须被丢弃。3.组记录表示方法IS_IN(x)-类型INCLUDE,源地址x。IS_EX(x)-类型EXCLUDE,源地址x。TO_IN(x)-类型CHANGE_TO_INCLUDE_MODE,源地址x。TO_EX(x)-类型CHANGE_TO_EXCLUDE_MODE,源地址x。ALLOW(x)-类型ALLOW_NEW_SOURCE,源地址x。BLOCK(x)-类型BLOCK_OLD_SOURCE,源地址x。这里x是:一个大写的字母(如“A”)代表一组源地址,或者:一个表达式(如A+B),这里“A+B”表示A和B的合集,“A*B”表示A和B的交集,“A-B”表示从集合A中拿掉所有集合B的元素。三,利用KINNICK验证结果1.如果原来的路由状态为INCLUDE(A),新收到一个类型1的report报文为IS_IN(B),则新的路由状态改变为INCLUDE(A+B),并且设置源B的源计数器为GMI,从IXIA的2口发送一个IS_IN(5,6)的report报文,路由过滤模式:路由过滤模式为INCLUDE,他包含的源列表为5,6,这说明只有源5和6发来的多播是有host需要的,这些源来的多播不会flooding,对于其他的源发来的多播224.0.1.1会flooding到所有接口而不是丢弃(对于广播,多播,单播,未知单播的处理要看交换机本身的处理行为不一定都是flooding)。;端口转发列表:接口2的Includesource为5和6,则针对源列表5和6发来的多播224.0.1.1,端口2会收到,此时从IXIA接口4发送源为5和6的多播224.0.1.1,接口2能收到,并加入到转发表的条目中;其他的源发来的多播接口2收不到。多播转发表:从IXIA接口4分别发送源为5,6,7的多播224.0.1.1,会形成下面的转发表:源7是不会加入的。再从IXIA接口3发送一个IS_IN(6,7)的report报文路由过滤模式:可以看到过滤模式没变,还是INCLUDE,源列表为(A+B={5,6,7}),则针对这些源发来的多播数据包224.0.1.1一定有host需要的,其他源发送的多播包224.0.1.1,都是没有host需要的,都会被当作普通的多播flooding到所有的端口。端口转发状态:接口2的Includesource为5和6,表明接口2只接收源5和6发来的多播224.0.1.1,Excludesource为None,则其他的源发来的多播不会转发到接口2。接口3的Includesource为6和7,表明接口3只接收源6和7发来的多播224.0.1.1,Excludesource为None,则其他的源发来的多播不会转发到接口3。Action:设置源B={6,7}的源计数器为GMI多播转发表:分别从IXIA接口4发送源为5,6,7,8的多播224.0.1.1,会形成如下转发表源8不会加入到此表中深度解释一下这个设备显示的信息表示的含义:iss#showipigmpsnoopinggroupsSnoopingGroupinformation-----------------------------Outer-VLANID:1GroupAddress:224.0.1.1Inner-VLANID:0#这里显示的是那个vlan中的那个多播组FilterMode:INCLUDE#路由器的过滤模式,两种情况:INCLUDE和EXCLUDE.Includesources192.168.1.5,192.168.1.6,192.168.1.7#在该过滤模式下的一个源列表,(有两种情况,INCLUDE下的源表示这些源发来的多播一定有host需要的,EXCLUDE下的源表示这些源发来的多播一定是没有host需要的,)SSMReceiverPorts:PortNumber:Gi0/2Includesources:192.168.1.5,192.168.1.6Excludesources:NonePortNumber:Gi0/3Includesources:192.168.1.6,192.168.1.7Excludesources:None这是端口转发表,和上面的路由过滤模式的源是不一样的,在当前路由过滤模式下,究竟需要把该多播转发到那些端口,有这个端口状态信息来控制。不能把上下两种状态信息混淆,这是两个不同的状态类型,一个维护的是路由过滤模式TotalNumofGroupAddresses[1]多播组的总个数2.如果初始的路由状态为INCLUDE(A),新收到一个类型2的IS_EX(B)的report报文,则此时路由状态就会改变为EXCLUDE,此时的值为EXCLUDE(A*B,B-A),并且设置源(B-A)的源计数器的值为0,删除源(A-B),并且更新该多播组的组计数器为GMI.首先从IXIA接口2发送一个IS_IN(5,6)的report报文路由过滤模式:路由过滤模式为INCLUDE,他包含的源列表为5,6,这说明只有源5和6发来的多播是有host需要的,这些源来的多播不会flooding,对于其他的源发来的多播224.0.1.1会flooding到所有接口而不是丢弃(对于广播,多播,单播,未知单播的处理要看交换机本身的处理行为不一定都是flooding)。;端口转发列表:接口2的Includesource为5和6,则针对源列表5和6发来的多播224.0.1.1,会转,此时从IXIA接口4发送源为5和6的多播224.0.1.1,接口2能收到多播转发表:从IXIA接口4分别发送源为5,6,7的多播224.0.1.1,会形成下面的转发表:源7是不会加入的。再从IXIA接口3发送一个IS_EX(6,7)的report报文路由过滤模式在此种情况下,当新收到一个IS_EX(6,7)的report报文时,路由过滤模式就会改变为EXCLUDE,源为(A*B={6};B-A={7}),则可以看到对于EXCULDESOURCES底下的源7是没有任何host需要的,当从IXIA接口4发送一个源为7的多播224.0.1.1时,就会按照普通的多播对待flooding到所有接口,对于其他的源都是有host需要的,至于要转发到那些端口,根据底下的端口列表就可知道,端口转发列表:接口2的Includesource为5和6,则针对源列表5和6发来的多播224.0.1.1,会转到接口2,此时从IXIA接口4发送源为5和6的多播224.0.1.1,接口2能收到,并加入到转发表的条目中;其他的源发来的多播224.0.1.1接口2是收不到的。接口3的Excludesource为6和7,表明接口3除了不接收源6和7发来的多播224.0.1.1外,其他的源发来的多播224.0.1.1接口3都会收到。多播转发表:从IXIA接口4分别发送源为5,6,78,9的多播224.0.1.1,会形成下面的转发表:源7是不会加入到该多播转发表中的。3.如果原来的路由过滤模式为EXCLUDE(X,Y),新收到一个IS_IN(A)的report报文时,新的路由过滤模式为EXCULDE(X+A,Y-A),并且设置源A的源计数器为GMI。首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文再从IXIA接口2发送一个类型1的IS_IN(6,7)的report报文路由过滤模式在此种情况下,路由过滤模式为EXCLUDE,源为(Y-A)={5,6}-{6,7}={5};(X+A)={Y的补集}+{6,7})=({6}+Y的补集)是一定有host需要的,当从IXIA接口3发送源为5的多播224.0.1.1时,按照普通的多播对待flooding到所有接口,其他的源发来的多播224.0.1.1,是有host需要的。至于要转发到那些端口,根据底下的端口列表就可知道,端口转发列表:接口1的Excludesource为5和6,则针对源列表5和6发来的多播224.0.1.1,不会转到接口1,此
本文标题:51CTO-IGMPv3六种report报文之间的交互详解
链接地址:https://www.777doc.com/doc-2927268 .html