本章节下载(673.62 KB)
目 录
当信息(包括数据、语音和视频)传送的目的地是网络中的少数用户时,可以采用多种传送方式。可以采用单播(Unicast)的方式,即为每个用户单独建立一条数据传送通路;或者采用广播(Broadcast)的方式,把信息传送给网络中的所有用户,不管他们是否需要,都会给他们发送广播信息。例如,在一个网络上有200个用户需要接收相同的信息时,传统的解决方案是用单播方式把这一信息分别发送200次,以便确保需要数据的用户能够得到所需的数据;或者采用广播的方式,在整个网络范围内传送数据,需要这些数据的用户可直接在网络上获取。这两种方式都浪费了大量宝贵的带宽资源,而且广播方式也不利于信息的安全和保密。
IP组播技术的出现及时解决了这个问题。组播源仅发送一次信息,组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发(参见图1-1),因此,信息能够被准确高效地传送到每个需要它的用户。

需要注意的是,组播源不一定属于组播组,它向组播组发送数据,自己不一定是接收者。可以同时有多个源向一个组播组发送报文。
网络中可能有不支持组播的路由器,组播路由器可以使用隧道方式将组播包封装在单播IP包中传送给相邻的组播路由器,相邻的组播路由器再将单播IP头剥掉,然后继续进行组播传输。从而避免对网络的结构进行较大的改动。
组播的优势主要在于:
l 提高效率:降低网络流量,减轻服务器和相关设备的负荷;
l 优化性能:减少冗余流量;
l 分布式应用:使多点应用成为可能。
组播报文的目的地址使用D类IP地址,范围是从224.0.0.0到239.255.255.255。D类地址不能出现在IP报文的源IP地址字段。
单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳”(hop-by-hop)的原理在IP网络中传输。然而在IP组播环境中,数据包的目的地址不是一个,而是一组,形成组地址。所有的信息接收者都加入到一个组内,并且一旦加入之后,流向组地址的数据立即开始向接收者传输,组中的所有成员都能接收到数据包。组播组中的成员是动态的,主机可以在任何时刻加入和离开组播组。
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的IP地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的IP组播地址,可以被临时组播组利用。
D类地址的范围及含义见表1-1。
表1-1 D类地址的范围及含义
|
D类地址范围 |
含义 |
|
224.0.0.0~224.0.0.255 |
预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用 |
|
224.0.1.0~238.255.255.255 |
|
|
239.0.0.0~239.255.255.255 |
本地管理组播地址,仅在特定的本地范围内有效 |
常用的预留组播地址列表如下:
|
D类地址范围 |
含义 |
|
224.0.0.0 |
基准地址(保留) |
|
224.0.0.1 |
所有主机的地址 |
|
224.0.0.2 |
所有组播路由器的地址 |
|
224.0.0.3 |
不分配 |
|
224.0.0.4 |
DVMRP路由器 |
|
224.0.0.5 |
OSPF路由器 |
|
224.0.0.6 |
OSPF DR |
|
224.0.0.7 |
ST路由器 |
|
224.0.0.8 |
ST主机 |
|
224.0.0.9 |
RIP-2路由器 |
|
224.0.0.10 |
IGRP路由器 |
|
224.0.0.11 |
活动代理 |
|
224.0.0.12 |
DHCP服务器/中继代理 |
|
224.0.0.13 |
所有PIM路由器 |
|
224.0.0.14 |
RSVP封装 |
|
224.0.0.15 |
所有CBT路由器 |
|
224.0.0.16 |
指定SBM |
|
224.0.0.17 |
所有SBMS |
|
224.0.0.18 |
VRRP |
|
…… |
…… |
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播报文时,传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播MAC地址。组播MAC地址是和组播IP地址对应的。IANA(Internet Assigned Number Authority)规定,组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit。

图1-2 组播IP地址与以太网MAC地址的映射关系
由于IP组播地址的后28位中只有23位被映射到MAC地址,这样就会有32个IP组播地址映射到同一MAC地址上。
组播涉及到的协议主要有组播组管理协议和组播路由协议。组播组管理协议目前使用的是作为IP组播基本信令协议的因特网组播管理协议(IGMP),它运行在主机和路由器之间,作用是使路由器了解网段上有没有组播组成员。组播路由协议运行在组播路由器之间,作用是建立和维护组播路由,完成正确、高效地转发组播数据包。目前使用的组播路由协议主要有PIM-SM、PIM-DM、MSDP等。而单播路由协议BGP经过组播扩展后也可以在域间传递组播路由信息。
因特网组管理协议IGMP是主机可以使用的唯一协议,它定义了主机与路由器之间组播成员关系的建立和维护机制,是整个IP组播的基础。主机通过IGMP通知路由器有关组成员的信息,并使路由器能通过和自己直接相连的主机来了解组内其他成员的情况。如果一个网络中有一个用户通过IGMP宣布加入某组播组,则网络中的组播路由器就将发到该组播组的信息通过组播路由协议进行传播,最终将该网络作为一个分枝加入组播树。当主机作为某个组的成员开始收到信息后,路由器就会周期性地对该组进行查询,检查组内的成员是否还参与其中,只要还有一个主机仍在参与,路由器就继续接收数据。当网络中的所有用户退出该组播组后,相关的分枝就从组播树中删掉。
由于组播组地址是虚拟的,所以不可能如同单播那样,直接从数据源一端路由到特定的目的地址。组播应用程序将数据包发送给一组希望接收数据的接收者(组播地址),而不是仅仅传送给一个接收者(单播地址)。
组播路由建立了一个从数据源端到多个接收端的无环数据传输路径。组播路由协议的任务就是构建分发树结构。组播路由器能采用多种方法来建立数据传输的路径,即分发树。
与单播路由一样,组播路由也分为域内和域间两大类。域内组播路由目前已经相当成熟,在众多的域内路由协议中,PIM-DM(协议独立组播—密集模式)和PIM-SM(协议独立组播—稀疏模式)是目前应用最多的协议。域间路由的首要问题是路由信息(或者说可达信息)如何在自治系统之间传递,由于不同的AS可能属于不同的运营商,因此除了距离信息外,域间路由信息必须包含运营商的策略,这是与域内路由信息的不同之处。
l PIM-DM(Protocol-Independent Multicast Dense Mode,PIM-DM)
密集模式组播路由协议适用于小型网络。它假设网络中的每个子网都存在至少一个对组播源感兴趣的接收站点。因此,组播数据包被扩散到网络中的所有点。与此伴随着相关资源(带宽和路由器的CPU等)的消耗。为了减少这些宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行剪枝操作,只保留包含接收站点的分支。为了使剪掉的分支中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。为了减少等待剪枝分支恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动恢复组播报文的转发。这种周期性的扩散和剪枝现象是密集模式协议的特征。一般说来,密集模式下数据包的转发路径是“有源树”——以“源”为根、组播组成员为枝叶的一棵树。由于有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树(Shortest Path Tree,SPT)。
l PIM-SM(Protocol-Independent Multicast Sparse Mode,PIM-SM)
密集模式采用的扩散—剪枝技术,在广域网上是不可取的。在广域网上,组播接收成员相对稀疏,多采用稀疏模式。稀疏模式默认所有主机都不需要接收组播包,只向明确指定需要组播包的主机转发。为了使接收站点能够接收到特定组的组播数据流,连接这些站点的组播路由器必须向该组对应的“汇聚点”RP(Rendezvous Point)(汇聚点需要在网络中构建,是一些虚拟的数据交换地点)发送加入消息,加入消息经过一个个路由器后到达根部,即汇聚点,所经过的路径就变成了共享树的分支。稀疏模式协议先将组播报文发送到汇聚点,再沿以汇聚点为根的组员为枝叶的“共享树”转发。为了避免共享树的分支由于未更新而被删除,稀疏模式组播路由协议通过向分支周期性地发送加入消息来维护组播分布树。
发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达目的地。
l MSDP(Multicast Source Discovery Protocol)
对于ISP来说,不希望依靠竞争对手的RP转发组播流量,但同时又要求无论信源的RP在哪里,都能从信源获取信息发给自己内部的成员。MSDP就是为了解决这个问题而提出的。MSDP(组播源发现协议)描述了多个PIM-SM域互连的机制。MSDP允许不同域的RP共享其组播源信息。MSDP要求域内组播路由协议必须是PIM-SM。
l MBGP组播扩展
目前使用最多的域间单播路由协议是BGP-4。由于组播的网络拓扑和单播拓扑有可能不同,为了实现域间组播路由信息的传递,必须对BGP-4进行改造。为了构造域间组播路由树,除了要知道单播路由信息外,还要知道网络中哪些部分是支持组播的,即组播的网络拓扑情况。
在RFC2858中规定了对BGP进行多协议扩展的方法,扩展后的BGP(MBGP,也写作BGP-4+)不仅能携带IPv4单播路由信息,也能携带其它网络层协议(如组播、IPv6等)的路由信息,携带组播路由信息只是其中一个扩展功能。
在组播模型中,源主机向IP数据包目的地址字段内的组播组地址所表示的主机组传送信息。和单播模型不同的是,组播模型必须将组播数据包转发到多个外部接口上以便能传送到所有接收站点,因此组播转发过程比单播转发过程更加复杂。
l RPF(Reverse Path Forwarding,逆向路径转发)
为了保证组播信息包都是通过最短路径到达路由器,组播必须依靠单播路由表或者单独提供给组播使用的单播路由表(如MBGP组播路由表),对组播信息包的接收接口进行一定的检查,这种检查机制就是大部分组播路由协议进行组播转发的基础——RPF(Reverse Path Forwarding,逆向路径转发)检查。组播路由器利用到达的组播数据包的源地址来查询单播路由表或者独立的组播路由表,以确定此数据包到达的入接口处于接收站点至源地址的最短路径上。如果使用的是有源树,这个源地址就是发送组播数据包的源主机的地址;如果使用的是共享树,该源地址就是共享树的根的地址。当组播数据包到达路由器时,如果RPF检查通过,数据包则按照组播转发项进行转发,否则,数据包被丢弃。
l 组播策略路由
组播策略路由是对组播通常按照路由表进行报文转发功能的一种补充和增强,它依照用户指定的具体策略来转发组播报文。
组播策略路由通过配置Route-policy来实现,它是单播策略路由的一种扩展,由用户输入的一组IF-MATCH-APPLY语句来描述。IF-MATCH子句定义匹配准则,也就是通过当前Route-policy规定所需满足的过滤条件,它规定当组播报文满足用户配置的匹配条件时,不再按照通常的流程来转发,而是按照用户配置的动作(由APPLY语句描述)进行转发。
有关组播策略路由的具体配置请参见本手册之“网络协议”部分。
IP组播技术有效地解决了单点发送多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载。利用网络的组播特性可以方便地提供一些新的增值业务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视/音频会议等互联网的信息服务领域。
l 多媒体、流媒体的应用;
l 培训、联合作业场合的通信;
l 数据仓库、金融应用(股票)等;
l 任何“点到多点”的数据发布应用。
在IP网络中多媒体业务日渐增多的情况下,组播有着巨大的市场潜力,组播业务也将逐渐得到推广和普及。
组播公共配置的任务是组播组管理协议和组播路由协议共有的。包括启动组播、配置组播转发边界、显示组播路由表及组播转发表等。
组播的基本公共配置包括:
l 启动组播
组播的高级公共配置包括:
l 配置组播转发报文的最小TTL值
l 配置组播转发边界
l 配置组播路由项数量限制
l 清除MFC转发项或其统计信息
l 清除组播核心路由表中的路由项
启动组播路由协议之前,必须首先启动组播。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
启动组播 |
multicast routing-enable |
|
停止组播 |
undo multicast routing-enable |
缺省不启动组播。
注意:
只有启动了组播,其他的组播配置才能生效。
组播转发TTL值可配置在所有支持组播报文转发的接口上。
在接口上配置组播转发报文的最小TTL值后,当要将一个报文从该接口转发出去时(包括本机发出的报文),对接口上配置的最小TTL值进行检查,若报文TTL值(报文TTL已在本路由器内减1)大于接口上配置的最小TTL值,则转发该报文;若报文TTL值小于或等于接口上配置的最小TTL值,则丢弃该报文。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
配置组播转发报文的最小TTL值 |
multicast minimum-ttl ttl-value |
|
取消配置的组播转发报文的最小TTL值 |
undo multicast minimum-ttl |
缺省情况下,未配置组播转发的最小TTL值。
组播转发边界可配置在所有支持组播报文转发的接口上。
当一个接口配置了组播转发边界以后,从该接口接收的报文和从该接口发出的报文(包括本机发出的报文)都将进行过滤。其中,对于从该接口接收的报文,先按照组播转发边界进行过滤,再执行可能的组播策略路由处理。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
配置组播转发边界 |
multicast packet-boundary acl-number |
|
取消配置的组播转发边界 |
undo multicast packet-boundary |
缺省情况下,不对接收与发送的组播数据进行组播边界过滤。
为防止大量的组播路由项耗尽路由器内存,可以限制组播路由项的数量。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
配置组播路由项数量限制 |
multicast route-limit limit |
缺省情况下,组播路由项的数量限制为系统允许的最大值,这个最大值随路由器类型不同而有所差别。
请在用户视图下进行下列操作。
表2-5 清除MFC转发项或其统计信息
|
操作 |
命令 |
|
清除MFC转发项或转发项的统计信息 |
reset multicast forwarding-table [ statistics ] all reset multicast forwarding-table [ statistics ] group-address [ mask { group-mask | group-mask-length } ] [ source-address [ mask { source-mask | source-mask-length } ] ] [ incoming-interface interface-type interface-number ] reset multicast forwarding-table [ statistics ] slot slot-number |
& 说明:
槽号参数slot slot-number只用在分布式路由器系统中。
请在用户视图下进行下列操作。
|
操作 |
命令 |
|
清除组播核心路由表的路由项 |
reset multicast routing-table all reset multicast routing-table group-address [ mask { group-mask | group-mask-length } ] [ source-address [ mask { source-mask | source-mask-length } ] ] [ incoming-interface interface-type interface-number ] |
清除组播核心路由表中的路由项后,MFC中相应的转发项也将被删除。
在完成上述配置后,可在所有视图下执行display命令显示配置后组播的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行debugging命令可对组播进行调试。
表2-7 组播公共配置显示和调试
|
操作 |
命令 |
|
查看组播路由表信息 |
display multicast routing-table [ group-address [ mask { mask | mask-length } ] | source-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } ]* |
|
查看静态组播路由的配置信息 |
display multicast routing-table static [ config ] source-address [ mask | mask-length ] |
|
查看组播转发表信息 |
display multicast forwarding-table [ group-address [ mask { mask | mask-length } ] | source-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } ]* |
|
查看RPF路由信息 |
display multicast rpf-info source-address |
|
打开组播报文转发调试信息开关 |
debugging multicast forwarding |
|
打开组播转发状态调试信息开关 |
debugging multicast status-forwarding |
|
打开组播核心路由调试信息开关 |
debugging multicast kernel-routing |
Comware的组播实现中,组播路由表分三个层次:每个组播路由协议有一个协议自身的组播路由表;各个组播路由协议的组播路由信息经过综合形成组播核心路由表;组播核心路由表与组播转发表保持一致,而组播转发表真正控制着组播数据包的转发。
组播转发表主要用于调试,一般情况下,用户只需查看组播核心路由表获得需要的信息。
可在所有视图下使用mtracert命令跟踪组播数据从组播源到目的接收者的所经过的网络路径,定位错误。
|
操作 |
命令 |
|
跟踪组播数据从组播源到目的接收者所经过的网络路径 |
mtracert source-address [ last-hop-address ] [ group-address ] |
l 只指定组播源地址时,默认最后一跳地址为本地路由器的某个物理接口地址,默认组地址为0.0.0.0。从本跳路由器开始,按照到组播源的RPF规则,逐跳反向跟踪到直连组播源的第一跳路由器。
l 只指定组播源地址和最后一跳地址时,默认组地址为0.0.0.0,从最后一跳路由器开始,按照到组播源的RPF规则,逐跳反向跟踪到直连组播源的第一跳路由器。
l 只指定源地址和组地址时,默认最后一跳地址为本跳路由器的某个物理接口地址,从本跳路由器开始,按照沿途每跳路由器组播核心路由表的相应(S,G)项,反向跟踪到直连组播源的第一跳路由器。
l 指定组播源地址,目的地址和组地址时,从最后一跳路由器开始,按照沿途路由器组播核心路由表的相应(S,G)项,反向跟踪到直连组播源的第一跳路由器。
l 对组地址为0.0.0.0的跟踪方式称为weak trace方式。
IGMP(Internet Group Management Protocol,因特网组管理协议)是TCP/IP协议族中负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。IGMP不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现IGMP协议。
参与IP组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。组播路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而主机方只需要保存自己加入了哪些组播组。
IGMP在主机与路由器之间是不对称的:主机需要响应组播路由器的IGMP查询报文,即,以成员资格报告报文响应;路由器周期性发送成员资格查询报文,然后根据收到的响应报文确定某个特定组在自己所在子网上是否有主机加入,并且当收到主机的退出组的报告时,发出特定组的查询(IGMP版本2),以确定某个特定组是否已无成员存在。
到目前为止,IGMP有三个版本:IGMP版本1(由RFC1112定义)、IGMP版本2(由RFC2236定义)和IGMP版本3。目前应用最多的是版本2。
IGMP版本2的改进主要有:
共享网段即一个网段上有多个组播路由器的情况。在这种情况下,由于此网段下运行IGMP的路由器都能从主机那里收到成员资格报告消息,因此,只需要一个路由器发送成员资格查询消息,这就需要一个路由器选举机制来确定一个路由器作为查询器。
在IGMP版本1中,查询器的选择由组播路由协议决定;IGMP版本2对此做了改进,规定同一网段上有多个组播路由器时,具有最低IP地址的组播路由器被选举出来充当查询器。
在IGMP版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。组播路由器只能依靠组播组响应超时来确定组播组中是否还有成员存在。而在版本2中,当一个主机决定离开一个组播组时,如果它是对最近一条成员资格查询消息作出响应的主机,那么它就会发送一条离开组的消息。
在IGMP版本1中,组播路由器的一次查询,是针对该网段下的所有组播组。这种查询称为普遍组查询。
在IGMP版本2中,在普遍组查询之外增加了特定组的查询,这种查询报文的目的IP地址为该组播组的IP地址,报文中的组地址域部分也为该组播组的IP地址。这样就避免了属于其它组播组成员的主机发送响应报文。
IGMP版本2增加最大响应时间字段,以动态地调整主机对组查询报文的响应时间。
在一个大规模的网络中应用组播路由协议时(例如PIM-DM),会存在很多末梢网络(末梢区域),对这些末梢网络进行配置和管理是一件很繁重的工作。
为了减少这些配置和管理工作,同时又不影响末梢网络的组播连接,可以在末梢网络路由器(图中的RouterB)上配置IGMP Proxy,路由器将自己所连接的主机发出的IGMP加入或IGMP离开消息进行转发。配置了IGMP Proxy后,对于外部网络来说,末梢路由器不再是一个PIM邻居,而是一台主机,只有当该路由器有直连成员时,才会接收相应组的组播数据。

图3-1是一个末梢网络IGMP Proxy示意图。
首先,在RouterB的Ethernet0/0/0接口和Ethernet1/0/0接口上配置PIM协议,在Ethernet0/0/0接口上配置Ethernet1/0/0接口为其到达外部网络的IGMP Proxy代理出接口(通过配置命令igmp proxy)。
然后在RouterA的Ethernet0/0/0接口上配置pim neighbor-policy,滤除33.33.33.0/24网段的PIM邻居,即不将RouterB作为其PIM邻居。
这样,当末梢网络中的RouterB从Ethernet0/0/0接口收到主机发出的IGMP加入或IGMP离开消息后,将该IGMP消息的源地址改为到RouterA的出接口地址(Ethernet1/0/0接口地址:33.33.33.2),并将该消息向RouterA的Ethernet0/0/0接口发送。对RouterA来说,就象接口Ethernet0/0/0有直连主机存在一样。同样,RouterB在收到外部网络路由器RouterA发送的普遍组或特定组查询消息后,也将查询消息的源地址改为到主机的出接口地址(Ethernet0/0/0接口地址:22.22.22.1),并将该消息从Ethernet0/0/0接口发送出去。
在图3-1中,称RouterB的Ethernet0/0/0接口为被代理接口,RouterB的Ethernet1/0/0接口为代理接口。
启动组播后,必须在接口上使能IGMP协议,才能进行其他IGMP配置。
IGMP的基本配置包括:
l 启动组播
l 在接口上使能IGMP
l 配置IGMP Proxy
IGMP的高级配置包括:
l 配置路由器成为组成员
l 控制对IP组播组的访问
l 配置IGMP查询报文间隔
l 配置IGMP版本
l 配置IGMP查询器存在时间
l 配置IGMP最大查询响应时间
l 配置接口上加入IGMP组的数量限制
l 发送IGMP指定组查询报文的时间间隔
l 发送IGMP指定组查询报文的次数
l 删除接口上已加入的IGMP组
启动组播后,组播的相关配置才能生效。
此项配置任务在需要进行组播成员关系维护的接口上使能IGMP。执行此操作之后,才能进行IGMP的其他配置。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
在当前接口上使能IGMP |
igmp enable |
|
在当前接口上禁止IGMP |
undo igmp enable |
缺省情况下,接口上禁止IGMP。
& 说明:
运行组播时,如果一个路由器的以太网接口配置了从IP地址,则要求在同一共享网段的其他路由器的以太网接口也配置从IP地址,且所有这些以太网接口的从IP地址处于同一网段。
为了减少对末梢网络进行的配置和管理工作,同时又不影响末梢网络的组播连接,可以配置IGMP Proxy。
在末梢网络路由器上配置IGMP Proxy后,对于外部网络来说,末梢路由器只是一台主机,只有当该路由器有直连成员时,才会接收相应组的组播数据。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
指定当前接口的代理接口 |
igmp proxy interface-type interface-number |
|
取消接口IGMP Proxy功能 |
undo igmp proxy |
缺省情况下,不使能IGMP Proxy功能。
注意:
配置igmp proxy前需要先在接口上使能PIM协议。
同一个接口不能作为两个及两个以上其它接口的IGMP代理接口。
通常情况下,运行IGMP的主机会对组播路由器的IGMP查询报文进行响应,如果由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组地成员,从而取消相应的路径。
为避免这种情况的发生,可以将路由器的某个接口配置成为组播组成员,当从该接口收到IGMP查询报文时,由路由器进行响应,从而保证接口所在网段能够继续收到组播报文。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
配置路由器成为组成员 |
igmp host-join group-address |
|
取消路由器作为组成员 |
undo igmp host-join group-address |
缺省情况下,路由器不加入任何组播组。
组播路由器通过接受到的IGMP组成员关系报文来确定该网段的组成员关系。可以通过此项配置在每一个接口上设一个过滤器,以限制接口所服务的组播组范围。
请在接口视图下进行下列配置。
表3-4 控制对IP组播组的访问
|
操作 |
命令 |
|
限制接口所服务的组播组范围 |
igmp group-policy acl-number [ 1 | 2 ] |
|
取消接口上配置的过滤器 |
undo igmp group-policy |
缺省不配置过滤器,即接口允许任一组播组。
路由器通过在所连接的网段上发送IGMP查询报文,获得该网段哪些组播组有成员。组播路由器周期性地发送查询报文,当得到某一组成员报告的时候,刷新该网段相应的组成员关系信息。组成员关系超时时间为查询间隔的3倍。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
配置查询间隔 |
igmp timer query seconds |
|
恢复查询间隔的缺省值 |
undo igmp timer query |
在一个网段中有多个组播路由器时,由查询器负责向局域网上的所有主机发送IGMP查询报文。
缺省时,此时间间隔为60秒。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
选择路由器使用的IGMP版本 |
igmp version { 1 | 2 } |
|
恢复到缺省配置 |
undo igmp version |
缺省情况下,使用版本2。
注意:
子网上的所有路由器应支持同一版本的IGMP。IGMP各版本之间不能自动转换。应该配置子网上的所有路由为同一IGMP版本。
IGMP查询器存在时间超时是指当一路由器停止发送查询报文后,另一路由器取代其成为新的查询报文发送者的等待时间。
请在接口视图下进行下列配置。
表3-7 配置IGMP查询器存在时间
|
操作 |
命令 |
|
配置IGMP查询器存在时间 |
igmp timer other-querier-present seconds |
|
恢复查询器存在时间的缺省值 |
undo igmp timer other-querier-present |
缺省情况下,路由器在igmp timer query命令指定的间隔的2倍时间内没有收到查询消息,就认为原来的查询器失效。当配置了查询器超时时间,并且路由器在配置的时间之内没有收到查询消息时,也认为原来的查询器失效。
注意:
配置的查询器超时时间应大于查询间隔,否则可能导致网络内的查询器反复变化。
从路由器接收到一条查询消息后,主机会为其所属的每个组播组都配置一个计时器,计时器的值在0到最大响应时间之间随机选定,当其中任何一个计时器的值减为0时,主机就会发送该组播组的成员报告消息。
合理配置最大响应时间,可以使主机快速响应查询信息,路由器也就能快速地掌握组播组成员的存在状况。
请在接口视图下进行下列配置。
表3-8 配置IGMP最大查询响应时间
|
操作 |
命令 |
|
配置IGMP最大查询响应时间 |
igmp max-response-time seconds |
|
恢复最大查询响应时间到缺省值 |
undo igmp max-response-time |
最大响应时间的值愈小,路由器阻断组的速度愈快。实际中响应时间是配置值范围(1~25秒)内的一个随机值。缺省值为10秒。
如果不限制路由器接口上IGMP组加入数量和路由器IGMP组加入总数量,在加入了大量的组后,就有可能耗尽路由器内存,导致路由器故障。
用户可以对路由器接口上IGMP组加入数量进行限制。路由器IGMP组加入总数量的限制由系统定义,不能通过配置命令改变。
请在接口视图下进行下列配置。
表3-9 配置接口上加入IGMP组的数量限制
|
操作 |
命令 |
|
配置接口上加入IGMP组的数量限制 |
igmp group-limit limit |
|
恢复缺省配置 |
undo igmp group-limit |
缺省情况下,接口上加入IGMP组的数量限制为1024。
接口上加入IGMP组的数量上限随路由器类型不同而有所区别,例如在集中式路由器上的值为4096。
如果在配置时,接口上的IGMP组加入数量已经超过了配置值,原先已经加入的IGMP组不会被删除。
IGMP查询器在收到主机发送的IGMP Leave报文时,可以发送IGMP指定组查询报文的时间间隔。
本命令只有当IGMP查询路由器运行在IGMP版本2时有效。如果主机运行的是IGMP版本1,离开某个组时不发送IGMP Leave报文,此时本命令对该主机无效。
请在接口视图下进行下列配置。
表3-10 发送IGMP指定组查询报文的时间间隔
|
操作 |
命令 |
|
发送IGMP指定组查询报文的时间间隔 |
igmp lastmember-queryinterval seconds |
|
恢复时间间隔的缺省值 |
undo igmp lastmember-queryinterval |
缺省情况下,IGMP指定组查询报文的时间间隔为1秒。
IGMP查询器在收到主机发送的IGMP Leave报文时,可以发送IGMP指定组查询报文的次数。
本命令只有当IGMP查询路由器运行在IGMP版本2时有效。如果主机运行的是IGMP版本1,离开某个组时不发送IGMP Leave报文,此时本命令对该主机无效。
请在接口视图下进行下列配置。
表3-11 发送IGMP指定组查询报文的次数
|
操作 |
命令 |
|
发送IGMP指定组查询报文的次数 |
igmp robust-count robust-value |
|
恢复报文次数为缺省值 |
undo igmp robust-count |
缺省情况下,发送IGMP指定组查询报文的次数为2次。
可以删除路由器所有接口的所有已加入的IGMP组,也可以删除特定接口上的所有已加入的IGMP组,或者删除特定接口上某个特定IGMP组地址或组地址网段。
请在用户视图下进行下列配置。
|
操作 |
命令 |
|
删除接口上已加入的IGMP组 |
reset igmp group { all | interface interface-type interface-number { all | group-address [ group-mask ] } } |
& 说明:
删除组后,不影响该组的再次加入。
在完成上述配置后,可在所有视图下执行display命令显示配置后IGMP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行debugging命令可对IGMP进行调试。
表3-13 IGMP显示和调试
|
操作 |
命令 |
|
显示IGMP组播组成员信息 |
display igmp group [ group-address | interface interface-type interface-number | local ] |
|
显示接口的IGMP配置和运行信息 |
display igmp interface [ interface-type interface-number ] |
|
打开IGMP调试信息开关 |
debugging igmp { all | event | host | packet | timer } |
如图3-2,在RouterA和RouterB的接口上启动IGMP和PIM-DM。
在末梢网络路由器RouterB上,配置接口Ethernet0/0/0加入组播组224.0.1.1,且配置IGMP代理接口为Ethernet1/0/0。(有关PIM-DM协议配置请参见下一章。)
& 说明:
这里重点说明IGMP及IGMP Proxy的配置,其他配置不作说明。

图3-2 IGMP典型组网举例示意图
(1) 配置RouterB
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口Ethernet0/0/0、Ethernet1/0/0上启动IGMP及PIM-DM。
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] ip address22.22.22.1 24
[H3C-Ethernet0/0/0] igmp enable
[H3C-Ethernet0/0/0] pim dm
[H3C-Ethernet0/0/0] igmp host-join 224.0.1.1
[H3C-Ethernet0/0/0] interface ethernet 1/0/0
[H3C-Ethernet1/0/0] ip address 33.33.33.2 24
[H3C-Ethernet1/0/0] igmp enable
[H3C-Ethernet1/0/0] pim dm
[H3C-Ethernet1/0/0] quit
# 配置接口Ethernet1/0/0为Ethernet0/0/0的IGMP Proxy代理接口。
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] igmp proxy ethernet1/0/0
(2) 配置RouterA
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口Ethernet0/0/0上启动IGMP、PIM-DM。
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] igmp enable
[H3C-Ethernet0/0/0] pim dm
# 配置Ethernet0/0/0不把33.33.33.2作为PIM邻居。
[H3C-Ethernet0/0/0] pim neighbor-policy 2001
[H3C-Ethernet0/0/0] quit
[H3C] acl number 2001
[H3C-acl-basic-2001] rule deny source 33.33.33.2 0
[H3C-acl-basic-2001] rule permit source any
(3) 配置Receiver
Receiver首先跟组播源建立http连接,把组播源当前的几个节目(每个节目对应不同的组播地址,即组播组)列在客户端软件上。当选择某一个节目时,客户端软件主动发送IGMP报文加入该组播组,此时Receiver即可接收相应的组播节目。
PIM-DM(Protocol Independent Multicast,Dense Mode,协议独立组播-密集模式)属于密集模式的组播路由协议,适用于小型网络,在这种网络环境下,组播组的成员相对比较密集。
PIM-DM的工作过程可以概括为:邻居发现、扩散—剪枝过程、嫁接阶段。
PIM-DM路由器刚开始启动时,需要使用Hello报文来发现邻居。运行PIM-DM的各网络节点之间使用Hello报文保持联系。PIM-DM的Hello报文是周期性发送的。
PIM-DM假设网络上的所有主机都准备接收组播数据。
当某组播源S开始向组播组G发送数据时,路由器接收到组播报文后,首先根据单播路由表进行RPF检查,如果检查通过,路由器创建一个(S,G)表项,然后将数据向网络上所有下游PIM-DM节点转发(Flooding)。如果没有通过RPF检查,即组播报文从错误的接口输入,则将报文丢弃。经过这个过程,在PIM-DM组播域内,都会创建一个(S,G)表项。
如果下游节点没有组播组成员,则向上游节点发剪枝(Prune)消息,通知上游节点不用再转发数据。上游节点收到剪枝消息后,就将相应的接口从其组播转发表项(S,G)对应的输出接口列表中删除,这就建立了一个以源S为根的SPT(Shortest Path Tree,SPT)树。剪枝过程最先由叶子路由器发起。
上述过程就称为扩散—剪枝过程。各个被剪枝的节点同时提供超时机制,当剪枝超时时,路由器重新开始扩散—剪枝过程。PIM-DM的扩散—剪枝机制周期性进行。
PIM-DM采用RPF检查,利用现存的单播路由表构建一棵从数据源始发的组播转发树。当一个组播包到达时,路由器首先判断到达路径的正确性。如果到达接口是单播路由指示的通往组播源的接口,就认为这个组播包是从正确路径而来;否则,将组播包作为冗余报文丢弃。作为路径判断依据的单播路由信息可以来源于任何一种单播路由协议,如RIP、OSPF发现的路由信息,而不依赖于特定的单播路由协议。
如图4-1所示,如果处于一个LAN网段上的两台组播路由器A和B,各自有到组播源S的接收途径,它们在接收到组播源S发出的组播数据报文以后,都会向LAN上转发该组播报文,这时,下游节点组播路由器C就会收到两份相同的组播报文。

图4-1 Assert机制示意图
路由器检测到这种情况后,需要通过Assert机制来选定一个唯一的转发者。通过发送Assert报文,选出一条最优的径,如果两条或两条以上路径的优先级和开销相同,则选择IP地址大的作为该(S,G)项的上游邻居,由它负责该(S,G)组播报文的转发。
当被剪枝的下游节点需要恢复到转发状态时,该节点使用嫁接报文通知上游节点。
PIM-SM(Protocol Independent Multicast,Sparse Mode)即与协议无关的组播稀疏模式,属于稀疏模式的组播路由协议,主要用于组成员分布相对分散、范围较广、大规模的网络。
与密集模式的扩散—剪枝不同,PIM-SM协议假定所有的主机都不需要接收组播数据包,只有主机明确指定需要时,PIM-SM路由器才向它转发组播数据包。
PIM-SM通过配置汇聚点RP(Rendezvous Point)和自举路由器BSR(Bootstrap Router),向所有PIM-SM路由器通告组播信息,并利用路由器的加入/剪枝信息,建立起基于RP的共享树RPT(RP-rooted shared tree)。从而减少数据报文和控制报文占用的网络带宽,降低路由器的处理开销。组播数据沿着共享树流到该组播组成员所在的网段,当数据流量达到一定程度,组播数据流可以切换到基于源的最短路径树SPT,以减少网络延迟。
PIM-SM不依赖于特定的单播路由协议,而是使用现存的单播路由表进行RPF检查。
PIM-SM的工作过程主要有:邻居发现、RP共享树(RPT)的生成、组播源注册、SPT切换等。其中,邻居发现机制与PIM-DM相同,这里不再介绍。
(1) RP共享树(RPT)的生成
当主机加入一个组播组G时,与该主机直接相连的叶子路由器通过IGMP报文了解到有组播组G的接收者,就为组播组G计算出对应的汇聚点RP,然后向朝着RP方向的上一级节点发送加入组播组的消息(join消息)。从叶子路由器到RP之间途经的每个路由器都会在转发表中生成(*,G)表项,表示无论是哪个源发出的,发送至组播组G的,都适用于该表项。当RP收到发往组播组G的报文后,报文就会沿着已经建立好的路径到达叶子路由器,进而到达主机。这样就生成了以RP为根的RPT。如下图所示。

图4-2 RPT示意图
(2) 组播源注册
当组播源S向组播组G发送了一个组播报文时,与其直接相连的PIM-SM组播路由器接收到该报文以后,就负责将该组播报文封装成注册报文,单播给对应的RP。如果一个网段上有多个PIM-SM组播路由器,这时候将由指定路由器DR(Designated Router)负责发送该组播报文。
(3) SPT切换
当组播路由器发现从RP发来的目的地址为G的组播报文的速率超过了阈值时,组播路由器就向朝着源S的上一级节点发送加入消息,导致RPT向SPT的切换。
(1) 配置候选RP
在PIM-SM网络中,可以存在多个RP(候选RP),每个候选RP(Candidate-RP,C-RP)负责转发目的地址在一定范围内的组播报文。配置多个候选RP可以实现RP负载分担。候选RP之间没有主次之分,所有的组播路由器收到BSR通告的候选RP消息后,根据相同的算法计算出与某一组播组对应的RP。
注意,一个RP可以为多个组播组服务,也可以为所有组播组服务。每个组播组在任意时刻,只能唯一地对应一个RP,不能同时对应多个RP。
(2) 配置BSR
BSR是PIM-SM网络里的管理核心,它负责收集候选RP发来的信息,并把它们广播出去。
一个网络内部只能有一个BSR,但可以配置多个候选BSR(Candidate-BSR,C-BSR)。这样,一旦某个BSR发生故障后,能够切换到另外一个。C-BSR通过自动选举产生BSR。
(3) 配置静态RP
RP是组播路由中的核心路由器,如果由于某种原因使由BSR机制选举产生的动态RP失效,则可以通过配置静态RP来指定。静态RP作为动态RP的备份,可以提高网络的健壮性,增强组播网络的运营管理能力。
PIM-DM的基本配置包括:
l 启动组播
l 在接口上使能IGMP
l 进入PIM视图
l 启动PIM-DM协议
PIM-DM的高级配置包括:
l 配置Hello报文发送间隔
l 配置组播源(组)过滤
l 配置PIM邻居过滤
l 配置接口的PIM邻居最大数量
在接口上配置了PIM-DM之后,协议会定期发送PIM协议Hello报文,并且处理PIM邻居发送的协议报文。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
在接口上启动PIM-DM协议 |
pim dm |
|
在接口上禁止PIM-DM协议 |
undo pim dm |
必须使能组播路由之后,PIM-DM才能生效。在接口上启动了PIM-DM协议后,不能再对此接口启动PIM-SM协议,反之亦然。
当路由器在PIM-DM协议域中运行时,建议在非边界路由器的全部接口启动PIM-DM。
配置与PIM相关的全局参数需要进入PIM视图。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
进入PIM视图 |
pim |
|
清除在PIM视图下进行的配置 |
undo pim |
注意:
使用undo pim命令将清除所有在PIM视图下进行的配置。
接口启动PIM协议后,会定期发送Hello报文。
请在接口视图下进行下列配置。
表4-3 配置Hello报文发送间隔
|
操作 |
命令 |
|
配置接口的Hello报文发送间隔 |
pim timer hello seconds |
|
恢复该时间间隔的缺省值 |
undo pim timer hello |
缺省情况下,Hello报文发送间隔是30秒。
可以根据组播数据包和注册报文中封装的组播数据的源、组地址进行过滤,以提高网络的安全性。
请在PIM视图下进行下列配置。
|
操作 |
命令 |
|
对接收的组播数据报文进行源(组)过滤 |
source-policy acl-number |
|
取消配置 |
undo source-policy |
如果配置基本访问控制列表,则对接收的所有组播数据报文匹配源地址,未通过匹配的报文将被丢弃。
如果配置高级访问控制列表,则对接收的所有组播数据报文匹配源地址和组地址,未通过匹配的报文将被丢弃。
可以通过配置基本访问控制列表,限制只有通过过滤的路由器才能作为当前接口的PIM邻居。
请在接口视图下进行下列配置。
表4-5 配置PIM邻居过滤
|
操作 |
命令 |
|
对PIM邻居进行过滤 |
pim neighbor-policy acl-number |
|
取消配置 |
undo pim neighbor-policy |
为防止建立大量的PIM邻居关系后耗尽路由器内存,导致路由器故障,可以对路由器接口上PIM邻居的数量进行限制。而路由器PIM邻居总数量的限制由系统内部定义,用户不能通过命令改变。
请在接口视图下进行下列配置。
表4-6 配置接口的PIM邻居最大数量
|
操作 |
命令 |
|
配置接口的PIM邻居数量限制 |
pim neighbor-limit limit |
|
恢复缺省配置 |
undo pim neighbor-limit |
缺省情况下,接口的PIM邻居数量上限为128。
如果在用户配置的时候,该接口上的PIM邻居数已经超过了配置值,原有的PIM邻居不会被删除。
PIM-SM的基本配置包括:
l 启动组播
l 在接口上使能IGMP
l 启动PIM-SM协议
l 进入PIM视图
l 配置PIM-SM域边界
l 配置候选BSR
l 配置候选RP
l 配置静态RP
PIM-SM的高级配置包括:
l 配置Hello报文发送间隔
l 配置组播源(组)过滤
l 配置PIM邻居过滤
l 配置接口的PIM邻居最大数量
l 配置RP对注册报文进行过滤
l 配置从RPT切换到SPT的阈值
l 限定合法BSR的范围
l 限定合法C-RP的范围
l 清除PIM路由项
l 清除PIM邻居
需要注意的是,在整个PIM-SM域中,至少要在一台路由器上配置候选RP和候选BSR。
启动组播之后,此项配置才会有效。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
在接口上启动PIM-SM |
pim sm |
|
在接口上禁止PIM-SM |
undo pim sm |
重复此项配置,以在其他接口上启动PIM-SM。一个接口在同一时刻只能运行一个组播路由协议。在接口上启动了PIM-SM协议后,不能再对此接口启动PIM-DM协议,反之亦然。
请参见本章“PIM-DM配置”。
配置PIM-SM域边界后,自举报文(Bootstrap message)从任何方向都不能穿过边界。通过这种方法,可以分割PIM-SM域。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
配置PIM-SM域边界 |
pim bsr-boundary |
|
删除配置的PIM-SM域边界 |
undo pim bsr-boundary |
缺省时不配置域边界。配置了此项配置之后,自举报文不能通过该边界,但其他PIM报文可以通过域边界。此配置能够有效地将网络划分成使用不同BSR的区域。
在一个PIM域中,需要配置一个或多个候选BSR,候选BSR之间通过自动选举,产生自举路由器BSR(Bootstrap Router),BSR负责收集并发布RP信息。下面简单描述一下候选BSR之间的自动选举:
在将路由器配置为候选BSR时,必须同时指定一个启动了PIM-SM的接口。
最初,每个候选BSR都认为自己是本PIM-SM的BSR,并使用这个接口的IP地址作为BSR地址,发送自举报文(Bootstrap message)。
当候选BSR收到其它路由器发来的自举报文时,它将新收到的自举报文的BSR地址与自己的BSR地址进行比较,比较标准包括优先级和IP地址,优先级相同的情况下,较大的IP地址被认为是更好的。如果前者更好,则将这个新的BSR地址替换自己的BSR地址,并且不再认为自己是BSR;否则,保留自己的BSR地址,继续将自己视为BSR。
请在PIM视图下进行下列配置。
|
操作 |
命令 |
|
配置候选BSR |
c-bsr interface-type interface-number hash-mask-len [ priority ] |
|
取消候选BSR的配置 |
undo c-bsr |
候选BSR应配置在骨干网的路由器上。缺省时没有配置BSR,优先级的缺省值为0。
对通过GRE-TUNNEL学习组播BSR消息,要配置组播静态路由,保证到BSR的下一跳是GRE口。还需要用户注意的是,组播静态路由配置要合理规划,避免路由回环。
注意:
在同一台路由器上只能配置一个候选BSR,在另外的接口上配置BSR会取代先前的配置。
对通过GRE-TUNNEL学习组播BSR消息,要配置组播静态路由,保证到BSR的下一跳是GRE口。
组播静态路由配置要合理规划,避免路由回环。
在PIM-SM协议中,路由组播数据创建的共享树是以RP为树根的,从组播组到RP存在一个映射,一个组播组映射到一个RP上,不同的组可以映射到同一RP上。
请在PIM视图下进行下列配置。
|
操作 |
命令 |
|
配置候选RP |
c-rp interface-type interface-number [ group-policy acl-number ] [ priority priority-value ] |
|
取消候选RP的配置 |
undo c-rp { interface-type interface-number | all } |
配置RP时,若没有指定所服务的组播组范围,该RP为所有组播组服务,否则,所服务组的范围限定为指定范围的组播组。建议在骨干网路由器上配置候选RP。
注意:
此命令中,参数acl-number并不是用来进行匹配过滤,而是定义一个组范围,只要是permit的组范围都会作为RP的服务组范围通告出去,而其它诸如deny等的配置不起作用。
RP是组播路由中的核心路由器,如果由于某种原因使由BSR机制选举产生的动态RP失效,则可以配置静态RP,作为动态RP的备份,提高网络的健壮性,增强组播网络的运营管理能力。
请在PIM视图下进行下列配置。
|
操作 |
命令 |
|
配置静态RP |
static-rp rp-address [ acl-number ] |
|
取消配置的静态RP |
undo static-rp |
如果使用静态RP,PIM域内所有路由器必须采用相同的配置。如果配置的静态RP地址是本机某个状态为UP的接口地址,本机就作为静态RP。作为静态RP的接口不必使能PIM协议。
使用基本访问控制列表可以控制静态RP所服务的组播组范围。
在BSR机制选举产生的RP有效时,静态RP不起作用。
接口启动PIM协议后,会定期发送Hello报文。
PIM-SM协议通过定期广播Hello报文以发现PIM邻居,并判定哪一个路由器是指定路由器(Designated Router,DR)。
请在接口视图下进行下列配置。
表4-12 配置Hello报文发送间隔
|
操作 |
命令 |
|
配置接口的Hello报文发送间隔 |
pim timer hello seconds |
|
恢复该时间间隔的缺省值 |
undo pim timer hello |
缺省情况下,Hello报文发送间隔是30秒。
请参见本章“PIM-DM配置”。
请参见本章“PIM-DM配置”。
请参见本章“PIM-DM配置”。
在PIM-SM网络中,通过注册报文过滤机制,可以在RP上控制哪些源向哪些组发送报文,即RP可以对DR发送来的注册报文进行过滤,只接受特定的报文。
请在PIM视图下进行下列配置。
表4-13 配置RP对DR发送来的注册报文进行过滤
|
操作 |
命令 |
|
配置RP对DR发来的注册报文进行过滤 |
register-policy acl-number |
|
取消配置的报文过滤 |
undo register-policy |
如果某个源组表项(S,G)被ACL拒绝,或者ACL没有定义对它的操作,或者没有定义ACL,RP都会向DR发送RegisterStop消息,阻止该组播数据流的注册过程。
注意:
只有与ACL的permit语句匹配的注册报文才会被RP接受。指定一个没有定义的ACL将使RP拒绝所有的注册报文。
PIM-SM路由器最初通过共享树转发组播数据包,但是如果组播数据通过的速率超过一定的阈值,数据包经过的最后一跳路由器则会发起从共享树到最短路径树的切换。
请在PIM视图下进行下列配置。
表4-14 配置从共享树RPT切换到最短路径树SPT的阈值
|
操作 |
命令 |
|
配置从共享树切换到最短路径树的阈值 |
spt-switch-threshold { traffic-rate | infinity } [ group-policy acl-number [ order order-value] ] |
|
恢复缺省配置 |
undo spt-switch-threshold { traffic-rate | infinity } [ group-policy acl-number ] |
缺省情况下,阈值为0,即最后一跳路由器收到第一个组播数据包就会转向最短路径树。
为了防止网络中合法的BSR被恶意取代,避免BSR欺骗,可以限定合法BSR的范围,除此范围以外的其他的BSR消息,不会被路由器接收,保护网络中BSR的安全性。
请在相应的视图下进行下列配置。
|
操作 |
命令 |
|
限定合法BSR的范围(PIM视图下) |
bsr-policy acl-number |
|
恢复正常状态,不做任何范围限制(PIM视图下) |
undo bsr-policy |
|
创建一个访问控制列表(系统视图下) |
acl number acl-number [ basic | advanced | interface ] |
|
定义一个基本访问控制列表的规则(基本ACL视图下) |
rule [ rule-id ] { permit | deny } [ source sour-addr sour-wildcard | any ] |
关于bsr-policy命令的详细介绍,请参见命令手册。
为了防止C-RP欺骗,可以限定合法C-RP的范围,并且限定每个C-RP所服务的组范围。
请在相应的视图下进行下列配置。
|
操作 |
命令 |
|
限定合法C-RP的范围(PIM视图下) |
crp-policy acl-number |
|
恢复正常状态,不做任何范围限制(PIM视图下) |
undo crp-policy |
|
创建一个访问控制列表(系统视图下) |
acl number acl-number [ basic | advanced | interface ] |
|
定义一个基本访问控制列表的规则(高级ACL视图下) |
rule [ rule-id ] { permit | deny } protocol [ source sour-addr sour-wildcard | any ] [ destination dest-addr dest-mask | any ] |
关于crp-policy命令的详细介绍,请参见命令手册。
请在用户视图下进行下列操作。
表4-17 清除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 } * } |
在完成上述配置后,可在所有视图下执行display命令显示配置后PIM的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行debugging命令可对PIM进行调试。
表4-19 PIM显示和调试
|
操作 |
命令 |
|
显示PIM协议组播路由表 |
display pim routing-table [ *g [ group-address [ mask { mask-length | mask } ] ] [ incoming-interface { interface-type interface-number | null } ] [ dense-mode | sparse-mode ] display pim routing-table [ **rp [ rp-address [ mask { mask-length | mask } ] ] [ incoming-interface { interface-type interface-number | null } ] [ dense-mode | sparse-mode] display pim routing-table [ source-address [ mask { mask-length | mask } ] [ group-address [ mask { mask-length | mask } ] ] [ incoming-interface { interface-type interface-number | null } ] [ dense-mode | sparse-mode ] |
|
显示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 ] |
|
打开PIM协议调试开关 |
debugging pim common { all | event | packet | timer } |
|
打开PIM-DM协议调试开关 |
debugging pim dm { alert | all | mrt | timer | warning | { recv | send } { all | assert | graft | graft-ack | join | prune } } |
|
打开PIM-SM协议调试开关 |
debugging pim sm { all | mbr | register-proxy | mrt | timer | verbose | warning | { recv | send } { assert | bootstrap | crpadv | jp | reg | regstop } } |
& 说明:
debugging pim sm register-proxy仅适用于分布式路由器,在分布式路由器上,打开接口板代理主控板发送注册报文时的调试开关。
在下图中,Multicast Source作为组播源,RECEIVER 1和RECEIVER 2是组播节目“影视热线”的两个接收成员。
& 说明:
在实际的网络中,由于路由设备由不同的厂商提供,设备上的路由协议也会各不相同,这里仅以OSPF为例进行说明。

图4-3 PIM-DM典型配置组网图
(1) 配置RouterA
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 分别在接口Ethernet2/0/0、Serial1/0/0和Serial1/1/0上启动PIM-DM。
[H3C] interface serial 1/0/0
[H3C-Serial1/0/0] pim dm
[H3C-Serial1/0/0] ip address 10.16.1.1 24
[H3C-Serial1/0/0] quit
[H3C] interface serial 1/1/0
[H3C-Serial1/1/0] pim dm
[H3C-Serial1/1/0] ip address 10.16.2.1 24
[H3C-Serial1/1/0] quit
[H3C] interface ethernet 2/0/0
[H3C-Ethernet2/0/0] pim dm
[H3C-Ethernet2/0/0] ip address 10.16.3.1 24
[H3C-Ethernet2/0/0] quit
# 分别在接口Ethernet2/0/0、Serial1/0/0和Serial1/1/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.2.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.3.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(2) 配置RouterB
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口Serial1/0/0上启动PIM-DM。
[H3C] interface serial 1/0/0
[H3C-Serial1/0/0] pim dm
[H3C-Serial1/0/0] ip address 10.16.1.2 24
[H3C-Serial1/0/0] quit
# 在接口Ethernet2/0/0上启动PIM-DM。
[H3C] interface ethernet 2/0/0
[H3C-Ethernet2/0/0] igmp enable
[H3C-Ethernet2/0/0] pim dm
[H3C-Ethernet2/0/0] ip address 10.16.4.1 24
# 分别在接口Ethernet2/0/0、Serial1/0/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.4.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(3) 配置RouterC
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 在接口Serial1/1/0和Ethernet2/0/0上启动PIM-DM。
[H3C] interface serial 1/1/0
[H3C-Serial1/1/0] pim dm
[H3C-Serial1/1/0] ip address 10.16.2.2 24
[H3C-Serial1/1/0] quit
[H3C] interface ethernet 2/0/0
[H3C-Ethernet2/0/0] igmp enable
[H3C-Ethernet2/0/0] pim dm
[H3C-Ethernet2/0/0] ip address 10.16.5.1 24
# 分别在接口Ethernet2/0/0、Serial1/1/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.5.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(4) 配置组播源
在组播源上逐一配置组播节目对应的组播地址,如“影视热线”节目对应组播地址224.0.1.1。
(5) 配置Receiver1/2
Receiver首先跟组播源建立http连接,然后在客户端软件上选择“影视热线”节目即可。
在下图中,Multicast Source作为组播源,HostA为组播节目“影视热线”的接收成员。指定路由器B的serial 1/0/0接口为候选RP和候选BSR。
& 说明:
在实际的网络中,由于路由设备由不同的厂商提供,设备上的路由协议也会各不相同,这里仅以OSPF为例进行说明。

图4-4 PIM-SM综合配置图
(1) 配置RouterA
# 启动PIM-SM。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] pim sm
[H3C-Ethernet0/0/0] igmp enable
[H3C-Ethernet0/0/0] ip address 10.16.1.1 24
[H3C-Ethernet0/0/0] quit
[H3C] interface serial 1/0/0
[H3C-Serial1/0/0] pim sm
[H3C-Serial1/0/0] ip address 10.16.2.1 24
[H3C-Serial1/0/0] quit
[H3C] interface serial 1/1/0
[H3C-Serial1/1/0] pim sm
[H3C-Serial1/1/0] ip address 10.16.3.1 24
# 配置特定组播组从共享树切换到最短路径树的阈值为10kbit/s。
[H3C] acl number 2005
[H3C-acl-basic-2005] rule permit source 224.0.1.1 0.0.0.255
[H3C-acl-basic-2005] quit
[H3C] pim
[H3C-pim] spt-switch-threshold 10 group-policy 2005
# 分别在接口Ethernet0/0/0、Serial1/0/0和Serial1/1/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.2.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.3.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(2) 配置RouterC
# 启动PIM-SM。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] pim sm
[H3C-Ethernet0/0/0] ip address 10.16.4.1 24
[H3C-Ethernet0/0/0] quit
[H3C] interface serial 1/0/0
[H3C-Serial1/0/0] pim sm
[H3C-Ethernet0/0/0] ip address 10.16.2.2 24
[H3C-Serial1/0/0] quit
[H3C] interface serial 1/1/0
[H3C-Serial1/1/0] pim sm
[H3C-Ethernet0/0/0] ip address 10.16.5.1 24
# 分别在接口Ethernet0/0/0、Serial1/0/0和Serial1/1/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.4.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.2.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.5.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(3) 配置RouterB
# 启动PIM-SM。
<H3C> system-view
[H3C] multicast routing-enable
[H3C] interface serial 1/0/0
[H3C-Serial1/0/0] pim sm
[H3C-Serial1/0/0] ip address 10.16.3.2 24
[H3C-Serial1/0/0] quit
[H3C] interface serial 1/1/0
[H3C-Serial1/1/0] pim sm
[H3C-Serial1/1/0] ip address 10.16.5.2 24
[H3C] interface serial 4/0/0
[H3C-Serial4/0/0] pim sm
[H3C-Serial4/0/0] ip address 10.16.6.2 24
[H3C-Serial4/0/0] quit
# 配置候选BSR。
[H3C] pim
[H3C-pim] c-bsr serial 1/0/0 30 2
[H3C-pim] quit
# 配置候选RP。
[H3C] acl number 2005
[H3C-acl-basic-2005] rule permit source 224.0.1.1 0 0.255.255.255
[H3C-acl-basic-2005] quit
[H3C] pim
[H3C-pim] c-rp serial 1/0/0 group-policy 2005
[H3C-pim] quit
# 配置PIM边界。
[H3C] interface serial4/0/0
[H3C-Serial4/0/0] pim bsr-boundary
# 分别在接口Serial4/0/0、Serial1/0/0和Serial1/1/0上启动OSPF。
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.16.3.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.5.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 10.16.6.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
(4) 配置HostA
Receiver首先跟组播源建立http连接,然后在客户端软件上选择“影视热线”节目即可。
(5) 配置组播源
在组播源上逐一配置组播节目对应的组播地址,如“影视热线”节目对应组播地址224.0.1.1。
在接口Serial4/0/0上配置了边界后,路由器RouterD就收不到路由器RouterB发出的BSR信息,它被排除在本PIM域之外。
假设主机A是“影视热线”节目的接收者,组播源现在开始发送目的地址为224.0.1.1的数据,开始时,路由器A通过路由器B接收主机B发送的组播数据,当主机B发送的组播数据的速率超过10kbit/s后,路由器A会加入最短路径树,直接从路由器C接收主机B发送的组播数据包。
故障之一:路由器不能正确建立组播路由表。
故障排除:可以按照如下步骤进行。
解决问题之前,首先应保证单播路由是正确的。
l PIM-SM协议需要有RP和BSR的支持,所以首先使用display pim bsr-info,看是否有BSR信息,如果不存在,则需要查看是否有通向BSR的单播路由。这个问题解决后,看RP信息是否正确,使用display pim rp-info命令。如果没有RP信息,也需要检查单播路由。
l 另外,也可以使用display pim neighbor来查看是否正确建立了邻居关系。
MSDP(Multicast Source Discovery Protocol,组播源发现协议)用来发现其它PIM-SM域内的组播源信息。配置了MSDP对等体的RP将其域内的活动组播源信息通过SA消息通告给它的所有MSDP对等体,这样,一个PIM-SM域内的组播源信息就会被传递到另一个PIM-SM域。
MSDP对等体可以建立在不同域的RP之间,也可以建立在同一域的多个RP之间,还可以建立在RP与普通路由器之间或者普通路由之间。MSDP对等体之间使用TCP连接。
MSDP使得一个PIM-SM域不需要依赖另一个PIM-SM域内的RP,因为在得到另一个PIM-SM域内的组播源信息之后,一个PIM-SM域里的接收者可以不通过另一PIM-SM域里的RP而直接加入到这个域内组播源的SPT上。
MSDP另一个应用是Anycast RP。在一个域内,用同一个IP地址配置不同的路由器上的某一接口(通常是Loopback接口),同时,配置这些路由器上这个接口为候选RP,并在这些RP之间建立MSDP对等体关系。单播路由收敛后,组播源可以选择最近的RP注册,接收者也可以选择最近的RP加入其RPT。这些RP之间通过MSDP对等体了解对方的注册源信息,最终每个RP了解到整个域内的所有组播源,这样,每个RP上的接收者就可以接收到整个域内的所有组播源发出的组播数据。
通过向就近的RP发起注册和RPT加入,实现RP的负载分担;一个RP失效后,其原来注册的源和加入者,又会选择另一个就近的RP注册和加入,实现了RP的冗余备份。
另外,MSDP通过RPF检查机制,只接受从正确路径上接收到的SA消息,避免接受冗余的SA消息;可以通过配置Mesh全连接组来避免SA消息在MSDP对等体之间泛滥。
如图5-1所示,PIM-SM域1和域2、域3中的RP之间建立MSDP对等体关系。域3中存在某个组的成员,当域1中的一个组播源向这个组发送数据时,域3中的组成员从得知这个组播源到接收到这个组播源的组播数据的工作过程如下:
(1) PIM-SM域1里的组播源开始发送数据包;
(2) 连接组播源的指定路由器DR(Designated Router)将组播源发出的数据封装在Register报文里,发给域1内的RP;
(3) 域1中的RP将报文解封装,沿域内的共享树向下转发给域内的所有成员,域内成员可以选择是否切换到源树上;
(4) 同时,域1内的RP将生成一个SA(Source Active,活动源)消息,发送给MSDP对等体(PIM-SM域2和域3内的RP)。SA消息包括如下内容:组播源的IP地址、组播组地址和生成消息的RP的地址,并且域1内的RP也将收到的第一个组播数据封装在这个SA消息中;
(5) 如果在MSDP对等体所在的域(图中为PIM-SM域3)里有组成员,则该域内的RP将SA消息中封装的组播数据沿共享树下发到组成员的同时,向组播源发送加入消息;
(6) 当逆向转发路径建立起来之后,组播源发出的数据将直接发送到域3的RP上,RP向共享树转发数据。此时,域3中连接组成员的最后一跳路由器可以选择是否切换到SPT上。

图5-1 MSDP的工作原理(一)
如图5-2所示,RTA、RTB、RTC、RTD、RTDE、RTF分别属于域1、域2和域3,并在相互之间建立MSDP对等体关系,在图中用双向的箭头表示。其中RTB、RTC、RTD之间建立Mesh全连接组。在这些MSDP对等体之间转发SA消息的过程和RPF检查的方法如下:
(1) 如果发出SA消息的MSDP对等体就是组播源所在的RP,接受该SA消息,并向其他对等体转发,如:RTA发给RTB;
(2) 如果只配置了一个MSDP对等体,接受该对等体发来的SA消息,如RTB发给RTA;
(3) 如果SA消息是从静态RPF对等体发来的,接受该SA消息,并向其他对等体转发,如RTD发给RTE;
(4) 如果SA消息是从MSDP全连接组中的对等体发来的,接受该SA消息,并向该全连接组以外的对等体转发,如RTB发给RTD;
(5) 如果SA消息是从同一个域内的MSDP对等体发来的,并且该对等体是到源所在域RP的最佳路径上的下一跳,接受该SA消息,并向其他对等体转发,如RTE发给RTF;
(6) 如果SA消息是从不同域的MSDP对等体发来的,并且它是到源所在域RP最佳路径上的下一个自治域,接受该SA消息,并向其他对等体转发,如:RTD发给RTF;
(7) 其他SA消息,不接受也不转发。

图5-2 MSDP的工作原理(二)
配置MSDP的路由器同时需要运行BGP或MBGP,并且,建议MSDP对等体的地址与BGP或MBGP对等体的地址相同。如果不运行BGP或MBGP,需要配置静态RPF对等体。
l 使能MSDP
l 配置MSDP对等体
MSDP的高级配置包括:
l 配置静态RPF对等体
l 配置Originating RP
l 配置缓存SA状态
l 配置缓存SA的最大数量
l 请求MSDP对等体的源信息
l 控制创建的源信息
l 控制转发的源信息
l 控制接收的源信息
l 配置MSDP全连接组
l 配置MSDP连接重试周期
l 关闭MSDP对等体
l 清除MSDP连接、统计和SA缓存
在配置MSDP前,必须先使能MSDP。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
使能MSDP并进入MSDP视图 |
msdp |
|
清除MSDP的所有配置 |
undo msdp |
通过在本地配置MSDP对等体来启动MSDP。
请在MSDP视图进行下列配置。
表5-2 配置MSDP对等体
|
操作 |
命令 |
|
配置MSDP对等体 |
peer peer-address connect-interface interface-type interface-number |
|
取消配置MSDP对等体 |
undo peer peer-address |
|
为MSDP对等体添加描述性文本 |
peer peer-address description text |
|
删除已添加的描述性文本 |
undo peer peer-address description text |
其中,添加描述性文本的命令是可选的。
如果本地路由器与一个MSDP对等体同时也是BGP对等体,MSDP对等体和BGP对等体应使用相同的IP地址。
存在MSDP对等体关系的两台路由器上不一定需要运行BGP或MBGP,只要它们之间存在一条BGP或MBGP路径就可以。而如果没有BGP或MBGP路径,则必须配置静态RPF对等体。
请在MSDP视图进行下列配置。
表5-3 配置静态RPF对等体
|
操作 |
命令 |
|
配置静态RPF对等体 |
static-rpf-peer peer-address [ rp-policy list ] |
|
取消配置的静态RPF对等体 |
undo static-rpf-peer peer-address |
缺省情况下,没有静态RPF对等体。
必须先配置peer命令,然后才能配置static-rpf-peer。
如果命令peer只配置了一个MSDP对等体,这个MSDP对等体将被作为静态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对等体。
创建SA消息时,可以配置MSDP使用指定接口的IP地址作为其SA消息中的RP地址。
请在MSDP视图进行下列配置。
|
操作 |
命令 |
|
配置MSDP使用指定接口的IP地址作为其SA消息中的RP地址 |
originating-rp interface-type interface-number |
|
取消上述操作 |
undo originating-rp |
缺省情况下,SA消息的RP地址为PIM配置的RP地址。
当使用originating-rp命令指定的接口没有配置IP地址,或者为down时,就不再发送SA消息,此时如果设备上配置有多个RP时,也不会选取其它的RP发送SA消息。所以必须保证指定接口的有效性,否则认为是配置问题。
在路由器上配置缓存SA状态,可以使后续新加入的组不必等待下一次到达的SA消息,就可以从SA缓存中获得所有的活动源,加入到相应的源树。
请在MSDP视图进行下列配置。
|
操作 |
命令 |
|
创建SA缓存状态 |
cache-sa-enable |
|
禁止缓存SA状态 |
undo cache-sa-enable |
在缺省情况下,路由器收到SA消息后缓存SA的状态(即(S,G)项)。
使用此配置会消耗一些内存来缩短组加入延迟。
为防止路由器受到DoS(Deny of Service)攻击,可以配置路由器缓存SA消息的最大数量。
请在MSDP视图下进行下列配置。
表5-6 配置缓存SA的最大数量
|
操作 |
命令 |
|
配置缓存SA的最大数量 |
peer peer-address sa-cache-maximum sa-limit |
|
恢复缺省配置 |
undo peer peer-address sa-cache-maximum |
缺省情况下,缓存SA的最大值是2048。
当一个新组加入时,路由器向指定的MSDP对等体发送SA请求消息,该MSDP对等体回应其缓存的SA信息。如果该MSDP对等体没有使能SA缓存状态,此配置无效。
请在MSDP视图进行下列配置。
表5-7 请求MSDP对等体的源信息
|
操作 |
命令 |
|
配置路由器在接收到一个新组加入消息时,向其指定的MSDP对等体发送SA请求消息 |
peer peer-address request-sa-enable |
|
恢复缺省配置 |
undo peer peer-address request-sa-enable |
本地RP发送SA请求消息立刻得到所有活跃源的响应。
缺省情况下,路由器在收到新组的加入消息时不向其MSDP对等体发送SA请求消息,而是等待下一个周期发送的SA消息的到来。
RP对每个注册的源进行过滤,以控制在SA消息中被通告出去活动源的信息。可以配置MSDP在创建SA消息时,只通告组播路由表中符合条件的(S,G)项,即控制从组播路由表中引入域内的(S,G)项。
请在MSDP视图进行下列配置。
|
操作 |
命令 |
|
通告通过访问控制列表的(S,G)项 |
import-source [ acl acl-number ] |
|
取消上述配置 |
undo import-source |
缺省情况下,SA消息只通告域内的源。
如果执行不带acl参数的import-source命令,SA消息将不通告任何源。
请在MSDP视图进行下列配置。
表5-9 过滤SA请求消息
|
操作 |
命令 |
|
过滤来自指定MSDP对等体的所有SA request消息 |
peer peer-address sa-request-policy |
|
过滤来自指定MSDP对等体的通过基本访问控制列表的组的SA request消息 |
peer peer-address sa-request-policy acl acl-number |
|
取消过滤SA请求消息的配置 |
undo peer peer-address sa-request-policy |
缺省情况下,只有缓存SA消息的路由器才能回应SA请求消息。缺省情况下路由器接收其MSDP对等体发送的所有SA请求消息。
访问控制列表描述组播组地址。如果没有指定访问控制列表,则忽略其MSDP对等体发送的所有SA请求。如果指定了访问控制列表,则只处理符合该列表的组的SA请求消息,其它的被忽略。
对源信息的控制除了控制源信息的创建,还可以控制源信息的转发和接受。使用MSDP出方向过滤器或生存时间阈值,都可以控制SA消息的转发,缺省情况下,所有SA消息都向MSDP对等体转发。
创建MSDP出方向过滤器可以实现以下功能:
l 过滤掉所有的(S,G)项
l 只转发通过高级访问控制列表的SA消息
请在MSDP视图进行下列配置。
表5-10 使用MSDP过滤器控制转发的源信息
|
操作 |
命令 |
|
过滤掉所有到指定MSDP对等体的SA消息 |
peer peer-address sa-policy export |
|
转发通过高级访问控制列表过滤的到指定MSDP对等体的SA消息 |
peer peer-address sa-policy export [ acl acl-number ] |
|
取消对转发的源信息进行过滤 |
undo peer peer-address sa-policy export |
带封装数据的SA消息只有在其IP头的TTL不小于阈值时才能发送到指定的MSDP对等体,因此可以通过配置TTL阈值来控制带封装数据的SA消息的转发。
例如,如果需要限制TTL小于等于10的带封装数据的SA消息向域外扩散,可以将限制域内组播流量的TTL阈值设为10。反之,配置这些报文的TTL大于10,就可以扩散到域外。
请在MSDP视图进行下列配置。
表5-11 使用TTL限制带封装数据的SA消息
|
操作 |
命令 |
|
限制到指定MSDP对等体的封装在第一个SA消息中的组播数据 |
peer peer-address minimum-ttl ttl |
|
取消使用TTL限制带封装数据的SA消息 |
undo peer peer-address minimum-ttl |
缺省情况下,TTL阈值为0。
请在MSDP视图进行下列配置。
|
操作 |
命令 |
|
过滤掉来自指定MSDP对等体的SA消息 |
peer peer-address sa-policy import |
|
接收通过高级访问控制列表过滤的来自指定MSDP对等体的SA消息 |
peer peer-address sa-policy import [ acl acl-number ] |
|
取消对接收的源信息进行过滤 |
undo peer peer-address sa-policy import |
与MSDP出方向过滤器的功能相似,配置MSDP入方向的过滤器就可以控制接受的SA消息。缺省情况下,对从对等体接收到的SA消息不进行过滤,全部接受。
如果需要在几个MSDP对等体之间实现完全连接,又要避免SA消息的泛滥,就可以将这几个MSDP对等体配置为一个全连接组(Mesh Group)。
来自组外的SA消息发送给组内其它成员,同时,对来自组内对等体的SA消息不再进行Peer-RPF检查。也不再在组内转发。这就避免了SA消息泛滥,同时,也简化了Peer-RPF(不需要在MSDP对等体之间运行BGP或MBGP)。
请在MSDP视图进行下列配置。
表5-13 配置MSDP全连接组
|
操作 |
命令 |
|
配置MSDP对等体成为全连接组成员 |
peer peer-address mesh-group name |
|
取消配置的MSDP全连接组成员 |
undo peer peer-address mesh-group name |
将同一MSDP对等体配置到多个全连接组时,最后一个有效。
请在MSDP视图下进行下列配置。
表5-14 配置MSDP连接重试周期
|
操作 |
命令 |
|
配置MSDP连接重试周期 |
timer retry seconds |
|
恢复MSDP连接重试周期的缺省值 |
undo timer retry |
缺省情况下,MSDP连接重试周期为30秒。
可以对MSDP对等体之间的会话进行关闭,根据需要再进行激活。
关闭MSDP对等体之间的会话后,TCP连接关闭,并不再重试建立连接,但配置信息会保留。
请在MSDP视图进行下列配置。
表5-15 关闭MSDP对等体
|
操作 |
命令 |
|
关闭指定的MSDP对等体 |
shutdown peer-address |
|
取消关闭指定的MSDP对等体 |
undo shutdown peer-address |
缺省情况下,MSDP对等体是使能的。
请在用户视图下进行下列操作。
表5-16 清除MSDP连接、统计和SA缓存
|
操作 |
命令 |
|
清除指定的MSDP对等体的TCP连接,重置所有MSDP消息counters |
reset msdp peer peer-address |
|
清除MSDP对等体的统计信息 |
reset msdp statistics [ peer-address ] |
|
清除MSDP的SA缓存项 |
reset msdp sa-cache [ group-address ] |
在完成上述配置后,可在所有视图下执行display命令显示配置后MSDP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行debugging命令可对MSDP进行调试。
表5-17 MSDP显示和调试
|
操作 |
命令 |
|
显示来自指定自治域的SA消息中源和组的数量 |
display msdp sa-count [ as-number ] |
|
显示MSDP对等体 的详细信息 |
display msdp peer-status [ peer-address ] |
|
显示从MSDP对等体学到的(S,G)状态 |
display msdp sa-cache [ group-address | [ source-address ] ] [ autonomous-system-number ] |
|
显示MSDP对等体状态 |
display msdp brief |
|
打开MSDP的调试信息开关 |
debugging msdp { all | connect | event | packet | source-active } |
注意,只有执行了cache-sa-enable-命令之后,执行display msdp sa-count命令才会有输出。
可在所有视图下使用mtracert命令跟踪组播数据从组播源到目的接收者的所经过的网络路径,定位错误。
表5-18 跟踪SA消息在网络中传递的路径
|
操作 |
命令 |
|
跟踪SA消息在网络中传递的路径 |
msdp-tracert { source-address } { group-address } { rp-address } [ max-hops max-hops ] [ next-hop-info ] [ sa-info ] [ peer-info ] [ skip-hops skip-hops ] |
通过跟踪指定(S,G,RP)项的网络路径,可以定位消息丢失、减少配置错误等问题。在确定SA消息的传递路径后,通过正确配置,可以避免SA消息泛滥。
在下图所示的环境中,四台路由器均在PIM-SM域上,它们之间没有运行BGP或MBGP。
为了使路由器D能够获得PIM-SM域1、域2和域3三个域中指定的源信息,可以配置带有rp-policy参数的静态RPF对等体。
配置完成后,路由器RTD只接收来自其静态RPF对等体且被相应过滤策略允许的SA消息。

图5-3 配置静态RPF对等体
# 配置路由器RTA为RTD的静态RPF对等体:
<H3C> system-view
[H3C] ip ip-prefix list-a permit 10.10.0.0 16
[H3C] msdp
[H3C-msdp] peer 10.10.1.1 connect-interface ethernet 0/0/0
[H3C-msdp] static-rpf-peer 10.10.1.1 rp-policy list-a
# 配置路由器RTB为RTD的静态RPF对等体:
[H3C] ip ip-prefix list-b permit 10.21.0.0 16
[H3C] msdp
[H3C-msdp] peer 10.21.1.1 connect-interface ethernet 0/1/0
[H3C-msdp] static-rpf-peer 10.21.1.1 rp-policy list-b
# 配置路由器RTC为RTD的静态RPF对等体:
[H3C] ip ip-prefix list-c permit 10.25.0.0 16
[H3C] msdp
[H3C-msdp] peer 10.25.1.1 connect-interface ethernet 0/1/2
[H3C-msdp] static-rpf-peer 10.25.1.1 rp-policy list-c
在PIM-SM域内配置Anycast RP。RTA和RTB之间建立MSDP对等体,在RTA和RTB上配置向外发送SA消息时使用Loopback0地址;配置RTA和RTB的Loopback10接口为BSR/RP,并配置Anycast RP地址,以达到当有组播组成员加入时,与主机直接相连的路由器能够向拓扑距离最近的RP发起加入的目的。
& 说明:
本例主要进行RTA和RTB的配置,由于RTE、RTD和RTC上的配置主要是启动组播和在各个接口上启动PIM-SM协议,本举例将省略此部分内容。

(1) 配置路由器RTB
# 启动组播。
<H3C> system-view
[H3C] multicast routing-enable
# 配置接口Loopback0的IP地址。
[H3C] interface loopback0
[H3C-LoopBack0] ip address 10.10.1.1 255.255.255.255
[H3C-LoopBack0] quit
# 配置接口Loopback10的IP地址,启动PIM-SM。
[H3C] interface loopback10
[H3C-LoopBack10] ip address 10.1.1.1 255.255.255.255
[H3C-LoopBack10] pim sm
[H3C-LoopBack10] quit
# 配置接口Serial1/1/0的IP地址,启动PIM-SM。
[H3C] interface serial 1/1/0