所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

园区网络如何部署组播特性系列:IGMP Snooping

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
园区网络如何部署组播特性系列:IGMP Snooping

园区网络如何部署组播特性系列:IGMP Snooping

介绍

本章节主要介绍如何在一个交换网络内部署IGMP Snooping。缺省未部署IGMP Snooping时,一个LAN交换机在收到组播报文后会在广播域内泛洪。如果有很多组播服务器向该网络发送组播流,会导致大量带宽浪费。

前置条件

本章节主要介绍如何在华为S系列交换机配置IGMP Snooping。不同产品不同版本的命令行可能会有差异,详细配置情况请参考具体产品指定版本的配置文档。

为什么要部署IGMP Snooping

在园区二层网络中,未部署IGMP Snooping功能前,组播流通过广播发送。因为交换机通过MAC表实现按端口精确转发,MAC表中学习到的是报文的源MAC地址;而组播MAC地址只会是组播报文的目的MAC地址,所以MAC表中肯定不会有组播MAC地址表项,组播报文在交换机中只能作为未知流进行广播。这样会导致二层网络带宽浪费,尤其是大量组播流需要在网络转发的情况下,容易发生网络拥塞。

为了解决这个问题,现在有两种方式可供选择。

  • 第一种是在交换机中配置静态组播MAC地址表项,将组播MAC地址与端口进行绑定。但是这种方式灵活性差,每条组播地址表项都需要进行配置。配置命令行如下:

mac-address multicast mac-address interface { interface-type interface-number1 [ to interface-type interface-number2 ] } &<1-10> vlan vlan-id

  • 第二种是配置二层组播协议IGMP Snooping,通过交换机端口侦听IGMP报文,动态生成二层组播转发表项。有关IGMP Snooping基本功能的支持情况和配置情况,请参考组播S系列交换机支持矩阵。

组播地址

IPv4组播地址

IPv4组播地址一般作为目标地址来用于组播源和组播组成员通信。IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,因此IPv4组播地址范围为224.0.0.0~239.255.255.255,具体分类及含义如下:

  • 224.0.0.0~224.0.0.255:久组地址。IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。
  • 224.0.1.0~231.255.255.255、233.0.0.0~238.255.255.255:ASM组播地址,全网范围内有效。
  • 232.0.0.0~232.255.255.255:缺省情况下的SSM组播地址,全网范围内有效。
  • 239.0.0.0~239.255.255.255:本地管理组地址,仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。

组播MAC地址映射

IANA规定,IPv4组播MAC地址的高24位为0x01005E,第25位为0,低23位为IPv4组播地址的低23位。例如:

  • 224.0.1.1对应的组播MAC地址为01-00-5E-00-01-01
  • 225.0.1.1对应的组播MAC地址为01-00-5E-00-01-01

由示例可以看出,不同IPv4组播地址可能会映射到同一个组播MAC地址。因为IPv4组播地址的前4位是固定的1110,后28位中只有23位被映射到MAC地址,丢失了5位地址信息,直接结果是有32个IPv4组播地址可以映射到同一MAC地址上。这样,如果二层组播在按组播MAC地址转发时,可能会出现没有某组播组请求的成员主机也能接收到该组播组的数据。

IGMP(Internet Group Management Protocol,互联网组管理协议)

IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。要使组播报文最终能够到达接收者,需要某种机制使连接接收者网段的三层网络设备能够了解到该网段存在哪些组播接收者,同时保证接收者可以加入相应的组播组中。IGMP就是用来在接收者主机和与其所在网段相连的三层网络设备之间建立、维护组播组成员关系的协议。

IGMP有3个版本。IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。

IGMPv1

IGMPv1报文的格式如图1-1所示,其中各个字段的说明见表1-1。

图1-1 IGMPv1报文格式
表1-1 IGMPv1报文字段说明

字段

说明

Version

IGMP版本,值为1。

Type

报文类型。该字段有以下两种取值:

  • 0x1:表示普遍组查询报文。

  • 0x2:表示成员报告报文。

Unused

IGMPv1中,该字段在发送时被设为0,并在接收时被忽略。

Checksum

IGMP报文的校验和。

Group Address

组播组地址。在普遍组查询报文中,该字段设为0;在成员报告报文中,该字段为成员加入的组播组地址。

IGMPv1工作机制:IGMP查询器会周期性发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文。每个组播组的成员主机需要发送成员报告报文,否则超过一定时间如果IGMP查询器接口没有收到该组播组任一主机的响应,三层网络设备将停止向该组播组转发组播数据。因为三层网络设备会为每个组播源创建组播转发表项,而每条表项的出接口列表就是根据IGMP报告报文来生成的,超过一定时间出接口没有收到IGMP报文报文,该出接口将会从出接口列表删除。

IGMPv2

IGMPv2报文的格式如图1-2所示,其中各个字段的说明见表1-2。

图1-2 IGMPv2报文格式
表1-2 IGMPv2报文字段说明

字段

说明

Type

报文类型。该字段有以下四种取值:

  • 0x11:表示查询报文。IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类。

  • 0x12:表示IGMPv1成员报告报文。

  • 0x16:表示IGMPv2成员报告报文。

  • 0x17:表示成员离开报文。

Max Response Time

最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。该字段仅在IGMP查询报文中有效。

Checksum

IGMP报文的校验和。

Group Address

组播组地址。

  • 在普遍组查询报文中,该字段设为0。

  • 在特定组查询报文中,该字段为要查询的组播组地址。

  • 在成员报告报文和离开报文中,该字段为成员要加入或离开的组播组地址。

与IGMPv1相比,IGMPv2的变化如下:

  • 除了普遍组查询报文和成员报告报文之外,IGMPv2新增了两种报文:

    • 成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。

    • 特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。

  • IGMPv2对普遍组查询报文格式也做了改进,添加了最大响应时间(Max Response Time)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度。

IGMPv3

IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型发展起来的,提供了在报文中携带组播源信息的能力,即主机可以对组播源进行选择。

IGMPv3报文包含两大类:查询报文和成员报告报文。由于报文中需要包含组播源地址,报文定义的字段更多,IGMPv3的工作机制也更加复杂,详细的信息可参考《配置指南 - IP组播配置》中的“IGMP配置 - IGMP原理描述 - IGMPv3的变化”。

IGMPv1和IGMPv2之间的兼容性

IGMPv2兼容IGMPv1。在运行IGMPv1、IGMPv2的每个网段中,只能有一个三层设备发送查询报文,这个三层设备被称为IGMP查询器。在IGMPv1版本,IGMP查询器依靠组播路由协议PIM选举;在IGMPv2版本,IP地址最小的三层设备被选举为IGMP查询器。

在一些可能会碰到的场景中,三层设备和下游主机间如何进行IGMP协议交互如下:

  1. 三层设备运行IGMPv1,下游既有IGMPv1主机,又有IGMPv2主机

    三层设备无法解析IGMPv2报告报文,因此所有主机只能发送IGMPv1报告报文。

  2. 三层设备运行IGMPv2,下游既有IGMPv1主机,又有IGMPv2主机

    IGMPv1主机无法解析IGMPv2普遍组查询报文和指定组查询报文,因此三层设备只能用IGMPv1协议,基于指定组查询的快速离开机制也被中止。

  3. 单个网段中同时接入了IGMPv1三层设备和IGMPv2三层设备

    IGMPv1三层设备无法监听到IGMPv2三层设备,因此IGMPv2三层设备必须配置为IGMPv1版本。否则,IGMP查询器可能选举不出来。

IGMPv1/IGMPv2和IGMPv3之间的兼容性

IGMPv3兼容IGMPv1/IGMPv2。在运行所有IGMP版本的每个网段中,也只能有一个三层设备(即IGMP查询器)发送查询报文。在IGMPv1版本,IGMP查询器依靠组播路由协议PIM选举;在IGMPv2、IGMPv3版本,IP地址最小的三层设备被选举为IGMP查询器。

在一些可能会碰到的场景中,三层设备和下游主机间如何进行IGMP协议交互如下:

  1. 三层设备运行IGMPv1/IGMPv2,下游既有IGMPv1/IGMPv2主机,又有IGMPv3主机

    三层设备无法解析IGMPv3报告报文,因此所有主机只能发送IGMPv1/IGMPv2报告报文。

  2. 三层设备运行IGMPv3,下游既有IGMPv1/IGMPv2主机,又有IGMPv3主机
  3. IGMPv1/IGMPv2主机无法解析IGMPv3普遍组查询报文和成员关系查询报文,三层设备必须运行当前网段中主机运行的最低版本。如果同时有IGMPv2主机和IGMPv3主机,三层设备必须使用IGMPv2版本;如果同时有IGMPv1主机、IGMPv2主机和IGMPv3 ,三层设备必须使用IGMPv1版本。
  4. 单个网段中同时接入了所有IGMP版本的三层设备

    运行低版本三层设备无法监听到运行高版本三层设备的协议报文,因此所有三层设备必须配置一致的IGMP版本,而且配置的版本必须是当前所有三层设备上运行的最低版本。

S交换机上如何配置IGMP

如图1-3所示,网络中的不同用户群组成N1和N2两个末梢网络。PIM网络中的SwitchA连接用户网段N1,SwitchB和SwitchC连接用户网段N2。该PIM网络中传播视频信息使用的组播组地址为225.1.1.1~225.1.1.5。N1中的HostA和N2中的HostC都希望通过组播方式接收视频信息。

图1-3 配置IGMP基本功能组网

配置步骤如下:

  1. 配置各交换机接口的IP地址和单播路由协议,确保交换机间网络层能互通。有关协议配置的命令行略。
  2. 在各交换机使能IP组播路由功能。
    multicast routing-enable
  3. 配置组播路由协议PIM。以常用的PIM-SM协议为例。
    1. 在各交换机的接口使能PIM-SM。
      pim sm
    2. 将网络中汇聚设备的接口配置为RP接口(如SwitchD的VLANIF40)。以手工静态配置方式举例,在PIM视图下配置。
      static-rp 192.168.4.1
  4. 在连接成员主机网段的接口使能IGMP功能,配置IGMP版本。
    igmp enable
    igmp version { 1 | 2 | 3 }         //S交换机默认配置的版本为IGMPv2

以SwitchA为例,配置文件如下:

#
sysname SwitchA
#
vlan batch 10 to 11
#
multicast routing-enable
#
interface Vlanif10
 ip address 10.110.1.1 255.255.255.0
 pim sm
 igmp enable
 #
interface Vlanif11
 ip address 192.168.1.1 255.255.255.0
 pim sm
#
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10
#
 port trunk allow-pass vlan 11
#
ospf 1
 area 0.0.0.0
   network 10.110.1.0 0.0.0.255
   network 192.168.1.0 0.0.0.255
#
pim
 static-rp 192.168.4.1 
#
通过display igmp interface命令可以查看各交换机接口上IGMP的配置和运行情况:
display igmp interface vlanif 10
   Interface information
    Vlanif10(10.110.1.1):
     IGMP is enabled      //IGMP功能已使能
     IGMP group policy: - 
     IGMP limit: - 
     Value of query interval for IGMP (negotiated): -
     Value of query interval for IGMP (configured): 60 s 
     Value of other querier timeout for IGMP: 0 s 
     Value of maximum query response time for IGMP: 10 s
     Querier for IGMP: 10.110.1.1 (this router)
通过display pim routing-table命令,可以查看各交换机的PIM-SM组播路由表。
display pim routing-table
 VPN-Instance: public net
 Total 1 (*, G) entry; 1 (S, G) entry
 (*, 225.1.1.1)
        RP: 192.168.4.1
        Protocol: pim-sm, Flag: WC
        UpTime: 00:21:35
        Upstream interface: Vlanif11
              Upstream neighbor: 192.168.1.2
              RPF prime neighbor: 192.168.1.2
        Downstream interface(s) information:
        Total number of downstreams: 1
              1: Vlanif10
                     Protocol: igmp, UpTime: 00:21:35, Expires: -
 (10.3.5.2, 225.1.1.1)     //组播源地址为10.3.5.2,组播组地址为225.1.1.1的组播路由表项已生成
        RP: 192.168.4.1
        Protocol: pim-sm, Flag: SPT ACT
        UpTime: 00:42:46
        Upstream interface: Vlanif11
              Upstream neighbor: 192.168.1.2
              RPF prime neighbor: 192.168.1.2
       Downstream interface(s) information:
       Total number of downstreams: 1
              1: Vlanif10          //连接成员主机的IGMP查询器接口在组播路由表项的出接口列表里

IGMP Snooping

IGMP Snooping是二层组播的基本功能,可以实现组播数据在数据链路层的转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过二层设备时,在使能IGMP Snooping功能后,二层设备会侦听主机和上游三层设备之间交互的IGMP报文,通过分析报文中携带的信息(报文类型、组播组地址、接收报文的接口等),建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。

IGMP Snooping中不同端口角色介绍

如图1-4所示,三层设备Router从组播源接收数据并向下游转发,在二层组播设备SwitchA和SwitchB上分别运行IGMP Snooping,HostA、HostB和HostC为接收者主机(即组播组成员)。

图1-4 IGMP Snooping相关端口

结合图1-4,表1-3中介绍了IGMP Snooping中相关端口的概念。

表1-3 IGMP Snooping中的端口角色

端口角色

作用

如何生成

路由器端口(Router Port)

如SwitchA和SwitchB上蓝色圆圈表示的接口。

二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。

  • 由协议生成的路由器端口叫做动态路由器端口。收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文(三层组播设备的PIM接口向外发送的用于发现并维持邻居关系的报文)的接口都将被视为动态路由器端口。动态路由器端口的老化时间缺省为180秒或PIM Hello报文携带的Holdtime值。

  • 手工配置的路由器端口叫做静态路由器端口。

成员端口(Member Port)

如SwitchA和SwitchB上黄色方框表示的接口。

又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。

  • 由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。动态成员端口的老化时间为:IGMP健壮系数 × 普遍组查询时间间隔 + 最大响应时间。

  • 手工配置的成员端口叫做静态成员端口。

路由器端口和成员端口,是二层组播转发表项中的一个重要信息:出接口。其中路由器端口相当于上游接口,成员端口相当于下游接口。通过协议报文学习到的端口,对应的为动态表项;而手工配置的端口,对应的为静态表项。

IGMP Snooping代理功能

配置了IGMP Snooping Proxy功能的设备称为IGMP Snooping代理,在其上游设备看来,它就相当于一台主机;在其下游设备看来,它相当于一台查询器。配置命令行为igmp-snooping proxy。主要由如下两种应用场景:

  • 当三层设备没有启用IGMP时,例如只配置了静态组播组,网络中就不会有IGMP查询器来维护组成员关系。通过在二层设备上配置IGMP Snooping Proxy功能,可以使其发送Query报文,充当IGMP查询器。这个场景功能也可以通过配置igmp-snooping querier enable实现。
  • 当网络中运行了IGMP时,为了减少上游三层设备收到的IGMP Report报文和Leave报文的数量,可以在二层设备上部署IGMP Snooping Proxy功能,使其能够代理下游主机来向上游设备发送成员关系报告报文。这个场景功能也可以通过配置igmp-snooping report-suppress实现。

未知组播流

二层设备配置了IGMP Snooping功能后,如果没有用户请求,组播流量属于未知组播流。未知组播流,是指不存在对应二层组播转发表项或者对应表项的出接口为空的组播报文,也就是用户还没有点播的流量。而S交换机对未知组播流默认的处理方式与IGMP Snooping使能情况、转发模式等因素有关:

  • 未使能IGMP Snooping时,S交换机对未知组播流均采用广播方式。
  • 使能IGMP Snooping后,S交换机对未知组播的处理方式如表4:
    表1-4 使能IGMP Snooping后未知组播流的处理方式

    版本

    处理方式

    V200R011及以前版本

    • 对于S2700SI、S2710SI、S2720EI、S2750EI、S3700SI、S5700LI、S5700S-LI、S5700-C-LI、S5700-X-LI、S5720LI、S5720S-LI、S5700SI、S6720LI、S6720S-LI、S5720SI、S5720I-SI、S5720S-SI、S5730SI、S5730S-EI、S6720SI和S6720S-SI,未知组播流都会在VLAN内广播。
    • 对于其他交换机,如果当前二层组播转发模式为按MAC转发,未知组播流会在VLAN内广播;如果当前二层组播转发模式为按IP转发,设备在接收到未知组播流后会将其丢弃。

    V200R012C00及以后版本

    • 对于S2720EI、S2750EI、S5700S-LI、S5700LI和S5710-X-LI,未知组播流都会在VLAN内广播。
    • 对于其他交换机,如果当前二层组播转发模式为按MAC转发,未知组播流会在VLAN内广播;如果当前二层组播转发模式为按IP转发,设备在接收到未知组播流后会将其丢弃。

如果二层设备通过igmp-snooping version { 1 | 2 | 3 }配置的是侦听低版本IGMP报文,而下游主机运行的是高版本IGMP协议,那么二层设备将因为无法解析高版本IGMP协议报文,从而无法生成二层组播表项。此时,上游发送过来的组播也会被当做未知组播流处理。

S交换机上如何配置IGMP Snooping

如图1-5所示组播网络中,路由器Router通过二层设备Switch连接用户网络,Router上运行IGMPv2版本。组播源Source向组播组225.1.1.1~225.1.1.3发送数据,网络中有HostA、HostB、HostC三个接收者。

图1-5 配置IGMP Snooping组网图

配置步骤如下:

  1. 在Switch上创建VLAN并将接口加入VLAN。配置命令行略。
  2. 使能全局和VLAN的IGMP Snooping功能。
    [Switch] igmp-snooping enable
    [Switch] vlan 10
    [Switch-vlan10] igmp-snooping enable

配置文件如下:

sysname Switch
#
vlan batch 10
#
igmp-snooping enable
#
vlan 10
 igmp-snooping enable
 #
interface GigabitEthernet0/0/1
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10
#
interface GigabitEthernet0/0/2
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10
#
interface GigabitEthernet0/0/3
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10
#

查看Switch上二层组播转发表:

[Switch] display l2-multicast forwarding-table vlan 10
VLAN ID : 10, Forwarding Mode : IP 
Total Group(s) : 5
------------------------------------------------------------------------
                     (Source, Group)      Interface             Out-Vlan
------------------------------------------------------------------------
                    the router-port       GigabitEthernet0/0/3        10
                     (*, 225.1.1.1)       GigabitEthernet0/0/1        10
                                          GigabitEthernet0/0/2        10
                                          GigabitEthernet0/0/3        10
                     (*, 225.1.1.2)       GigabitEthernet0/0/1        10
                                          GigabitEthernet0/0/2        10
                                          GigabitEthernet0/0/3        10
                     (*, 225.1.1.3)       GigabitEthernet0/0/1        10
                                          GigabitEthernet0/0/2        10
                                          GigabitEthernet0/0/3        10
------------------------------------------------------------------------

相关信息

翻译
下载文档
更新时间:2019-06-29

文档编号:EDOC1100090444

浏览量:532

下载量:132

平均得分:
本文档适用于这些产品
相关版本
相关文档
Share
上一页 下一页