07-PIM配置
本章节下载: 07-PIM配置 (1.94 MB)
PIM(Protocol Independent Multicast,协议无关组播)协议利用单播静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP等)所生成的单播路由表为IP组播提供路由。组播路由与所采用的单播路由协议无关,只要能够通过单播路由协议产生相应的组播路由表项即可。PIM借助RPF(Reverse Path Forwarding,逆向路径转发)机制实现对组播报文的转发。当组播报文到达本地设备时,首先对其进行RPF检查:若RPF检查通过,则创建相应的组播路由表项,从而进行组播报文的转发;若RPF检查失败,则丢弃该报文。有关RPF的详细介绍,请参见“IP组播配置指导”中的“组播路由与转发”。
根据实现机制的不同,PIM分为以下几种模式:
· PIM-DM(Protocol Independent Multicast-Dense Mode,协议无关组播—密集模式)
· PIM-SM(Protocol Independent Multicast-Sparse Mode,协议无关组播—稀疏模式)
· BIDIR-PIM(Bidirectional Protocol Independent Multicast,双向协议无关组播,简称双向PIM)
· PIM-SSM(Protocol Independent Multicast Source-Specific Multicast,协议无关组播-指定源组播)
为了描述方便,本文中把由支持PIM协议的组播设备所组成的网络简称为“PIM域”。
PIM-DM属于密集模式的组播路由协议,使用“推(Push)模式”传送组播数据,通常适用于组播组成员相对比较密集的小型网络。PIM-DM假设网络中的所有分支都有组播接收者,于是先将组播数据扩散至整个网络,然后将没有接收者的分支剪枝掉,只保留有接收者的分支。当被剪枝的分支上出现了接收者时,再使用嫁接机制将该分支恢复。
一般说来,密集模式下数据包的转发路径是以组播源为“根”、组播组成员为“叶子”的一棵转发树,由于该树使用的是从组播源到接收者的最短路径,因此也称为SPT(Shortest Path Tree,最短路径树)。
PIM-DM的工作机制如下:
在PIM域中,设备上每个运行了PIM协议的接口通过定期向本网段的所有PIM设备(224.0.0.13)组播PIM Hello报文(以下简称Hello报文),以发现PIM邻居,维护各设备之间的PIM邻居关系,从而构建和维护SPT。
构建SPT的过程也就是“扩散—剪枝”的过程:
(1) 在PIM-DM域中,组播源S向组播组G发送组播报文时,首先对组播报文进行扩散:设备对该报文的RPF检查通过后,便创建一个(S,G)表项,并将该报文向网络中的所有下游节点转发。经过扩散,PIM-DM域内的每个设备上都会创建(S,G)表项。
(2) 然后对那些下游没有接收者的节点进行剪枝:由没有接收者的下游节点向上游节点发剪枝报文(Prune Message),以通知上游节点将相应的接口从其组播转发表项(S,G)所对应的出接口列表中删除,并不再转发该组播组的报文至该节点。
(S,G)表项包括组播源的地址S、组播组的地址G、出接口列表和入接口等。
剪枝过程最先由“叶子”设备发起,如图1-1所示,由没有接收者(Receiver)的接口主动发起剪枝,并一直持续到PIM-DM域中只剩下必要的分支,这些分支共同构成了SPT。
图1-1 PIM-DM中构建SPT示意图
“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制,当剪枝超时后便重新开始这一过程。
当被剪枝的节点上出现了组播组的成员时,为了减少该节点恢复成转发状态所需的时间,PIM-DM使用嫁接机制主动恢复其对组播数据的转发,过程如下:
(1) 需要恢复接收组播数据的节点向其上游节点发送嫁接报文(Graft Message)以申请重新加入到SPT中;
(2) 当上游节点收到该报文后恢复该下游节点的转发状态,并向其回应一个嫁接应答报文(Graft-Ack Message)以进行确认;
(3) 如果发送嫁接报文的下游节点没有收到来自其上游节点的嫁接应答报文,将重新发送嫁接报文直到被确认为止。
在一个网段内如果存在多台组播设备,则相同的组播报文可能会被重复发送到该网段。为了避免出现这种情况,就需要通过断言(Assert)机制来选定唯一的组播数据转发者。
图1-2 Assert机制示意图
如图1-2所示,当Router A和Router B从上游节点收到(S,G)组播报文后,都会向本地网段转发该报文,于是处于下游的节点Router C就会收到两份相同的组播报文,Router A和Router B也会从各自的下游接口收到对方转发来的该组播报文。此时,Router A和Router B会通过其下游接口向本网段的所有PIM设备(224.0.0.13)以组播方式发送断言报文(Assert Message),该报文中携带有以下信息:组播源地址S、组播组地址G、到组播源的单播路由/MBGP路由/组播静态路由的优先级和度量值。通过一定的规则对这些参数进行比较后,Router A和Router B中的获胜者将成为(S,G)组播报文在本网段的转发者,比较规则如下:
(1) 到组播源的优先级较高者获胜;
(2) 如果到组播源的优先级相等,那么到组播源的度量值较小者获胜;
(3) 如果到组播源的度量值也相等,则下游接口IP地址较大者获胜。
PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送组播数据。尽管SPT的路径最短,但是其建立的过程效率较低,并不适合大中型网络。而PIM-SM则属于稀疏模式的组播路由协议,使用“拉(Pull)模式”传送组播数据,通常适用于组播组成员分布相对分散、范围较广的大中型网络。
与PIM-DM相反,PIM-SM假设网络中没有组播接收者,于是接收者需要主动发起加入。PIM-SM网络的核心是RP(Rendezvous Point,汇集点),PIM-SM实现组播转发的关键就是建立以组播源为“根”、RP为“叶子”的SPT,以及以RP为“根”、接收者为“叶子”的RPT。
PIM-SM使用与PIM-DM类似的邻居发现机制,具体请参见“1.2.1 邻居发现”一节。
无论是与组播源相连的网络,还是与接收者相连的网络,都需要选举DR(Designated Router,指定路由器)。接收者侧的DR负责向RP发送加入报文(Join Message);组播源侧的DR负责向RP发送注册报文(Register Message)。
DR对于PIM-SM有实际的意义,而对于PIM-DM来说,其本身并不需要DR,但如果PIM-DM域中的共享网络上运行了IGMPv1,则需要由DR来充当共享网络上的IGMPv1查询器。
在充当接收者侧DR的设备上必须使能IGMP,否则连接在该DR上的接收者将无法通过该DR加入组播组。有关IGMP的详细介绍,请参见“IP组播配置指导”中的“IGMP”。
图1-3 DR选举示意图
如图1-3所示,DR的选举过程如下:
(1) 共享网络上的各设备相互之间发送Hello报文(携带有竞选DR优先级的参数),拥有最高优先级的设备将成为DR;
(2) 如果优先级相同,或者网络中至少有一台设备不支持在Hello报文中携带竞选DR优先级的参数,则根据各设备的IP地址大小来竞选DR,IP地址最大的设备将成为DR。
如果DR出现故障,将导致其PIM邻居可达状态定时器超时,其余设备将触发新的DR选举过程。
RP是PIM-SM域中的核心设备。每个组播组在任意时刻,只能由唯一的一个RP为其转发数据,而不能由多个RP转发数据。
RP可以通过手工方式静态配置,也可以通过BSR机制动态选举,缓解RP的负担并优化RPT的拓扑结构。二者的选取原则为:
· 如果配置了静态RP优先,则表示优先选择静态RP,只有当静态RP失效时,动态RP才能生效;
· 如果未配置静态RP优先,则表示优先选择动态RP,只有当未配置动态RP或动态RP失效时,静态RP才能生效。
手工配置静态RP,既可避免因单一节点故障而引起的通信中断,也可避免C-RP与BSR之间频繁的信息交互而占用带宽。
动态选举RP涉及到的角色:
· C-RP(Candidate-RP,候选RP):设备通过自举机制从C-RP中动态选出RP,使不同的RP服务于不同的组播组。
· BSR(Bootstrap Router,自举路由器):PIM-SM域的管理核心,负责在PIM-SM域中收集并发布RP信息。BSR是通过C-BSR选举出来的。一个PIM-SM域内只能有一个BSR,但可以配置多个C-BSR。
C-BSR(Candidate-BSR,候选BSR):任意一台设备都可以被配置为C-BSR,从中选举出BSR。一旦BSR发生故障,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。
图1-4 RP与BSR信息交互示意图
如图1-4所示,动态选举RP的过程为:
(1) 每个C-BSR向其它设备发送自举报文,某C-BSR收到其它C-BSR发来的自举报文时,首先比较自己与后者的优先级,优先级较高者获胜;在优先级相同的情况下,再比较自己与后者的BSR地址,拥有较大IP地址者获胜。如果后者获胜,则用后者的BSR地址替换自己的BSR地址,并不再认为自己是BSR;否则,保留自己的BSR地址,并继续认为自己是BSR。
(2) C-RP周期性地向BSR发送宣告报文(Advertisement Message),该报文中携带有C-RP的地址和优先级以及其服务的组范围。且在其宣告报文中封装一个保持时间,BSR在收到该报文后,从中获得该时间值并启动C-RP超时定时器,如果超时后BSR仍没有收到来自C-RP后续的宣告报文,则认为目前网络中的C-RP失效或不可达。
(3) BSR从宣告报文中学习和收集RP-Set信息,将这些信息汇总为RP-Set(RP集,即组播组与RP的映射关系数据库),并将该信息与自己的IP地址一起封装在自举报文(Bootstrap Message,BSM)中发布到整个PIM-SM域。
(4) 网络内的其它设备根据RP-Set信息计算出特定组播组范围所对应的RP。
网络中的各设备将依据RP-Set提供的信息,使用相同的规则从众多C-RP中为特定组播组选择其对应的RP,具体规则如下:
a. 首先比较C-RP所服务的组范围,所服务的组范围较小者获胜。
b. 若服务的组范围相同,再比较C-RP的优先级,优先级较高者获胜。
c. 若优先级也相同,再使用哈希(Hash)函数计算哈希值,哈希值较大者获胜。
d. 若哈希值也相同,则C-RP的IP地址较大者获胜。
· 一个RP可以同时服务于多个组播组,但一个组播组只能唯一对应一个RP。
· 一台设备可以同时充当C-RP和C-BSR。
PIM-SM要求每个组播组只能有一个激活的RP,因此当某RP失效时,可能导致其对应组播组的流量中断。Anycast-RP机制通过为同一组播组设置具有相同地址的多个RP,组播源和接收者各自就近选择RP进行注册或加入,这些RP之间则进行组播源信息的同步,从而实现了RP间的冗余备份。Anycast-RP具有以下优点:
· RP路径最优:组播源向距离最近的RP进行注册,建立路径最优的SPT;接收者向距离最近的RP发起加入,建立路径最优的RPT。
· RP冗余备份:当某RP失效后,原先在该RP上注册或加入的组播源或接收者会自动选择就近的RP进行注册或加入,从而实现了RP间的冗余备份。
Anycast-RP可以通过以下两种方式实现:
· 基于MSDP实现:通过为同一组播组设置具有相同地址的多个RP,并在这些RP之间建立MSDP对等体关系来实现。详细介绍请参见“IP组播配置指导”中的“MSDP”。
· 基于PIM-SM实现:通过对RP进行一定的扩展来实现,不需要依赖MSDP。本文主要介绍这种实现方式。
在基于PIM-SM的实现中,由服务于同一组播组的多个RP组成的集合称为Anycast-RP集,这些RP则称为Anycast-RP成员,各成员的地址称为Anycast-RP成员地址,而Anycast-RP集对外统一发布的地址则称为Anycast-RP地址。如图1-5所示,一个Anycast-RP集中包含RP 1、RP 2和RP 3三个成员,Anycast-RP地址为RPA。
图1-5 基于PIM-SM实现Anycast-RP示意图
基于PIM-SM实现Anycast-RP的工作过程如下:
(1) RP 1收到一个目的地址为RPA的注册报文,发现其源地址不是其它成员(RP 2或RP 3)的地址,于是认为此报文由DR发来。然后RP 1将该报文的源地址改为自己的地址后发送给所有其它成员(RP 2和RP 3)。如果一台设备既是DR也是RP,则相当于收到自己发送的注册报文,也要向所有其它成员转发。
(2) RP 2和RP 3收到RP 1发来的注册报文后,发现其源地址是Anycast-RP集的成员地址,于是不再向外转发。
由此可见,RP接收注册报文的原有处理没有任何改变,唯一的变化就是满足条件的RP要向同一Anycast-RP集内的其它成员转发注册报文,以实现组播源信息的共享。
图1-6 PIM-SM中构建RPT示意图
如图1-6所示,RPT的构建过程如下:
(1) 当接收者加入一个组播组G时,先通过IGMP报文通知与其直连的DR;
(2) DR掌握了组播组G的接收者的信息后,向该组所对应的RP方向逐跳发送加入报文;
(3) 从DR到RP所经过的设备就形成了RPT的分支,这些设备都在其转发表中生成了(*,G)表项,这里的“*”表示来自任意组播源。RPT以RP为根,以DR为叶子。
当发往组播组G的组播数据流经RP时,数据就会沿着已建立好的RPT到达DR,进而到达接收者。
当某接收者对组播组G的信息不再感兴趣时,与其直连的DR会逆着RPT向该组的RP方向逐跳发送剪枝报文;上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口,并检查自己是否拥有该组播组的接收者,如果没有则继续向其上游转发该剪枝报文。
组播源注册的目的是向RP通知组播源的存在。
如图1-7所示,组播源向RP注册的过程如下:
(1) 当组播源S向组播组G发送了一个组播报文时,与组播源直连的DR在收到该报文后,就将其封装成注册报文,并通过单播方式发送给相应的RP;
(2) 当RP收到该报文后,一方面解封装注册报文并将封装在其中的组播报文沿着RPT转发给接收者,另一方面向组播源方向逐跳发送(S,G)加入报文。这样,从RP到组播源所经过的设备就形成了SPT的分支,这些设备都在其转发表中生成了(S,G)表项。
(3) 组播源发出的组播数据沿着已建立好的SPT到达RP,然后由RP把组播数据沿着RPT向接收者进行转发。当RP收到沿着SPT转发来的组播数据后,通过单播方式向与组播源直连的DR发送注册停止报文(Register-Stop Message)。
在PIM-SM域中,一个组播组唯一对应一个RP和一棵RPT。在SPT切换前,所有发往该组的组播报文都必须先由组播源侧DR封装在注册报文中发往RP,由RP解封装后再沿RPT分发给接收者侧的DR,RP是所有组播数据必经的中转站。这个过程存在以下三个问题:
· 组播源侧的DR和RP必须对组播数据进行繁琐的封装/解封装处理。
· 组播数据的转发路径不一定是从组播源到接收者的最短路径。
· 当组播流量变大时,RP负担增大,容易引发故障。
为了解决上述问题,建议用户使用spt-switch-threshold命令将SPT切换的条件配置为:RP或接收者侧的DR收到第一个组播数据包后便立即向SPT切换:
(1) RP发起的SPT切换
RP收到第一个组播数据包后,立即向组播源方向发送(S,G)加入报文,在组播源侧DR与RP之间建立起SPT分支,后续的组播报文都直接沿该分支到达RP。
由RP发起的SPT切换的详细过程,请参见“1.3.6 组播源注册”一节。
(2) 接收者侧DR发起的SPT切换
接收者侧DR收到第一个组播数据包后,立即发起SPT切换,过程如下:
· 首先,接收者侧DR向组播源方向发送(S,G)加入报文,沿途经过的所有设备在其转发表中都生成了(S,G)表项,从而建立了SPT分支;
· 随后,当组播数据沿SPT到达RPT与SPT分叉的设备时,该设备开始丢弃沿RPT到达的组播数据,同时向RP逐跳发送含RP位的剪枝报文,RP收到该报文后继续向组播源方向发送剪枝报文(假设此时只有这一个接收者),从而完成了SPT切换;
· 最终,组播数据将沿SPT从组播源到达到接收者。
通过SPT切换,PIM-SM能够以比PIM-DM更经济的方式建立SPT。
PIM-SM使用与PIM-DM类似的断言机制,具体请参见“1.2.4 断言”一节。
在某些组网应用(譬如多方电视电话会议)中,在一个组播组同时对应多个接收者和多个组播源的情况下,如果使用传统的PIM-DM或PIM-SM按SPT转发组播数据,需在每台设备上针对每个组播源都创建(S,G)表项,这将占用大量的系统资源。为了解决这个问题,提出了双向PIM的概念。双向PIM由PIM-SM发展而来,它通过建立以RP为中心、分别连接组播源和接收者的双向RPT,使组播数据沿着双向RPT从组播源经由RP转发到接收者。这样,在每台设备上只需维护(*,G)表项即可,从而节约了系统资源。
双向PIM主要适用于组播源和接收者都比较密集的网络,其工作机制如下:
双向PIM使用与PIM-SM完全相同的邻居发现机制,具体请参见“1.3.1 邻居发现”一节。
双向PIM使用与PIM-SM完全相同的RP发现机制,具体请参见“1.3.3 RP发现”一节。
PIM-SM的RP必须指定为一个实际存在的IP地址,而双向PIM的RP则可以指定为一个实际不存在的IP地址,简称RPA(Rendezvous Point Address,汇集点地址)。RPA所属网段对应的链路就称为RPL(Rendezvous Point Link,汇集点链路),连接到RPL上的所有接口都可以充当RP,且互为备份。
双向PIM中的RPF接口是指向RP的接口,RPF邻居自然就是到达RP的下一跳地址。
DF(Designated Forwarder,指定转发者)是双向PIM中的重要角色,组播数据由组播源向RP转发的动力来自于DF,也就是说只有DF才有能力将组播数据向RP方向转发。因此,每个RP在每个网段都需要有其对应的DF,以负责将该网段的组播数据向该RP转发;此外,在有多台组播设备的网段,DF的唯一性也可以避免相同的组播报文被重复发往RP。
在RPL上不需要选举DF。
图1-8 DF选举示意图
如图1-8所示,Router B和Router C都可以从Router A收到由组播源向组播组G发送的组播报文,如果它们都向下游节点转发该报文,RP最终将收到两份相同的组播报文。因此,Router B和Router C一旦获得RP的信息,就会为该RP发起DF的选举:Router B和Router C将分别向本网段的所有PIM设备(224.0.0.13)以组播方式发送DF选举报文(DF Election Message),该报文携带有以下信息:RP的地址、到RP的单播路由/MBGP路由/组播静态路由的优先级和度量值。通过一定规则对这些参数进行比较后,Router B和Router C中的获胜者将成为DF,具体的比较规则如下:
(1) 到RP的优先级较高者获胜;
(2) 如果到RP的优先级相等,那么到RP的度量值较小者获胜;
(3) 如果到RP的度量值也相等,则接口的IP地址较大者获胜。
双向RPT由两部分构成:一部分是以RP为根、以直连接收者的设备为叶子的RPT,简称接收者侧RPT;而另一部分则是以RP为根、以直连组播源的设备为叶子的RPT,简称组播源侧RPT。这两部分RPT的构建过程不同,下面分别加以介绍。
图1-9 接收者侧RPT构建示意图
接收者侧RPT的构建过程与PIM-SM中RPT的构建过程类似,如图1-9所示,其构建过程如下:
(1) 当接收者加入一个组播组G时,先通过IGMP报文通知与其直连的设备;
(2) 该设备掌握了组播组G的接收者的信息后,向该组所对应的RP方向逐跳发送加入报文;
(3) 从直连接收者的设备到RP所经过的设备就形成了接收者侧RPT的分支,这些设备都在其转发表中生成了(*,G)表项。
当某接收者对组播组G的信息不再感兴趣时,与其直连的设备会逆着接收者侧RPT向该组的RP方向逐跳发送剪枝报文;上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口,并检查自己是否拥有该组播组的接收者,如果没有则继续向其上游转发该剪枝报文。
图1-10 组播源侧RPT构建示意图
组播源侧RPT的构建过程则相对简单,如图1-10所示,其构建过程如下:
(1) 组播源发向组播组G的组播数据在途径的每个网段,都被该网段的DF无条件地向RP转发;
(2) 从直连组播源的设备到RP所经过的设备就形成了组播源侧RPT的分支,这些设备都在其转发表中生成了(*,G)表项。
当双向RPT构建完成之后,由组播源发出的组播数据将依次沿着组播源侧RPT和接收者侧RPT,经由RP转发至接收者。
当接收者和组播源位于RP同一侧时,组播源侧RPT与接收者侧RPT有可能在到达RP之前就已汇合。在这种情况下,由该组播源发往该接收者的组播数据将在此汇合点直接被转发给该接收者,而不必经由RP。
一般情况下,在一个PIM-SM/双向PIM域内只能有一个BSR,并由该BSR负责在整个PIM-SM/双向PIM域内宣告RP-Set信息,所有组播组的信息都在此BSR管理的网络范围内进行转发,我们称之为非管理域机制。
考虑到管理的精细化,可以将整个PIM-SM/双向PIM域划分为一个Global域(Global-scope Zone)和多个管理域(Admin-scope Zone),一方面可以有效分担单一BSR的管理压力,另一方面可以使用私有组地址为特定区域提供专门的服务。相应地,我们称之为管理域机制。
管理域与组播组相对应,针对不同组播组划分相应的管理域。管理域的边界由ZBR(Zone Border Router,区域边界路由器)构成,每个管理域各维护一个BSR,为特定范围的组播组服务,属于此范围的组播协议报文(如断言报文、BSR自举报文等)无法通过管理域边界。不同管理域所服务的组播组范围可以重叠,该范围内的组播组只在本管理域内有效,相当于私有组地址。而不属于任何管理域服务范围的组播组则一律属于Global域的服务范围,Global域中维护一个BSR,为剩余的所有组播组服务。
每个管理域以及Global域都有独立的C-RP和BSR设备,这些设备仅在其所属的域有效,也就是说BSR机制与RP选举在各管理域之间是隔离的;每个管理域都有自己的边界,各管理域所服务组播组范围内的组播信息不能进、出该边界。为了更清晰地理解管理域和Global域之间的关系,可以从以下两个角度进行考虑:
· 地域空间角度
管理域是针对特定范围组播组的逻辑管理区域,属于此范围的组播报文只能在本管理域的域内或域外传播,无法跨过管理域的边界。
如图1-11所示,对于同一地址范围内的组播组而言,各管理域在地域上必须相互独立、相互隔离,即同一设备不能从属于多个管理域,各管理域所包含的设备也互不相同。而Global域则包含了PIM-SM/双向PIM域内的所有设备,不属于任何管理域服务范围的组播报文,可以在整个PIM-SM/双向PIM域范围内传播。
· 组地址范围角度
每个管理域为特定的组播组提供服务,这些组播组地址只在本管理域内有效,不同管理域所服务的组播组地址范围可以重叠;而不属于任何管理域的组播组,则一律属于Global域的服务范围。
如图1-12所示,管理域1与管理域2所对应的组地址范围无交集,而管理域3的组地址是管理域1组地址的子集;其余不属于任何管理域的组播组(即G−G1−G2)则都属于Global域的服务范围。
目前,ASM(Any-Source Multicast,任意信源组播)模型包括PIM-DM和PIM-SM两种模式,SSM(Source-Specific Multicast,指定信源组播)模型能够借助PIM-SM的部分技术来实现,也称为PIM-SSM。
SSM模型为指定源组播提供了解决方案,通过IGMPv3来维护主机与设备之间的关系。在实际应用中,通常采用IGMPv3以及PIM-SM的一部分技术来实现SSM模型。由于接收者预先已知道组播源的具体位置,因此在SSM模型中无需RP,无需构建RPT,无需组播源注册过程,也无需通过MSDP(Multicast Source Discovery Protocol,组播源发现协议)来发现其它PIM域内的组播源。
PIM-SSM的工作机制如下:
PIM-SSM使用与PIM-SM完全相同的邻居发现机制,具体请参见“1.3.1 邻居发现”一节。
PIM-SSM使用与PIM-SM完全相同的DR选举机制,具体请参见 “1.3.2 DR选举”一节。
构建为PIM-SM服务的RPT,还是构建为PIM-SSM服务的SPT,关键在于接收者准备加入的组播组是否属于SSM组地址范围(IANA保留的SSM组地址范围为232.0.0.0/8)。
图1-13 PIM-SSM中构建SPT示意图
如图1-13所示,Host B和Host C为组播信息的接收者(Receiver),由其借助IGMPv3的报告报文向DR报告自己对来自组播源S、发往组播组G的信息感兴趣。收到该报告报文的DR先判断该报文中的组地址是否在SSM组地址范围内:
· 如果在SSM组地址范围内,则构建PIM-SSM,并向组播源S逐跳发送通道(Channel)的订阅报文(Subscribe Message)。沿途所有设备上都创建(S,G)表项,从而在网络内构建了一棵以组播源S为根、以接收者为叶子的SPT,该SPT就是PIM-SSM中的传输通道;
· 如果不在SSM组地址范围内,则仍旧按照PIM-SM的流程进行后续处理,此时接收者侧DR需要向RP发送(*,G)加入报文,同时组播源侧DR需要进行组播源的注册。
在PIM-SSM中,借助“通道”的概念表示组播组,借助“订阅报文”的概念表示加入报文。
在一个PIM网络中,不允许PIM-DM与其它类型的PIM协议(PIM-SM、双向PIM和PIM-SSM)同时运行,但允许同时运行PIM-SM、双向PIM和PIM-SSM。
当网络中同时运行PIM-SM、双向PIM和PIM-SSM时,针对具体的组加入行为运行哪种类型的PIM协议,其判断过程如图1-14所示。
图1-14 各PIM协议运行关系示意图
有关IGMP SSM Mapping的详细介绍,请参见“IP组播配置指导”中的“IGMP”。
在多实例应用中,组播设备需要针对不同的实例分别维护PIM邻居表、组播路由表、BSR信息和RP-Set信息,并保持各实例间上述信息的相互独立。
当组播设备收到组播数据报文时,需要区分出该数据报文所属的实例,并根据该实例对应的组播路由表将其转发,或创建与该实例的PIM相关的组播路由表项。
PIM利用M-LAG(Multichassis link aggregation,跨设备链路聚合)功能将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备连接组播源或组播接收者,可避免单点故障对组播网络造成影响,提高组播网络可靠性。有关M-LAG的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
三层组播支持M-LAG,有如下几种组网方案:
如图1-15所示,作为M-LAG设备的Switch A和Switch B通过peer-link链路连接,Switch C与组播源相连。
其中,peer-link链路与M-LAG接口属于同一个VLAN。组播源发送的组播数据流量,通过Switch C的聚合口进行负载分担,发送到Switch A和Switch B的M-LAG接口上。
Switch A和Switch B的M-LAG接口分别收到组播数据报文后,会通过peer-link链路将各自接收到的报文发送给对端,从而使两台设备上都能收到完整的组播流量。根据三层网络中PIM的配置不同,流量转发到下游有以下三种方式:所有流量均通过Switch A发送、所有流量均通过Switch B发送和Switch A和Switch B进行负载分担。图1-15中以所有流量均通过Switch A发送为例。
如图1-16所示,作为M-LAG设备的Switch A和Switch B通过peer-link链路连接,Switch C与组播接收者相连。
Switch A和Switch B上与Switch C相连的接口,均配置IGMP和PIM消极模式。Switch A和Switch B任意一台设备收到IGMP成员关系报告报文,均会通过peer-link链路同步到对端的设备上,从而Switch A和Switch B设备间IGMP组播组信息的同步。
Switch A和Switch B上配置的PIM消极模式,保证两台设备都能收到组播源发送的所有的组播数据流量。组播数据流量向M-LAG接口转发时,Switch A和Switch B形成负载分担,共同进行组播数据流量转发。
如图1-17所示,组播接收者连接M-LAG系统场景中,当Switch A的上行链路故障时,Switch B上的组播流量无法通过peer-link链路同步给Switch A。根据三层组播支持M-LAG功能的奇偶转发原则,Switch B只能将组播组地址为奇(或者偶)数的组播流量转发给下游接收者,导致组播组地址为偶(或者奇)数的组播流量转发异常。
三层组播支持M-LAG功能的奇偶转发规则如下:
· M-LAG系统编号为奇数的成员设备转发组播组地址为奇数的流量。
· M-LAG系统编号为偶数的成员设备转发组播组地址为偶数的流量。
图1-17 未配置基于peer-link链路保留VLAN的三层组播流量逃生功能
通过在Switch A和Switch B上配置peer-link链路的保留VLAN功能,将peer-link接口加入到保留VLAN中,可以实现将peer-link作为逃生链路,避免三层组播流量转发失败。如图1-18所示,当Switch B上的(S,G)表项对应的出接口为保留VLAN接口时,此时peer-link接口会被添加到(S,G)表项的出端口中,Switch B上的组播流量会通过peer-link链路发送给Switch A。有关peer-link链路的保留VLAN功能的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
图1-18 配置基于peer-link链路保留VLAN的三层组播流量逃生功能
与PIM相关的协议规范有:
· RFC 3973:Protocol Independent Multicast-Dense Mode (PIM-DM): Protocol Specification (Revised)
· RFC 4601:Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification (Revised)
· RFC 4610:Anycast-RP Using Protocol Independent Multicast (PIM)
· RFC 5015:Bidirectional Protocol Independent Multicast (BIDIR-PIM)
· RFC 5059:Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)
· RFC 4607:Source-Specific Multicast for IP
· draft-ietf-ssm-overview-05:An Overview of Source-Specific Multicast (SSM)
同一台设备相同实例的所有接口上启用的PIM模式必须相同。
当PIM网络中同时运行PIM-SM和双向PIM时,请勿使一个RP同时为PIM-SM和双向PIM工作,否则可能引起PIM路由表出错。
表2-1 PIM-DM配置任务简介
配置任务 |
说明 |
详细配置 |
使能PIM-DM |
必选 |
|
配置状态刷新能力 |
可选 |
|
配置状态刷新参数 |
可选 |
|
配置PIM-DM嫁接报文的重传时间 |
可选 |
|
配置PIM公共特性 |
可选 |
在配置PIM-DM之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
同一台设备相同实例的所有接口上启用的PIM模式必须相同。
在进行各项PIM配置之前,必须先使能IP组播路由。
只有配置了接口的主IP地址,本命令才能生效。
在接口上使能了PIM-DM后,设备之间才能够建立PIM邻居,从而对来自PIM邻居的协议报文进行处理。在部署PIM-DM域时,建议在其所有非边界接口上均使能PIM-DM。
表2-2 使能PIM-DM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由,并进入MRIB视图 |
multicast routing [ vpn-instance vpn-instance-name ] |
缺省情况下,IP组播路由处于关闭状态 本命令的详细介绍请参见“IP组播命令参考”中的“组播路由与转发” |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-DM |
pim dm |
缺省情况下,PIM-DM处于关闭状态 |
为了避免各设备上被剪枝的接口因为超时而恢复转发,与组播源直连的设备会周期性地发送(S,G)状态刷新报文,该报文沿着PIM-DM域最初的扩散路径逐跳进行转发,从而刷新沿途所有设备上的剪枝定时器的状态。只有当一个共享网段内的所有PIM设备上都开启了状态刷新能力时,该共享网段才具备状态刷新能力。
请在PIM-DM域内的所有设备上进行如下配置。
表2-3 配置状态刷新能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启状态刷新能力 |
pim state-refresh-capable |
缺省情况下,状态刷新能力处于开启状态 |
直连组播源的设备会以一定的时间间隔周期性地发送状态刷新报文,可以在与组播源直连的设备上通过配置来改变这个时间间隔。
设备可能在短时间内收到多个状态刷新报文,而其中有些报文可能是重复的。为了避免接收这些重复的报文,可以配置接收新状态刷新报文的等待时间:设备将丢弃在该时间内收到的状态刷新报文;当该时间超时后,设备将正常接收新的状态刷新报文,并更新自己的PIM-DM状态,同时重置该等待时间。
在收到状态刷新报文时,设备会将该报文的TTL值减1后转发给其下游,直至该报文的TTL值减为0,当网络规模很小时,状态刷新报文将在网络中循环传递。因此,为了有效控制刷新报文的传递范围,需要根据网络规模大小在与组播源直连的设备上配置合适的TTL值。
表2-4 配置状态刷新参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置发送状态刷新报文的时间间隔 |
state-refresh-interval interval |
缺省情况下,发送状态刷新报文的时间间隔为60秒 |
配置接收新状态刷新报文的等待时间 |
state-refresh-rate-limit time |
缺省情况下,接收新状态刷新报文的等待时间为30秒 |
配置状态刷新报文的TTL值 |
state-refresh-ttl ttl-value |
缺省情况下,状态刷新报文的TTL值为255 |
嫁接报文是PIM-DM中唯一使用确认机制的报文。在PIM-DM域中,下游设备发出嫁接报文后,如果在指定时间内没有收到来自其上游设备的嫁接应答报文,则会重发嫁接报文,直到被确认。
有关PIM-DM其它定时器的相关配置,请参见“2.6.7 配置PIM公共定时器”。
表2-5 配置PIM-DM定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置嫁接报文的重传时间 |
pim timer graft-retry interval |
缺省情况下,嫁接报文的重传时间为3秒 |
表2-6 PIM-SM配置任务简介
配置任务 |
说明 |
详细配置 |
|
使能PIM-SM |
必选 |
||
配置RP |
配置静态RP |
二者至少选其一,若只配置静态RP,则不必再配置BSR |
|
配置C-RP |
|||
配置自动RP侦听 |
可选 |
||
配置Anycast-RP |
可选 |
||
配置BSR |
配置C-BSR |
必选 |
|
配置C-BSR发送自举报文的时间间隔 |
可选 |
||
配置C-BSR等待接收来自BSR的自举报文的超时时间 |
可选 |
||
配置BSR服务边界 |
可选 |
||
关闭自举报文语义分片功能 |
可选 |
||
配置组播源注册 |
可选 |
||
配置SPT切换 |
可选 |
||
配置DR选举的延迟时间 |
可选 |
||
配置PIM公共特性 |
可选 |
在配置PIM-SM之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
同一台设备相同实例的所有接口上启用的PIM模式必须相同。
在进行各项PIM配置之前,必须先使能IP组播路由。
只有配置了接口的主IP地址,本命令才能生效。
在接口上使能了PIM-SM后,设备之间才能够建立PIM邻居,从而对来自PIM邻居的协议报文进行处理。在部署PIM-SM域时,建议在其所有非边界接口上均使能PIM-SM。
表2-7 使能PIM-SM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由,并进入MRIB视图 |
multicast routing [ vpn-instance vpn-instance-name ] |
缺省情况下,IP组播路由处于关闭状态 本命令的详细介绍请参见“IP组播命令参考”中的“组播路由与转发” |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
缺省情况下,PIM-SM处于关闭状态 |
一个RP可以为多个组播组服务,也可以为所有组播组服务。每个组播组在任意时刻,只能由唯一的一个RP为其转发数据,而不能由多个RP转发数据。
RP可以通过手工方式静态配置,也可以通过BSR机制动态选举。由于在大型PIM网络中配置静态RP将非常繁琐,因此,通常将静态RP作为动态选举RP机制的备份手段,以提高网络的健壮性,增强组播网络的运营管理能力。
当网络内仅有一个动态RP时,可以手工配置静态RP,既可避免因单一节点故障而引起的通信中断,也可避免C-RP与BSR之间频繁的信息交互而占用带宽。PIM-SM域内的所有设备上都必须进行完全相同的静态RP配置。
表2-8 配置静态RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置服务于PIM-SM的静态RP |
static-rp rp-address [ { ipv4-acl-number | name ipv4-acl-number }| preferred ] * |
缺省情况下,不存在静态RP 当网络中同时存在动态RP和静态RP时,如果未指定preferred参数,则表示优先选择动态RP,只有当未配置动态RP或动态RP失效时,静态RP才能生效;如果指定了preferred参数,则表示优先选择静态RP,只有当静态RP失效时,动态RP才能生效 |
在配置C-RP时,应在C-RP与PIM-SM域中的其它设备之间保留较大的通信带宽。
在PIM-SM域中,可以把有意成为RP的设备配置为C-RP。BSR通过接收来自C-RP的C-RP信息,或者接收来自其它设备的自动RP宣告,收集C-RP信息并将其汇总为RP-Set信息,然后在全网内扩散。之后,网络内的其它设备根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网设备上配置C-RP。
为了使BSR能够在PIM-SM域内分发RP-Set信息,C-RP必须周期性地向BSR发送宣告报文,BSR从该报文中学习RP-Set信息,并将该信息与自己的IP地址一起封装在自举报文中向域中的所有PIM设备进行宣告。
C-RP在其宣告报文中封装一个保持时间,BSR在收到该报文后,从中获得该时间值并启动C-RP超时定时器,如果超时后BSR仍没有收到来自C-RP后续的宣告报文,则认为目前网络中的C-RP失效或不可达。
为了防止C-RP欺骗,需要在BSR上配置合法的C-RP地址范围及其服务的组播组范围。同时由于每个C-BSR都可能成为BSR,因此必须在PIM-SM域内的所有C-BSR上都配置相同的过滤策略。
表2-9 配置C-RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-RP |
c-rp ip-address [ advertisement-interval adv-interval | group-policy ipv4-acl-number | holdtime hold-time | priority priority ] * |
缺省情况下,不存在C-RP |
(可选)配置合法的C-RP地址范围及其服务的组播组范围 |
crp-policy ipv4-acl-number |
缺省情况下,C-RP地址范围及其服务的组播组范围不受限制 |
自动RP宣告(Announce)和发现(Discovery)报文的目的地址分别为组播组地址224.0.1.39和224.0.1.40。在设备上使能了自动RP侦听功能后,该设备便能够接收这两种报文,并记录报文中所携带的RP信息。
设备不支持主动发送RP宣告和发现报文,只支持接收和转发该报文。
表2-10 配置自动RP侦听
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
(可选)开启自动RP侦听功能 |
auto-rp enable |
缺省情况下,自动RP侦听功能处于关闭状态 |
在配置Anycast-RP前,需要先在PIM-SM域中完成静态RP或C-RP的配置,然后将静态RP或动态选举出的RP当作Anycast-RP地址进行Anycast-RP的配置。
在配置Anycast-RP时,请遵循以下原则:
· 处于同一个Anycast-RP集中的成员设备上,都必须存在相同的IP地址(LoopBack接口地址),并将该IP地址同时配置为Anycast-RP和C-RP。
· Anycast-RP集中必须包括Anycast-RP地址所在的设备。
· 在Anycast-RP集的每台成员设备上通过重复执行anycast-rp命令,将包括自己在内的所有成员的地址都添加到Anycast-RP集中。
· Anycast-RP地址不能再用作BSR的地址,否则其发出的自举报文将被其它成员设备丢弃。
· 一个Anycast-RP集中的成员设备不建议超过16台,否则将影响网络性能。
· 建议使用LoopBack接口的地址作为Anycast-RP成员地址。如果一台成员设备有多个接口的地址被添加到Anycast-RP集中,则采用IP地址最小的那个作为其成员地址,其余作为备份。
表2-11 配置Anycast-RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置Anycast-RP |
anycast-rp anycast-rp-address member-rp-address |
缺省情况下,不存在Anycast-RP |
如果配置了静态RP,则不需要配置BSR;但如果配置了C-RP来动态选举RP,则必须配置BSR。在一个PIM-SM域中只能有一个BSR,但需要配置至少一个C-BSR。任意一台设备都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR,BSR负责在PIM-SM域中收集并发布RP信息。
· 由于BSR与PIM-SM域中的其它设备需要交换大量信息,因此应在C-BSR与PIM-SM域中的其它设备之间保留较大的通信带宽。
· 当C-BSR与其它PIM设备通过隧道连接时,如果单播路由中到C-BSR下一跳的不是Tunnel接口,请在PIM设备上通过配置组播静态路由以保证这一点,否则将影响RPF检查。有关组播静态路由的相关配置,请参见“IP组播配置指导”中的“组播路由与转发”。
C-BSR应配置在骨干网的设备上,C-BSR间的自动选举机制简单描述如下:
· 最初,每个C-BSR都认为自己是本PIM-SM域的BSR,向其它设备发送自举报文;
· 当某C-BSR收到其它C-BSR发来的自举报文时,首先比较自己与后者的优先级,优先级较高者获胜;在优先级相同的情况下,再比较自己与后者的BSR地址,拥有较大IP地址者获胜。如果后者获胜,则用后者的BSR地址替换自己的BSR地址,并不再认为自己是BSR;否则,保留自己的BSR地址,并继续认为自己是BSR。
在一个PIM-SM域中,从众多C-BSR中选举出唯一的BSR。PIM-SM域内的C-RP向BSR发送宣告报文,由BSR汇总为RP-Set,并向本PIM-SM域内的所有设备进行宣告。所有设备都使用统一的哈希算法,得到特定组播组所对应RP的地址。
通过在设备上配置合法BSR的地址范围,可以对收到的自举报文按照地址范围进行过滤,从而防止某些恶意主机非法伪装成BSR,以避免合法的BSR被恶意取代。必须在PIM-SM域内的所有设备上进行相同的配置。通常针对以下两类情况实施预防措施:
· 某些恶意主机通过伪造自举报文以欺骗设备,试图更改RP映射关系。这种攻击通常发生在边缘设备上,由于BSR处于网络内部,主机在网络外部,因此边缘设备通过对收到的自举报文进行邻居检查和RPF检查,丢弃不符合要求的报文,就可以避免外部网络用户对内部网络BSR的攻击;
· 网络中某台设备被攻击者控制,或者有非法接入的设备时,攻击者可以将这样的设备配置为C-BSR,并使其在竞争中获胜,从而控制网络中RP信息的发布权。由于在被配置为C-BSR后,设备会自动向整个网络扩散自举报文,而自举报文是TTL值为1的组播报文,所以只要其邻居设备不接收该自举报文,就不会影响整个网络。因此,通过在整个网络的所有设备上都配置合法BSR的地址范围,从而丢弃合法范围之外的自举报文,就可以防止此类攻击。
以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR设备被攻击者控制,还是可能导致问题。
表2-12 配置C-BSR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR |
c-bsr ip-address [ scope group-address { mask-length | mask } ] [ hash-length hash-length | priority priority ] * |
缺省情况下,不存在C-BSR |
(可选)配置合法的BSR地址范围 |
bsr-policy ipv4-acl-number |
缺省情况下,BSR的地址范围不受限制 |
C-BSR一旦通过自举机制竞选为BSR后,其他C-BSR会在等待接收来自BSR的自举报文的超时时间(holdtime,可通过c-bsr holdtime命令进行配置)内,停止向其所服务的区域内的其他设备发送自举报文,BSR选举过程暂停。之后,将由BSR会周期性地(发送的周期通过本命令配置)向其所服务的区域内的其他设备发送携带自己的IP地址、RP-Set信息和RP实际老化时间的自举报文,其他设备根据RP-Set信息计算出特定组播组范围所对应的RP。当自举超时时间超时后,所有的C-BSR之间会互相发送自举报文,触发新一轮的BSR选举过程。
如果同时配置了interval和holdtime,请保证interval小于holdtime,否则将导致频繁触发BSR选举过程。
如果只配置了其中之一,那么另一个取值可由以下公式计算得出:interval=(holdtime-10)÷2。
只配置了holdtime时,若根据公式计算得出的interval小于interval取值范围的最小值(1秒),则interval的取值为1秒。
只配置了interval时,若根据公式计算得出的holdtime大于holdtime取值范围的最大值(2147483647秒),则holdtime取值为2147483647秒。
属于同一个PIM域的所有C-BSR必须配置相同的interval和holdtime。如果配置值不同,则可能导致BSR选举不稳定,从而引发组播流量转发故障。
表2-13 配置C-BSR发送自举报文的时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR发送自举报文的时间间隔 |
c-bsr interval interval |
缺省情况下,C-BSR发送自举报文的时间间隔为60秒 |
C-BSR一旦通过自举机制竞选为BSR后,其他C-BSR会在等待接收来自BSR的自举报文的超时时间内,停止向其所服务的区域内的其他设备发送自举报文,BSR选举过程暂停。当自举超时时间超时后,所有的C-BSR之间会互相发送自举报文,触发新一轮的BSR选举过程。
如果同时配置了interval和holdtime,请保证interval小于holdtime,否则将导致频繁触发BSR选举过程。
如果只配置了其中之一,那么另一个取值可由以下公式计算得出:interval=(holdtime-10)÷2。
只配置了holdtime时,若根据公式计算得出的interval小于interval取值范围的最小值(1秒),则interval的取值为1秒。
只配置了interval时,若根据公式计算得出的holdtime大于holdtime取值范围的最大值(2147483647秒),则holdtime取值为2147483647秒。
属于同一个PIM域的所有C-BSR必须配置相同的interval和holdtime。如果配置值不同,则可能导致BSR选举不稳定,从而引发组播流量转发故障。
表2-14 配置C-BSR等待接收来自BSR的自举报文的超时时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR等待接收来自BSR的自举报文的超时时间 |
c-bsr holdtime hold-time |
缺省情况下,C-BSR等待接收来自BSR的自举报文超时时间为130秒 |
BSR作为PIM-SM域中的管理核心,负责将收集到的RP-Set信息以自举报文的形式发向PIM-SM域中的所有设备。
BSR的服务边界,即PIM-SM域的边界。BSR是针对特定的服务范围而言的,众多的BSR服务边界接口将网络划分成不同的PIM-SM域,自举报文无法通过PIM-SM域的边界,BSR服务边界之外的设备也不能参与本PIM-SM域内的组播转发。
请在欲配置为BSR服务边界的设备上进行如下配置。
表2-15 配置BSR服务边界
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置BSR的服务边界 |
pim bsr-boundary |
缺省情况下,不存在BSR的服务边界 |
BSR周期性地向所在PIM-SM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时,自举报文被封装在一个IP报文中发送出去;而当RP-Set信息较多时,自举报文的大小可能超过接口的MTU(Maximum Transmission Unit,最大传输单元)值,从而触发其在IP层的分片。在这种情况下,一个IP分片的丢失就会导致整个自举报文都被丢弃。
自举报文语义分片功能可以解决上述问题:当自举报文大于接口MTU时,会被分解为多个自举报文分片(Bootstrap Message Fragment,BSMF)。非BSR收到自举报文分片后,若发现某组范围对应的RP信息都在这一个分片中,便立即更新该组范围对应的RP-Set;若发现某组范围映射的RP信息被分在了多个分片中,则待收齐了这些分片后再更新该组范围对应的RP-Set。这样,由于不同分片所含组范围对应的RP信息不同,因此个别分片的丢失只影响该分片所含组范围对应的RP信息,而不会导致整个自举报文都被丢弃。
自举报文语义分片功能是缺省开启的,但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理,从而导致其学到的RP-Set信息不完整,因此当PIM-SM域中存在此类设备时,请在已配置为C-BSR的设备上关闭本功能。
表2-16 关闭自举报文语义分片功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
关闭自举报文语义分片功能 |
undo bsm-fragment enable |
缺省情况下,自举报文语义分片功能处于开启状态 |
通常,BSR根据其BSR接口的MTU值对自举报文进行语义分片;而对由于新学到PIM邻居而触发的自举报文发送,则根据发送接口的MTU值进行语义分片。
BSR将自举报文(Bootstrap Message,BSM)发布到整个PIM-SM域。为了解决某些特殊组网中一些设备无法收到自举报文的问题,PIM-SM域中每个从RPF接口收到自举报文的设备都会向入接口再转发出去。但是在大多数PIM-SM域中,设备并不需要将自举报文向入接口转发出去,可以在设备上关闭本功能。
表2-17 关闭自举报文往报文入接口方向转发功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
关闭自举报文往报文入接口方向转发功能 |
undo bsm-reflection enable |
缺省情况下,自举报文往报文入接口方向转发功能处于开启状态 |
在PIM-SM域内,组播源侧DR向RP发送注册报文,而这些注册报文拥有不同的组播源或组播组地址。为了让RP服务于特定的组播组,可以对注册报文进行过滤。如果注册报文中的(S,G)表项被过滤策略中的ACL规则拒绝,或者该ACL中没有定义针对该表项的规则,RP将丢弃该注册报文,并向DR发送注册停止报文。
出于注册报文在传递过程中信息完整性的考虑,可以配置根据注册报文的全部内容计算校验和。但当其它设备不支持根据注册报文的全部内容计算校验和时,则需要配置仅根据注册报文头计算校验和。
当接收者不再通过RP接收发往某组播组的数据(即RP不再服务于该组播组),或RP开始接收组播源沿着SPT发来的组播数据时,RP将向组播源侧DR发送注册停止报文,DR收到该报文后将停止发送封装有组播数据的注册报文并启动注册停止定时器(Register-Stop Timer)。在注册停止定时器超时之前,DR会向RP发送一个空注册报文(Null-Register Message,即不封装组播数据的注册报文):如果DR在注册探测时间(Register_Probe_Time)内收到了来自RP的注册停止报文,DR将刷新其注册停止定时器;否则,DR将重新开始发送封装有组播数据的注册报文。
注册停止定时器的超时时间是一个随机值,由其它两个时间值决定:注册抑制时间(Register_Suppression_Time)和注册探测时间(固定为5秒)。其具体取值范围如下:(0.5×注册抑制时间,1.5×注册抑制时间)-注册探测时间。
请在所有已配置为C-RP的设备上配置注册报文的过滤策略和注册报文的校验方式;请在所有可能成为组播源侧DR的设备上配置注册抑制时间。
表2-18 配置组播源注册
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置注册报文的过滤策略 |
register-policy { ipv4-acl-number | name ipv4-acl-name } |
缺省情况下,不存在注册报文的过滤策略,所有注册报文都是合法的 |
配置根据注册报文的全部内容来计算校验和 |
register-whole-checksum |
缺省情况下,仅根据注册报文头来计算校验和 |
配置注册抑制时间 |
register-suppression-timeout interval |
缺省情况下,注册抑制时间为60秒 |
表2-19 配置SPT切换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置发起SPT切换的条件 |
spt-switch-threshold { immediacy | infinity } [ group-policy ipv4-acl-number ] |
缺省情况下,设备收到第一个组播数据包后便立即向SPT切换 |
在与接收者相连的共享网段上,通常同时连接着多台PIM设备。多台PIM设备会通过DR选举机制选举出一台负责转发组播报文的PIM设备(即DR)。在某些场景下,比如原先故障的DR恢复正常后,发送PIM Hello报文参与DR选举,会立即被选为DR,导致当前DR变成非DR。此时,恢复正常并当选为DR的那台设备尚未生成完整的组播转发表项,会导致短时间内有组播流量的丢失,造成组播数据断流。
配置本功能后,原先故障的DR设备在恢复正常后,不会立即发送PIM Hello报文参与DR选举,而是需要等待delay-time,设备才开始参与DR选举。此时,在延迟时间超时前,组播数据仍然由当前DR进行转发,减少了组播流量的断流。
建议在DR设备用户侧接口(开启了IGMP功能的接口)上配置本命令,非DR设备不需要配置。若DR设备和非DR设备都配置,则设备均故障重启后,DR选举的延迟时间超时之前会出现断流。
建议配置的PIM DR选举的延迟时间大于PIM Hello报文的发送间隔,否则会导致DR设备故障恢复后出现短暂的多包。
表2-20 配置DR选举的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置DR选举的延迟时间 |
pim timer dr-elect-delay delay-time |
缺省情况下,DR选举不延时 |
· 双向PIM不支持通过GRE隧道实现组播转发功能。
· 双向PIM不支持三层以太网接口/子接口和三层聚合接口/子接口,当使用双向PIM功能时,为保证组播数据的正常转发,请不要使用三层以太网接口/子接口或三层聚合接口/子接口作为组播数据转发接口。有关三层以太网接口/子接口的介绍,请参见“接口管理配置指导”中的“以太网接口”。有关三层聚合接口/子接口的介绍,请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。
表2-21 双向PIM配置任务简介
配置任务 |
说明 |
详细配置 |
|
使能双向PIM |
必选 |
||
配置RP |
配置静态RP |
二者至少选其一,若只配置静态RP,则不必再配置BSR |
|
配置C-RP |
|||
配置自动RP侦听 |
可选 |
||
配置双向PIM RP的最大数目 |
可选 |
||
配置BSR |
配置C-BSR |
必选 |
|
配置C-BSR发送自举报文的时间间隔 |
可选 |
||
配置C-BSR等待接收来自BSR的自举报文的超时时间 |
可选 |
||
配置BSR服务边界 |
可选 |
||
关闭自举报文语义分片功能 |
可选 |
||
配置PIM公共特性 |
可选 |
在配置双向PIM之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
同一台设备相同实例的所有接口上启用的PIM模式必须相同。
由于双向PIM是在PIM-SM的基础上实现的,因此在使能双向PIM之前须先使能PIM-SM。在部署双向PIM域时,建议在其所有非边界接口上均使能PIM-SM。
表2-22 使能双向PIM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由,并进入MRIB视图 |
multicast routing [ vpn-instance vpn-instance-name ] |
缺省情况下,IP组播路由处于关闭状态 本命令的详细介绍请参见“IP组播命令参考”中的“组播路由与转发” |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
缺省情况下,PIM-SM处于关闭状态 |
退回系统视图 |
quit |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能双向PIM |
bidir-pim enable |
缺省情况下,双向PIM处于关闭状态 |
当PIM网络中同时运行PIM-SM和双向PIM时,请勿使一个RP同时为PIM-SM和双向PIM工作,否则可能引起PIM路由表出错。
一个RP可以为多个组播组服务,也可以为所有组播组服务。每个组播组在任意时刻,只能由唯一的一个RP为其转发数据,而不能由多个RP转发数据。
RP可以通过手工方式静态配置,也可以通过BSR机制动态选举。由于在大型PIM网络中配置静态RP将非常繁琐,因此,通常将静态RP作为动态选举RP机制的备份手段,以提高网络的健壮性,增强组播网络的运营管理能力。
当网络内仅有一个动态RP时,可以手工配置静态RP,既可避免因单一节点故障而引起的通信中断,也可避免C-RP与BSR之间频繁的信息交互而占用带宽。双向PIM域内的所有设备上都必须进行完全相同的静态RP配置。
双向PIM允许将静态RP的IP地址指定为一个实际不存在的IP地址。譬如,一条链路两端接口的IP地址分别为10.1.1.1/24和10.1.1.2/24,可以将静态RP的IP地址指定为同网段但实际不存在的一个地址,如10.1.1.100/24,该链路就成为了RPL。
表2-23 配置静态RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置服务于双向PIM的静态RP |
static-rp rp-address bidir [ { ipv4-acl-number | name ipv4-acl-number } | preferred ] * |
缺省情况下,不存在静态RP 当网络中同时存在动态RP和静态RP时,如果未指定preferred参数,则表示优先选择动态RP,只有当未配置动态RP或动态RP失效时,静态RP才能生效;如果指定了preferred参数,则表示优先选择静态RP,只有当静态RP失效时,动态RP才能生效 |
在配置C-RP时,应在C-RP与双向PIM域中的其它设备之间保留较大的通信带宽。
在双向PIM域中,可以把有意成为RP的设备配置为C-RP。BSR通过接收来自C-RP的C-RP信息,或者接收来自其它设备的自动RP宣告,收集C-RP信息并将其汇总为RP-Set信息,然后在全网内扩散。之后,网络内的其它设备根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网设备上配置C-RP。
为了使BSR能够在双向PIM域内分发RP-Set信息,C-RP必须周期性地向BSR发送宣告报文,BSR从该报文中学习RP-Set信息,并将该信息与自己的IP地址一起封装在自举报文中向域中的所有PIM设备进行宣告。
C-RP在其宣告报文中封装一个保持时间,BSR在收到该报文后,从中获得该时间值并启动C-RP超时定时器,如果超时后BSR仍没有收到来自C-RP后续的宣告报文,则认为目前网络中的C-RP失效或不可达。
表2-24 配置C-RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置服务于双向PIM的C-RP |
c-rp ip-address [ advertisement-interval adv-interval | group-policy { ipv4-acl-number | name ipv4-acl-name } | holdtime hold-time | priority priority ] * bidir |
缺省情况下,不存在C-RP |
自动RP宣告(Announce)和发现(Discovery)报文的目的地址分别为组播组地址224.0.1.39和224.0.1.40。在设备上开启了自动RP侦听功能后,该设备便能够接收这两种报文,并记录报文中所携带的RP信息。
设备不支持主动发送RP宣告和发现报文,只支持接收和转发该报文。
表2-25 配置自动RP侦听
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公网实例或VPN实例PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
(可选)开启自动RP侦听功能 |
auto-rp enable |
缺省情况下,自动RP侦听功能处于关闭状态 |
由于双向PIM为每个RP都要在所有PIM接口上进行DF选举,因此实际组网中不建议配置多个双向PIM RP。通过本配置可以限制双向PIM RP的数目,超出限制值的RP不会生效,仅能进行DF选举而无法指导转发。
在配置双向PIM RP的最大数目时,如果现有双向PIM RP的数目已超过配置值,系统不会自动删除超出限制值的RP,用户可根据需要进行手工删除。
表2-26 配置双向PIM RP的最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置双向PIM RP的最大数目 |
bidir-rp-limit limit |
缺省情况下,双向PIM RP的最大数目为6 |
如果配置了静态RP,则不需要配置BSR;但如果配置了C-RP来动态选举RP,则必须配置BSR。在一个双向PIM域中只能有一个BSR,但需要配置至少一个C-BSR。任意一台设备都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR,BSR负责在双向PIM域中收集并发布RP信息。
· 由于BSR与双向PIM域中的其它设备需要交换大量信息,因此应在C-BSR与双向PIM域中的其它设备之间保留较大的通信带宽。
· 当C-BSR与其它PIM设备通过隧道连接时,如果单播路由中到C-BSR下一跳的不是Tunnel接口,请在PIM设备上通过配置组播静态路由以保证这一点,否则将影响RPF检查。有关组播静态路由的相关配置,请参见“IP组播配置指导”中的“组播路由与转发”。
C-BSR应配置在骨干网的设备上,C-BSR间的自动选举机制简单描述如下:
· 最初,每个C-BSR都认为自己是本双向PIM域的BSR,向其它设备发送自举报文;
· 当某C-BSR收到其它C-BSR发来的自举报文时,首先比较自己与后者的优先级,优先级较高者获胜;在优先级相同的情况下,再比较自己与后者的BSR地址,拥有较大IP地址者获胜。如果后者获胜,则用后者的BSR地址替换自己的BSR地址,并不再认为自己是BSR;否则,保留自己的BSR地址,并继续认为自己是BSR。
在一个双向PIM域中,从众多C-BSR中选举出唯一的BSR。双向PIM域内的C-RP向BSR发送宣告报文,由BSR汇总为RP-Set,并向本双向PIM域内的所有设备进行宣告。所有设备都使用统一的哈希算法,得到特定组播组所对应RP的地址。
通过在设备上配置合法BSR的地址范围,可以对收到的自举报文按照地址范围进行过滤,从而防止某些恶意主机非法伪装成BSR,以避免合法的BSR被恶意取代。必须在双向PIM域内的所有设备上进行相同的配置。通常针对以下两类情况实施预防措施:
· 某些恶意主机通过伪造自举报文以欺骗设备,试图更改RP映射关系。这种攻击通常发生在边缘设备上,由于BSR处于网络内部,主机在网络外部,因此边缘设备通过对收到的自举报文进行邻居检查和RPF检查,丢弃不符合要求的报文,就可以避免外部网络用户对内部网络BSR的攻击;
· 网络中某台设备被攻击者控制,或者有非法接入的设备时,攻击者可以将这样的设备配置为C-BSR,并使其在竞争中获胜,从而控制网络中RP信息的发布权。由于在被配置为C-BSR后,设备会自动向整个网络扩散自举报文,而自举报文是TTL值为1的组播报文,所以只要其邻居设备不接收该自举报文,就不会影响整个网络。因此,通过在整个网络的所有设备上都配置合法BSR的地址范围,从而丢弃合法范围之外的自举报文,就可以防止此类攻击。
以上两种预防措施可以部分地保护网络中BSR的安全。但是如果某台合法的BSR设备被攻击者控制,还是可能导致问题。
表2-27 配置C-BSR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR |
c-bsr ip-address [ scope group-address { mask-length | mask } ] [ hash-length hash-length | priority priority ] * |
缺省情况下,不存在C-BSR |
(可选)配置合法的BSR地址范围 |
bsr-policy ipv4-acl-number |
缺省情况下,BSR的地址范围不受限制 |
C-BSR一旦通过自举机制竞选为BSR后,其他C-BSR会在等待接收来自BSR的自举报文的超时时间(holdtime,可通过c-bsr holdtime命令进行配置)内,停止向其所服务的区域内的其他设备发送自举报文,BSR选举过程暂停。之后,将由BSR会周期性地(发送的周期通过本命令配置)向其所服务的区域内的其他设备发送携带自己的IP地址、RP-Set信息和RP实际老化时间的自举报文,其他设备根据RP-Set信息计算出特定组播组范围所对应的RP。当自举超时时间超时后,所有的C-BSR之间会互相发送自举报文,触发新一轮的BSR选举过程。
如果同时配置了interval和holdtime,请保证interval小于holdtime,否则将导致频繁触发BSR选举过程。
如果只配置了其中之一,那么另一个取值可由以下公式计算得出:interval=(holdtime-10)÷2。
只配置了holdtime时,若根据公式计算得出的interval小于interval取值范围的最小值(1秒),则interval的取值为1秒。
只配置了interval时,若根据公式计算得出的holdtime大于holdtime取值范围的最大值(2147483647秒),则holdtime取值为2147483647秒。
属于同一个PIM域的所有C-BSR必须配置相同的interval和holdtime。如果配置值不同,则可能导致BSR选举不稳定,从而引发组播流量转发故障。
表2-28 配置C-BSR发送自举报文的时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR发送自举报文的时间间隔 |
c-bsr interval interval |
缺省情况下,C-BSR发送自举报文的时间间隔为60秒 |
C-BSR一旦通过自举机制竞选为BSR后,其他C-BSR会在等待接收来自BSR的自举报文的超时时间内,停止向其所服务的区域内的其他设备发送自举报文,BSR选举过程暂停。当自举超时时间超时后,所有的C-BSR之间会互相发送自举报文,触发新一轮的BSR选举过程。
如果同时配置了interval和holdtime,请保证interval小于holdtime,否则将导致频繁触发BSR选举过程。
如果只配置了其中之一,那么另一个取值可由以下公式计算得出:interval=(holdtime-10)÷2。
只配置了holdtime时,若根据公式计算得出的interval小于interval取值范围的最小值(1秒),则interval的取值为1秒。
只配置了interval时,若根据公式计算得出的holdtime大于holdtime取值范围的最大值(2147483647秒),则holdtime取值为2147483647秒。
属于同一个PIM域的所有C-BSR必须配置相同的interval和holdtime。如果配置值不同,则可能导致BSR选举不稳定,从而引发组播流量转发故障。
表2-29 配置C-BSR等待接收来自BSR的自举报文的超时时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置C-BSR等待接收来自BSR的自举报文的超时时间 |
c-bsr holdtime hold-time |
缺省情况下,C-BSR等待接收来自BSR的自举报文超时时间为130秒 |
BSR作为双向PIM域中的管理核心,负责将收集到的RP-Set信息以自举报文的形式发向双向PIM域中的所有设备。
BSR的服务边界,即双向PIM域的边界。BSR是针对特定的服务范围而言的,众多的BSR服务边界接口将网络划分成不同的双向PIM域,自举报文无法通过双向PIM域的边界,BSR服务边界之外的设备也不能参与本双向PIM域内的组播转发。
请在欲配置为BSR服务边界的设备上进行如下配置。
表2-30 配置BSR服务边界
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置BSR的服务边界 |
pim bsr-boundary |
缺省情况下,不存在BSR的服务边界 |
BSR周期性地向所在双向PIM域发送自举报文以通告RP-Set信息。当RP-Set信息较少时,自举报文被封装在一个IP报文中发送出去;而当RP-Set信息较多时,自举报文的大小可能超过接口的MTU值,从而触发其在IP层的分片。在这种情况下,一个IP分片的丢失就会导致整个自举报文都被丢弃。
自举报文语义分片功能可以解决上述问题:当自举报文大于接口MTU时,会被分解为多个自举报文分片。非BSR收到自举报文分片后,若发现某组范围对应的RP信息都在这一个分片中,便立即更新该组范围对应的RP-Set;若发现某组范围映射的RP信息被分在了多个分片中,则待收齐了这些分片后再更新该组范围对应的RP-Set。这样,由于不同分片所含组范围对应的RP信息不同,因此个别分片的丢失只影响该分片所含组范围对应的RP信息,而不会导致整个自举报文都被丢弃。
自举报文语义分片功能是缺省开启的,但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理,从而导致其学到的RP-Set信息不完整,因此当双向PIM域中存在此类设备时,请在已配置为C-BSR的设备上关闭本功能。
表2-31 关闭自举报文语义分片功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
关闭自举报文语义分片功能 |
undo bsm-fragment enable |
缺省情况下,自举报文语义分片功能处于开启状态 |
通常,BSR根据其BSR接口的MTU值对自举报文进行语义分片;而对由于新学到PIM邻居而触发的自举报文发送,则根据发送接口的MTU值进行语义分片。
BSR将自举报文(Bootstrap Message,BSM)发布到整个双向PIM域。为了解决某些特殊组网中一些设备无法收到自举报文的问题,双向PIM域中每个从RPF接口收到自举报文的设备都会向入接口再转发出去。但是在大多数双向PIM域中,设备并不需要将自举报文向入接口转发出去,可以在设备上关闭本功能。
表2-32 关闭自举报文往报文入接口方向转发功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
关闭自举报文往报文入接口方向转发功能 |
undo bsm-reflection enable |
缺省情况下,自举报文往报文入接口方向转发功能处于开启状态 |
PIM-SSM模型需要IGMPv3的支持,因此应确保连接有接收者的PIM设备上使能了IGMPv3。
表2-33 PIM-SSM配置任务简介
配置任务 |
说明 |
详细配置 |
使能PIM-SM |
必选 |
|
配置SSM组播组范围 |
可选 |
|
配置DR选举的延迟时间 |
可选 |
|
配置PIM公共特性 |
可选 |
在配置PIM-SSM之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
同一台设备相同实例的所有接口上启用的PIM模式必须相同。
在进行各项PIM配置之前,必须先使能IP组播路由。
由于PIM-SSM是通过PIM-SM的部分子集功能实现的,因此在配置PIM-SSM之前须先使能PIM-SM。在部署PIM-SSM域时,建议在其所有非边界接口上均使能PIM-SM。
表2-34 使能PIM-SM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由,并进入MRIB视图 |
multicast routing [ vpn-instance vpn-instance-name ] |
缺省情况下,IP组播路由处于关闭状态 本命令的详细介绍请参见“IP组播命令参考”中的“组播路由与转发” |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
缺省情况下,PIM-SM处于关闭状态 |
在把来自组播源的信息传递给接收者的过程中,是采用PIM-SSM模型还是PIM-SM模型,这取决于接收者订阅通道(S,G)中的组播组是否在SSM组播组范围之内,所有使能了PIM-SM的接口将会认为属于该范围内的组播组采用了PIM-SSM模型。
请在PIM-SSM域内的所有设备上进行如下配置。
· 应确保PIM-SSM域内所有设备上配置的SSM组播组地址范围都一致,否则组播信息将无法通过SSM模型进行传输。
· 如果某组播组属于SSM组播组范围,但该组成员使用IGMPv1或IGMPv2发送加入报文,则设备不会触发(*,G)加入报文。
表2-35 配置SSM组播组范围
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置SSM组播组的范围 |
ssm-policy { ipv4-acl-number | name ipv4-acl-name } |
缺省情况下,SSM组播组的范围为232.0.0.0/8 |
在与接收者相连的共享网段上,通常同时连接着多台PIM设备。多台PIM设备会通过DR选举机制选举出一台负责转发组播报文的PIM设备(即DR)。在某些场景下,比如原先故障的DR恢复正常后,发送PIM Hello报文参与DR选举,会立即被选为DR,导致当前DR变成非DR。此时,恢复正常并当选为DR的那台设备尚未生成完整的组播转发表项,会导致短时间内有组播流量的丢失,造成组播数据断流。
配置本功能后,原先故障的DR设备在恢复正常后,不会立即发送PIM Hello报文参与DR选举,而是需要等待delay-time,设备才开始参与DR选举。此时,在延迟时间超时前,组播数据仍然由当前DR进行转发,减少了组播流量的断流。
建议在DR设备用户侧接口(开启了IGMP功能的接口)上配置本命令,非DR设备不需要配置。若DR设备和非DR设备都配置,则设备均故障重启后,DR选举的延迟时间超时之前会出现断流。
建议配置的PIM DR选举的延迟时间大于PIM Hello报文的发送间隔,否则会导致DR设备故障恢复后出现短暂的多包。
表2-36 配置DR选举的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置DR选举的延迟时间 |
pim timer dr-elect-delay delay-time 缺省情况下,DR选举不延时 |
|
表2-37 PIM公共特性配置任务简介
配置任务 |
说明 |
详细配置 |
配置组播数据过滤器 |
可选 |
|
配置Hello报文过滤器 |
可选 |
|
配置Hello报文选项 |
可选 |
|
配置端口链路状态发生变化时立刻发送Generation ID变化的Hello报文 |
可选 |
|
配置PIM公共定时器 |
可选 |
|
配置加入/剪枝报文规格 |
可选 |
|
配置PIM加入/剪枝报文中加入信息过滤规则 |
可选 |
|
配置PIM与BFD联动 |
可选 |
|
配置PIM接口消极模式 |
可选 |
|
配置PIM NSR功能 |
可选 |
|
配置三层组播支持M-LAG |
可选 |
|
开启PIM告警功能 |
可选 |
|
配置设备发送的PIM协议报文的DSCP优先级 |
可选 |
在配置PIM公共特性之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
· 配置PIM-DM或PIM-SM
无论在PIM-DM还是PIM-SM域内,各设备都可以对流经自己的组播数据进行检查,通过比较是否符合过滤规则来决定是否继续转发组播数据。也就是说PIM域内的设备能够成为组播数据的过滤器。过滤器的存在一方面有助于实现信息流量控制,另一方面可以在安全性方面限定下游接收者能够获得的信息。过滤器不仅过滤独立的组播数据,还过滤封装在注册报文中的组播数据。
通常,过滤器的位置距离组播源越近,过滤影响越明显。
表2-38 配置组播数据过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置组播数据过滤器 |
source-policy { ipv4-acl-number| name ipv4-acl-name } |
缺省情况下,不存在组播数据过滤器,不对组播数据进行过滤 |
随着PIM协议的推广和应用,对其安全性的要求也越来越高。建立正确的PIM邻居是PIM协议安全应用的前提。如果在接口上指定了合法Hello报文的源地址范围,便能够保证PIM邻居的正确建立,从而有效防止各种PIM协议报文攻击,提高设备对PIM协议报文处理的安全性。
表2-39 配置Hello报文过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置合法Hello报文的源地址范围 |
pim neighbor-policy { ipv4-acl-number| name ipv4-acl-name } |
缺省情况下,Hello报文的源地址范围不受限制 |
当Hello报文过滤器的配置生效后,对于之前已建立的PIM邻居,若由于其Hello报文被过滤而导致无法收到后续的Hello报文,将会在老化超时后被自动删除。
无论在PIM-DM域还是在PIM-SM域内,各设备之间发送的Hello报文都包含很多可供配置的选项,对各选项的介绍如下:
· DR_Priority(仅用于PIM-SM):表示竞选DR的优先级,优先级高的设备被选举为DR。可以在与组播源或接收者直连的共享网段中的所有设备上都配置此参数。
· Holdtime:表示保持PIM邻居可达状态的时间,若超时后仍没有收到Hello报文,则认为PIM邻居失效或不可达。
· LAN_Prune_Delay:该选项用于调节共享网段上的剪枝延迟,由三部分组成:LAN-delay、Override-interval和禁止加入报文抑制能力。
LAN-delay表示PIM报文在共享网段中的传输延迟,Override-interval表示允许下游设备否决剪枝动作的时间,当共享网段中各PIM设备的LAN-delay或Override-interval不同时,取其中最大的值。当设备从其上游接口收到了剪枝报文,说明共享网段中还存在其它下游设备,如果该设备需要继续接收组播数据,则必须在Override-interval时间内向上游设备发送加入报文以否决这个剪枝动作,这个过程就称为剪枝否决。设备在收到下游设备发来的剪枝报文后并不立即执行剪枝动作,而是仍将当前的转发状态保持LAN-delay+Override-interval时间,在该时间内如果收到下游的剪枝否决,则取消剪枝动作。
通过在上游邻居上使能跟踪下游邻居的功能(即禁止加入报文抑制能力),可以记录已发送了加入报文且加入状态尚未超时的下游邻居的信息。使能该功能时,应在共享网段的所有PIM设备上都使能,否则上游邻居无法跟踪每个下游邻居的加入报文。
在接口上使能PIM后,设备会生成一个随机数作为Hello报文中的Generation ID。一台PIM设备的Generation ID一般不会改变,除非其状态更新才会生成新的Generation ID。这样,当PIM设备发现来自上游邻居的Hello报文中的Generation ID发生改变时,便认为上游邻居的状态发生了改变,从而触发发送加入报文以进行状态刷新。通过在接口上配置拒绝无Generation ID的Hello报文,可以实时了解上游邻居的状态。
对于既可在PIM视图又可在接口视图下进行的配置来说,前者对所有接口都生效,而后者只对当前接口生效,但后者的配置优先级较高。
表2-40 全局配置Hello报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置竞选DR的优先级 |
hello-option dr-priority priority |
缺省情况下,竞选DR的优先级为1 |
配置保持PIM邻居可达状态的时间 |
hello-option holdtime time |
缺省情况下,保持PIM邻居可达状态的时间为105秒 |
配置PIM报文在共享网段中的传输延迟 |
hello-option lan-delay delay |
缺省情况下,PIM报文在共享网段中的传输延迟为500毫秒 |
配置剪枝否决时间 |
hello-option override-interval interval |
缺省情况下,剪枝否决时间为2500毫秒 |
开启邻居跟踪功能 |
hello-option neighbor-tracking |
缺省情况下,邻居跟踪功能处于关闭状态 |
表2-41 在接口上配置Hello报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置竞选DR的优先级 |
pim hello-option dr-priority priority |
缺省情况下,竞选DR的优先级为1 |
配置保持PIM邻居可达状态的时间 |
pim hello-option holdtime time |
缺省情况下,保持PIM邻居可达状态的时间为105秒 |
配置PIM报文在共享网段中的传输延迟 |
pim hello-option lan-delay delay |
缺省情况下,PIM报文在共享网段中的传输延迟为500毫秒 |
配置剪枝否决时间 |
pim hello-option override-interval interval |
缺省情况下,剪枝否决时间为2500毫秒 |
开启邻居跟踪功能 |
pim hello-option neighbor-tracking |
缺省情况下,邻居跟踪功能处于关闭状态,即不禁止加入报文抑制能力 |
配置拒绝无Generation ID的Hello报文 |
pim require-genid |
缺省情况下,接受无Generation ID的Hello报文 |
如图2-1所示,为了提高可靠性,组播转发路径中的下游设备Device B通过同一VLAN内的多个二层接口(Interface A1和Interface A2)连接上游设备Device A。正常情况下,Device B通过Interface A1接入Device A,即Device A从接口Interface A1将组播报文发送给Device B。当Interface A1的链路状态发生故障或者故障恢复时,Device B需要切换到Interface A2或者从Interface A2回切到Interface A1接入设备。在这些情况下,Device B通常不会立即发送PIM加入报文,导致组播数据不能及时切换到变更后的路径上。执行本配置后,Device A上指定VLAN接口对应VLAN内的端口链路状态变化时,Device A主动发送Generation ID变化的Hello报文,以触发Device B立即发送PIM加入报文,更新组播转发表项,将组播数据流迅速切换到新的转发路径上。
图2-1 端口链路状态发生变化时立刻发送Generation ID变化的Hello报文示意图
表2-42 配置端口链路状态发生变化时立刻发送Generation ID变化的Hello报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置设备在端口链路状态发生变化时立刻发送Generation ID变化的Hello报文,以及时更新组播转发表项 |
pim triggered-hello enable { port-down | port-up } * |
缺省情况下,设备不会因为端口链路状态发生变化而立刻发送Generation ID变化的Hello报文。 |
· 如果对网络没有特殊要求,各定时器的值建议采用缺省值。
· PIM接口向上游邻居发送加入/剪枝报文的时间间隔必须小于加入/剪枝状态的保持时间,以免上游邻居老化超时。
PIM设备通过周期性地发送Hello报文,以发现PIM邻居,并维护各设备之间的PIM邻居关系。
为了避免多个PIM设备同时发送Hello报文而导致冲突,当PIM设备在收到新邻居发来的Hello报文时,将延迟一段时间再发送Hello报文,该时间值为小于“触发Hello报文的最大延迟时间”的一个随机值。
PIM设备通过周期性地向其上游设备发送加入/剪枝报文以更新状态,在该报文中携带有保持时间,上游设备为被剪枝的下游接口设置加入/剪枝状态保持定时器。
当设备没有收到来自组播源S的后续组播数据时,不会立即删除(S,G)表项,而是将其维持一段时间后再删除,这段时间就称为组播源的生存时间。
对于既可在PIM视图又可在接口视图下进行的配置来说,前者对所有接口都生效,而后者只对当前接口生效,但后者的配置优先级较高。
表2-43 全局配置PIM公共定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置发送Hello报文的时间间隔 |
timer hello interval |
缺省情况下,发送Hello报文的时间间隔为30秒 |
配置发送加入/剪枝报文的时间间隔 |
timer join-prune interval |
缺省情况下,发送加入/剪枝报文的时间间隔为60秒 本命令不会立即生效,新配置的发送间隔将在当前发送间隔完成后生效 |
配置加入/剪枝状态的保持时间 |
holdtime join-prune time |
缺省情况下,加入/剪枝状态的保持时间为210秒 |
配置组播源生存时间 |
source-lifetime time |
缺省情况下,组播源的生存时间为210秒 |
表2-44 在接口上配置PIM公共定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发送Hello报文的时间间隔 |
pim timer hello interval |
缺省情况下,发送Hello报文的时间间隔为30秒 |
配置触发Hello报文的最大延迟时间 |
pim triggered-hello-delay delay |
缺省情况下,触发Hello报文的最大延迟时间为5秒 |
配置发送加入/剪枝报文的时间间隔 |
pim timer join-prune interval |
缺省情况下,发送加入/剪枝报文的时间间隔为60秒 本命令不会立即生效,新配置的发送间隔将在当前发送间隔完成后生效 |
配置加入/剪枝状态的保持时间 |
pim holdtime join-prune time |
缺省情况下,加入/剪枝状态的保持时间为210秒 |
为了防止设备受到非法PIM加入/剪枝报文攻击,可通过本功能来配置过滤规则,限制PIM加入/剪枝报文中加入的信息合法源地址范围和组地址范围,丢弃不合法的加入信息,不建立对应的(*,G)或(S,G)表项。
表2-45 配置PIM加入/剪枝报文中加入信息过滤规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置PIM加入/剪枝报文中加入信息的过滤规则 |
pim join-policy { { ipv4-acl-number | name ipv4-acl-name } | [ asm { ipv4-acl-number | name ipv4-acl-name } | ssm { ipv4-acl-number | name ipv4-acl-number } ] * } |
缺省情况下,不过滤PIM加入/剪枝报文中的加入信息 |
如果加入/剪枝报文的尺寸较大,则丢失一个报文将导致较多信息的遗失;如果加入/剪枝报文的尺寸较小,则单个报文的丢失所产生的影响也将降低。
表2-46 配置加入/剪枝报文规格
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置加入/剪枝报文的最大长度 |
jp-pkt-size size |
缺省情况下,加入/剪枝报文的最大长度为1200字节 |
只有在接口上先使能了PIM-DM或PIM-SM,本配置才能生效。
PIM借助Hello报文在共享网段中选举出DR。当DR出现故障时,只有待其老化后才会触发新的DR选举过程,这个过程通常比较长。为了实现DR的快速切换,可以在共享网段的PIM邻居之间引入BFD(Bidirectional Forwarding Detection,双向转发检测)机制进行链路状态的快速检测。通过在共享网段内的所有PIM设备上都开启PIM与BFD联动功能,可以使这些PIM邻居快速感知DR故障并重新选举DR。有关BFD的详细介绍,请参见“可靠性配置指导”中的“BFD”。
表2-47 配置PIM与BFD联动
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启PIM与BFD联动功能 |
pim bfd enable |
缺省情况下,PIM与BFD联动功能处于关闭状态 |
· 只有在接口上先使能了PIM-DM或PIM-SM,本配置才能生效。
· 当网段中有多台PIM设备时请勿开启本功能,这是由于开启了PIM消极模式的接口将自动成为DR和DF,从而导致该网段中出现多个DR和DF。
为了避免恶意主机模拟PIM Hello报文攻击设备,可以在直连用户的接口上配置PIM消极模式,用来禁止在该接口上接收和转发任何PIM协议报文(不包括单播发送的注册、注册停止和C-RP宣告报文)。同时由于认为在该网段内只有本设备一台PIM设备,开启了PIM消极模式的接口会自动成为该网段的DR和DF。
表2-48 配置PIM接口消极模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启PIM消极模式 |
pim passive |
缺省情况下,接口上的PIM消极模式处于关闭状态 |
PIM NSR(Nonstop Routing,不间断路由)通过将PIM协议的必要协议状态和数据(如PIM邻居信息和路由信息)从主进程备份到备进程,使得PIM协议的主进程中断时,备份进程能够无缝地接管主进程的工作,从而确保邻接设备感知不到PIM协议中断,保持路由信息,并保证组播转发不会中断。
表2-49 配置PIM NSR功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启PIM NSR功能 |
pim non-stop-routing |
缺省情况下,PIM协议的NSR功能处于关闭状态 |
PIM利用M-LAG功能将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备连接组播源或组播接收者,可避免单点故障对组播网络造成影响,提高组播网络可靠性。
需要同时使能二层组播和三层组播功能,三层组播支持M-LAG功能才能生效。
为避免部分情况下链路故障导致流量异常,M-LAG设备之间需要通过一条三层链路建立PIM邻居。该三层链路可以是单独的普通三层链路,也可以通过在peer-link链路上配置保留VLAN功能实现将peer-link链路作为逃生链路。有关peer-link链路的保留VLAN功能的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
对于PIM组网,组播接收者侧需要配置PIM消极模式。
对于IGMP Proxy组网,组播接收者侧需要通过igmp proxy forwarding命令开启非查询器转发功能。
在PIM-SSM模式下,当组播接收者仅接入M-LAG系统的其中一台M-LAG设备时,只能通过VLAN接口连接到M-LAG设备。
对于多级M-LAG互联组网,三层组播M-LAG不支持跟三层组播M-LAG互联,只支持跟二层组播M-LAG互联。
组播VPN不支持M-LAG,有关组播VPN的详细介绍,请参见“组播配置指导”中的“组播VPN”。
对于LSQM1TGS16GPSA0单板,不支持三层组播支持M-LAG功能。
表2-50 配置三层组播支持M-LAG
操作 |
命令 |
说明 |
配置M-LAG |
- |
M-LAG的配置方法请参见“二层技术-以太网交换配置指导”中的“M-LAG” |
配置IGMP Snooping |
- |
IGMP Snooping的配置方法请参见“IP组播配置指导”中的“IGMP Snooping” |
配置IGMP |
- |
IGMP的配置方法请参见“IP组播配置指导”中的“IGMP” |
配置PIM |
- |
|
配置PIM消极模式 |
- |
PIM消极模式的配置方法请参见“2.6.11 配置PIM接口消极模式” |
(可选)配置VLAN接口为分布式DR接口 |
pim distributed-dr |
缺省情况下,VLAN接口不是分布式DR接口。 在三层组播支持多级M-LAG级联组网中,需要在组成M-LAG系统的所有成员设备的VLAN接口上执行本命令,将VLAN接口配置为分布式接口,从而强制指定自己为DR,以便将组播流量转发至本地站点 |
(可选)配置pee-link链路的保留VLAN |
m-lag peer-link reserved |
缺省情况下,未配置保留VLAN 请在需要指定为保留VLAN的VLAN视图下配置本命令。有关该命令的详细介绍,请参见“二层技术-以太网交换命令参考”中的“M-LAG” |
开启了PIM的告警功能之后,PIM会生成告警信息,以向网管软件报告本模块的重要事件。该信息将发送至SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
表2-51 开启PIM告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启PIM的告警功能 |
snmp-agent trap enable pim [ candidate-bsr-win-election | elected-bsr-lost-election | interface-election | invalid-join-prune | invalid-register | neighbor-loss | private-interface-election | private-neighbor-loss | private-new-neighbor | private-rp-mapping-change | rp-mapping-change ] * |
缺省情况下,PIM的告警功能处于开启状态 |
DSCP优先级用来体现报文自身的优先等级,决定报文传输的优先程度。通过本配置可以指定设备发送的PIM协议报文的DSCP优先级。
表2-52 配置设备发送的PIM协议报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置设备发送的PIM协议报文的DSCP优先级 |
dscp dscp-value |
缺省情况下,设备发送的PIM协议报文的DSCP优先级为48 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后PIM的运行情况,通过查看显示信息验证配置的效果。
表2-53 PIM显示和维护
操作 |
命令 |
显示Register-Tunnel接口的相关信息 |
display interface [ register-tunnel [ interface-number ] ] [ brief [ description | down ] ] |
显示PIM-SM域中的BSR信息 |
display pim [ vpn-instance vpn-instance-name ] bsr-info |
显示PIM所使用的路由信息 |
display pim [ vpn-instance vpn-instance-name ] claimed-route [ source-address ] |
显示PIM-SM域中的C-RP信息 |
display pim [ vpn-instance vpn-instance-name ] c-rp [ local ] |
显示双向PIM的DF信息 |
display pim [ vpn-instance vpn-instance-name ] df-info [ rp-address ] |
显示接口上的PIM信息 |
display pim [ vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] |
显示PIM邻居信息 |
display pim [ vpn-instance vpn-instance-name ] neighbor [ neighbor-address | interface interface-type interface-number | verbose ] * |
显示PIM路由表的内容 |
display pim [ vpn-instance vpn-instance-name ] routing-table [ group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] | flags flag-value | fsm | incoming-interface interface-type interface-number | mode mode-type | outgoing-interface { exclude | include | match } interface-type interface-number | proxy | extranet { source-vpn-instance source-vpn-instance-name | source-public-instance | receive-vpn-instance receive-vpn-instance-name | receive-public-instance } ] * |
显示PIM-SM域中的RP信息 |
display pim [ vpn-instance vpn-instance-name ] rp-info [ group-address ] |
显示PIM协议报文的统计信息 |
display pim statistics |
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个PIM域采用DM方式。
· Host A和Host C为两个末梢网络中的组播信息接收者;Switch D通过Vlan-interface300接口与组播源(Source)所在的网络连接;Switch A通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface103接口连接Switch D;Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface101和Vlan-interface102接口连接Switch D。
· Switch A与末梢网络N1之间运行IGMPv2;Switch B和Switch C与末梢网络N2之间也运行IGMPv2。
图2-2 PIM-DM典型配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int103 |
192.168.1.1/24 |
|
Vlan-int103 |
192.168.1.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
|
Vlan-int101 |
192.168.2.2/24 |
|
Vlan-int101 |
192.168.2.1/24 |
|
Vlan-int102 |
192.168.3.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
|
|
|
Vlan-int102 |
192.168.3.1/24 |
|
|
|
按照组网图配置各接口的IP地址和子网掩码,并在PIM-DM域内的各交换机上配置OSPF协议。
(1) 使能IP组播路由,并使能PIM-DM和IGMP
# 在Switch A上使能IP组播路由,在接口Vlan-interface103上使能PIM-DM,并在其连接末梢网络的接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 103
[SwitchA-Vlan-interface103] pim dm
[SwitchA-Vlan-interface103] quit
Switch B和Switch C的配置与Switch A相似,配置过程略。
# 在Switch D上使能IP组播路由,并在各接口上使能PIM-DM。
<SwitchD> system-view
[SwitchD] multicast routing
[SwitchD-mrib] quit
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] pim dm
[SwitchD-Vlan-interface300] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim dm
[SwitchD-Vlan-interface103] quit
[SwitchD] interface vlan-interface 101
[SwitchD-Vlan-interface101] pim dm
[SwitchD-Vlan-interface101] quit
[SwitchD] interface vlan-interface 102
[SwitchD-Vlan-interface102] pim dm
[SwitchD-Vlan-interface102] quit
# 显示Switch D上PIM的配置信息。
[SwitchD] display pim interface
Interface: Vlan300
NbrCnt: 0
HelloInt: 30
DR priority: 1
DR address: 10.110.5.1 (local)
Interface: Vlan103
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.1.2 (local)
Interface: Vlan101
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.2.2 (local)
Interface: Vlan102
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.3.2 (local)
# 显示Switch D上PIM的邻居关系信息。
[SwitchD] display pim neighbor
Total pim neighbors: 3
Neighbor: 192.168.1.1
Interface: Vlan103
Uptime: 00:02:22
Expiry time: 00:01:27
DR priority: 1
Mode: N/A
Neighbor: 192.168.2.1
Interface: Vlan101
Uptime: 00:00:22
Expiry time: 00:01:29
DR priority: 3
Mode: N/A
Neighbor: 192.168.2.1
Interface: Vlan102
Uptime: 00:00:23
Expiry time: 00:01:31
DR priority: 5
Mode: N/A
假如Host A需要接收组播组G(225.1.1.1)的信息,当组播源S(10.110.5.100/24)向组播组G发送组播数据时,通过扩散生成SPT,SPT路径中各交换机(Switch A和Switch D)上都存在(S,G)表项,Host A向Switch A发送IGMP报告以加入组播组G,在Switch A上生成(*,G)表项。
# 显示Switch A上的PIM路由表信息。
[SwitchA] display pim routing-table
Total 1 (*, G) entry; 1 (S, G) entry
(*, 225.1.1.1)
Protocol: pim-dm, Flag: WC
UpTime: 00:04:25
Upstream interface: NULL
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:04:25, Expires: -
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: ACT
UpTime: 00:06:14
Upstream interface: Vlan-interface103
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: pim-dm, UpTime: 00:04:25, Expires: -
# 显示Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: LOC ACT
UpTime: 00:03:27
Upstream interface: Vlan-interface300
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstream interfaces: 2
1: Vlan-interface103
Protocol: pim-dm, UpTime: 00:03:27, Expires: -
2: Vlan-interface102
Protocol: pim-dm, UpTime: 00:03:27, Expires: -
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个PIM域采用SM非管理域方式。
· Host A和Host C为两个末梢网络中的组播信息接收者;Switch D通过Vlan-interface300接口与组播源(Source)所在网络连接;Switch A通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E;Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface103和Vlan-interface104接口连接Switch E。
· 将Switch E的Vlan-interface102接口配置为C-BSR和C-RP,其中C-RP所服务的组播组范围为225.1.1.0/24;在所有交换机上将Switch D的Vlan-interface101接口配置为静态RP,以对动态RP进行备份。
· Switch A与末梢网络N1之间运行IGMPv2;Switch B和Switch C与末梢网络N2之间也运行IGMPv2。
图2-3 PIM-SM非管理域配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int101 |
192.168.1.1/24 |
|
Vlan-int101 |
192.168.1.2/24 |
|
Vlan-int102 |
192.168.9.1/24 |
|
Vlan-int105 |
192.168.4.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
Switch E |
Vlan-int104 |
192.168.3.2/24 |
|
Vlan-int103 |
192.168.2.1/24 |
|
Vlan-int103 |
192.168.2.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
Vlan-int102 |
192.168.9.2/24 |
|
Vlan-int104 |
192.168.3.1/24 |
|
Vlan-int105 |
192.168.4.1/24 |
按照组网图配置各接口的IP地址和子网掩码,并在PIM-SM域内的各交换机上配置OSPF协议。
(1) 使能IP组播路由,并使能PIM-SM和IGMP
# 在Switch A上使能IP组播路由,在其连接末梢网络的接口Vlan-interface100上使能IGMP,并在其它接口上使能PIM-SM。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
Switch B和Switch C的配置与Switch A相似,Switch D和Switch E除了不需要在相应接口上使能IGMP外,其它的配置也与Switch A相似,配置过程略。
(2) 配置C-BSR、C-RP和静态RP
# 在Switch E上配置RP通告的服务范围,以及C-BSR和C-RP的位置,并指定静态RP。
<SwitchE> system-view
[SwitchE] acl basic 2005
[SwitchE-acl-ipv4-basic-2005] rule permit source 225.1.1.0 0.0.0.255
[SwitchE-acl-ipv4-basic-2005] quit
[SwitchE] pim
[SwitchE-pim] c-bsr 192.168.9.2
[SwitchE-pim] c-rp 192.168.9.2 group-policy 2005
[SwitchE-pim] static-rp 192.168.1.2
[SwitchE-pim] quit
# 在Switch A上配置静态RP。
[SwitchA] pim
[SwitchA-pim] static-rp 192.168.1.2
[SwitchA-pim] quit
Switch B、Switch C和Switch D的配置与Switch A相似,配置过程略。
# 显示Switch A的接口上的PIM信息。
[SwitchA] display pim interface
Interface: Vlan101
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.1.2
Interface: Vlan102
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.9.2
# 显示Switch A上PIM-SM域中的BSR信息。
[SwitchA] display pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:44
Elected BSR address: 192.168.9.2
Priority: 64
Hash mask length: 30
Uptime: 00:11:18
# 显示Switch E上PIM-SM域中的BSR信息。
[SwitchE] display pim bsr-info
Scope: non-scoped
State: Elected
Bootstrap timer: 00:01:44
Elected BSR address: 192.168.9.2
Priority: 64
Hash mask length: 30
Uptime: 00:11:18
Candidate BSR address: 192.168.9.2
Priority: 64
Hash mask length: 30
# 显示Switch A上所有组播组对应的RP信息。
[SwitchA] display pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: 225.1.1.0/24
RP address Priority HoldTime Uptime Expires
192.168.9.2 192 180 00:51:45 00:02:22
Static RP information:
RP address ACL Mode Preferred
192.168.1.2 ---- pim-sm No
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,整个PIM域采用SM管理域方式,划分为管理域1、管理域2和Global域,Switch B、Switch C和Switch D为各管理域的ZBR。
· Source 1和Source 2分别向组播组239.1.1.1发送内容不同的组播信息,Host A和Host B则分别只接收来自Source 1和Source 2的组播信息;Source 3向组播组224.1.1.1发送组播信息,Host C为其接收者。
· Switch B的Vlan-interface101接口为管理域1的C-BSR和C-RP,服务于239.0.0.0/8;Switch D的Vlan-interface105接口为管理域2的C-BSR和C-RP,服务于239.0.0.0/8;Switch F的Vlan-interface109为Global域的C-BSR和C-RP,服务于239.0.0.0/8以外的所有组播组。
· Switch A、Switch E和Switch I分别与各自所连接的接收者之间运行IGMPv2。
图2-4 PIM-SM管理域配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
192.168.1.1/24 |
Switch D |
Vlan-int105 |
10.110.5.2/24 |
|
Vlan-int101 |
10.110.1.1/24 |
|
Vlan-int108 |
10.110.7.1/24 |
Switch B |
Vlan-int200 |
192.168.2.1/24 |
|
Vlan-int107 |
10.110.8.1/24 |
|
Vlan-int101 |
10.110.1.2/24 |
Switch E |
Vlan-int400 |
192.168.4.1/24 |
|
Vlan-int103 |
10.110.2.1/24 |
|
Vlan-int104 |
10.110.4.2/24 |
|
Vlan-int102 |
10.110.3.1/24 |
|
Vlan-int108 |
10.110.7.2/24 |
Switch C |
Vlan-int300 |
192.168.3.1/24 |
Switch F |
Vlan-int109 |
10.110.9.1/24 |
|
Vlan-int104 |
10.110.4.1/24 |
|
Vlan-int107 |
10.110.8.2/24 |
|
Vlan-int105 |
10.110.5.1/24 |
|
Vlan-int102 |
10.110.3.2/24 |
|
Vlan-int103 |
10.110.2.2/24 |
Switch G |
Vlan-int500 |
192.168.5.1/24 |
|
Vlan-int106 |
10.110.6.1/24 |
|
Vlan-int109 |
10.110.9.2/24 |
Switch H |
Vlan-int110 |
10.110.10.1/24 |
Source 1 |
- |
192.168.2.10/24 |
|
Vlan-int106 |
10.110.6.2/24 |
Source 2 |
- |
192.168.3.10/24 |
Switch I |
Vlan-int600 |
192.168.6.1/24 |
Source 3 |
- |
192.168.5.10/24 |
|
Vlan-int110 |
10.110.10.2/24 |
|
|
|
按照组网图配置各接口的IP地址和子网掩码,并在PIM-SM域内的各交换机上配置OSPF协议。
(1) 使能IP组播路由,并使能PIM-SM和IGMP
# 在Switch A上使能IP组播路由,在接口Vlan-interface101上使能PIM-SM,并在其连接有接收者的接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
Switch E和Switch I的配置与Switch A相似,配置过程略。
# 在Switch B上使能IP组播路由,并在各接口上使能PIM-SM。
<SwitchB> system-view
[SwitchB] multicast routing
[SwitchB-mrib] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] pim sm
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 101
[SwitchB-Vlan-interface101] pim sm
[SwitchB-Vlan-interface101] quit
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] pim sm
[SwitchB-Vlan-interface102] quit
[SwitchB] interface vlan-interface 103
[SwitchB-Vlan-interface103] pim sm
[SwitchB-Vlan-interface103] quit
Switch C、Switch D、Switch F、Switch G和Switch H的配置与Switch B相似,配置过程略。
(2) 配置管理域边界
# 在Switch B上将接口Vlan-interface102和Vlan-interface103配置为管理域1的边界。
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] multicast boundary 239.0.0.0 8
[SwitchB-Vlan-interface102] quit
[SwitchB] interface vlan-interface 103
[SwitchB-Vlan-interface103] multicast boundary 239.0.0.0 8
[SwitchB-Vlan-interface103] quit
# 在Switch C上将接口Vlan-interface103和Vlan-interface106配置为管理域2的边界。
<SwitchC> system-view
[SwitchC] interface vlan-interface 103
[SwitchC-Vlan-interface103] multicast boundary 239.0.0.0 8
[SwitchC-Vlan-interface103] quit
[SwitchC] interface vlan-interface 106
[SwitchC-Vlan-interface106] multicast boundary 239.0.0.0 8
[SwitchC-Vlan-interface106] quit
# 在Switch D上将接口Vlan-interface107配置为管理域2的边界。
<SwitchD> system-view
[SwitchD] interface vlan-interface 107
[SwitchD-Vlan-interface107] multicast boundary 239.0.0.0 8
[SwitchD-Vlan-interface107] quit
(3) 配置C-BSR和C-RP
# 在Switch B上配置RP通告的服务范围,并将接口Vlan-interface101配置为管理域1的C-BSR和C-RP。
[SwitchB] acl basic 2001
[SwitchB-acl-ipv4-basic-2001] rule permit source 239.0.0.0 0.255.255.255
[SwitchB-acl-ipv4-basic-2001] quit
[SwitchB] pim
[SwitchB-pim] c-bsr 10.110.1.2 scope 239.0.0.0 8
[SwitchB-pim] c-rp 10.110.1.2 group-policy 2001
[SwitchB-pim] quit
# 在Switch D上配置RP通告的服务范围,并将接口Vlan-interface105配置为管理域2的C-BSR和C-RP。
[SwitchD] acl basic 2001
[SwitchD-acl-ipv4-basic-2001] rule permit source 239.0.0.0 0.255.255.255
[SwitchD-acl-ipv4-basic-2001] quit
[SwitchD] pim
[SwitchD-pim] c-bsr 10.110.5.2 scope 239.0.0.0 8
[SwitchD-pim] c-rp 10.110.5.2 group-policy 2001
[SwitchD-pim] quit
# 在Switch F上将接口Vlan-interface109配置为Global域的C-BSR和C-RP。
<SwitchF> system-view
[SwitchF] pim
[SwitchF-pim] c-bsr 10.110.9.1
[SwitchF-pim] c-rp 10.110.9.1
[SwitchF-pim] quit
# 显示Switch B上PIM-SM域中的BSR信息。
[SwitchB] display pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:44
Elected BSR address: 10.110.9.1
Priority: 64
Hash mask length: 30
Uptime: 00:01:45
Scope: 239.0.0.0/8
State: Elected
Bootstrap timer: 00:00:06
Elected BSR address: 10.110.1.2
Priority: 64
Hash mask length: 30
Uptime: 00:04:54
Candidate BSR address: 10.110.1.2
Priority: 64
Hash mask length: 30
# 显示Switch D上PIM-SM域中的BSR信息。
[SwitchD] display pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:44
Elected BSR address: 10.110.9.1
Priority: 64
Hash mask length: 30
Uptime: 00:01:45
Scope: 239.0.0.0/8
State: Elected
Bootstrap timer: 00:01:12
Elected BSR address: 10.110.5.2
Priority: 64
Hash mask length: 30
Uptime: 00:03:48
Candidate BSR address: 10.110.5.2
Priority: 64
Hash mask length: 30
# 显示Switch F上PIM-SM域中的BSR信息。
[SwitchF] display pim bsr-info
Scope: non-scoped
State: Elected
Bootstrap timer: 00:00:49
Elected BSR address: 10.110.9.1
Priority: 64
Hash mask length: 30
Uptime: 00:11:11
Candidate BSR address: 10.110.9.1
Priority: 64
Hash mask length: 30
# 显示Switch B上所有组播组对应的RP信息。
[SwitchB] display pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: 224.0.0.0/4
RP address Priority HoldTime Uptime Expires
10.110.9.1 192 180 00:03:39 00:01:51
Scope: 239.0.0.0/8
Group/MaskLen: 239.0.0.0/8
RP address Priority HoldTime Uptime Expires
10.110.1.2 (local) 192 180 00:07:44 00:01:51
# 显示Switch D上所有组播组对应的RP信息。
[SwitchD] display pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: 224.0.0.0/4
RP address Priority HoldTime Uptime Expires
10.110.9.1 192 180 00:03:42 00:01:48
Scope: 239.0.0.0/8
Group/MaskLen: 239.0.0.0/8
RP address Priority HoldTime Uptime Expires
10.110.5.2 (local) 192 180 00:06:54 00:02:41
# 显示Switch F上所有组播组对应的RP信息。
[SwitchF] display pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: 224.0.0.0/4
RP address Priority HoldTime Uptime Expires
10.110.9.1 (local) 192 180 00:00:32 00:01:58
· 网络中运行OSPF协议,整个PIM域采用BIDIR方式,Source 1和Source 2都向组播组225.1.1.1发送组播信息,Host A和Host B为组播信息的接收者。
· 将Switch C的Vlan-interface102接口配置为C-BSR,Loopback0接口配置为服务于双向PIM的C-RP。
· Switch B和Switch D分别与各自所连接的接收者之间运行IGMPv2。
图2-5 双向PIM典型配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
192.168.1.1/24 |
Switch D |
Vlan-int300 |
192.168.3.1/24 |
|
Vlan-int101 |
10.110.1.1/24 |
|
Vlan-int400 |
192.168.4.1/24 |
Switch B |
Vlan-int200 |
192.168.2.1/24 |
|
Vlan-int103 |
10.110.3.2/24 |
|
Vlan-int101 |
10.110.1.2/24 |
Source 1 |
- |
192.168.1.100/24 |
|
Vlan-int102 |
10.110.2.1/24 |
Source 2 |
- |
192.168.4.100/24 |
Switch C |
Vlan-int102 |
10.110.2.2/24 |
Receiver 1 |
- |
192.168.2.100/24 |
|
Vlan-int103 |
10.110.3.1/24 |
Receiver 2 |
- |
192.168.3.100/24 |
|
Loop0 |
1.1.1.1/32 |
|
|
|
按照组网图配置各接口的IP地址和子网掩码,并在双向PIM域内的各交换机上配置OSPF协议。
(1) 使能IP组播路由,并使能PIM-SM、双向PIM和IGMP
# 在Switch A上使能IP组播路由,在各接口上使能PIM-SM,并使能双向PIM。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] pim
[SwitchA-pim] bidir-pim enable
[SwitchA-pim] quit
# 在Switch B上使能IP组播路由,在其连接有接收者的接口Vlan-interface200上使能IGMP,在其它接口上使能PIM-SM,并使能双向PIM。
<SwitchB> system-view
[SwitchB] multicast routing
[SwitchB-mrib] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] igmp enable
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 101 [SwitchB-Vlan-interface101] pim sm
[SwitchB-Vlan-interface101] quit
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] pim sm
[SwitchB-Vlan-interface102] quit
[SwitchB] pim
[SwitchB-pim] bidir-pim enable
[SwitchB-pim] quit
# 在Switch C上使能IP组播路由,在各接口上使能PIM-SM,并使能双向PIM。
<SwitchC> system-view
[SwitchC] multicast routing
[SwitchC-mrib] quit
[SwitchC] interface vlan-interface 102
[SwitchC-Vlan-interface102] pim sm
[SwitchC-Vlan-interface102] quit
[SwitchC] interface vlan-interface 103
[SwitchC-Vlan-interface103] pim sm
[SwitchC-Vlan-interface103] quit
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] pim sm
[SwitchC-LoopBack0] quit
[SwitchC] pim
[SwitchC-pim] bidir-pim enable
# 在Switch D上使能IP组播路由,在其连接有接收者的接口Vlan-interface300上使能IGMP,在其它接口上使能PIM-SM,并使能双向PIM。
<SwitchD> system-view
[SwitchD] multicast routing
[SwitchD-mrib] quit
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] igmp enable
[SwitchD-Vlan-interface300] quit
[SwitchD] interface vlan-interface 400
[SwitchD-Vlan-interface400] pim sm
[SwitchD-Vlan-interface400] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim sm
[SwitchD-Vlan-interface103] quit
[SwitchD] pim
[SwitchD-pim] bidir-pim enable
[SwitchD-pim] quit
(2) 配置C-BSR和C-RP
# 在Switch C上将接口Vlan-interface102配置为C-BSR,并将接口Loopback0配置为服务于双向PIM的C-RP。
[SwitchC-pim] c-bsr 10.110.2.2
[SwitchC-pim] c-rp 1.1.1.1 bidir
[SwitchC-pim] quit
# 显示Switch A上双向PIM的DF信息。
[SwitchA] display pim df-info
RP address: 1.1.1.1
Interface: Vlan-interface100
State : Win DF preference: 100
DF metric : 2 DF uptime : 01:08:50
DF address: 192.168.1.1 (local)
Interface: Vlan-interface101
State : Lose DF preference: 100
DF metric : 1 DF uptime : 01:07:49
DF address: 10.110.1.2
# 显示Switch B上双向PIM的DF信息。
[SwitchB] display pim df-info
RP address: 1.1.1.1
Interface: Vlan-interface200
State : Win DF preference: 100
DF metric : 1 DF uptime : 01:24:09
DF address: 192.168.2.1 (local)
Interface: Vlan-interface200
State : Win DF preference: 100
DF metric : 1 DF uptime : 01:24:09
DF address: 10.110.1.2 (local)
Interface: Vlan-interface102
State : Lose DF preference: 0
DF metric : 0 DF uptime : 01:23:12
DF address: 10.110.2.2
# 显示Switch C上双向PIM的DF信息。
[SwitchC] display pim df-info
RP address: 1.1.1.1
Interface: loopback0
State : - DF preference: -
DF metric : - DF uptime : -
DF address: -
Interface: Vlan-interface102
State : Win DF preference: 0
DF metric : 0 DF uptime : 01:06:07
DF address: 10.110.2.2 (local)
Interface: Vlan-interface103
State : Win DF preference: 0
DF metric : 0 DF uptime : 01:06:07
DF address: 10.110.3.1 (local)
# 显示Switch D上双向PIM的DF信息。
[SwitchD] display pim df-info
RP address: 1.1.1.1
Interface: Vlan-interface300
State : Win DF preference: 100
DF metric : 1 DF uptime : 01:19:53
DF address: 192.168.3.1 (local)
Interface: Vlan-interface400
State : Win DF preference: 100
DF metric : 1 DF uptime : 00:39:34
DF address: 192.168.4.1 (local)
Interface: Vlan-interface103
State : Lose DF preference: 0
DF metric : 0 DF uptime : 01:21:40
DF address: 10.110.3.1
# 显示Switch A上组播转发的DF信息。
[SwitchA] display multicast forwarding df-info
Total 1 RP, 1 matched
00001. RP address: 1.1.1.1
Flags: 0x0
Uptime: 00:08:32
RPF interface: Vlan-interface101
List of 1 DF interfaces:
1: Vlan-interface100
# 显示Switch B上组播转发的DF信息。
[SwitchB] display multicast forwarding df-info
Total 1 RP, 1 matched
00001. RP address: 1.1.1.1
Flags: 0x0
Uptime: 00:06:24
RPF interface: Vlan-interface102
List of 2 DF interfaces:
1: Vlan-interface101
2: Vlan-interface200
# 显示Switch C上组播转发的DF信息。
[SwitchC] display multicast forwarding df-info
Total 1 RP, 1 matched
00001. RP address: 1.1.1.1
Flags: 0x0
Uptime: 00:07:21
RPF interface: LoopBack0
List of 2 DF interfaces:
1: Vlan-interface102
2: Vlan-interface103
# 显示Switch D上组播转发的DF信息。
[SwitchD] display multicast forwarding df-info
Total 1 RP, 1 matched
00001. RP address: 1.1.1.1
Flags: 0x0
Uptime: 00:05:12
RPF interface: Vlan-interface103
List of 2 DF interfaces:
1: Vlan-interface300
2: Vlan-interface400
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个PIM域采用SSM方式。
· Host A和Host C为两个末梢网络中的组播信息接收者;Switch D通过Vlan-interface300接口与组播源(Source)所在网络连接;Switch A通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface101接口和Vlan-interface102接口分别连接Switch D和Switch E;Switch B和Switch C通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface103和Vlan-interface104接口连接Switch E。
· SSM组播组的范围是232.1.1.0/24。
· Switch A与末梢网络N1之间运行IGMPv3;Switch B和Switch C与末梢网络N2之间也运行IGMPv3。
图2-6 PIM-SSM典型配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int101 |
192.168.1.1/24 |
|
Vlan-int101 |
192.168.1.2/24 |
|
Vlan-int102 |
192.168.9.1/24 |
|
Vlan-int105 |
192.168.4.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
Switch E |
Vlan-int104 |
192.168.3.2/24 |
|
Vlan-int103 |
192.168.2.1/24 |
|
Vlan-int103 |
192.168.2.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
Vlan-int102 |
192.168.9.2/24 |
|
Vlan-int104 |
192.168.3.1/24 |
|
Vlan-int105 |
192.168.4.1/24 |
按照组网图配置各接口的IP地址和子网掩码,并在PIM-SSM域内的各交换机上配置OSPF协议。
(1) 使能IP组播路由,并使能PIM-SM和IGMP
# 在Switch A上使能IP组播路由,在其连接末梢网络的接口Vlan-interface100上使能IGMP,且配置其版本为3;并在其它接口上使能PIM-SM。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
Switch B和Switch C的配置与Switch A相似,Switch D和Switch E除了不需要在相应接口上使能IGMP外,其它的配置也与Switch A相似,配置过程略。
(2) 配置SSM组播组的地址范围
# 在Switch A上配置SSM组播组地址范围为232.1.1.0/24。
[SwitchA] acl basic 2000
[SwitchA-acl-ipv4-basic-2000] rule permit source 232.1.1.0 0.0.0.255
[SwitchA-acl-ipv4-basic-2000] quit
[SwitchA] pim
[SwitchA-pim] ssm-policy 2000
[SwitchA-pim] quit
Switch B、Switch C、Switch D和Switch E的配置与Switch A相似,配置过程略。
# 显示Switch A上PIM的配置信息。
[SwitchA] display pim interface
Interface: Vlan101
NbrCnt: 1
HelloInt: 30
DR priority: 1
DR address: 192.168.1.2
Interface: Vlan102
NbrCnt: 0
HelloInt: 30
DR priority: 1
DR address: 192.168.9.2
假如Host A需要接收指定组播源S(10.110.5.100/24)发往组播组G(232.1.1.1)的信息,Switch A会向组播源方向构造SPT,SPT路径中的交换机(Switch A和Switch D)上生成(S,G)表项,而SPT路径之外的交换机(Switch E)上没有组播路由项。
# 显示Switch A上的PIM路由表信息。
[SwitchA] display pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag: ACT
UpTime: 00:13:25
Upstream interface: Vlan-interface101
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:13:25, Expires: 00:03:25
# 查看Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag: LOC
UpTime: 00:12:05
Upstream interface: Vlan-interface300
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstream interfaces: 1
1: Vlan-interface105
Protocol: pim-ssm, UpTime: 00:12:05, Expires: 00:03:25
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个PIM域采用SM非管理域方式。
· Host A为组播接收者;Switch C通过Vlan-interface10接口与组播源(Source)所在的网络连接;Switch A和Switch B形成M-LAG系统,其中Switch A通过Vlan-interface20接口连接Switch C,Switch B通过Vlan-interface30接口连接Switch C;Switch A和Switch B与下游交换机Switch D形成M-LAG系统;Switch D与组播接收者相连。
· Switch A和Switch B的M-LAG接口上,允许VLAN 100通过,并在各自的Vlan-interface 100接口上配置IGMPv2协议。
· Switch A和Switch B上使能IP组播路由和IGMP Snooping功能。
· Switch A和Switch B的Vlan-interface 100接口配置为分布式DR接口,保证Switch A和Switch B均为DR,都能向RP方向发送加入报文。
· Switch A和Switch B上,通过一条独立的三层链路建立PIM邻居,并作为M-LAG的keepalive链路使用。
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int20 |
20.0.0.2/24 |
Switch C |
Vlan-int10 |
10.0.0.1/24 |
|
Vlan-int100 |
100.0.0.1/24 |
|
Vlan-int20 |
20.0.0.1/24 |
|
GE1/0/4 |
200.0.0.1/24 |
|
Vlan-int30 |
30.0.0.1/24 |
|
Loop0 |
1.1.1.1 |
|
|
|
Switch B |
Vlan-int30 |
30.0.0.2/24 |
|
|
|
|
Vlan-int100 |
100.0.0.2/24 |
|
|
|
|
GE1/0/4 |
200.0.0.2/24 |
|
|
|
|
Loop0 |
2.2.2.2 |
|
|
|
(1) 配置IP地址和单播路由协议
请按照上图配置各接口的IP地址和子网掩码,并在PIM-SM域内的各交换机上配置OSPF协议,具体配置略。
(2) 配置M-LAG
# 配置M-LAG系统。
<SwitchA> system-view
[SwitchA] m-lag system-mac 1-1-1
[SwitchA] m-lag system-number 1
[SwitchA] m-lag system-priority 123
# 配置Keepalive报文的目的IP地址和源IP地址。
[SwitchA] m-lag keepalive ip destination 200.0.0.2 source 200.0.0.1
# 配置Keepalive链路接口为保留接口。
[SwitchA] m-lag mad exclude interface gigabitethernet 1/0/4
# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 1
[SwitchA-Bridge-Aggregation1] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation1] quit
# 将接口GigabitEthernet1/0/1加入到聚合组1中。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-aggregation group 1
[SwitchA-GigabitEthernet1/0/1] quit
# 创建二层聚合接口2,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 2
[SwitchA-Bridge-Aggregation2] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation2] quit
# 将接口GigabitEthernet1/0/2加入到聚合组2中。
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-aggregation group 2
[SwitchA-GigabitEthernet1/0/2] quit
# 配置二层聚合接口1为Trunk端口,并允许VLAN 100的报文通过,并配置该接口为peer-link接口。
[SwitchA] interface bridge-aggregation 1
[SwitchA-Bridge-Aggregation1] port link-type trunk
[SwitchA-Bridge-Aggregation1] port trunk permit vlan 100
[SwitchA-Bridge-Aggregation1] port m-lag peer-link 1
[SwitchA-Bridge-Aggregation1] quit
# 配置二层聚合接口2为Trunk端口,并允许VLAN 100的报文通过,并配置该接口为M-LAG接口。
[SwitchA] interface bridge-aggregation 2
[SwitchA-Bridge-Aggregation2] port link-type trunk
[SwitchA-Bridge-Aggregation2] port trunk permit vlan 100
[SwitchA-Bridge-Aggregation2] port m-lag group 1
[SwitchA-Bridge-Aggregation2] quit
Switch B的配置与Switch A相似,配置过程略。
(3) 配置VRRP
# 在Switch A的Vlan-interface 100接口上配置VRRP。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] vrrp vrid 1 virtual-ip 100.0.0.10
[SwitchA-Vlan-interface100] vrrp vrid 1 priority 100
[SwitchA-Vlan-interface100] quit
Switch B的配置与Switch A相似,配置过程略。
(4) 配置OSPF接口的开销值
# 在Switch A上配置Vlan-interface 100接口的OSPF开销值为60000。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ospf cost 60000
Switch B的配置与Switch A相似,配置过程略。
(5) 使能IP组播路由,并使能PIM-SM和IGMP
# 在Switch C上使能IP组播路由,并在各个接口上使能PIM-SM。
<SwitchC> system-view
[SwitchC] multicast routing
[SwitchC-mrib] quit
[SwitchC] interface vlan-interface 10
[SwitchC-Vlan-interface10] pim sm
[SwitchC-Vlan-interface10] quit
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] pim sm
[SwitchC-Vlan-interface20] quit
[SwitchC] interface vlan-interface 30
[SwitchC-Vlan-interface30] pim sm
[SwitchC-Vlan-interface30] quit
# 在Switch A上使能IP组播路由和IGMP Snooping功能,在VLAN 100中开启PIM Snooping和IGMP Snoping代理功能,在其连接末梢网络的接口Vlan-interface100上使能IGMP和PIM,并在其它接口上使能PIM-SM。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping proxy enable
[SwitchA-vlan100] pim-snooping enable
[SwitchA-vlan100] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 20
[SwitchA-Vlan-interface20] pim sm
[SwitchA-Vlan-interface20] quit
[SwitchA] interface gigabitethernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] pim sm
[SwitchA] interface loopback 0
[SwitchA-LoopBack0] pim sm
[SwitchA-LoopBack0] quit
Switch B的配置与Switch A相似,配置过程略。
(6) 配置C-BSR和C-RP
# 在Switch A上配置LoopBack0接口地址为C-RP和C-BSR。
<SwitchA> system-view
[SwitchA] pim
[SwitchA-pim] c-rp 1.1.1.1
[SwitchA-pim] c-bsr 1.1.1.1
[SwitchA-pim] quit
# 在Switch B上配置LoopBack0接口地址为C-RP和C-BSR。
<SwitchB> system-view
[SwitchB] pim
[SwitchB-pim] c-rp 2.2.2.2
[SwitchB-pim] c-bsr 2.2.2.2
[SwitchB-pim] quit
# 显示Switch A上的IGMP组播组信息。
<SwitchA> display igmp group
IGMP groups in total: 1
Vlan-interface100(100.0.0.1):
IGMP groups reported in total: 1
Group address Last reporter Uptime Expires
225.0.0.1 100.0.0.123 00:00:09 00:04:10
# 显示Switch B上的IGMP组播组信息。
<SwitchB> display igmp group
IGMP groups in total: 1
Vlan-interface100(100.0.0.2):
IGMP groups reported in total: 1
Group address Last reporter Uptime Expires
225.0.0.1 100.0.0.123 00:00:25 00:04:07
# 显示Switch A上的PIM路由表项。
<SwitchA> display pim routing-table
Total 1 (*, G) entries; 1 (S, G) entries
(*, 225.0.0.1)
RP: 2.2.2.2
Protocol: pim-sm, Flag: WC
UpTime: 00:34:19
Upstream interface: Vlan-interface20
Upstream neighbor: 20.0.0.1
RPF prime neighbor: 20.0.0.1
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:05:24, Expires: -
(10.0.0.2, 225.0.0.1)
RP: 2.2.2.2
Protocol: pim-sm, Flag: SPT ACT 2MVPN
UpTime: 00:08:03
Upstream interface: Vlan-interface20
Upstream neighbor: 20.0.0.1
RPF prime neighbor: 20.0.0.1
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:08:03, Expires: -
# 显示Switch B上的PIM路由表项。
<SwitchB> display pim routing-table
Total 1 (*, G) entries; 1 (S, G) entries
(*, 225.0.0.1)
RP: 2.2.2.2 (local)
Protocol: pim-sm, Flag: WC
UpTime: 00:06:05
Upstream interface: Register-Tunnel0
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface information:
Total number of downstream interfaces: 2
1: Vlan-interface30
Protocol: pim-sm, UpTime: 00:05:31, Expires: 00:02:53
2: Vlan-interface100
Protocol: igmp, UpTime: 00:06:05, Expires: -
(10.0.0.2, 225.0.0.1)
RP: 2.2.2.2 (local)
Protocol: pim-sm, Flag: SPT 2MSDP ACT 2MVPN
UpTime: 00:05:58
Upstream interface: Vlan-interface30
Upstream neighbor: 30.0.0.1
RPF prime neighbor: 30.0.0.1
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:05:31, Expires: -
# 显示Switch A上的组播转发表项。
<SwitchA> display multicast forwarding-table
Total 1 entries, 1 matched
00001. (10.0.0.2, 225.0.0.1)
Flags: 0x0
Uptime: 00:00:55, Timeout in: 00:03:18
Incoming interface: Vlan-interface20
List of 1 outgoing interfaces:
1: Vlan-interface100
Matched 1293 packets(36204 bytes), Wrong If 0 packets
Forwarded 1291 packets(36148 bytes)
# 显示Switch B上的组播转发表项。
<SwitchB> display multicast forwarding-table
Total 1 entries, 1 matched
00001. (10.0.0.2, 225.0.0.1)
Flags: 0x0
Uptime: 00:00:53, Timeout in: 00:03:27
Incoming interface: Vlan-interface30
List of 1 outgoing interfaces:
1: Vlan-interface100
Matched 1272 packets(35616 bytes), Wrong If 0 packets
Forwarded 1269 packets(35532 bytes)
· 网络中运行OSPF协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个PIM域采用SM非管理域方式。
· Host A为组播接收者,Source为组播源。
· Switch A和Switch B组成M-LAG系统;Switch C和Switch D组成M-LAG系统。
· Switch A和Switch B连接Switch F的M-LAG接口允许VLAN 100通过,并在各自的Vlan-interface100接口上配置IGMP协议。
· Switch A和Switch B与Switch C和Switch D互连的M-LAG接口允许VLAN 200通过,并在各自的Vlan-interface200接口上配置PIM协议。
· Switch C和Switch D连接Switch E的M-LAG接口允许VLAN 300通过,并在各自的Vlan-interface300接口上配置PIM协议。
· Switch A、Switch B、Switch C和Switch D上均使能IP组播路由和IGMP Snooping功能。
· Switch A、Switch B的Vlan-interface100和Vlan-interface200接口配置为DR接口,保证Switch A和Switch B均为DR,均可以向RP发送加入报文。
· Switch C、Switch D的Vlan-interface200和Vlan-interface300接口配置为DR接口,保证Switch C和Switch D均为DR,均可以向RP发送加入报文。
· 连接组播源的Switch E、连接组播接收者的Switch F为二层交换机,仅需将接口配置为Trunk端口,并分别允许VLAN 300和VLAN 100通过,无需执行组播相关配置。
图2-7 三层组播支持多级M-LAG级联配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
100.1.1.1/24 |
Switch C |
Vlan-int200 |
200.1.1.3/24 |
|
Vlan-int200 |
200.1.1.1/24 |
|
Vlan-int300 |
30.1.1.3/24 |
|
GE1/0/2 |
45.1.1.1/24 |
|
GE1/0/2 |
12.1.1.3/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
3.3.3.3/32 |
Switch B |
Vlan-int100 |
100.1.1.2/24 |
Switch D |
Vlan-int200 |
200.1.1.4/24 |
|
Vlan-int200 |
200.1.1.2/24 |
|
Vlan-int300 |
30.1.1.4/24 |
|
GE1/0/2 |
45.1.1.2/24 |
|
GE1/0/2 |
12.1.1.4/24 |
|
Loop0 |
2.2.2.2/32 |
|
Loop0 |
4.4.4.4/32 |
Switch E |
Vlan-int300 |
30.1.1.5/24 |
|
|
|
|
Loop0 |
5.5.5.5/32 |
|
|
|
(1) 配置IP地址和单播路由协议
请按照图2-7配置各接口的IP地址和子网掩码,并在PIM-SM域内的各交换机上配置OSPF协议,具体配置略。
(2) 配置M-LAG
# 配置M-LAG系统。
<SwitchA> system-view
[SwitchA] m-lag system-mac 1-1-1
[SwitchA] m-lag system-number 1
[SwitchA] m-lag system-priority 123
# 配置Keepalive报文的目的IP地址和源IP地址。
[SwitchA] m-lag keepalive ip destination 45.1.1.2 source 45.1.1.1
# 配置Keepalive链路接口为保留接口。
[SwitchA] m-lag mad exclude interface gigabitethernet 1/0/2
# 创建二层聚合接口1,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 1
[SwitchA-Bridge-Aggregation1] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation1] quit
# 将接口GigabitEthernet1/0/3加入到聚合组1中。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] port link-aggregation group 1
[SwitchA-GigabitEthernet1/0/3] quit
# 创建二层聚合接口2,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 2
[SwitchA-Bridge-Aggregation2] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation2] quit
# 将接口GigabitEthernet1/0/1加入到聚合组2中。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-aggregation group 2
[SwitchA-GigabitEthernet1/0/1] quit
# 创建二层聚合接口3,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation3] quit
# 将接口GigabitEthernet1/0/4加入到聚合组3中。
[SwitchA] interface gigabitethernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] port link-aggregation group 3
[SwitchA-GigabitEthernet1/0/4] quit
# 将接口GigabitEthernet1/0/5加入到聚合组3中。
[SwitchA] interface gigabitethernet 1/0/5
[SwitchA-GigabitEthernet1/0/5] port link-aggregation group 3
[SwitchA-GigabitEthernet1/0/5] quit
# 配置二层聚合接口1为Trunk端口,允许所有的报文通过,并配置该接口为peer-link接口。
[SwitchA] interface bridge-aggregation 1
[SwitchA-Bridge-Aggregation1] port link-type trunk
[SwitchA-Bridge-Aggregation1] port trunk permit vlan all
[SwitchA-Bridge-Aggregation1] port m-lag peer-link 1
[SwitchA-Bridge-Aggregation1] quit
# 配置二层聚合接口2为Trunk端口,允许VLAN 100的报文通过,并配置该接口为M-LAG接口。
[SwitchA] interface bridge-aggregation 2
[SwitchA-Bridge-Aggregation2] port link-type trunk
[SwitchA-Bridge-Aggregation2] port trunk permit vlan 100
[SwitchA-Bridge-Aggregation2] port m-lag group 1
[SwitchA-Bridge-Aggregation2] quit
# 配置二层聚合接口3为Trunk端口,允许VLAN 200的报文通过,并配置该接口为M-LAG接口。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] port link-type trunk
[SwitchA-Bridge-Aggregation3] port trunk permit vlan 200
[SwitchA-Bridge-Aggregation3] port m-lag group 2
[SwitchA-Bridge-Aggregation3] quit
Switch B、Switch C和Switch D的配置与Switch A相似,配置过程略。
(3) 使能IP组播路由,并使能PIM-SM和IGMP
# 在Switch A上使能IP组播路由和IGMP Snooping功能,在其连接末梢网络的接口Vlan-interface100上使能IGMP和PIM,并在其它接口上使能PIM-SM。
<SwitchA> system-view
[SwitchA] multicast routing
[SwitchA-mrib] quit
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping proxy enable
[SwitchA-vlan100] pim-snooping enable
[SwitchA-vlan100] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-Vlan-interface200] pim sm
[SwitchA-Vlan-interface200] quit
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] pim sm
[SwitchA] interface loopback 0
[SwitchA-LoopBack0] pim sm
[SwitchA-LoopBack0] quit
Switch B、Switch C和Switch D的配置与Switch A相似,配置过程略。
(4) 配置C-BSR和C-RP
# 在Switch A上配置LoopBack0接口地址为C-RP和C-BSR。
[SwitchA] pim
[SwitchA-pim] c-rp 1.1.1.1
[SwitchA-pim] c-bsr 1.1.1.1
[SwitchA-pim] quit
(5) 在Switch E上配置Trunk端口,使得组播流量或IGMP加入报文在VLAN内广播
# 创建二层聚合接口17,并配置该接口为动态聚合模式。
<SwitchE> system-view
[SwitchE] interface bridge-aggregation 17
[SwitchE-Bridge-Aggregation17] link-aggregation mode dynamic
[SwitchE-Bridge-Aggregation17] quit
# 将接口GigabitEthernet1/0/1和GigabitEthernet1/0/2加入到聚合组17中。
[SwitchE] interface gigabitethernet 1/0/1
[SwitchE-GigabitEthernet1/0/1] port link-aggregation group 17
[SwitchE-GigabitEthernet1/0/1] quit
[SwitchE] interface gigabitethernet 1/0/2
[SwitchE-GigabitEthernet1/0/2] port link-aggregation group 17
[SwitchE-GigabitEthernet1/0/2] quit
# 配置二层聚合接口17为Trunk端口,允许VLAN 300的报文通过。
[SwitchE] interface bridge-aggregation 17
[SwitchE-Bridge-Aggregation17] port link-type trunk
[SwitchE-Bridge-Aggregation17] port trunk permit vlan 300
[SwitchE-Bridge-Aggregation17] quit
# 将接口GigabitEthernet1/0/3配置为Trunk端口,允许VLAN 300的报文通过。
[SwitchE] interface gigabitethernet 1/0/3
[SwitchE-GigabitEthernet1/0/3] port link-type trunk
[SwitchE-GigabitEthernet1/0/3] port trunk permit vlan 300
[SwitchE-GigabitEthernet1/0/3] quit
Switch F的配置与Switch E相似,配置过程略。
# 显示Switch A上的PIM路由表项。
<SwitchA> display pim routing-table
Total 1 (*, G) entries; 1 (S, G) entries
(*, 225.0.0.1)
RP: 2.2.2.2
Protocol: pim-sm, Flag: WC
UpTime: 00:34:19
Upstream interface: Vlan-interface200
Upstream neighbor: 200.1.1.4
RPF prime neighbor: 200.1.1.4
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:05:24, Expires: -
(10.0.0.2, 225.0.0.1)
RP: 2.2.2.2
Protocol: pim-sm, Flag: SPT ACT 2MVPN
UpTime: 00:08:03
Upstream interface: Vlan-interface200
Upstream neighbor: 200.1.1.4
RPF prime neighbor: 200.1.1.4
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:08:03, Expires: -
# 显示Switch B上的PIM路由表项。
<SwitchB> display pim routing-table
Total 1 (*, G) entries; 1 (S, G) entries
(*, 225.0.0.1)
RP: 2.2.2.2 (local)
Protocol: pim-sm, Flag: WC
UpTime: 00:06:05
Upstream interface: Register-Tunnel0
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:06:05, Expires: -
(10.0.0.2, 225.0.0.1)
RP: 2.2.2.2 (local)
Protocol: pim-sm, Flag: SPT 2MSDP ACT 2MVPN
UpTime: 00:05:58
Upstream interface: Vlan-interface200
Upstream neighbor: 200.0.0.4
RPF prime neighbor: 200.0.0.4
Downstream interface information:
Total number of downstream interfaces: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:05:31, Expires: -
# 显示Switch A上的组播转发表项。
<SwitchA> display multicast forwarding-table
Total 1 entries, 1 matched
00001. (10.0.0.2, 225.0.0.1)
Flags: 0x0
Uptime: 00:00:55, Timeout in: 00:03:18
Incoming interface: Vlan-interface200
List of 1 outgoing interfaces:
1: Vlan-interface100
Matched 1293 packets(36204 bytes), Wrong If 0 packets
Forwarded 1291 packets(36148 bytes)
# 显示Switch B上的组播转发表项。
<SwitchB> display multicast forwarding-table
Total 1 entries, 1 matched
00001. (10.0.0.2, 225.0.0.1)
Flags: 0x0
Uptime: 00:00:53, Timeout in: 00:03:27
Incoming interface: Vlan-interface200
List of 1 outgoing interfaces:
1: Vlan-interface100
Matched 1272 packets(35616 bytes), Wrong If 0 packets
Forwarded 1269 packets(35532 byte)
网络中各设备(包括直连组播源或接收者的设备)上都没有组播转发项,也就是说无法正确建立组播分发树,客户端无法接收组播数据。
· 当全网运行PIM-DM时,组播数据由直连组播源的第一跳设备扩散到直连客户端的最后一跳设备。无论组播数据扩散到哪一台设备,只有该设备存在到达组播源的路由,才会创建(S,G)表项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-DM,该设备就无法创建(S,G)表项。
· 当全网运行PIM-SM时,设备在准备加入SPT时,只有存在到达组播源的路由,才会创建(S,G)表项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-SM,该设备就无法创建(S,G)表项。
· 对于某个RPF检查对象,在现存的单播路由表中查找到达该对象的最优路由,该路由的出接口作为RPF接口,下一跳作为RPF邻居。RPF接口完全依赖于现存的单播路由,并且与PIM本身无关。RPF接口上必须使能PIM,而且RPF邻居也必须是PIM邻居。如果RPF接口或RPF邻居所在设备上没有使能PIM,必然使组播分发树无法正确建立,导致组播数据转发异常。
· Hello报文并不携带PIM的模式信息,所以运行PIM的设备无法掌握自己的PIM邻居运行的是何种模式的PIM。如果RPF接口和RPF邻居所在设备的对应接口没有使能相同模式的PIM,必然使组播分发树无法正确建立,导致组播数据转发异常。
· 全网必须运行相同模式的PIM。否则,组播分发树必然无法正确建立,导致组播数据转发异常。
(1) 检查单播路由。使用命令display ip routing-table命令检查是否有到达组播源或RP的单播路由。
(2) 检查接口上是否使能了PIM,尤其是RPF接口上是否使能了PIM。通过命令display pim interface命令查看接口上的PIM信息。若接口上未使能PIM,请使用pim dm或pim sm命令使能PIM-DM或PIM-SM。
(3) 检查RPF邻居是否是PIM邻居。通过display pim neighbor命令查看PIM邻居的信息。
(4) 检查直连组播源或接收者的设备接口上是否使能了PIM和IGMP。
(5) 检查PIM模式是否一致。通过命令display pim interface verbose检查RPF接口和RPF邻居所在设备的对应接口上是否使能了相同模式的PIM。
(6) 检查全网各设备上的PIM模式是否一致。通过命令display current-configuration查看接口上的PIM模式信息,确保全网所有设备配置有相同模式的PIM。如果都配置为PIM-SM,则还需检查BSR以及C-RP的配置是否正确。
组播数据可以到达中间设备,但无法到达最后一跳设备。中间设备某接口上收到组播数据,但PIM路由表中没有创建相应的(S,G)表项。
· 命令multicast boundary用于在接口上设置组播转发边界,如果组播数据无法通过该边界,PIM将无法创建路由项。
· 此外,source-policy命令用于过滤接收到的组播数据报文。如果组播数据报文无法通过该命令中的ACL规则,PIM也无法创建路由项。
(1) 检查组播转发边界的配置。通过命令display current-configuration查看组播转发边界上的设置,使用multicast boundary命令更改组播转发边界的设置,使组播数据能够通过该边界。
(2) 检查组播过滤器配置。通过命令display current-configuration查看组播过滤器的配置,更改source-policy命令的ACL规则,使组播数据的源/组地址通过ACL过滤。
RPT无法正确建立,或者RP无法加入到达组播源的SPT。
· RP是PIM-SM网络的核心,为特定的组播组服务,网络中可以同时存在多个RP。必须保证所有设备上的RP信息完全一致,并且相同的组播组映射到相同的RP,否则将导致组播数据转发异常。
· 如果使用了静态RP,必须在全网所有设备上配置完全相同的静态RP,否则将导致组播数据转发异常。
(1) 检查是否有到达RP的单播路由。通过命令display ip routing-table查看各设备上是否有到达RP的单播路由。
(2) 检查动态RP的信息。通过命令display pim rp-info查看各设备上的RP信息是否一致。
(3) 检查静态RP的配置。通过命令display pim rp-info查看全网所有设备上的静态RP配置是否完全相同。
C-RP无法向BSR单播通告报文,BSR没有发布包含C-RP的自举报文,BSR上没有到达各C-RP的单播路由,RPT无法正确建立,或者DR无法向RP进行源注册。
· C-RP周期性地向BSR单播宣告报文,如果C-RP没有到达BSR的单播路由就无法发送宣告报文,BSR就收不到C-RP宣告报文,也就不会发布包含该C-RP的自举报文。
· 另外,如果BSR没有到达C-RP的单播路由,就会丢弃C-RP发来的宣告报文,也不会发布包含该C-RP的自举报文。
· RP是PIM-SM网络的核心。必须保证全网所有设备的RP信息完全一致,并且特定的组G映射到相同的RP,以及存在到达RP的单播路由。
(1) 检查是否有到各C-RP、BSR的单播路由。通过命令display ip routing-table查看各设备上是否有到达C-RP和BSR的路由,以及C-RP和BSR之间的路由是否可达。确保各C-RP上存在到达BSR的路由,BSR上存在到达各C-RP的路由,全网所有设备上存在到达C-RP的路由。
(2) 检查RP和BSR信息。PIM-SM协议需要有RP和BSR的支持,首先使用命令display pim bsr-info查看各设备上是否有BSR的信息,使用display pim rp-info命令查看各设备上的RP信息是否正确。
(3) 检查PIM邻居关系。通过命令display pim neighbor查看各设备之间是否正确建立了邻居关系。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!