组播流量转发管理——IGMP Snooping示例

IGMP Snooping工作机制示例

如下图所示,R1是最后一跳组播路由器,其连接交换机SW的接口已经激活了IGMPv2,SW是一台以太网二层交换机,该交换机已经部署了IGMP Snooping,SW的所有接口都加入了VLAN 10。初始时SW的二层组播转发表是空的,因此即使其收到R1转发的组播流量,它也不会将流量转发到任何接口。
在这里插入图片描述

(1)IGMP查询器处理流程:

  • R1的接口激活IGMP后,开始周期性地发送IGMPv2 membership query报文。

(2)SW处理流程:

  • SW将在其GE0/0/20接口收到R1发送的IGMP常规查询报文,由于此时SW的IGMP Snooping路由器接口列表为空,因此它将GE0/0/20添加到该列表中,也就是将这个接口指定为动态路由器接口,同时为路由器接口启动一个老化计时器(缺省为180秒)。此后如果SW再次在该接口上收到IGMP常规查询报文,则刷新这个计时器。
  • 然后,SW将该IGMP常规查询报文从VLAN10中除了GE0/0/20接口之外的所有接口泛洪出去,如下图所示。
    在这里插入图片描述

(3)组播接收者处理流程:

  • PC1 、PC2及PC3都将收到SW泛洪的IGMP常规查询报文。
  • 由于PC3并非任何组播组的成员,因此它只是简单地丢弃该报文,不会做任何回应;而PC1、PC2是组播织239.1.1.66的成员,因此它们各自发送IGMPv2 membership report报文。(当PC1及PC2首次加入组播组239.1.1.66时,它们可以主动发送IGMPv2 membership report,而无需等待IGMP常规查询。)

(4)SW处理流程:

  • SW将在自己的GE0/0/1、GE0/0/2接口上收到IGMPv2 membership report报文,
  • 由于激活了IGMP Snooping,因此SW将解析其所收到的IGMP成员关系报告报文,它意识到GE0/0/1及GE0/0/2接口所连接的用户需要加入组播组239.1.1.66,于是它在自己的二层组播转发表中创建239.1.1.66表项,将GE0/0/1及GE0/0/2接口指定为该表项的动态成员接口,并分别为这两个接口启动老化计时器。此后SW如果再次在这两个接口上收到IGMP成员关系报告报文,则刷新该计时器。
  • 最后,SW将其收到的IGMP成员关系报告报文从路由器接口GE0/0/20转发出去,如下图所示。
    在这里插入图片描述

引入问题

为了避免了网段中出现多余的IGMP成员关系报告,存在IGMP成员关系报告的抑制机制。

当IGMP查询器向一个网段发送IGMP常规查询报文时,如果所有的组成员都使用IGMP成员关系报告报文进行回复,显然是多余的。为了避免这种情况,当组成员收到IGMP常规查询报文后,会启动一个时间随机的报告延迟计时器,当该计时器超时后,组成员才会发送IGMP成员关系报告,而同网段中其他同组的成员如果收到这个IGMP成员关系报告并且其报告延迟计时器尚未超时,则会抑制自己的成员关系报告。

需要注意的是,这个机制在IGMPSnooping环境中可能引发一些问题:

  • 如上图所示,在本例中如果PC1率先使用IGMP成员关系报告回应R1的查询,
  • 由于IGMP成员关系报告报文本质上是一个组播报文,因此SW若将这个报文泛洪到VLAN 10中的所有接口,那么PC2也将会收到该报文,
  • 如果此时PC2的报告延迟计时器尚未超时,那么它将抑制自己的IGMP成员关系报告,这样一来,SW的GE0/0/2接口将无法收到IGMP成员关系报告并导致老化计时器超时,SW会将该接口从成员接口列表中删除,因此当其收到发往239.1.1.66的组播流量时,也就不会再向GE0/0/2接口转发,而PC2也就无法接收到组播流量了。

解决方法

运行了IGMP Snooping的交换机收到IGMP成员关系报告报文后,会将该报文从所有路由器接口转发出去,但是不会将该报文从成员接口转发出去,这就保证一个组播组内的成员不会收到其他成员发送的IGMP成员关系报告,这就解决了上面提到的问题。

(5)R1收到SW转发上来的IGMP成员关系报告报文后,它将维护相关组播表项(IGMP组表项、IGMP路由表项、组播路由表项),并在收到发往239.1.1.66的组播流量后向SW进行转发。

(6)SW在自己的GE0/0/20接口收到发往239.1.1.66的组播流量后,将首先查询自己的二层组播转发表项,并发现存在匹配的表项,而且该表项中存在GE0/0/1及GE0/0/2这两个成员接口,因此它将组播流量从这两个接口转发出去,而不是该组播组成员的PC3则不会收到这些组播流量。

组成员离组过程

(7)假如现在PC1要离开组播组 239.1.1.66,它向网络中发送一个IGMP离组报文。

(8)SW将在其GE0/0/1接口上收到这个报文。SW查询自己的二层组播转发表后发现,该接口是组播组239.1.1.66的成员接口,因此它将这个报文从所有的路由器接口(也就是GE0/0/20接口)转发出去,如下图所示。
在这里插入图片描述

(8)R1收到PC1发送的IGMP离组报文后,立即发送IGMPv2特定组查询报文。

(9)SW将在其GE0/0/20接口上收到这个IGMP特定组查询报文,它将这个报文从除了GE0/0/20接口之外的、VLAN10中的所有接口转发出去。

(10)PC2收到这个IGMP特定组查询报文后,发现查询器所查询的正是自己所在的组播组,于是它立即回应IGMP成员关系报告报文。

(11)SW将在其GE0/0/2接口上收到这个IGMP成员关系报告报文,它查询自己的二层组播转发表项后发现,接口GE0/0/2已经是组播组239.1.1.66的成员接口,因此它刷新该接口的老化计时器,然后将IGMP成员关系报告从路由器接口GE0/0/20转发出去。

(12)R1收到PC2发送的IGMP成员关系报告后,意识到网段中还存在239.1.1.66的组成员,因此维护相关表项(IGMP组表项、IGMP路由表项、组播路由表项),也可以继续向该网段转发239.1.1.66的组播流量。

(13)由于PC1已经离开了组播组239.1.1.66,因此它不再发送IGMP成员关系报告报文。一段时间后,成员接口GE0/0/1的老化计时器将会超时,于是SW将其从组播组239.1.1.66的成员接口列表中删除,此后,SW不再向GE0/0/1接口转发该组播组的流量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值