51CTO下载-IGMPv3六种report报文之间的交互详解

更新时间:2024-01-29 19:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

IGMPv3 六种Report 报文之间的交互关系

许小明 2012-1-10 一. 参数说明和拓扑

1. RFC 3376中定义的

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地址相关的当前的接收状态。当前状态记录的记录类型可以是下面两个值中的一个: 值名字和含义

1 MODE_IS_INCLUDE-标明接口相关于某一指定多播地址的过滤模式为INCLUDE。该组记录中的源地址[i]字段含有该接口的相关于该多播地址的源列表(如果非空的话)。

2 MODE_IS_EXCLUDE-标明接口相关于某一指定多播地址的过滤模式为EXCLUDE。该组记录中的源地址[i]字段含有该接口的相关于该多播地址的源列表(如果非空的话)。

-“过滤模式改变记录”是当本地的IPMulticastListen调用造成本地的接口层相关于某一特

定多播IP地址的过滤模式的改变的时候(即从INCLUDE变到EXCLUDE,或者从EXCLUDE变到INCLUDE),由系统发出。这个记录包含在一个报告中,而该报告是从发生改变的那个接口上发出来的。过滤模式改变记录的记录类型是以下两个值中的一个: 值名字和含义

3 CHANGE_TO_INCLUDE_MODE,标明接口相关于某一指定的多播地址的过滤模式改变到INCLUDE。该组记录中的源地址[i]字段含有该指定多播地址相关的新的源列表(如果非空的话)。

4 CHANGE_TO_EXCLUDE_MODE,标明接口相关于某一指定的多播地址的过滤模式改变到EXCLUDE。该组记录中的源地址[i]字段含有该指定多播地址相关的新的源列表(如果非空的话)。

-“源列表改变记录”是当本地的IPMulticastListen调用造成本地的接口层相关于某一特定多播IP地址的源列表发生改变,并且该改变不跟过滤模式的改变产生冲突时,由系统发出。该记录包含在一个报告中,而该报告是从发生改变的那个接口上发出来的。源列表改变记录的记录类型是以下两个值中的一个: 值名字和含义

5 ALLOW_NEW_SOURCE,标明组记录中的源地址[i]字段含有系统希望接收的发往某一多播地址的,新的源的列表。如果这是对一个INCLUDE列表的改变,那么这些地址会被添加到列表中,如果这是对一个EXCLUDE列表的改变,那么这些地址会被从列表中删除。 6 BLOCK_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的Include source 为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的Include source 为5和6,表明接口2只接收源5和6发来的多播224.0.1.1,Exclude source为 None,则其他的源发来的多播不会转发到接口2。

接口3的Include source 为6和7,表明接口3只接收源6和7发来的多播224.0.1.1,Exclude source为 None,则其他的源发来的多播不会转发到接口3。 Action:

设置源B={6,7}的源计数器为GMI

多播转发表:

分别从IXIA接口4发送源为5,6,7,8的多播224.0.1.1,会形成如下转发表

源8不会加入到此表中

深度解释一下这个设备显示的信息表示的含义:

iss# show ip igmp snooping groups

Snooping Group information -----------------------------

Outer-VLAN ID:1 Group Address: 224.0.1.1 Inner-VLAN ID:0

#这里显示的是那个vlan中的那个多播组 Filter Mode: INCLUDE

#路由器的过滤模式,两种情况:INCLUDE和EXCLUDE. Include sources

192.168.1.5, 192.168.1.6, 192.168.1.7 #在该过滤模式下的一个源列表,(有两种情况,INCLUDE下的源表示这些源发来的多播一定有host需要的,EXCLUDE下的源表示这些源发来的多播一定是没有host需要的,)

SSM Receiver Ports: Port Number: Gi0/2 Include sources:

192.168.1.5, 192.168.1.6 Exclude sources: None Port Number: Gi0/3 Include sources:

192.168.1.6, 192.168.1.7 Exclude sources: None

这是端口转发表,和上面的路由过滤模式的源是不一样的,在当前路由过滤模式下,究竟需要把该多播转发到那些端口,有这个端口状态信息来控制。不能把上下两种状态信息混淆,这是两个不同的状态类型,一个维护的是路由过滤模式

Total Num of Group Addresses [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的Include source 为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}),则可以看到对于EXCULDE SOURCES 底下的源7是没有任何host需要的,当从IXIA 接口4发送一个源为7的多播224.0.1.1时,就会按照普通的多播对待flooding到所有接口,对于其他的源都是有host需要的,至于要转发到那些端口,根据底下的端口列表就可知道, 端口转发列表:

接口2的Include source 为5和6,则针对源列表5和6发来的多播224.0.1.1,会转到接口2,此时从IXIA接口4发送源为5和6的多播224.0.1.1,接口2能收到,并加入到转发表的条目中;其他的源发来的多播224.0.1.1接口2是收不到的。

接口3的Exclude source 为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的Exclude source 为5和6,则针对源列表5和6发来的多播224.0.1.1,不会转到接口1,此时从IXIA接口3发送源为5和6的多播224.0.1.1,接口1不能收到。

接口2的Include source 为6和7,表明接口2只接收源6和7发来的多播224.0.1.1,其他的源发来的多播224.0.1.1接口2都不会收到。 Acton:

设置源A={6,7}的源计数器为GMI. 多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源5不会加入到该列表中。 4.

如果开始的路由过滤模式为EXCLUDE(X,Y),当收到一个新的IS_EX(A)的report报文时,则新的路由状态为EXCLUDE(A-Y,Y*A),并且设置源(A-X-Y)的源计数器为GMI,同时删除(X-A)和(Y-A)两个源,更新组计数器为GMI。

首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文

再从IXIA接口2发送一个类型2的IS_EX(6,7)

路由过滤模式:

可以看到路由过滤模式没变还是EXCLUDE,

为EXCLUDE(A-Y,Y*A)=EXCLUDE({6,7}-{5,6},{6,7}*{5,6})=EXCLUDE(7,6),源6发送的多播是不被任何host需要的,则源6发出来的多播224.0.1.1是会flooding的,对于源7发来的多播224.0.1.1一定是底下的接口需要的,其他的源发送来的多播224.0.1.1会根据底下的转发列表来做相应的转发。 端口转发列表:

接口1的Exclude source 为5和6,则针对源列表5和6发来的多播224.0.1.1,不会转到接口1,此时从IXIA接口3发送源为5和6的多播224.0.1.1,接口2不能收到,;其他的源发来的多播224.0.1.1接口2能收到。

接口2的Exclude source 为6和7,表明接口3除了不接收源6和7发来的多播224.0.1.1外,其他的源发来的多播224.0.1.1接口3都会收到。 Action

设置(A-X-Y)={6,7}-{}-{5,6}={7}的源计数器为GMI,并且删掉源X-A={5,6}-{6,7}={5},删掉Y-A={7}-{6,7}={},更新组计数器为GMI.

多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源6不会加入到转发表中

5.

如果初始的路由过滤状态为INCLUDE(A),新收到一个类型5的ALLOW(B)的report报文,则新的路由过滤状态为INCLUDE(A+B),并且设置源B的源计数器为GMI.(要注意的是这里的ALLOW是对原来已存在的源的改变,他们的源ip必须一样,如果针对这个源ip地址的初始状态不存在,则这样的ALLOW报文无效,是不会被处理)

首先从IXIA 接口2发送一个类型1的IS_IN(5,6)的report报文,该报文的源ip地址为192.168.1.12

再从IXIA接口2发送一个类型5的ALLOW(6,7)的report报文,源ip地址也是192.168.1.12(如果此时发送一个源ip地址不是192.168.1.12的ALLOW报文,则这个ALLOW报文不会被处理,一定要注意,ALLOW的含义),

路由过滤状态:

路由过滤状态并没有改变,还是INCLUDE,为

INCLUDE(A+B)=INCLDE({5,6}+{6,7})=INCLUDE(5,6,7),这表明,源5,6,7发来的多播224.0.1.1一定是有host需要的,其他的源发来的多播224.0.1.1一定是没有host需要的,直接flooding出去。

端口转发列表:

接口2的Include Source 为5,6,7,表明源5,6,7发来的多播会转发到接口2.其他的源发的多播224.0.1.1接口2收不到。 Action

设置源B的源计数器为GMI, 多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源8,9没有加入到该列表中。 6.

如果初始的路由过滤状态为INCLUDE(A),新收到一个类型6的BLOCK(B)report报文,则新的路由状态为INCLUDE(A),并且向组G发送一个源为(A*B)的Group-and-Source-Specific Query查询报文,查看这个源是否还需要该多播,如果在最大相应时间内没有得到回应,则删掉该源,在该时间范围内得到回应,继续保留。(注意BLOCK报文的含义,他也是在原来源的基础上改变的,一定要存在相同的源)

首先从IXIA接口1发送一个类型1的IS_IN(5,6)的report报文,源ip地址为192.168.1.11

再从IXIA接口1发送一个类型6的BLOCK(6,7)的report报文,源ip地址为192.168.1.11

路由转发状态:

过滤模式还是INCLUDE,源为5.说明只有源5发来的多播224.0.1.1是由host需要的,其他的源发来的多播是没有任何host需要的。

端口转发表: 接口1的Include source为5,说明源5发来的多播224.0.1.1可以转发到接口1,其他的源发来的多播224.0.1.1不会转发到接口1

Action:

发送一个Q(G,A*B)的查询包

多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源.6,7,8,9不会加入到该转发表中 7

如果初始路由过滤状态为INCLUDE(A),收到一个类型4的TO_EX(B)的report报文,则新的路由状态为EXCLUDE(A*B,B-A),并且设置源(B-A)的源计数器为0,删掉源(A-B),并且发送一个特定源查询的Q(G,A*B)的Group-and-Source-Specific Query包,与此同时设置组计数器为GMI,

首先从IXIA 接口2发送一个类型1的IX_IN(5,6)的report报文,

再IXIA 接口3发送一个类型4的IN_EX(6,7)的report报文,

路由过滤状态:

当收到一个类型4的report时,路由过滤状态改变为EXCLUDE,为

EXCLUDE(A*B,B-A)=EXCLUDE({5,6}*{6,7},{6,7}-{5,6})=EXCLUDE(6,7)所以对源7来的多播224.0.1.1是没有任何host需要的,会flooding,对于其他的源发来的多播是有host需要的,至于转发到那些端口,还要看下面的端口转发列表的情况, 端口转发表:

接口2的Include source 为5和6,则针对源列表5和6发来的多播224.0.1.1,会转到接口2,此时从IXIA接口4发送源为5和6的多播224.0.1.1,接口2能收到,并加入到转发表的条目中;其他的源发来的多播224.0.1.1接口2是收不到的。

接口3的Exclude source 为6和7,表明接口3除了不接收源6和7发来的多播224.0.1.1外,其他的源发来的多播224.0.1.1接口3都会收到。

Action

设置源(B-A)={6,7}-{5,6}={7}的源计数器值为0,删除(A-B)={5}这个源,因为这个源已经被包含在了列表中了,同事发送一个针对特定源的Q(G,A*B)的Group-and-Source-Specific Query包,并且设置组计数器为GMI。 多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源7不会加入到该转发表中 8.

如果初始的路由过滤模式为INCLUDE(A),新收到一个类型3的TO_IN(B)的report报文,则新的路由过滤状态为INCLUDE(A+B),并且设置源B的源计数器为GMI,发送一个特定源的查询包Q(G,A-B)的Group-and-Source-Specific Query报文。 首先从IXIA接口2发送一个类型1的IS_IN(5,6)的report报文

再从IXIA接口3发送一个类型3 的TO_IN(6,7)的report报文。

路由过滤模式:

可以看到过滤模式没变,还是INCLUDE,源列表为(A+B={5,6,7}),则针对这些源发来的多播数据包224.0.1.1一定有host需要的,其他源发送的多播包224.0.1.1,都是没有host需要的,都会被当作普通的多播flooding到所有的端口。 端口转发状态: 接口2的Include source 为5和6,表明接口2只接收源5和6发来的多播224.0.1.1,Exclude source为 None,则其他的源发来的多播不会转发到接口2。

接口3的Include source 为6和7,表明接口3只接收源6和7发来的多播224.0.1.1,Exclude source为 None,则其他的源发来的多播不会转发到接口3。 Action:

设置源B={6,7}的源计数器为GMI,同时发送一个查询Q(G,A-B)的Group-and-Source-Specific Query报文。

多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源8,9不会加入到该转发表中

9

如果初始的路由过滤模式为EXCLUDE(X,Y),当收到一个新的类型5的ALLOW(A)的report报文时,新的过滤模式为EXCLUDE(X+A,Y-A),并且设置源A的源计数器为GMI.

首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文,源ip地址为192.168.1.11

再从IXIA接口1发送一个类型5的ALLOW(6,7)的report报文,源ip地址为192.168.1.11

路由过滤模式:

可以看到路由过滤模式为EXCLUDE,

为EXCLUDE(X+A,Y-A)=EXCLUDE({}+{6,7},{5,6}-{6,7})=EXCLUDE({6,7},{5}),这说明源5发来的多播224.0.1.1是没有host需要的,这个多播就会flooding,对于源6,7发来的多播是由host需要的,而是会转发到相应的接口,到底转发到那些接口还要看下面的接口转发列表, 端口转发表:

接口1的Exclude source的源为5,则说明除了源5发来的多播224.0.1.1接口1不会收到之外,其他的源发来的多播224.0.1.1接口1都会收到。

Action

设置源A={6,7}的源计数器为GMI. 多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源5不会加入到该转发列表中。 10.

如果初始的路由过滤状态为EXCLUDE(X,Y),当收到一个类型6的BLOCK(A)的report报文时,新的路由过滤模式为EXCLUDE(X+(A-Y),Y),并且设置源(A-X-Y)的源计数器为该组的计数器,同样发送一个Q(G,A-Y)的Group-and-Source-Specific Query报文

首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文,源ip地址为192.168.1.11

再从IXIA接口2发送一个类型6的BLOCK(6,7)的report报文,源ip地址为192.168.1.11.

路由状态:

路由过滤模式为EXCLUDE,源为5,6,7,这说明源5,6.7发来的多播224.0.1.1是没有任何host需要的,其他的源发来的多播是由host需要的。 端口转发表:

接口1的Exclude source为5,6,7,则源5,6,7发来的多播224.0.1.1不会转发到接口1,其他的源发来的多播接口1是会收到的 Action

设置源(A-X-Y)={6,7}-{}-{5,6}={7}的源计数器为该组的组计数器的值并且发送一个针对特定源的Q(G,A-Y)的Group-and-Source-Specific Query查询包。 多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源5,6,7不会加入到该表中。 11.

如果初始路由过滤状态为EXCLUDE(X,Y),当收到一个类型4的TO_EX(A)的report报文,则新的路由状态为EXCLUDE(A-Y,Y*A),并且设置源(A-X-Y)的源计数器为该组的组计数器,删掉源(X-A)和源(Y-A),并且发送一个针对特定源的Q(G,A-Y)的Group-and-Source-Specific Query查询包,更新组计数器为GMI,

首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文。

再从IXIA接口2发送一个类型4的TO_EX(6,7)的report报文

路由过滤状态:

路由过滤模式为EXCLUDE,

源为EXCLUDE(A-Y,Y*A)=EXCLDE({6,7}-{5,6},{5,6}*{6,7})=EXCLUDE(7,6),则源7发来的多播224.0.1.1一定有host需要的(是底下端口转发表中的所有端口都需要的),源7发来的多播224.0.1.1一定是没有host需要的。 端口转发表:

接口1的Exclude source 为5和6,则说明源5和6发来的多播224.0.1.1不会转发到接口1,其他的源发来的多播224.0.1.1可以转发到接口1

接口2,的Exclude source为6,7,则除了源6,7发来的多播224.0.1.1接口2收不到之外,其他的源(不包括源6)发来的多播224.0.1.1,接口2都能收到。 Action

设置源(A-X-Y)={6,7}-{}-{5,6}={7}的源计数器为该组的计时器,删掉源(X-A)={}-{6,7}={}和源(Y-A)={5,6}-{6,7}={5};Q(G,A-Y)向组224.0.1.1发送一个源为(A-Y)={6,7}-{5,6}={7}的query查询包,还会设置组计数器为 GMI. 多播转发表

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源6不会加入到该转发表中

12.

如果初始路由过滤状态为EXCLUDE(X,Y),当收到一个类型3的TO_IN(A)的report报文,则新的路由状态变为EXCLUDE(X+A,Y-A),并且会设置源A的源计数器为GMI,同时发送一个Q(G,X-A)的Group-and-Source-Specific Query报文,也会发送一个Q(G)的Group-Specific Query报文。

第一种类型:从不同的接口发送两种report

首先从IXIA接口1发送一个类型2的IS_EX(5,6)的report报文

再 从IXIA接口2发送一个类型3的TO_IN(6,7)的report报文

路由转发表

此时路由过滤模式为EXCLUDE,

为EXCLUDE(X+A,Y-A)=EXCLUDE({}+{6,7},{5,6}-{6,7})=EXCLUDE({6,7},5),这表示对于源5发来的多播224.0.1.1没有host要,因此该多播会flooding,其他的源发来的多播224.0.1.1是由host需要的,至于那些host需要要看下面的接口的转发表,

端口转发表

接口1的Exclude source 为5和6,这说明源5和6发发来的多播不会转发到接口2,其他的源发来的多播会转发到接口2 接口2的Include source为6和7,这说明接口2只接受源为6和7发来的多播224.0.1.1,其他的源发来的多播224.0.1.1接口2收不到

Action

源A={6,7}的源计数器为GMI,并且发送一个Q(G,X-A)=向组224.0.1.1发送一个源为X-A={}-{6,7}={}的query报文,Q(G)还会向组224.0.1.1发送一个Group-Specific Query

多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源5不会加入到该转发表中

第二种类型:从同一个接口发送两种report:

首先从IXIA接口2发送一个类型2的IS_EX(5,6)的report报文

再 从IXIA接口2发送一个类型3的TO_IN(6,7)的report报文

路由转发表

此时路由过滤模式为EXCLUDE,

为EXCLUDE(X+A,Y-A)=EXCLUDE({}+{6,7},{5,6}-{6,7})=EXCLUDE({6,7},5),这表示对于源5发来的多播224.0.1.1没有host要,因此该多播会flooding,其他的源发来的多播224.0.1.1是由host需要的,至于那些host需要要看下面的接口的转发表,

端口转发表

接口2的Include source为6和7,这说明接口2只接受源为6和7发来的多播224.0.1.1,其他的源发来的多播224.0.1.1接口2收不到,而还有Exclude source 为5,说明源5发来的多播接口5收不到,在这种情况下,接口2的转发情况到底是看Include source还是 Exclude source呢?路由过滤模式为EXCLUDE,所以要依Exclude source 为准,所以接口2,除了不接收源5发来的多播外,其他的源发来的多播,接口2都会收到。

Action

源A={6,7}的源计数器为GMI,并且发送一个Q(G,X-A)=向组224.0.1.1发送一个源为X-A={}-{6,7}={}的query报文,Q(G)还会向组224.0.1.1发送一个Group-Specific Query

多播转发表:

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源5不会加入到该转发表中 四,兼容性测试

Report报文的兼容问题

1. IS_IN(X)和v2 report的兼容

首先从接口2发送一个类型1的IS_IN(5,6)的report

只接收源为5,6发来的多播,

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

源7,8,9不会加入到该转发表中

再从IXIA 接口2发送一个V2的report,

当发送一个V2的report后,路由过滤规则已经改变了为EXCLUDE,源为空,表示任何源发

来的多播224.0.1.1都是有主机需要的,v2的规则在v3的上面,首先会检查v2,所以接口2 会接收任何源发来的多播。

从IXIA接口4分别发送源为5,6,7,8,9的多播224.0.1.1,都会加入到绑定表中,会形成下面的转发表:

任何源都会加入到该组中

再从IXIA接口2发送一个V2的leave报文

当发送一个leave报文以后,v2规则就消失了,转到了发送v2的report之前的那次v3的状态下,过滤模式也转变为了INCLUDE,

多播转发表也会自动更新,然后转到匹配v3的转发规则。

V1的report和v2一样,只不过v1没有leave报文,通过超时来离开该组,当发送一个v2的leave报文时,他的状态应该不变,其过程都是一样的。 Query报文的兼容问题: 五,总结

1. 首先必须明确RFC3376中各个参数的含义,六种report的含义,以及他的使用环

境。

2. 对于类型1~4来说,如果收到从相同host发来的report,则会覆盖原来的路由过

滤模式;对于类型5~6来说,他是对原来已经存在状态的一个改变,因此这个host必须相同,如果没有任何源,直接发送一个类型5和6的report,则系统不会处理的。类型1~2维护的是当前状态记录,是最初始的状态,类型3~4是过滤模式改变记录,用于对当前的过滤模式进行改变的,类型5~6是源改变记录,用于对该过滤模式下的源列表进行改变的,不同的记录类型,他的用法不一样,类型五不会对路

由过滤模式进行改变,只会改变该过滤模式下的源列表。

3. 对于路由过滤模式EXCLUDE(X,Y)和INCLUDE(A)中这些参数X,Y,A的变化可以通过

集合图形来画出,会看的更明了,对于EXCLUDE(X,Y)来说,其中的参数X是一定有host需要的,Y一定是没有host需要的,当新的report来临时,新旧结合就可推测出新的路由过滤状态,比如说

首先看那些是需要的:原来源X是有host需要的,新的report中源A也是有host需要的,则源(X+A)这部分是一定有host需要的;原来源Y是没有host需要的,但是源Y中有部分是后来的A中需要的,所以只有源(Y-A)是所有host都不需要的,顺理成章,则新的路由过滤模式就为EXCLUDE(X+A,Y-A),只需要找出哪些是一定有host需要的,哪些是一定没有host需要的,就可推测出路由的过滤状态,对于要删除的源,都可以用同样的方法推测出来,删掉的部分,一定是被包含在了另一部分中的,不需要重复的部分。 4.还要注意数据包来的先后顺序,有时候虽然通过交换机的显示是一样的,单表示的结果却不一样,光从显示的结果并不一定能得出一个确切的结论。 五,未解决的问题

1. 当更新状态时,没有捕捉到自动发送的query报文。 2. 对于更新中各个计数器的变化不能观察到。 3. 新旧版本的兼容性问题!

本文来源:https://www.bwwdw.com/article/c24w.html

Top