18-组播协议操作
本章节下载 (944.63 KB)
目 录
2.2.4 IGMP Snooping Filter过滤规则配置
& 说明:
l S3600-EI系列以太网交换机支持本文列出的所有组播协议;S3600-SI系列仅支持IGMP Snooping。
l 以太网交换机在运行IP组播协议时,它将同时具备路由器的功能。文中所述的路由器代表了一般意义下的路由器以及运行了IP组播协议的三层以太网交换机。
随着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组播属于一种端到端服务,按照协议层从下往上划分,组播机制包括寻址机制、主机注册、组播路由、组播应用四个部分,如图1-4:
组播寻址机制涉及组播地址规划情况;主机注册和组播路由都是基于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-5所示:
由于IP组播地址的高4bit是1110,代表组播标识,而低28bit中只有23bit被映射到MAC地址,这样IP地址中就会有5bit信息丢失,直接的结果是出现了32个IP组播地址映射到同一MAC地址上。
IP组播涉及到的协议主要有组播组管理协议和组播路由协议。与组播相关的协议在网络中的应用位置如下图所示:
组播组管理协议采用IGMP(Internet Group Membership Protocol,因特网组管理协议),它运行在主机和组播路由器之间,定义了主机与组播路由器之间组播成员关系的建立和维护机制。
组播路由协议运行在组播路由器之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了一个从数据源端到多个接收端的无环数据传输路径。组播路由协议的任务就是构建分发树结构。组播路由器能采用多种方法来建立数据传输的路径,即分发树。
与单播路由一样,组播路由也分为域内和域间两大类。域内组播路由目前已经相当成熟,在众多的域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播协议)是目前应用最多的协议,可以和任何单播路由协议协同工作。
在组播模型中,组播源主机向主机组传送信息,这些主机组是通过IP数据包目的地址字段内的组播组地址所表示的。和单播模型不同的是,组播模型必须将组播数据包转发到多个外部接口上,以便能传送到所有接收站点,因此组播转发过程比单播转发过程更加复杂。
为了保证组播信息包在网络中传输,组播必须依靠单播路由表或者单独提供给组播使用的单播路由表(如MBGP组播路由表)进行转发,同时为了避免接口上收到来自不同对端的相同组播信息,还需要对组播信息包的接收接口进行一定的检查,这种检查机制就是大部分组播路由协议进行组播转发的基础——RPF(Reverse Path Forwarding,逆向路径转发)检查。
组播路由器根据源地址来判断组播报文是否来自指定接口,即RPF检查通过比较组播报文实际到达的接口和应该到达的接口来确定报文入接口是否正确。如果该路由器在SPT有源树(Shortest Path Tree,最短路径树)上,则接收到的组播报文应该到达的接口朝向组播源。该路由器在RPT(Rendezvous Point Tree,汇聚点树)共享树上,则接收到的组播报文应该到达的接口将朝向RP。当组播数据包到达路由器时,如果RPF检查通过,数据包则按照组播转发项进行转发。否则,数据包被丢弃。
IGMP Snooping(Internet Group Management Protocol Snooping,IGMP侦听)是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播组。
当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP Snooping将对IGMP报文所带的信息进行分析,并进行相应的处理,如表2-1所示:
收到的报文类型 |
发送者 |
接收者 |
交换机处理 |
IGMP主机报告报文(IGMP host report message) |
主机 |
交换机 |
将主机加入相应的组播组列表中 |
IGMP离开报文(IGMP leave message) |
主机 |
交换机 |
将主机相关的组播表项从组播组列表中删除 |
交换机通过监控IGMP报文,可以建立和维护相应的IP组播转发表,并根据IP组播转发表转发从路由器下发的组播报文。
如图2-1所示,没有运行IGMP Snooping时,组播报文将在二层广播。运行IGMP Snooping后,报文将不再在二层广播,而是进行二层组播。
图2-1 在关闭/使能IGMP Snooping组播报文传播过程的对比
为描述方便,先介绍一下以太网交换机上与IGMP Snooping相关的概念。
l 路由器端口(Router Port):以太网交换机上直接和组播路由器相连的端口。
l 组播成员端口:与组播组成员相连的端口。组播组成员此处是加入某个组播组的主机。
l MAC组播组:以太网交换机维护的以MAC组播地址标识的组播组。
还有三个时间定时器与IGMP Snooping有密切的关联:
定时器 |
设定时间 |
老化时间内收到的报文 |
超时后交换机动作 |
路由器端口老化定时器 |
路由器端口老化时间 |
IGMP通用查询报文/PIM报文/Dvmrp Probe报文 |
认定端口不是路由器端口 |
组播组成员端口老化定时器 |
组播组成员端口老化时间 |
IGMP主机报告报文 |
向组播组成员端口发送IGMP特定组查询报文 |
响应查询定时器 |
最大响应查询时间 |
IGMP报告报文 |
将端口从组播组成员端口列表上删除 |
以太网交换机通过运行IGMP Snooping实现对IGMP报文的侦测,并形成组播转发表。
交换机与主机之间通过传递四种特殊的报文,实现了二层组播。下表对这四种报文及其在传输过程中的作用进行了描述。
报文类型 |
发送者 |
接收者 |
目的 |
接收者处理 |
|||
IGMP通用查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询组播组内是否存在成员 |
该查询报文是否来自原路由器端口 |
是,交换机重置路由器端口老化定时器 |
||
不是,交换机通知组播路由器有成员加入相应的某个组播组,同时启动对该路由器端口的老化定时器 |
|||||||
IGMP特定组查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询IGMP特定组播组是否存在成员 |
向被查询的IP组播组发IGMP特定组查询 |
|||
IGMP主机报告报文 |
主机 |
组播路由器和组播交换机 |
申请加入某个组播组或应答IGMP查询报文 |
查询IP组播组对应的MAC组播组是否存在 |
存在,判断端口是否存在于该MAC组播组中 |
存在,则将IP组播组地址加入到MAC组播组列表中 |
|
不存在,则将端口加入MAC组播组,重置端口老化定时器,并判断对应的IP组播组是否存在 |
存在,则将端口加入到对应IP组播组 |
||||||
不存在,则新建IP组播组,将端口加入组播组 |
|||||||
不存在,则: 新建MAC组播组,同时通知组播路由器有成员要加入组播组 将端口加入到MAC组播组,同时启动端口老化定时器 将端口所在VLAN内所有端口加入MAC组播组转发表中 将端口加入到新建的IP组播组中 |
|||||||
IGMP离开报文 |
主机 |
组播路由器和组播交换机 |
告知组播路由器和组播交换机主机离开组播组 |
组播路由器和组播交换机向发出离开报文的主机所在组播组发送IGMP特定组查询报文,用于确认该组播组内是否存在成员,同时启动相应查询定时器 |
如定时器超时,交换机将判断端口是否对应唯一的MAC组播组: l 如是,则删除对应的MAC组播组,同时删除对应的IP组播组 l 不是,则仅删除MAC组播组中对应此端口的表项,同时删除对应的IP组播组表项 |
||
如组播组无应答,且定时器超时,则交换机将通知路由器将该分支从组播树删除 |
注意:
S3600系列以太网交换机使能了IGMP-Snooping特性后,当收到某个组播组内的主机发出的IGMP离开报文时,会自动判断该组播组是否存在。如果该组播组不存在,则丢弃这个IGMP离开报文,不再转发。
IGMP Snooping配置任务包括:
配置任务 |
说明 |
详细配置 |
启动IGMP Snooping配置 |
必选 |
|
多种定时器配置 |
可选 |
|
端口从组播组中快速删除功能配置 |
可选 |
|
IGMP Snooping Filter过滤规则配置 |
可选 |
|
端口可以加入的组播组数量限制配置 |
可选 |
|
IGMP Snooping查询器配置 |
可选 |
|
组播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通用查询报文,则交换机把该路由器端口从所有的组播组的端口成员表中删除。
l 在成员端口老化时间之内,如果没有收到IGMP主机报告报文,则交换机向该端口发送IGMP特定组查询报文。
操作 |
命令 |
说明 |
进入系统视图 |
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离开报文时,直接将端口从组播组中删除。当端口下只有一个用户时,快速删除可以节省带宽。
表2-7 在系统视图下配置端口从组播组中快速删除功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭 |
表2-8 在以太网端口视图下配置端口从组播组中快速删除功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口 |
interface interface-type interface-number |
- |
配置端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭。 |
& 说明:
在系统视图下的配置对指定VLAN内的所有端口都有效,而在以太网端口视图下的配置只对指定VLAN内的该端口有效。
IGMP Snooping Filter通过对连接交换机不同端口的用户配置组播过滤ACL,来限制用户可以点播的组播节目,从而实现不同的用户可以点播不同的节目组,达到区别对待VOD用户的目的。
在实际应用中,当用户点播某个组播节目时,会发起一个IGMP report报文,该报文到达交换机后,交换机检查接收端口上配置的组播过滤ACL,如果此端口可以加入这个组播组,则将这个端口加入到该组播组的转发端口列表中;否则交换机就丢弃该IGMP report报文,这样,数据流就不会送到该端口,从而达到控制用户点播组播节目的目的。
配置此特性前,请确定ACL规则已经配置完毕。
表2-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 缺省情况下,组播过滤功能关闭。 |
对交换机端口进行端口组播组通过数量限制配置后,用户在点播组播组节目时,由于端口通过的组播组的数量受到限制,因此用户不能无限制的点播组播组。这样一来,端口带宽就得到了控制。
表2-10 端口可以加入的组播组数量限制配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
限制端口上允许通过的组播组数量 |
igmp-snooping group-limit limit [ vlan vlan-list [ overflow-replace ] ] |
必选 缺省情况下,不限制端口通过的组播组数量。 |
在运行了IGMP协议的组播网络中,会有一个专职查询的组播路由器或三层组播交换机,负责发送IGMP查询报文。
但是,由于二层组播交换机上不支持IGMP功能,因此没有办法实现查询器的功能,无法发送通用组查询报文。用户可以通过配置IGMP-Snooping查询器,使二层交换机在数据链路层主动发送通用组查询报文,从而建立并维护组播转发表项。
用户还可以配置IGMP Snooping查询器发送通用组查询报文的源地址、通用组查询报文的最大响应时间以及查询周期。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统视图下使能IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能关闭 |
进入VLAN视图 |
vlan vlan-id |
- |
VLAN视图下使能IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能关闭 |
配置IGMP-Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP-Snooping查询器功能关闭 |
配置发送通用查询报文的时间间隔 |
igmp-snooping query-interval seconds |
可选 缺省情况下,发送通用查询报文的时间间隔为60秒 |
配置发送通用查询报文的源IP地址 |
igmp-snooping general-query source-ip { current-interface | ip-address } |
可选 缺省情况下,发送通用查询报文的源IP地址为0.0.0.0 |
基于以往的组播点播方式,当处于不同VLAN的用户点播同一个组播组时,每个VLAN会在本VLAN内复制这个组播流。这样的组播点播方式,浪费了大量的带宽。
通过配置组播VLAN的方式,将交换机的端口加入到组播VLAN,并在使能了IGMP Snooping功能以后,使不同VLAN内的用户共用一个组播VLAN,组播流只在一个组播VLAN内进行传输,从而节省了带宽。由于组播VLAN与用户VLAN完全隔离,安全和带宽都得以保证。
组播VLAN主要应用于二层交换,但在三层交换机上也必须进行相应的配置。
组播VLAN配置过程如下:
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播VLAN,并进入VLAN视图 |
vlan vlan-id |
创建用户需要配置的组播VLAN |
退出 |
quit |
- |
创建组播VLAN接口,并进入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,并且必须将该组播VLAN设置为tagged |
port trunk pvid vlan vlan-list |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统使能IGMP Snooping功能 |
igmp-snooping enable |
必选 |
进入VLAN视图 |
vlan vlan-id |
vlan-id为VLAN号 |
VLAN使能IGMP Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP Snooping功能关闭 |
使能组播VLAN功能 |
service-type multicast |
必选 |
退出VLAN视图 |
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,并且必须将组播VLAN设置为tagged |
port trunk pvid 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 不能将Isolate User VLAN设置为组播VLAN。
l 一个端口只可以属于一个组播VLAN。
l 与用户终端相连的端口类型只能够为Hybrid。
l 组播成员端口必须与路由器端口属于同一个组播VLAN,否则无法接收到组播数据报文。
l 当路由器端口加入某个组播VLAN,该路由器端口必须配置成Trunk端口或者是带tag的Hybrid端口,否则在此组播VLAN内的所有的组播成员端口都无法接收到组播数据报文。
l 用户建立了组播VLAN后,所有的IGMP主机报告报文只在组播VLAN内广播。如果是非组播VLAN的组播成员端口,其所属VLAN接口将无法建立对应的二层组播表项。因此,建议用户将此端口从组播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 ] |
|
清除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功能。
组播源为Workstation,Switch A转发组播源发出的组播数据流。组播数据流通过二层交换机Switch B被转发到最终用户PC1、PC2。
具体的设备编号如下:
设备 |
描述 |
说明 |
Switch A |
三层交换机 |
VLAN 20接口的IP地址为168.10.1.1,Ethernet1/0/1属于VLAN 20,Ethernet1/0/1和Work Station相连。 VLAN 10为组播VLAN。 端口Ethernet1/0/10与Switch B相连。 |
Switch B |
二层交换机 |
VLAN 2包含端口Ethernet1/0/1,VLAN 3包括端口Ethernet1/0/2,两个端口分别与PC1、PC2相连。 端口Ethernet1/0/10和Switch A相连。 |
PC 1 |
用户1 |
与Switch B的Ethernet1/0/1端口相连 |
PC 2 |
用户2 |
与Switch B的Ethernet1/0/2端口相连 |
配置组播VLAN,使VLAN 2和VLAN 3内的用户通过组播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] 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 2、3、10中,端口发送VLAN 2、VLAN 3和VLAN 10的报文时带VLAN标签。
[SwitchA] interface Ethernet 1/0/10
[SwitchA-Ethernet1/0/10] port link-type hybrid
[SwitchA-Ethernet1/0/10] port hybrid vlan 2 3 10 tagged
[SwitchA-Ethernet1/0/10] quit
# 在VLAN 10接口启动PIM DM协议,并同时启用IGMP。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] pim dm
[SwitchA-Vlan-interface10] igmp enable
(2) Switch B上的配置
# 启动设备IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping enable
# 配置VLAN 10为组播VLAN,并使能IGMP Snooping。
[SwitchB] vlan 10
[SwitchB-vlan10] service-type multicast
[SwitchB-vlan10] igmp-snooping enable
[SwitchB-vlan10] quit
# 将Ethernet 1/0/10定义为Hybrid端口,并将该端口加入到VLAN 2、3、10中,端口发送VLAN 2、VLAN 3和VLAN 10的报文时带VLAN标签。
[SwitchB] interface Ethernet 1/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
# 将Ethernet 1/0/1定义为Hybrid端口,并将该端口加入到VLAN 2、VLAN 10中,端口发送VLAN 2和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 2。
[SwitchB] interface Ethernet 1/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
# Ethernet 1/0/2定义为Hybrid端口,并将该端口加入到VLAN 3、VLAN 10中,端口发送VLAN 3和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 3。
[SwitchB] interface Ethernet 1/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建立的组播组不正确,请向专业维护人员求助。
组播公共配置的任务是组播组管理协议和组播路由协议共有的内容。启动这两个协议前,应该在交换机上使能组播公共配置。
组播公共配置包括:
l 配置路由项数量限制。用户在配置组播路由协议后,会有大量的组播路由项上传上游至三层交换机(路由器)。为了防止大量的组播路由项耗尽三层交换机(路由器)的内存,用户可以通过配置组播路由项限制,防止大量的组播路由项上传。
l 组播源端口抑制配置。在网络中,某些用户会私设组播服务器,造成整个组播网络资源紧张,影响组播带宽和网络内合法信息传输。用户可以配置组播源端口抑制特性,在未授权的组播源端口上过滤组播报文,以防止该端口连接的用户私设组播服务器。
l 清除组播相关表项内容。用户还可以通过清除组播相关表项的内容,清空三层交换机(路由器)内存内存贮的组播路由表项,从而释放系统内存。
组播公共配置包括:
配置任务 |
说明 |
详细配置 |
启动组播并配置路由项数量限制 |
必选 |
|
组播源端口抑制配置 |
可选 |
|
清除组播相关表项内容 |
可选 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
启动组播路由 |
multicast routing-enable |
必选 启动组播组管理协议及组播路由协议前必须使能 |
配置组播路由项数量限制 |
multicast route-limit limit |
可选 缺省情况下,组播路由项的数量限制为256 |
& 说明:
S3600以太网交换机为防止恶意用户对未使用SOCKET的攻击,提高交换机的安全性,提供了如下功能:
l 在启动组播路由功能时,系统才打开组播路由使用的RAW Socket端口。
l 在关闭组播路由功能时,同时关闭组播路由使用的RAW Socket端口。
具体的实现是:
l 执行multicast routing-enable命令,可以启动组播路由,同时打开组播路由使用的RAW Socket端口。
l 应用undo multicast routing-enable命令的同时即可关闭RAW Socket端口。
注意:
只有启动了组播,其他的组播配置才能生效。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统视图配置组播源端口抑制 |
multicast-source-deny [ interface interface-list ] |
必选 缺省情况下,系统关闭组播源端口抑制功能 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
以太网端口视图配置组播源端口抑制 |
multicast-source-deny |
可选 缺省情况下,交换机所有端口关闭组播源端口抑制功能 |
在用户视图下执行reset命令可以清除组播公共配置的相关统计信息。
操作 |
命令 |
说明 |
清除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地址表项可以避免这种情况。
表4-1 组播MAC地址配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
必选 mac-address必须为组播MAC地址 vlan-id为端口所在的VLAN的ID号 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
创建组播MAC地址表项 |
mac-address multicast mac-address vlan vlan-id |
必选 mac-address必须为组播MAC地址 vlan-id为端口所在的VLAN的ID号 |
注意:
l 如果要创建的组播MAC地址表项已经存在,则系统会给出提示。
l 如果要向通过命令创建的组播MAC地址表项中加入端口,需要先将该表项删除,然后重新创建该表项,再将指定端口加入到表项的转发端口中。
l 系统不支持在IRF端口添加组播MAC地址,如端口已经是IRF端口,则系统会提示不可以添加组播MAC地址。
l 如在端口添加了组播MAC地址,则无法在此端口使能端口汇聚。如端口已经是汇聚端口,则不可以添加组播MAC地址。
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播MAC地址配置的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示已经添加的组播MAC地址表项 |
display mac-address multicast [ static { { { mac-address vlan vlan-id | vlan vlan-id } [ count ] } | count } ] |
display命令可以在任意视图下执行 |
通常情况下,如果交换机收到的组播数据报文的组播地址没有在本机注册,该报文会在VLAN内广播。当启动未知组播丢弃功能后,交换机收到未注册组播地址的组播数据报文,将丢弃该报文,从而节省带宽,并提高系统的处理效率。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置未知组播报文丢弃功能 |
unknown-multicast drop enable |
必选 缺省情况下,未知组播报文丢弃功能关闭 |
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。
IGMPv1主要基于查询和响应机制来完成对组播组的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP成员关系报告报文,因此只需要其中一台路由器发送IGMP查询报文就足够了。这就需要有一个查询器的选举机制来确定由哪台路由器作为IGMP查询器。
对于IGMPv1来说,由三层组播路由协议(例如PIM)选举出唯一的组播信息转发者DR(Designated Router,指定路由器)作为IGMP查询器。
图6-1 IGMPv1的工作机制
如图6-1所示,假设HostB与HostC想要收到组播组G1的组播信息,而HostA想要收到组播组G2的组播信息,则主机加入组播组的过程如下:
(1) IGMP查询器(图中的DR)周期性地向本地网段内的所有主机与路由器发送IGMP查询(Query)报文(目的地址为224.0.0.1);
(2) 在收到该查询报文后,对G1感兴趣的HostB与HostC的其中之一(这要取决于谁的延迟定时器先超时),譬如HostB会首先发送IGMP成员关系报告(Report)报文(目的地址为G1的组地址),以宣告自己要加入G1;
(3) 由于HostC也在关注G1,因此它能收到HostB发往G1的报告报文。当收到该报告报文后,HostC将抑制自己发送同样针对G1的报告报文,因为IGMP路由器已知道本网段中有对G1感兴趣的主机了。这个机制称为IGMP成员关系报告抑制机制,该机制有助于减少本地网段的信息流量;
(4) 与此同时,由于HostA关注的是G2,所以它仍将发送报告报文(目的地址为G2的组地址)以宣告自己要加入G2;
(5) 经过查询和响应,IGMP路由器了解了本地网段有组播组G1和G2的成员,并生成(*,G1)和(*,G2)组播转发项作为组播信息的转发依据,*代表任意组播源;
(6) 当IGMP路由器收到发往G1或G2的组播信息时,由于IGMP路由器上存在(*,G1)和(*,G2)组播转发项,于是将该组播信息转发到本地网段,接收者主机便能收到该组播信息了。
IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播组后,将不再发送以此组播组的地址为目的地址的报告报文。当网段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP路由器便删除该组播组所对应的转发项。
与IGMPv1相比,IGMPv2增加了查询器选举机制和离开组机制。
在IGMPv1中,由三层组播路由协议(例如PIM)选举的指定路由器充当查询器。
在IGMPv2中,增加了独立的查询器选举机制,其选举过程如下:
(1) 所有IGMPv2路由器在初始时都认为自己是查询器,并向本地网段内的所有主机与路由器发送IGMP普遍组查询报文(目的地址为224.0.0.1);
(2) 其它IGMPv2路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的IGMPv2路由器将成为查询器,其它IGMPv2路由器成为非查询器;
(3) 所有非查询器上都会启动一个定时器(即非查询器存在时间定时器)。在定时器超时前,如果收到了来自查询器的IGMP查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
在IGMPv1中,主机离开组播组时不会向任何组播路由器发出任何通知,导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。
而在IGMPv2中,当一个主机离开某组播组时:
(1) 该主机向本地网段内的所有组播路由器(224.0.0.2)发送离开组报文;
(2) 当查询器收到该报文后,向该主机所声明要离开的那个组播组发送特定组查询报文(该报文的目的地址字段和组地址字段均为要查询的组播组地址);
(3) 如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间内发送成员关系报告报文;
(4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系。
在一个大规模的网络中应用组播路由协议时(例如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的配置包括:
配置任务 |
说明 |
详细配置 |
IGMP版本配置 |
可选 |
|
IGMP查询报文配置 |
可选 |
|
接口上对IGMP组播组的配置 |
可选 |
|
路由器端口加入指定组播组配置 |
可选 |
|
IGMP Proxy配置 |
可选 |
|
删除接口上已经加入的IGMP组配置 |
可选 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
使能组播路由协议 |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,接口上禁止IGMP |
配置三层交换机(路由器)使用的IGMP版本 |
igmp version { 1 | 2 } |
可选 缺省情况下,IGMP版本使用版本2 |
注意:
IGMP各版本之间不能自动转换。因此,应该配置子网上的所有三层交换机使用同一IGMP版本。
三层交换机在所连接的网段上周期性的发送IGMP通用查询报文,通过解析返回的IGMP主机报告报文,获知该网段内哪些组播组有成员。组播路由器周期性地发送查询报文,当得到某一组成员的IGMP主机报告报文的时候,刷新该网段相应的组成员关系信息。
在共享网络上,由查询路由器(简称查询器)负责维护接口上IGMP主机报告报文。用户配置相关特性后,在IGMP查询器收到主机发送的IGMP离开报文时,将按照用户配置的时间间隔和次数发送IGMP特定组查询报文。
假定组播组内的某一主机决定离开组播组,相关的过程如下:
l 该主机发送IGMP离开报文。
l IGMP查询器收到该报文,必须按照命令igmp lastmember-queryinterval设置的时间间隔(如果没有配置该命令,则时间间隔为1秒),按照命令igmp robust-count设置的健壮系数(如果没有配置该命令,则健壮系数为2),发送robust-value次IGMP特定组查询报文。
l 其他主机收到IGMP查询器发送的IGMP特定组查询报文,如果对该组感兴趣,就会在该报文规定的最大响应时间内发送IGMP主机报告报文。
l IGMP查询器如果在robust-value×lastmember-queryinterval时间内,收到其他主机发送的IGMP主机报告报文,就会继续维护该组的组成员关系。
l 如果经过robust-value×lastmember-queryinterval时间后,仍然没有收到任何主机发送的IGMP主机报告报文,就认为该组已经超时,不再维护该组的组成员关系。
& 说明:
IGMP通用查询报文使用的最大响应时间是使用igmp max-response-time 命令配置的;而IGMP特性组查询报文使用的最大响应时间是使用robust-value ×lastmember-queryinterval得到的。
此过程只符合IGMP查询路由器运行在IGMP版本2时的情况。
如果主机运行的是IGMP版本1,离开某个组时并不发送IGMP离开报文,不会出现和上述过程一致的情况。
如果同一网段内存在多个使能了IGMP的接口, IP地址最小的接口将成为IGMP查询器。如果原来非查询器接口在igmp timer other-querier-present命令指定的间隔没有收到查询器发出的查询消息,就认为原来的查询器失效,IP地址次小的接口将成为新的IGMP查询器。
当主机接收到一条查询消息后,主机会为其所属的每个组播组都设置一个计时器,计时器的值在0~最大响应时间中随机选取,当其中任何一个计时器的值减为0时,主机就会发送该组播组的成员报告消息。
合理设置最大响应时间,可以使主机快速响应查询信息,三层交换机也就能快速地掌握组播组成员的存在状况。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,接口上禁止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 |
可选 缺省情况下,IGMP查询器存在的时间值为120秒,是igmp timer query命令指定的间隔的2倍 |
配置IGMP最大查询响应时间 |
igmp max-response-time seconds |
可选 缺省情况下,IGMP最大查询响应时间为10秒 |
注意:
在一个网段中有多个组播路由器时,由查询器负责向该网段上的所有主机发送IGMP查询报文。
用户可以在接口上对IGMP组播组进行以下配置:
l 限制组播组加入数量
l 限制接口所服务的组播组的范围
如果不限制在交换机的组播路由接口上的IGMP组加入数量,在加入了大量的组播组后,就有可能耗尽交换机的内存,导致交换机路由接口发生故障。
用户可以在交换机的接口上配置IGMP组播组加入数量限制,用户在点播组播组的节目时,由于组播组的数量由于受到限制,从而使网络的带宽得到了控制。
三层交换机通过接收到的IGMP主机报告报文来确定该网段的组成员关系。用户可以通过配置,在每一个接口上设一个过滤器,以限制接口所服务的组播组范围。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN接口视图 |
interface Vlan-interface interface-number |
- |
在当前接口上使能IGMP |
igmp enable |
必选 缺省情况下,接口上禁止IGMP |
配置接口上加入IGMP组的数量限制 |
igmp group-limit limit |
必选 缺省情况下,不限制端口通过的组播组数量。 |
限制接口所服务的组播组范围 |
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组的数量为1时,采用新加入组优先的原则。即如用户将新的组播组加入接口时,系统将自动取代原有的组播组,原组播组将会自动脱离接口。
l 如在接口配置加入组播组限制时,接口已有的IGMP组播组比要配置的值多,系统自动删除某些已有的组播组,直到接口组播组数量符合配置的数量限制。
通常情况下,运行IGMP的主机会对组播交换机的IGMP查询报文进行响应,如果由于某种原因无法响应,就可能导致组播交换机认为该网段没有该组播组的成员,从而取消相应的路径。
为避免这种情况的发生,配置交换机VLAN接口下的某个端口为路由器端口,使其成为组播组成员,当从该端口收到IGMP查询报文时,由组播交换机进行响应,从而保证三层接口所在网段能够继续收到组播报文。
操作 |
命令 |
说明 |
进入系统视图 |
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 |
必选 |
配置IGMP Proxy |
igmp proxy Vlan-interface interface-number |
必选 |
缺省情况下,不使能IGMP Proxy功能。
注意:
l 代理接口也要使能组播路由,并且使能IGMP协议。
l 配置igmp proxy前需要先在接口上使能PIM协议,否则IGMP Proxy功能不能生效。
l 同一个接口不能作为两个及两个以上其它接口的IGMP代理接口。
用户可以删除路由器所有接口上所有已加入的IGMP组,也可以删除特定接口上所有已加入的IGMP组,或者删除特定接口上某个特定IGMP组地址或组地址网段。
此配置在用户视图下执行。
操作 |
命令 |
说明 |
删除接口上已加入的IGMP组 |
reset igmp group { all | interface interface-type interface-number { all | group-address [ group-mask ] } } |
可选 |
注意:
删除接口上已加入的IGMP组后,不影响该组的再次加入。
在完成上述配置后,在任意视图下执行display命令可以显示配置后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所示,没有接收者的路由器(例如和UserA相连的路由器)主动发起剪枝过程。
上述过程就称为扩散—剪枝过程。各个被剪枝的节点提供超时机制,当剪枝超时后重新开始扩散—剪枝过程。PIM-DM的扩散—剪枝机制周期性进行。
当被剪枝的下游节点需要恢复到转发状态时,该节点使用Graft嫁接消息通知上游节点。例如若图7-1中的用户A恢复接收组播数据,则Graft嫁接消息逐跳向组播源S传递,中间节点接收到Graft嫁接消息后回应确认,从而先前被剪掉的分支恢复信息传输。
PIM-DM采用RPF检查机制,利用现存的单播路由表、组播静态路由表、MBGP路由表来构建一棵从数据源S始发的组播转发树。
过程如下:
l 当一个组播包到达时,路由器首先判断到达路径的正确性。
l 如果到达接口是单播路由指示的通往组播源S的接口,就认为这个组播包是从正确路径而来。
l 如果不是,则将组播包作为冗余报文丢弃。
作为路径判断依据之一的单播路由信息可以来源于任何一种单播路由协议,如RIP、OSPF发现的路由信息,不依赖于特定的单播路由协议。
在共享网络(如Ethernet)中会出现相同报文的重复发送。例如LAN网段上包含多台组播路由器A、B、C和D,各自都有到组播源S的接收途径。如图7-2所示:
当路由器A、B和C都从上游接收到组播源S发出的组播数据报文后,都会向Ethernet网络上转发该组播报文,这时下游节点组播路由器D就会收到 三份完全相同的组播报文。
为了避免这种情况,就需要通过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选举过程。
& 说明:
l S3600系列以太网交换机不支持DR优先级,而直接利用IP地址的大小选举DR。
l 在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、D和E。当接收者主机加入一个组播组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所示。
当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转发树。
用户在配置交换机时,可以在接口视图下对交换机的PIM功能进行相应的配置。这些配置包括:
配置任务 |
说明 |
详细配置 |
接口使能PIM-DM(PIM-SM) |
必选 |
|
Hello报文发送间隔配置 |
可选 |
|
PIM邻居配置 |
可选 |
|
清除PIM相关表项 |
可选 |
操作 |
命令 |
说明 |
进入系统视图 |
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邻居发送的协议报文。
操作 |
命令 |
说明 |
进入系统视图 |
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邻居。
操作 |
命令 |
说明 |
进入系统视图 |
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的相关统计信息。
操作 |
命令 |
说明 |
清除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。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能组播路由协议 |
multicast routing-enable |
必选 |
进入PIM视图 |
pim |
- |
对接收的组播数据报文进行源(组)过滤 |
source-policy acl-number |
可选 用户可在ACL中配置过滤相关的组播组IP地址 |
注意:
l 如果配置基本访问控制列表,则对接收的所有组播数据报文匹配源地址,未通过匹配的报文将被丢弃。
l 如果配置高级访问控制列表,则对接收的所有组播数据报文匹配源地址和组地址,未通过匹配的报文将被丢弃。
PIM-SM的配置包括:
配置任务 |
说明 |
详细配置 |
组播源(组)过滤规则配置 |
可选 |
|
BSR/RP配置 |
可选 |
|
PIM-SM域边界配置 |
可选 |
|
RP对DR发送来得注册报文过滤配置 |
可选 |
操作 |
命令 |
说明 |
进入系统视图 |
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所服务的组范围。
操作 |
命令 |
说明 |
进入系统视图 |
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发送来的注册报文进行过滤,只接受特定的报文。
操作 |
命令 |
说明 |
进入系统视图 |
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拒绝所有的注册报文。
PIM-SM路由器最初通过共享树转发组播数据包,如果设定的阈值为0,组播数据经过的最后一跳以太网交换机就会发起从共享树到最短路径树的切换过程。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
设置从共享树切换到最短路径树的阈值 |
spt-switch-threshold { traffic-rate | infinity } [ group-policy acl-number ] |
必选 缺省情况下,设备从RPT收到第一个组播数据包后便立即向SPT切换 |
& 说明:
S3600系列以太网交换机只支持阀值0和infinity,它们分别表示:
l 阀值为0,表示最后一跳路由器收到第一个组播数据包就会转向最短路径树。
l Infinity表示永远都不切换到到最短路径树。
在完成上述配置后,在任意视图下执行display命令可以显示配置后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间实现组播。
(1) 配置Lanswitch1
# 启动组播路由协议。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口上启动IGMP和PIM-DM协议。
[H3C] vlan 10
[H3C-vlan10] port Ethernet 1/0/2 to Ethernet 1/0/3
[H3C-vlan10] quit
[H3C] vlan 11
[H3C-vlan11] port Ethernet 1/0/4 to Ethernet 1/0/5
[H3C-vlan11] quit
[H3C] vlan 12
[H3C-vlan12] port Ethernet 1/0/6 to Ethernet 1/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] 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
(2) 配置Lanswitch2
# 启动组播路由协议。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口上启动IGMP和PIM-DM协议。
[H3C] vlan 20
[H3C-vlan20] port GigabitEthernet 1/0/2 to GigabitEthernet 1/0/3
[H3C-vlan20] quit
[H3C] vlan 11
[H3C-vlan11] port GigabitEthernet 1/0/4 to GigabitEthernet 1/0/5
[H3C-vlan11] quit
[H3C] interface Vlan-interface 20
[H3C-Vlan-interface20] ip address 6.6.6.6 255.255.0.0
[H3C-Vlan-interface20] igmp enable
[H3C-Vlan-interface20] pim dm
[H3C-Vlan-interface20] quit
[H3C] interface Vlan-interface 11
[H3C-Vlan-interface11] ip address 4.4.4.4 255.255.0.0
[H3C-Vlan-interface11] pim dm
Lanswitch3的配置过程与Lanswitch2类似,不再赘述。
在实际的网络中,各个以太网交换机之间相互可达。
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 1/0/2 to Ethernet 1/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 1/0/4 to Ethernet 1/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 1/0/6 to Ethernet 1/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 1/0/2 to Ethernet 1/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 1/0/4 to Ethernet 1/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 1/0/6 to Ethernet 1/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 1/0/2 to Ethernet 1/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 1/0/4 to Ethernet 1/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 1/0/6 to Ethernet 1/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来查看是否正确建立了邻居关系。
& 说明:
l MSDP不支持IRF特性,因此不能在Fabric中配置MSDP。
l 在本章节中所指的路由器及路由器图标,代表了一般意义下的路由器以及运行了路由协议的以太网交换机。为提高可读性,在手册的描述中将不另行说明。
对于ISP(Internet Service Provider,因特网服务提供商)来说,一方面ISP不希望依靠竞争对手的设备来转发组播流量,另一方面又要求无论信源在哪里,ISP都能从信源获取信息并转发给自己内部的成员。MSDP(Multicast Source Discovery Protocol,组播源发现协议)就是为了解决这个问题而提出的,用来发现其他PIM-SM域内的组播源信息。MSDP仅对ASM(Any-Source Multicast,任意源组播)模型有意义。
MSDP描述了多个PIM-SM域互连的机制,要求域内组播路由协议必须是PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播-稀疏模式),允许不同域的RP共享其组播源信息。
当某PIM-SM域内存在激活组播源S时,该域内的RP是能够借助组播源注册过程了解到组播源S的存在。如果其他ISP管理的PIM-SM域也想从该组播源获取信息,则两个PIM-SM域内的路由器之间需要形成MSDP对等体关系,如图8-1所示。
& 说明:
MSDP对等体之间使用TCP连接(端口639),既可以建立在不同PIM-SM域的RP之间,也可以建立在同一PIM-SM域的多个RP之间,还可以建立在RP与普通路由器之间,或普通路由器彼此之间,图8-1中显示了RP之间的MSDP对等体关系。后续描述中,除非特殊说明,否则都以RP之间的MSDP对等体进行举例。
PIM-SM1网络具有激活组播源S,该网络内的RP1通过组播源注册过程了解到组播源S的具体位置,并向其他PIM-SM域内的MSDP对等体(即RP节点)周期性地发送SA(Source Active,“源有效”报文)消息。SA消息中包括组播源S的IP地址、组播组地址G和生成消息的RP地址,还包含PIM-SM1域内RP收到的第一个组播数据。SA消息被对等体转发并最终到达所有MSDP对等体,这样某PIM-SM域内的组播源S信息就会被传递到所有PIM-SM域。
MSDP对等体通过对SA消息进行RPF(Reverse Path Forwarding,逆向路径转发)检查,只接受从正确路径上接收到的SA消息并进行转发,从而避免SA消息传递环路;另外,可以通过在MSDP对等体之间配置Mesh全连接组(Mesh Group),避免SA消息在MSDP对等体之间泛滥。
假如PIM-SM4域中的RP4接收到该SA消息,则检查对应组播组是否有接收者存在,如果有接收者则向组播源S逐跳发送(S,G)加入消息,从而构建了一棵基于组播源S的SPT树,而PIM-SM4域中RP4和接收者之间为RPT树。
& 说明:
使用MSDP,接收来自组播源S信息的PIM-SM域不再需要依赖其他PIM-SM域内的RP,即接收者可以跨越中途各PIM-SM域内的RP,而直接加入基于组播源的SPT树上。
使用MSDP还可以实现Anycast RP。所谓Anycast RP是指通过在相同PIM-SM域内两个具有相同地址的RP之间形成MSDP对等体关系,从而实现域内RP之间的负载分担和冗余备份。在同一个PIM-SM域内,在多个路由器的接口(通常是Loopback接口)上都配置C-RP功能,并且这些接口具有相同IP地址,这些接口之间形成MSDP对等体关系,如图8-2所示。
组播源S通常选择距离最近的RP进行注册,形成SPT树。而接收者也向距离最近的RP发送Join加入消息以构建RPT树,因此组播源注册的RP可能不是接收者加入的RP,为了实现RP之间的信息一致,这些互为MSDP对等体的RP之间通过相互发送SA消息,了解对方的注册源信息,最终让每个RP了解到整个PIM-SM域内的所有组播源。这样,各RP上所带的接收者都可以接收到整个PIM-SM域内的所有组播源发出的组播数据。
由于RP之间借助MSDP互通信息,而组播源或接收者分别向就近RP发起注册或RPT加入,因此可以实现RP负载分担。一个RP失效后,其上原先注册的组播源和加入的接收者会自动选择另一个就近RP进行注册和加入操作,从而实现了RP冗余备份。
网络中包含四个PIM-SM域,分别是PIM-SM1域、PIM-SM2域、PIM-SM3域和PIM-SM4域,各域内的RP之间建立MSDP对等体关系,PIM-SM1域和PIM-SM4域中存在组播组的成员。如图8-3所示。
当PIM-SM1域中的一个组播源S向这个组播组发送数据时,PIM-SM1域和PIM-SM4域中的接收者从得知这个组播源开始,一直到接收来自该组播源S数据的工作过程如下:
l PIM-SM1域里的组播源S开始发送数据包。
l 连接组播源S的DR(Designated Router,指定路由器)路由器将接收到的数据封装在Register消息中,发给PIM-SM1域内的RP1。
l PIM-SM1域中的RP1将Register消息解封装,沿本域内的RPT共享树向下转发给自己域内的所有成员,域内成员可以选择是否切换到SPT源树上。
l 同时,PIM-SM1域内的RP1将生成一个SA消息,并发送给对应的MSDP对等体(PIM-SM2域、SM3域内的RP),SA消息经过转发到达PIM-SM4域内的RP。此SA消息中包括组播源IP地址、组播组地址、生成消息的RP地址,及PIM-SM1域内RP收到的第一个组播数据。
l 如果RP1的MSDP对等体所在的PIM-SM域中有组成员(即接收者),例如PIM-SM4域中有组成员,则该域内RP4将解封装SA消息中的组播数据,并沿RPT共享树下发到接收者,同时向组播源S发送加入消息。
l 为了避免传递SA消息出现环路,MSDP对等体对接收到的SA消息进行RPF检查。当RPF逆向转发路径建立起来之后,组播源S发出的数据将直接发送到PIM-SM4域的RP4上,RP4然后沿着自己域内的RPT共享树转发数据。此时,PIM-SM4域中连接组成员的最后一跳路由器可以选择是否切换到SPT上。
要想在路由器之间建立MSDP对等体关系,首先在路由器之间必须存在路由,从而实现SA消息的传递。
假设存在三个自治系统AS1、AS2和AS3,每个自治系统都有和其相关的PIM-SM域,每个PIM-SM域内都至少包含一个RP,如图8-4所示。
如图中所示,RP1属于AS1,RP2、RP3和RP4属于AS2,RP5和RP6属于AS3,各RP之间建立了MSDP对等体关系,其中RP2、RP3和RP4之间建立Mesh全连接组。这些MSDP对等体按照如下原则进行RPF检查和处理相互之间转发的SA消息:
(1) 如果发出SA消息的MSDP对等体就是组播源所在PIM-SM域的RP,则接受该SA消息并向其他对等体转发,如RP1发给RP2的SA消息。
(2) 如果只拥有一个MSDP对等体,则接受该对等体发来的SA消息,如RP2发给RP1的SA消息。
(3) 如果SA消息来自静态RPF对等体,则接受该SA消息并向其他对等体转发,如RP4发给RP5的SA消息。
(4) 如果SA消息来自MSDP全连接组中的对等体,则接受该SA消息并向该全连接组以外的对等体转发。如RP2发给RP4的SA消息,RP4接受该消息并向RP5和RP6转发。
(5) 如果SA消息来自同一个AS自治系统内的MSDP对等体,并且该对等体是到组播源所在PIM-SM域RP的最佳路径上的下一跳,则接受该SA消息并向其他对等体转发,如RP4发给RP5的SA消息,RP5接受该消息并向RP6转发。
(6) 如果SA消息来自不同自治系统的MSDP对等体,并且它是到组播源所在PIM-SM域RP最佳路径上的下一个自治系统,则接受该SA消息并向其他对等体转发,如RP4发给RP6的SA消息。
(7) 其他SA消息,不接受也不转发。
& 说明:
由于S3600系列交换机不支持域间路由(BGP协议),因此采用(5)描述的规则进行RPF检查。
当PIM-SM域之间需要相互接收来自组播源S信息时,则需要在各PIM-SM域的RP节点之间建立MSDP对等体,从而将组播源信息借助MSDP对等体间的SA消息进行发送,最后让其他PIM-SM域内的接收者也能接收到组播源的信息。
两台形成MSDP对等体关系的路由器之间需要存在路由,从而通过该路由传递PIM-SM域间的SA消息,对于只有一个MSDP对等体的区域(称为STUB区域),可以不需要路由,而直接通过配置静态RPF对等体来实现SA消息的传递。同时,静态RPF对等体方式将避免对接收到的SA消息进行RPF检查,因此可以减少资源消耗。
必须先创建MSDP对等体连接,然后才能配置静态RPF对等体。如果在一台路由器上只配置了一个MSDP对等体,这个MSDP对等体将被当作静态RPF对等体;如果配置了多个静态RPF对等体,根据配置的过滤策略的不同而处理原则不同。
当为同一路由器配置多个静态RPF对等体时,必须遵守如下两种配置方法:
l 都使用rp-policy参数:多个静态RPF对等体同时起作用,并按照所配置的前缀列表对SA消息中的RP进行过滤,只接收RP地址通过过滤的SA消息。如果同时配置了多个使用相同rp-policy参数的静态RPF对等体,则从其中一个对等体接收到的SA消息会向其他对等体转发。
l 都不使用rp-policy参数:按照配置的先后顺序,只有第一个连接状态是UP的静态RPF对等体是激活的,接收来自该对等体所有的SA消息,从其它静态RPF对等体接收到的SA消息将被丢弃。如果这个激活的静态RPF对等体失效(如配置取消或连接断开),仍然按照配置的先后顺序,重新选择第一个连接状态是UP的静态RPF对等体作为激活的静态RPF对等体。
在配置MSDP基本功能之前,需完成以下任务:
l 配置某单播路由协议
l 配置PIM-SM基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 |
启动MSDP功能,并进入MSDP视图 |
msdp |
必选 |
创建MSDP对等体连接 |
peer peer-address connect-interface interface-type interface-number |
必选 需要在互为对等体的两端都配置参数才能建立MSDP对等体,对等体标识为地址对(本端路由器接口主地址、远端MSDP对等体地址) |
配置静态RPF对等体 |
static-rpf-peer peer-address [ rp-policy ip-prefix-name ] |
可选 对于只有一个MSDP对等体的区域,如果不运行BGP或MBGP,则需要配置静态RPF对等体 |
一个自治系统内可能包含多个MSDP对等体,为了避免这些MSDP对等体之间泛滥SA消息,可以使用MSDP全连接组(Mesh group)机制来改善流量。当多个MSDP对等体之间两两相互连接(即完全连接),这些MSDP对等体就可以形成一个全连接组。构成MSDP全连接组的某对等体,一方面接收来自全连接组外的SA消息,并发送给组内其它成员;另一方面,对来自组内对等体的SA消息不再进行对等体RPF检查,也不在组内进行重复性转发。这种操作既避免了SA消息泛滥,同时因为不需要在MSDP对等体之间运行BGP或MBGP,所以也简化了对等体RPF检查机制。
可以对MSDP对等体之间的会话进行关闭,根据需要再进行激活。关闭MSDP对等体之间的会话后,TCP连接关闭,并不再重试建立连接,但配置信息会保留。
在配置MSDP对等体连接之前,需完成以下任务:
l 配置某单播路由协议
l 配置IP组播基本功能
l 配置PIM-SM基本功能
l 配置MSDP基本功能
配置任务 |
说明 |
详细配置 |
配置MSDP对等体的描述信息 |
必选 |
|
配置Anycast RP应用 |
可选 |
|
配置MSDP全连接组 |
可选 |
|
配置MSDP对等体连接控制 |
可选 |
可以为各MSDP对等体配置描述性信息,从而更好地管理和记忆MSDP对等体。
操作 |
说明 |
|
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置MSDP对等体的描述信息 |
peer peer-address description text |
可选 l peer-address为对等体的地址,用户可以配置分次配置多个对等体的地址 l 缺省情况下,MSDP对等体没有描述性文本 |
在相同PIM-SM域内,在两个RP上配置相同的接口地址(通常是Loopback接口),并且他们之间建立MSDP对等体关系。为了避免SA消息在这两个MSDP对等体之间RPF检查失败,必须配置SA消息中的RP地址。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
创建MSDP对等体连接 |
peer peer-address connect-interface interface-type interface-number |
必选 |
配置SA消息中的RP地址 |
originating-rp interface-type interface-number |
必选 缺省情况下,SA消息的RP地址为PIM配置的RP地址 |
& 说明:
在Anycast RP应用中,C-BSR和C-RP必须配置在不同设备或端口上。
通过在所有需要成为MSDP全连接组成员的对等体上配置Mesh Group名称,从而将其组成全连接组关系。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置将MSDP对等体加入全连接组 |
peer peer-address mesh-group name |
必选 此配置必须在所有的对等体上进行,因此需要配置多次 |
& 说明:
l 配置MSDP全连接组之前,各路由器之间应该保持彼此两两互相连接。
l 各对等体上配置的组名称必须相同。
l 如果将同一MSDP对等体加入到多个全连接组时,只有最后一个配置有效。
MSDP对等体之间的连接可以灵活控制。一方面,通过关闭MSDP对等体可以临时禁止某些MSDP对等体关系,之后这两个对等体之间不再传递SA消息;另一方面,当重置MSDP对等体连接,或故障的MSDP对等体恢复工作,可以通过配置来调节对等体关系建立的重试周期。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
关闭MSDP对等体 |
shutdown peer-address |
可选 |
配置MSDP对等体连接的重试周期 |
timer retry seconds |
可选 缺省值为30秒 |
SA消息中包括组播源S的IP地址、组播组地址G和RP地址,还包含组播源所在域内RP收到的第一个组播数据。对于某些突发性组播数据,如果组播数据间隔时间超过了SA消息保持时间,则必须在SA消息中封装组播数据,否则接收者永远都无法接收到组播源信息。
当一个新接收者加入时,路由器缺省情况下不向其MSDP对等体发送SA请求消息,而是必须等待下一周期SA消息的到来,这将延迟接收者获取组播信息的时间。为了尽快让新接收者了解到当前活跃的组播源信息,路由器需要主动向MSDP对等体请求SA消息。
通常情况下,路由器接受所有MSDP对等体发送来的所有SA消息,并向所有MSDP对等体发送所有SA消息。通过配置接收/发送SA消息的过滤规则,可以有效控制SA消息在MSDP对等体间的传递。对于转发的SA消息,也可以配置TTL阈值来控制携带封装数据SA消息的传递范围。
为了减少获取组播源信息的时延,可以在路由器上缓存SA消息。缓存的SA消息数量不得超过系统限制,缓存的消息越多占用路由器内存空间越大。
在配置SA消息传递之前,需完成以下任务:
l 配置某单播路由协议
l 配置IP组播基本功能
l 配置PIM-SM基本功能
l 配置MSDP基本功能
配置任务 |
说明 |
详细配置 |
配置SA请求消息的发送和过滤 |
可选 |
|
配置SA消息的组播源过滤规则 |
可选 |
|
配置接收和转发SA消息的过滤规则 |
可选 |
|
配置SA消息缓存 |
可选 |
当配置SA请求消息的发送后,路由器在收到新组加入消息时向指定的远端MSDP对等体发送SA请求消息,远端MSDP对等体回应其缓存的SA信息。发送SA请求消息后,路由器会立刻得到所有活跃组播源的响应。缺省情况下,路由器在收到新组加入消息时不向其MSDP对等体发送SA请求消息,而是等待下一个周期发送的SA消息的到来。
由于远端MSDP对等体回应的SA消息是预先缓存好的,因此必须先启动SA消息缓存机制。通常情况下,只有缓存了SA消息的路由器才能回应SA请求消息。
配置接收SA消息的过滤规则命令时,如果没有指定ACL,则忽略其MSDP对等体发送的所有SA请求;如果指定了ACL,则允许接收符合该规则的SA请求消息,其它的被忽略。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
启动SA消息缓存机制 |
cache-sa-enable |
可选 在缺省情况下,路由器收到SA消息后缓存SA的状态 |
使能MSDP对等体发送SA请求消息的功能 |
peer peer-address request-sa-enable |
可选 缺省情况下,路由器在收到新的组加入消息时,不向其MSDP对等体发送SA请求消息,而是等待下一个SA消息的到来 |
配置对MSDP对等体接收的SA请求消息进行过滤 |
peer peer-address sa-request-policy [ acl acl-number ] |
可选 l 用户可在acl中配置过滤相关的组播组IP地址 l 缺省情况下,路由器接收来自该MSDP对等体的所有SA请求消息 |
RP通过对每个注册的组播源S进行过滤,从而控制在SA消息中被通告的活动源信息。可以配置MSDP在创建SA消息时只通告组播路由表中符合过滤规则的(S,G)项,即控制从组播路由表中引入PIM-SM域的(S,G)项。如果执行不带acl参数的import-source命令,将不通告任何源。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置用SA消息过滤组播源 |
import-source [ acl acl-number ] |
可选 l 用户可在acl中配置过滤相关的源地址或组播组IP地址 l 缺省情况下,SA消息通告域内的所有的(S, G)项 |
对组播源信息的控制,除了控制源信息创建,还可以控制源信息的转发和接收。使用MSDP入方向过滤器(对应import参数)可以控制SA消息的接收,使用MSDP出方向过滤器(对应export参数)或TTL生存时间阈值都可以控制SA消息的转发。缺省情况下,MSDP对等体接收和转发所有SA消息。
创建MSDP出/入方向过滤器可以实现以下功能:
l 过滤掉所有(S,G)项
l 只接收/转发通过高级ACL规则(用户可以配置过滤源IP地址和组IP地址的ACL规则)的SA消息
携带封装数据的SA消息只有其IP头中的TTL值超过阈值时才能被发送到域外的指定MSDP对等体,因此可以通过配置TTL阈值来控制携带封装数据的SA消息转发。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置对接收或转发的SA消息进行过滤 |
peer peer-address sa-policy { import | export } [ acl acl-number ] |
可选 缺省情况下,对接收或转发的消息不作过滤, MSDP对等体接收或转发所有的SA消息 |
配置发送到指定MSDP对等体的组播数据包的最小TTL |
peer peer-address minimum-ttl ttl-value |
可选 缺省情况下,TTL阈值为0 |
在路由器上启动SA消息缓存机制,可以使后续有新成员加入的组不必等待下一个发送周期的SA消息,而直接从SA缓存中获得所有的活动源并加入到相应的SPT源树。
用户可以通过命令配置路由器上每个MSDP对等体缓存的SA项数量,但是不能超过系统的限制。有时,为了防止路由器受到DoS(Deny of Service,拒绝服务)攻击,可以手工配置允许路由器缓存SA消息的最大数量,通常配置的缓存数量应小于系统设定值。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
启动SA消息缓存机制 |
cache-sa-enable |
可选 缺省情况下,启动SA消息缓存机制 |
配置SA消息的缓存数量 |
peer peer-address sa-cache-maximum sa-limit |
可选 缺省情况下,SA缓存数量为最大值2048 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MSDP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除MSDP统计信息。
操作 |
命令 |
说明 |
查看MSDP对等体状态的简要信息 |
display msdp brief |
display命令可以在任意视图下执行 |
查看MSDP对等体状态的详细信息 |
display msdp peer-status [ peer-address ] |
|
查看从MSDP对等体学到的(S,G)状态 |
display msdp sa-cache [ group-address | [ source-address ] ] [autonomous-system-number ] |
|
查看MSDP缓存中的源和组的数量 |
display msdp sa-count [autonomous-system-number ] |
|
重置与指定MSDP对等体的TCP连接 |
reset msdp peer peer-address |
|
清除MSDP的SA缓存项 |
reset msdp sa-cache [ group-address ] |
|
在不重置MSDP对等体的情况下,清除MSDP对等体的统计信息 |
reset msdp statistics [ peer-address ] |
可在所有视图下使用msdp-tracert命令跟踪组播数据从组播源到目的接收者的所经过的网络路径,用以定位错误。
操作 |
命令 |
说明 |
跟踪SA消息在网络中传递的路径 |
msdp-tracert source-address group-address rp-address [ max-hops max-hops ] [ next-hop-info | sa-info | peer-info ]* [ skip-hops skip-hops ] |
msdp-tracert命令可以在任意视图下执行 |
跟踪组播源发送的消息在网络中传递的路径 |
mtracert source-address [ group-address | last-hop-router-address group-address ] |
mtracert命令可以在任意视图下执行 |
通过跟踪指定(S,G,RP)项的网络路径,可以定位消息丢失、减少配置错误等。在确定SA消息的传递路径后,通过正确配置,可以避免SA消息泛滥。
每个PIM-SM网络采用单BSR管理域方式,拥有多个组播源S和多个接收者。在PIM-SM域内配置Anycast RP,当新成员加入组播组时,与接收者直接相连的交换机能够向拓扑距离最近的RP发起加入。
PIM-SM网络中运行OSPF提供单播路由,在SwitchC和SwitchD之间建立MSDP对等体。同时,SwitchC和SwitchD的Loopback10接口承担C-BSR和C-RP的角色。
(1) 配置各交换机的接口IP地址和单播路由协议
在PIM-SM域内,配置各交换机接口的IP地址,配置各交换机之间采用OSPF进行互连。按照图8-5配置各接口的IP地址和掩码,具体配置过程略。
(2) 启动组播功能,并配置PIM-SM功能
# 在所有交换机上启动组播功能,并在各接口上启动PIM-SM功能。其他交换机上的配置过程与SwitchC上的配置相似,配置过程略。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface Vlan-interface 100
[SwitchC-Vlan-interface100] pim sm
[SwitchC-Vlan-interface100] quit
[SwitchC] interface Vlan-interface 200
[SwitchC-Vlan-interface200] pim sm
[SwitchC-Vlan-interface200] quit
[SwitchC] interface Vlan-interface 110
[SwitchC-Vlan-interface110] pim sm
[SwitchC-Vlan-interface110] quit
# 在SwitchC和SwitchD交换机上配置相同的Loopback10接口地址,C-BSR和C-RP的位置。SwitchD上的配置过程与SwitchC上的配置相似,配置过程略。
[SwitchC] interface loopback 10
[SwitchC-LoopBack10] ip address 10.1.1.1 255.255.255.255
[SwitchC-LoopBack10] pim sm
[SwitchC-LoopBack10] quit
[SwitchC] pim
[SwitchC-pim] c-bsr loopback 10
[SwitchC-pim] c-rp loopback 0
[SwitchC-pim] quit
(3) 配置MSDP对等体
# 在SwitchC上的Loopback0接口上配置MSDP对等体。
[SwitchC] msdp
[SwitchC-msdp] originating-rp loopback0
[SwitchC-msdp] peer 2.2.2.2 connect-interface loopback0
[SwitchC-msdp] quit
# 在SwitchD上的Loopback0接口上配置MSDP对等体。
[SwitchD] msdp
[SwitchD-msdp] originating-rp loopback0
[SwitchD-msdp] peer 1.1.1.1 connect-interface loopback0
[SwitchD-msdp] quit
配置了MSDP对等体,但对等体状态一直为DOWN。
在本地所配置的connect-interface接口地址与配置的peer对端地址之间,建立起基于TCP连接的MSDP对等体关系。如果本地connect-interface接口地址与对端路由器上配置的peer地址不一致,TCP连接就会建立不起来。如果两个对等体之间没有路由,TCP连接就会建立不起来。
l 检查各路由器之间的路由是否通达。通过命令display ip routing-table查看各路由器之间单播路由是否正确。
l 进一步检查预将成为MSDP对等体的两个路由器之间是否存在到达对方的单播路由。
l 检查MSDP对等体接口地址是否匹配。通过命令display current-configuration查看本地connect-interface接口地址是否与对端MSDP对等体地址一致,应确保一致。
MSDP没有将(S, G)转发项通过SA消息发送出去。
命令import-source用于控制将本组播域的(S,G)项通过SA消息发送给相邻的MSDP对等体,其所带的ACL参数是可选的,如果没有配置ACL参数则表示默认过滤掉所有的(S,G)项,即不通告本组播域的所有(S,G)项;未配置import-source命令时,系统发送本组播域的所有(S,G)信息。当MSDP没有将本组播域的(S,G)项通过SA消息发送出去时,应检查import-source命令是否配置正确。
l 检查各路由器之间的路由是否通达。通过命令display ip routing-table查看各路由器之间单播路由是否正确。
l 进一步检查预将成为MSDP对等体的两个路由器之间是否存在到达对方的单播路由。
l 检查命令import-source及对应ACL的配置情况,确保ACL规则过滤合适的(S,G)信息。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!