06-IGMP配置
本章节下载: 06-IGMP配置 (411.12 KB)
目 录
· IGMP功能中所指的“接口”为三层口,包括VLAN接口、三层以太网端口等。三层以太网端口是指被配置为三层模式的以太网端口,有关以太网端口模式切换的操作,请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。
· 本系列交换机未形成IRF时,适用本手册中的“独立运行模式”的情况;形成IRF后则适用本手册中的“IRF模式”的情况。有关IRF特性的详细介绍,请参见“IRF配置指导”。
IGMP是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP有三个版本:
· IGMPv1(由RFC 1112定义)
· IGMPv2(由RFC 2236定义)
· IGMPv3(由RFC 3376定义)
所有版本的IGMP都支持ASM(Any-Source Multicast,任意信源组播)模型;IGMPv3可以直接应用于SSM(Source-Specific Multicast,指定信源组播)模型,而IGMPv1和IGMPv2则需要在IGMP SSM Mapping技术的支持下才能应用于SSM模型。
有关ASM和SSM模型的介绍,请参见“IP组播配置指导”中的“组播概述”。
IGMPv1主要基于查询和响应机制来完成对组播组成员的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP成员关系报告报文(Membership Report Message),因此只需其中一台路由器发送IGMP查询报文(Query Message)即可,该路由器就称为IGMP查询器(Querier)。这就需要有一个查询器的选举机制来确定由哪台路由器作为IGMP查询器。
对于IGMPv1来说,由组播路由协议(如PIM)选举出唯一的组播信息转发者DR(Designated Router,指定路由器)作为IGMP查询器。
有关DR的介绍,请参见“IP组播配置指导”中的“PIM”。
图1-1 IGMP查询响应示意图
如图1-1所示,假设Host B与Host C想要收到发往组播组G1的组播数据,而Host A想要收到发往组播组G2的组播数据,那么主机加入组播组以及IGMP查询器(Router B)维护组播组成员关系的基本过程如下:
(1) 主机会主动向其要加入的组播组发送IGMP成员关系报告报文以声明加入,而不必等待IGMP查询器发来的IGMP查询报文;
(2) IGMP查询器周期性地以组播方式向本地网段内的所有主机与路由器发送IGMP查询报文(目的地址为224.0.0.1);
(3) 在收到该查询报文后,关注G1的Host B与Host C其中之一(这取决于谁的延迟定时器先超时)——譬如Host B会首先以组播方式向G1发送IGMP成员关系报告报文,以宣告其属于G1。由于本地网段中的所有主机和路由器都能收到Host B发往G1的报告报文,因此当Host C收到该报告报文后,将不再发送同样针对G1的报告报文,因为IGMP路由器(Router A和Router B)已知道本地网段中有对G1感兴趣的主机了。这个机制称为主机上的IGMP成员关系报告抑制机制,该机制有助于减少本地网段的信息流量;
(4) 与此同时,由于Host A关注的是G2,所以它仍将以组播方式向G2发送报告报文,以宣告其属于G2;
(5) 经过以上的查询和响应过程,IGMP路由器了解到本地网段中有G1和G2的成员,于是由组播路由协议(如PIM)生成(*,G1)和(*,G2)组播转发项作为组播数据的转发依据,其中的“*”代表任意组播源;
(6) 当由组播源发往G1或G2的组播数据经过组播路由到达IGMP路由器时,由于IGMP路由器上存在(*,G1)和(*,G2)组播转发项,于是将该组播数据转发到本地网段,接收者主机便能收到该组播数据了。
IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播组时,将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP路由器在一段时间之后便删除该组播组所对应的组播转发项。
与IGMPv1相比,IGMPv2增加了查询器选举机制和离开组机制。
在IGMPv1中,当某共享网段上存在多个组播路由器时,由组播路由协议(如PIM)选举的指定路由器充当查询器。
在IGMPv2中,增加了独立的查询器选举机制,其选举过程如下:
(1) 所有IGMPv2路由器在初始时都认为自己是查询器,并向本地网段内的所有主机和路由器发送IGMP普遍组查询(General Query)报文(目的地址为224.0.0.1);
(2) 本地网段中的其它IGMPv2路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的路由器将成为查询器,其它路由器成为非查询器(Non-Querier);
(3) 所有非查询器上都会启动一个定时器(即其它查询器存在时间定时器Other Querier Present Timer)。在该定时器超时前,如果收到了来自查询器的IGMP查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
在IGMPv1中,主机离开组播组时不会向组播路由器发出任何通知,导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。
而在IGMPv2中,当一个主机离开某组播组时:
(1) 该主机向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送离开组(Leave Group)报文;
(2) 当查询器收到该报文后,向该主机所声明要离开的那个组播组发送特定组查询(Group-Specific Query)报文(目的地址字段和组地址字段均填充为所要查询的组播组地址);
(3) 如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间(Max Response Time)内发送成员关系报告报文;
(4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系。
IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。
IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某组播组G的同时,能够明确要求接收或拒绝来自某特定组播源S的组播信息。当主机加入组播组时:
· 若要求只接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
· 若拒绝接收来自指定组播源如S1、S2、……的组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。
如图1-2所示,网络中存在Source 1(S1)和Source 2(S2)两个组播源,均向组播组G发送组播报文。Host B仅对从Source 1发往G的信息感兴趣,而对来自Source 2的信息没有兴趣。
如果主机与路由器之间运行的是IGMPv1或IGMPv2,Host B加入组播组G时无法对组播源进行选择,因此无论Host B是否需要,来自Source 1和Source 2的组播信息都将传递给Host B。
当主机与路由器之间运行了IGMPv3之后,Host B就可以要求只接收来自Source 1、发往G的组播信息(S1,G),或要求拒绝来自Source 2、发往G的组播信息(S2,G),这样就只有来自Source 1的组播信息才能传递给Host B了。
(1) 携带源地址的查询报文
IGMPv3不仅支持IGMPv1的普遍组查询和IGMPv2的特定组查询,而且还增加了对特定源组查询的支持:
· 普遍组查询报文中,既不携带组地址,也不携带源地址;
· 特定组查询报文中,携带组地址,但不携带源地址;
· 特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
(2) 包含多组记录的报告报文
IGMPv3报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。组记录可以分为多种类型,如下:
· IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
· IS_EX:表示组播组与组播源列表之间的过滤模式为EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
· TO_IN:表示组播组与组播源列表之间的过滤模式由EXCLUDE转变为INCLUDE。
· TO_EX:表示组播组与组播源列表之间的过滤模式由INCLUDE转变为EXCLUDE。
· ALLOW:表示在现有状态的基础上,还希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE,则向现有组播源列表中添加这些组播源;如果当前的对应关系为EXCLUDE,则从现有组播源列表中删除这些组播源。
· BLOCK:表示在现有状态的基础上,不再希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE,则从现有组播源列表中删除这些组播源;如果当前的对应关系为EXCLUDE,则向现有组播源列表中添加这些组播源。
IGMP SSM Mapping通过在路由器上配置SSM静态映射规则,从而为运行IGMPv1或IGMPv2的接收者主机提供对SSM模型的支持。
SSM模型要求在接收者主机所在的网段,路由器能够了解主机加入组播组时所指定的组播源。如果接收者主机上运行的是IGMPv3,则可以在IGMPv3的报告报文中直接指定组播源的地址;如果某些接收者主机只能运行IGMPv1或IGMPv2,则在IGMPv1或IGMPv2的报告报文中无法指定组播源的地址。这种情况下需要通过在路由器上配置IGMP SSM Mapping功能,将IGMPv1或IGMPv2报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息。
在如图1-3所示的SSM网络中,Host A、Host B和Host C上分别运行IGMPv1、IGMPv2和IGMPv3。在不允许将Host A和Host B升级为IGMPv3的情况下,若要为Host A和Host B也提供SSM组播服务,则需在Router A上使能IGMP SSM Mapping并配置相应的映射规则。
配置完成后,当Router A收到来自主机的IGMPv1或IGMPv2报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理:
(1) 如果G不在SSM组地址范围内,则提供ASM组播服务。
(2) 如果G在SSM组地址范围内:
· 若Router A上没有G对应的IGMP SSM Mapping规则,则无法提供SSM组播服务,丢弃该报文;
· 若Router A上有G对应的IGMP SSM Mapping规则,则依据规则将报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息,可以提供SSM组播服务。
· IGMP SSM Mapping不对IGMPv3的报告报文进行处理。
· 有关SSM组地址范围的介绍,请参见“IP组播配置指导”中的“PIM”。
IGMP依据接口来维护组成员关系,各实例的IGMP根据接口所属的实例来处理协议报文的收发。当路由器收到IGMP报文时,需要区分该报文所属的实例,并在该实例范围内对其进行处理。当某实例内的IGMP需要和其它组播协议交互信息时,只会通知本实例内的其它组播协议。
与IGMP相关的协议规范有:
· RFC 1112:Host Extensions for IP Multicasting
· RFC 2236:Internet Group Management Protocol, Version 2
· RFC 3376:Internet Group Management Protocol, Version 3
表1-1 IGMP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP基本功能 |
使能IGMP |
必选 |
|
配置IGMP版本 |
可选 |
||
配置静态加入 |
可选 |
||
配置组播组过滤器 |
可选 |
||
配置接口加入的组播组最大数量 |
可选 |
||
调整IGMP性能 |
配置IGMP报文选项 |
可选 |
|
配置IGMP查询和响应 |
可选 |
||
配置IGMP快速离开 |
可选 |
||
配置IGMP主机跟踪功能 |
可选 |
||
配置IGMP报文的DSCP优先级 |
可选 |
||
配置IGMP SSM Mapping |
使能IGMP SSM Mapping |
可选 |
|
配置IGMP SSM Mapping规则 |
可选 |
· IGMP视图下的配置具有全局性,接口视图下的配置仅对所在接口有效。
· 若没有在接口视图下进行配置,则该接口继承IGMP视图下的全局配置;若两个视图都进行了配置,则优先采用该接口视图下所作的配置。
在配置IGMP基本功能之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
· 配置PIM-DM(或PIM-SM)
在配置IGMP基本功能之前,需准备以下数据:
· IGMP的版本
· 以静态方式加入的组播组和组播源的地址
· 组播组过滤的ACL规则
· 接口加入的组播组最大数量
在需要建立和维护组播组成员关系的接口上使能IGMP。
表1-2 使能公网实例中的IGMP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能IGMP |
igmp enable |
必选 缺省情况下,IGMP处于关闭状态 |
表1-3 使能VPN实例中的IGMP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VPN实例,并进入VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
配置VPN实例的RD |
route-distinguisher route-distinguisher |
必选 缺省情况下,VPN实例没有RD |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
将接口与VPN实例进行关联 |
ip binding vpn-instance vpn-instance-name |
必选 缺省情况下,接口只属于公网,未与任何VPN实例关联 |
使能IGMP |
igmp enable |
必选 缺省情况下,IGMP处于关闭状态 |
· 有关ip vpn-instance、route-distinguisher和ip binding vpn-instance命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
· 有关multicast routing-enable命令的详细介绍,请参见“IP组播命令参考”中的“组播路由与转发”。
由于不同版本IGMP协议的报文结构与种类不同,因此需要为同一网段上的所有路由器配置相同版本的IGMP,否则IGMP将不能正常运行。
表1-4 全局配置IGMP版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置IGMP的版本 |
version version-number |
必选 缺省情况下,IGMP的版本为IGMPv2 |
表1-5 在接口上配置IGMP版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置IGMP的版本 |
igmp version version-number |
必选 缺省情况下,IGMP的版本为IGMPv2 |
在配置了静态加入组播组或组播源组后,接口将作为该组播组的虚拟组成员存在,从而可以接收发往该组的组播数据,以测试组播数据的转发。
表1-6 配置静态加入
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置静态加入组播组或组播源组 |
igmp static-group group-address [ source source-address ] |
必选 缺省情况下,接口没有以静态方式加入任何组播组或组播源组 |
· 在运行PIM-SM的设备上配置静态加入时,如果待配接口上使能了PIM-SM,则该接口必须为PIM-SM的DR,否则该接口将不能加入组播组或组播源组;如果待配接口上未使能PIM-SM但使能了IGMP,则该接口必须为IGMP查询器,否则该接口也不能加入组播组或组播源组。有关PIM-SM和DR的介绍,请参见“IP组播配置指导”中的“PIM”。
· 在配置了静态加入后,接口并不会对IGMP查询器发出的查询报文进行响应;当配置静态加入或取消静态加入的配置时,接口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。也就是说,该接口并没有真正成为该组播组的成员。
如果不希望接口所在网段上的主机加入某些组播组,可在该接口上配置ACL规则作为过滤器,接口将按照该规则对收到的IGMP成员关系报告报文进行过滤,只为该规则所允许的组播组维护组成员关系。
表1-7 配置组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置组播组过滤器 |
igmp group-policy acl-number [ version-number ] |
必选 缺省情况下,接口上没有配置组播组过滤器,即该接口下的主机可以加入任意合法的组播组 |
通过配置接口加入的组播组最大数量,可以方便用户灵活控制接口所能加入的组播组数量。
表1-8 配置接口加入的组播组最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口加入的组播组最大数量 |
igmp group-limit limit |
必选 缺省情况下,接口加入的组播组最大数量为2000 |
本配置只限制接口动态加入的组播组数量,而不限制其静态加入的组播组数量。
对于本节中的配置任务来说:
· 在IGMP视图下所作的配置对所有接口生效,在接口视图下所作的配置仅对当前接口生效;
· 如果在这两个视图下进行了相同功能或参数的配置,则不论配置先后,接口视图下的配置将被优先采用。
在调整IGMP性能之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
· 配置IGMP基本功能
在调整IGMP性能之前,需准备以下数据:
· IGMP查询器的启动查询间隔
· IGMP查询器的启动查询次数
· 发送IGMP普遍组查询报文的时间间隔
· IGMP查询器的健壮系数
· IGMP普遍组查询的最大响应时间
· 最后组成员查询间隔
· IGMP其它查询器的存在时间
· IGMP报文的DSCP优先级
由于IGMP特定组查询报文和IGMP特定源组查询报文的存在,而组播组是千变万化的,设备不可能加入所有的组,因此IGMP需要借助Router-Alert(路由器报警)选项来将送达本地、但没有加入的组播报文送往上层协议进行处理。有关Router-Alert选项的详细介绍,请参考RFC 2113。
对于IP头中是否携带Router-Alert选项的IGMP报文,设备会做出不同的处理:
· 出于兼容性考虑,缺省情况下设备不对Router-Alert选项进行检查,即处理所有收到的IGMP报文。此时,IGMP报文中无论是否携带有Router-Alert选项,设备都会将其送给上层协议进行处理。
· 为了提高设备性能、减少不必要的开支,同时出于协议安全性的考虑,可以配置设备丢弃未携带Router-Alert选项的IGMP报文,此时,当设备收到IGMP报文时,会检查该报文的Router-Alert选项,如果没有携带该选项,就丢弃该报文。
表1-9 全局配置IGMP报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置丢弃未携带Router-Alert选项的IGMP报文 |
require-router-alert |
必选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的IGMP报文中携带Router-Alert选项 |
send-router-alert |
必选 缺省情况下,在发送的IGMP报文中携带Router-Alert选项 |
表1-10 在接口上配置IGMP报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置丢弃未携带Router-Alert选项的IGMP报文 |
igmp require-router-alert |
必选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的IGMP报文中携带Router-Alert选项 |
igmp send-router-alert |
必选 缺省情况下,在发送的IGMP报文中携带Router-Alert选项 |
IGMP查询器的健壮系数是为了弥补可能发生的网络丢包而设置的报文重传次数,健壮系数越大,IGMP查询器就越“健壮”,但是组播组超时所需的时间也就越长。
当IGMPv1/v2/v3查询器启动时,会以“IGMP查询器启动查询间隔”为时间间隔发送“IGMP查询器启动查询次数”次IGMP普遍组查询报文。
IGMPv1/v2/v3查询器会周期性地发送IGMP普遍组查询报文,以判断网络上是否有组播组成员,发送间隔即为“发送IGMP普遍组查询报文的时间间隔”。可以根据网络的实际情况来修改周期性发送IGMP普遍组查询报文的时间间隔。
当IGMPv2查询器收到IGMP离开组报文后,会以“最后组成员查询间隔”为时间间隔发送“最后组成员查询次数”次IGMP特定组查询报文;当IGMPv3查询器收到改变组播组与组播源列表关系的IGMP报告报文后,也会以“最后组成员查询间隔”为时间间隔发送“最后组成员查询次数”次IGMP特定源组查询报文。最后组成员查询次数在数值上等于IGMP查询器的健壮系数。
在收到IGMP查询报文(包括普遍组查询、特定组查询和特定源组查询)后,主机会为其所加入的每个组播组都启动一个延迟定时器,其值在0到最大响应时间(该时间值从IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
· 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
· 对于IGMP特定组查询报文和IGMP特定源组查询报文来说,所配置的最后组成员查询间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询和IGMP特定源组查询的最大响应时间在数值上等于最后组成员查询间隔。
当同一网段上有多台组播路由器时,由IGMP查询器负责发送IGMP查询报文。如果非查询器在“其它查询器存在时间”超时前没有收到来自查询器的IGMP查询报文,就会认为原有查询器失效,从而触发新的查询器选举过程;否则,非查询器将重置“其它查询器存在时间定时器”。
表1-11 全局配置IGMP查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置IGMP查询器的健壮系数 |
robust-count robust-value |
必选 缺省情况下,IGMP查询器的健壮系数为2 |
配置IGMP查询器的启动查询间隔 |
startup-query-interval interval |
必选 缺省情况下,IGMP查询器的启动查询间隔为发送IGMP普遍组查询报文时间间隔的1/4 |
配置IGMP查询器的启动查询次数 |
startup-query-count value |
必选 缺省情况下,IGMP查询器的启动查询次数等于IGMP查询器的健壮系数 |
配置发送IGMP普遍组查询报文的时间间隔 |
timer query interval |
必选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
必选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置最后组成员查询间隔 |
last-member-query-interval interval |
必选 缺省情况下,最后组成员查询间隔为1秒 |
配置IGMP其它查询器的存在时间 |
timer other-querier-present interval |
必选 缺省情况下,IGMP其它查询器的存在时间=发送IGMP普遍组查询报文的时间间隔×IGMP查询器的健壮系数+IGMP普遍组查询的最大响应时间÷2 |
表1-12 在接口上配置IGMP查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置IGMP查询器的健壮系数 |
igmp robust-count robust-value |
必选 缺省情况下,IGMP查询器的健壮系数为2 |
配置IGMP查询器的启动查询间隔 |
igmp startup-query-interval interval |
必选 缺省情况下,IGMP查询器的启动查询间隔为发送IGMP普遍组查询报文时间间隔的1/4 |
配置IGMP查询器的启动查询次数 |
igmp startup-query-count value |
必选 缺省情况下,IGMP查询器的启动查询次数等于IGMP查询器的健壮系数 |
配置发送IGMP普遍组查询报文的时间间隔 |
igmp timer query interval |
必选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
igmp max-response-time interval |
必选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置最后组成员查询间隔 |
igmp last-member-query-interval interval |
必选 缺省情况下,最后组成员查询间隔为1秒 |
配置IGMP其它查询器的存在时间 |
igmp timer other-querier-present interval |
必选 缺省情况下,IGMP其它查询器的存在时间=发送IGMP普遍组查询报文的时间间隔×IGMP查询器的健壮系数+IGMP普遍组查询的最大响应时间÷2 |
· 应确保IGMP其它查询器的存在时间大于发送IGMP普遍组查询报文的时间间隔,否则有可能导致网络内的IGMP查询器反复变化。
· 应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间,否则有可能造成对组播组成员的误删。
· 对IGMP普遍组查询的最大响应时间、最后组成员查询间隔以及IGMP其它查询器的存在时间所做的配置,只有当设备运行在IGMPv2或IGMPv3时才有效。
在某些应用(如ADSL拨号上网)中,IGMP查询器的一个端口唯一对应着一台接收者主机,当主机在多个组播组间频繁切换(如进行电视选台)时,为了快速响应主机的离开组报文,可以在IGMP查询器上开启IGMP快速离开功能。
在开启了IGMP快速离开功能之后,当IGMP查询器收到来自主机的离开组报文时,不再发送IGMP特定组查询报文或IGMP特定源组查询报文,而是直接向上游发送离开通告,这样一方面减小了响应延迟,另一方面也节省了网络带宽。
表1-13 全局配置IGMP快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置组播组成员快速离开 |
fast-leave [ group-policy acl-number ] |
必选 缺省情况下,组播组成员快速离开功能是关闭的 |
表1-14 在接口上配置IGMP快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置组播组成员快速离开 |
igmp fast-leave [ group-policy acl-number ] |
必选 缺省情况下,组播组成员快速离开功能是关闭的 |
· 只有当设备运行在IGMPv2或IGMPv3时,配置IGMP快速离开功能才有效。
· IGMP快速离开配置只对除VLAN接口以外的其它三层接口生效,如三层以太网端口、三层聚合接口及Tunnel接口。
通过使能IGMP主机跟踪功能,可以使设备能够记录正在接收组播数据的成员主机信息(包括主机的IP地址、运行时间和超时时间等),以便于网络管理员对这些主机进行监控和管理。
表1-15 全局配置IGMP主机跟踪功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
全局使能IGMP主机跟踪功能 |
host-tracking |
必选 缺省情况下,IGMP主机跟踪功能处于关闭状态 |
表1-16 在接口上配置IGMP主机跟踪功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
在接口上使能IGMP主机跟踪功能 |
igmp host-tracking |
必选 缺省情况下,IGMP主机跟踪功能处于关闭状态 |
仅Release 1203及以后的版本支持本特性。
在IPv4报文头中,包含一个8bit的ToS字段,用于标识IP报文的服务类型。RFC 2474对这8个bit进行了定义,将前6个bit定义为DSCP优先级,最后2个bit作为保留位。在报文传输的过程中,DSCP优先级可以被网络设备识别,并作为报文传输优先程度的参考。
用户可以对IGMP报文的DSCP优先级进行配置
表1-17 配置IGMP报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置IGMP报文的DSCP优先级 |
dscp dscp-value |
可选 缺省情况下,IGMP报文的DSCP优先级为48 |
在SSM网络中,由于各种可能的限制,某些接收者主机只能运行IGMPv1或IGMPv2。为了向这些仅支持IGMPv1或IGMPv2的接收者主机提供SSM服务,可以在路由器上配置IGMP SSM Mapping功能。
在配置IGMP SSM Mapping之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
· 配置IGMP基本功能
表1-18 使能IGMP SSM Mapping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能IGMP SSM Mapping功能 |
igmp ssm-mapping enable |
必选 缺省情况下,接口上的IGMP SSM Mapping功能处于关闭状态 |
为保证本网段内运行任意版本IGMP的接收者主机都能得到SSM服务,建议在处于该网段的接口上运行IGMPv3。
通过多次配置可以实现同一组播组到多个组播源的映射。
表1-19 配置IGMP SSM Mapping规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例的IGMP视图 |
igmp [ vpn-instance vpn-instance-name ] |
- |
配置IGMP SSM Mapping规则 |
ssm-mapping group-address { mask | mask-length } source-address |
必选 缺省情况下,未配置IGMP SSM Mapping规则 |
若VLAN接口上运行的是IGMPv3,则在使用igmp-snooping host-join命令配置模拟主机加入时即便不指定组播源,模拟主机也仍将发送IGMPv3的报告报文,这种情况下不会依据IGMP SSM Mapping规则创建相应的组播组。有关igmp-snooping host-join命令的详细介绍,请参见“IP组播命令参考”中的“IGMP Snooping”。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IGMP的统计信息。
表1-20 IGMP显示和维护
操作 |
命令 |
查看IGMP组的信息 |
display igmp [ all-instance | vpn-instance vpn-instance-name ] group [ group-address | interface interface-type interface-number ] [ static | verbose ] [ | { begin | exclude | include } regular-expression ] |
查看IGMP组的二层端口信息(独立运行模式) |
display igmp group port-info [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看IGMP组的二层端口信息(IRF模式) |
display igmp group port-info [ vlan vlan-id ] [ chassis chassis-number slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看接口上IGMP跟踪的主机信息 |
display igmp host interface interface-type interface-number group group-address [ source source-address ] [ | { begin | exclude | include } regular-expression ] |
查看二层端口上IGMP跟踪的主机信息(独立运行模式) |
display igmp host port-info vlan vlan-id group group-address [ source source-address ] [ vlan vlan-id ] [ slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
查看二层端口上IGMP跟踪的主机信息(IRF模式) |
display igmp host port-info vlan vlan-id group group-address [ source source-address ] [ chassis chassis-number slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
查看接口上IGMP配置和运行信息 |
display igmp [ all-instance | vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看IGMP路由表的信息 |
display igmp [ all-instance | vpn-instance vpn-instance-name ] routing-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | flags { act | suc } ] * [ | { begin | exclude | include } regular-expression ] |
查看IGMP SSM Mapping规则 |
display igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group-address [ | { begin | exclude | include } regular-expression ] |
查看依据IGMP SSM Mapping规则创建的组播组信息 |
display igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group [ group-address | interface interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看接口上依据IGMP SSM Mapping规则加入的主机信息 |
display igmp ssm-mapping host interface interface-type interface-number group group-address source source-address [ | { begin | exclude | include } regular-expression ] |
清除IGMP组的动态加入记录 |
reset igmp [ all-instance | vpn-instance vpn-instance-name ] group { all | interface interface-type interface-number { all | group-address [ mask { mask | mask-length } ] [ source-address [ mask { mask | mask-length } ] ] } } |
清除IGMP组二层端口的动态加入记录 |
reset igmp group port-info { all | group-address } [ vlan vlan-id ] |
清除依据IGMP SSM Mapping规则创建的组播组信息 |
reset igmp [ all-instance | vpn-instance vpn-instance-name ] ssm-mapping group { all | interface interface-type interface-number { all | group-address [ mask { mask | mask-length } ] [ source-address [ mask { mask | mask-length } ] ] } } |
· reset igmp group和reset igmp group port-info命令只能清除动态加入记录,而无法清除静态加入记录。
· display igmp host interface只能查看除Vlan接口外的三层接口上IGMP跟踪的主机信息。
· display igmp ssm-mapping host interface只能查看除Vlan接口外的三层接口上依据IGMP SSM Mapping规则加入的主机信息。
执行reset igmp group命令可能导致接收者中断组播信息的接收。
· 接收者通过组播方式接收视频点播信息,不同组织的接收者组成末梢网络N1和N2,Host A与Host C分别为N1和N2中的组播信息接收者。
· PIM网络中的Switch A连接N1,Switch B与Switch C共同连接N2。
· Switch A通过Vlan-interface100连接N1,通过Vlan-interface101连接PIM网络中的其它设备。
· Switch B与Switch C分别通过各自的Vlan-interface200连接N2,并分别通过Vlan-interface201和Vlan-interface202连接PIM网络中的其它设备。
· Switch A与N1之间运行IGMPv2;Switch B、Switch C与N2之间也分别运行IGMPv2,且由于Switch B的接口IP地址较小,因此在N2中通常由其来充当IGMP查询器。
· 通过配置,使N1中的主机只能加入组播组224.1.1.1,而对N2中的主机则无任何限制。
图1-4 IGMP基本功能配置组网图
(1) 配置IP地址和单播路由协议
请按照图1-4配置各接口的IP地址和子网掩码,具体配置过程略。
配置PIM网络内各交换机之间采用OSPF协议进行互连,确保PIM网络内部在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并使能PIM-DM和IGMP
# 在Switch A上使能IP组播路由,在各接口上使能PIM-DM,并在主机侧接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim dm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim dm
[SwitchA-Vlan-interface101] quit
# 在Switch B上使能IP组播路由,在各接口上使能PIM-DM,并在主机侧接口Vlan-interface200上使能IGMP。
<SwitchB> system-view
[SwitchB] multicast routing-enable
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] igmp enable
[SwitchB-Vlan-interface200] pim dm
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 201
[SwitchB-Vlan-interface201] pim dm
[SwitchB-Vlan-interface201] quit
# 在Switch C上使能IP组播路由,在各接口上使能PIM-DM,并在主机侧接口Vlan-interface200上使能IGMP。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] igmp enable
[SwitchC-Vlan-interface200] pim dm
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 202
[SwitchC-Vlan-interface202] pim dm
[SwitchC-Vlan-interface202] quit
(3) 配置组播组过滤器
# 在Switch A上限定接口Vlan-interface100下的主机只能加入组播组224.1.1.1。
[SwitchA] acl number 2001
[SwitchA-acl-basic-2001] rule permit source 224.1.1.1 0
[SwitchA-acl-basic-2001] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp group-policy 2001
[SwitchA-Vlan-interface100] quit
(4) 检验配置效果
通过使用display igmp interface命令可以查看各交换机接口上IGMP的配置和运行情况。例如:
# 查看Switch B在Vlan-interface200上的IGMP信息。
[SwitchB] display igmp interface vlan-interface 200
Vlan-interface200(10.110.2.1):
IGMP is enabled
Current IGMP version is 2
Value of query interval for IGMP(in seconds): 60
Value of other querier present interval for IGMP(in seconds): 125
Value of maximum query response time for IGMP(in seconds): 10
Querier for IGMP: 10.110.2.1 (this router)
Total 1 IGMP Group reported
· PIM-SM网络中同时采用ASM和SSM方式提供组播服务,将Switch D的接口Vlan-interface104配置为C-BSR和C-RP,SSM组播组的范围为232.1.1.0/24。
· Switch D的接口Vlan-interface400上运行IGMPv3,接收者主机上运行IGMPv2,且不能升级至IGMPv3,因此该主机在加入组播组时无法指定组播源。
· Source 1、Source 2和Source 3都向SSM组范围内的组播组发送组播数据,要求通过在Switch D上配置IGMP SSM Mapping功能,使接收者主机只能接收来自Source 1和Source 3的组播数据。
图1-5 IGMP SSM Mapping功能配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Source 1 |
- |
133.133.1.1/24 |
Source 3 |
- |
133.133.3.1/24 |
Source 2 |
- |
133.133.2.1/24 |
Receiver |
- |
133.133.4.1/24 |
Switch A |
Vlan-int100 |
133.133.1.2/24 |
Switch C |
Vlan-int300 |
133.133.3.2/24 |
|
Vlan-int101 |
192.168.1.1/24 |
|
Vlan-int103 |
192.168.3.1/24 |
|
Vlan-int104 |
192.168.4.2/24 |
|
Vlan-int102 |
192.168.2.2/24 |
Switch B |
Vlan-int200 |
133.133.2.2/24 |
Switch D |
Vlan-int400 |
133.133.4.2/24 |
|
Vlan-int101 |
192.168.1.2/24 |
|
Vlan-int103 |
192.168.3.2/24 |
|
Vlan-int102 |
192.168.2.1/24 |
|
Vlan-int104 |
192.168.4.1/24 |
(1) 配置IP地址和单播路由协议
请按照图1-5配置各接口的IP地址和子网掩码,具体配置过程略。
配置PIM-SM域内的各交换机之间采用OSPF协议进行互连,确保PIM-SM域内部在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并使能PIM-SM、IGMP和IGMP SSM Mapping功能
# 在Switch D上使能IP组播路由,在各接口上使能PIM-SM,并在主机侧接口Vlan-interface400上使能IGMP和IGMP SSM Mapping功能,配置IGMP版本为3。
<SwitchD> system-view
[SwitchD] multicast routing-enable
[SwitchD] interface vlan-interface 400
[SwitchD-Vlan-interface400] igmp enable
[SwitchD-Vlan-interface400] igmp version 3
[SwitchD-Vlan-interface400] igmp ssm-mapping enable
[SwitchD-Vlan-interface400] pim sm
[SwitchD-Vlan-interface400] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim sm
[SwitchD-Vlan-interface103] quit
[SwitchD] interface vlan-interface 104
[SwitchD-Vlan-interface104] pim sm
[SwitchD-Vlan-interface104] quit
# 在Switch A上使能IP组播路由,并在各接口上使能PIM-SM。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 104
[SwitchA-Vlan-interface104] pim sm
[SwitchA-Vlan-interface104] quit
Switch B和Switch C的配置与Switch A相似,配置过程略。
(3) 配置C-BSR和C-RP
# 在Switch D上配置C-BSR和C-RP的位置。
[SwitchD] pim
[SwitchD-pim] c-bsr vlan-interface 104
[SwitchD-pim] c-rp vlan-interface 104
[SwitchD-pim] quit
(4) 配置SSM组播组的地址范围
# 在Switch D上配置SSM组播组地址范围为232.1.1.0/24。
[SwitchD] acl number 2000
[SwitchD-acl-basic-2000] rule permit source 232.1.1.0 0.0.0.255
[SwitchD-acl-basic-2000] quit
[SwitchD] pim
[SwitchD-pim] ssm-policy 2000
[SwitchD-pim] quit
Switch A、Switch B和Switch C的配置与Switch D相似,配置过程略。
(5) 配置IGMP SSM Mapping规则
# 在Switch D上配置IGMP SSM Mapping规则。
[SwitchD] igmp
[SwitchD-igmp] ssm-mapping 232.1.1.0 24 133.133.1.1
[SwitchD-igmp] ssm-mapping 232.1.1.0 24 133.133.3.1
[SwitchD-igmp] quit
(6) 检验配置效果
通过使用display igmp ssm-mapping命令可以查看交换机上的IGMP SSM Mapping规则。例如:
# 查看Switch D上组播组232.1.1.1的IGMP SSM Mapping规则。
[SwitchD] display igmp ssm-mapping 232.1.1.1
Vpn-Instance: public net
Group: 232.1.1.1
Source list:
133.133.1.1
133.133.3.1
通过使用display igmp ssm-mapping group命令可以查看交换机上依据IGMP SSM Mapping规则创建的组播组信息。例如:
# 查看Switch D上依据IGMP SSM Mapping规则创建的组播组信息。
[SwitchD] display igmp ssm-mapping group
Total 1 IGMP SSM-mapping Group(s).
Interface group report information of VPN-Instance: public net
Vlan-interface400(133.133.4.2):
Total 1 IGMP SSM-mapping Group reported
Group Address Last Reporter Uptime Expires
232.1.1.1 133.133.4.1 00:02:04 off
通过使用display pim routing-table命令可以查看交换机的PIM路由表信息。例如:
# 查看Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 2 (S, G) entry
(133.133.1.1, 232.1.1.1)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface104
Upstream neighbor: 192.168.4.2
RPF prime neighbor: 192.168.4.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface400
Protocol: igmp, UpTime: 00:13:25, Expires: -
(133.133.3.1, 232.1.1.1)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface103
Upstream neighbor: 192.168.3.1
RPF prime neighbor: 192.168.3.1
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface400
Protocol: igmp, UpTime: 00:13:25, Expires: -
当某主机发送了加入组播组G的报文后,离该主机最近的路由器上却没有组播组G的组成员信息。
· 组网、接口连线的正确与否以及接口的协议层是否up将直接影响组播组成员信息的生成;
· 在路由器上必须使能组播路由,在连接主机的接口上必须使能IGMP;
· 如果路由器接口上运行的IGMP版本比主机的低,那么路由器将无法识别主机发来的较高版本的IGMP报告报文;
· 如果在接口上使用命令igmp group-policy对加入组播组G进行了限制后,该接口将不再接收未通过过滤的那些要求加入组播组G的报文。
(1) 检查组网是否正确,接口间的连线是否正确,以及接口状态是否正常,是否配置了正确的IP地址。通过命令display igmp interface查看接口信息。若无接口信息输出,说明接口状态异常,原因通常是接口上配置了shutdown命令,或者接口连线不正确,或者接口上没有配置正确的IP地址。
(2) 检查是否使能了组播路由。通过命令display current-configuration查看是否配置了命令multicast routing-enable。若缺少该配置,则需要在系统视图下执行命令multicast routing-enable使能IP组播路由,同时也需要在相应接口上使能IGMP。
(3) 检查接口上运行的IGMP版本。通过命令display igmp interface来检查接口上运行的IGMP版本是否低于主机所使用的版本。
(4) 检查接口上是否配置了ACL规则来限制主机加入组播组G。通过命令display current-configuration interface观察是否配置了igmp group-policy命令。如果配置的ACL规则对加入组播组G进行了限制,则需要修改该ACL规则,允许接受组播组G的报告报文。
在同一网段的不同IGMP路由器上,各自维护的组成员关系不一致。
· 运行IGMP的路由器为每个接口维护多个参数,各参数之间相互影响,非常复杂。如果同一网段路由器的IGMP接口参数配置不一致,必然导致组成员关系的混乱;
· 另外,IGMP目前有3个版本,版本不同的IGMP路由器与主机之间虽然可以兼容,但是连接在同一网段的所有路由器必须运行相同版本的IGMP。如果同一网段路由器的IGMP版本不一致,也将导致IGMP组成员关系的混乱。
(1) 检查IGMP配置。通过命令display current-configuration观察接口上IGMP的配置信息。
(2) 在同一网段的所有路由器上执行命令display igmp interface来检查IGMP相关定时器的参数,确保配置一致。
(3) 通过命令display igmp interface来检查各路由器上运行的IGMP版本是否一致。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!