问题背景
在一个交换网络中,如果部署了组播业务,那么组播数据将不可避免地经过一些交换设备,在这种场景下,有一些问题需要格外关注。
如下图所示,以太网二层交换机SW通过自己的GE0/0/20接口连接到组播路由器R1,同时它还连接着一些PC。在这些PC中,PC1及PC2是某个组播组的成员,它们将会向网络中发送IGMP成员关系报告宣告自己加组,在此之后,如果R1收到发往该组播组的流量便会将这些流量转发到该交换网络,那么组成员PC1及PC2都会收到所需的组播流量。
众所周知,缺省情况下,当交换机在某个VLAN内收到目的MAC地址未知的单播帧、组播帧或广播帧时,它都会将这些数据帧在相同VLAN内进行泛洪,因此SW将会把发往该组播组的流量从自己的GE0/0/1,GE0/0/2及GE0/0/3等接口都转发出去(假设这些接口都属于相同的VLAN),这么一来,即使有些PC(例如图中的PC3)不是该组播组的成员,它们也将收到组播流量,这就造成了网络带宽和设备性能的浪费。
解决方法
通过在交换机上部署IGMP Snooping可以解决上述问题。
IGMP Snooping
-
IGMP Snooping ( Internet Group Management Protocol Snooping)技术主要用于在交换机上优化组播流量的转发行为。
-
IGMP是组播中颇为重要的一个协议,组播路由器通过IGMP管理组成员,而组播接收者也通过IGMP宣告加组及离组。
-
当路由器与组成员之间存在二层交换机时,缺省时,交换机只是简单地转发网络中的IGMP报文,不会对这些报文的内容感兴趣。此外,当交换机在某个VLAN内收到组播流量时,它会将这些流量在相同VLAN内所有接口上进行泛洪,如下图所示:
-
当交换机部署了IGMP Snooping之后,它将会侦听组成员与IGMP查询器之间交互的IGMP报文,并解析IGMP报文中的相关信息,然后结合
这些信息与接口、VLAN-ID等建立二层组播转发表项,这些转发表项将用于指导组播流量转发,确保流量只被转发到正确的接口上。
如图所示,在SW部署了IGMP Snooping之后,当组成员PC1及PC2通过IGMP membership report报文宣告自己加组时,SW除了将这些报文转发给组播路由器R1之外,还会解析报文中的内容,将报文中的组播组地址与接口GE0/0/ 1、GE0/0/2,以及VLAN-ID等信息进行绑定,从而创建二层组播转发表项。
当SW收到R1发送的组播流量后,会根据二层转发表中的表项将流量从GE0/0/1及GE0/0/2接口转发出去,此时非组成员的PC3将不会收到这些组播流量。因此部署了IGMP Snooping之后,交换机只会将组播流量从正确的接口转发出去。
IGMP Snooping基本术语
路由器接口(Router Port )
- 所谓路由器接口,指的是运行了IGMP Snooping的交换机朝向上游组播路由器的接口,比如上图中SW的GE0/0/20接口。
- 路由器接口可通过动态的方式自动发现,也可通过手工配置的方式静态指定。
- 当动态发现路由接口时,IGMP Snooping交换机会将其收到IGMP常规查询报文或者PIM Hello报文的接口视为动态路由器接口。
- 交换机将在路由器接口上收到上游组播路由器转发的组播流量。
成员接口(Member Port )
- 成员接口是IGMP Snooping交换机朝向组播组成员的接口,比如上图中的GE0/0/1及GE0/0/2。
- 成员接口可通过动态的方式自动发现,也可通过手工配置的方式静态指定。
- 当动态发现成员接口时,IGMP Snooping交换机会将其收到IGMP成员关系报告的接口视为动态成员接口。
二层组播转发表(Layer 2 Multicast Forwarding Table)
- 运行IGMP Snooping的交换机会侦听IGMP查询器与组成员之间交互的 IGMP报文,并维护一个重要的数据表——二层组播转发表,该表格中的表项将用于指导交换机转发组播流量。
- 在二层组播表项中包含组播组地址、接口信息(路由器接口、成员接口)以及VLAN-ID等信息。在交换机上使用display 12-multicast forwarding-table命令(HW)即可查看其二层组播转发表:
从上述输出可以看出,交换机Switch在VLAN 10中的路由器接口是GE0/0/24。当其在GE0/0/24接口上收到发往239.1.1.1的组播流量时,它会将这些组播流量转发到GE0/0/1、GE0/0/2及GE0/0/3接口,而同样处于VLAN10中的其他接口,则不会收到该组播流量。同理,如果交换机收到发往239.1.1.2的流量时,它只会将流量转发到GE0/0/7及GE0/0/8接口。