引言
三层的IGMP协议广泛用于IPv4网络组播。在二层网络中,IGMP协议使用资源效率低下,例如:即使少数几个接收者(receivers)连接到交换机的几个端口,交换机仍然需要将组播流量泛洪到所有端口。
为了修复这种问题,人们提出了IGMP Snooping协议,但当接收者(receivers)被放置在不同VLAN的时候,IGMP Snooping却无能为力(IGMP Snooping通常只在单个VLAN中配置与生效)。组播局域网注册(MVR)功能解决接收者处于不同VLAN时的泛洪问题,它使用一个专用的、手工配置的VLAN--组播VLAN,在二层网络中去转发组播流量,它同时能与IGMP Snooping 协同使用。
MVR像IGMP Snooping协议一样,允许二层交换机去监听IGMP 控制协议,这两种协议彼此独立运作,可同时配置在交换机上。如果同时开启两种特性,MVR将只监听静态配置到其MVR功能上面的组的john和report信息,而其它的组的仍然由IGMP Snooping进行管理。
下图展示了MVR的配置应用
配置MVR功能时,有两种类型的MVR端口:源端口和接收端口
源端口: 源端口是指组播VLAN中的组播流经过的端口。
接收端口:是一台监听组播主机连接到的交换机的端口。它可以被放置在除组播vlan外任何的VLAN或无VLAN(无VLAN通常指VLAN1,不打标记的流量)。这暗示着:开启MVR功能的交换机执行VLAN标签替换工作,将组播接收端口的VLAN标签替换为源端口VLAN标签。
组播VLAN是指需要手动配置在具体网络中的、MVR专用的VLAN,对于所有的源端口,它需要被明确配置,它常用于在网络中传输组播流,同时避免组播流在不同VLAN中的重复。
MVR有两种配置模式:兼容模式和动态模式
兼容模式(compatible mode):兼容模式下,MVR交换机的CPU正常转发路由器的查询报文以及处理客户端的join报文,形成动态学习的组播转发表,但是cpu不会将join报文转发到路由器端口,从而上层路由器不会收到下面的join报文,导致路由器的数据无法正常转发到交换机上,这种模式下需要手动去配置路由器的组播转发表转发数据到交换机。
动态模式(dynamic mode):动态模式与兼容模式的唯一区别就在于动态模式下cpu可以将join报文转发到路由器端口,从而上层路由器也可以动态学习到组播转发表,不需要手动去配置路由器的组播转发表转发数据到交换机。
RTK web smart switch for MVR功能测试
拓扑图
上图中,rtk switch为MVR交换机
vlan2为MVR vlan
prot1为源端口(上接路由器或者组播源)vlan为tag 2,port2和port3为接收端口(下接客户端)vlan分别为pvid 3和pvid 4。
路由器上配置
[H3C]igmp-snooping
[H3C-igmp-snooping]drop-unknown
[H3C-igmp-snooping]quit
[H3C]vlan 2
[H3C-vlan2]igmp-snooping enable
[H3C-vlan2]igmp-snooping querier
[H3C-vlan2]igmp-snooping general-query source-ip 70.1.1.2
[H3C-vlan2]igmp-snooping special-query source-ip 70.1.1.2
[H3C-vlan2]igmp-snooping version 2
[H3C-vlan2]quit
[H3C]interface GigabitEthernet 1/0/23
[H3C-GigabitEthernet1/0/23]igmp-snooping host-join 239.0.0.1 vlan 2
MVR rtk switch上配置
Switch# configure
Switch(config)# vlan 2-4
Switch(config-vlan)# *Jan 01 2000 08:02:01: %VLAN-5: VLAN 2 is added, default name is VLAN0002
*Jan 01 2000 08:02:01: %VLAN-5: VLAN 3 is added, default name is VLAN0003
*Jan 01 2000 08:02:01: %VLAN-5: VLAN 4 is added, default name is VLAN0004
Switch(config-vlan)# exit
Switch(config)# interface GigabitEthernet 1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan add 2
Switch(config-if)# exit
Switch(config)# interface GigabitEthernet 2
Switch(config-if)# switchport access vlan 3
Switch(config-if)# exit
Switch(config)# interface GigabitEthernet 3
Switch(config-if)# switchport access vlan 4
Switch(config)# mvr
The operation will delete groups of VLAN ID is MVR VLAN include static groups. Continue? [yes/no]:y
Switch(config)# mvr vlan 2
The operation will delete the old and new MVR VLAN groups include static MVR groups.Continue? [yes/no]:y
Switch(config)# mvr group 239.0.0.1
The operation will delete the MVR VLAN groups include static MVR groups.Continue? [yes/no]:y
Switch(config)# mvr mode dynamic
Switch(config)# interface GigabitEthernet 1
Switch(config-if)# mvr type source
Switch(config-if)# exit
Switch(config)# interface GigabitEthernet 2
Switch(config-if)# mvr type receiver
Switch(config-if)# exit
Switch(config)# interface GigabitEthernet 3
Switch(config-if)# mvr type receiver
Switch(config-if)# exit
Switch(config)# do show mvr interface
Port | Type | Immediate Leave
--------+---------+-----------------
gi1 | Source| Disabled
gi2 | Receiver| Disabled
gi3 | Receiver| Disabled
--More--
web页面上配置
igmp snooping与MVR together work test