16-组播协议操作
本章节下载 (1.2 MB)
随着Internet的不断发展,数据、语音和视频信息等多种交互业务与日俱增,另外新兴的电子商务、网上会议、网上拍卖、视频点播、远程教学等对带宽和实时数据交互要求较高的服务逐渐兴起,这些服务对信息安全性、可计费性、网络带宽提出了更高的要求。
在网络中,存在着三种发送报文的方式:单播、广播、组播。下面我们对这三种传输方式的数据交互过程分别进行介绍和对比。
采用单播(Unicast)方式时,系统为每个需求该信息的用户单独建立一条数据传送通路,并为该用户发送一份独立的拷贝信息,如图1-1:
假设用户B、D和E需要该信息,则信息源Source必须分别和用户B、D、E的设备建立传输通道。由于网络中传输的信息量和要求接收该信息的用户量成正比,因此当用户数量很庞大时,服务器就必须要将多份内容相同的信息发送给用户。因此,带宽将成为信息传输中的瓶颈。
从单播信息的传播过程可以看出,单播的信息传输方式不利于信息规模化发送。
如果采用广播(Broadcast)方式,系统把信息传送给网络中的所有用户,不管他们是否需要,任何用户都会接收到广播来的信息,如图1-2:
假设用户B、D和E需求该信息,则信息源Source通过路由器广播该信息,网络其他用户A和C也同样接收到该信息,信息安全性和有偿服务得不到保障。
从广播信息的传播过程可以看出,广播的保密性和有偿性比较差。并且当同一网络中需求该信息的用户量很小时,网络资源利用率将非常低,带宽浪费严重。
因此,广播不利于对特定用户进行数据交互,并且还严重的占用带宽。
综上所述,单播方式适合用户较少的网络,而广播方式适合用户稠密的网络,当网络中需求某信息的用户量不确定时,单播和广播方式效率很低。
IP组播技术的出现及时解决了这个问题。当网络中的某些用户需要特定信息时,组播信息发送者(即组播源)仅发送一次信息,借助组播路由协议为组播数据包建立组播分发树,被传递的信息在距离用户端尽可能近的节点才开始复制和分发,如图1-3。
假设用户B、D和E需求该信息,为了将信息顺利地传输给真正需要该信息的用户,需要将用户B、D、E组成一个接收者集合,由网络中各路由器根据该集合中各接收者的分布情况进行信息转发和复制,最后准确地传输给实际需要的接收者B、D和E。
相比单播来说,组播的优点在于:
l 不论接收者有多少,相同的组播数据流在每一条链路上最多仅有一份。
l 使用组播方式传递信息,用户数量的增加不会显著增加网络的负载。
相比广播来说,组播的优点在于:
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 分布式应用:使多点应用成为可能。
组播技术有效地解决了单点发送多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够节约大量网络带宽、降低网络负载。
组播功能主要有以下的应用:
l 多媒体、流媒体的应用,如:网络电视、网络电台、实时视/音频会议。
l 培训、联合作业场合的通信,如:远程教育。
l 数据仓库、金融应用(股票)等。
l 任何“点到多点”的数据发布应用。
根据对组播源处理方式的不同,组播模型有下列三种:
l ASM(Any-Source Multicast,任意信源组播)
l SFM(Source-Filtered Multicast,信源过滤组播)
l SSM(Source-Specific Multicast,指定信源组播)
简单地说,ASM模型就是任意源组播模型。
在ASM模型中,任意一个发送者都可以成为组播源,向某组播组地址发送信息。众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。
在ASM模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
SFM模型继承了ASM模型,从发送者角度来看,两者的组播组成员关系完全相同。
同时,SFM模型在功能上对ASM模型进行了扩展。在SFM模型中,上层软件对收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。因此,接收者只能收到来自部分组播源的组播数据。从接收者的角度来看,只有部分组播源是有效的,组播源被经过了筛选。
在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。SSM模型为用户提供了一种能够在客户端指定组播源的传输服务。
SSM模型与ASM模型的根本区别在于:SSM模型中的接收者已经通过其他手段预先知道了组播源的具体位置。SSM模型使用与ASM/SFM模型不同的组播地址范围,直接在接收者和其指定的组播源之间建立专用的组播转发路径。
IP组播技术比较复杂,其根本用途是以组播方式将信息从组播源传输到接收者手中,同时满足接收者对信息的各种需求。对于IP组播,需要关注的是:
l 网络中有哪些接收者?即主机注册。
l 这些接收者需要从哪个组播源接收信息?即组播源发现技术。
l 组播源将组播信息传输到哪里?即组播寻址机制。
l 组播信息如何传输?即组播路由。
IP组播属于一种端到端服务,按照协议层从下往上划分,组播机制包括以下四个部分:
l 寻址机制:借助组播地址,实现信息从组播源发送到一组接收者。
l 主机注册:使用组播成员注册机制实现接收主机动态加入和离开组播组。
l 组播路由:使用组播路由构建报文分发树,从组播源传输报文到接收者。
l 组播应用:组播源必须支持视频会议等组播应用软件,TCP/IP协议栈必须支持组播信息的发送和接收。
由于信息的接收者是一个组播组内的多个主机,因此需要面对信息源该将信息发往何处、目的地址如何选取的问题。
这些问题简而言之就是组播寻址。为了让信息源和组播组成员进行通讯,需要提供网络层组播地址,即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层MAC组播地址。下面分别介绍这两种组播地址。
(1) IPv4组播地址
根据IANA(Internet Assigned Numbers Authority,因特网编号授权委员会)规定,IP地址分为五类,即A类、B类、C类、D类和E类。
l 单播报文按照网络规模大小分别使用A、B、C三类IP地址。
l 组播报文的目的地址使用D类IP地址,D类地址不能出现在IP报文的源IP地址字段。
l E类地址保留在今后使用。
在单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳”(hop-by-hop)的原理在IP网络中传输。然而在IP组播环境中,数据包的目的地不是一个,而是一组,形成组地址。所有的信息接收者都加入到一个组内,并且一旦加入之后,流向该组地址的数据立即开始向接收者传输,组中的所有成员都能接收到数据包,这个组就是“组播组”。
组播组具有以下的几个特点:
l 组播组中的成员是动态的,主机可以在任何时刻加入和离开组播组。
l 组播组可以是永久的也可以是临时的。
l 由IANA分配组播地址的组播组称为永久组播组(又称之保留组播组)。
对于永久组播组,要注意的是:
l 永久组播组的IP地址保持不变,但组中的成员构成可以发生变化。
l 永久组播组中成员的数量可以是任意的,甚至可以为零。
l 那些没有保留下来供永久组播组使用的IP组播地址,可以被临时组播组使用。
D类组播地址范围是224.0.0.0~239.255.255.255,范围及含义见表1-2。
表1-2 D类地址的范围及含义
D类地址范围 |
含义 |
224.0.0.0~224.0.0.255 |
预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 |
用户可用的ASM(Any-Source Multicast,任意源组播模型)组播地址(临时组地址),全网范围内有效 |
232.0.0.0~232.255.255.255 |
用户可用的SSM(Source-Specific Multicast,指定源组播模型)组播组地址 |
239.0.0.0~239.255.255.255 |
本地管理组播地址,仅在特定的本地范围内有效 |
根据IANA的约定,224.0.0.0~224.0.0.255网段地址被预留给本地网络中的路由协议使用,常用的预留IP组播地址列表如下:
表1-3 预留的IP组播地址列表
D类地址范围 |
含义 |
224.0.0.1 |
所有主机的地址 |
224.0.0.2 |
所有组播路由器的地址 |
224.0.0.3 |
不分配 |
224.0.0.4 |
DVMRP(Distance Vector Multicast Routing,距离矢量组播路由协议)路由器 |
224.0.0.5 |
OSPF(Open Shortest Path First,最短路径优先)路由器 |
224.0.0.6 |
OSPF DR(Open Shortest Path First Ddesignated Router,最短路径优先指定路由器) |
224.0.0.7 |
ST(Shared Tree,共享树)路由器 |
224.0.0.8 |
ST(Shared Tree,共享树)主机 |
224.0.0.9 |
RIP-2路由器 |
224.0.0.11 |
活动代理 |
224.0.0.12 |
DHCP服务器/中继代理 |
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 |
所有SBMS |
224.0.0.18 |
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议) |
224.0.0.19– 224.0.0.255 |
未指定 |
和IANA为IP单播预留私有地址网段10.0.0.0/8等类似,IANA也为IP组播预留了私有地址网段239.0.0.0/8,这些地址属于管理范围地址。通过对管理范围地址的管理,可以灵活地定义组播域范围,实现不同组播域之间的地址隔离,有助于相同组播地址在不同组播域内的重复使用而不会冲突。
(2) IPv6组播地址
图1-4 IPv6组播地址格式
如图1-4所示,IPv6组播地址中各字段的含义如下:
l 0xFF:最高8比特为11111111,标识此地址为IPv6组播地址。
图1-5 Flags字段格式
l Flags:4比特,如图1-5所示,该字段中各位的取值及含义如表1-4所示。
表1-4 Flags字段各位的取值及含义
位 |
取值及含义 |
0位 |
保留位,必须取0 |
R位 |
l 取0表示非内嵌RP的IPv6组播地址 l 取1则表示内嵌RP的IPv6组播地址(此时P、T位也必须置1) |
P位 |
l 取0表示非基于单播前缀的IPv6组播地址 l 取1则表示基于单播前缀的IPv6组播地址(此时T位也必须置1) |
T位 |
l 取0表示由IANA永久分配的IPv6组播地址 l 取1则表示非永久分配的IPv6组播地址 |
l Scope:4比特,标识该IPv6组播组的应用范围,其可能的取值及其含义如表1-5所示。
表1-5 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) |
l Group ID:112比特,IPv6组播组的标识号,用来在由Scope字段所指定的范围内唯一标识IPv6组播组。
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播报文时,传输目标不再是一个具体的接收者,而是一个成员不确定的组,所以需要使用组播MAC地址作为目的地址。
(1) IPv4组播MAC地址
IANA规定,组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit,映射关系如图1-6所示:
图1-6 组播IP地址与组播MAC地址的映射关系
由于IP组播地址的高4bit是1110,代表组播标识,而低28bit中只有23bit被映射到MAC地址,这样IP地址中就会有5bit信息丢失,直接的结果是出现了32个IP组播地址映射到同一MAC地址上。
(2) IPv6组播MAC地址
IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。如图1-7所示,是IPv6组播地址FF1E::F30E:101的MAC地址映射举例。
图1-7 IPv6组播地址的MAC地址映射举例
l 通常,我们把工作在网络层的IP组播称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP/MLD、PIM/IPv6 PIM、MSDP、MBGP/IPv6 MBGP等;把工作在数据链路层的IP组播称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMP Snooping/MLD Snooping、组播VLAN/IPv6组播VLAN等。
l IGMP Snooping、组播VLAN、IGMP、PIM、MSDP和MBGP应用于IPv4;MLD Snooping、IPv6组播VLAN、MLD、IPv6 PIM和IPv6 MBGP应用于IPv6。
本节主要针对二、三层组播协议在网络中的应用位置和功能进行总体介绍,有关部分协议的详细介绍请分别参见本手册其他各章节的介绍。
三层组播协议包括组播组管理协议和组播路由协议两种类型,它们在网络中的应用位置如图1-8所示。
(1) 组播组管理协议
在主机和与其直接相连的三层组播设备之间通常采用组播组的管理协议IGMP(Internet Group Management Protocol,互联网组管理协议)或MLD(Multicast Listener Discovery Protocol,组播侦听者发现协议),该协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。
(2) 组播路由协议
组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。
对于ASM模型,可以将组播路由分为域内和域间两大类:
l 域内组播路由用来在AS(Autonomous System,自治系统)内部发现组播源并构建组播分发树,从而将组播信息传递到接收者。在众多域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播)是目前较为典型的一个。按照转发机制的不同,PIM可以分为DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)两种模式。
l 域间组播路由用来实现组播信息在AS之间的传递,目前比较成型的解决方案有:MSDP(Multicast Source Discovery Protocol,组播源发现协议)能够跨越AS传播组播源的信息;而MP-BGP(MultiProtocol Border Gateway Protocol,多协议边界网关协议)的组播扩展MBGP(Multicast BGP)则能够跨越AS传播组播路由。
对于SSM模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此只需要借助PIM-SM构建的通道即可实现组播信息的传输。
二层组播协议包括IGMP Snooping/MLD Snooping和组播VLAN/IPv6组播VLAN等,它们在网络中的应用位置如图1-9所示。
(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检查机制是大部分组播路由协议进行组播转发的基础。
RPF机制除了可以保证正确地按照组播路由的配置转发组播报文外,还能避免由于各种原因而造成的环路。
路由器在收到由组播源S向组播组G发送的组播报文后,首先查找组播转发表:
(1) 如果存在对应的(S,G)表项,且该报文实际到达的接口与组播转发表中的入接口一致,则向所有的出接口执行转发。
(2) 如果存在对应的(S,G)表项,但是该报文实际到达的接口与组播转发表中的入接口不一致,则对此报文执行RPF检查:
l 若检查结果表明RPF接口与现存(S,G)表项的入接口相同,则说明(S,G)表项正确,丢弃这个来自错误路径的报文;
l 若检查结果表明RPF接口与现存(S,G)表项的入接口不符,则说明(S,G)表项已过时,将入接口修改为该报文实际到达的接口,然后向所有的出接口执行转发。
(3) 如果不存在对应的(S,G)表项,则也对该报文执行RPF检查。将RPF接口作为入接口,结合相关路由信息创建相应的表项,并下发到组播转发表中:
l 如果该报文实际到达的接口正是RPF接口,则RPF检查通过,向所有的出接口执行转发;
l 如果该报文实际到达的接口不是RPF接口,则RPF检查失败,丢弃该报文。
执行RPF检查的依据是单播路由。单播路由表中汇集了到达各个目的网段的最短路径。组播路由协议并不独立维护某种单播路由,而是依赖于网络中现有的单播路由信息创建组播路由表项。
在执行RPF检查时,路由器查找单播路由表的具体过程:以“报文源”的IP地址为目的地址查找单播路由表,自动选取一条最优单播路由。对应表项中的出接口为RPF接口,下一跳为RPF邻居。路由器认为来自RPF邻居且由该RPF接口收到的组播报文所经历的路径是从源S到本地的最短路径。
如图1-10所示,假设网络中单播路由畅通。组播报文沿从组播源(Source)到接收者(Receiver)的SPT进行传输。
图1-10 RPF检查过程
l SwitchC从接口Vlan-int 1收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24的出接口是Vlan-int 2,于是判断该报文实际到达的接口不是RPF接口。RPF检查失败,该组播报文被丢弃。
l Switch C从接口Vlan-int 2收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24的出接口正是该报文实际到达的接口。RPF检查通过,向所有的出接口转发该报文。
IGMP Snooping(Internet Group Management Protocol Snooping,IGMP侦听)是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播组。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图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转发表中。
表2-1 IGMP Snooping端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
IGMP通用查询报文或PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
IGMP成员关系报告报文 |
将该端口从组播组的转发表中删除 |
运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下:
IGMP查询器定期向本地网段内的所有主机与路由器发送IGMP通用查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP通用查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送IGMP成员关系报告报文:
l 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
l 如果主机要加入某个组播组,它会主动向组播路由器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
l 如果该端口已存在于组播组转发表中,则重置该端口的成员端口老化定时器;
l 如果该端口不在组播组转发表中,则在组播组转发表中为该端口增加转发表项,并启动该端口的成员端口老化定时器。
交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,原因如下:根据IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。
当从最后一个成员端口上收到IGMP离开组报文时,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该报文的接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口对应的转发表项从转发表中删除,而是重置该成员端口的老化定时器。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。
对于IGMP离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在该成员端口老化时间超时后,将转发表中该端口对应该组播组的转发表项删除。
交换机在启动了IGMP Snooping功能后,当收到某个组播组内的主机发出的IGMP离开报文时,会自动判断该组播组是否存在。如果该组播组不存在,则丢弃这个IGMP离开报文,不再转发。
配置任务 |
说明 |
详细配置 |
启动IGMP Snooping |
必选 |
|
配置IGMP-Snooping版本 |
可选 |
|
配置IGMP Snooping相关定时器 |
可选 |
|
配置端口从组播组中快速删除功能 |
可选 |
|
配置组播组过滤功能 |
可选 |
|
配置端口可以通过的组播组最大数量 |
可选 |
|
配置IGMP Snooping查询器 |
可选 |
|
配置IGMP Snooping禁止广播 |
可选 |
|
配置静态成员端口 |
可选 |
|
配置静态路由器端口 |
可选 |
|
配置IGMP Snooping模拟主机加入 |
可选 |
|
配置查询报文的VLAN Tag |
可选 |
|
配置组播VLAN |
可选 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局启动的IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,全局IGMP Snooping功能处于关闭状态 |
进入VLAN视图 |
vlan vlan-id |
- |
启动VLAN视图下的IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,所有VLAN的IGMP Snooping功能都处于关闭状态 |
l 在启动指定VLAN的IGMP Snooping前,应首先在系统视图下启动全局IGMP Snooping功能,否则将无法配置成功。
l 如果在某VLAN内同时启动了IGMP Snooping和VLAN VPN,有可能会造成IGMP查询报文不能够通过VLAN,可以通过配置查询报文的VLAN Tag解决,详细情况请参见“2.2.12 配置查询报文的VLAN Tag”。
随着组播应用的不断深入,IGMPv3协议应用的越来越多,它增加组播源过滤功能,使接收者不仅可以指定要加入的组播组,还能明确要求接收从某特定组播源发出的组播信息,路由器上的IGMPv3协议和PIM-SSM协议结合,可以使接受者直接加入到指定的组播源组,从而大大简化了组播路由协议,优化了组播数据流在网络中的拓扑。
表2-4 配置IGMP Snooping版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置VLAN的 IGMP-Snooping版本 |
igmp-snooping version version-number |
可选 缺省情况下,IGMP-Snooping版本为2 |
l 配置IGMP Snooping版本前,首先要在指定VLAN内启动IGMP Snooping。
l IGMPv3 Snooping的功能不能区分组播组相同而组播源不同的组播数据,只能点播组播组不同和组播源也不同的组播数据,所以规划网络时每个组播源的组播组地址不能相同。
本配置任务用来手工设置路由器端口老化定时器、组播组成员端口老化定时器。
表2-5 配置IGMP Snooping相关定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置路由器端口老化定时器 |
igmp-snooping router-aging-time seconds |
可选 缺省情况下,路由器端口老化时间为105秒 |
配置组播组成员端口老化定时器 |
igmp-snooping host-aging-time seconds |
可选 缺省情况下,组播组成员端口老化时间为260秒 |
当启动快速删除功能后,交换机从某端口收到离开某组播组的IGMP离开报文时,直接将端口从组播组中删除。当端口下只有一个用户时,快速删除可以节省带宽。
表2-6 在系统视图下配置端口从组播组中快速删除功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置端口从组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭 |
表2-7 在以太网端口视图下配置端口从组播组中快速删除功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口 |
interface interface-type interface-number |
- |
配置端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭 |
l 端口从组播组中快速删除功能只能在客户端支持IGMP V2或V3时生效。
l 当在系统视图下的配置时,如果没有指定VLAN,则交换机的所有端口都启动快速删除功能;如果指定了VLAN,则该VLAN内的所有端口都启动快速删除功能。
l 当在以太网端口视图下时,如果没有指定VLAN,则无论该端口属于哪个VLAN,该端口都启动快速删除功能;如果指定了VLAN,配置只对指定VLAN内的该端口有效。
l 当快速离开与未知组播报文丢弃功能同时开启的情况下,如果某个端口下有多个用户,一个用户的快速离开,可能会造成同一组播组中其它用户的组播业务中断。
在启动了IGMP Snooping的交换机上,通过配置组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,会发起一个IGMP报告报文,该报文到达交换机后,交换机检查接收端口上配置的组播过滤ACL,如果此端口可以加入这个组播组,则将这个端口加入到该组播组的转发端口列表中;否则交换机就丢弃该IGMP报告报文,这样数据流就不会送到该端口,从而控制用户点播组播。
配置此功能前,请确定ACL规则已经配置完毕。
表2-8 在系统视图下配置组播组过滤功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,组播过滤功能关闭 |
表2-9 在以太网端口视图下配置组播组过滤功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,组播过滤功能关闭 |
l 一个端口可属于多个VLAN,端口所属每个VLAN只能配置一个ACL规则。
l 在配置此命令时,如果用户没有配置ACL规则,则会过滤掉所有组播组。
l 由于绝大多数的设备采用广播方式处理未知组播报文,因此,为了确保组播数据流不会被当成未知组播送到被过滤的端口,该功能一般都和未知组播丢弃功能组合使用。
l 当在系统视图下的配置时,如果没有指定VLAN,则交换机的所有端口都启动组播过滤功能;如果指定了VLAN,则该VLAN内的所有端口都启动组播过滤功能。
l 当在以太网端口视图下配置时,如果没有指定VLAN,则在所有VLAN内都启动了组播过滤功能,且只对启动IGMP Snooping的VLAN生效;如果指定了VLAN,配置只对指定VLAN内的该端口有效。
在配置端口可以加入的组播组最大数量后,用户在点播组播组节目时,由于端口通过的组播组的数量受到限制,因此用户不能无限制的点播组播组。这样一来,端口带宽就得到了控制。
表2-10 配置端口可以通过的组播组最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置端口可以通过的组播组最大数量 |
igmp-snooping group-limit limit [ vlan vlan-list [ overflow-replace ] ] |
必选 缺省情况下,端口可以加入的组播组最大数量数为512 |
l 为了避免因组播组数量过多引起网络流量过大或导致设备的处理能力下降,可以限定交换机支持的最大组播组数量。
l 当组播组数量超过限定值时,交换机会根据组播组建立的先后顺序删除最先的建立的多余组播组,此时被删除的组播组内一些正被转发的组播流会被当成未知组播报文在本VLAN内广播,导致一段时间内非成员端口也会收到组播流。为了避免上述情况的发生,请打开未知组播报文丢弃功能。
在运行了IGMP协议的组播网络中,会有一个专职查询的组播路由器,负责发送IGMP查询报文。但是,由于二层组播交换机上不支持IGMP功能,因此没有办法实现查询器的功能。
用户可以通过配置IGMP Snooping查询器,使二层交换机主动发送IGMP查询报文,从而建立并维护组播转发表项。
用户可以配置的IGMP Snooping查询器功能包括:
l 开启IGMP Snooping查询器功能
l 配置IGMP查询报文的时间间隔
l 配置IGMP查询报文的源IP地址
表2-11 配置IGMP Snooping 查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动IGMP Snooping |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能处于关闭状态 |
进入VLAN视图 |
vlan vlan-id |
- |
启动IGMP Snooping |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能处于关闭状态 |
启动IGMP Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP Snooping查询器功能处于关闭状态 |
表2-12 配置IGMP查询报文的时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送通用查询报文的时间间隔 |
igmp-snooping query-interval seconds |
可选 缺省情况下,发送通用查询报文的时间间隔为60秒 |
表2-13 配置IGMP查询报文的源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送通用组查询报文时使用的源IP地址 |
igmp-snooping general-query source-ip { current-interface | ip-address } |
可选 缺省情况下,发送通用组查询报文时使用的源IP地址为0.0.0.0 |
配置发送特定组查询报文时使用的源IP地址 |
igmp-snooping special-query source-ip { current-interface | ip-address } |
可选 缺省情况下,发送特定组查询报文时使用的源IP地址为0.0.0.0 |
用户在VLAN内配置了IGMP Snooping功能后,当交换机收到发往未知组播组的报文时,数据报文会在VLAN内广播,这样会占用大量的网络带宽,影响转发效率。
此时用户可以在交换机上启动IGMP Snooping禁止广播功能,当交换机收到发往未知组播组的报文时,交换机将建立nonflooding表项,使数据报文只向交换机的路由器端口转发,不在VLAN内广播。如果交换机没有路由器端口,数据报文会被丢弃,不再转发。
IGMP Snooping禁止广播功能与未知组播报文丢弃功能的区别就在于:前者将未知的组播数据报文向路由器端口转发,而后者则会直接丢弃未知组播数据报文。
表2-14 配置IGMP Snooping禁止广播
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启IGMP Snooping禁止广播功能 |
igmp-snooping nonflooding-enable |
必选 缺省情况下,没有启动IGMP Snooping禁止广播功能 |
IGMP Snooping禁止广播功能与组播源端口抑制功能不能同时生效,如果开启IGMP Snooping禁止广播功能并且在某端口上启动了组播源端口抑制功能,则只有组播源端口抑制功能生效,而IGMP Snooping禁止广播功能不起作用,从该端口收到的组播数据将被丢弃。
如果某端口所连接的主机需要固定接收某个组播组的组播数据,可以配置该端口静态加入该组播组,成为静态成员端口。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置当前端口作为静态成员端口 |
multicast static-group group-address vlan vlan-id |
必选 缺省情况下,没有配置静态成员端口 |
表2-16 在VLAN接口视图下配置静态成员端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
配置指定端口作为静态成员端口 |
multicast static-group group-address interface interface-list |
必选 缺省情况下,没有配置静态成员端口 |
在拓扑稳定的网络中,可以将交换机上的路由器端口配置为静态路由器端口,交换机可以通过该端口接收路由器发来的IGMP报文。
表2-17 在以太网端口视图下配置静态路由器端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置当前端口作为静态路由器端口 |
multicast static-router-port vlan vlan-id |
必选 缺省情况下,没有配置静态路由器端口 |
表2-18 在VLAN视图下配置静态路由器端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置指定端口作为静态路由器端口 |
multicast static-router-port interface-type interface-number |
必选 缺省情况下没有配置静态路由器端口 |
通常情况下,运行IGMP的主机会对组播路由器的IGMP查询报文进行响应,如果由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组的成员,从而取消相应的路径。
为避免这种情况的发生,配置交换机VLAN下的某个端口为组播组成员,当该端口收到IGMP查询报文时,由组播交换机进行响应,从而保证VLAN下的该端口能够继续收到组播报文。
IGMP Snooping模拟主机加入功能实现原理如下:
l 在以太网端口上启动模拟主机加入功能时,交换机会主动从该端口发送一个IGMP成员关系报告报文,同时回环给自身一个相同的IGMP成员关系报告报文,通过这个回环报文建立相应的IGMP表项;
l 当启动了模拟主机加入功能后,如果再收到IGMP通用查询报文后,交换机同样会响应一个IGMP成员关系报告报文,同时回环给自身一个相同的IGMP成员关系报告报文,通过这个回环报文来保证IGMP表项不被老化掉;
l 在以太网端口上关闭模拟主机加入功能后,交换机也会发送一个IGMP离开组报文。
因此,为了使IGMP表项不被老化掉,必须保证端口能够周期性的收到IGMP通用查询报文。
表2-19 配置IGMP Snooping模拟主机加入功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置IGMP Snooping模拟主机加入功能 |
igmp host-join group-address [ source-ip source-address ] vlan vlan-id |
可选 缺省情况下,模拟主机加入功能处于关闭状态 |
l 配置IGMP Snooping模拟主机加入功能前,应该先在VLAN视图下启动IGMP Snooping功能;
l 当前端口必须属于指定VLAN,否则配置不会生效;
l 用户可以配置source-ip source-address来指定模拟主机要加入的组播源地址,只有VLAN内启动了IGMP V3 Snooping 时,该参数才有效。
可以通过配置IGMP Snooping转发/发送的通用查询报文和特定组查询报文所在的VLAN,实现在上行VLAN与下行VLAN不同的二层组播网络环境中的组播报文的跨VLAN转发。
表2-20 配置查询报文的VLAN Tag
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置查询报文的VLAN Tag |
igmp-snooping vlan-mapping vlan vlan-id |
必选 缺省情况下,不改变IGMP Snooping转发/发送的通用查询报文和特定组查询报文所在的VLAN |
该功能建议不要与组播VLAN功能同时使用。
基于以往的组播点播方式,当处于不同VLAN的用户点播同一个组播组时,数据在组播路由器上会为每个包含接收者的VLAN进行复制和转发。这样的组播点播方式,浪费了大量的带宽。
在启动了IGMP Snooping功能后,通过配置组播VLAN的方式,将交换机的端口加入到组播VLAN,使不同VLAN内的用户共用一个组播VLAN接收组播数据,组播流只在一个组播VLAN内进行传输,从而节省了带宽。而且由于组播VLAN与用户VLAN完全隔离,安全和带宽都得以保证。
组播VLAN主要应用于二层交换,但在三层交换机上也必须进行相应的配置。
组播VLAN配置过程如下:
表2-21 配置组播VLAN(三层交换机)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播VLAN,并进入VLAN视图 |
vlan vlan-id |
- |
退出至系统视图 |
quit |
- |
进入VLAN接口视图 |
interface Vlan-interface vlan-id |
- |
启动IGMP |
igmp enable |
必选 缺省情况下,IGMP 功能关闭 |
退出至系统视图 |
quit |
- |
进入与二层交换机相连的以太网端口视图 |
interface interface-type interface-number |
- |
将端口定义为Trunk端口或者Hybrid端口 |
port link-type { trunk | hybrid } |
必选 |
设置以太网允许通过的VLAN ID |
port hybrid vlan vlan-id-list { tagged | untagged } |
必选 VLAN中必须包括二层交换机上定义的组播VLAN的ID,并且如果端口类型为Hybrid,则必须设置该端口在转发组播VLAN内的报文时保留VLAN Tag |
port trunk permit vlan vlan-list |
表2-22 组播VLAN配置过程(二层交换机)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动IGMP Snooping |
igmp-snooping enable |
- |
进入VLAN视图 |
vlan vlan-id |
- |
启动IGMP Snooping |
igmp-snooping enable |
必选 |
启动组播VLAN功能 |
service-type multicast |
必选 |
退出至系统视图 |
quit |
- |
进入与三层交换机相连的以太网端口视图 |
interface interface-type interface-number |
- |
将端口定义为trunk端口或者Hybrid端口 |
port link-type { trunk | hybrid } |
必选 |
设置以太网允许通过的VLAN ID |
port hybrid vlan vlan-list { tagged | untagged } |
必选 VLAN中必须包括组播VLAN的ID,并且如果端口类型为Hybrid,则必须设置该端口在转发组播VLAN内的报文时保留VLAN Tag |
port trunk permit vlan vlan-list |
||
进入与用户相连的以太网端口视图 |
interface interface-type interface-number |
- |
定义端口的类型为Hybrid |
port link-type hybrid |
必选 |
设置以太网端口上允许通过的VLAN ID |
port hybrid vlan vlan-id-list { tagged | untagged } |
必选 VLAN中必须包括组播VLAN的ID,并且必须将组播VLAN设置为untagged |
l 一个端口只可以属于一个组播VLAN。
l 与用户终端相连的端口类型只能够为Hybrid。
l 组播成员端口必须与路由器端口属于同一个组播VLAN,否则无法接收到组播数据报文。
l 当路由器端口加入某个组播VLAN,该路由器端口必须配置成Trunk端口或者是允许组播VLAN报文带Tag发送的Hybrid端口,否则在此组播VLAN内的所有的组播成员端口都无法接收到组播数据报文。
l 组播VLAN功能不能与vlan-mapping功能同时使用。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IGMP Snooping统计信息。
表2-23 IGMP Snooping的显示和维护
命令 |
说明 |
|
显示当前IGMP Snooping的配置信息 |
display igmp-snooping configuration |
display命令可以在任意视图下执行 |
显示IGMP Snooping对收发包的统计信息 |
display igmp-snooping statistics |
|
显示VLAN下的IP组播组和MAC组播组信息 |
display igmp-snooping group [ vlan vlan-id ] |
|
清除IGMP Snooping统计信息 |
reset igmp-snooping statistics |
reset命令可以在用户视图下执行 |
为了使组播数据不在二层被广播,需要在交换机上启动IGMP Snooping。
l 如图2-3所示,Router A通过Ethernet1/0/2接口连接组播源(Source),通过Ethernet1/0/1接口连接Switch A。
l 在Router A上运行PIM DM和IGMP,在Switch A上运行IGMP Snooping,并由Router A充当IGMP查询器。
l 组播源(Source)发送组播数据的地址为224.1.1.1;接收者Host A和Host B加入到组播组224.1.1.1。
(1) 配置各设备接口的IP地址
请按照图2-3配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 启动组播路由,在各接口上启动PIM-DM,并在接口Ethernet1/0/1上启动IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface Ethernet1/0/1
[RouterA-Ethernet1/0/1] igmp enable
[RouterA-Ethernet1/0/1] pim dm
[RouterA-Ethernet1/0/1] quit
[RouterA] interface Ethernet1/0/2
[RouterA-Ethernet1/0/2] pim dm
[RouterA-Ethernet1/0/2] quit
(3) 配置Switch A
# 全局启动IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping enable
Enable IGMP-Snooping ok.
# 创建VLAN 100,把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中,并在该VLAN内启动IGMP Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port Ethernet1/0/1 to Ethernet1/0/4
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
(4) 检验配置效果
# 查看Switch A上VLAN 100内的组播组详细信息。
<SwitchA> display igmp-snooping group vlan 100
Total 1 IP Group(s).
Total 1 MAC Group(s).
Vlan(id):100.
Total 1 IP Group(s).
Total 1 MAC Group(s).
Static Router port(s):
Dynamic Router port(s):
Ethernet1/0/1
IP group(s):the following ip group(s) match to one mac group.
IP group address: 224.1.1.1
Static host port(s):
Dynamic host port(s):
Ethernet1/0/3 Ethernet1/0/4
MAC group(s):
MAC group address: 0100-5e01-0101
Host port(s):Ethernet1/0/3 Ethernet1/0/4
以上显示信息表明,SwitchA上已经建立起以动态路由器端口为Ethernet1/0/1和动态主机成员端口为Ethernet1/0/3和Ethernet1/0/4的组播组224.1.1.1,说明HostA和HostB已经成功加入到组播组224.1.1.1。
组播源为Workstation,Switch A转发组播源发出的组播数据流。组播数据流通过二层交换机Switch B被转发到最终用户HostA、HostB。
具体的设备编号如下:
设备 |
描述 |
说明 |
Switch A |
三层交换机 |
VLAN 20接口的IP地址为168.10.1.1,Ethernet1/0/1属于VLAN 20,Ethernet1/0/1和Work Station相连 VLAN 10接口的IP地址为168.10.2.1,Ethernet1/0/10属于VLAN 10,Ethernet1/0/10和Switch B相连 |
Switch B |
二层交换机 |
VLAN 2包含端口Ethernet1/0/1,VLAN 3包括端口Ethernet1/0/2,两个端口分别与HostA、HostB相连。 VLAN 10包含端口Ethernet1/0/10 、Ethernet1/0/1和Ethernet1/0/2,并且端口Ethernet1/0/10与SwitchA相连 VLAN 10为组播VLAN |
HostA |
用户1 |
与Switch B的Ethernet1/0/1端口相连 |
HostB |
用户2 |
与Switch B的Ethernet1/0/2端口相连 |
在该配置举例中,将SwitchA和SwitchB之间相连的端口配置为hybrid端口,配置过程如下面配置过程所示。用户也可以将SwitchA和SwitchB之间相连的端口配置为trunk端口,配置过程略,可参考2.2.13 配置组播VLAN。
配置组播VLAN,使VLAN 2和VLAN 3内的用户通过组播VLAN接收组播流。
图2-4 组播VLAN组网示意图
以下配置基于IP地址已配置,并正确连接设备的前提下进行配置操作。
(1) Switch A上的配置
# 配置VLAN 20接口的IP地址为168.10.1.1,并启动PIM DM协议。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] vlan 20
[SwitchA–vlan20]port Ethernet1/0/1
[SwitchA-vlan20] quit
[SwitchA] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ip address 168.10.1.1 255.255.255.0
[SwitchA-Vlan-interface20] pim dm
[SwitchA-Vlan-interface20] quit
# 创建VLAN 10。
[SwitchA] vlan 10
[SwitchA-vlan10] quit
# 将Ethernet1/0/10定义为Hybrid端口,并将该端口加入到VLAN 10中,端口发送VLAN 10的报文时带VLAN标签。
[SwitchA] interface Ethernet1/0/10
[SwitchA-Ethernet1/0/10] port link-type hybrid
[SwitchA-Ethernet1/0/10] port hybrid vlan 10 tagged
[SwitchA-Ethernet1/0/10] quit
# 配置VLAN 10接口的IP地址为168.10.2.1,并启动PIM DM和IGMP。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] ip address 168.10.2.1 255.255.255.0
[SwitchA-Vlan-interface10] igmp enable
[SwitchA-Vlan-interface10] pim dm
(2) Switch B上的配置
# 启动设备IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping enable
# 创建VLAN2,3,10,并将VLAN 10配置为组播VLAN,启动IGMP Snooping。
[SwitchB] vlan 2 to 3
Please wait.... Done.
[SwitchB] vlan 10
[SwitchB-vlan10] service-type multicast
[SwitchB-vlan10] igmp-snooping enable
[SwitchB-vlan10] quit
# 将Ethernet1/0/10定义为Hybrid端口,并将该端口加入到VLAN 2、3、10中,端口发送VLAN 2、VLAN 3和VLAN 10的报文时带VLAN标签。
[SwitchB] interface Ethernet1/0/10
[SwitchB-Ethernet1/0/10] port link-type hybrid
[SwitchB-Ethernet1/0/10] port hybrid vlan 2 3 10 tagged
[SwitchB-Ethernet1/0/10] quit
# 将Ethernet1/0/1定义为Hybrid端口,并将该端口加入到VLAN 2、VLAN 10中,端口发送VLAN 2和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 2。
[SwitchB] interface Ethernet1/0/1
[SwitchB-Ethernet1/0/1] port link-type hybrid
[SwitchB-Ethernet1/0/1] port hybrid vlan 2 10 untagged
[SwitchB-Ethernet1/0/1] port hybrid pvid vlan 2
[SwitchB-Ethernet1/0/1] quit
# Ethernet1/0/2定义为Hybrid端口,并将该端口加入到VLAN 3、VLAN 10中,端口发送VLAN 3和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 3。
[SwitchB] interface Ethernet1/0/2
[SwitchB-Ethernet1/0/2] port link-type hybrid
[SwitchB-Ethernet1/0/2] port hybrid vlan 3 10 untagged
[SwitchB-Ethernet1/0/2] port hybrid pvid vlan 3
[SwitchB-Ethernet1/0/2] quit
故障现象:交换机不能实现组播功能。
故障排除:
(1) IGMP Snooping没有启动。
l 输入命令display current-configuration查看IGMP Snooping的状态。
l 如果IGMP Snooping没有启动,则需查看是全局下是否没有启动IGMP Snooping,还是在对应的VLAN下没有启动IGMP Snooping。如果是前者则需在系统视图下输入命令igmp-snooping enable全局启动IGMP Snooping。同时在VLAN视图下输入命令igmp-snooping enable以启动对应的VLAN下IGMP Snooping。如果是后者,则只需在VLAN视图下输入命令igmp-snooping enable以启动对应的VLAN下IGMP Snooping。
(2) IGMP Snooping建立的组播转发表不正确。
l 输入命令display igmp-snooping group查看组播组是否是所预期的。
l 如果IGMP Snooping建立的组播组不正确,请向专业维护人员求助。
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前后的对比
MLD Snooping通过二层组播将信息只转发给有需要的接收者,可以带来以下好处:
l 减少了二层网络中的广播报文,节约了网络带宽;
l 增强了IPv6组播信息的安全性;
l 为实现对每台主机的单独计费带来了方便。
如图3-2所示,Router A连接组播源,在Switch A和Switch B上分别运行MLD Snooping,Host A和Host C为接收者主机(即IPv6组播组成员)。
结合图3-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 如不特别指明,本文中提到的路由器/成员端口均包括动态和静态端口。
l 在运行了MLD Snooping的交换机上,所有收到源地址不为0::0的MLD普遍组查询报文的端口都将被视为动态路由器端口
表3-1 MLD Snooping动态端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
动态路由器端口老化定时器 |
交换机为其每个动态路由器端口都启动一个定时器,其超时时间就是动态路由器端口老化时间 |
源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文 |
将该端口从路由器端口列表中删除 |
动态成员端口老化定时器 |
当一个端口动态加入某IPv6组播组时,交换机为该端口启动一个定时器,其超时时间就是动态成员端口老化时间 |
MLD成员关系报告报文 |
将该端口从MLD Snooping转发表中删除 |
MLD Snooping端口老化机制只针对动态端口,静态端口永不老化。
运行了MLD Snooping的交换机对不同MLD动作的具体处理方式如下:
MLD查询器定期向本地网段内的所有主机与路由器(FF02::1)发送MLD普遍组查询报文,以查询该网段有哪些IPv6组播组的成员。
在收到MLD普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果在路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
l 如果在路由器端口列表中尚未包含该动态路由器端口,则将其添加到路由器端口列表中,并启动其老化定时器。
以下情况,主机会向MLD查询器发送MLD成员关系报告报文:
l 当IPv6组播组的成员主机收到MLD查询报文后,会回复MLD成员关系报告报文。
l 如果主机要加入某个IPv6组播组,它会主动向MLD查询器发送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报告报文和离开报文的数量,可以通过在边缘设备上配置MLD Snooping Proxying(MLD Snooping代理)功能,使其能够代理下游主机来向上游设备发送报告报文和离开报文。配置了MLD Snooping Proxying功能的设备称为MLD Snooping代理设备,在其上游设备看来,它就相当于一台主机。
尽管在其上游设备看来,MLD Snooping代理设备相当于一台主机,但主机上的MLD成员关系报告抑制机制在MLD Snooping代理设备上并不会生效。
如图3-3所示,作为MLD Snooping代理设备的Switch A,对其上游的MLD查询器Router A来说相当于一台主机,代理下游主机向Router A发送报告报文和离开报文。
MLD Snooping代理设备对MLD报文的处理方式如表3-2所示。
表3-2 MLD Snooping代理设备对MLD报文的处理方式
MLD报文类型 |
处理方式 |
普遍组查询报文 |
收到普遍组查询报文后,向本VLAN内除接收端口以外的所有端口转发;同时根据本地维护的组成员关系生成报告报文,并向所有路由器端口发送 |
特定组查询报文 |
收到针对某IPv6组播组的特定组查询报文时,若该组对应的转发表项中还有成员端口,则向所有路由器端口回复该组的报告报文 |
报告报文 |
从某端口收到某IPv6组播组的报告报文时,若已存在该组对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器;若已存在该组对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;若尚不存在该组对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器,然后向所有路由器端口发送该组的报告报文 |
离开报文 |
从某端口收到某IPv6组播组的离开报文后,向该端口发送针对该组的特定组查询报文。只有当删除某IPv6组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文 |
与MLD Snooping相关的协议规范有:
l RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
表3-3 MLD Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MLD Snooping基本功能 |
使能MLD Snooping |
必选 |
|
配置MLD Snooping版本 |
可选 |
||
配置全局MLD Snooping转发表项的最大数量 |
可选 |
||
配置MLD Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
|
配置静态端口 |
可选 |
||
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置MLD Snooping查询器 |
使能MLD Snooping查询器 |
可选 |
|
配置MLD查询和响应 |
可选 |
||
配置MLD查询报文源IPv6地址 |
可选 |
||
配置MLD Snooping Proxying |
使能MLD Snooping Proxying |
可选 |
|
配置代理发送MLD报文的源IPv6地址 |
可选 |
||
配置MLD Snooping策略 |
配置丢弃未知IPv6组播数据报文 |
可选 |
|
配置MLD成员关系报告报文抑制 |
可选 |
||
配置端口加入的IPv6组播组最大数量 |
可选 |
||
配置IPv6组播组替换 |
可选 |
||
配置MLD报文的802.1p优先级 |
可选 |
对于MLD Snooping的相关配置来说:
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的端口上生效。
配置MLD Snooping的版本,实际上就是配置MLD Snooping可以处理的MLD报文的版本:
l 当MLD Snooping的版本为1时,MLD Snooping能够对MLDv1的报文进行处理,对MLDv2的报文则不进行处理,而是在VLAN内将其广播;
l 当MLD Snooping的版本为2时,MLD Snooping能够对MLDv1和MLDv2的报文进行处理。
操作 |
命令 |
说明 |
进入系统视图 |
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转发表项的最大数量,当设备上维护的表项数量达到最大数量后,将不再创建新的表项,直至有表项被老化或被手工删除。
表3-6 配置全局MLD Snooping转发表项的最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置全局MLD Snooping转发表项的最大数量 |
entry-limit limit |
必选 缺省情况下,全局MLD Snooping转发表项的最大数量为512 |
在对全局MLD Snooping转发表项的最大数量进行配置时,如果设备上维护的表项数量已超过了配置值,系统将提示用户删除多余表项,但并不会自动删除任何已存在的表项,同时也不再继续创建新的表项。
在配置MLD Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping端口功能之前,需准备以下数据:
l 动态路由器端口老化时间
l 动态成员端口老化时间
l IPv6组播组和IPv6组播源的地址
对于动态路由器端口,如果在其老化时间超时前没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
对于动态成员端口,如果在其老化时间超时前没有收到该IPv6组播组的MLD成员关系报告报文,交换机将把该端口从该IPv6组播组所对应转发表的出端口列表中删除。
如果IPv6组播组成员的变动比较频繁,可以把动态成员端口老化时间设置小一些,反之亦然。
表3-7 全局配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置动态路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,动态路由器端口的老化时间为260秒 |
配置动态成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,动态成员端口的老化时间为260秒 |
表3-8 在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-9 配置静态端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置静态成员端口 |
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组播组或组播源组时,端口也不会主动发送MLD成员关系报告报文或MLD离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过相应的undo命令删除。
通常情况下,运行MLD的主机会对MLD查询器发出的查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该IPv6组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的端口配置成为IPv6组播组成员(即配置模拟主机加入)。当收到MLD查询报文时由模拟主机进行响应,从而保证该交换机能够继续收到IPv6组播报文。
模拟主机加入功能的实现原理如下:
l 在某端口上使能模拟主机加入功能时,交换机会通过该端口主动发送一个MLD成员关系报告报文;
l 在某端口上使能了模拟主机加入功能后,当收到MLD普遍组查询报文时,交换机会通过该端口响应一个MLD成员关系报告报文;
l 在某端口上关闭模拟主机加入功能时,交换机会通过该端口发送一个MLD离开组报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图
|
interface interface-type interface-number |
- |
配置模拟主机加入IPv6组播组或组播源组 |
mld-snooping host-join ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id |
必选 缺省情况下,没有配置模拟主机加入IPv6组播组或组播源组 |
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到MLD查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 与静态成员端口不同,配置了模拟主机加入的端口会作为动态成员端口而参与动态成员端口的老化过程。
端口快速离开是指当交换机从某端口收到主机发送的离开某IPv6组播组的MLD离开组报文时,直接把该端口从对应转发表项的出端口列表中删除。此后,当交换机收到对该IPv6组播组的MLD特定组查询报文时,交换机将不再向该端口转发。
在交换机上,在只连接有一个接收者的端口上,可以通过使能端口快速离开功能来节约带宽和资源;而在连接有多个接收者的端口上,如果交换机或该端口所在的VLAN已使能了丢弃未知IPv6组播数据报文功能,则不要再使能端口快速离开功能,否则,一个接收者的离开将导致该端口下属于同一IPv6组播组的其它接收者无法收到IPv6组播数据。
表3-11 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能端口快速离开功能 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表3-12 在端口上配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
使能端口快速离开功能 |
mld-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
在配置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-13 使能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-14 全局配置MLD查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
last-listener-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
表3-15 在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-16 配置MLD查询报文源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD普遍组查询报文源IPv6地址 |
mld-snooping general-query source-ip { ipv6-address | current-interface } |
可选 缺省情况下,MLD普遍组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
配置MLD特定组查询报文源IPv6地址 |
mld-snooping special-query source-ip { ipv6-address | current-interface } |
可选 缺省情况下,MLD特定组查询报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选举。
在配置MLD Snooping Proxying之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping Proxying之前,需准备以下数据:
l 代理发送MLD报告报文的源IPv6地址
l 代理发送MLD离开报文的源IPv6地址
当在有组播需求的VLAN内使能了MLD Snooping代理功能后,该设备就成为该VLAN内的MLD Snooping代理设备。
表3-17 使能MLD Snooping Proxying
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能MLD Snooping代理功能 |
mld-snooping proxying enable |
必选 缺省情况下,VLAN内的MLD Snooping代理功能处于关闭状态 |
通过本配置可以改变代理发送的MLD报告报文和离开报文的源IPv6地址。
表3-18 配置代理发送MLD报文的源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置代理发送MLD报告报文的源IPv6地址 |
mld-snooping report source-ip { ipv6-address | current-interface } |
必选 缺省情况下,代理发送MLD报告报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
配置代理发送MLD离开报文的源IPv6地址 |
mld-snooping done source-ip { ipv6-address | current-interface } |
缺省情况下,代理发送MLD离开报文的源IPv6地址为FE80::02FF:FFFF:FE00:0001 |
在配置MLD Snooping策略之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping策略之前,需准备以下数据:
l 允许端口通过的IPv6组播组最大数量
l MLD报文的802.1p优先级
未知IPv6组播数据报文是指在MLD Snooping转发表中不存在对应转发表项的那些IPv6组播数据报文:
l 当使能了丢弃未知IPv6组播数据报文功能时,交换机将丢弃所有收到的未知IPv6组播数据报文;
l 当关闭了丢弃未知IPv6组播数据报文功能时,交换机将在未知IPv6组播数据报文所属的VLAN内广播该报文。
表3-19 全局配置丢弃未知IPv6组播数据报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能丢弃未知IPv6组播数据报文功能 |
drop-unknown |
必选 缺省情况下,丢弃未知IPv6组播数据报文的功能处于关闭状态,即对未知IPv6组播数据报文进行广播 |
当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某IPv6组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。
当使能了MLD成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它MLD成员关系报告报文,这样可以减少网络中的报文数量。
表3-20 配置MLD成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能MLD成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,MLD成员关系报告报文抑制功能处于使能状态 |
在MLD Snooping代理设备上,不论是否使能了MLD成员关系报告报文抑制功能,只要存在某IPv6组播组对应的转发表项,就会将从下游收到的针对该组的报告报文都抑制掉。
通过配置允许端口加入的IPv6组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
表3-21 配置端口加入的IPv6组播组最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置允许端口加入的IPv6组播组最大数量 |
mld-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,允许端口加入的IPv6组播组最大数量为512 |
在对允许端口加入的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 |
- |
使能IPv6组播组替换功能 |
mld-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
在使能IPv6组播组替换功能之前,必须首先配置端口通过的IPv6组播组的最大数量(具体配置过程请参见“3.7.4 配置端口加入的IPv6组播组最大数量”),否则IPv6组播组替换功能将不能生效。
可以通过本配置来改变MLD报文的802.1p优先级。当交换机的出端口发生拥塞时,交换机通过识别报文的802.1p优先级,优先发送优先级较高的报文。
表3-24 全局配置MLD报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD报文的802.1p优先级 |
dot1p-priority priority-number |
必选 缺省情况下,MLD报文的802.1p优先级为0 |
表3-25 在VLAN内配置MLD报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD报文的802.1p优先级 |
mld-snooping dot1p-priority priority-number |
必选 缺省情况下,MLD报文的802.1p优先级为0 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IPv6组播组信息。
表3-26 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 |
l reset mld-snooping group命令只对使能了MLD Snooping的VLAN有效。
l 通过reset mld-snooping group命令不能够清除以静态方式加入的MLD Snooping组播组的信息。
l 如图3-4所示,Router A通过Ethernet1/0/2接口连接IPv6组播源(Source),通过Ethernet1/0/1接口连接Switch A;
l Router A上运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器;
l 通过配置,使Host A和Host B即使由于某种意外而临时中断接收IPv6组播数据时,发往IPv6组播组FF1E::101的IPv6组播数据也能够不间断地通过Switch A的端口Ethernet1/0/3和Ethernet1/0/4转发出去。
图3-4 IPv6组策略及模拟主机加入配置组网图
(1) 使能IPv6转发功能,并配置IPv6地址
使能各设备的IPv6转发功能,并按照图3-4配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口Ethernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface ethernet 1/0/1
[RouterA-Ethernet1/0/1] mld enable
[RouterA-Ethernet1/0/1] pim ipv6 dm
[RouterA-Ethernet1/0/1] quit
[RouterA] interface ethernet 1/0/2
[RouterA-Ethernet1/0/2] pim ipv6 dm
[RouterA-Ethernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中;在该VLAN内使能MLD Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 在Ethernet1/0/3和Ethernet1/0/4上分别配置模拟主机加入IPv6组播组FF1E::101。
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-Ethernet1/0/3] quit
[SwitchA] interface ethernet 1/0/4
[SwitchA-Ethernet1/0/4] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-Ethernet1/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, 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.
Eth1/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.
Eth1/0/3 (D) ( 00:03:23 )
Eth1/0/4 (D) ( 00:04:10 )
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 2 port.
Eth1/0/3
Eth1/0/4
由此可见,Switch A上的端口Ethernet1/0/3和Ethernet1/0/4已经加入了IPv6组播组FF1E::101。
l 如图3-5所示,Router A通过Ethernet1/0/2接口连接IPv6组播源(Source),通过Ethernet1/0/1接口连接Switch A;
l Router A上运行MLDv1,Switch A、Switch B和Switch C上运行版本1的MLD Snooping,并由Router A充当MLD查询器;
l Host A和Host C均为IPv6组播组FF1E::101的固定接收者(Receiver),通过将Switch C上的端口Ethernet1/0/3和Ethernet1/0/5配置为IPv6组播组FF1E::101的静态成员端口,可以增强IPv6组播数据在传输过程中的可靠性;
l 假设由于受STP等链路层协议的影响,为了避免出现环路,Switch A—Switch C的转发路径在正常情况下是阻断的,IPv6组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者;
l 要求通过将Switch A上连接Switch C的端口Ethernet1/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组播数据的传输在这个过程中将中断。
有关STP(Spanning Tree Protocol,生成树协议)的详细介绍,请参见“MSTP操作”。
(1) 使能IPv6转发功能,并配置IPv6地址
使能各设备的IPv6转发功能,并按照图3-5配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口Ethernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface ethernet 1/0/1
[RouterA-Ethernet1/0/1] mld enable
[RouterA-Ethernet1/0/1] pim ipv6 dm
[RouterA-Ethernet1/0/1] quit
[RouterA] interface ethernet 1/0/2
[RouterA-Ethernet1/0/2] pim ipv6 dm
[RouterA-Ethernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 把Ethernet1/0/3配置为静态路由器端口。
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mld-snooping static-router-port vlan 100
[SwitchA-Ethernet1/0/3] quit
(4) 配置Switch B
# 全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,把端口Ethernet1/0/1和Ethernet1/0/2添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port ethernet 1/0/1 ethernet 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,把端口Ethernet1/0/1到Ethernet1/0/5添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port ethernet 1/0/1 to ethernet 1/0/5
[SwitchC-vlan100] mld-snooping enable
[SwitchC-vlan100] quit
# 分别在端口Ethernet1/0/3和Ethernet1/0/5上配置静态加入IPv6组播组FF1E::101。
[SwitchC] interface Ethernet 1/0/3
[SwitchC-Ethernet1/0/3] mld-snooping static-group ff1e::101 vlan 100
[SwitchC-Ethernet1/0/3] quit
[SwitchC] interface Ethernet 1/0/5
[SwitchC-Ethernet1/0/5] mld-snooping static-group ff1e::101 vlan 100
[SwitchC-Ethernet1/0/5] 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, 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.
Eth1/0/1 (D) ( 00:01:30 )
Eth1/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.
Eth1/0/2 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 1 port.
Eth1/0/2
由此可见,Switch A上的端口Ethernet1/0/3已经成为了静态路由器端口。
# 查看Switch C上VLAN 100内MLD Snooping组播组的详细信息。
[SwitchC] 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, 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.
Eth1/0/2 (D) ( 00:01:23 )
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.
Eth1/0/3 (S)
Eth1/0/5 (S)
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 2 port.
Eth1/0/3
Eth1/0/5
由此可见,Switch C上的端口Ethernet1/0/3和Ethernet1/0/5已经成为了IPv6组播组FF1E::101的静态成员端口。
l 如图3-6所示,在一个没有三层设备的纯二层网络环境中,IPv6组播源Source 1和Source 2分别向IPv6组播组FF1E::101和FF1E::102发送IPv6组播数据,Host A和Host C是IPv6组播组FF1E::101的接收者(Receiver),Host B和Host D则是IPv6组播组FF1E::102的接收者;
l 所有接收者均使用MLDv1,所有交换机上都运行版本1的MLD Snooping,并选择距IPv6组播源较近的Switch A来充当MLD Snooping查询器;
l 为了防止交换机在没有二层IPv6组播转发表项时将IPv6组播数据在VLAN内广播,要求在所有交换机上都使能丢弃未知IPv6组播数据报文的功能。
图3-6 MLD Snooping查询器配置组网图
(1) 配置Switch A
# 使能IPv6转发功能,并全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,并把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中。
[SwitchA] vlan 100
[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/3
# 全局使能丢弃未知IPv6组播数据报文功能。
[SwitchA-vlan100] mld-snooping
[SwitchA-mld-snooping] drop-unknown
# 在VLAN 100内使能MLD Snooping查询器。
[SwitchA-vlan100] mld-snooping querier
[SwitchA-vlan100] quit
(2) 配置Switch B
# 使能IPv6转发功能,并全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] ipv6
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,并把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中。
[SwitchB] vlan 100
[SwitchB-vlan100] port ethernet 1/0/1 to ethernet 1/0/4
# 全局使能丢弃未知IPv6组播数据报文功能。
[SwitchB-vlan100] mld-snooping
[SwitchB-mld-snooping] drop-unknown
Switch C和Switch D的配置与Switch B相似,配置过程略。
(3) 检验配置效果
当MLD Snooping查询器开始工作之后,除查询器以外的所有交换机都能收到MLD普遍组查询报文。通过使用display mld-snooping statistics命令可以查看MLD报文的统计信息,例如:
# 查看Switch B上收到的MLD报文的统计信息。
[SwitchB] display mld-snooping statistics
Received MLD general queries:3.
Received MLDv1 specific queries:0.
Received MLDv1 reports:12.
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.
l 如图3-7所示,Router A通过Ethernet1/0/2接口连接IPv6组播源(Source),通过Ethernet1/0/1接口连接Switch A;
l Router A上运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器;
l 通过配置,使Switch A能够代理下游主机向Router A发送的MLD报告报文和离开报文,以及响应Router A发来的MLD查询报文并向下游主机转发。
图3-7 MLD Snooping Proxying配置组网图
(1) 配置IPv6地址
使能各设备的IPv6转发功能,并按照图3-7配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在接口Ethernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface ethernet 1/0/1
[RouterA-Ethernet1/0/1] mld enable
[RouterA-Ethernet1/0/1] pim ipv6 dm
[RouterA-Ethernet1/0/1] quit
[RouterA] interface ethernet 1/0/2
[RouterA-Ethernet1/0/2] pim ipv6 dm
[RouterA-Ethernet1/0/2] quit
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口Ethernet1/0/1到Ethernet1/0/4添加到该VLAN中;在该VLAN内使能MLD Snooping,并使能MLD Snooping Proxying。
[SwitchA] vlan 100
[SwitchA-vlan100] port ethernet 1/0/1 to ethernet 1/0/4
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] mld-snooping proxying enable
[SwitchA-vlan100] quit
(4) 检验配置效果
当配置完成后,Host A和Host B分别发送组地址为FF1E::101的MLD加入报文,Switch A收到该报文后通过其路由器端口Ethernet1/0/1向Router A也发送该组的加入报文。通过使用display mld-snooping group和display mld group命令可以分别查看MLD Snooping组播组和MLD组播组的信息,例如:
# 查看Switch A上MLD Snooping组播组的信息。
[SwitchA] display mld-snooping group
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static 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.
Eth1/0/1 (D) ( 00:01:23 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::101
(::, FF1E::101):
Host port(s):total 2 port.
Eth1/0/3 (D)
Eth1/0/4 (D)
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 2 port.
Eth1/0/3
Eth1/0/4
# 查看Router A上MLD组播组的信息。
[RouterA] display mld group
Total 1 MLD Group(s).
Interface group report information
Ethernet1/0/1(2001::1):
Total 1 MLD Group reported
Group Address: FF1E::1
Last Reporter: FE80::2FF:FFFF:FE00:1
Uptime: 00:00:03
Expires: 00:04:17
当Host A离开IPv6组播组FF1E::101时,向Switch A发送该组的MLD离开报文,但由于Host B仍未离开该组,因此Switch A并不会删除该组,也不会向Router A发送该组的离开报文,只是在该组对应转发表项的成员端口列表中将端口Ethernet1/0/3删除。通过使用display mld-snooping group命令可以查看MLD Snooping组播组的信息,例如:
# 查看Switch A上MLD Snooping组播组的信息。
[SwitchA] display mld-snooping group
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static 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.
Eth1/0/1 (D) ( 00:01:23 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::101
(::, FF1E::101):
Host port(s):total 1 port.
Eth1/0/4 (D)
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 1 port.
Eth1/0/4
交换机不能实现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。
如图4-1所示,在传统的IPv6组播点播方式下,当属于不同VLAN的主机Host A、Host B和Host C同时点播同一IPv6组播组时,三层设备(Router A)需要把IPv6组播数据在每个用户VLAN(即主机所属的VLAN)内都复制一份发送给二层设备(Switch A)。这样既造成了带宽的浪费,也给三层设备增加了额外的负担。
图4-1 未运行IPv6组播VLAN时的IPv6组播数据传输
可以使用IPv6组播VLAN功能解决这个问题。在二层设备上配置了IPv6组播VLAN后,三层设备只需把IPv6组播数据在IPv6组播VLAN内复制一份发送给二层设备,而不必在每个用户VLAN内都复制一份,从而节省了网络带宽,也减轻了三层设备的负担。
IPv6组播VLAN实现和配置方式如下:
如图4-2所示,接收者主机Host A、Host B和Host C分属不同的用户VLAN,Switch A上的所有用户端口(即连接主机的端口)均为Hybrid类型。在Switch A上配置VLAN 10为IPv6组播VLAN,将所有用户端口都添加到该IPv6组播VLAN内,并在IPv6组播VLAN和所有用户VLAN内都使能MLD Snooping。
图4-2 IPv6组播VLAN示意图
配置完成后,当Switch A上的用户端口收到来自主机的MLD报文时,会为其打上IPv6组播VLAN的Tag并上送给MLD查询器,于是MLD Snooping就可以在IPv6组播VLAN中对路由器端口和成员端口进行统一的维护。这样,Router A只需把IPv6组播数据在IPv6组播VLAN内复制一份发送给Switch A即可,Switch A会将其分发给该IPv6组播VLAN内的所有成员端口。
l 有关MLD Snooping的相关配置,以及路由器端口和成员端口的详细介绍,请参见“MLD Snooping配置”。
l 有关VLAN Tag的详细介绍,请参见 “VLAN操作”。
表4-1 IPv6组播VLAN配置任务简介
配置任务 |
说明 |
详细配置 |
配置用户端口属性 |
必选 |
|
配置IPv6组播VLAN端口 |
必选 |
在配置基于端口的IPv6组播VLAN时,需要先配置各用户端口的属性,然后再将配置好的用户端口添加到IPv6组播VLAN内。
只允许将以太网端口类型的用户端口配置为IPv6组播VLAN的端口。
在配置基于端口的IPv6组播VLAN之前,需完成以下任务:
l 创建相应的VLAN
l 在欲配置为IPv6组播VLAN的VLAN内使能MLD Snooping
l 在所有的用户VLAN内都内使能MLD Snooping
配置用户端口为Hybrid类型,允许用户VLAN的报文通过,缺省VLAN为其所属的用户VLAN。
配置用户端口允许IPv6组播VLAN的报文通过,且不携带Tag。这样,当二层设备通过IPv6组播VLAN收到来自上游、打有IPv6组播VLAN Tag的IPv6组播数据报文时,会将其Tag去掉后再向下游转发。
表4-2 配置用户端口属性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置用户端口的链路类型为Hybrid类型 |
port link-type hybrid |
必选 缺省情况下,端口的链路类型为Access类型 |
配置用户端口的缺省VLAN为其所属的用户VLAN |
port hybrid pvid vlan vlan-id |
必选 缺省情况下,Hybrid端口的缺省VLAN为VLAN 1 |
允许IPv6组播VLAN通过用户端口,且不携带Tag |
port hybrid vlan vlan-id-list untagged |
必选 缺省情况下,Hybrid端口只允许VLAN 1通过 |
有关port link-type、port hybrid pvid vlan和port hybrid vlan命令的详细介绍,请参见“VLAN命令”。
首先需要把某个VLAN配置为IPv6组播VLAN,再将用户端口添加到该IPv6组播VLAN内——既可以在IPv6组播VLAN内添加端口,也可以在端口上指定其所属的IPv6组播VLAN——这两种配置方式是等效的。
表4-3 在IPv6组播VLAN内配置IPv6组播VLAN端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置指定VLAN为IPv6组播VLAN,并进入IPv6组播VLAN视图 |
multicast-vlan ipv6 vlan-id |
必选 缺省情况下,VLAN不是IPv6组播VLAN |
向IPv6组播VLAN内添加端口 |
port interface-list |
必选 缺省情况下,IPv6组播VLAN内没有端口 |
表4-4 在端口上配置IPv6组播VLAN端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置指定VLAN为IPv6组播VLAN,并进入IPv6组播VLAN视图 |
multicast-vlan ipv6 vlan-id |
必选 缺省情况下,VLAN不是IPv6组播VLAN |
退回系统视图 |
quit |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
指定端口所属的IPv6组播VLAN |
port multicast-vlan ipv6 vlan-id |
必选 缺省情况下,端口不属于任何IPv6组播VLAN |
l 要配置为IPv6组播VLAN的指定VLAN必须存在。
l 一个端口只能属于一个IPv6组播VLAN。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IPv6组播VLAN的运行情况,通过查看显示信息验证配置的效果。
表4-5 IPv6组播VLAN显示和维护
操作 |
命令 |
查看IPv6组播VLAN的信息 |
display multicast-vlan ipv6 [ vlan-id ] |
l 如图4-3所示,Router A通过接口Ethernet1/0/1连接IPv6组播源(Source),通过接口Ethernet1/0/2连接Switch A;
l Router A上运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器;
l Switch A的端口Ethernet1/0/1属于VLAN 10,端口Ethernet1/0/2到Ethernet1/0/4分别属于VLAN 2到VLAN 4,Host A到Host C分别连接到Switch A的端口Ethernet1/0/2到Ethernet1/0/4上;
l IPv6组播源向IPv6组播组FF1E::101发送IPv6组播数据,Host A、Host B和Host C都是该IPv6组播组的接收者(Receiver);
l 通过配置基于端口的IPv6组播VLAN,使Router A通过IPv6组播VLAN向Switch A下分属不同用户VLAN的主机分发IPv6组播数据。
图4-3 IPv6组播VLAN配置组网图
(1) 使能IPv6转发功能,并配置IPv6地址
使能各设备的IPv6转发功能,并按照图4-3配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Router A
# 使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在主机侧接口Ethernet1/0/2上使能MLD。
<RouterA> system-view
[RouterA] multicast ipv6 routing-enable
[RouterA] interface ethernet 1/0/1
[RouterA-Ethernet1/0/1] ipv6 pim dm
[RouterA-Ethernet1/0/1] quit
[RouterA] interface ethernet 1/0/2
[RouterA-Ethernet1/0/2] ipv6 pim dm
[RouterA-Ethernet1/0/2] mld enable
(3) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 10,把端口Ethernet1/0/1添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 10
[SwitchA-vlan10] port ethernet 1/0/1
[SwitchA-vlan10] mld-snooping enable
[SwitchA-vlan10] quit
# 创建VLAN 2,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 2
[SwitchA-vlan2] mld-snooping enable
[SwitchA-vlan2] quit
VLAN 3与VLAN 4的配置与VLAN 2相似,配置过程略。
# 配置端口Ethernet1/0/2为Hybrid类型,缺省VLAN为VLAN 2;允许VLAN 2和VLAN 10的报文通过,且均不携带Tag。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] port link-type hybrid
[SwitchA-Ethernet1/0/2] port hybrid pvid vlan 2
[SwitchA-Ethernet1/0/2] port hybrid vlan 2 untagged
[SwitchA-Ethernet1/0/2] port hybrid vlan 10 untagged
[SwitchA-Ethernet1/0/2] quit
Ethernet1/0/3与Ethernet1/0/4的配置与Ethernet1/0/2相似,配置过程略。
# 配置VLAN 10为IPv6组播VLAN。
[SwitchA] multicast-vlan ipv6 10
# 将端口Ethernet1/0/2到Ethernet1/0/3添加到IPv6组播VLAN 10内。
[SwitchA-ipv6-mvlan-10] port ethernet 1/0/2 to ethernet 1/0/3
[SwitchA-ipv6-mvlan-10] quit
# 配置端口Ethernet1/0/4也属于IPv6组播VLAN 10。
[SwitchA] interface ethernet 1/0/4
[SwitchA-Ethernet1/0/4] port multicast-vlan ipv6 10
[SwitchA-Ethernet1/0/4] quit
(4) 检验配置效果
# 查看Switch A上所有IPv6组播VLAN的信息。
[SwitchA] display multicast-vlan ipv6
Total 1 IPv6 multicast-vlan(s)
IPv6 Multicast vlan 10
port list:
Eth1/0/2 Eth1/0/3 Eth1/0/4
# 查看Switch A上MLD Snooping组播组的信息。
[SwitchA] display mld-snooping group
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):10.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
Eth1/0/1 (D)
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::101
(::, FF1E::101):
Host port(s):total 3 port.
Eth1/0/2 (D)
Eth1/0/3 (D)
Eth1/0/4 (D)
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 3 port.
Eth1/0/2
Eth1/0/3
Eth1/0/4
由此可见,MLD Snooping统一在IPv6组播VLAN(VLAN 10)中维护路由器端口和成员端口。
组播用户控制策略通常配置在接入交换机上,是基于用户权限控制来实现的,即只有通过授权的用户才能收到相应的组播流,从而达到限制用户对组播节目点播的目的。在实际应用中,用户先要通过接入交换机向RADIUS服务器发起802.1x认证,当认证通过后再根据用户的点播行为进行策略检查:
l 当用户点播组播节目时,主机会发送IGMP成员关系报告报文,接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查,若该报文通过检查则允许该用户加入该组播组;否则,接入交换机将丢弃该报文。
l 当用户停止点播组播节目时,主机会发送IGMP离开报文,接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查,若该报文通过检查则允许该用户离开该组播组;否则,接入交换机将丢弃该报文。
表5-1 配置IPv4组播用户控制策略
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建QoS Profile,并进入QoS Profile视图 |
qos-profile profile-name |
- |
|
配置组播用户控制策略 |
igmp-snooping access-policy acl-number |
必选 缺省情况下,没有配置组播用户控制策略,即用户可以加入/离开任意合法的组播组 |
|
退回系统视图 |
quit |
- |
|
进入以太网端口视图 |
interface interface-type interface-number |
- |
|
应用QoS Profile |
配置QoS Profile的应用模式为基于端口的应用模式 |
qos-profile port-based |
必选 缺省情况下,QoS Profile的应用模式为基于用户的模式 l 如果802.1x配置为基于MAC地址认证,必须配置QoS Profile的应用模式为基于用户的模式 l 如果802.1x配置为基于端口认证,必须配置QoS Profile的应用模式为基于端口的模式 |
配置QoS Profile的应用模式为基于用户的应用模式 |
undo qos-profile port-based |
l 有关qos-profile、qos-profile port-based和undo qos-profile port-based命令的详细介绍,请参见“QoS-QoS Profile命令”。
l 组播用户控制策略功能需要和802.1x特性结合才能生效,即需要在应用QoS Profile的端口上开启802.1x功能,有关802.1x功能的详细介绍,请参见“802.1x与System-Guard操作”。
l 组播用户控制策略与组播组过滤器在功能上类似,二者的区别在于:前者是基于用户权限的组播控制,需要与认证、授权功能结合使用,能够控制组播用户的加入与离开;后者是基于设备端口的组播控制,无需与认证、授权功能结合使用,只能控制组播用户的加入。
l 如图5-1所示,三层交换机Switch A通过接口Vlan-interface101连接组播源Source 1,通过接口Vlan-interface102连接RADIUS服务器,并通过接口Vlan-interface103连接二层交换机Switch B。
l Switch A上运行IGMPv2,Switch B上运行版本2的IGMP Snooping,连接在Switch B上的主机使用802.1x进行认证。
l 通过在Switch B上配置组播用户控制策略,使接收者(Receiver)Host A只能加入/离开组播组224.1.1.1。
图5-1 IPv4组播用户控制策略配置组网图
(1) 配置IP地址
请按照图5-1配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Switch A
# 分别创建VLAN 101~103,并将端口Ehternet1/0/1~Ehternet1/0/3依次加入VLAN 101~103中。
<SwitchA> system-view
[SwitchA] vlan 101
[SwitchA-vlan101] port ethernet 1/0/1
[SwitchA-vlan101] quit
[SwitchA] vlan 102
[SwitchA-vlan102] port ethernet 1/0/2
[SwitchA-vlan102] quit
[SwitchA] vlan 103
[SwitchA-vlan103] port ethernet 1/0/3
[SwitchA-vlan103] quit
# 使能IP组播路由,在接口Vlan-interface101和Vlan-interface103上使能PIM-DM,并在接口Vlan-interface103上使能IGMP。
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim dm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 103
[SwitchA-Vlan-interface103] pim dm
[SwitchA-Vlan-interface103] igmp enable
[SwitchA-Vlan-interface103] quit
(3) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping enable
# 创建VLAN 103,把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中;在该VLAN内使能IGMP Snooping。
[SwitchB] vlan 103
[SwitchB-vlan103] port ethernet 1/0/1 to ethernet 1/0/3
[SwitchB-vlan103] igmp-snooping enable
[SwitchB-vlan103] quit
# 创建名为profile1的QoS Profile,在该QoS Profile下配置只允许用户加入/离开组播组224.1.1.1。
[SwitchB] acl number 2001
[SwitchB-acl-basic-2001] rule permit source 224.1.1.1 0
[SwitchB-acl-basic-2001] quit
[SwitchB] qos-profile profile1
[SwitchB-qos-profile-profile1] igmp-snooping access-policy 2001
[SwitchB-qos-profile-profile1] quit
# 创建名为scheme1的RADIUS认证方案,配置RADIUS服务器的类型为extended类型;指定主RADIUS认证/授权服务器和计费服务器的IP地址均为2.1.1.1,共享密钥均为321123;并配置发送给RADIUS服务器的用户名不需要携带域名。
[SwitchB] radius scheme scheme1
[SwitchB-radius-scheme1] server-type extended
[SwitchB-radius-scheme1] primary authentication 2.1.1.1
[SwitchB-radius-scheme1] key authentication 321123
[SwitchB-radius-scheme1] primary accounting 2.1.1.1
[SwitchB-radius-scheme1] key accounting 321123
[SwitchB-radius-scheme1] user-name-format without-domain
[SwitchB-radius-scheme1] quit
# 创建名为domain1的ISP域,指定lan-access用户的RADIUS认证和计费方案均为scheme1;并将该域指定为系统缺省的ISP域。
[SwitchB] domain domain1
[SwitchB-isp-domian1] authentication lan-access radius-scheme scheme1
[SwitchB-isp-domian1] accounting lan-access radius-scheme scheme1
[SwitchB-isp-domian1] quit
[SwitchB] domain default enable domain1
# 全局使能802.1x,并在接口Ethernet1/0/2和Ethernet1/0/3上分别使能802.1x。
[SwitchB] dot1x
[SwitchB] interface ethernet 1/0/2
[SwitchB-Ethernet1/0/2] dot1x
[SwitchB-Ethernet1/0/2] quit
[SwitchB] interface ethernet 1/0/3
[SwitchB-Ethernet1/0/3] dot1x
[SwitchB-Ethernet1/0/3] quit
(4) 配置RADIUS服务器
请在RADIUS服务器上进行与Switch B相对应的配置,具体配置过程可参考RADIUS服务器的配置手册。
(5) 检验配置效果
配置完成后,用户主机都向RADIUS服务器发起802.1x认证。当认证通过后,Host A分别发起了对组播组224.1.1.1和224.1.1.2的加入。通过使用display igmp-snooping group命令可以查看IGMP Snooping组播组的信息:
# 查看Switch B上VLAN 103内IGMP Snooping组播组的详细信息。
[SwitchB] display igmp-snooping group vlan 103 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):103.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
Eth1/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 1 port.
Eth1/0/3 (D) ( 00:04:10 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port.
Eth1/0/3
由此可见,Switch B上的端口Ethernet1/0/3只加入了组播组224.1.1.1,而未加入组播组224.1.1.2。
IPv6 ACL根据ACL序号来区分不同的ACL,可以分为两种类型,如表5-2所示。
IPv6 ACL类型 |
ACL序号范围 |
区分报文的依据 |
基本IPv6 ACL |
2000~2999 |
只根据源IPv6地址信息制定匹配规则 |
高级IPv6 ACL |
3000~3999 |
根据报文的源IPv6地址信息、目的IPv6地址信息、IPv6承载的协议类型、协议的特性等三层、四层信息来制定匹配规则 |
用户在创建IPv6 ACL时,可以为ACL指定一个名称。每个IPv6 ACL最多只能有一个名称。命名的ACL使用户可以通过名称唯一地确定一个IPv6 ACL,并对其进行相应的操作。
在创建ACL时,用户可以选择是否配置名称。ACL创建后,不允许用户修改或者删除ACL名称,也不允许为未命名的ACL添加名称。
一个ACL中可以包含多个规则,而每个规则都指定不同的报文匹配选项,这些规则可能存在重复或矛盾的地方,在将一个报文和ACL的规则进行匹配的时候,到底采用哪些规则呢?就需要确定规则的匹配顺序。
IPv6 ACL支持两种匹配顺序:
l 配置顺序:按照用户配置规则的先后顺序进行规则匹配,本质上是系统按照规则编号由小到大进行匹配,后插入的规则有可能先匹配。
l 自动排序:按照“深度优先”的顺序进行规则匹配。
基本IPv6 ACL的“深度优先”顺序判断原则如下
(1) 先比较源IPv6地址范围,源IPv6地址范围小(前缀长)的规则优先;
(2) 如果源IPv6地址范围相同,则按照配置顺序,即规则编号较小的优先。
高级IPv6 ACL的“深度优先”顺序判断原则如下
(3) 先比较协议范围,指定了IPv6协议承载的协议类型的规则优先;
(4) 如果协议范围相同,则比较源IPv6地址范围,源IPv6地址范围小(前缀长)的规则优先;
(5) 如果协议范围、源IPv6地址范围相同,则比较目的IPv6地址范围,目的IPv6地址范围小(前缀长)的规则优先;
(6) 如果协议范围、源IPv6地址范围、目的IPv6地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先;
(7) 如果上述范围都相同,则按照配置顺序,即规则编号较小的优先。
在报文匹配规则时,会按照匹配顺序去匹配定义的规则,一旦有一条规则被匹配,报文就不再继续匹配其它规则了,设备将对该报文执行第一次匹配的规则指定的动作。
步长的含义是:设备自动为ACL规则分配编号的时候,每个相邻规则编号之间的差值。例如,如果将步长设定为5,规则编号分配是按照0、5、10、15……这样的规律分配的。缺省情况下,步长为5。
当步长改变后,ACL中原有规则的编号都会自动从0开始重新排列。例如,原有规则依次为5、10、13、15、20,当通过命令把步长改为2后,这些规则的编号将依次变为0、2、4、6、8。
当使用命令将步长恢复为缺省值后,设备将立刻按照缺省步长调整ACL中现有规则的编号。例如:ACL 3001中原有步长为2,规则依次为0、2、4、6,当通过命令将步长恢复为缺省值5之后,这些规则的编号将依次变为0、5、10、15。
使用步长设定的好处是用户可以方便地在规则之间插入新的规则。例如配置好了4个规则,规则编号为:0、5、10、15。此时如果用户希望能在第一条规则之后插入一条规则,则可以使用命令在0和5之间插入一条编号为1的规则。
另外,在定义一条ACL规则的时候,用户可以不指定规则编号,这时,系统会从0开始,按照步长,自动为规则分配一个大于现有最大编号的最小编号。假设现有规则的最大编号是28,步长是5,那么系统分配给新定义的规则的编号将是30。
时间段用于描述一个特殊的时间范围。用户可能有这样的需求:一些ACL规则需要在某个或某些特定时间内生效,而在其它时间段则不利用它们进行报文过滤,即通常所说的按时间段过滤。这时,用户就可以先配置一个或多个时间段,然后在相应的规则下通过时间段名称引用该时间段,这条规则只在该指定的时间段内生效,从而实现基于时间段的ACL过滤。
如果规则引用的时间段未配置,则系统给出提示信息,并允许这样的规则创建成功,但是规则不能立即生效,直到用户配置了引用的时间段,并且系统时间在指定时间段范围内ACL规则才能生效。
基本IPv6 ACL只根据源IPv6地址信息制定匹配规则,对报文进行相应的分析处理。
基本IPv6 ACL的序号取值范围为2000~2999。
l 配置步骤
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
创建基本IPv6 ACL并进入基本IPv6 ACL视图 |
acl ipv6 number acl6-number [ name acl6-name ] [ match-order { auto | config } ] |
必选 缺省情况下,匹配顺序为config 如果用户在创建IPv6 ACL时指定了名称,则之后可以通过acl ipv6 name acl6-name命令进入指定名称的IPv6 ACL视图 |
定义规则 |
rule [ rule-id ] { deny | permit } [ counting | fragment | logging | source { ipv6-address prefix-length | ipv6-address/prefix-length | any } | time-range time-range-name ] * |
必选 可以重复本步骤创建多条规则 |
定义步长 |
step step-value |
可选 缺省情况下,步长为5 |
定义基本IPv6 ACL的描述信息 |
description text |
可选 缺省情况下,基本IPv6 ACL没有描述信息 |
定义规则的描述信息 |
rule rule-id comment text |
可选 缺省情况下,规则没有描述信息 |
需要注意的是:
l 当ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
l 新创建或修改后的规则不能和已经存在的规则内容相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
l 当ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
l 用户可以通过命令acl ipv6 number acl6-number [ name acl6-name ] match-order { auto | config }修改IPv6 ACL的匹配顺序为auto或者config,但必须在IPv6 ACL中没有规则的时候修改,对已经有规则的IPv6 ACL是无法修改其匹配顺序的。
l 在使用rule comment命令为规则定义描述信息时,该规则必须存在。
高级IPv6 ACL可以使用报文的源IPv6地址信息、目的IPv6地址信息、IPv6承载的协议类型、协议的特性(例如TCP或UDP的源端口、目的端口,ICMP协议的消息类型、消息码等)等信息来制定匹配规则。
用户可以利用高级IPv6 ACL定义比基本IPv6 ACL更准确、更丰富、更灵活的规则。
高级IPv6 ACL的序号取值范围3000~3999。
如果要配置带有时间段参数的规则,则需要定义相应的时间段。
l 配置步骤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建高级IPv6 ACL并进入高级IPv6 ACL视图 |
acl ipv6 number acl6-number [ name acl6-name ] [ match-order { auto | config } ] |
必选 缺省情况下,匹配顺序为config 如果用户在创建IPv6 ACL时指定了名称,则之后可以通过acl ipv6 name acl6-name命令进入指定名称的IPv6 ACL视图 |
定义规则 |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest dest-prefix | dest/dest-prefix | any } | destination-port operator port1 [ port2 ] | dscp dscp | flow-label flow-label-value | fragment | icmpv6-type { icmpv6-type icmpv6-code | icmpv6-message } | logging | source { source source-prefix | source/source-prefix | any } | source-port operator port1 [ port2 ] | time-range time-range-name ] * |
必选 可以重复本步骤创建多条规则 |
定义步长 |
step step-value |
可选 缺省情况下,步长为5 |
定义高级IPv6 ACL的描述信息 |
description text |
可选 缺省情况下,高级IPv6 ACL没有描述信息 |
定义规则的描述信息 |
rule rule-id comment text |
可选 缺省情况下,规则没有描述信息 |
需要注意的是:
l 当ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
l 新创建或修改后的规则不能和已经存在的规则内容相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
l 当ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
l 用户可以通过命令acl ipv6 number acl6-number [ name acl6-name ] match-order { auto | config }修改IPv6 ACL的匹配顺序为auto或者config,但必须在IPv6 ACL中没有规则的时候修改,对已经有规则的IPv6 ACL是无法修改其匹配顺序的。
l 在使用rule comment命令为规则定义描述信息时,该规则必须存在。
拷贝IPv6 ACL功能使用户可以通过拷贝一个已经存在的IPv6 ACL,生成一个新的同类型的IPv6 ACL。生成的新的IPv6 ACL的匹配顺序、包含的匹配规则、步长以及描述信息都和源IPv6 ACL相同。
源IPv6 ACL必须存在,目的IPv6 ACL必须不存在。
l 配置步骤
表5-5 拷贝IPv6 ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
拷贝生成一个新的同类型的IPv6 ACL |
acl ipv6 copy { source-acl6-number | name source-acl6-name } to { dest-acl6-number | name dest-acl6-name } |
必选 |
l 源IPv6 ACL和目的IPv6 ACL的类型要相同。
l 源IPv6 ACL的名称不会拷贝到目的IPv6 ACL。
在完成上述配置后,在任意视图下执行display命令可以显示IPv6 ACL配置后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IPv6 ACL统计信息。
表5-6 IPv6 ACL显示和维护
操作 |
命令 |
显示IPv6 ACL的配置和运行情况 |
display acl ipv6 { acl6-number | all | name acl6-name } |
清除IPv6 ACL统计信息 |
reset acl ipv6 counter { acl6-number | all | name acl6-name } |
在使能了MLD Snooping的交换机上,通过配置IPv6组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个MLD成员关系报告报文,该报文到达交换机后,进行ACL检查:如果该接收端口可以加入这个IPv6组播组,则将其列入到MLD Snooping转发表中;否则交换机就丢弃该报文。这样,未通过ACL检查的IPv6组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
表5-7 全局配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组过滤器 |
group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置全局IPv6组播组过滤器,即各VLAN内主机可以加入任意合法的IPv6组播组 |
表5-8 在端口上配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置IPv6组播组过滤器 |
mld-snooping group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,端口上没有配置IPv6组播组过滤器,即该端口下的主机可以加入任意合法的IPv6组播组 |
IPv6组播用户控制策略通常配置在接入交换机上,是基于用户权限控制来实现的,即只有通过授权的用户才能收到相应的IPv6组播流,从而达到限制用户对IPv6组播节目点播的目的。在实际应用中,用户先要通过接入交换机向RADIUS服务器发起802.1x认证,当认证通过后再根据用户的点播行为进行策略检查:
l 当用户点播IPv6组播节目时,主机会发送MLD成员关系报告报文,接入交换机收到该报文后对其携带的IPv6组播组和IPv6组播源地址进行策略检查,若该报文通过检查则允许该用户加入该IPv6组播组;否则,接入交换机将丢弃该报文。
l 当用户停止点播IPv6组播节目时,主机会发送MLD离开报文,接入交换机收到该报文后对其携带的IPv6组播组和IPv6组播源地址进行策略检查,若该报文通过检查则允许该用户离开该IPv6组播组;否则,接入交换机将丢弃该报文。
表5-9 配置IPv6组播用户控制策略
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建QoS Profile,并进入QoS Profile视图 |
qos-profile profile-name |
- |
|
配置IPv6组播用户控制策略 |
mld-snooping access-policy acl6-number |
必选 缺省情况下,没有配置IPv6组播用户控制策略,即用户可以加入/离开任意合法的IPv6组播组 |
|
退回系统视图 |
quit |
- |
|
进入以太网端口视图 |
interface interface-type interface-number |
- |
|
应用QoS Profile |
配置QoS Profile的应用模式为基于端口的应用模式 |
qos-profile port-based |
必选 缺省情况下,QoS Profile的应用模式为基于用户的模式 l 如果802.1x配置为基于MAC地址认证,必须配置QoS Profile的应用模式为基于用户的模式 l 如果802.1x配置为基于端口认证,必须配置QoS Profile的应用模式为基于端口的模式 |
配置QoS Profile的应用模式为基于用户的应用模式 |
undo qos-profile port-based |
l 有关qos-profile、qos-profile port-based和undo qos-profile port-based命令的详细介绍,请参见“QoS-QoS Profile命令”。
l IPv6组播用户控制策略功能需要和802.1x特性结合才能生效,即需要在应用QoS Profile的端口上开启802.1x功能。有关802.1x功能的详细介绍,请参见“802.1x与System-Guard操作”
l IPv6组播用户控制策略与IPv6组播组过滤器在功能上类似,二者的区别在于:前者是基于用户权限的组播控制,需要与认证、授权功能结合使用,能够控制组播用户的加入与离开;后者是基于设备端口的组播控制,无需与认证、授权功能结合使用,只能控制组播用户的加入。
l 如图5-2所示,三层交换机Switch A通过接口Vlan-interface101连接IPv6组播源Source 1,通过接口Vlan-interface102连接RADIUS服务器,并通过接口Vlan-interface103连接二层交换机Switch B。
l Switch A上运行MLDv1,Switch B上运行版本1的MLD Snooping,连接在Switch B上的主机使用802.1x进行认证。
l 通过在Switch B上配置IPv6组播用户控制策略,使接收者(Receiver)Host A只能加入/离开IPv6组播组FF1E::101。
图5-2 IPv6组播用户控制策略配置组网图
(1) 配置IP地址
使能各设备的IPv6转发功能,并按照图5-2配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Switch A
# 分别创建VLAN 101~103,并将端口Ehternet1/0/1~Ehternet1/0/3依次加入VLAN 101~103中。
<SwitchA> system-view
[SwitchA] vlan 101
[SwitchA-vlan101] port ethernet 1/0/1
[SwitchA-vlan101] quit
[SwitchA] vlan 102
[SwitchA-vlan102] port ethernet 1/0/2
[SwitchA-vlan102] quit
[SwitchA] vlan 103
[SwitchA-vlan103] port ethernet 1/0/3
[SwitchA-vlan103] quit
# 使能IPv6组播路由,在接口Vlan-interface101和Vlan-interface103上使能IPv6 PIM-DM,并在接口Vlan-interface103上使能MLD。
[SwitchA] multicast ipv6 routing-enable
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim ipv6 dm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 103
[SwitchA-Vlan-interface103] pim ipv6 dm
[SwitchA-Vlan-interface103] mld enable
[SwitchA-Vlan-interface103] quit
(3) 配置Switch B
# 全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 103,把端口Ethernet1/0/1到Ethernet1/0/3添加到该VLAN中;在该VLAN内使能MLD Snooping。
[SwitchB] vlan 103
[SwitchB-vlan103] port ethernet 1/0/1 to ethernet 1/0/3
[SwitchB-vlan103] mld-snooping enable
[SwitchB-vlan103] quit
# 创建名为profile1的QoS Profile,在该QoS Profile下配置只允许用户加入/离开IPv6组播组FF1E::101。
[SwitchB] acl ipv6 number 2001
[SwitchB-acl6-basic-2001] rule permit source ff1e::101 128
[SwitchB-acl6-basic-2001] quit
[SwitchB] qos-profile profile1
[SwitchB-qos-profile-profile1] mld-snooping access-policy 2001
[SwitchB-qos-profile-profile1] quit
# 创建名为scheme1的RADIUS认证方案,配置RADIUS服务器的类型为extended类型;指定主RADIUS认证/授权服务器和计费服务器的IP地址均为2::1,共享密钥均为321123;并配置发送给RADIUS服务器的用户名不需要携带域名。
[SwitchB] radius scheme scheme1
[SwitchB-radius-scheme1] server-type extended
[SwitchB-radius-scheme1] primary authentication 2::1
[SwitchB-radius-scheme1] key authentication 321123
[SwitchB-radius-scheme1] primary accounting 2::1
[SwitchB-radius-scheme1] key accounting 321123
[SwitchB-radius-scheme1] user-name-format without-domain
[SwitchB-radius-scheme1] quit
# 创建名为domain1的ISP域,指定lan-access用户的RADIUS认证和计费方案均为scheme1;并将该域指定为系统缺省的ISP域。
[SwitchB] domain domain1
[SwitchB-isp-domian1] authentication lan-access radius-scheme scheme1
[SwitchB-isp-domian1] accounting lan-access radius-scheme scheme1
[SwitchB-isp-domian1] quit
[SwitchB] domain default enable domain1
# 全局使能802.1x,并在接口Ethernet1/0/2和Ethernet1/0/3上分别使能802.1x。
[SwitchB] dot1x
[SwitchB] interface ethernet 1/0/2
[SwitchB-Ethernet1/0/2] dot1x
[SwitchB-Ethernet1/0/2] quit
[SwitchB] interface ethernet 1/0/3
[SwitchB-Ethernet1/0/3] dot1x
[SwitchB-Ethernet1/0/3] quit
(4) 配置RADIUS服务器
请在RADIUS服务器上进行与Switch B相对应的配置,具体配置过程可参考RADIUS服务器的配置手册。
(5) 检验配置效果
配置完成后,用户主机都向RADIUS服务器发起802.1x认证。当认证通过后,Host A分别发起了对IPv6组播组FF1E::101和 FF1E::102的加入。通过使用display mld-snooping group命令可以查看MLD Snooping组播组的信息:
# 查看Switch B上VLAN 103内MLD Snooping组播组的详细信息。
[SwitchB] display mld-snooping group vlan 103 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):103.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
Eth1/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 1 port.
Eth1/0/3 (D) ( 00:04:10 )
MAC group(s):
MAC group address:3333-0000-0101
Host port(s):total 1 port.
Eth1/0/3
由此可见,Switch B上的端口Ethernet1/0/3只加入了IPv6组播组FF1E::101,而未加入IPv6组播组FF1E::102。
配置任务 |
说明 |
详细配置 |
配置组播源端口抑制 |
可选 |
|
添加组播MAC地址表项 |
可选 |
|
配置未知组播报文丢弃 |
可选 |
在网络中,某些用户会私设组播服务器,造成整个组播网络资源紧张,影响组播带宽和网络内合法信息传输。用户可以配置组播源端口抑制功能,在未授权的组播源端口上过滤组播报文,以防止该端口连接的用户私设组播服务器。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置组播源端口抑制 |
multicast-source-deny [ interface interface-list ] |
可选 缺省情况下,组播源端口抑制功能处于关闭状态 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置组播源端口抑制 |
multicast-source-deny |
可选 缺省情况下,组播源端口抑制功能处于关闭状态 |
在二层的组播过程中,除了通过二层组播协议动态建立MAC组播组转发表项外,还可以通过手工配置组播MAC地址表项,将端口与组播地址表项进行静态绑定。
通常情况下,如果交换机收到的组播数据报文中的组播地址没有在本机注册,该报文会在该端口所在的VLAN内广播,通过配置组播静态MAC地址表项可以避免这种情况。
表6-4 添加组播MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
添加组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
必选 mac-address必须为组播MAC地址 |
表6-5 添加组播MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
添加组播MAC地址表项 |
mac-address multicast mac-address vlan vlan-id |
必选 mac-address必须为组播MAC地址 |
l 如果要添加的组播MAC地址表项已经存在,则系统会给出提示。
l 如果要向通过命令添加的组播MAC地址表项中加入端口,需要先将该表项删除,然后重新添加该表项,将指定端口加入到表项的转发端口中。
l 如在端口添加了组播MAC地址,则无法在此端口启动端口汇聚。如端口已经是汇聚端口,则不可以添加组播MAC地址。
l 如果用户需要在启动了IGMP Snooping的VLAN内添加组播MAC地址,将不能配置以01005e开头的组播MAC地址;如果VLAN内没有启动IGMP Snooping,可以配置包括以01005e开头的组播MAC地址。
通常情况下,如果交换机收到的组播数据报文的组播地址没有在本机注册,该报文会在VLAN内广播。当启动未知组播丢弃功能后,交换机收到未注册组播地址的组播数据报文,将丢弃该报文,从而节省带宽,并提高系统的处理效率。
表6-6 配置未知组播报文丢弃
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置未知组播报文丢弃功能 |
unknown-multicast drop enable |
必选 缺省情况下,未知组播报文丢弃功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播公共配置的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示组播源端口抑制统计信息 |
display multicast-source-deny [ interface interface-type [ interface-number ] ] |
display命令可以在任意视图下执行 |
显示已经添加组播MAC地址表项 |
display mac-address multicast [ static { { { mac-address vlan vlan-id | vlan vlan-id } [ count ] } | count } ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!