14-组播协议操作
本章节下载 (939.43 KB)
目 录
& 说明:
本手册着重介绍IP组播技术及设备操作。如果不加特别说明,本手册中出现的组播均指IP组播。
作为一种与单播和广播并列的通信方式,组播技术能够有效地解决单点发送、多点接收的问题,从而实现了网络中点到多点的高效数据传送,能够节约大量网络带宽、降低网络负载。
利用组播技术可以方便地提供一些新的增值业务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等对带宽和数据交互的实时性要求较高的信息服务。
如图1-1所示,采用单播(Unicast)方式时,信息源(Source)为每个需要信息的主机都发送一份独立的信息拷贝。
假设Host B、Host D和Host E需要某信息,则Source分别与Host B、Host D和Host E建立一条独立的传输通道。
采用单播方式传输时,网络中的信息量与要求接收该信息的用户量成正比,因此当用户数量很庞大时,信息源需要将多份内容相同的信息发送给不同的用户,这将对信息源以及网络带宽造成巨大的压力。
从单播方式的信息传播过程可以看出,该传输方式不利于信息的批量发送。
如图1-2所示,采用广播(Broadcast)方式时,信息源(Source)把信息传送给网络中的所有主机,而不管其是否需要。
假设只有Host B、Host D和Host E需要某信息,如果Source广播该信息,则Host A和Host C也可以接收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网络中信息的泛滥。
因此,广播不利于与特定对象进行数据交互,并且还占用了大量的带宽。
综上所述,传统的单播和广播的通信方式不能以最小的网络开销实现单点发送、多点接收的问题。
IP组播(IP Multicast)技术的出现及时解决了这个问题。如图1-3所示,当网络中的某些主机需要信息时,组播源(即Source)仅发送一份信息,借助组播路由协议为组播数据包建立组播分发树,被传递的信息在距离组播源尽可能远的网络节点才开始复制和分发。
假设只有Host B、Host D和Host E需要某信息,为了将该信息顺利地传输给这些主机,可以将Host B、Host D和Host E组成一个接收者的集合——组播组(Multicast group),并由网络中各路由器根据该集合中接收者的分布情况进行信息的复制和转发,最后该信息会准确地发送给Host B、Host D和Host E。
综上所述,组播的优势如下:
l 相比单播来说,组播的优势在于:由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致网络负载的显著增加。
l 相比广播来说,组播的优势在于:由于组播数据只会发送给需要该数据的接收者,所以可以合理利用带宽,不会造成网络资源的浪费,并能提高网络的安全性。
在组播方式的信息传输过程中,网络中各部分的角色如下:
l 信息的发送者称为“组播源”,如图1-3中的Source;
l 所有的接收者都是“组播组成员”,如图1-3中的Receiver;
l 由所有接收者构成一个“组播组”,组播组不受地域的限制;
l 支持三层组播功能的路由器称为“组播路由器”或“三层组播设备”,组播路由器不仅能够提供组播路由功能,也能够提供组播组成员的管理功能。
为了更好地理解,可以将组播方式的信息传输过程类比于电视节目的传送过程,如表1-1所示。
步骤 |
电视节目的传送过程 |
组播方式的信息传输过程 |
1 |
电视台S通过频道G传送电视节目 |
组播源S向组播组G发送组播数据 |
2 |
用户U将电视机的频道调至频道G |
接收者U加入组播组G |
3 |
用户U能够收看到由电视台S通过频道G传送的电视节目了 |
接收者U能够收到由组播源S发往组播组G的组播数据了 |
4 |
用户U关闭电视机 |
接收者U离开组播组G |
& 说明:
l 组播源不一定属于组播组,也就是说其本身不一定是组播数据的接收者;
l 一个组播源可以同时向多个组播组发送数据,而多个组播源也可以同时向一个组播组发送数据。
组播技术的优点主要在于:
l 提高效率:减轻信息源服务器和网络设备CPU的负荷;
l 优化性能:减少冗余流量;
l 分布式应用:使用最少的网络资源实现点到多点应用。
组播技术主要应用于以下几个方面:
l 多媒体、流媒体的应用,如:网络电视、网络电台、实时视/音频会议;
l 培训、联合作业场合的通信,如:远程教育、远程医疗;
l 数据仓库、金融应用(股票);
l 其它任何“点到多点”的数据发布应用。
根据接收者对组播源处理方式的不同,组播模型分为以下两类:
简单地说,ASM(Any-Source Multicast,任意信源组播)模型就是任意源组播模型。
在ASM模型中,任意一个发送者都可以作为组播源向某组播组地址发送信息。众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。
在ASM模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。SSM(Source-Specific Multicast,指定信源组播)模型为用户提供了一种能够在客户端指定组播源的传输服务。
SSM模型与ASM模型的根本区别在于:SSM模型中的接收者已经通过其它手段预先知道了组播源的具体位置。SSM模型使用与ASM模型不同的组播地址范围,直接在接收者与其指定的组播源之间建立专用的组播转发路径。
对于IP组播,需要关注下列问题:
l 组播源将组播信息传输到哪里?即组播寻址机制;
l 网络中有哪些接收者?即主机注册;
l 这些接收者需要从哪个组播源接收信息?即组播源发现;
l 组播信息如何传输?即组播路由。
IP组播属于端到端的服务,组播机制包括以下四个部分:
(1) 寻址机制:借助组播地址,实现信息从组播源发送到一组接收者;
(2) 主机注册:允许接收者主机动态加入和离开某组播组,实现对组播成员的管理;
(3) 组播路由:构建组播报文分发树(即组播数据在网络中的树型转发路径),并通过该分发树将报文从组播源传输到接收者;
(4) 组播应用:组播源与接收者必须安装支持视频会议等组播应用的软件,TCP/IP协议栈必须支持组播信息的发送和接收。
为了让组播源和组播组成员进行通信,需要提供网络层组播地址,即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层的组播MAC地址。
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用,范围从224.0.0.0到239.255.255.255,具体分类及其含义如表1-2所示。
表1-2 IPv4组播地址的范围及含义
地址范围 |
含义 |
224.0.0.0~224.0.0.255 |
永久组地址。除224.0.0.0保留不做分配外,其它地址供路由协议、拓扑查找和协议维护等使用,常用的永久组地址及其含义如表1-3所示。对于以该范围内组播地址为目的地址的数据包来说,不论其TTL(Time to Live,生存时间)值为多少,都不会被转发出本地网段 |
224.0.1.0~238.255.255.255 |
用户组地址,全网范围内有效。包含两种特定的组地址: (2) 232.0.0.0/8:SSM组地址 (3) 233.0.0.0/8:GLOP组地址,详情请参见RFC 2770 |
239.0.0.0~239.255.255.255 |
本地管理组地址,仅在本地管理域内有效。使用本地管理组地址可以灵活定义组播域的范围,以实现不同组播域之间的地址隔离,从而有助于在不同组播域内重复使用相同组播地址而不会引起冲突。详情请参见RFC 2365 |
& 说明:
l 组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。
l GLOP是一种AS(Autonomous System,自治系统)之间的组播地址分配机制,将AS号直接填入该范围内组播地址的中间两个字节中,每个AS都可以得到255个组播地址。
表1-3 常用永久组地址及其含义
永久组地址 |
含义 |
224.0.0.1 |
所有系统,包括主机与路由器 |
224.0.0.2 |
所有组播路由器 |
224.0.0.3 |
未分配 |
224.0.0.4 |
DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器 |
224.0.0.5 |
OSPF(Open Shortest Path First,开放最短路径优先)路由器 |
224.0.0.6 |
OSPF指定路由器/备用指定路由器 |
224.0.0.7 |
ST(Shared Tree,共享树)路由器 |
224.0.0.8 |
ST主机 |
224.0.0.9 |
RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器 |
224.0.0.11 |
移动代理 |
224.0.0.12 |
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理 |
224.0.0.13 |
所有PIM(Protocol Independent Multicast,协议无关组播)路由器 |
224.0.0.14 |
RSVP(Resource Reservation Protocol,资源预留协议)封装 |
224.0.0.15 |
所有CBT(Core-Based Tree,有核树)路由器 |
224.0.0.16 |
指定SBM(Subnetwork Bandwidth Management,子网带宽管理) |
224.0.0.17 |
所有SBM |
224.0.0.18 |
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议) |
根据RFC 4291,IPv6组播地址的格式如图1-4所示。
图1-4 IPv6组播地址格式
l 0xFF:8比特,标识此地址为IPv6组播地址。
l Flags:4比特,其中最高位是保留位,取0;次高位的定义和用途请参见RFC 3956;第三位的定义和用途请参见RFC 3306;最低位是临时标识位,0代表由IANA永久分配的组播地址,1代表非永久分配的组播地址。
l Scope:4比特,标识该IPv6组播组的应用范围,其可能的取值及其含义如表1-4所示。
l Group ID:112比特,IPv6组播组标识号。关于Group ID的详细规定请参见RFC 3306。
表1-4 Scope字段的取值及其含义
含义 |
|
0、3、F |
保留(reserved) |
1 |
接口本地范围(interface-local scope) |
2 |
链路本地范围(link-local scope) |
4 |
管理本地范围(admin-local scope) |
5 |
站点本地范围(site-local scope) |
6、7、9~D |
未分配(unassigned) |
8 |
机构本地范围(organization-local scope) |
E |
全局范围(global scope) |
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用组播MAC地址。
(1) IPv4组播MAC地址
IANA规定,IPv4组播MAC地址的高24位为0x01005E,第25位为0x0,低23位为IPv4组播地址的低23位。IPv4组播地址与MAC地址的映射关系如图1-5所示。
图1-5 IPv4组播地址与MAC地址的映射关系
由于IPv4组播地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到IPv4组播MAC地址,这样IPv4组播地址中就有5位信息丢失。于是,就有32个IPv4组播地址映射到了同一个IPv4组播MAC地址上,因此在二层处理过程中,设备可能要接收一些本IPv4组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。
(2) IPv6组播MAC地址
IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。如图1-6所示,是IPv6组播地址FF1E::F30E:0101的MAC地址映射举例。
图1-6 IPv6组播地址的MAC地址映射举例
& 说明:
l 通常,我们把工作在网络层的IP组播称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP/MLD、PIM/IPv6 PIM、MSDP等;把工作在数据链路层的IP组播称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMP Snooping/MLD Snooping、组播VLAN/IPv6组播VLAN等。
l IGMP Snooping、组播VLAN、IGMP、PIM和MSDP应用于IPv4;MLD Snooping、IPv6组播VLAN、MLD、和IPv6 PIM应用于IPv6。
本节主要针对二、三层组播协议在网络中的应用位置和功能进行总体介绍,有关各协议的详细介绍请分别参见以下各章节内容。
三层组播协议包括组播组管理协议和组播路由协议两种类型,它们在网络中的应用位置如图1-7所示。
(1) 组播组管理协议
在主机和与其直接相连的三层组播设备之间通常采用组播组的管理协议IGMP(Internet Group Management Protocol,互联网组管理协议)或MLD(Multicast Listener Discovery Protocol,组播侦听者发现协议),该协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。
(2) 组播路由协议
组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。
对于ASM模型,可以将组播路由分为域内和域间两大类:
l 域内组播路由用来在AS内部发现组播源并构建组播分发树,从而将组播信息传递到接收者。在众多域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播)是目前较为典型的一个。按照转发机制的不同,PIM可以分为DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)两种模式。
l 域间组播路由用来实现组播信息在AS之间的传递,目前比较成型的解决方案有MSDP(Multicast Source Discovery Protocol,组播源发现协议)等。
对于SSM模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此只需要借助PIM-SM构建的通道即可实现组播信息的传输。
二层组播协议包括IGMP Snooping/MLD Snooping和组播VLAN/IPv6组播VLAN等,它们在网络中的应用位置如图1-8所示。
(1) IGMP Snooping/MLD Snooping
IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)和MLD Snooping(Multicast Listener Discovery Snooping,组播侦听者发现协议窥探)是运行在二层设备上的组播约束机制,通过窥探和分析主机与三层组播设备之间交互的IGMP或MLD报文来管理和控制组播组,从而可以有效抑制组播数据在二层网络中的扩散。
(2) 组播VLAN/IPv6组播VLAN
在传统的组播点播方式下,当连接在二层设备上、属于不同VLAN的用户分别进行组播点播时,三层组播设备需要向该二层设备的每个VLAN分别发送一份组播数据;而当二层设备运行了组播VLAN或IPv6组播VLAN之后,三层组播设备只需向该二层设备的组播VLAN或IPv6组播VLAN发送一份组播数据即可,从而既避免了带宽的浪费,也减轻了三层组播设备的负担。
在组播模型中,IP报文的目的地址字段为组播组地址,组播源向以此目的地址所标识的主机群组传送信息。因此,转发路径上的组播路由器为了将组播报文传送到各个方位的接收站点,往往需要将从一个入接口收到的组播报文转发到多个出接口。与单播模型相比,组播模型的复杂性就在于此:
l 为了保证组播报文在网络中的传输,必须依靠单播路由表或者单独提供给组播使用的组播路由表来指导转发;
l 为了处理同一设备在不同接口上收到来自不同对端的相同组播信息,需要对组播报文的入接口进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以决定转发还是丢弃该报文。RPF检查机制是大部分组播路由协议进行组播转发的基础。
IGMP Snooping是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备上的组播约束机制,用于管理和控制组播组。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图2-1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
如图2-2所示,Router A连接组播源,在Switch A和Switch B上分别运行IGMP Snooping,Host A和Host C为接收者主机(即组播组成员)。
结合图2-2,介绍一下IGMP Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上朝向三层组播设备(DR或IGMP查询器)一侧的端口,如Switch A和Switch B各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口(包括动态和静态端口)都记录在路由器端口列表中。
l 成员端口(Member Port):又称组播组成员端口,表示交换机上朝向组播组成员一侧的端口,如Switch A的Ethernet1/0/2和Ethernet1/0/3端口,以及Switch B的Ethernet1/0/2端口。交换机将本设备上的所有成员端口(包括动态和静态端口)都记录在IGMP Snooping转发表中。
& 说明:
l 本文中提到的路由器端口都是指交换机上朝向组播路由器的端口,而不是指路由器上的端口。
l 在运行了IGMP Snooping的交换机上,所有收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文的端口都将被视为路由器端口。
表2-1 IGMP Snooping动态端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
IGMP成员关系报告报文 |
将该端口从组播组的转发表中删除 |
& 说明:
IGMP Snooping端口老化机制只针对动态端口,静态端口永不老化。
运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下:
IGMP查询器定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送IGMP成员关系报告报文:
l 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
l 如果主机要加入某个组播组,它会主动向组播路由器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
l 如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为成员端口添加到出端口列表中,并启动该成员端口的老化定时器;
l 如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为成员端口添加到出端口列表中,并启动该成员端口的老化定时器;
l 如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该端口,表明该端口已是一个成员端口,则重置该成员端口的老化定时器。
& 说明:
交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,原因如下:根据IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。当交换机从某成员端口上收到IGMP离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:
l 如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;
l 如果存在该组播组对应的转发表项,并且该组播组对应转发表项的出端口列表中包含有该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置该成员端口的老化定时器。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在该成员端口老化时间超时后,将该端口从该组播组所对应转发表项的出端口列表中删除。
与IGMP Snooping相关的协议规范有:
l RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
表2-2 IGMP Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP Snooping基本功能 |
使能IGMP Snooping |
必选 |
|
配置IGMP Snooping版本 |
可选 |
||
配置IGMP Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
|
配置静态端口 |
可选 |
||
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置IGMP Snooping查询器 |
使能IGMP Snooping查询器 |
可选 |
|
配置IGMP查询和响应 |
可选 |
||
配置IGMP查询报文源IP地址 |
可选 |
||
配置IGMP Snooping策略 |
配置组播组过滤器 |
可选 |
|
配置组播数据报文源端口过滤 |
可选 |
||
配置丢弃未知组播数据报文 |
可选 |
||
配置IGMP成员关系报告报文抑制 |
可选 |
||
配置端口加入的组播组最大数量 |
可选 |
||
配置组播组替换 |
可选 |
& 说明:
l IGMP-Snooping视图下的配置对所有的VLAN都有效,VLAN视图下的配置只对当前VLAN有效。对于某VLAN来说,优先采用在该VLAN视图下所作的配置,只有当在该VLAN视图下没有进行配置时,才采用IGMP-Snooping视图下的相应配置。
l IGMP-Snooping视图下的配置对所有端口都有效;以太网端口视图下的配置只对当前端口有效;手工端口组视图下的配置对当前端口组中的所有端口有效;聚合端口组视图下的配置则只对其主端口有效,而对非主端口无效。对于某端口来说,优先采用在该以太网端口视图或端口组视图下所作的配置,只有当在该以太网端口视图或端口组视图下没有进行配置时,才采用IGMP-Snooping视图下的相应配置。
在配置IGMP Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
在配置IGMP Snooping基本功能之前,需准备以下数据:
l IGMP Snooping的版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能IGMP Snooping,并进入IGMP-Snooping视图 |
igmp-snooping |
必选 缺省情况下,IGMP Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能IGMP Snooping |
igmp-snooping enable |
必选 缺省情况下,VLAN内的IGMP Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能IGMP Snooping之前,必须先在系统视图下全局使能IGMP Snooping,否则将无法在VLAN内使能IGMP Snooping。
l 在指定VLAN内使能了IGMP Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
配置IGMP Snooping的版本,实际上就是配置IGMP Snooping可以处理的IGMP报文的版本:
l 当IGMP Snooping的版本为2时,IGMP Snooping能够对IGMPv1和IGMPv2的报文进行处理,对IGMPv3的报文则不进行处理,而是在VLAN内将其广播;
l 当IGMP Snooping的版本为3时,IGMP Snooping能够对IGMPv1、IGMPv2和IGMPv3的报文进行处理。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP Snooping的版本 |
igmp-snooping version version-number |
可选 缺省情况下,IGMP Snooping的版本为2 |
注意:
当IGMP Snooping的版本由版本3切换到版本2时,系统将清除所有通过动态加入的IGMP Snooping转发表项;对于在版本3下通过手工配置而静态加入的IGMP Snooping转发表项,则分为以下两种情况进行不同的处理:
l 如果配置的仅仅是静态加入组播组,而没有指定组播源,则这些转发表项将不会被清除;
l 如果配置的是指定了组播源的静态加入组播源组,则这些转发表项将会被清除,并且当再次切换回版本3时,这些转发表项将被重新恢复。
在配置IGMP Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
l 配置相应端口组
在配置IGMP Snooping端口功能之前,需准备以下数据:
l 路由器端口老化时间
l 成员端口老化时间
l 组播组和组播源的地址
对于动态路由器端口,如果在其端口老化时间超时前没有收到IGMP普遍组查询报文或者PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
对于动态成员端口,如果在其端口老化时间超时前没有收到该组播组的IGMP成员关系报告报文,交换机将把该端口从该组播组所对应转发表项的出端口列表中删除。
如果组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表2-5 全局配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表2-6 在VLAN内配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
igmp-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
igmp-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
如果某端口所连接的主机需要固定接收某个组播组或组播源组的组播数据,可以配置该端口静态加入该组播组或组播源组,成为静态成员端口。
可以通过将交换机上的端口配置为静态路由器端口,从而使交换机上所有收到的组播数据可以通过该端口被转发出去。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
igmp-snooping static-group group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
igmp-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
l 只有指定了一个有效的组播源地址,且当交换机上运行的IGMP Snooping的版本为3时,配置静态加入组播源组的功能才会有效。
l 静态成员端口不会对IGMP查询器发出的查询报文进行响应;在配置静态成员端口,即使能或关闭静态加入组播组或组播源组功能时,端口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行IGMP的主机会对IGMP查询器发出的查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为组播组成员(即配置模拟主机加入)。当收到IGMP查询报文时由模拟主机进行响应,从而保证该交换机能够继续收到组播报文。
模拟主机加入功能的实现原理如下:
l 在某端口上使能模拟主机加入功能时,交换机会通过该端口主动发送一个IGMP成员关系报告报文;
l 在某端口上使能了模拟主机加入功能后,当收到IGMP普遍组查询报文时,交换机会通过该端口响应一个IGMP成员关系报告报文;
l 在某端口上关闭模拟主机加入功能时,交换机会通过该端口发送一个IGMP离开组报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入组播组或组播源组 |
igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,模拟主机加入组播组或组播源组的功能处于关闭状态 |
& 说明:
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到IGMP查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 与静态成员端口不同,配置了模拟主机加入功能的端口会作为动态成员端口而参与成员端口的老化过程。
端口快速离开是指当交换机从某端口收到主机发送的离开某组播组的IGMP离开组报文时,直接把该端口从对应转发表项的出端口列表中删除。此后,当交换机收到对该组播组的IGMP特定组查询报文时,交换机将不再向该端口转发。
在交换机上,如果端口下只连接有一个接收者,则可以通过使能端口快速离开功能以节约带宽和资源。
表2-9 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表2-10 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一组播组的其它用户无法收到组播数据。
在配置IGMP Snooping查询器之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP Snooping查询器之前,需准备以下数据:
l 发送IGMP普遍组查询报文的时间间隔
l 发送IGMP特定组查询报文的时间间隔
l IGMP普遍组查询的最大响应时间
l IGMP普遍组查询报文的源IP地址
l IGMP特定组查询报文的源IP地址
在运行了IGMP的组播网络中,会有一台三层组播设备充当IGMP查询器,负责发送IGMP查询报文,使三层组播设备能够在网络层建立并维护组播转发表项,从而在网络层正常转发组播数据。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持IGMP,因此无法实现IGMP查询器的相关功能。为了解决这个问题,可以在二层设备上使能IGMP Snooping查询器,使二层设备能够在数据链路层建立并维护组播转发表项,从而在数据链路层正常转发组播数据。
表2-11 使能IGMP Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能IGMP Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP Snooping查询器处于关闭状态 |
注意:
尽管IGMP Snooping查询器并不参与IGMP查询器的选举,但在运行了IGMP的组播网络中,配置IGMP Snooping查询器不但没有实际的意义,反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。
可以根据网络的实际情况来修改发送IGMP普遍组查询报文的时间间隔。
在收到IGMP查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于IGMP特定组查询报文来说,所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。
表2-12 全局配置IGMP查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
表2-13 在VLAN内配置IGMP查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送IGMP普遍组查询报文的时间间隔 |
igmp-snooping query-interval interval |
可选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
igmp-snooping max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
igmp-snooping last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
注意:
应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间,否则有可能造成对组播组成员的误删。
对于收到源IP地址为0.0.0.0的查询报文的端口,交换机不会将其设置为路由器端口,从而影响数据链路层组播转发表项的建立,最终导致组播数据无法正常转发。
当由二层设备充当IGMP Snooping查询器时,可以把IGMP查询报文的源IP地址配置为一个有效的IP地址以避免上述问题的出现。
表2-14 配置IGMP查询报文源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP普遍组查询报文源IP地址 |
igmp-snooping general-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP普遍组查询报文的源IP地址为0.0.0.0 |
配置IGMP特定组查询报文源IP地址 |
igmp-snooping special-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP特定组查询报文的源IP地址为0.0.0.0 |
注意:
IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选举。
在配置IGMP Snooping策略之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP Snooping策略之前,需准备以下数据:
l 组播组过滤的ACL规则
l 允许端口通过的组播组最大数量
在使能了IGMP Snooping的交换机上,通过配置组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个IGMP成员关系报告报文,该报文到达交换机后,进行ACL检查:如果该接收端口可以加入这个组播组,则将其列入到IGMP Snooping转发表中;否则交换机就丢弃该报文。这样,未通过ACL检查的组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组过滤器 |
group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
表2-16 在端口上配置组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组过滤器 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
通过配置组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
l 使能了该功能后,端口下不能连接组播源,因为该端口将过滤掉所有的组播数据报文(但允许组播协议报文通过),只能连接组播数据接收者;
l 关闭了该功能后,端口下既可以连接组播源,也可以连接组播数据接收者。
表2-17 全局配置组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能组播数据报文源端口过滤功能 |
source-deny port interface-list |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
表2-18 在端口上配置组播数据报文源端口过滤
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
使能组播数据报文源端口过滤功能 |
igmp-snooping source-deny |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
& 说明:
在使能IPv4组播数据报文源端口过滤功能时,系统将同时使能IPv6组播数据报文源端口过滤功能。
未知组播数据报文是指在IGMP Snooping转发表中不存在对应转发表项的那些组播数据报文:
l 当使能了丢弃未知组播数据报文功能时,交换机将丢弃所有收到的未知组播数据报文;
l 当关闭了丢弃未知组播数据报文功能时,交换机将在未知组播数据报文所属的VLAN内广播该报文。
当二层设备收到来自某组播组成员的IGMP成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。
当使能了IGMP成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文,这样可以减少网络中的报文数量。
表2-20 配置IGMP成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能IGMP成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,IGMP成员关系报告报文抑制功能处于使能状态 |
通过配置允许端口加入的组播组最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置允许端口加入的组播组最大数量 |
igmp-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,允许端口加入的组播组最大数量为128 |
& 说明:
在对允许端口加入的组播组最大数量进行配置时,如果当前端口上的组播组数量已经超过了配置值,系统将把该端口相关的所有转发表项从IGMP Snooping转发表中删除,该端口上的主机需要重新加入组播组。但如果为该端口配置了静态成员端口或者模拟主机加入,系统在把该端口相关的所有转发表项删除后,会把这些配置重新生效一次,直至该端口所加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或端口上通过的组播组数目有可能会超过交换机或该端口的限定;另外,在某些特定的应用中,交换机上新加入的组播组需要自动替换已存在的组播组(一个典型的应用就是“频道切换”,即用户通过加入一个新的组播组就能完成离开原组播组并切换到新组播组的动作)。
针对以上情况,可以在交换机或者某些端口上使能组播组替换功能。当交换机或端口上加入的组播组数量已达到限定值时:
l 若使能了组播组替换功能,则新加入的组播组会自动替代已存在的组播组,替代规则是替代IP地址最小的组播组;
l 若没有使能组播组替换功能,则自动丢弃新的IGMP成员关系报告报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
表2-23 在端口上配置组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组替换功能 |
igmp-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
在配置组播组替换之前,必须首先配置端口通过的组播组的最大数量(具体配置过程请参见“2.6.6 配置端口加入的组播组最大数量”),否则组播组替换功能将不能生效。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除组播组信息。
表2-24 IGMP Snooping显示和维护
命令 |
|
查看IGMP Snooping组播组信息 |
display igmp-snooping group [ vlan vlan-id ] [ verbose ] |
查看IGMP Snooping窥探到的IGMP报文的统计信息 |
display igmp-snooping statistics |
清除IGMP Snooping组播组信息 |
reset igmp-snooping group { group-address | all } [ vlan vlan-id ] |
清除IGMP Snooping窥探到的所有IGMP报文的统计信息 |
reset igmp-snooping statistics |
& 说明:
通过reset igmp-snooping group命令不能够清除以静态方式加入的IGMP Snooping组播组信息。
l 如图2-3所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行IGMPv2,Switch A上运行版本2的IGMP Snooping,并由Router A充当IGMP查询器;
l 要求通过配置,使连接在Switch A上的接收者(Receiver)Host A和Host B即使由于突然出现了某种意外而临时中断接收组播数据时,组播数据也能够不间断地通过Switch A的接口GigabitEthernet1/0/3和GigabitEthernet1/0/4转发出去。
请按照图2-3配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMPv2。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上分别使能模拟主机加入功能。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] igmp-snooping host-join 224.1.1.1 vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] igmp-snooping host-join 224.1.1.1 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(4) 检验配置效果
# 查看Switch A上VLAN 100内IGMP Snooping组播组的详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
GE1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 2 port.
GE1/0/3 (D) ( 00:03:23 )
GE1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port.
GE1/0/3
GE1/0/4
由此可见,Switch A上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/4已经加入了组播组(0.0.0.0,224.1.1.1)。
l 如图2-4所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行IGMP,Switch A、Switch B和Switch C上都运行IGMP Snooping,并由Router A充当IGMP查询器;
l 假设由于受STP等链路层协议的影响,为了避免出现环路,Switch A—Switch C的转发路径在正常情况下是阻断的,组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者(Receiver)Host A和Host C;
l 要求通过将Switch A上连接Switch C的端口GigabitEthernet1/0/3配置为静态路由器端口,从而保证当Switch A—Switch B—Switch C的路径出现阻断时,组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。
& 说明:
如果没有配置静态路由器端口,那么当Switch A—Switch B—Switch C的路径出现阻断时,至少需要等待一个IGMP查询和响应周期完成后,组播数据才能通过Switch A—Switch C的新路径传递给接收者,组播数据的传输在这个过程中将中断。
(1) 配置各设备接口的IP地址
请按照图2-4配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/3配置为静态路由器端口。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] igmp-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
(4) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port GigabitEthernet 1/0/1 GigabitEthernet 1/0/2
[SwitchB-vlan100] igmp-snooping enable
[SwitchB-vlan100] quit
(5) 配置Switch C
# 全局使能IGMP Snooping。
<SwitchC> system-view
[SwitchC] igmp-snooping
[SwitchC-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/5添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/5
[SwitchC-vlan100] igmp-snooping enable
[SwitchC-vlan100] quit
(6) 检验配置效果
# 查看Switch A上VLAN 100内IGMP Snooping组播组的详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
GE1/0/1 (D) ( 00:01:30 )
GE1/0/3 (S)
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 1 port.
GE1/0/2 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port.
GE1/0/2
由此可见,Switch A上的端口GigabitEthernet1/0/3已经成为了静态路由器端口。
l 如图2-5所示,在一个没有三层设备的纯二层网络环境中,Switch C通过GigabitEthernet1/0/3接口连接组播源(Source),Switch B和Switch C上分别连接至少一个接收者(Receiver);
l 所有接收者均使用IGMPv2,Switch A、Switch B和Switch C上都运行IGMP Snooping,并由Switch A充当IGMP Snooping查询器;
l 对于收到源IP地址为0.0.0.0的IGMP查询报文的端口,交换机不会将其设置为路由器端口,从而影响二层组播转发表项的建立,最终导致组播数据无法正常转发。因此要求通过配置改变缺省的IGMP查询报文源IP地址(即0.0.0.0)以避免上述问题的出现。
图2-5 IGMP Snooping查询器配置组网图
(1) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,并把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 GigabitEthernet 1/0/2
# 在VLAN 100内使能IGMP Snooping,并使能IGMP Snooping查询器。
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping querier
# 把IGMP普遍组查询和特定组查询报文的源IP地址均设置为192.168.1.1。
[SwitchA-vlan100] igmp-snooping general-query source-ip 192.168.1.1
[SwitchA-vlan100] igmp-snooping special-query source-ip 192.168.1.1
(2) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchB-vlan100] igmp-snooping enable
(3) 配置Switch C
# 全局使能IGMP Snooping。
<SwitchC> system-view
[SwitchC] igmp-snooping
[SwitchC-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchC-vlan100] igmp-snooping enable
(4) 检验配置效果
# 查看Switch C上收到的IGMP报文的统计信息。
[SwitchC-vlan100] display igmp-snooping statistics
Received IGMP general queries:3.
Received IGMPv1 reports:0.
Received IGMPv2 reports:4.
Received IGMP leaves:0.
Received IGMPv2 specific queries:0.
Sent IGMPv2 specific queries:0.
Received IGMPv3 reports:0.
Received IGMPv3 reports with right and wrong records:0.
Received IGMPv3 specific queries:0.
Received IGMPv3 specific sg queries:0.
Sent IGMPv3 specific queries:0.
Sent IGMPv3 specific sg queries:0.
Received error IGMP messages:0.
Switch C收到了IGMP普遍组查询报文,由此可见,Switch A上IGMP Snooping查询器已经开始正常工作了。
交换机不能实现IGMP Snooping二层组播功能。
IGMP Snooping没有使能。
(1) 使用display current-configuration命令查看IGMP Snooping的运行状态。
(2) 如果是没有使能IGMP Snooping,则需先在系统视图下使用igmp-snooping命令全局使能IGMP Snooping,然后在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP Snooping。
(3) 如果只是没有在相应VLAN下使能IGMP Snooping,则只需在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP Snooping。
配置了组播组策略,只允许主机加入某些特定的组播组,但主机仍然可以收到发往其它组播组的组播数据。
l ACL规则配置不正确;
l 组播组策略应用不正确;
l 没有使能丢弃未知组播数据报文的功能,使得属于过滤策略之外的组播数据报文(即未知组播数据报文)被广播;
l 端口被配置为静态加入组播组,且该配置与所配置的组播组策略冲突。
(1) 使用display acl命令查看所配置的ACL规则,检查其是否与所要实现的组播组过滤策略相符合。
(2) 在IGMP-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的组播组策略。如果没有,则使用group-policy或igmp-snooping group-policy命令应用正确的组播组策略。
(3) 使用display current-configuration命令查看是否已使能丢弃未知组播数据报文的功能。如果没有使能,则使用igmp-snooping drop-unknown命令使能丢弃未知组播数据报文功能。
(4) 使用display igmp-snooping group命令检查是否有端口被配置为静态加入组播组。如果有,则检查所配置的端口静态加入组播组与组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入组播组的相关配置。
MLD Snooping是Multicast Listener Discovery Snooping(组播侦听者发现协议窥探)的简称。它是运行在二层设备上的IPv6组播约束机制,用于管理和控制IPv6组播组。
运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发IPv6组播数据。
如图3-1所示,当二层设备没有运行MLD Snooping时,IPv6组播数据报文在二层被广播;当二层设备运行了MLD Snooping后,已知IPv6组播组的组播数据报文不会在二层被广播,而在二层被组播给指定的接收者。
图3-1 二层设备运行MLD Snooping前后的对比
如图2-2所示,Router A连接组播源,在Switch A和Switch B上分别运行MLD Snooping,Host A和Host C为接收者主机(即IPv6组播组成员)。
图3-2 MLD Snooping相关端口
结合图2-2,介绍一下MLD Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上朝向三层组播设备(DR或MLD查询器)一侧的端口,如Switch A和Switch B各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口(包括动态和静态端口)都记录在路由器端口列表中。
l 成员端口(Member Port):又称IPv6组播组成员端口,表示交换机上朝向IPv6组播组成员一侧的端口,如Switch A的Ethernet1/0/2和Ethernet1/0/3端口,以及Switch B的Ethernet1/0/2端口。交换机将本设备上的所有成员端口(包括动态和静态端口)都记录在MLD Snooping转发表中。
& 说明:
l 本文中提到的路由器端口都是指交换机上朝向组播路由器的端口,而不是指路由器上的端口。
l 在运行了MLD Snooping的交换机上,所有收到源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文的端口都将被视为路由器端口。
表3-1 MLD Snooping动态端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某IPv6组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
MLD成员关系报告报文 |
将该端口从IPv6组播组的转发表中删除 |
& 说明:
MLD Snooping端口老化机制只针对动态端口,静态端口永不老化。
运行了MLD Snooping的交换机对不同MLD动作的具体处理方式如下:
MLD查询器定期向本地网段内的所有主机与路由器(FF02::1)发送MLD普遍组查询报文,以查询该网段有哪些IPv6组播组的成员。
在收到MLD普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送MLD成员关系报告报文:
l 当IPv6组播组的成员主机收到MLD查询报文后,会回复MLD成员关系报告报文。
l 如果主机要加入某个IPv6组播组,它会主动向组播路由器发送MLD成员关系报告报文以声明加入该IPv6组播组。
在收到MLD成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的IPv6组播组地址,并对该报文的接收端口做如下处理:
l 如果不存在该IPv6组播组所对应的转发表项,则创建转发表项,将该端口作为成员端口添加到出端口列表中,并启动该成员端口的老化定时器;
l 如果已存在该IPv6组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为成员端口添加到出端口列表中,并启动该成员端口的老化定时器;
l 如果已存在该IPv6组播组所对应的转发表项,且其出端口列表中已包含该端口,表明该端口已是一个成员端口,则重置该成员端口的老化定时器。
& 说明:
交换机不会将MLD成员关系报告报文通过非路由器端口转发出去,原因如下:根据MLD成员关系报告抑制机制,如果非路由器端口下还有该IPv6组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该IPv6组播组的成员主机。
当主机离开IPv6组播组时,会通过发送MLD离开组报文,以通知组播路由器自己离开了某个IPv6组播组。当交换机从某成员端口上收到MLD离开组报文时,首先判断要离开的IPv6组播组所对应的转发表项是否存在,以及该IPv6组播组所对应转发表项的出端口列表中是否包含该接收端口:
l 如果不存在该IPv6组播组对应的转发表项,或者该IPv6组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;
l 如果存在该IPv6组播组对应的转发表项,并且该IPv6组播组对应转发表项的出端口列表中包含有该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该接收端口下是否还有该IPv6组播组的其它成员,所以交换机不会立刻把该端口从该IPv6组播组所对应转发表项的出端口列表中删除,而是重置该成员端口的老化定时器。
当MLD查询器收到MLD离开组报文后,从中解析出主机要离开的IPv6组播组的地址,并通过接收端口向该IPv6组播组发送MLD特定组查询报文。交换机在收到MLD特定组查询报文后,将其通过VLAN内的所有路由器端口和该IPv6组播组的所有成员端口转发出去。对于MLD离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机响应该特定组查询的MLD成员关系报告报文,则表示该端口下还有该IPv6组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机响应该特定组查询的MLD成员关系报告报文,则表示该端口下已没有该IPv6组播组的成员,则在该成员端口老化时间超时后,将该端口从该IPv6组播组所对应转发表项的出端口列表中删除。
与MLD Snooping相关的协议规范有:
l RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
表3-2 MLD Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MLD Snooping基本功能 |
使能MLD Snooping |
必选 |
|
配置MLD Snooping版本 |
可选 |
||
配置MLD Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
|
配置静态端口 |
可选 |
||
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置MLD Snooping查询器 |
使能MLD Snooping查询器 |
可选 |
|
配置MLD查询和响应 |
可选 |
||
配置MLD查询报文源IPv6地址 |
可选 |
||
配置MLD Snooping策略 |
配置IPv6组播组过滤器 |
可选 |
|
配置IPv6组播数据报文源端口过滤 |
可选 |
||
配置丢弃未知IPv6组播数据报文 |
可选 |
||
配置MLD成员关系报告报文抑制 |
可选 |
||
配置端口加入的IPv6组播组最大数量 |
可选 |
||
配置IPv6组播组替换 |
可选 |
& 说明:
l MLD-Snooping视图下的配置对所有的VLAN都有效,VLAN视图下的配置只对当前VLAN有效。对于某VLAN来说,优先采用在该VLAN视图下所作的配置,只有当在该VLAN视图下没有进行配置时,才采用MLD-Snooping视图下的相应配置。
l MLD-Snooping视图下的配置对所有端口都有效;以太网端口视图下的配置只对当前端口有效;手工端口组视图下的配置对当前端口组中的所有端口有效;聚合端口组视图下的配置则只对其主端口有效,而对非主端口无效。对于某端口来说,优先采用在该以太网端口视图或端口组视图下所作的配置,只有当在该以太网端口视图或端口组视图下没有进行配置时,才采用MLD-Snooping视图下的相应配置。
在配置MLD Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
在配置MLD Snooping基本功能之前,需准备以下数据:
l MLD Snooping的版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能MLD Snooping,并进入MLD-Snooping视图 |
mld-snooping |
必选 缺省情况下,MLD Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能MLD Snooping |
mld-snooping enable |
必选 缺省情况下,VLAN内的MLD Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能MLD Snooping之前,必须先在系统视图下全局使能MLD Snooping,否则将无法在VLAN内使能MLD Snooping。
l 在VLAN内使能MLD Snooping之后,不允许在该VLAN所对应的VLAN接口上再使能MLD和IPv6 PIM,反之亦然。
l 在指定VLAN内使能了MLD Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
配置MLD Snooping的版本,实际上就是配置MLD Snooping可以处理的MLD报文的版本:
l 当MLD Snooping的版本为1时,MLD Snooping能够对MLDv1的报文进行处理,对MLDv2的报文则不进行处理,而是在VLAN内将其广播;
l 当MLD Snooping的版本为2时,MLD Snooping能够对MLDv1和MLDv2的报文进行处理。
表3-4 配置MLD Snooping版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD Snooping的版本 |
mld-snooping version version-number |
可选 缺省情况下,MLD Snooping的版本为1 |
注意:
当MLD Snooping的版本由版本2切换到版本1时,系统将清除所有通过动态加入的MLD Snooping转发表项;对于在版本2下通过手工配置而静态加入的MLD Snooping转发表项,则分为以下两种情况进行不同的处理:
l 如果配置的仅仅是静态加入IPv6组播组,而没有指定IPv6组播源,则这些转发表项将不会被清除;
l 如果配置的是指定了IPv6组播源的静态加入IPv6组播源组,则这些转发表项将会被清除,并且当再次切换回版本2时,这些转发表项将被重新恢复。
在配置MLD Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
l 配置相应端口组
在配置MLD Snooping端口功能之前,需准备以下数据:
l 路由器端口老化时间
l 成员端口老化时间
l IPv6组播组和IPv6组播源的地址
对于动态路由器端口,如果在其端口老化时间超时前没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
对于动态成员端口,如果在其端口老化时间超时前没有收到该IPv6组播组的MLD成员关系报告报文,交换机将把该端口从该IPv6组播组所对应转发表的出端口列表中删除。
如果IPv6组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表3-5 全局配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表3-6 在VLAN内配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
mld-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
mld-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
如果某端口所连接的主机需要固定接收某个IPv6组播组的IPv6组播数据,可以配置该端口静态加入该IPv6组播组,成为静态成员端口。
可以通过将交换机上的端口配置为静态路由器端口,从而使交换机上所有收到的IPv6组播数据可以通过该端口被转发出去。
表3-7 配置静态端口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
mld-snooping static-group ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
mld-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
& 说明:
l 只有指定了一个有效的IPv6组播源地址,且当交换机上运行的MLD Snooping的版本为2时,配置静态加入IPv6组播源组的功能才会有效。
l 静态成员端口不会对MLD查询器发出的查询报文进行响应;在配置静态成员端口,即使能或关闭静态加入IPv6组播组或IPv6组播源组功能时,端口也不会主动发送MLD成员关系报告报文或MLD离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行MLD的主机会对MLD查询器发出的查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该IPv6组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为IPv6组播组成员(即配置模拟主机加入)。当收到MLD查询报文时由模拟主机进行响应,从而保证该交换机能够继续收到IPv6组播报文。
模拟主机加入功能的实现原理如下:
l 在某端口上使能模拟主机加入功能时,交换机会通过该端口主动发送一个MLD成员关系报告报文;
l 在某端口上使能了模拟主机加入功能后,当收到MLD普遍组查询报文时,交换机会通过该端口响应一个MLD成员关系报告报文;
l 在某端口上关闭模拟主机加入功能时,交换机会通过该端口发送一个MLD离开组报文。
表3-8 配置模拟主机加入
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入IPv6组播组 |
mld-snooping host-join ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id |
必选 缺省情况下,模拟主机加入IPv6组播组或IPv6组播源组的功能处于关闭状态 |
& 说明:
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到MLD查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 与静态成员端口不同,配置了模拟主机加入功能的端口会作为动态成员端口而参与成员端口的老化过程。
端口快速离开是指当交换机从某端口收到主机发送的离开某IPv6组播组的MLD离开组报文时,直接把该端口从对应转发表项的出端口列表中删除。此后,当交换机收到对该IPv6组播组的MLD特定组查询报文时,交换机将不再向该端口转发。
在交换机上,如果端口下只连接有一个接收者,则可以通过使能端口快速离开功能以节约带宽和资源。
表3-9 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表3-10 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
mld-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一IPv6组播组的其它用户无法收到IPv6组播数据。
在配置MLD Snooping查询器之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping查询器之前,需准备以下数据:
l 发送MLD普遍组查询报文的时间间隔
l 发送MLD特定组查询报文的时间间隔
l MLD普遍组查询的最大响应时间
l MLD普遍组查询报文的源IPv6地址
l MLD特定组查询报文的源IPv6地址
在运行了MLD的IPv6组播网络中,会有一台三层组播设备充当MLD查询器,负责发送MLD查询报文,使三层组播设备能够在网络层建立并维护IPv6组播转发表项,从而在网络层正常转发IPv6组播数据。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持MLD,因此无法实现MLD查询器的相关功能。为了解决这个问题,可以在二层设备上使能MLD Snooping查询器,使二层设备能够在数据链路层建立并维护IPv6组播转发表项,从而在数据链路层正常转发IPv6组播数据。
表3-11 使能MLD Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能MLD Snooping查询器 |
mld-snooping querier |
必选 缺省情况下,MLD Snooping查询器处于关闭状态 |
尽管MLD Snooping查询器并不参与MLD查询器的选举,但在运行了MLD的IPv6组播网络中,配置MLD Snooping查询器不但没有实际的意义,反而可能会由于其发送的MLD普遍组查询报文的源IPv6地址较小而影响MLD查询器的选举。
可以根据网络的实际情况来修改发送MLD普遍组查询报文的时间间隔。
在收到MLD查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个IPv6组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的MLD查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
合理配置MLD查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于MLD普遍组查询报文来说,通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于MLD特定组查询报文来说,所配置的发送MLD特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,MLD特定组查询的最大响应时间从数值上与发送MLD特定组查询报文的时间间隔相同。
表3-12 全局配置MLD查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
last-listener-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
表3-13 在VLAN内配置MLD查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送MLD普遍组查询报文的时间间隔 |
mld-snooping query-interval interval |
可选 缺省情况下,发送MLD普遍组查询报文的时间间隔为125秒 |
配置MLD普遍组查询的最大响应时间 |
mld-snooping max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
mld-snooping last-listener-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
注意:
应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间,否则有可能造成对IPv6组播组成员的误删。
可以通过此项配置改变MLD查询报文的源IPv6地址。
表3-14 配置MLD查询报文源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD普遍组查询报文源IPv6地址 |
mld-snooping general-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD普遍组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
配置MLD特定组查询报文源IPv6地址 |
mld-snooping special-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD特定组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
注意:
MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选举。
在配置MLD Snooping策略之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping策略之前,需准备以下数据:
l IPv6组播组过滤的IPv6 ACL规则
l 允许端口通过的IPv6组播组最大数量
在使能了MLD Snooping的交换机上,通过配置IPv6组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个MLD成员关系报告报文,该报文到达交换机后,进行ACL检查:如果该接收端口可以加入这个IPv6组播组,则将其列入到MLD Snooping转发表中;否则交换机就丢弃该报文。这样,未通过ACL检查的IPv6组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
表3-15 全局配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组过滤器 |
group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
表3-16 在端口上配置IPv6组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组过滤器 |
mld-snooping group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
通过配置IPv6组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
l 使能了该功能后,端口下不能连接组播源,因为该端口将过滤掉所有的IPv6组播数据报文(但允许IPv6组播协议报文通过),只能连接IPv6组播数据接收者;
l 关闭了该功能后,端口下既可以连接组播源,也可以连接IPv6组播数据接收者。
未知IPv6组播数据报文是指在MLD Snooping转发表中不存在对应转发表项的那些IPv6组播数据报文:
l 当使能了丢弃未知IPv6组播数据报文功能时,交换机将丢弃所有收到的未知IPv6组播数据报文;
l 当关闭了丢弃未知IPv6组播数据报文功能时,交换机将在未知IPv6组播数据报文所属的VLAN内广播该报文。
当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某IPv6组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。
当使能了MLD成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它MLD成员关系报告报文,这样可以减少网络中的报文数量。
表3-20 配置MLD成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能MLD成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,MLD成员关系报告报文抑制功能处于使能状态 |
通过配置允许端口加入的IPv6组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
表3-21 配置端口加入的IPv6组播组最大数量
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置允许端口加入的IPv6组播组最大数量 |
mld-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,允许端口加入的IPv6组播组最大数量为128 |
& 说明:
在对允许端口加入的IPv6组播组最大数量进行配置时,如果当前端口上的IPv6组播组数量已经超过了配置值,系统将把该端口相关的所有转发表项从MLD Snooping转发表中删除,该端口上的主机需要重新加入IPv6组播组。但如果为该端口配置了静态成员端口或者模拟主机加入,系统在把该端口相关的所有转发表项删除后,会把这些配置重新生效一次,直至该端口所加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或端口上通过的IPv6组播组数目有可能会超过交换机或该端口的限定;另外,在某些特定的应用中,交换机上新加入的IPv6组播组需要自动替换已存在的IPv6组播组(一个典型的应用就是“频道切换”,即用户通过加入一个新的IPv6组播组就能完成离开原IPv6组播组并切换到新IPv6组播组的动作)。
针对以上情况,可以在交换机或者某些端口上使能IPv6组播组替换功能。当交换机或端口上加入的IPv6组播组数量已达到限定值时:
l 若使能了IPv6组播组替换功能,则新加入的IPv6组播组会自动替代已存在的IPv6组播组,替代规则是替代IPv6地址最小的IPv6组播组;
l 若没有使能IPv6组播组替换功能,则自动丢弃新的MLD成员关系报告报文。
表3-22 全局配置IPv6组播组替换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
表3-23 在端口上配置IPv6组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组替换功能 |
mld-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
在配置IPv6组播组替换之前,必须首先配置端口通过的IPv6组播组的最大数量(具体配置过程请参见“3.6.6 配置端口加入的IPv6组播组最大数量”),否则IPv6组播组替换功能将不能生效。
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IPv6组播组信息。
表3-24 MLD Snooping显示和维护
配置 |
命令 |
查看MLD Snooping组播组信息 |
display mld-snooping group [ vlan vlan-id ] [ verbose ] |
查看MLD Snooping窥探到的MLD报文的统计信息 |
display mld-snooping statistics |
清除MLD Snooping组播组信息 |
reset mld-snooping group { ipv6-group-address | all } [ vlan vlan-id ] |
清除MLD Snooping窥探到的所有MLD报文的统计信息 |
reset mld-snooping statistics |
& 说明:
通过reset mld-snooping group命令不能够清除通过配置以静态方式加入的MLD Snooping组播组信息。
l 如图3-3所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器;
l 要求通过配置,使连接在Switch A上的接收者(Receiver)Host A和Host B即使由于突然出现了某种意外而临时中断接收IPv6组播数据时,IPv6组播数据也能够不间断地通过Switch A的接口GigabitEthernet1/0/3和GigabitEthernet1/0/4转发出去。
(1) 使能IPv6转发功能,并配置IPv6地址
使能各设备的IPv6转发功能,并按照图3-3配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLDv1。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] pim ipv6 sm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim ipv6 sm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上分别使能模拟主机加入功能。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(4) 检验配置效果
# 查看Switch A上VLAN 100内MLD Snooping组播组的详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
GE1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::101
(::, FF1E::101):
Attribute: Host Port
Host port(s):total 2 port.
GE1/0/3 (D) ( 00:03:23 )
GE1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-1001
Host port(s):total 2 port.
GE1/0/3
GE1/0/4
由此可见,Switch A上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/4已经加入了IPv6组播组(::,FF1E::101)。
l 如图3-4所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行MLD,Switch A、Switch B和Switch C上运行MLD Snooping,并由Router A充当MLD查询器;
l 假设由于受STP等链路层协议的影响,为了避免出现环路,Switch A—Switch C的转发路径在正常情况下是阻断的,IPv6组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者(Receiver)Host A和Host C;
l 要求通过将Switch A上连接Switch C的端口GigabitEthernet1/0/3配置为静态路由器端口,从而保证当Switch A—Switch B—Switch C的路径出现阻断时,IPv6组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。
& 说明:
如果没有配置静态路由器端口,那么当Switch A—Switch B—Switch C的路径出现阻断时,至少需要等待一个MLD查询和响应周期完成后,IPv6组播数据才能通过Switch A—Switch C的新路径传递给接收者,IPv6组播数据的传输在这个过程中将中断。
(1) 使能IPv6转发功能,并配置各设备接口的IPv6地址
使能各设备的IPv6转发功能,并按照图3-4配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] pim ipv6 dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim ipv6 dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/3配置为静态路由器端口。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] mld-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
(4) 配置Switch B
# 全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port GigabitEthernet 1/0/1 GigabitEthernet 1/0/2
[SwitchB-vlan100] mld-snooping enable
[SwitchB-vlan100] quit
(5) 配置Switch C
# 全局使能MLD Snooping。
<SwitchC> system-view
[SwitchC] mld-snooping
[SwitchC-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/5添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/5
[SwitchC-vlan100] mld-snooping enable
[SwitchC-vlan100] quit
(6) 检验配置效果
# 查看Switch A上VLAN 100内MLD Snooping组播组的详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
GE1/0/1 (D) ( 00:01:30 )
GE1/0/3 (S)
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::101
(::, FF1E::101):
Attribute: Host Port
Host port(s):total 1 port.
GE1/0/2 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 1 port.
GE1/0/2
由此可见,Switch A上的端口GigabitEthernet1/0/3已经成为了静态路由器端口。
l 如图2-5所示,在一个没有三层设备的纯二层网络环境中,Switch C通过GigabitEthernet1/0/3接口连接IPv6组播源(Source),Switch B和Switch C上分别连接至少一个接收者(Receiver);
l 所有接收者均使用MLDv1,Switch A、Switch B和Switch C上都运行MLD Snooping,并由Switch A充当MLD Snooping查询器。
图3-5 MLD Snooping查询器配置组网图
(1) 配置Switch A
# 使能IPv6转发功能,并全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,并把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中。
[SwitchA] vlan 100
[SwitchA-vlan100] port GigabitEthernet 1/0/1 GigabitEthernet 1/0/2
# 在VLAN 100内使能MLD Snooping,并使能MLD Snooping查询器。
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] mld-snooping querier
(2) 配置Switch B
# 使能IPv6转发功能,并全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] ipv6
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchB-vlan100] mld-snooping enable
(3) 配置Switch C
# 使能IPv6转发功能,并全局使能MLD Snooping。
<SwitchC> system-view
[SwitchC] ipv6
[SwitchC] mld-snooping
[SwitchC-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/3
[SwitchC-vlan100] mld-snooping enable
(4) 检验配置效果
# 查看Switch C上收到的MLD报文的统计信息。
[SwitchC-vlan100] display mld-snooping statistics
Received MLD general queries:3.
Received MLDv1 specific queries:0.
Received MLDv1 reports:4.
Received MLD dones:0.
Sent MLDv1 specific queries:0.
Received MLDv2 reports:0.
Received MLDv2 reports with right and wrong records:0.
Received MLDv2 specific queries:0.
Received MLDv2 specific sg queries:0.
Sent MLDv2 specific queries:0.
Sent MLDv2 specific sg queries:0.
Received error MLD messages:0.
Switch C收到了MLD普遍组查询报文,由此可见,Switch A上MLD Snooping查询器已经开始正常工作了。
交换机不能实现MLD snooping二层组播功能。
MLD Snooping没有使能。
(1) 使用display current-configuration命令查看MLD Snooping的运行状态。
(2) 如果是没有使能MLD Snooping,则需先在系统视图下使用mld-snooping命令全局使能MLD Snooping,然后在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD Snooping。
(3) 如果只是没有在相应VLAN下使能MLD Snooping,则只需在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD Snooping。
配置了IPv6组播组策略,只允许主机加入某些特定的IPv6组播组,但主机仍然可以收到发往其它IPv6组播组的IPv6组播数据。
l IPv6 ACL规则配置不正确;
l IPv6组播组策略应用不正确;
l 没有使能丢弃未知IPv6组播数据报文的功能,使得属于过滤策略之外的IPv6组播数据报文(即未知IPv6组播数据报文)被广播;
l 端口被配置为静态加入IPv6组播组,且该配置与所配置的IPv6组播组策略冲突。
(1) 使用display acl ipv6命令查看所配置的IPv6 ACL规则,检查其是否与所要实现的IPv6组播组过滤策略相符合。
(2) 在MLD-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的IPv6组播组策略。如果没有,则使用group-policy或mld-snooping group-policy命令应用正确的IPv6组播组策略。
(3) 使用display current-configuration命令查看是否已使能丢弃未知IPv6组播数据报文的功能。如果没有使能,则使用mld-snooping drop-unknown命令使能丢弃未知IPv6组播数据报文功能。
(4) 使用display mld-snooping group命令检查是否有端口被配置为静态加入IPv6组播组。如果有,则检查所配置的端口静态加入IPv6组播组与IPv6组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入IPv6组播组的相关配置。
如图4-1所示,在传统的组播点播方式下,当属于不同VLAN的主机Host A、Host B和Host C分别进行组播点播时,Router A需要把组播数据在每个VLAN内都复制一份。这样既造成了带宽的浪费,也给三层设备增加了额外的负担。
图4-1 二层设备运行组播VLAN前后的对比
为了解决这个问题,可以在Switch A上配置组播VLAN功能,即把这些主机所属的VLAN都配置成为一个组播VLAN的子VLAN,并在该组播VLAN内使能二层组播功能。这样,Router A只需把组播数据在组播VLAN内复制一份即可,而不必在每个VLAN内都复制一份,从而节省了网络带宽,也减轻了三层设备的负担。
表4-1 配置组播VLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能指定VLAN为组播VLAN |
multicast-vlan vlan-id enable |
必选 缺省情况下,VLAN不是组播VLAN |
为指定组播VLAN配置子VLAN |
multicast-vlan vlan-id subvlan vlan-list |
必选 缺省情况下,组播VLAN内没有子VLAN |
& 说明:
l 要配置的组播VLAN及其子VLAN必须存在;
l 组播VLAN的子VLAN总数不能超过系统限制(S5500-SI系列以太网交换机支持1个组播VLAN,组播VLAN下最多支持63个子VLAN)。
注意:
l 在配置成为组播VLAN的VLAN内必须使能IGMP Snooping,才能实现组播VLAN功能;而在组播VLAN的子VLAN内不必使能IGMP Snooping。
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播VLAN的运行情况,通过查看显示信息验证配置的效果。
表4-2 组播VLAN显示和维护
操作 |
命令 |
查看组播VLAN及其子VLAN的信息 |
display multicast-vlan [ vlan-id ] |
l 如图4-2所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行IGMP,Switch A上运行IGMP Snooping,并由Router A充当IGMP查询器;
l Switch A的端口GigabitEthernet1/01属于VLAN 1024,端口GigabitEthernet1/0/2到GigabitEthernet1/0/4分别属于VLAN 11到VLAN 13,Host A到Host C分别连接到Switch A的端口GigabitEthernet1/0/2到GigabitEthernet1/0/4上;
l 通过配置组播VLAN,使Router A向Switch A下的这三台主机传送组播数据时,只需要向VLAN 1024发送一份即可,而不必向每个VLAN都发送。
图4-2 组播VLAN典型配置组网图
(1) 配置各设备接口的IP地址
请按照图4-2配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 11,并把端口GigabitEthernet1/0/2添加到该VLAN中。
[SwitchA] vlan 11
[SwitchA-vlan11] port GigabitEthernet 1/0/2
[SwitchA-vlan11] quit
VLAN 12与VLAN 13的配置与VLAN 11相似,配置过程略。
# 创建VLAN 1024,把端口GigabitEthernet1/0/1添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 1024
[SwitchA-vlan1024] port GigabitEthernet 1/0/1
[SwitchA-vlan1024] igmp-snooping enable
[SwitchA-vlan1024] quit
# 使能VLAN 1024为组播VLAN,并把VLAN 11到VLAN 13都配置为该组播VLAN的子VLAN。
[SwitchA] multicast-vlan 1024 enable
[SwitchA] multicast-vlan 1024 subvlan 11 to 13
(4) 检验配置效果
# 查看Switch A上所有组播VLAN及其子VLAN的信息。
[SwitchA] display multicast-vlan
multicast vlan 1024's subvlan list:
vlan 11-13
如图5-1所示,在传统的IPv6组播点播方式下,当属于不同VLAN的主机Host A、Host B和Host C分别进行IPv6组播点播时,Router A需要把IPv6组播数据在每个VLAN内都复制一份。这样既造成了带宽的浪费,也给三层设备增加了额外的负担。
图5-1 二层设备运行IPv6组播VLAN前后的对比
为了解决这个问题,可以在Switch A上配置IPv6组播VLAN功能,即把这些主机所属的VLAN都配置成为一个IPv6组播VLAN的子VLAN,并在该IPv6组播VLAN内使能IPv6二层组播功能。这样,Router A只需把IPv6组播数据在IPv6组播VLAN内复制一份即可,而不必在每个VLAN内都复制一份,从而节省了网络带宽,也减轻了三层设备的负担。
表5-1 配置IPv6组播VLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能指定VLAN为IPv6组播VLAN |
multicast-vlan ipv6 vlan-id enable |
必选 缺省情况下,VLAN不是IPv6组播VLAN |
为指定IPv6组播VLAN配置子VLAN |
multicast-vlan ipv6 vlan-id subvlan vlan-list |
必选 缺省情况下,IPv6组播VLAN内没有子VLAN |
& 说明:
l 要配置的IPv6组播VLAN及其子VLAN必须存在;
l IPv6组播VLAN的子VLAN总数不能超过系统限制(S5500-SI系列以太网交换机支持1个IPv6组播VLAN,IPv6组播VLAN下最多支持63个子VLAN)。
注意:
l 如果设备上已使能了IPv6组播路由,则不允许在该设备上配置IPv6组播VLAN。
l 在配置成为IPv6组播VLAN的VLAN内必须使能MLD Snooping,才能实现IPv6组播VLAN功能;而在IPv6组播VLAN的子VLAN内不必使能MLD Snooping。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IPv6组播VLAN的运行情况,通过查看显示信息验证配置的效果。
表5-2 IPv6组播VLAN显示和维护
操作 |
命令 |
查看IPv6组播VLAN及其子VLAN的信息 |
display multicast-vlan ipv6 [ vlan-id ] |
l 如图4-2所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A与Switch A之间运行MLD,Switch A上运行MLD Snooping,并由Router A充当MLD查询器;
l Switch A的端口 GigabitEthernet1/0/1属于VLAN 1024,端口GigabitEthernet1/0/2到GigabitEthernet1/0/4分别属于VLAN 11到VLAN 13,Host A到Host C分别连接到Switch A的端口GigabitEthernet1/0/2到GigabitEthernet1/0/4上;
l 通过配置IPv6组播VLAN,使Router A向Switch A下的这三台主机传送IPv6组播数据时,只需要向VLAN 1024发送一份即可,而不必向每个VLAN都发送。
图5-2 IPv6组播VLAN典型配置组网图
(1) 使能IPv6转发功能,并配置各设备接口的IPv6地址
使能各设备的IPv6转发功能,并按照图4-2配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] pim ipv6 dm
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface GigabitEthernet1/0/2
[RouterA-GigabitEthernet1/0/2] pim ipv6 dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 11,并把端口GigabitEthernet1/0/2添加到该VLAN中。
[SwitchA] vlan 11
[SwitchA-vlan11] port GigabitEthernet1/0/2
[SwitchA-vlan11] quit
VLAN 12与VLAN 13的配置与VLAN 11相似,配置过程略。
# 创建VLAN 1024,把端口GigabitEthernet1/0/1添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 1024
[SwitchA-vlan1024] port GigabitEthernet1/0/1
[SwitchA-vlan1024] mld-snooping enable
[SwitchA-vlan1024] quit
# 使能VLAN 1024为IPv6组播VLAN,并把VLAN 11到VLAN 13都配置为该IPv6组播VLAN的子VLAN。
[SwitchA] multicast-vlan ipv6 1024 enable
[SwitchA] multicast-vlan ipv6 1024 subvlan 11 to 13
(4) 检验配置效果
# 查看Switch A上所有IPv6组播VLAN及其子VLAN的信息。
[SwitchA] display multicast-vlan ipv6
IPv6 multicast vlan 1024's subvlan list:
vlan 11-13
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!