17-组播协议操作
本章节下载 (1.53 MB)
目 录
3.2.4 IGMP Snooping Filter过滤规则配置
随着Internet网络的不断发展,网络内各种数据、语音和视频信息等多种交互业务与日俱增,另外新兴的电子商务、网上会议、网上拍卖、视频点播、远程教学等对带宽和实时数据交互要求较高的服务逐渐兴起,这些服务对信息安全性、可计费性、网络带宽提出了更高的要求。
在网络中,存在着三种发送报文的方式:单播、广播、组播。下面我们对单播、广播、组播的数据交互过程分别进行介绍和对比。
采用单播(Unicast)方式时,系统为每个需要该信息的用户单独建立一条数据传送通路,并为该用户发送一份独立的拷贝信息,如图1-1:
假设用户B、D和E需要该信息,则信息源Server必须分别和用户B、D、E的设备建立传输通道。由于网络中传输的信息量和要求接收该信息的用户量成正比,因此当用户数量很庞大时,服务器就必须要将多份内容相同的信息发送给用户。因此,带宽将成为信息传输中的瓶颈。
从单播信息的传播过程可以看出,单播的信息传输方式不利于信息规模化发送。
如果采用广播(Broadcast)方式,系统把信息传送给网络中的所有用户,不管他们是否需要,任何用户都会接收到广播来的信息,如图1-2:
假设用户B、D和E需要该信息,则信息源Server通过路由器广播该信息,网络其他用户A和C也同样接收到该信息,信息安全性和有偿服务得不到保障。
从广播信息的传播过程可以看出,广播的保密性和有偿性比较差。并且当同一网络中需要该信息的用户量很小时,网络资源利用率将非常低,带宽浪费严重。
因此,广播不利于对特定用户进行数据交互,并且还严重的占用带宽。
综上所述,单播方式适合用户稀少的网络,而广播方式适合用户稠密的网络,当网络中需要某信息的用户量不确定时,单播和广播方式效率很低。
IP组播技术的出现及时解决了这个问题。当网络中的某些用户需要特定信息时,组播信息发送者(即组播源)仅发送一次信息,借助组播路由协议为组播数据包建立树型路由,被传递的信息在距离用户端尽可能近的节点才开始复制和分发,如图1-3。
假设用户B、D和E需要该信息,为了将信息顺利地传输给真正需要该信息的用户,需要将用户B、D、E组成一个接收者集合,由网络中各路由器根据该集合中各接收者的分布情况进行信息转发和复制,最后信息准确地传输给实际需要的接收者B、D和E。
相比单播来说,组播的优点在于:
l 不论接收者有多少,相同的组播数据流在每一条链路上最多仅有一份。
l 使用组播方式传递信息,用户的增加不会显著增加网络的负载。
相比广播来说,组播的优点在于:
l 组播数据流仅会发送到要求数据的接收者。
l 不会造成网络资源的浪费,合理的利用带宽。
在组播方式中,我们将网络中的各个部分分为以下几个角色:
l “组播源”:信息的发送者称为“组播源”。
l “组播组”:接收相同信息的多个接收者构成一个“组播组”,“组播组”没有地域的限制。
l “组播组成员”:每个组播信息的接收者都是“组播组成员”。
l “组播路由器”:可以提供组播路由功能的路由器称为“组播路由器”,组播路由器除了是一个或多个组播组的接收成员以外,还可以管理组播组的成员。
为了更好的理解,可以将“组播组”概念类比于电视频道。电视台是组播源,它向这个频道内发送数据;观众是接收者,通过打开电视机(计算机)选择一个频道接收节目(即加入某一个组),然后就可以观看电视节目了。所以,组播组应该是发送者和接收者之间的一个约定,如同频道的频率。
注意:
组播源不一定属于组播组,它向组播组发送数据,自己不一定是接收者。可以同时有多个组播源向一个组播组发送报文。
网络中可能有不支持组播的路由器,组播路由器可以使用隧道方式将组播包封装在单播IP包中,顺利通过不支持组播的路由器,最后传送到下一个支持组播的组播路由器,组播路由器再将单播IP头剥掉,然后继续进行组播传输,从而避免对网络的结构进行较大的改动。
组播的优势在于:
l 提高效率:降低网络流量,减轻服务器和CPU负荷。
l 优化性能:减少冗余流量。
l 分布式应用:使多点应用成为可能。
组播技术有效地解决了单点发送多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够节约大量网络带宽、降低网络负载。
组播功能主要有以下的应用:
l 多媒体、流媒体的应用,如:网络电视、网络电台、实时视/音频会议。
l 培训、联合作业场合的通信,如:远程教育。
l 数据仓库、金融应用(股票)等。
l 任何“点到多点”的数据发布应用。
IP组播技术虽然复杂,但是其根本用途是以组播方式将信息从组播源传输到接收者手中,同时满足接收者对信息的各种需要。对于IP组播,需要关注的是:
l 网络中有哪些接收者?即主机注册。
l 这些接收者需要从哪个组播源接收信息?即组播源发现技术。
l 组播源将组播信息传输到哪里?即组播寻址机制。
l 组播信息如何传输?即组播路由。
IP组播属于一种端到端服务,按照协议层从下往上划分,组播机制包括以下四个部分:
l 寻址机制:借助组播地址,实现信息从组播源发送到一组接收者。
l 主机注册:接收主机动态加入和离开某组播组,实现组播成员注册。
l 组播路由:构建报文分发树进行组播路由,从组播源传输报文到接收者。
l 组播应用:组播源必须支持视频会议等组播应用软件,TCP/IP协议栈必须支持组播信息的发送和接收。
由于信息的接收者是一个组播组内的多个主机,因此需要面对以下的问题:
l 如果采用组播方式传输信息,信息源该将信息发往何处?
l 目的地址如何选取,即信息源如何知道信息的需要者是谁?
这些问题简而言之就是组播寻址。为了让信息源和组播组成员(一组信息接收者)进行通讯,需要提供网络层组播地址,即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层MAC组播地址。下面分别介绍这两种组播地址。
根据IANA(Internet Assigned Numbers Authority,因特网编号授权委员会)规定,IP地址分为五类,即A类、B类、C类、D类和E类。单播报文按照网络规模大小分别使用ABC三类IP地址。组播报文的目的地址使用D类IP地址,D类地址不能出现在IP报文的源IP地址字段,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-1。
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组播地址列表如下:
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到239.255.255.255,这些地址属于管理范围地址。通过对管理范围地址的管理,可以灵活地定义组播域范围,实现不同组播域之间的地址隔离,有助于相同组播地址在不同组播域内的重复使用而不会冲突。
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播报文时,传输目标不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播MAC地址。
IANA规定,组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit,映射关系如图1-4所示:
图1-4 组播IP地址与组播MAC地址的映射关系
由于IP组播地址的高4bit是1110,代表组播标识,而低28bit中只有23bit被映射到MAC地址,这样IP地址中就会有5bit信息丢失,直接的结果是出现了32个IP组播地址映射到同一MAC地址上。
IP组播涉及到的协议主要有组播组管理协议和组播路由协议。与组播相关的协议在网络中的应用位置如下图所示:
图1-5 组播相关协议的应用位置
组播组管理协议采用IGMP(Internet Group Management Protocol,因特网组管理协议),它运行在主机和组播路由器之间,定义了主机与组播路由器之间组播成员关系的建立和维护机制。
组播路由协议运行在组播路由器之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了一个从数据源端到多个接收端的无环数据传输路径。组播路由协议的任务就是构建分发树结构。组播路由器能采用多种方法来建立数据传输的路径,即分发树。
与单播路由一样,组播路由也分为域内和域间两大类。域内组播路由目前已经相当成熟,在众多的域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播协议)是目前应用最多的协议,可以和任何单播路由协议协同工作。
在组播模型中,组播源主机向主机组传送信息,这些主机组是通过IP数据包目的地址字段内的组播组地址所表示的。和单播模型不同的是,组播模型必须将组播数据包转发到多个外部接口上,以便能传送到所有接收站点,因此组播转发过程比单播转发过程更加复杂。
为了保证组播信息包在网络中传输,组播必须依靠单播路由表或者单独提供给组播使用的单播路由表(如MBGP组播路由表)进行转发,同时为了避免接口上收到来自不同对端的相同组播信息,还需要对组播信息包的接收接口进行一定的检查,这种检查机制就是大部分组播路由协议进行组播转发的基础——RPF(Reverse Path Forwarding,逆向路径转发)检查。
组播路由器根据源地址来判断组播报文是否来自指定接口,即RPF检查通过比较组播报文实际到达的接口和应该到达的接口来确定报文入接口是否正确。如果该路由器在SPT有源树(Shortest Path Tree,最短路径树)上,则接收到的组播报文应该到达的接口朝向组播源。该路由器在RPT(Rendezvous Point Tree,汇聚点树)共享树上,则接收到的组播报文应该到达的接口将朝向RP。当组播数据包到达路由器时,如果RPF检查通过,数据包则按照组播转发项进行转发。否则,数据包被丢弃。
GMRP(GARP Multicast Registration Protocol,GARP组播注册协议)是基于GARP的一个组播注册协议,用于维护交换机中的组播注册信息。所有支持GMRP的交换机都能够接收来自其他交换机的组播注册信息,并动态更新本地的组播注册信息,同时也能将本地的组播注册信息向其他交换机传播。这种信息交换机制,确保了同一交换网内所有支持GMRP的设备维护的组播信息的一致性。
当一台主机想要加入某个组播组时,它将发出GMRP加入消息。交换机将接到GMRP加入消息的端口加入到该组播组中,并在接收端口所在的VLAN中广播该GMRP加入消息,VLAN中的组播源就可以知晓组播成员的存在。当组播源向组播组发送组播报文时,交换机就只把组播报文转发给与该组播组成员相连的端口,从而实现了在VLAN内的二层组播。
GMRP主要配置包括:
l 开启全局GMRP
l 开启端口GMRP
在配置任务中,必须先开启全局GMRP,才能开启端口GMRP。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启全局GMRP |
gmrp |
必选 缺省情况下,没有启动全局GMRP |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
开启端口GMRP |
gmrp |
必选 缺省情况下,没有启动端口GMRP |
在完成上述配置后,在任意视图下执行display命令可以显示配置后GMRP的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示GMRP统计信息 |
display gmrp statistics [ interface interface-list ] |
display命令可以在任意视图下执行 |
显示GMRP全局状态信息 |
display gmrp status |
在交换机之间动态注册和更新组播信息。
# 启动全局GMRP。
<H3C> system-view
[H3C] gmrp
GMRP is enabled globally.
# 启动端口GMRP。
[H3C] interface Ethernet 2/0/1
[H3C-Ethernet2/0/1] gmrp
GMRP is enabled on port Ethernet2/0/1.
(2) 配置SwitchB:
# 启动全局GMRP。
<H3C> system-view
[H3C] gmrp
GMRP is enabled globally.
# 启动端口GMRP。
[H3C] interface Ethernet 2/0/1
[H3C-Ethernet2/0/1] gmrp
GMRP is enabled on port Ethernet2/0/1.
IGMP Snooping(Internet Group Management Protocol Snooping,IGMP侦听)是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播组。
当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP Snooping将对IGMP报文所带的信息进行分析,并进行相应的处理,如表3-1所示:
收到的报文类型 |
发送者 |
接收者 |
交换机处理 |
IGMP主机报告报文(IGMP host report message) |
主机 |
交换机 |
将主机加入相应的组播组列表中 |
IGMP离开报文(IGMP leave message) |
主机 |
交换机 |
将主机相关的组播表项从组播组列表中删除 |
交换机通过监控IGMP报文,可以在数据链路层建立和维护相应的MAC组播地址表,并根据MAC组播地址表转发从路由器下发的组播报文。
如图3-1所示,没有运行IGMP Snooping时,组播报文将在二层广播。运行IGMP Snooping后,报文将不再在二层广播,而是进行二层组播。
图3-1 在关闭/使能IGMP Snooping组播报文传播过程的对比
为描述方便,先介绍一下以太网交换机上与IGMP Snooping相关的概念。
l 路由器端口(Router Port):以太网交换机上直接和组播路由器相连的端口。
l 组播成员端口:与组播组成员相连的端口。组播组成员此处是加入某个组播组的主机。
l MAC组播组:以太网交换机维护的以MAC组播地址标识的组播组。
还有三个时间定时器与IGMP Snooping有密切的关联:
定时器 |
设定时间 |
老化时间内收到的报文 |
超时后交换机动作 |
路由器端口老化定时器 |
路由器端口老化时间 |
IGMP通用查询报文/PIM报文/Dvmrp Probe报文 |
认定端口不是路由器端口 |
组播组成员端口老化定时器 |
组播组成员端口老化时间 |
IGMP报文 |
向组播组成员端口发送IGMP特定组查询报文 |
响应查询定时器 |
最大响应查询时间 |
IGMP报告报文 |
将端口从组播组成员端口列表上删除 |
以太网交换机通过运行IGMP Snooping实现对IGMP报文的侦测,并为主机、主机对应端口和相应的组播MAC地址之间建立映射关系。
交换机与主机之间通过传递四种特殊的报文,实现了二层组播。下表对这四种报文及其在传输过程中的作用进行了描述。
表3-3 IGMP的四种报文
报文类型 |
发送者 |
接收者 |
目的 |
组播成员交换机处理 |
||||
IGMP通用查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询组播组内是否存在成员 |
该查询报文是否来自原路由器端口 |
是,交换机重置路由器端口老化定时器 |
|||
不是,交换机通知组播路由器有成员加入相应的某个组播组,同时启动对该路由器端口的老化定时器 |
||||||||
IGMP特定组查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询IGMP特定组播组是否存在成员 |
向被查询的IP组播组发IGMP特定组查询 |
||||
IGMP主机报告报文 |
主机 |
组播路由器和组播交换机 |
申请加入某个组播组或应答IGMP查询报文 |
查询IP组播组对应的MAC组播组是否存在 |
存在,判断端口是否存在于该MAC组播组中 |
存在,则将IP组播组地址加入到MAC组播组列表中 |
||
不存在,则将端口加入MAC组播组,重置端口老化定时器,并判断对应的IP组播组是否存在 |
存在,则将端口加入到对应IP组播组 |
|||||||
不存在,则新建IP组播组,将端口加入组播组 |
||||||||
不存在,则: l 新建MAC组播组,同时通知组播路由器有成员要加入组播组 l 将端口加入到MAC组播组,同时启动端口老化定时器 l 将端口所在VLAN内所有路由器端口也加入到该MAC组播组 l 将端口加入到新建的IP组播组中 |
||||||||
IGMP离开报文 |
主机 |
组播路由器和组播交换机 |
告知组播路由器和组播交换机主机离开组播组 |
组播路由器和组播交换机向发出离开报文的主机所在组播组发送IGMP特定组查询报文,用于确认该组播组内是否存在成员,同时启动相应查询定时器 |
判断该端口是否为对应MAC组播组的最后一个主机端口: l 如是,则删除对应的MAC组播组,同时删除对应的IP组播组 l 不是,则仅删除MAC组播组中对应此端口的表项,同时删除对应的IP组播组表项 |
|||
如组播组无应答,且定时器超时,则交换机将通知路由器将该分支从组播树删除 |
||||||||
|
|
|
|
|
|
|
|
|
注意:
S7500系列以太网交换机使能了IGMP-Snooping特性后,当收到某个组播组内的主机发出的IGMP离开报文时,会自动判断该组播组是否存在。如果该组播组不存在,则丢弃这个IGMP离开报文,不再转发。
IGMP Snooping配置任务包括:
表3-4 配置任务简介
配置任务 |
说明 |
详细配置 |
启动IGMP Snooping配置 |
必选 |
|
多种定时器配置 |
可选 |
|
端口从组播组中快速删除功能配置 |
可选 |
|
IGMP Snooping Filter过滤规则配置 |
可选 |
|
端口从组播组通过数量限制配置 |
可选 |
|
IGMP主机报告报文抑制 |
可选 |
|
组播VLAN配置 |
可选 |
为了控制IGMP Snooping是否在二层建立和维护MAC组播组转发表,可以使用下面的命令来启动IGMP Snooping。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动系统视图下的IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下IGMP Snooping功能处于关闭状态 |
进入VLAN视图 |
vlan vlan-id |
- |
启动VLAN视图下的IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能处于关闭状态 |
注意:
l 二、三层组播协议可以同时运行在交换机上,但是在同一个VLAN或该VLAN对应的虚接口上不能同时运行二层和三层组播协议。
l 在配置VLAN视图下的IGMP Snooping前,应首先在系统视图下使能全局IGMP Snooping,然后在VLAN视图下使能IGMP Snooping,否则IGMP Snooping功能不能在VLAN视图下进行配置。
本配置任务用来手工设置路由器端口老化定时器、组播组成员端口老化定时器、响应查询定时器。
l 如果在路由器端口老化时间之内没有收到路由器的IGMP通用查询报文,则交换机把该路由器端口从所有的MAC组播组的端口成员表中删除。
l 如果没有收到IGMP主机报告报文,则交换机向该端口发送IGMP特定组查询报文,同时启动该IP组播组的响应查询定时器。
l 在成员端口老化时间之内,如果没有收到IGMP主机报告报文,则交换机向该端口发送IGMP特定组查询报文,同时启动该IP组播组的响应查询定时器。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置路由器端口老化定时器 |
igmp-snooping router-aging-time seconds |
可选 缺省情况下端口老化时间为105秒 |
配置响应查询定时器 |
igmp-snooping max-response-time seconds |
可选 缺省情况下最大响应时间为10秒 |
配置组播组成员端口老化定时器 |
igmp-snooping host-aging-time seconds |
可选 缺省情况下组播组成员端口老化时间为260秒 |
正常情况下,IGMP-Snooping在接收到IGMP离开报文后不会直接将端口从组播组中删除,而是发送IGMP特定组查询报文,如果等待一段时间后没有得到响应,才将该端口从组播组中删除。
启动快速删除功能后,IGMP-Snooping收到IGMP离开报文时,直接将端口从组播组中删除。当端口下只有一个用户时,快速删除可以节省带宽。
表3-7 全局配置端口快速删除
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置所有端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭 |
表3-8 在端口上配置端口快速删除
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口 |
interface interface-type interface-number |
- |
配置端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭 |
IGMP Snooping Filter通过对连接交换机不同端口的用户配置组播过滤ACL,来限制用户可以点播的组播节目,从而实现不同的用户可以点播不同的节目组,达到区别对待VOD用户的目的。
在实际应用中,当用户点播某个组播节目时,会发起一个IGMP report报文,该报文到达交换机后,交换机检查接收端口上配置的组播过滤ACL,如果此端口可以加入这个组播组,则将这个端口加入到该组播组的转发端口列表中;否则交换机就丢弃该IGMP report报文,这样,数据流就不会送到该端口,从而达到控制用户点播组播节目的目的。
配置此特性前,请确定ACL规则已经配置完毕。
表3-9 IGMP Snooping Filter过滤规则配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置端口组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,组播过滤功能关闭。 |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置端口组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,组播过滤功能关闭。 |
& 说明:
l 一个端口可属于多个VLAN,端口所属VLAN每个只能配置一个ACL规则。
l 在配置此命令时如果端口不属于该VLAN,则此命令配置的过滤规则不会生效。
l 在配置此命令时,如果用户没有配置ACL规则,则系统拒绝所有的组播组的组播报文。
l 由于绝大多数的设备采用广播方式处理未知组播报文,因此,为了确保组播数据流不会被当成未知组播送到被过滤的端口,该功能一般都和未知组播丢弃功能组合使用。
对交换机端口进行端口组播组通过数量限制配置后,用户在点播组播组节目时,由于端口通过的组播组的数量受到限制,因此用户不能无限制的点播组播组。这样一来,端口带宽就得到了控制。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
限制端口上允许通过的组播组数量 |
igmp-snooping group-limit limit [ vlan vlan-list [ overflow-replace ] | overflow-replace ] |
必选 缺省情况下,不限制端口通过的组播组数量。 |
当二层交换机收到来自某组播组内主机的IGMP主机报告报文时,交换机会将该报文转发给与其相连的三层交换机端口。这样当一个组播组内有多台主机时,三层交换机会收到来自同一组播组的多台主机相同的IGMP主机报告报文。
当用户启动了IGMP主机报告报文抑制功能后,在一个查询间隔内二层交换机只会将收到的某组播组内的第一个IGMP主机报告报文转发给三层交换机,而丢弃来自同一组播组的其它IGMP主机报告报文。
表3-11 配置IGMP主机报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IGMP主机报告报文抑制 |
igmp-snooping report-aggregation |
必选 缺省情况下,IGMP主机报告报文抑制功能是关闭的 |
基于当前的组播点播方式,当处于不同的VLAN的用户点播时,每个VLAN会在本VLAN内复制一个组播流。这样的组播点播方式,浪费了大量的带宽。
用户可以通过配置组播VLAN的方式,将交换机的端口加入到组播VLAN内,并在使能了IGMP Snooping功能以后,使不同VLAN内的用户公用一个组播VLAN,组播流只是在一个组播VLAN内进行传输,从而节省了网络带宽。
由于组播VLAN与用户VLAN完全隔离,因此组播数据在传输过程中的安全性和带宽都得以保证。因此用户配置了组播VLAN后,组播信息流能够持续不断的发送到用户。
组播VLAN配置过程如下:
表3-12 组播VLAN的配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统使能IGMP Snooping功能 |
igmp-snooping enable |
必选 |
进入VLAN视图 |
vlan vlan-id |
- |
VLAN视图下使能IGMP Snooping功能 |
igmp-snooping enable |
必选 |
VLAN视图下使能组播VLAN功能 |
multicast-vlan enable |
必选 |
退出VLAN视图 |
quit |
- |
系统视图下配置组播VLAN与组播子VLAN的对应关系 |
multicast-vlan vlan-id subvlan vlan-list |
必选 |
l 已经是组播VLAN的VLAN不允许配置为组播子VLAN。
l 已经是组播子VLAN的VLAN不允许配置为组播VLAN。
l 已经是组播子VLAN的VLAN不允许配置为其他组播VLAN的子VLAN。
l 组播子VLAN只可以对应一个组播VLAN。
l 如用户先在VLAN接口使能了组播路由(multicast routing-enable),则对应的VLAN不能配置组播VLAN特性。
l 每台设备最多可以配置5个组播VLAN。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除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 ] |
|
显示组播VLAN的相关配置 |
display multicast-vlan [ vlan-id ] |
|
清除IGMP Snooping统计信息。 |
reset igmp-snooping statistics |
reset命令可以在用户视图下执行 |
配置交换机实现IGMP Snooping功能。
为了实现交换机的IGMP Snooping功能,需要在交换机上启动IGMP Snooping。
交换机上的路由器端口接到路由器上,其他非路由器端口(属于VLAN10)则接到用户的PC机上。
# 在系统视图下启动全局IGMP Snooping。
<H3C> system-view
[H3C] igmp-snooping enable
# 当VLAN10没有启动三层组播协议时,启动IGMP Snooping。
[H3C] vlan 10
[H3C-vlan10] igmp-snooping enable
配置交换机实现组播VLAN功能。
网络内的设备配置如下表,并且假定端口类型、VLAN划分、VLAN接口IP地址配置等配置步骤已经完成。
表3-14 网络设备配置列表
设备编号 |
设备类型 |
配置端口 |
端口连接设备 |
说明 |
Router A |
路由器 |
GigabitEthernet0/0/0 |
Switch B |
GigabitEthernet0/0/0端口属于VLAN1024,使能PIM-SM协议和IGMP协议 |
Switch B |
三层交换机 |
GigabitEthernet2/0/1 GigabitEthernet2/0/2 GigabitEthernet2/0/3 |
Router A Switch C Switch D |
GigabitEthernet2/0/1端口属于VLAN1024 配置GigabitEthernet2/0/2端口为TRUNK端口,属于VLAN2~VLAN4 配置GigabitEthernet2/0/3端口为TRUNK端口,属于VLAN5~VLAN7 |
Switch C |
二层交换机 |
与上层交换机相连的端口配置为Trunk端口 |
- |
连接用户,用户分属VLAN2~VLAN4,并且已经配置支持IGMP-Snooping |
Switch D |
二层交换机 |
与上层交换机相连的端口配置为Trunk端口 |
- |
连接用户,用户分属VLAN5~VLAN7,并且已经配置支持IGMP-Snooping |
配置VLAN 1024为组播VLAN,VLAN 2~7为组播子VLAN。
图3-4 组播VLAN网络示意图
# 配置Router A
<Router-A> system-view
[Router-A] multicast routing-enable
[Router-A] interface GigabitEthernet0/0/0
[Router-A-GigabitEthernet0/0/0] pim sm
[Router-A-GigabitEthernet0/0/0] igmp enable
[Router-A-GigabitEthernet0/0/0] quit
[Router-A]
# 配置Switch B。
<H3C> system-view
[H3C] igmp-snooping enable
[H3C] vlan 1024
[H3C-vlan1024]igmp-snooping enable
[H3C-vlan1024] multicast-vlan enable
[H3C-vlan1024] quit
[H3C] multicast-vlan 1024 subvlan 2 to 7
故障现象:交换机不能实现组播功能。
故障排除:
(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建立的组播组不正确,请向专业维护人员求助。
l 如果排除了原因2,则进入原因分析3。
(3) IGMP Snooping建立的组播转发表不正确。
l 输入命令display mac-address vlan查看在vlan-id下所建立的MAC组播转发表是否和IGMP Snooping建立的MAC组播转发表一致。
l 如果不一致,请向专业维护人员求助。
组播公共配置的任务是组播组管理协议和组播路由协议共有的内容。启动这两个协议前,应该在交换机上使能组播公共配置。
组播公共配置包括:
l 配置路由项数量限制。用户在配置组播路由协议后,会有大量的组播路由项上传上游至三层交换机(路由器)。为了防止大量的组播路由项耗尽三层交换机(路由器)的内存,用户可以通过配置组播路由项限制,防止大量的组播路由项上传。
l 组播源端口抑制配置。在网络中,某些用户会私设组播服务器,造成整个组播网络资源紧张,影响组播带宽和网络内合法信息传输。用户可以配置组播源端口抑制特性,在未授权的组播源端口上过滤组播报文,以防止该端口连接的用户私设组播服务器。
l 清除组播相关表项内容。用户还可以通过清除组播相关表项的内容,清空三层交换机(路由器)内存中存贮的组播路由表项,从而释放系统内存。
组播公共配置包括:
表4-1 配置任务简介
配置任务 |
说明 |
详细配置 |
启动组播并配置路由项数量限制 |
必选 |
|
组播源端口抑制配置 |
可选 |
|
组播wrongif报文抑制配置 |
可选 |
|
静态路由器端口配置 |
可选 |
|
清除组播相关表项内容 |
可选 |
表4-2 启动组播并配置路由项数量限制
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
启动组播 |
multicast routing-enable |
必选 启动组播组管理协议及组播路由协议前必须使能 |
配置组播路由项数量限制 |
multicast route-limit limit |
必选 缺省情况下,组播路由项的数量限制为1024 |
注意:
只有启动了组播,其他的组播配置才能生效。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统视图配置组播源端口抑制 |
multicast-source-deny enable [ interface interface-list ] |
必选 缺省情况下,系统关闭组播源端口抑制功能 |
表4-4 组播源端口抑制配置(以太网端口视图下)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
以太网端口视图配置组播源端口抑制 |
multicast-source-deny enable |
可选 缺省情况下,交换机所有端口关闭组播源端口抑制功能 |
交换机接收到组播数据报文时,会根据源地址、目的地址来查找组播转发表项,如果有匹配的转发表项,且报文是从转发表项的正确入接口接收到的,则按转发表项转发该数据报文。如果入接口不匹配,则会被认为是Wrongif报文。Wrongif报文需要上送CPU。
在某些网络中,会有大量的Wrongif报文上送交换机的CPU,造成系统负担过重。这时,可以配置抑制Wrongif报文的时间,实现不将Wrongif报文上送CPU处理,而是直接丢弃,防止大量报文冲击CPU。
表4-5 组播抑制wrongif报文时间配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置组播抑制wrongif报文时间 |
multicast wrongif-holdtime seconds |
必选 缺省情况下,组播抑制wrongif报文时间为15秒 |
注意:
l 配置时,取值如果是比15小,则系统配置的值为15;如果配置的是比15大,则按照用户的配置的范围,以15的倍数增加。例如:用户配置的是14,则系统配置的时间是15;如果用户配置的是16,则系统配置的时间是30;如果用户配置的是31,则系统配置的时间是45,以此类推。
l 当配置seconds为0时,系统不限制报文上送cpu。
在环形网络和存在双上行链路的网络中,为了避免链路故障发生的通信中断,用户通常会在同一连接上面配置主备两条链路。当主链路发生故障时,备份链路可以立即取代主链路,从而保证通信不会中断。
在使能了组播协议(如PIM、IGMP)的链路中,由于切换后交换机需要等待接收组播报文(如PIM Hello报文、IGMP通用组查询报文),将动态的路由器端口加入到相关的组播表项后,才可以恢复组播数据传输。因此造成暂时性的无法转发组播数据。对于IPTV等实时性比较强的业务而言,此段延迟会造成图像抖动中断等不良结果。
用户可以将端口配置成静态路由器端口,当链路状态发生切换时,可以立即将组播数据由主链路切换到备份链路,从而避免等待组播协议报文造成的组播数据传输延迟。并且此配置生效后,由于静态端口不存在超时的问题,因此此静态路由器端口除非是链路失效或取消配置,否则将永不超时。
在配置静态路由器端口时,要完成以下配置:
l 系统使能IGMP-Snooping
l 系统使能组播路由
l 将以太网端口划分到对应VLAN
l 配置对应VLAN的IP地址
l 在VLAN接口使能组播路由协议
l 以太网端口处于UP状态
表4-6 静态路由器端口配置
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
进入端口视图 |
interface interface-type interface-number |
- |
配置静态路由器端口 |
multicast static-router-port vlan vlan-id |
必选 |
退出端口视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置静态路由器端口 |
multicast static-router-port interface interface-type interface-number |
必选 |
注意:
静态路由器端口可以在以太网端口视图或者VLAN视图进行配置,但是相关的配置信息只在以太网端口视图下显示。
# 配置VLAN 2内的以太网端口Ethernet 2/0/1为静态路由器端口。
<H3C> system-view
[H3C] interface Ethernet 2/0/1
[H3C-Ethernet2/0/1] multicast static-router-port vlan 2
在用户视图下执行reset命令可以清除组播公共配置的相关统计信息。
表4-7 清除组播相关表项内容配置
操作 |
命令 |
说明 |
清除MFC转发项或转发项的统计信息 |
reset multicast forwarding-table [ statistics ] { all | { group-address [ mask { group-mask | group-mask-length } ] | source-address [ mask { source-mask | source-mask-length } ] | incoming-interface interface-type interface-number } * } |
清除相关的MFC( Multicast Forwarding Case,组播转发表项) |
清除组播核心路由表的路由项 |
reset multicast routing-table { all | { group-address [ mask { group-mask | group-mask-length } ] | source-address [ mask { source-mask | source-mask-length } ] | { incoming-interface interface-type interface-number } } * } |
清除组播核心路由表的相关路由表项 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播公共配置的运行情况,通过查看显示信息验证配置的效果。
组播转发表主要用于调试,一般情况下,用户可以查看组播核心路由表获得需要的信息。
操作 |
命令 |
说明 |
显示组播源端口抑制统计信息 |
display multicast-source-deny [ interface interface-type [ interface-number ] ] |
display命令可以在任意视图下执行 l 如不指定端口类型和端口号,则显示交换机上所有端口的组播源端口抑制信息。 l 如果仅指定端口类型,则显示该类型所有端口的组播源端口抑制信息。 l 如果同时指定端口类型和端口号,则显示指定端口的组播源端口抑制信息。 |
显示组播路由表信息 |
display multicast routing-table [ group-address [ mask { group-mask | mask-length } ] | source-address [ mask { group-mask | mask-length } ] | incoming-interface { interface-type interface-number | register } ]* |
display命令可以在任意视图下执行 |
显示组播转发表信息 |
display multicast forwarding-table [ group-address [ mask { group-mask | mask-length } ] | source-address [ mask { group-mask | mask-length } ] | incoming-interface { interface-type interface-number ] register } ]* |
|
查看含端口信息的组播转发表信息 |
display mpm forwarding-table [ group-address ] |
|
查看交换机的所有VLAN或某一VLAN下的IP组播组和MAC组播组信息 |
display mpm group [ vlan vlan-id ] |
在以太网交换机中,影响组播数据传输的共有三种表,这三种表的相互关系如下:
l 每个组播路由协议有一个协议自身的组播路由表。
l 各个组播路由协议的组播路由信息经过综合形成组播核心路由表。
l 组播核心路由表与组播转发表保持一致,而组播转发表真正控制着组播数据包的转发。
在二层的组播过程中,除了通过二层组播协议动态建立组播转发表项外,还可以通过手工配置组播MAC地址表项,将端口与组播地址表项进行静态绑定。
通常情况下,如果交换机收到的组播数据报文中的组播地址没有在本机注册,该报文会在该端口所在的VLAN内广播,通过配置组播静态MAC地址表项可以避免这种情况。
组播MAC地址的配置可以在系统视图进行:
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
必选 l mac-address必须为组播MAC地址 l vlan-id为端口所在的VLAN的ID号 |
注意:
l 如果要创建的组播MAC地址表项已经存在,则系统会给出提示。
l 如果一个组播MAC地址是手工添加的,则交换机不会再通过IGMP Snooping学习这个组播MAC地址。undo mac-address multicast命令只能够删除通过命令手工创建的组播MAC地址表项,无法删除交换机学习到的组播MAC地址表项。
l 如果要向通过命令创建的组播MAC地址表项中加入端口,需要先将该表项删除,然后重新创建该表项,再将指定端口加入到表项的转发端口中。
l 如在端口添加了组播MAC地址,则无法在此端口使能端口汇聚。如端口已经是汇聚端口,则不可以添加组播MAC地址。
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播MAC地址配置的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示已经添加的组播MAC地址表项 |
display mac-address multicast [ count ] |
display命令可以在任意视图下执行 |
IGMP(Internet Group Management Protocol,组播组管理协议)是TCP/IP协议族中负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
但是IGMP功能不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作是由各组播路由协议完成的。所有参与组播的主机必须实现IGMP功能。
IGMP协议分为两个功能部分:
l 主机侧,参与IP组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。
l 路由器侧,通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。
组播路由器是不需要也不可能保存所有主机的成员关系的,而主机需要保存自己加入了哪些组播组的相关信息。
IGMP在主机与路由器之间是不对称的:主机需要响应组播路由器的IGMP查询报文,即以IGMP主机报告报文响应;路由器周期性发送IGMP通用查询报文,然后根据收到的响应报文确定某个特定组在自己所在子网上是否有主机加入,并且当收到IGMP离开报文时,发出特定组的查询(IGMP版本2),以确定某个特定组是否已无成员存在。
到目前为止,IGMP有三个版本:IGMP版本1(由RFC1112定义)、IGMP版本2(由RFC2236定义)和IGMP版本3。目前应用最多的是版本2。
IGMP版本2对版本1所做的改进主要有:
共享网段即一个网段上有多个组播路由器的情况。在这种情况下,由于此网段下运行IGMP的路由器都能从主机那里收到成员资格报告消息。因此,只需要一个路由器发送成员资格查询消息,这就需要一个路由器选举机制来确定一个路由器作为查询器。
在IGMP版本1中,查询器的选择由组播路由协议决定。IGMP版本2对此做了改进,规定同一网段上有多个组播路由器时,具有最低IP地址的组播路由器被选举出来充当查询器。
在IGMP版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。造成组播路由器只能依靠组播组响应超时来确定组播成员的离开。而在版本2中,当一个主机决定离开时,如果它是对最近一条成员资格查询消息作出响应的主机,那么它就会发送一条离开组的消息。
在IGMP版本1中,组播路由器的一次查询,是针对该网段下的所有组播组。这种查询称为IGMP通用查询。
在IGMP版本2中,在IGMP通用组查询之外增加了IGMP特定组的查询,这种查询报文的目的IP地址为该组播组的IP地址,报文中的组地址域部分也为该组播组的IP地址。这样就避免了属于其它组播组成员的主机发送响应报文。
IGMP版本2增加最大响应时间字段,以动态地调整主机对组查询报文的响应时间。
IGMP的工作过程如下:
l 接收者主机向所在的共享网络报告组成员关系。
l 处于同一网段的所有使能了IGMP功能的路由器选举出查询器(IGMP v2)。
l 查询器周期性地向该共享网段发送组成员查询消息。
l 接收者主机接收到该查询消息后进行响应以报告组成员关系。
l 查询器依据接收的响应来刷新组成员的存在信息。
所有参与组播传输的接收者主机必须实现IGMP协议。参与IP组播传输的主机可以在任意时间、任意位置、成员总数不受限制地加入或退出组播组。
支持组播的路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而各主机只需要保存自己加入了哪些组播组。
Comware按照RFC1112实现IGMP v1协议,主要基于查询/响应机制完成组播组管理。IGMP借助三层路由协议选举的DR(Designated Router,指定路由器)路由器作为查询器,由DR负责发送查询消息。网络上IGMPv1消息交互如图6-1所示。
主机加入组播组的基本过程如下:
l IGMP查询器(例如DR)周期性地向共享网段内所有主机以组播方式(目的地址为224.0.0.1)发送IGMP通用组查询消息。
l 网络内所有主机都接收到该查询消息,只要某主机(如HostB和HostC)对任意组播组G1感兴趣,则以组播方式发送IGMP主机报告报文(其中携带组播组G1的地址),来宣告自己将加入该组播组。
l 网络中所有主机和路由器都接收到该IGMP主机报告报文,并获知组播组G1地址信息,此时网络中其它也打算加入该组播组G1的主机将不再发送针对相同组播组的IGMP主机报告报文;而网络中预备加入另一组播组G2的其它主机则发送针对组播组G2的IGMP主机报告报文以响应查询消息。
l 经过查询/响应过程后,IGMP路由器了解到本网络内存在组播组G1对应的接收者,生成(*,G1)组播转发项并依次作为组播信息的转发依据。
l 组播源发出的数据经过组播路由到达IGMP路由器,如果IGMP路由器所连接的网络中有接收者,组播数据则转发到该网段,接收者主机获得该数据。
由于IGMPv1版本没有定义IGMP离开报文,因此当主机离开某组播组时,主要是基于查询无响应进而超时的思路实现。
当网络中的所有用户都退出该组播组后,相关网段对应的分支就从组播树中被剪枝。
在一个大规模的网络中应用组播路由协议时(例如PIM-DM),会存在很多末梢网络(末梢区域),对这些末梢网络进行配置和管理是一件很繁重的工作。
为了减少这些配置和管理工作,同时又不影响末梢网络的组播连接,可以在末梢网络的三层交换机(图6-2中的Switch B)上配置IGMP Proxy,三层交换机将自己所连接的主机发出的IGMP主机报告报文或IGMP离开报文进行转发。配置了IGMP Proxy后,对于外部网络来说,末梢三层交换机不再是一个PIM邻居,而是一台主机,只有当该三层交换机有直连成员时,才会接收相应组的组播数据。
图6-2是一个末梢网络IGMP Proxy示意图。
Switch B做如下配置:
l VLAN 1接口和VLAN 2接口上首先使能组播路由,然后配置PIM协议,并在VLAN 1接口配置IGMP。
l 在VLAN 2接口上配置VLAN 1接口为其到达外部网络的IGMP Proxy出接口(首先应该在接口使能IGMP协议,然后配置命令igmp proxy)。
Switch A做如下配置:
l VLAN 1接口上首先使能组播路由,并配置IGMP。
l 配置pim neighbor-policy,滤除33.33.33.0/24网段的PIM邻居,即不将Switch B作为其PIM邻居。
这样,当末梢网络中的Switch B从VLAN 2接口收到主机发出的IGMP加入或IGMP离开消息后,将该IGMP消息的源地址改为VLAN 1接口地址33.33.33.2,并将该消息向Switch A的VLAN 1接口发送。对Switch A来说,就象接口VLAN 1有直连主机存在一样。
同样,Switch B在收到外部网络三层交换机Switch A发送的IGMP通用组或IGMP特定组查询消息后,也将查询消息的源IP地址改为VLAN 2接口IP地址22.22.22.1,并将该消息从VLAN 2接口发送出去。
在图6-2中,称Switch B的VLAN 2接口为被代理接口,Switch B的VLAN 1接口为代理接口。
启动组播后,必须在接口上使能IGMP协议,才能进行其他IGMP配置。
IGMP的配置包括:
表6-1 配置任务简介
配置任务 |
说明 |
详细配置 |
IGMP版本配置 |
可选 |
|
IGMP查询报文配置 |
可选 |
|
接口上对IGMP组播组的配置 |
可选 |
|
路由器端口加入指定组播组配置 |
可选 |
|
IGMP Proxy配置 |
可选 |
|
IGMP主机报告报文抑制 |
可选 |
|
删除接口上已经加入的IGMP组配置 |
可选 |
表6-2 IGMP版本配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
使能组播路由协议 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,系统使能了IP组播路由,则所有三层接口自动使能IGMP |
配置三层交换机(路由器)使用的IGMP版本 |
igmp version { 1 | 2 } |
可选 缺省情况下,IGMP版本使用版本2 |
注意:
IGMP各版本之间不能自动转换。因此,应该配置子网上的所有三层交换机使用同一IGMP版本。
三层交换机在所连接的网段上周期性的发送IGMP通用查询报文,通过解析返回的IGMP主机报告报文,获知该网段内哪些组播组有成员。组播路由器周期性地发送查询报文,当得到某一组成员的IGMP主机报告报文的时候,刷新该网段相应的组成员关系信息。
在共享网络上,由查询路由器(简称查询器)负责维护接口上IGMP主机报告报文。用户配置相关特性后,在IGMP查询器收到主机发送的IGMP离开报文时,将按照用户配置的时间间隔和次数发送IGMP特定组查询报文。
假定组播组内的某一主机决定离开组播组,相关的过程如下:
l 该主机发送IGMP离开报文。
l IGMP查询器收到该报文,必须按照命令igmp lastmember-queryinterval设置的时间间隔seconds(如果没有配置该命令,则时间间隔seconds为1秒),按照命令igmp robust-count设置的健壮系数robust-value(如果没有配置该命令,则健壮系数robust-value为2),发送robust-value次IGMP特定组查询报文。
l 其他主机收到IGMP查询器发送的IGMP特定组查询报文,如果对该组感兴趣,就会在该报文规定的最大响应时间内发送IGMP主机报告报文。
l IGMP查询器如果在robust-value×seconds时间内,收到其他主机发送的IGMP主机报告报文,就会继续维护该组的组成员关系。
l 如果经过robust-value×second时间后,仍然没有收到任何主机发送的IGMP主机报告报文,就认为该组已经超时,不再维护该组的组成员关系。
此过程只符合IGMP查询路由器运行在IGMP版本2时的情况。
如果主机运行的是IGMP版本1,离开某个组时并不发送IGMP离开报文,不会出现和上述过程一致的情况。
IGMP查询器存在时间是有一定限制的,原查询器在设定的时间内没有发送查询报文,则另一路由器取代其成为新的查询报文发送者。
当主机接收到一条查询消息后,主机会为其所属的每个组播组都设置一个计时器,计时器的值在0~最大响应时间中随机选取,当其中任何一个计时器的值减为0时,主机就会发送该组播组的成员报告消息。
合理设置最大响应时间,可以使主机快速响应查询信息,三层交换机也就能快速地掌握组播组成员的存在状况。
表6-3 IGMP查询报文配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
使能组播路由协议 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,系统使能了IP组播路由,则所有三层接口自动使能IGMP |
配置查询间隔 |
igmp timer query seconds |
可选 缺省情况下,查询时间间隔为60秒 |
配置发送IGMP特定组查询报文的时间间隔 |
igmp lastmember-queryinterval seconds |
可选 缺省情况下,IGMP特定组查询报文的时间间隔为1秒 |
配置发送IGMP特定组查询报文的次数 |
igmp robust-count robust-value |
可选 缺省情况下,发送IGMP特定组查询报文的次数为2次 |
配置IGMP查询器存在时间 |
igmp timer other-querier-present seconds |
可选 l 缺省情况下,IGMP查询器存在的时间值为120秒 l 三层交换机在igmp timer query命令指定的间隔的2倍时间内没有收到查询消息,就认为原来的查询器失效 |
配置IGMP最大查询响应时间 |
igmp max-response-time seconds |
可选 缺省情况下,IGMP最大查询响应时间为10秒 |
注意:
在一个网段中有多个组播路由器时,由查询器负责向该网段上的所有主机发送IGMP查询报文。
用户可以在接口上对IGMP组播组进行以下配置:
l 限制组播组加入数量
l 限制接口所服务的组播组的范围
如果不限制在交换机的组播路由接口上的IGMP组加入数量,在加入了大量的组播组后,就有可能耗尽交换机的内存,导致交换机路由接口发生故障。
用户可以在交换机的接口上配置IGMP组播组加入数量限制,用户在点播组播组的节目时,由于组播组的数量由于受到限制,从而使网络的带宽得到了控制。
三层交换机通过接收到的IGMP主机报告报文来确定该网段的组成员关系。用户可以通过配置,在每一个接口上设一个过滤器,以限制接口所服务的组播组范围。
表6-4 接口上对IGMP组播组的配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
使能组播路由协议 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,系统使能了IP组播路由,则所有三层接口自动使能IGMP |
配置接口上加入IGMP组的数量限制 |
igmp group-limit limit |
必选 缺省情况下,VLAN接口上加入的IGMP组数量为256 |
限制接口所服务的组播组范围 |
igmp group-policy acl-number [ 1 | 2 | port interface-type interface-number [ to interface-type interface-number ] ] |
可选 l 缺省情况下不设置过滤器,即接口允许任意组播组通过 l 如果指定了port参数,指定的port必须属于该VLAN接口所在VLAN l 用户可在acl中配置过滤相关的组播组IP地址 l 1、2为IGMP的版本号,缺省情况下使用IGMP v2版本 |
退出接口视图 |
quit |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
限制接口所服务的组播组范围 |
igmp group-policy acl-number vlan vlan-id |
可选 l 缺省情况下不设置过滤器,即接口允许任意组播组通过 l 该端口必须属于命令所指定的VLAN,并且要求该VLAN接口已经使能了IGMP协议,否则配置此命令不会起作用。 |
注意:
l 如果在接口加入的组播组的数量已经达到用户配置的限制数量,则不允许新的组加入。
l 如在接口配置加入组播组限制时,接口已有的IGMP组播组比要配置的值多,系统自动删除某些已有的组播组,直到接口组播组数量符合配置的数量限制。
通常情况下,运行IGMP的主机会对组播交换机的IGMP查询报文进行响应,如果由于某种原因无法响应,就可能导致组播交换机认为该网段没有该组播组的成员,从而取消相应的路径。
为避免这种情况的发生,配置交换机VLAN接口下的某个端口为路由器端口,使其成为组播组成员,当从该端口收到IGMP查询报文时,由组播交换机进行响应,从而保证三层接口所在网段能够继续收到组播报文。
表6-5 路由器端口加入指定组播组配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,接口上禁止IGMP。 |
配置路由器端口加入组播组 |
igmp host-join group-address port interface-list |
可选 缺省情况下,路由器端口不加入任何组播组。 |
退出VLAN接口视图 |
quit |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置路由器端口加入组播组 |
igmp host-join group-address vlan vlan-id |
可选 缺省情况下,路由器端口不加入任何组播组。 |
为了减少对末梢网络进行的配置和管理工作,同时又不影响末梢网络的组播连接,可以配置IGMP Proxy。
在末梢网络三层交换机上配置IGMP Proxy后,对于外部网络来说,末梢三层交换机只是一台主机,只有当该三层交换机有直连成员时,才会接收相应组的组播数据。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由 |
multicast routing-enable |
必选 |
进入和外部网络相连的VLAN 接口视图 |
interface Vlan-interface interface-number |
- |
使能IGMP协议 |
igmp enable |
必选 缺省情况下,系统使能了IP组播路由,则所有三层接口自动使能IGMP |
配置IGMP Proxy |
igmp proxy Vlan-interface interface-number |
必选 |
缺省情况下,不使能IGMP Proxy功能。
注意:
l 代理接口也要使能组播路由,并且使能IGMP协议。
l 配置igmp proxy前需要先在接口上使能PIM协议,否则IGMP Proxy功能不能生效。
l 一个接口只能配置一个IGMP代理接口。
当二层交换机收到来自某组播组内主机的IGMP主机报告报文时,交换机会将该报文转发给与其相连的三层交换机端口。这样当一个组播组内有多台主机时,三层交换机会收到来自同一组播组的多台主机相同的IGMP主机报告报文。
当用户启动了IGMP主机报告报文抑制功能后,在一个查询间隔内三层交换机只会接收某组播组内的第一个IGMP主机报告报文,而丢弃来自同一组播组的其它IGMP主机报告报文。
表6-7 配置IGMP主机报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IGMP主机报告报文抑制 |
igmp report-aggregation |
必选 缺省情况下,IGMP主机报告报文抑制功能是关闭的 |
用户可以删除路由器所有接口上所有已加入的IGMP组,也可以删除特定接口上所有已加入的IGMP组,或者删除特定接口上某个特定IGMP组地址或组地址网段。
此配置在用户视图下执行。
表6-8 删除接口上已加入的IGMP组配置
操作 |
命令 |
说明 |
删除接口上已加入的IGMP组 |
reset igmp group { all | interface interface-type interface-number { all | group-address [ group-mask ] } } |
可选 |
注意:
删除接口上已加入的IGMP组后,不影响该组的再次加入。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP的运行情况,通过查看显示信息验证配置的效果。
表6-9 IGMP显示
操作 |
命令 |
说明 |
显示IGMP组播组成员信息 |
display igmp group [ group-address | interface interface-type interface-number ] |
display命令可以在任意视图下执行 |
显示接口的IGMP配置和运行信息 |
display igmp interface [ interface-type interface-number ] |
PIM(Protocol Independent Multicast,协议无关组播)称为协议无关组播,表示为IP组播提供路由的单播路由协议可以是静态路由、RIP、OSPF、IS-IS、BGP等,组播路由和单播路由协议无关,只要单播路由协议能产生路由表项即可。
借助RPF(Reverse Path Forwarding,逆向路径转发)机制,PIM实现了在网络中传递组播信息。为了描述上的方便,我们把由支持PIM协议的组播路由器所组成的网络称为PIM组播域。
PIM-DM(Protocol Independent Multicast Dense Mode)称为协议无关组播-密集模式,属于密集模式的组播路由协议,适用于小型网络。
这种网络的特点是:
l 组播组的成员相对比较密集。
l PIM-DM假设网络中的每个子网都存在至少一个对组播源感兴趣的接收站点。
l 组播数据包被扩散到网络中的所有点,与此伴随着相关资源(带宽和路由器的CPU等)的消耗。
为了减少这些宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行Prune剪枝操作,只保留包含接收者的分支。为了使剪掉的有组播数据转发需求的分支能够重新接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。
为了减少等待被剪掉的分支恢复成转发状态的延时时间,密集模式组播路由协议使用Graft嫁接机制主动恢复组播报文的转发。这种周期性的扩散和剪枝现象是密集模式协议的特征,只能适合规模较小的局域网。密集模式采用的“扩散—剪枝”技术在广域网上是不可取的。
一般说来,密集模式下数据包的转发路径是“有源树”——以“组播源”为根、组播组成员为枝叶的一棵树。由于有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树SPT(Shortest Path Tree)。
PIM-DM的工作过程可以概括为:
l 邻居发现
l 构建SPT树
l 嫁接阶段
l RPF检查
l Assert机制
在PIM-DM网络中,刚启动的组播路由器需要使用Hello消息来发现邻居,并维护邻居关系。通过各路由器之间周期性地使用Hello消息保持联系,从而构建和维护了SPT树。
构建SPT树的过程也就是扩散/剪枝过程(Flooding&Prune)。
过程如下:
l PIM-DM假设网络上的所有主机都准备接收组播数据。
l 当某组播源S开始向组播组G发送数据时,路由器接收到组播报文后,首先根据单播路由表进行RPF检查。
l 如果检查通过则创建一个(S,G)表项,然后将数据向网络上所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。
l 如果没有通过RPF检查,路由器认为组播报文从错误的接口输入,则将报文丢弃。
经过这个过程,PIM-DM组播域内每个路由器上都会创建(S,G)表项。
如果下游节点没有组播组成员,则向上游节点发Prune剪枝消息,通知上游节点不用再转发组播数据到该分支。上游节点收到Prune剪枝消息后,就将相应的接口从其组播转发表项(S,G)对应的输出接口列表中删除,剪枝过程继续直到PIM-DM中仅剩下了必要的分支,这就建立了一个以组播源S为根的SPT树。
剪枝过程最先由叶子路由器发起,如图7-1所示,没有接收者的路由器(例如和HostA相连的路由器)主动发起剪枝过程。
上述过程就称为扩散—剪枝过程。各个被剪枝的节点提供超时机制,当剪枝超时后重新开始扩散—剪枝过程。PIM-DM的扩散—剪枝机制周期性进行。
当被剪枝的下游节点需要恢复到转发状态时,该节点使用Graft嫁接消息通知上游节点。例如若图7-1中的用户A恢复接收组播数据,则Graft嫁接消息逐跳向组播源S传递,中间节点接收到Graft嫁接消息后回应确认,从而先前被剪掉的分支恢复信息传输。
PIM-DM采用RPF检查机制,利用现存的单播路由表、组播静态路由表、MBGP路由表来构建一棵从数据源S始发的组播转发树。
过程如下:
l 当一个组播包到达时,路由器首先判断到达路径的正确性。
l 如果到达接口是单播路由指示的通往组播源S的接口,就认为这个组播包是从正确路径而来。
l 如果不是,则将组播包作为冗余报文丢弃。
作为路径判断依据之一的单播路由信息可以来源于任何一种单播路由协议,如RIP、OSPF发现的路由信息,不依赖于特定的单播路由协议。至于组播静态路由,需要手工配置;MBGP路由表由MBGP协议提供。
在共享网络(如Ethernet)中会出现相同报文的重复发送。例如LAN网段上包含多台组播路由器A、B和C,各自都有到组播源S的接收途径。如图7-2所示:
当路由器A和B都从上游接收到组播源S发出的组播数据报文后,都会向Ethernet网络上转发该组播报文,这时下游节点组播路由器C就会收到 两份完全相同的组播报文。
为了避免这种情况,就需要通过Assert机制来选定一个唯一的转发者。网络中的各路由器通过发送Assert报文选出一条最优的路径,如果两条或两条以上路径的优先级和到组播源的开销相同,则IP地址最大的路由器获胜成为该(S,G)项的上游邻居,由它负责该(S,G)组播报文的转发,而其他落选路由器则剪掉对应的接口以禁止转发信息。
PIM-SM(Protocol Independent Multicast Sparse Mode)称为协议无关组播-稀疏模式,属于稀疏模式的组播路由协议,主要用于:
l 组成员分布相对分散
l 范围较广
l 大规模网络
稀疏模式默认所有主机都不需要接收组播包,只向明确需要组播包的主机转发。
为了使接收者能够接收到IGMP特定组的组播数据流,PIM-SM借助汇聚点RP(Rendezvous Point)向所有拥有接收者的PIM-SM路由器转发组播信息。引入RP进行组播转发,减少了数据报文和控制报文占用的网络带宽,降低了路由器的处理开销。
在接收侧,连接信息接收者的路由器向该组播组对应的RP发送组加入消息,加入消息经过一个个路由器后到达根部(即RP汇聚点),所经过的路径就变成了共享树RPT(Rendezvous Point Tree,汇聚点树)的分支。
发送端如果想要往某组播组发送数据,首先由第一跳路由器向RP汇聚点进行注册,注册消息到达RP后触发源树建立。之后组播源把数据发向RP汇聚点,当数据到达了RP汇聚点后,组播数据包被复制并沿着RPT树传给接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达接收者。
PIM-SM不依赖于特定的单播路由协议,而是使用现存的单播路由表进行RPF检查。
PIM-SM的工作过程主要有:
l 邻居发现
l DR选举
l RP发现
l RPT共享树生成
l 组播源注册
l RPT向SPT切换
邻居发现机制与PIM-DM中的描述相同,也是通过各路由器之间彼此发送Hello消息实现的,这里不再介绍。
借助Hello消息还可以为共享网络(如Ethernet)选举DR,DR将作为本网络中组播信息的唯一转发者。无论是和组播源S连接的网络,还是和接收者连接的网络,只要网络为共享媒介则需要选举DR,接收者侧DR向RP发送Join加入消息;组播源侧DR向RP发送Register注册消息。DR选举如图7-3所示:
共享媒介网络上的各路由器相互之间发送Hello消息(携带DR优先级选项),拥有最高DR优先级路由器将被选举为本网络中的DR。假如优先级相同,则拥有最大IP地址的路由器被选举为DR。当DR出现故障时,接收Hello消息将会超时,邻居路由器之间会触发新的DR选举过程。
& 说明:
在PIM-DM网络中,DR主要是充当IGMPv1的查询器。
RP是PIM-SM域中的核心路由器,路由组播数据创建的共享树是以RP为树根的,从组播组到RP存在一个映射,一个组播组映射到一个RP上,不同的组可以映射到同一RP上。
在小型并且简单的网络中,组播信息量少,全网络仅依靠一个RP进行信息转发即可,此时可以在SM域中各路由器上静态指定RP位置。
但是更多的情况下,PIM-SM网络规模都很大,通过RP转发的组播信息量巨大,为了缓解RP的负担同时优化共享树的拓扑结构,不同组播组应该对应不同的RP,此时就需要自举机制来动态选举RP,此时需要配置自举路由器BSR(BootStrap Router)。
BSR是PIM-SM网络里的管理核心,主要负责:
l 负责收集网络中Candidate-RP(C-RP)发来的Advertisement宣告信息。
l 为每个组播组选择部分C-RP信息以组成RP-Set集(即组播组和RP的映射数据库)。
l 发布到整个PIM-SM网络,从而使网络内的所有路由器(包括DR)都会知道RP的位置。
在一个PIM域中,需要配置一个或多个候选BSR,候选BSR之间通过自动选举,产生自举路由器BSR,负责收集并发布RP信息。下面简单描述一下候选BSR之间的自动选举:
l 在将路由器配置为候选BSR时,必须同时指定一个启动了PIM-SM的接口。
l 每个候选BSR开始都认为自己是本PIM-SM的BSR,并使用这个接口的IP地址作为BSR地址,发送自举报文(Bootstrap message)。
l 当候选BSR收到其它路由器发来的自举报文时,它将新收到的自举报文的BSR地址与自己的BSR地址进行比较,比较标准包括优先级和IP地址,优先级相同的情况下,较大的IP地址被认为是更好的。如果前者更好,则将这个新的BSR地址替换自己的BSR地址,并且不再认为自己是BSR。否则,保留自己的BSR地址,继续将自己视为BSR。
RP和BSR在网络中的位置如图7-4所示:
一个网络(或某管理域)内部只能选举出一个BSR,但可以配置多个Candidate-BSR(C-BSR)。这样,一旦BSR发生故障后,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。
同样,一个PIM-SM域内也可以配置多个C-RP,由BSR机制计算出和每个组播组对应的RP。
例如接收者主机为用户B和C。当接收者主机加入一个组播组G时,通过IGMP报文知会与该主机直接相连的叶子路由器,叶子路由器掌握组播组G的接收者信息,然后朝着RP方向往上一级节点发送加入组播组的Join消息。如图7-5所示:
从叶子路由器到RP之间途经的每个路由器都会在转发表中生成(*,G)表项,这些沿途经过的路由器就形成了RP共享树(RPT)的一个分支。其中(*,G)表示从任意源来的信息去往组播组G。RPT共享树以RP为根,以接收者为叶子。
当从组播源S来的发往组播组G的报文流经RP时,报文就会沿着已经建立好的RPT共享树路径到达叶子路由器,进而到达接收者主机。
当某接收者对组播信息不再感兴趣时,离该接收者最近的组播路由器会逆着RPT树朝RP方向逐跳发送Prune剪枝消息。第一个上游路由器接收到该剪枝消息,在接口列表中删除和下游路由器之间的链路,并检查自己是否拥有感兴趣的接收者,如果没有则继续向上游转发该剪枝消息。
为了向RP通知组播源S的存在,当组播源S向组播组G发送了一个组播报文时,与组播源S直接相连的路由器接收到该组播报文后,就将该报文封装成Register注册报文,并单播发送给对应的RP。如图7-6所示。
图7-6 组播源注册示意图
当RP接收到来自组播源S的注册消息后,一方面解封装注册消息并将组播信息沿着RPT树转发到接收者,另一方面朝组播源S逐跳发送(S,G)加入消息,从而让RP和组播源S之间的所有路由器上都生成了(S,G)表项,这些沿途经过的路由器就形成了SPT树的一个分支。SPT源树以组播源S为根,以RP为目的地。
组播源S发出的组播信息沿着已经建立好的SPT树到达RP,然后由RP将信息沿着RPT共享树进行转发。
当离接收者最近的组播路由器发现从RP发往组播组G的组播报文速率超过了阈值时,就向朝着组播源S的上一级路由器发送(S,G)加入消息,Join加入消息经过一个个路由器后达到离组播源最近的路由器(即第一跳路由器),沿途经过的所有路由器都拥有了(S,G)表项,从而建立了SPT树分支。
随后,最后一跳路由器向RP逐跳发送包含RP位的Prune剪枝消息,RP收到消息后会向组播源反向转发Prune剪枝消息,从而最终实现组播信息流从RPT树切换到SPT树。
切换到SPT树后,组播信息将直接从组播源S发送到接收者。通过RPT树到SPT树的切换,PIM-SM能够以比PIM-DM更经济的方式建立SPT转发树。
S7500以太网交换机没有设定相关的阈值,当交换机接收到沿RPT转发下来的组播数据时,将会自动进行更新输入接口,并向RP方向发送剪枝信息。
用户在配置交换机时,可以在接口视图下对交换机的PIM功能进行相应的配置。这些配置包括:
表7-1 配置任务简介
配置任务 |
说明 |
详细配置 |
接口使能PIM-DM(PIM-SM) |
必选 |
|
Hello报文发送间隔配置 |
可选 |
|
PIM邻居配置 |
可选 |
|
清除PIM相关表项 |
可选 |
表7-2 接口使能PIM-DM(PIM-SM)配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能PIM-DM /PIM-SM |
pim dm / pim sm |
可选 配置接口通过的PIM协议类型 |
PIM-DM协议需要分别在各个接口上启动,在接口上配置了PIM-DM之后,PIM-DM会定期发送PIM协议Hello报文,并且处理PIM邻居发送的协议报文。
表7-3 Hello报文发送间隔配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能PIM-DM /PIM-SM |
pim dm / pim sm |
必选 配置接口通过的PIM协议类型 |
设置接口的Hello报文发送间隔 |
pim timer hello seconds |
必选 缺省的Hello报文发送间隔是30秒 |
注意:
l 在接口上启动了PIM-DM协议后,不能再对此接口启动PIM-SM协议,反之亦然。
l 在交换机的某接口上启动了PIM-DM协议后,交换机其他VLAN接口上只能启动PIM-DM,而不能启动PIM-SM协议,反之亦然。
为防止建立大量的PIM邻居关系后耗尽路由器内存,导致路由器故障,可以对路由器接口上PIM邻居的数量进行限制。而路由器PIM邻居总数量的限制由系统内部定义,用户不能通过命令改变。
用户可以通过配置基本访问控制列表,配置范围从2000~2999(具体请参见本手册内ACL相关内容),限制只有通过过滤的三层交换机(路由器)才能作为当前接口的PIM邻居。
表7-4 PIM邻居配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能PIM-DM /PIM-SM |
pim dm / pim sm |
必选 配置接口通过的PIM协议类型 |
配置接口的PIM邻居数量限制 |
pim neighbor-limit limit |
可选 缺省情况下,接口的PIM邻居数量上限为128 |
配置PIM邻居过滤规则 |
pim neighbor-policy acl-number |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,接口不使能邻居过滤规则 |
注意:
如果在用户配置的时候,该接口上的PIM邻居数已经超过了配置值,原有的PIM邻居不会被删除。
在用户视图下执行reset命令可以清除组播PIM的相关统计信息。
表7-5 清除PIM相关表项配置
操作 |
命令 |
说明 |
清除PIM路由项 |
reset pim routing-table { all | { group-address [ mask group-mask | mask-length group-mask-length ] | source-address [ mask source-mask | mask-length source-mask-length ] | { incoming-interface { interface-type interface-number | null } } } * } |
用户视图下进行相关配置 |
清除PIM邻居 |
reset pim neighbor { all | { neighbor-address | interface interface-type interface-number } * } |
用户视图下进行相关配置 |
配置PIM-DM需要依次进行如下操作,当路由器在PIM-DM协议域中运行时,建议在非边界路由器的全部接口启动PIM-DM。
表7-6 组播源(组)过滤规则配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入PIM视图 |
pim |
- |
对接收的组播数据报文进行源(组)过滤 |
source-policy acl-number |
可选 用户可在acl中配置过滤相关的组播组IP地址 |
注意:
l 如果配置基本访问控制列表,则对接收的所有组播数据报文匹配源地址,未通过匹配的报文将被丢弃。
l 如果配置高级访问控制列表,则对接收的所有组播数据报文匹配源地址和组地址,未通过匹配的报文将被丢弃。
PIM-SM的配置包括:
表7-7 配置任务简介
配置任务 |
说明 |
详细配置 |
组播源(组)过滤规则配置 |
可选 |
|
BSR/RP配置 |
可选 |
|
PIM-SM域边界配置 |
可选 |
|
RP对DR发送来得注册报文过滤配置 |
可选 |
表7-8 BSR/RP配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入PIM视图 |
pim |
- |
配置候选BSR |
c-bsr interface-type interface-number hash-mask-len [ priority ] |
可选 缺省情况下,交换机没有设置候选BSR,优先级的缺省值为0 |
配置候选RP |
c-rp interface-type interface-number [ group-policy acl-number | priority priority ]* |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,交换机没有设置候选RP,优先级的缺省值为0 |
配置静态RP |
static-rp rp-address [ acl-number ] |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,交换机没有设置静态RP |
限定合法BSR的范围 |
bsr-policy acl-number |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,交换机没有设置合法BSR的范围 |
限定合法C-RP的范围 |
crp-policy acl-number |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,交换机没有设置合法的C-RP范围 |
注意:
l 在同一台三层交换机上只能配置一个候选BSR,在另外的接口上配置BSR会取代先前的配置。
l 建议候选BSR和候选RP应配置在骨干网的三层交换机上。
l 配置RP时,若没有指定所服务的组播组范围,该RP为所有组播组服务。否则,所服务组的范围限定为指定范围的组播组。
l 用户可以配置基本访问控制列表,对相关的组播IP地址进行过滤,从而控制静态RP所服务的组播组范围。
l 如果使用静态RP,PIM域内所有路由器必须采用相同的配置。
l 如果配置的静态RP地址是本机某个状态为UP的接口地址,本机就作为静态RP。
l 在BSR机制选举产生的RP有效时,静态RP不起作用。
l 作为静态RP的接口不必使能PIM协议。
l 合法BSR的范围限制只是为了防止网络中合法的BSR被恶意取代,除此范围以外的其他BSR信息不会被三层交换机接收,保护网络中BSR的安全性。
l 合法C-RP的范围限制只是为了防止C-RP欺骗,可以限定合法C-RP的范围,并且限定每个C-RP所服务的组范围。
表7-9 PIM-SM域边界配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能PIM-SM |
pim sm |
必选 配置接口通过的PIM协议类型 |
配置PIM-SM域边界 |
pim bsr-boundary |
必选 缺省情况下,交换机不设置域边界 |
注意:
l 设置PIM-SM域边界后,自举报文(BootStrap message)从任何方向都不能穿过边界。通过这种方法,可以分割PIM-SM域。
l 在配置了此特性之后,自举报文不能通过该边界,但其他PIM报文可以通过域边界。能够有效地将网络划分成使用不同BSR的区域。
在PIM-SM网络中,通过注册报文过滤机制,可以在RP上控制哪些源向哪些组发送报文,即RP可以对DR发送来的注册报文进行过滤,只接受特定的报文。
表7-10 RP对DR发送来的注册报文过滤配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
使能组播路由协议 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能PIM-SM |
pim sm |
必选 配置接口通过的PIM协议类型 |
退出VLAN视图 |
quit |
- |
进入PIM视图 |
pim |
- |
配置RP对DR发来的注册报文进行过滤 |
register-policy acl-number |
必选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,交换机对DR发来的注册报文不进行过滤 |
注意:
l 如果某个源组表项(S,G)被ACL拒绝,或者ACL没有定义对它的操作,或者没有定义ACL,RP都会向DR发送RegisterStop消息,阻止该组播数据流的注册过程。
l 只有与ACL的permit语句匹配的注册报文才会被RP接受。指定一个没有定义的ACL将使RP拒绝所有的注册报文。
在完成上述配置后,在任意视图下执行display命令可以显示配置后PIM的运行情况,通过查看显示信息验证配置的效果。
表7-11 PIM配置显示和维护
配置 |
命令 |
说明 |
显示PIM协议组播路由表 |
display pim routing-table [ { { *g [ group-address [ mask { mask-length | mask } ] ] | **rp [ rp-address [ mask { mask-length | mask } ] ] } | { group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] } * } | incoming-interface { interface-type interface-number | null } | { dense-mode | sparse-mode } ] * |
display命令可以在任意视图下执行 |
显示PIM协议接口信息 |
display pim interface [ interface-type interface-number ] |
|
显示PIM相邻路由器信息 |
display pim neighbor [ interface interface-type interface-number ] |
|
显示BSR信息 |
display pim bsr-info |
|
显示RP信息 |
display pim rp-info [ group-address ] |
Lanswitch1通过接口Vlan-interface 10连接到Multicast Source(组播源);通过接口Vlan-interface 11连接到Lanswitch2;通过接口Vlan-interface 12连接到Lanswitch3。通过运行PIM-DM,在RECEIVER 1、RECEIVER 2与Multicast Source间实现组播。
只列出Lanswitch1的配置步骤,Lanswitch2、Lanswitch3类同。
# 启动组播路由协议。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口上启动IGMP和PIM-DM协议。
[H3C] vlan 10
[H3C-vlan10] port Ethernet 2/0/2 to Ethernet 2/0/3
[H3C-vlan10] quit
[H3C] vlan 11
[H3C-vlan11] port Ethernet 2/0/4 to Ethernet 2/0/5
[H3C-vlan11] quit
[H3C] vlan 12
[H3C-vlan12] port Ethernet 2/0/6 to Ethernet 2/0/7
[H3C-vlan12] quit
[H3C] interface Vlan-interface 10
[H3C-Vlan-interface10] ip address 1.1.1.1 255.255.0.0
[H3C-Vlan-interface10] igmp enable
[H3C-Vlan-interface10] pim dm
[H3C-Vlan-interface10] quit
[H3C] interface Vlan-interface 11
[H3C-Vlan-interface11] ip address 2.2.2.2 255.255.0.0
[H3C-Vlan-interface11] pim dm
[H3C-Vlan-interface11] quit
[H3C] interface Vlan-interface 12
[H3C-Vlan-interface12] ip address 3.3.3.3 255.255.0.0
[H3C-Vlan-interface12] pim dm
在实际的网络中,各个以太网交换机之间相互可达。
l LS_A通过接口Vlan-interface10与LS_B相连,通过接口Vlan-interface11与主机HostA相连,通过接口Vlan-interface12与LS_C相连;
l LS_B通过接口Vlan-interface10与主机LS_A相连,通过接口Vlan-interface11与LS_C相连,通过接口Vlan-interface12与LS_D相连;
l LS_C通过接口Vlan-interface10与主机HostB相连,通过接口Vlan-interface11与LS_B相连,通过接口Vlan-interface12与LS_A相连;
HostA是某组播组(组播IP地址为:225.0.0.1)的接收者,主机HostB现在开始发送目的地址为225.0.0.1的数据,交换机LS_A通过交换机LS_B接收主机HostB发送的组播数据。
(1) 配置交换机LS_A
# 启动PIM-SM协议。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] vlan 10
[H3C-vlan10] port Ethernet 2/0/2 to Ethernet 2/0/3
[H3C-vlan10] quit
[H3C] interface Vlan-interface 10
[H3C-Vlan-interface10] igmp enable
[H3C-Vlan-interface10] pim sm
[H3C-Vlan-interface10] quit
[H3C] vlan 11
[H3C-vlan11] port Ethernet 2/0/4 to Ethernet 2/0/5
[H3C-vlan11] quit
[H3C] interface Vlan-interface 11
[H3C-Vlan-interface11] pim sm
[H3C-Vlan-interface11] quit
[H3C] vlan 12
[H3C-vlan12] port Ethernet 2/0/6 to Ethernet 2/0/7
[H3C-vlan12] quit
[H3C] interface Vlan-interface 12
[H3C-Vlan-interface12] pim sm
[H3C-Vlan-interface12] quit
(2) 配置交换机LS_B
# 启动PIM-SM协议。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] vlan 10
[H3C-vlan10] port Ethernet 2/0/2 to Ethernet 2/0/3
[H3C-vlan10] quit
[H3C] interface Vlan-interface 10
[H3C-Vlan-interface10] pim sm
[H3C-Vlan-interface10] quit
[H3C] vlan 11
[H3C-vlan11] port Ethernet 2/0/4 to Ethernet 2/0/5
[H3C-vlan11] quit
[H3C] interface Vlan-interface 11
[H3C-Vlan-interface11] igmp enable
[H3C-Vlan-interface11] pim sm
[H3C-Vlan-interface11] quit
[H3C] vlan 12
[H3C-vlan12] port Ethernet 2/0/6 to Ethernet 2/0/7
[H3C-vlan12] quit
[H3C] interface Vlan-interface 12
[H3C-Vlan-interface12] pim sm
[H3C-Vlan-interface12] quit
# 配置候选BSR。
[H3C] pim
[H3C-pim] c-bsr Vlan-interface 10 30 2
# 配置候选RP。
[H3C] acl number 2000
[H3C-acl-basic-2000] rule permit source 225.0.0.0 0.255.255.255
[H3C] pim
[H3C-pim] c-rp Vlan-interface 10 group-policy 2000
# 配置PIM域边界。
[H3C] interface Vlan-interface 12
[H3C-Vlan-interface12] pim bsr-boundary
当Vlan-interface 12被配置为PIM域边界后,交换机LS_D就收不到交换机LS_B发出的BSR信息,它将被排除在本PIM域之外。
(3) 配置交换机LS_C。
# 启动PIM-SM。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] vlan 10
[H3C-vlan10] port Ethernet 2/0/2 to Ethernet 2/0/3
[H3C-vlan10] quit
[H3C] interface Vlan-interface 10
[H3C-Vlan-interface10] igmp enable
[H3C-Vlan-interface10] pim sm
[H3C-Vlan-interface10] quit
[H3C] vlan 11
[H3C-vlan11] port Ethernet 2/0/4 to Ethernet 2/0/5
[H3C-vlan11] quit
[H3C] interface Vlan-interface 11
[H3C-Vlan-interface11] pim sm
[H3C-Vlan-interface11] quit
[H3C] vlan 12
[H3C-vlan12] port Ethernet 2/0/6 to Ethernet 2/0/7
[H3C-vlan12] quit
[H3C] interface Vlan-interface 12
[H3C-Vlan-interface12] pim sm
[H3C-Vlan-interface12] quit
故障之一:路由器不能正确建立组播路由表。
故障排除:可以按照如下步骤进行。
解决问题之前,首先应保证单播路由是正确的。
l PIM-SM协议需要有RP和BSR的支持,所以首先使用display pim bsr-info,看是否有BSR信息,如果不存在,则需要查看是否有通向BSR的单播路由。这个问题解决后,看RP信息是否正确,使用display pim rp-info命令。如果没有RP信息,也需要检查单播路由。
l 使用display pim neighbor来查看是否正确建立了邻居关系。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!