15-IPv6 PIM配置
本章节下载: 15-IPv6 PIM配置 (1.00 MB)
IPv6 PIM(IPv6 Protocol Independent Multicast,IPv6协议无关组播)协议利用IPv6单播静态路由或者任意IPv6单播路由协议所生成的IPv6单播路由表为IPv6组播提供路由。IPv6组播路由与所采用的IPv6单播路由协议无关,只要能够通过IPv6单播路由协议产生相应的IPv6组播路由表项即可。IPv6 PIM借助RPF(Reverse Path Forwarding,逆向路径转发)机制创建IPv6组播路由表项,实现对IPv6组播报文的转发。有关RPF的详细介绍,请参见“IP组播配置指导”中的“IPv6组播路由与转发”。
根据实现机制的不同,IPv6 PIM分为以下几种模式:
· IPv6 PIM-DM(IPv6 Protocol Independent Multicast-Dense Mode,IPv6协议无关组播—密集模式)
· IPv6 PIM-SM(IPv6 Protocol Independent Multicast-Sparse Mode,IPv6协议无关组播—稀疏模式)
· IPv6 PIM-SSM(IPv6 Protocol Independent Multicast Source-Specific Multicast,IPv6协议无关组播-指定源组播)
为了描述方便,本文中把由支持IPv6 PIM协议的组播设备所组成的网络简称为“IPv6 PIM域”。
IPv6 PIM-DM属于密集模式的IPv6组播路由协议,使用“推(Push)模式”传送IPv6组播数据,通常适用于IPv6组播组成员相对比较密集的小型网络。IPv6 PIM-DM假设网络中的所有分支都有IPv6组播接收者,于是先将IPv6组播数据扩散至整个网络,然后将没有接收者的分支剪枝掉,只保留有接收者的分支。当被剪枝的分支上出现了接收者时,再使用嫁接机制将该分支恢复。
一般说来,密集模式下数据包的转发路径是以IPv6组播源为“根”、IPv6组播组成员为“叶子”的一棵转发树,由于该树使用的是从IPv6组播源到接收者的最短路径,因此也称为SPT(Shortest Path Tree,最短路径树)。
IPv6 PIM-DM工作机制包括邻居发现、构建SPT、嫁接、断言。
在IPv6 PIM域中,设备上每个运行了IPv6 PIM协议的接口通过定期向本网段的所有IPv6 PIM设备组播IPv6 PIM Hello报文(以下简称Hello报文),以发现IPv6 PIM邻居,维护各设备之间的IPv6 PIM邻居关系,从而构建和维护SPT。
构建SPT的过程也就是“扩散—剪枝”的过程:
(1) 在IPv6 PIM-DM域中,IPv6组播源S向IPv6组播组G发送IPv6组播报文时,首先对IPv6组播报文进行扩散:设备对该报文的RPF检查通过后,便创建一个(S,G)表项,并将该报文向网络中的所有下游节点转发。经过扩散,IPv6 PIM-DM域内的每个设备上都会创建(S,G)表项。
(2) 然后对那些下游没有接收者的节点进行剪枝:由没有接收者的下游节点向上游节点发剪枝报文(Prune Message),以通知上游节点将相应的接口从其组播转发表项(S,G)所对应的出接口列表中删除,并不再转发该IPv6组播组的报文至该节点。
(S,G)表项包括IPv6组播源的地址S、IPv6组播组的地址G、出接口列表和入接口等。
剪枝过程最先由“叶子”设备发起,如图1-1所示,由没有接收者(Receiver)的接口主动发起剪枝,并一直持续到IPv6 PIM-DM域中只剩下必要的分支,这些分支共同构成了SPT。
图1-1 IPv6 PIM-DM中构建SPT示意图
“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制,当剪枝超时后便重新开始这一过程。
当被剪枝的节点上出现了IPv6组播组的成员时,为了减少该节点恢复成转发状态所需的时间,IPv6 PIM-DM使用嫁接机制主动恢复其对IPv6组播数据的转发,过程如下:
(1) 需要恢复接收IPv6组播数据的节点向其上游节点发送嫁接报文(Graft Message)以申请重新加入到SPT中;
(2) 当上游节点收到该报文后恢复该下游节点的转发状态,并向其回应一个嫁接应答报文(Graft-Ack Message)以进行确认;
(3) 如果发送嫁接报文的下游节点没有收到来自其上游节点的嫁接应答报文,将重新发送嫁接报文直到被确认为止。
在一个网段内如果存在多台组播设备,则相同的IPv6组播报文可能会被重复发送到该网段。为了避免出现这种情况,就需要通过断言(Assert)机制来选定唯一的IPv6组播数据转发者。
图1-2 Assert机制示意图
如图1-2所示,当Device A和Device B从上游节点收到(S,G)的IPv6组播报文后,都会向本地网段转发该报文,于是处于下游的节点Device C就会收到两份相同的IPv6组播报文,Device A和Device B也会从各自的下游接口收到对方转发来的该IPv6组播报文。此时,Device A和Device B会通过其下游接口向本网段的所有IPv6 PIM设备以组播方式发送断言报文(Assert Message),该报文中携带有以下信息:IPv6组播源地址S、IPv6组播地址G、到IPv6组播源的IPv6单播路由/IPv6 MBGP路由/IPv6组播静态路由的优先级和度量值。通过一定的规则对这些参数进行比较后,Device A和Device B中的获胜者将成为(S,G)IPv6组播报文在本网段的转发者,比较规则如下:
(1) 到IPv6组播源的优先级较高者获胜;
(2) 如果到IPv6组播源的优先级相等,那么到IPv6组播源的度量值较小者获胜;
(3) 如果到IPv6组播源的度量值也相等,则下游接口IPv6链路本地地址较大者获胜。
IPv6 PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送IPv6组播数据。尽管SPT的路径最短,但是其建立的过程效率较低,并不适合大中型网络。而IPv6 PIM-SM则属于稀疏模式的IPv6组播路由协议,使用“拉(Pull)模式”传送IPv6组播数据,通常适用于IPv6组播组成员分布相对分散、范围较广的大中型网络。
与IPv6 PIM-DM相反,IPv6 PIM-SM假设网络中没有IPv6组播接收者,于是接收者需要主动发起加入。IPv6 PIM-SM网络的核心是RP(Rendezvous Point,汇集点),IPv6 PIM-SM实现IPv6组播转发的关键就是建立以IPv6组播源为“根”、RP为“叶子”的SPT,以及以RP为“根”、接收者为“叶子”的RPT。
IPv6 PIM-SM工作机制包括邻居发现、DR选举、RP发现、嵌入式RP、Anycast-RP、构建RPT、组播源注册、SPT切换、断言。
IPv6 PIM-SM使用与IPv6 PIM-DM类似的邻居发现机制,具体请参见“1.2.1 邻居发现”一节。
无论是与IPv6组播源相连的网络,还是与接收者相连的网络,都需要选举DR(Designated Router,指定路由器)。接收者侧的DR负责向RP发送加入报文(Join Message);IPv6组播源侧的DR负责向RP发送注册报文(Register Message)。
在充当接收者侧DR的设备上必须使能MLD,否则连接在该DR上的接收者将不能通过该DR加入IPv6组播组。有关MLD的详细介绍,请参见“IP组播配置指导”中的“MLD”。
图1-3 DR选举示意图
如图1-3所示,DR的选举过程如下:
(1) 共享网络上的各设备相互之间发送Hello报文(携带有竞选DR优先级的参数),拥有最高优先级的设备将成为DR;
(2) 如果优先级相同,或者网络中至少有一台设备不支持在Hello报文中携带竞选DR优先级的参数,则根据各设备的IPv6链路本地地址大小来竞选DR,IPv6链路本地地址最大的设备将成为DR。
如果DR出现故障,将导致其IPv6 PIM邻居可达状态定时器超时,其余设备将触发新的DR选举过程。
RP是IPv6 PIM-SM域中的核心设备。每个IPv6 组播组在任意时刻,只能由唯一的一个RP为其转发数据,而不能由多个RP转发数据。
RP可以静态配置、动态选举或从嵌入式RP中获取。嵌入式RP优先级高于静态RP和动态RP。如果同时配置了静态RP和动态RP,二者的选取原则为:
· 如果配置了静态RP优先,则表示优先选择静态RP,只有当静态RP失效时,动态RP才能生效;
· 如果未配置静态RP优先,则表示优先选择动态RP,只有当未配置动态RP或动态RP失效时,静态RP才能生效。
手工配置静态RP,既可避免因单一节点故障而引起的通信中断,也可避免C-RP与BSR之间频繁的信息交互而占用带宽。
动态选举RP涉及到的角色:
· C-RP(Candidate-RP,候选RP):为了缓解RP的负担并优化RPT的拓扑结构,设备通过自举机制从C-RP中动态选出RP,使不同的RP服务于不同的IPv6组播组。
· BSR(Bootstrap Router,自举路由器):IPv6 PIM-SM域的管理核心,负责在IPv6 PIM-SM域中收集并发布RP信息。BSR是通过C-BSR选举出来的。一个IPv6 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地址,拥有较大IPv6地址者获胜。如果后者获胜,则用后者的BSR地址替换自己的BSR地址,并不再认为自己是BSR;否则,保留自己的BSR地址,并继续认为自己是BSR。
(2) C-RP周期性地向BSR发送宣告报文(Advertisement Message),该报文中携带有C-RP的地址和优先级以及其服务的IPv6组范围。且在其宣告报文中封装一个保持时间,BSR在收到该报文后,从中获得该时间值并启动C-RP超时定时器,如果超时后BSR仍没有收到来自C-RP后续的宣告报文,则认为目前网络中的C-RP失效或不可达。
(3) BSR从宣告报文中学习和收集RP-Set信息,将这些信息汇总为RP-Set(RP集,即组播组与RP的映射关系数据库),并将该信息与自己的IPv6地址一起封装在自举报文(Bootstrap Message,BSM)中发布到整个PIM-SM域。
(4) 网络内的其它设备根据RP-Set信息计算出特定IPv6组播组范围所对应的RP。
网络中的各设备将依据RP-Set提供的信息,使用相同的规则从众多C-RP中为特定IPv6组播组选择其对应的RP,具体规则如下:
a. 首先比较C-RP所服务的IPv6组范围,所服务的IPv6组范围较小者获胜。
b. 若服务的IPv6组范围相同,再比较C-RP的优先级,优先级较高者获胜。
c. 若优先级也相同,再使用哈希(Hash)函数计算哈希值,哈希值较大者获胜。
d. 若哈希值也相同,则C-RP的IPv6地址较大者获胜。
· 一个RP可以同时服务于多个IPv6组播组,但一个IPv6组播组只能唯一对应一个RP。
· 一台设备可以同时充当C-RP和C-BSR。
通过嵌入式RP(Embedded RP)机制可以从IPv6组播地址中解析出内嵌的RP的地址,从而实现IPv6组播组到RP的映射,以取代静态配置的RP或由BSR机制动态计算出来的RP,DR不再需要预先知道RP的信息,只需对组播报文进行分析即可知道RP的地址。
图1-5 内嵌RP地址的IPv6组播地址示意图
如图1-5所示,嵌入式RP使用特定的组地址格式,其中各字段的含义与要求如下:
(1) 前8位固定为0xFF
(2) Flags字段的R、P和T位均置1,表示内嵌RP地址的组播地址。
(3) Reserved:4比特。保留字段,必须为0。
(4) RIID:4比特。表示RP地址的接口ID。
(5) Plen:8比特。表示RP地址前缀的有效长度(单位为比特)。长度不能大于64,且不能为0。
(6) Network prefix:64比特。表示RP地址前缀,有效长度由Plen字段指定。
(7) Group ID:缩短为32比特,含义不变。
嵌入式RP的工作原理如下:
· 接收者侧:
a. 接收者主机发送MLD报告报文声明加入某IPv6组播组;
b. 接收者侧的DR提取内嵌在IPv6组播地址中的RP地址,并向该RP发送加入报文(Join Message)。
· IPv6组播源侧:
a. IPv6组播源要向某IPv6组播组发送IPv6组播数据;
b. IPv6组播源侧DR提取内嵌在IPv6组播地址中的RP地址,并向该RP发送注册报文。
IPv6 PIM-SM要求每个IPv6组播组只能有一个激活的RP,因此当某RP失效时,可能导致其对应IPv6组播组的流量中断。Anycast-RP机制通过为同一IPv6组播组设置具有相同地址的多个RP,IPv6组播源和接收者各自就近选择RP进行注册或加入,这些RP之间则进行IPv6组播源信息的同步,从而实现了RP间的冗余备份。Anycast-RP具有以下优点:
· RP路径最优:IPv6组播源向距离最近的RP进行注册,建立路径最优的SPT;接收者向距离最近的RP发起加入,建立路径最优的RPT。
· RP冗余备份:当某RP失效后,原先在该RP上注册或加入的IPv6组播源或接收者会自动选择就近的RP进行注册或加入,从而实现了RP间的冗余备份。
由服务于同一IPv6组播组的多个RP组成的集合称为Anycast-RP集,这些RP则称为Anycast-RP成员,各成员的地址称为Anycast-RP成员地址,而Anycast-RP集对外统一发布的地址则称为Anycast-RP地址。如图1-6所示,一个Anycast-RP集中包含RP 1、RP 2和RP 3三个成员,Anycast-RP地址为RPA。
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集内的其它成员转发注册报文,以实现IPv6组播源信息的共享。
图1-7 IPv6 PIM-SM中构建RPT示意图
如图1-7所示,RPT的构建过程如下:
(1) 当接收者加入一个IPv6组播组G时,先通过MLD报文通知与其直连的DR;
(2) DR掌握了IPv6组播组G的接收者的信息后,向该组所对应的RP方向逐跳发送加入报文;
(3) 从DR到RP所经过的设备就形成了RPT的分支,这些设备都在其转发表中生成了(*,G)表项,这里的“*”表示来自任意IPv6组播源。RPT以RP为根,以DR为叶子。
当发往IPv6组播组G的IPv6组播数据流经RP时,数据就会沿着已建立好的RPT到达DR,进而到达接收者。
当某接收者对IPv6组播组G的信息不再感兴趣时,与其直连的DR会逆着RPT向该组的RP方向逐跳发送剪枝报文;上游节点收到该报文后在其出接口列表中删除与下游节点相连的接口,并检查自己是否拥有该IPv6组播组的接收者,如果没有则继续向其上游转发该剪枝报文。
当接收者不再通过RP接收发往某IPv6组播组的数据(即RP不再服务于该IPv6组播组),或RP开始接收IPv6组播源沿着SPT发来的IPv6组播数据时,RP将向组播源侧DR发送注册停止报文,DR收到该报文后将停止发送封装有IPv6组播数据的注册报文并启动注册停止定时器(Register-Stop Timer)。在注册停止定时器超时之前,DR会向RP发送一个空注册报文(Null-Register Message,即不封装IPv6组播数据的注册报文):如果DR在注册探测时间(Register_Probe_Time)内收到了来自RP的注册停止报文,DR将刷新其注册停止定时器;否则,DR将重新开始发送封装有IPv6组播数据的注册报文。
IPv6组播源注册的目的是向RP通知IPv6组播源的存在。
图1-8 IPv6组播源注册示意图
如图1-8所示,IPv6组播源向RP注册的过程如下:
(1) 当IPv6组播源S向IPv6组播组G发送了一个IPv6组播报文时,与IPv6组播源直连的DR在收到该报文后,就将其封装成注册报文,并通过单播方式发送给相应的RP;
(2) 当RP收到该报文后,一方面解封装注册报文并将封装在其中的IPv6组播报文沿着RPT转发给接收者,另一方面向IPv6组播源方向逐跳发送(S,G)加入报文。这样,从RP到IPv6组播源所经过的设备就形成了SPT的分支,这些设备都在其转发表中生成了(S,G)表项。
(3) IPv6组播源发出的IPv6组播数据沿着已建立好的SPT到达RP,然后由RP把IPv6组播数据沿着RPT向接收者进行转发。当RP收到沿着SPT转发来的IPv6组播数据后,通过单播方式向与IPv6组播源直连的DR发送注册停止报文(Register-Stop Message)。
在IPv6 PIM-SM域中,一个IPv6组播组唯一对应一个RP和一棵RPT。在SPT切换前,所有发往该组的IPv6组播报文都必须先由IPv6组播源侧DR封装在注册报文中发往RP,由RP解封装后再沿RPT分发给接收者侧的DR,RP是所有IPv6组播数据必经的中转站。这个过程存在以下三个问题:
· IPv6组播源侧的DR和RP必须对IPv6组播数据进行繁琐的封装/解封装处理。
· IPv6组播数据的转发路径不一定是从IPv6组播源到接收者的最短路径。
· 当IPv6组播流量变大时,RP负担增大,容易引发故障。
为了解决上述问题,建议用户使用spt-switch-threshold命令将SPT切换的条件配置为:RP或接收者侧的DR收到第一个IPv6组播数据包后便立即向SPT切换:
(1) RP发起的SPT切换
RP收到第一个IPv6组播数据包后,立即向IPv6组播源方向发送(S,G)加入报文,在IPv6组播源侧DR与RP之间建立起SPT分支,后续的IPv6组播报文都直接沿该分支到达RP。
由RP发起的SPT切换的详细过程,请参见“1.3.6 IPv6组播源注册”一节。
(2) 接收者侧DR发起的SPT切换
接收者侧DR收到第一个IPv6组播数据包后,立即发起SPT切换,过程如下:
a. 首先,接收者侧DR向IPv6组播源方向逐跳发送(S,G)加入报文,沿途经过的所有设备在其转发表中都生成了(S,G)表项,从而建立了SPT分支;
b. 随后,当IPv6组播数据沿SPT到达RPT与SPT分叉的设备时,该设备开始丢弃沿RPT到达的IPv6组播数据,同时向RP逐跳发送含RP位的剪枝报文,RP收到该报文后继续向IPv6组播源方向发送剪枝报文(假设此时只有这一个接收者),从而完成了SPT切换;
c. 最终,IPv6组播数据将沿SPT从IPv6组播源到达到接收者。
通过SPT切换,IPv6 PIM-SM能够以比IPv6 PIM-DM更经济的方式建立SPT。
IPv6 PIM-SM使用与IPv6 PIM-DM类似的断言机制,具体请参见“1.2.4 断言”一节。
一般情况下,在一个IPv6 PIM-SM域内只能有一个BSR,并由该BSR负责在整个IPv6 PIM-SM域内宣告RP-Set信息,所有IPv6组播组的信息都在此BSR管理的网络范围内进行转发,我们称之为IPv6非管理域机制。
考虑到管理的精细化,可以将整个IPv6 PIM-SM域划分为一个IPv6 Global域(IPv6 Global-scope Zone)和多个IPv6管理域(IPv6 Admin-scope Zone),一方面可以有效分担单一BSR的管理压力,另一方面可以使用私有组地址为特定区域提供专门的服务。相应地,我们称之为IPv6管理域机制。
IPv6管理域与特定Scope值的IPv6组播组相对应,针对不同的Scope值划分相应的IPv6管理域。IPv6管理域的边界由ZBR(Zone Border Router,区域边界路由器)构成,每个IPv6管理域各维护一个BSR,为特定Scope值的IPv6组播组服务,属于此范围的IPv6组播协议报文(如断言报文、BSR自举报文等)无法通过IPv6管理域边界。不同IPv6管理域所服务的IPv6组播组范围可以重叠,该范围内的IPv6组播组只在本IPv6管理域内有效,相当于私有组地址。而IPv6 Global域则可视为一种特殊的IPv6管理域,其维护的BSR为Scope值为14的IPv6组播组提供服务。
每个IPv6管理域以及IPv6 Global域都有独立的C-RP和BSR设备,这些设备仅在其所属的域有效,也就是说BSR机制与RP选举在各IPv6管理域之间是隔离的;每个IPv6管理域都有自己的边界,各IPv6管理域所服务IPv6组播组范围内的IPv6组播信息不能进、出该边界。为了更清晰地理解IPv6管理域和IPv6 Global域之间的关系,可以从以下两个角度进行考虑:
· 地域空间角度
IPv6管理域是针对特定Scope值的逻辑管理区域,属于此范围的IPv6组播报文只能在本IPv6管理域的域内或域外传播,无法跨过IPv6管理域的边界。
图1-9 地域空间上IPv6管理域与IPv6 Global域的关系
如图1-9所示,对于同一Scope值的IPv6组播组而言,各IPv6管理域在地域上必须相互独立、相互隔离。而IPv6 Global域则包含了IPv6 PIM-SM域内的所有设备,不属于任何IPv6管理域服务范围的IPv6组播报文,可以在整个IPv6 PIM-SM域范围内传播。
· Scope值角度
如图1-10所示,IPv6组播通过其地址结构中的Scope字段来表明该IPv6组播组属于哪个域。
图1-10 IPv6组播地址结构
Scope值较大的域包含Scope值较小的域,Scope值为E所对应的域(即IPv6 Global域)最大。Scope字段可能的取值及其含义如表1-1所示。
表1-1 Scope字段的取值及其含义
取值 |
含义 |
所属域 |
0、F |
保留(Reserved) |
- |
1 |
接口本地范围(Interface-Local Scope) |
- |
2 |
链路本地范围(Link-Local Scope) |
- |
3 |
子网本地范围(Subnet-Local Scope) |
IPv6管理域 |
4 |
管理本地范围(Admin-Local Scope) |
IPv6管理域 |
5 |
站点本地范围(Site-Local Scope) |
IPv6管理域 |
6、7、9~D |
未分配(Unassigned) |
IPv6管理域 |
8 |
机构本地范围(Organization-Local Scope) |
IPv6管理域 |
E |
全球范围(Global Scope) |
IPv6 Global域 |
目前,ASM(Any-Source Multicast,任意信源组播)模型包括IPv6 PIM-DM和IPv6 PIM-SM两种模式,SSM(Source-Specific Multicast,指定信源组播)模型能够借助IPv6 PIM-SM的部分技术来实现,也称为IPv6 PIM-SSM。
SSM模型为指定源组播提供了解决方案,通过MLDv2来维护主机与设备之间的关系。在实际应用中,通常采用MLDv2以及IPv6 PIM-SM的一部分技术来实现SSM模型。由于接收者预先已知道IPv6组播源的具体位置,因此在SSM模型中无需RP,无需构建RPT,也无需IPv6组播源注册过程来发现其它IPv6 PIM域内的IPv6组播源。
IPv6 PIM-SSM的工作机制包括邻居发现、DR选举、构建SPT。
IPv6 PIM-SSM使用与IPv6 PIM-SM完全相同的邻居发现机制,具体请参见“1.2.1 邻居发现”一节。
IPv6 PIM-SSM使用与IPv6 PIM-SM完全相同的DR选举机制,具体请参见 “1.3.2 DR选举”一节。
构建为IPv6 PIM-SM服务的RPT,还是构建为IPv6 PIM-SSM服务的SPT,关键在于接收者准备加入的IPv6组播组是否属于IPv6 SSM组地址范围(IANA保留的IPv6 SSM组地址范围为FF3x::/32,其中x表示任意合法的scope)。
图1-11 IPv6 PIM-SSM中构建SPT示意图
如图1-11所示,Host B和Host C为IPv6组播信息的接收者(Receiver),由其借助MLDv2的报告报文向DR报告自己对来自IPv6组播源S、发往IPv6组播组G的信息感兴趣。收到该报告报文的DR先判断该报文中的IPv6组地址是否在IPv6 SSM组地址范围内:
· 如果在IPv6 SSM组地址范围内,则构建IPv6 PIM-SSM,并向IPv6组播源S逐跳发送通道(Channel)的订阅报文(Subscribe Message)。沿途所有设备上都创建(S,G)表项,从而在网络内构建了一棵以IPv6组播源S为根、以接收者为叶子的SPT,该SPT就是IPv6 PIM-SSM中的传输通道;
· 如果不在IPv6 SSM组地址范围内,则仍旧按照IPv6 PIM-SM的流程进行后续处理,此时接收者侧DR需要向RP发送(*,G)加入报文,同时IPv6组播源侧DR需要进行IPv6组播源的注册。
在IPv6 PIM-SSM中,借助“通道”的概念表示IPv6组播组,借助“订阅报文”的概念表示加入报文。
在一个IPv6 PIM网络中,不允许IPv6 PIM-DM与其它类型的IPv6 PIM协议(IPv6 PIM-SM和IPv6 PIM-SSM)同时运行,但允许同时运行IPv6 PIM-SM和IPv6 PIM-SSM。
当网络中同时运行IPv6 PIM-SM和IPv6 PIM-SSM时,针对具体的组加入行为运行哪种类型的IPv6 PIM协议,其判断过程如图1-12所示。
图1-12 各IPv6 PIM协议运行关系示意图
有关MLD SSM Mapping的详细介绍,请参见“IP组播配置指导”中的“MLD”。
与IPv6 PIM相关的协议规范有:
· RFC 3956:Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
· 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 3956:Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
· 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)
同一台设备相同实例的所有接口上启用的IPv6 PIM模式必须相同。
IPv6 PIM-DM配置任务如下:
(1) 使能IPv6 PIM-DM
(2) (可选)配置状态刷新能力
(3) (可选)配置IPv6 PIM-DM嫁接报文的重传时间
(4) (可选)配置IPv6 PIM公共特性
在配置IPv6 PIM-DM之前,需要完成如下操作:
· 配置任一IPv6单播路由协议,实现域内网络层互通。
· 使能IPv6组播路由。
在接口上使能了IPv6 PIM-DM后,设备之间才能够建立IPv6 PIM邻居,从而对来自IPv6 PIM邻居的协议报文进行处理。
在部署IPv6 PIM-DM域时,建议在其所有非边界接口上均使能IPv6 PIM-DM。
(1) 进入系统视图。
system-view
(2) 使能IPv6组播路由,并进入IPv6 MRIB视图。
ipv6 multicast routing [ vpn-instance vpn-instance-name ]
缺省情况下,IPv6组播路由处于关闭状态。
本命令的详细介绍请参见“IP组播命令参考”中的“IPv6组播路由与转发”。
(3) 退回系统视图。
quit
(4) 进入接口视图。
interface interface-type interface-number
(5) 使能IPv6 PIM-DM。
ipv6 pim dm
缺省情况下,IPv6 PIM-DM处于关闭状态。
配置状态刷新能力可以使得设备之间更高效的获得彼此的(S,G)状态,分为以下四个可供配置的选项,对各选项的介绍如下:
· 状态刷新能力:为了避免各设备上被剪枝的接口因为超时而恢复转发,与IPv6组播源直连的设备会周期性地发送(S,G)状态刷新报文,可以在与IPv6组播源直连的设备上通过配置来改变这个时间间隔。该报文沿着IPv6 PIM-DM域最初的扩散路径逐跳进行转发,从而刷新沿途所有设备上的剪枝定时器的状态。只有当一个共享网段内的所有IPv6 PIM设备上都开启了状态刷新能力时,该共享网段才具备状态刷新能力。
· 状态刷新报文的时间间隔:与组播源直连的设备会按照配置的时间间隔来周期性地发送(S,G)状态刷新报文。
· 接收新状态刷新报文的等待时间:设备可能在短时间内收到多个状态刷新报文,而其中有些报文可能是重复的。为了避免接收这些重复的报文,可以配置接收新状态刷新报文的等待时间:设备将丢弃在该时间内收到的状态刷新报文;当该时间超时后,设备将正常接收新的状态刷新报文,并更新自己的IPv6 PIM-DM状态,同时重置该等待时间。
· 状态刷新报文的TTL值:路设备在收到状态刷新报文时,会将该报文的Hop Limit值减1后转发给其下游,直至该报文的Hop Limit值减为0,当网络规模很小时,状态刷新报文将在网络中循环传递。因此,为了有效控制刷新报文的传递范围,需要根据网络规模大小在与IPv6组播源直连的设备上配置合适的Hop Limit值。
请在IPv6 PIM-DM域内的所有设备上进行如下配置。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启状态刷新能力。
ipv6 pim state-refresh-capable
缺省情况下,状态刷新能力处于开启状态。
(4) 退回系统视图。
quit
(5) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(6) 配置发送状态刷新报文的时间间隔。
state-refresh-interval interval
缺省情况下,发送状态刷新报文的时间间隔为60秒。
(7) 配置接收新状态刷新报文的等待时间。
state-refresh-rate-limit time
缺省情况下,接收新状态刷新报文的等待时间为30秒。
(8) 配置状态刷新报文的Hop Limit值。
state-refresh-hoplimit hoplimit-value
缺省情况下,状态刷新报文的Hop Limit值为255。
嫁接报文是IPv6 PIM-DM中唯一使用确认机制的报文。在IPv6 PIM-DM域中,下游设备发出嫁接报文后,如果在指定时间内没有收到来自其上游设备的嫁接应答报文,则会重发嫁接报文,直到被确认。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置嫁接报文的重传时间。
ipv6 pim timer graft-retry interval
缺省情况下,嫁接报文的重传时间为3秒。
IPv6 PIM-SM配置任务如下:
(1) 使能IPv6 PIM-SM
(2) 配置静态RP
当网络内仅有一个动态RP时,建议手工配置静态RP。
(3) 配置动态RP
¡ 配置C-RP
¡ 配置C-BSR
¡ (可选)配置BSR服务边界
¡ (可选)关闭自举报文语义分片功能
¡ (可选)关闭自举报文往报文入接口方向转发功能
当网络内IPv6 PIM设备数量较多时建议配置动态RP。
(4) 配置嵌入式RP
当网络内的设备处在不同的IPv6 PIM-SM域,为了实现跨域的正常通信,建议网络内的各个设备配置嵌入式RP。
(5) (可选)配置Anycast-RP
(6) (可选)配置IPv6组播源注册
(7) (可选)配置SPT切换
(8) (可选)配置IPv6 PIM公共特性
在配置IPv6 PIM-SM之前,需要完成如下操作:
· 配置任一IPv6单播路由协议,实现域内网络层互通。
· 使能IPv6组播路由。
在接口上使能了IPv6 PIM-SM后,设备之间才能够建立IPv6 PIM邻居,从而对来自IPv6 PIM邻居的协议报文进行处理。
在部署IPv6 PIM-SM域时,建议在其所有非边界接口上均使能IPv6 PIM-SM。
(1) 进入系统视图。
system-view
(2) 使能IPv6组播路由,并进入IPv6 MRIB视图。
ipv6 multicast routing [ vpn-instance vpn-instance-name ]
缺省情况下,IPv6组播路由处于关闭状态。
本命令的详细介绍请参见“IP组播命令参考”中的“IPv6组播路由与转发”。
(3) 退回系统视图。
quit
(4) 进入接口视图。
interface interface-type interface-number
(5) 使能IPv6 PIM-SM。
ipv6 pim sm
缺省情况下,IPv6 PIM-SM处于关闭状态。
当网络内仅有一个动态RP时,建议手工配置静态RP,既可避免因单一节点故障而引起的通信中断,也可避免C-RP与BSR之间频繁的信息交互而占用带宽。
· 同一个网络可以依据ACL规则配置多个静态RP,
· 作为静态RP的接口不必使能IPv6 PIM。
· 同一个IPv6组播组如果配置了多个静态RP,那么地址最大的静态RP为实际静态RP。
· IPv6 PIM-SM域内的所有设备上都必须进行完全相同的静态RP配置。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置服务于IPv6 PIM-SM的静态RP。
static-rp ipv6-rp-address [ ipv6-acl-number | preferred [ static-rp-priority ] ] *
当网络中同时存在动态RP和静态RP时,如果未指定preferred参数,则表示优先选择动态RP,只有当未配置动态RP或动态RP失效时,静态RP才能生效;如果指定了preferred参数,则表示优先选择静态RP,只有当静态RP失效时,动态RP才能生效。
为了防止C-RP欺骗,需要在BSR上配置合法的C-RP地址范围及其服务的组播组范围。同时由于每个C-BSR都可能成为BSR,因此必须在IPv6 PIM-SM域内的所有C-BSR上都配置相同的过滤策略。
在实际组网中,可能存在不同设备的RP映射采用不同的哈希算法,为了确保本网络内各设备上RP映射信息一致,请在所有设备上配置相同的RP映射哈希算法。
一台设备可以同时充当C-RP和C-BSR,且建议在骨干网设备上配置C-RP。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置C-RP。
c-rp ipv6-address [ advertisement-interval adv-interval | { group-policy ipv6-acl-number | scope scope-id } | holdtime hold-time | priority priority ] *
(4) (可选)配置合法的C-RP地址范围及其服务的IPv6组播组范围。
crp-policy ipv6-acl-number
缺省情况下,C-RP地址范围及其服务的IPv6组播组范围不受限制。
(5) (可选)更改RP映射的哈希算法。
bsr-rp-mapping rfc2362
缺省情况下,RP映射采用RFC 4601中规定的哈希算法。
如果配置了C-RP来动态选举RP,则必须配置C-BSR。通过在IPv6 PIM-SM域内的所有设备上配置合法BSR的地址范围,可以对收到的自举报文按照地址范围进行过滤,从而防止某些恶意主机非法伪装成BSR,以避免合法的BSR被恶意取代。
一台设备可以同时充当C-RP和C-BSR,且建议在骨干网设备上配置C-BSR。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置C-BSR。
c-bsr ipv6-address [ scope scope-id ] [ hash-length hash-length | priority priority ] *
(4) (可选)配置合法的BSR地址范围。
bsr-policy ipv6-acl-number
缺省情况下,BSR的地址范围不受限制。
BSR的服务边界,即IPv6 PIM-SM域的边界。BSR是针对特定的服务范围而言的,众多的BSR服务边界接口将网络划分成不同的IPv6 PIM-SM域,自举报文无法通过IPv6 PIM-SM域的边界,BSR服务边界之外的设备也不能参与本IPv6 PIM-SM域内的组播转发。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置BSR的服务边界。
ipv6 pim bsr-boundary
当自举报文的大小可能超过接口的MTU(Maximum Transmission Unit,最大传输单元)值时,可能会导致整个自举报文都被丢弃。自举报文语义分片功能可以解决上述问题:当自举报文大于接口MTU时,会被分解为多个自举报文分片(Bootstrap Message Fragment,BSMF)。非BSR收到自举报文分片后,若发现某组范围对应的RP信息都在这一个分片中,便立即更新该组范围对应的RP-Set;若发现某组范围映射的RP信息被分在了多个分片中,则待收齐了这些分片后再更新该组范围对应的RP-Set。这样,由于不同分片所含组范围对应的RP信息不同,因此个别分片的丢失只影响该分片所含组范围对应的RP信息,而不会导致整个自举报文都被丢弃。
自举报文语义分片功能是缺省开启的,但由于不支持该功能的设备会将自举报文分片当作完整的自举报文处理,从而导致其学到的RP-Set信息不完整,因此当IPv6 PIM-SM域中存在此类设备时,请在已配置为C-BSR的设备上关闭本功能。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 关闭自举报文语义分片功能。
undo bsm-fragment enable
缺省情况下,自举报文语义分片功能处于开启状态。
BSR将自举报文(Bootstrap Message,BSM)发布到整个IPv6 PIM-SM域。在大多数IPv6 PIM-SM域中,设备并不需要将自举报文向入接口转发出去,可以在设备上关闭本功能。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 关闭自举报文往报文入接口方向转发功能。
undo bsm-reflection enable
缺省情况下,自举报文往报文入接口方向转发功能处于开启状态。
只有组地址为FF7x::/12或FFFx::/12,且符合RFC 3956格式要求的IPv6组播组支持嵌入式RP功能。
请在IPv6 PIM-SM域内的所有设备上进行该配置。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 开启嵌入式RP功能。
embedded-rp [ ipv6-acl-number ]
缺省情况下,嵌入式RP功能处于关闭状态。
· 处于同一个Anycast-RP集中的成员设备上,都必须存在相同的IPv6地址(LoopBack接口地址),并将该IPv6地址同时配置为Anycast-RP和C-RP。
· Anycast-RP地址不能再用作BSR的地址,否则其发出的自举报文将被其它成员设备丢弃。
· 一个Anycast-RP集中的成员设备不建议超过16台,否则将影响网络性能。
· 建议使用LoopBack接口的地址作为Anycast-RP成员地址。如果一台成员设备有多个接口的地址被添加到Anycast-RP集中,则采用IPv6地址最小的那个作为其成员地址,其余作为备份。
· Anycast-RP集中必须包括Anycast-RP地址所在的设备。
在配置Anycast-RP前,需要先在IPv6 PIM-SM域中完成静态RP或C-RP的配置,然后将静态RP或动态选举出的RP当作Anycast-RP地址进行Anycast-RP的配置。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置Anycast-RP。
anycast-rp ipv6-anycast-rp-address ipv6-member-address
在Anycast-RP集的每台成员设备上通过重复执行anycast-rp命令,将包括自己在内的所有成员的地址都添加到Anycast-RP集中。
· 注册报文的过滤策略:在IPv6 PIM-SM域内,IPv6组播源侧DR向RP发送注册报文,而这些注册报文拥有不同的IPv6组播源或IPv6组播地址。为了让RP服务于特定的IPv6组播组,可以对注册报文进行过滤。如果注册报文中的(S,G)表项被过滤策略中的ACL规则拒绝,或者该ACL中没有定义针对该表项的规则,RP将丢弃该注册报文,并向DR发送注册停止报文。
· 根据注册报文的全部内容来计算校验和:出于注册报文在传递过程中信息完整性的考虑,可以配置根据注册报文的全部内容计算校验和。但当其它设备不支持根据注册报文的全部内容计算校验和时,则需要配置仅根据注册报文头计算校验和。
· 注册抑制时间:注册停止定时器的超时时间是一个随机值,由其它两个时间值决定:注册抑制时间(Register_Suppression_Time)和注册探测时间(固定为5秒)。其具体取值范围如下:(0.5×注册抑制时间,1.5×注册抑制时间)-注册探测时间。
请在所有已配置为C-RP的设备上配置注册报文的过滤策略和注册报文的校验方式;请在所有可能成为IPv6组播源侧DR的设备上配置注册抑制时间。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置注册报文的过滤策略。
register-policy ipv6-acl-number
缺省情况下,不存在注册报文的过滤策略。
(4) 配置根据注册报文的全部内容来计算校验和。
register-whole-checksum
缺省情况下,仅根据注册报文头来计算校验和。
(5) 配置注册抑制时间。
register-suppression-timeout interval
缺省情况下,注册抑制时间为60秒。
由于组播源侧DR在创建IPv6组播路由表项后,无法继续将IPv6组播报文封装在注册报文中发给RP,因此在可能成为RP的设备上仅支持配置立即发起SPT切换,否则会导致IPv6组播报文转发失败。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置发起SPT切换的条件。
spt-switch-threshold { immediacy | infinity } [ group-policy ipv6-acl-number ]
缺省情况下,设备收到第一个IPv6组播数据包后便立即向SPT切换。
IPv6 PIM-SSM配置任务如下:
(1) 使能PIM-SM
(2) (可选)配置IPv6 SSM组播组范围
(3) (可选)配置IPv6 PIM公共特性
在配置IPv6 PIM-SSM之前,需要完成如下操作:
· 配置任一IPv6单播路由协议,实现域内网络层互通。
· 使能IPv6 PIM-SM。
· IPv6 PIM-SSM模型需要MLDv2的支持,因此应确保连接有接收者的IPv6 PIM设备上使能了MLDv2。
在部署IPv6 PIM-SSM域时,建议在其所有非边界接口上均使能IPv6 PIM-SM。
同一台设备相同实例的所有接口上启用的IPv6 PIM模式必须相同。
(1) 进入系统视图。
system-view
(2) 使能IPv6组播路由,并进入IPv6 MRIB视图。
ipv6 multicast routing [ vpn-instance vpn-instance-name ]
缺省情况下,IPv6组播路由处于关闭状态。
本命令的详细介绍请参见“IP组播命令参考”中的“IPv6组播路由与转发”。
(3) 退回系统视图。
quit
(4) 进入接口视图。
interface interface-type interface-number
(5) 使能IPv6 PIM-SM。
ipv6 pim sm
缺省情况下,IPv6 PIM-SM处于关闭状态。
在把来自IPv6组播源的信息传递给接收者的过程中,是采用IPv6 PIM-SSM模型还是IPv6 PIM-SM模型,这取决于接收者订阅通道(S,G)中的IPv6组播组是否在IPv6 SSM组播组范围之内,所有使能了IPv6 PIM-SM的接口将会认为属于该范围内的IPv6组播组采用了IPv6 PIM-SSM模型。
配置SSM组播组范围时,需要注意:
· 应确保IPv6 PIM-SSM域内所有设备上配置的IPv6 SSM组播组地址范围都一致,否则IPv6组播信息将无法通过SSM模型进行传输。
· 如果某IPv6组播组属于IPv6 SSM组播组范围,但该组成员使用MLDv1发送加入报文,则设备不会触发(*,G)加入报文。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置IPv6 SSM组播组的范围。
ssm-policy ipv6-acl-number
缺省情况下,IPv6 SSM组播组的范围为FF3x::/32,其中x表示任意合法的scope。
本节中的所有配置均为可选,请根据实际情况选择配置。
· 配置拒绝无Generation ID的Hello报文
无论在IPv6 PIM-DM还是IPv6 PIM-SM域内,各设备都可以对流经自己的IPv6组播数据进行检查,通过比较是否符合过滤规则来决定是否继续转发IPv6组播数据。也就是说IPv6 PIM域内的设备能够成为IPv6组播数据的过滤器。过滤器的存在一方面有助于实现信息流量控制,另一方面可以在安全性方面限定下游接收者能够获得的信息。过滤器不仅过滤独立的IPv6组播数据,还过滤封装在注册报文中的IPv6组播数据。
通常,过滤器的位置距离IPv6组播源越近,过滤影响越明显。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置IPv6组播数据过滤器。
source-policy ipv6-acl-number
随着IPv6 PIM协议的推广和应用,对其安全性的要求也越来越高。建立正确的IPv6 PIM邻居是IPv6 PIM协议安全应用的前提。如果在接口上指定了合法Hello报文的源地址范围,便能够保证IPv6 PIM邻居的正确建立,从而有效防止各种IPv6 PIM协议报文攻击,提高设备对IPv6 PIM协议报文处理的安全性。
当Hello报文过滤器的配置生效后,对于之前已建立的IPv6 PIM邻居,若由于其Hello报文被过滤而导致无法收到后续的Hello报文,将会在老化超时后被自动删除。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置合法Hello报文的源地址范围。
ipv6 pim neighbor-policy ipv6-acl-number
缺省情况下,Hello报文的源地址范围不受限制。
无论在IPv6 PIM-DM域还是在IPv6 PIM-SM域内,各设备之间发送的Hello报文都包含很多可供配置的选项,对各选项的介绍如下:
· 竞选DR的优先级(DR_Priority,仅用于IPv6 PIM-SM):表示竞选DR的优先级,优先级高的设备被选举为DR。可以在与IPv6组播源或接收者直连的共享网段中的所有设备上都配置此参数。
· 保持IPv6 PIM邻居可达状态的时间(Holdtime):表示保持IPv6 PIM邻居可达状态的时间,若超时后仍没有收到Hello报文,则认为IPv6 PIM邻居失效或不可达。
· IPv6 PIM报文在共享网段中的传输延迟(LAN_Prune_Delay):该选项用于调节共享网段上的剪枝延迟,由三部分组成:LAN-delay、Override-interval和T字段。LAN-delay表示IPv6 PIM报文在共享网段中的传输延迟,Override-interval表示允许下游设备否决剪枝动作的时间,当共享网段中各IPv6 PIM设备的LAN-delay或Override-interval不同时,取其中最大的值。T字段表示是否开启邻居跟踪功能。
· 剪枝否决时间:如果设备从其上游接口收到了剪枝报文但还需要继续接收组播数据,则必须在Override-interval时间内向上游设备发送加入报文以否决这个剪枝动作,这个过程就称为剪枝否决。上游设备在收到下游设备发来的剪枝报文后并不立即执行剪枝动作,而是将当前的转发状态保持LAN-delay+Override-interval时间,在该时间内如果收到下游的剪枝否决,则取消剪枝动作。
· 跟踪下游邻居的功能:通过在上游邻居上开启跟踪下游邻居的功能,可以记录已发送了加入报文且加入状态尚未超时的下游邻居的信息,允许接收所有加入报文。开启该功能时,应在共享网段的所有IPv6 PIM设备上都开启,否则上游邻居无法跟踪每个下游邻居的加入报文。
对于既可在IPv6 PIM视图又可在接口视图下进行的配置来说,前者对所有接口都生效,而后者只对当前接口生效,但后者的配置优先级较高。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置竞选DR的优先级。
hello-option dr-priority priority
缺省情况下,竞选DR的优先级为1。
(4) 配置保持IPv6 PIM邻居可达状态的时间。
hello-option holdtime time
缺省情况下,保持IPv6 PIM邻居可达状态的时间为105秒。
(5) 配置IPv6 PIM报文在共享网段中的传输延迟。
hello-option lan-delay delay
缺省情况下,IPv6 PIM报文在共享网段中的传输延迟为500毫秒。
(6) 配置剪枝否决时间。
hello-option override-interval interval
缺省情况下,剪枝否决时间为2500毫秒。
(7) 开启邻居跟踪功能。
hello-option neighbor-tracking
缺省情况下,邻居跟踪功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置竞选DR的优先级。
ipv6 pim hello-option dr-priority priority
缺省情况下,竞选DR的优先级为1。
(4) 配置保持IPv6 PIM邻居可达状态的时间。
ipv6 pim hello-option holdtime time
缺省情况下,保持IPv6 PIM邻居可达状态的时间为105秒。
(5) 配置IPv6 PIM报文在共享网段中的传输延迟时间。
ipv6 pim hello-option lan-delay delay
缺省情况下,IPv6 PIM报文在共享网段中的传输延迟为500毫秒。
(6) 配置剪枝否决时间。
ipv6 pim hello-option override-interval interval
缺省情况下,剪枝否决时间为2500毫秒。
(7) 开启邻居跟踪功能。
ipv6 pim hello-option neighbor-tracking
缺省情况下,邻居跟踪功能处于关闭状态,即不禁止加入报文抑制能力。
在接口上使能IPv6 PIM后,设备会生成一个随机数作为Hello报文中的Generation ID。一台IPv6 PIM设备的Generation ID一般不会改变,除非其状态更新才会生成新的Generation ID。这样,当IPv6 PIM设备发现来自上游邻居的Hello报文中的Generation ID发生改变时,便认为上游邻居的状态发生了改变,从而触发发送加入报文以进行状态刷新。通过在接口上配置拒绝无Generation ID的Hello报文,可以实时了解上游邻居的状态。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置拒绝无Generation ID的Hello报文。
ipv6 pim require-genid
缺省情况下,接受无Generation ID的Hello报文。
Hello报文的时间间隔与最大延迟时间:IPv6 PIM设备通过周期性地发送Hello报文,以发现IPv6 PIM邻居,并维护各设备之间的IPv6 PIM邻居关系。为了避免多个IPv6 PIM设备同时发送Hello报文而导致冲突,当IPv6 PIM设备在收到新邻居发来的Hello报文时,将延迟一段时间后再发送Hello报文,该时间值为小于“触发Hello报文的最大延迟时间”的一个随机值。
加入/剪枝状态的时间间隔与保持时间:IPv6 PIM设备通过周期性地向其上游设备发送加入/剪枝报文以更新状态,在该报文中携带有保持时间,上游设备为被剪枝的下游接口设置加入/剪枝状态保持定时器。
IPv6 组播源生存时间:当设备没有收到来自IPv6组播源S的后续IPv6组播数据时,不会立即删除(S,G)表项,而是将其维持一段时间后再删除,这段时间就称为IPv6组播源的生存时间。
IPv6 PIM接口向上游邻居发送加入/剪枝报文的时间间隔必须小于加入/剪枝状态的保持时间,以免上游邻居老化超时。
对于既可在IPv6 PIM视图又可在接口视图下进行的配置来说,前者对所有接口都生效,而后者只对当前接口生效,但后者的配置优先级较高。
如果对网络没有特殊要求,各定时器的值建议采用缺省值。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置发送Hello报文的时间间隔。
timer hello interval
缺省情况下,发送Hello报文的时间间隔为30秒。
(4) 配置发送加入/剪枝报文的时间间隔。
timer join-prune interval
缺省情况下,发送加入/剪枝报文的时间间隔为60秒。
本命令不会立即生效,新配置的发送间隔将在当前发送间隔完成后生效。
(5) 配置加入/剪枝状态的保持时间。
holdtime join-prune time
缺省情况下,加入/剪枝状态的保持时间为210秒。
(6) 配置IPv6组播源生存时间。
source-lifetime time
缺省情况下,IPv6组播源的生存时间为210秒。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置发送Hello报文的时间间隔。
ipv6 pim timer hello interval
缺省情况下,发送Hello报文的时间间隔为30秒。
(4) 配置触发Hello报文的最大延迟时间。
ipv6 pim triggered-hello-delay delay
缺省情况下,触发Hello报文的最大延迟时间为5秒。
(5) 配置发送加入/剪枝报文的时间间隔。
ipv6 pim timer join-prune interval
缺省情况下,发送加入/剪枝报文的时间间隔为60秒。
本命令不会立即生效,新配置的发送间隔将在当前发送间隔完成后生效。
(6) 配置加入/剪枝状态的保持时间。
ipv6 pim holdtime join-prune time
缺省情况下,加入/剪枝状态的保持时间为210秒。
如果加入/剪枝报文的尺寸较大,则丢失一个报文将导致较多信息的遗失;如果加入/剪枝报文的尺寸较小,则单个报文的丢失所产生的影响也将降低。
(1) 进入系统视图。
system-view
(2) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(3) 配置加入/剪枝报文的最大长度。
jp-pkt-size size
缺省情况下,加入/剪枝报文的最大长度为1200字节。
为了防止设备受到非法IPv6 PIM加入/剪枝报文攻击,通过本功能可以配置过滤规则,限制IPv6 PIM加入/剪枝报文中(S,G)加入信息的合法源地址范围和组地址范围,丢弃不合法的(S,G)加入信息,不建立对应的(S,G)表项。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置IPv6 PIM加入/剪枝报文中加入信息的过滤规则。
ipv6 pim join-policy { ipv6-acl-number | [ asm ipv6-acl-number | ssm ipv6-acl-number ] * }
缺省情况下,不过滤IPv6 PIM加入/剪枝报文中的加入信息。
IPv6 PIM在维护IPv6组播路由转发表时,需要与同网络的其他PIM路由器通过hello报文建立邻居关系,选举DR。当链路出现故障时,只有邻居关系老化以后才会触发IPv6 PIM接口的角色变化和链路倒换,这个过程通常比较久。为了实现IPv6 PIM邻居关系的快速老化,可以在共享网段的IPv6 PIM邻居之间引入BFD(Bidirectional Forwarding Detection,双向转发检测)机制进行链路状态的快速检测。通过在共享网段内的所有IPv6 PIM路由器上都使能IPv6 PIM与BFD联动功能,可以使这些IPv6 PIM邻居快速感知链路故障。有关BFD的详细介绍,请参见“可靠性配置指导”中的“BFD”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启IPv6 PIM与BFD联动功能。
ipv6 pim bfd enable
缺省情况下,IPv6 PIM与BFD联动功能处于关闭状态。
为了避免恶意主机模拟IPv6 PIM Hello报文攻击设备,可以在直连用户的接口上配置IPv6 PIM消极模式,用来禁止在该接口上接收和转发任何IPv6 PIM协议报文(不包括单播发送的注册、注册停止和C-RP宣告报文)。同时由于认为在该网段内只有本设备一台IPv6 PIM设备,开启了IPv6 PIM消极模式的接口会自动成为该网段的DR和DF。
当网段中有多台IPv6 PIM设备时请勿使用本功能,这是由于开启了IPv6 PIM消极模式的接口将自动成为DR和DF,从而导致该网段中出现多个DR和DF。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启IPv6 PIM接口消极模式。
ipv6 pim passive
缺省情况下,接口上的IPv6 PIM消极模式处于关闭状态。
IPv6 PIM NSR(Nonstop Routing,不间断路由)通过将IPv6 PIM协议的必要协议状态和数据(如IPv6 PIM邻居信息和路由信息)从主进程备份到备进程,使得IPv6 PIM协议的主进程中断时,备份进程能够无缝地接管主进程的工作,从而确保邻接设备感知不到IPv6 PIM协议中断,保持路由信息,并保证组播转发不会中断。
(1) 进入系统视图。
system-view
(2) 开启IPv6 PIM NSR功能。
ipv6 pim non-stop-routing
缺省情况下,IPv6 PIM协议的NSR功能处于关闭状态。
在组播链路经过的节点设备上开启IPv6 PIM FRR(Fast Reroute,快速重路由)后,IPv6 PIM协议会根据备份RPF路由建立备份组播转发树。在主RPF路由可达时,主备组播转发路径上都有流量经过,但是只有主路径上收到的流量数据会通过主路径上的接口向接收者转发。当主RPF路由不可达时,组播流量会快速切换到已建立好的备份组播转发路径,通过备份组播转发树发送给接收者。通过该功能,可以大大缩短主路径上的设备或者链路故障发生后的组播数据的断流时间。
IPv6 PIM会周期性检测主入接口、备份入接口上是否收到组播流量。如果在一个周期内,检测到主入接口没有收到组播数据报文,而备份入接口收到了组播数据报文,则说明主入接口对应的上行链路故障,设备将转发来自备份入接口的组播流量。
· 仅IPv6 PIM-SM和IPv6 PIM-SSM模式中支持本功能。
· 组播跨VPN组网中不支持本功能。
· 在IPv6 PIM-SM模式下,此功能仅对SPT切换后的表项生效。
· 由于IPv6 PIM FRR通过周期性检测流量的方式判断链路故障,此功能仅适用于持续、大速率转发组播流量的场景。否则可能会因为没有检测到流量,导致主备入接口反复切换。
(1) 进入系统视图。
system-view
(2) (可选)配置IPv6组播FRR的工作模式。
ipv6 multicast frr mode [ by-entry | by-iif ]
缺省情况下,IPv6组播FRR的工作模式为按表项检测模式。
有关此命令的详细介绍,请参见“IP组播命令参考”中的“IPv6组播路由与转发”。
(3) 进入IPv6 PIM视图。
ipv6 pim [ vpn-instance vpn-instance-name ]
(4) 配置IPv6 PIM FRR功能。
rpf-frr enable [ policy { ipv4-acl-number | name ipv4-acl-name } ]
缺省情况下,IPv6 PIM FRR功能处于关闭状态。
开启了IPv6 PIM的告警功能之后,IPv6 PIM会生成告警信息,以向网管软件报告本模块的重要事件。该信息将发送至SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启IPv6 PIM的告警功能。
snmp-agent trap enable pim6 [ candidate-bsr-win-election | elected-bsr-lost-election | neighbor-loss ] *
缺省情况下,IPv6 PIM的告警功能处于开启状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IPv6 PIM的运行情况,通过查看显示信息验证配置的效果。
有关display interface register-tunnel命令的详细介绍,请参见 “IP组播命令参考”中的“PIM”。
表2-1 IPv6 PIM显示和维护
操作 |
命令 |
显示Register-Tunnel接口的相关信息 |
display interface [ register-tunnel [ interface-number ] ] [ brief [ description | down ] ] |
显示IPv6 PIM-SM域中的BSR信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] bsr-info |
显示IPv6 PIM所使用的路由信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] claimed-route [ ipv6-source-address ] |
显示IPv6 PIM-SM域中的C-RP信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] c-rp [ local ] |
显示接口上的IPv6 PIM信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] |
显示IPv6 PIM邻居信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] neighbor [ ipv6-neighbor-address | interface interface-type interface-number | verbose ] * |
显示IPv6 PIM路由表的内容 |
display ipv6 pim [ vpn-instance vpn-instance-name ] routing-table [ ipv6-group-address [ prefix-length ] | ipv6-source-address [ prefix-length ] | flags flag-value | fsm | incoming-interface interface-type interface-number | mode mode-type | outgoing-interface { exclude | include | match } interface-type interface-number | extranet { source-vpn-instance source-vpn-instance-name | source-public-instance | receive-vpn-instance receive-vpn-instance-name | receive-public-instance } ] * |
显示IPv6 PIM-SM域中的RP的信息 |
display ipv6 pim [ vpn-instance vpn-instance-name ] rp-info [ ipv6-group-address ] |
显示IPv6 PIM协议报文的统计信息 |
display ipv6 pim statistics |
· 网络中运行OSPFv3协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个IPv6 PIM域采用DM方式。
· Host A和Host C为两个末梢网络中的IPv6组播信息接收者;Router D通过GigabitEthernet3/1/1接口与IPv6组播源(Source)所在的网络连接;Router A通过GigabitEthernet3/1/1接口连接末梢网络N1,通过GigabitEthernet3/1/2接口连接Router D;Router B和Router C分别通过各自的GigabitEthernet3/1/1接口连接末梢网络N2,并分别通过各自的GigabitEthernet3/1/2接口连接Router D。
· Router A与末梢网络N1之间运行MLDv1;Router B和Router C与末梢网络N2之间也运行MLDv1。
图2-1 IPv6 PIM-DM典型配置组网图
设备 |
接口 |
IPv6地址 |
设备 |
接口 |
IPv6地址 |
Router A |
GE3/1/1 |
1001::1/64 |
Router D |
GE3/1/1 |
4001::1/64 |
|
GE3/1/2 |
1002::1/64 |
|
GE3/1/2 |
1002::2/64 |
Router B |
GE3/1/1 |
2001::1/64 |
|
GE3/1/3 |
2002::2/64 |
|
GE3/1/2 |
2002::1/64 |
|
GE3/1/4 |
3001::2/64 |
Router C |
GE3/1/1 |
2001::2/64 |
|
|
|
|
GE3/1/2 |
3001::1/64 |
|
|
|
在进行下面的配置之前,请先配置各接口的IPv6地址和前缀长度,并确保IPv6 PIM-DM域内各设备之间路由可达。
(1) 使能IPv6组播路由,并使能IPv6 PIM-DM和MLD
# 在Router A上使能IPv6组播路由,在接口GigabitEthernet3/1/2上使能IPv6 PIM-DM,并在其连接末梢网络的接口GigabitEthernet3/1/1上使能MLD。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] mld enable
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] ipv6 pim dm
[RouterA-GigabitEthernet3/1/2] quit
Router B和Router C的配置与Router A相似,配置过程略。
# 在Router D上使能IPv6组播路由,并在各接口上使能IPv6 PIM-DM。
<RouterD> system-view
[RouterD] ipv6 multicast routing
[RouterD-mrib6] quit
[RouterD] interface gigabitethernet 3/1/1
[RouterD-GigabitEthernet3/1/1] ipv6 pim dm
[RouterD-GigabitEthernet3/1/1] quit
[RouterD] interface gigabitethernet 3/1/2
[RouterD-GigabitEthernet3/1/2] ipv6 pim dm
[RouterD-GigabitEthernet3/1/2] quit
[RouterD] interface gigabitethernet 3/1/3
[RouterD-GigabitEthernet3/1/3] ipv6 pim dm
[RouterD-GigabitEthernet3/1/3] quit
[RouterD] interface gigabitethernet 3/1/4
[RouterD-GigabitEthernet3/1/4] ipv6 pim dm
[RouterD-GigabitEthernet3/1/4] quit
# 显示Router D上IPv6 PIM的配置信息。
[RouterD] display ipv6 pim interface
Interface NbrCnt HelloInt DR-Pri DR-Address
GE3/1/1 0 30 1 FE80::A01:201:1
(local)
GE3/1/2 0 30 1 FE80::A01:201:2
(local)
GE3/1/3 1 30 1 FE80::A01:201:3
(local)
GE3/1/4 1 30 1 FE80::A01:201:4
(local)
# 显示Router D上IPv6 PIM的邻居关系信息。
[RouterD] display ipv6 pim neighbor
Total Number of Neighbors = 3
Neighbor Interface Uptime Expires Dr-Priority
FE80::A01:101:1 GE3/1/2 00:04:00 00:01:29 1
FE80::B01:102:2 GE3/1/3 00:04:16 00:01:29 3
FE80::C01:103:3 GE3/1/4 00:03:54 00:01:17 5
假如Host A需要接收IPv6组播组G(FF0E::101)的信息,当IPv6组播源S(4001::100/64)向IPv6组播组G发送IPv6组播数据时,通过扩散生成SPT,SPT路径中各路由器(Router A和Router D)上都存在(S,G)表项,Host A向Router A发送MLD报告以加入IPv6组播组G,在Router A上生成(*,G)表项。
# 显示Router A上的IPv6 PIM路由表信息。
[RouterA] display ipv6 pim routing-table
Total 1 (*, G) entry; 1 (S, G) entry
(*, FF0E::101)
Protocol: pim-dm, Flag: WC
UpTime: 00:01:24
Upstream interface: NULL
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet3/1/1
Protocol: mld, UpTime: 00:01:20, Expires: -
(4001::100, FF0E::101)
Protocol: pim-dm, Flag: ACT
UpTime: 00:01:20
Upstream interface: GigabitEthernet3/1/2
Upstream neighbor: 1002::2
RPF prime neighbor: 1002::2
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet3/1/1
Protocol: pim-dm, UpTime: 00:01:20, Expires: -
# 显示Router D上的IPv6 PIM路由表信息。
[RouterD] display ipv6 pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(4001::100, FF0E::101)
Protocol: pim-dm, Flag: LOC ACT
UpTime: 00:02:19
Upstream interface: GigabitEthernet3/1/1
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 2
1: GigabitEthernet3/1/2
Protocol: pim-dm, UpTime: 00:02:19, Expires: -
2: GigabitEthernet3/1/4
Protocol: pim-dm, UpTime: 00:02:19, Expires: -
· 网络中运行OSPFv3协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个IPv6 PIM域采用SM非管理域方式。
· Host A和Host C为两个末梢网络中的IPv6组播信息接收者;Router D通过GigabitEthernet3/1/1接口与IPv6组播源(Source)所在网络连接;Router A通过GigabitEthernet3/1/1接口连接末梢网络N1,通过GigabitEthernet3/1/2接口和 GigabitEthernet3/1/3接口分别连接Router D和Router E;Router B和Router C分别通过各自的GigabitEthernet3/1/1接口连接末梢网络N2,并分别通过各自的GigabitEthernet3/1/2接口连接Router E。
· 将Router E的GigabitEthernet3/1/3接口配置为C-BSR和C-RP,其中C-RP所服务的IPv6组播组范围为FF0E::101/64;在所有路由器上将Router D的GigabitEthernet3/1/2接口配置为静态RP,以对动态RP进行备份。
· Router A与末梢网络N1之间运行MLDv1;Router B和Router C与末梢网络N2之间也运行MLDv1。
图2-2 IPv6 PIM-SM非管理域典型配置组网图
设备 |
接口 |
IPv6地址 |
设备 |
接口 |
IPv6地址 |
Router A |
GE3/1/1 |
1001::1/64 |
Router D |
GE3/1/1 |
4001::1/64 |
|
GE3/1/2 |
1002::1/64 |
|
GE3/1/2 |
1002::2/64 |
|
GE3/1/3 |
1003::1/64 |
|
GE3/1/3 |
4002::1/64 |
Router B |
GE3/1/1 |
2001::1/64 |
Router E |
GE3/1/1 |
3001::2/64 |
|
GE3/1/2 |
2002::1/64 |
|
GE3/1/2 |
2002::2/64 |
Router C |
GE3/1/1 |
2001::2/64 |
|
GE3/1/3 |
1003::2/64 |
|
GE3/1/2 |
3001::1/64 |
|
GE3/1/4 |
4002::2/64 |
在进行下面的配置之前,请先配置各接口的IPv6地址和前缀长度,并确保IPv6 PIM-SM域内各设备之间路由可达。
(1) 使能IPv6组播路由,并使能IPv6 PIM-SM和MLD
# 在Router A上使能IPv6组播路由,在其连接末梢网络的接口GigabitEthernet3/1/1上使能MLD,并在其它接口上使能IPv6 PIM-SM。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] mld enable
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] ipv6 pim sm
[RouterA-GigabitEthernet3/1/2] quit
[RouterA] interface gigabitethernet 3/1/3
[RouterA-GigabitEthernet3/1/3] ipv6 pim sm
[RouterA-GigabitEthernet3/1/3] quit
Router B和Router C的配置与Router A相似,Router D和Router E除了不需要在相应接口上使能MLD外,其它的配置也与Router A相似,配置过程略。
(2) 配置C-BSR、C-RP和静态RP
# 在Router E上配置RP通告的服务范围,以及C-BSR和C-RP的位置,并指定静态RP。
<RouterE> system-view
[RouterE] acl ipv6 basic 2005
[RouterE-acl-ipv6-basic-2005] rule permit source ff0e::101 64
[RouterE-acl-ipv6-basic-2005] quit
[RouterE] ipv6 pim
[RouterE-pim6] c-bsr 1003::2
[RouterE-pim6] c-rp 1003::2 group-policy 2005
[RouterE-pim6] static-rp 1002::2
[RouterE-pim6] quit
# 在Router A上配置静态RP。
[RouterA] ipv6 pim
[RouterA-pim6] static-rp 1002::2
[RouterA-pim6] quit
Router B、Router C和Router D的配置与Router A相似,配置过程略。
# 显示Router A的接口上的IPv6 PIM信息。
[RouterA] display ipv6 pim interface
Interface NbrCnt HelloInt DR-Pri DR-Address
GE3/1/2 1 30 1 FE80::A01:201:2
GE3/1/3 1 30 1 FE80::A01:201:3
# 显示Router A上IPv6 PIM-SM域中的BSR信息。
[RouterA] display ipv6 pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:44
Elected BSR address: 1003::2
Priority: 64
Hash mask length: 126
Uptime: 00:11:18
# 显示Router E上IPv6 PIM-SM域中的BSR信息。
[RouterE] display ipv6 pim bsr-info
Scope: non-scoped
State: Elected
Bootstrap timer: 00:01:44
Elected BSR address: 1003::2
Priority: 64
Hash mask length: 126
Uptime: 00:11:18
Candidate BSR address: 1003::2
Priority: 64
Hash mask length: 126
# 显示Router A上所有IPv6组播组对应的RP信息。
[RouterA] display ipv6 pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: FF0E::101/64
RP address Priority HoldTime Uptime Expires
1003::2 192 180 00:05:19 00:02:11
Static RP information:
RP address ACL Mode Preferred Priority
1002::2 ---- pim-sm No 192
· 网络中运行OSPFv3协议,接收者通过组播方式接收视频点播信息,整个IPv6 PIM域采用SM管理域方式,划分为IPv6管理域1(Scope值为4)、IPv6管理域2(Scope值为4)和IPv6 Global域(Scope值为14),Router B、Router C和Router D为各IPv6管理域的ZBR。
· Source 1和Source 2分别向IPv6组播组FF14::101发送内容不同的IPv6组播信息,Host A和Host B则分别只接收来自Source 1和Source 2的IPv6组播信息;Source 3向IPv6组播组FF1E::202发送IPv6组播信息,Host C为其接收者。
· Router B的GigabitEthernet3/1/2接口为IPv6管理域1的C-BSR和C-RP,服务于Scope值为4的IPv6组播组;Router D的GigabitEthernet3/1/1接口为IPv6管理域2的C-BSR和C-RP,服务于Scope值为4的IPv6组播组;Router F的GigabitEthernet3/1/1接口为IPv6 Global域的C-BSR和C-RP,服务于Scope值为14的IPv6组播组。
· Router A、Router E和Router I分别与各自所连接的接收者之间运行MLDv1。
图2-3 IPv6 PIM-SM管理域配置组网图
设备 |
接口 |
IPv6地址 |
设备 |
接口 |
IPv6地址 |
Router A |
GE3/1/1 |
1001::1/64 |
Router D |
GE3/1/1 |
3003::2/64 |
|
GE3/1/2 |
1002::1/64 |
|
GE3/1/3 |
6001::1/64 |
Router B |
GE3/1/1 |
2001::1/64 |
|
GE3/1/3 |
6002::1/64 |
|
GE3/1/2 |
1002::2/64 |
Router E |
GE3/1/1 |
7001::1/64 |
|
GE3/1/3 |
2002::1/64 |
|
GE3/1/2 |
3002::2/64 |
|
GE3/1/4 |
2003::1/64 |
|
GE3/1/3 |
6001::2/64 |
Router C |
GE3/1/1 |
3001::1/64 |
Router F |
GE3/1/1 |
8001::1/64 |
|
GE3/1/2 |
3002::1/64 |
|
GE3/1/2 |
6002::2/64 |
|
GE3/1/3 |
3003::1/64 |
|
GE3/1/3 |
2003::2/64 |
|
GE3/1/4 |
2002::2/64 |
Router G |
GE3/1/1 |
9001::1/64 |
|
GE3/1/5 |
3004::1/64 |
|
GE3/1/2 |
8001::2/64 |
Router H |
GE3/1/1 |
4001::1/64 |
Source 1 |
- |
2001::100/64 |
|
GE3/1/2 |
3004::2/64 |
Source 2 |
- |
3001::100/64 |
Router I |
GE3/1/1 |
5001::1/64 |
Source 3 |
- |
9001::100/64 |
|
GE3/1/2 |
4001::2/64 |
|
|
|
在进行下面的配置之前,请先配置各接口的IPv6地址和前缀长度,并确保IPv6 PIM-SM域内各设备之间路由可达。
(1) 使能IPv6组播路由和IPv6管理域机制,并使能IPv6 PIM-SM和MLD
# 在Router A上使能IPv6组播路由,在接口GigabitEthernet3/1/2上使能IPv6 PIM-SM,并在其连接有接收者的接口GigabitEthernet3/1/1上使能MLD。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] mld enable
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] ipv6 pim sm
[RouterA-GigabitEthernet3/1/2] quit
Router E和Router I的配置与Router A相似,配置过程略。
# 在Router B上使能IPv6组播路由,并在各接口上使能IPv6 PIM-SM。
<RouterB> system-view
[RouterB] ipv6 multicast routing
[RouterB-mrib6] quit
[RouterB] interface gigabitethernet 3/1/1
[RouterB-GigabitEthernet3/1/1] ipv6 pim sm
[RouterB-GigabitEthernet3/1/1] quit
[RouterB] interface gigabitethernet 3/1/2
[RouterB-GigabitEthernet3/1/2] ipv6 pim sm
[RouterB-GigabitEthernet3/1/2] quit
[RouterB] interface gigabitethernet 3/1/3
[RouterB-GigabitEthernet3/1/3] ipv6 pim sm
[RouterB-GigabitEthernet3/1/3] quit
[RouterB] interface gigabitethernet 3/1/4
[RouterB-GigabitEthernet3/1/4] ipv6 pim sm
[RouterB-GigabitEthernet3/1/4] quit
Router C、Router D、Router F、Router G和Router H的配置与Router B相似,配置过程略。
(2) 配置IPv6管理域边界
# 在Router B上将接口GigabitEthernet3/1/3和GigabitEthernet3/1/4配置为IPv6管理域1的边界。
[RouterB] interface gigabitethernet 3/1/3
[RouterB-GigabitEthernet3/1/3] ipv6 multicast boundary scope 4
[RouterB-GigabitEthernet3/1/3] quit
[RouterB] interface gigabitethernet 3/1/4
[RouterB-GigabitEthernet3/1/4] ipv6 multicast boundary scope 4
[RouterB-GigabitEthernet3/1/4] quit
# 在Router C上将接口GigabitEthernet3/1/4和GigabitEthernet3/1/5配置为IPv6管理域2的边界。
<RouterC> system-view
[RouterC] interface gigabitethernet 3/1/4
[RouterC-GigabitEthernet3/1/4] ipv6 multicast boundary scope 4
[RouterC-GigabitEthernet3/1/4] quit
[RouterC] interface gigabitethernet 3/1/5
[RouterC-GigabitEthernet3/1/5] ipv6 multicast boundary scope 4
[RouterC-GigabitEthernet3/1/5] quit
# 在Router D上将接口GigabitEthernet3/1/3配置为IPv6管理域2的边界。
<RouterD> system-view
[RouterD] interface gigabitethernet 3/1/3
[RouterD-GigabitEthernet3/1/3] ipv6 multicast boundary scope 4
[RouterD-GigabitEthernet3/1/3] quit
(3) 配置C-BSR和C-RP
# 在Router B上将接口GigabitEthernet3/1/2配置为IPv6管理域1的C-BSR和C-RP。
[RouterB] ipv6 pim
[RouterB-pim6] c-bsr 1002::2 scope 4
[RouterB-pim6] c-rp 1002::2 scope 4
[RouterB-pim6] quit
# 在Router D上将接口GigabitEthernet3/1/1配置为IPv6管理域2的C-BSR和C-RP。
[RouterD] ipv6 pim
[RouterD-pim6] c-bsr 3003::2 scope 4
[RouterD-pim6] c-rp 3003::2 scope 4
[RouterD-pim6] quit
# 在Router F上将接口GigabitEthernet3/1/1配置为IPv6 Global域的C-BSR和C-RP。
<RouterF> system-view
[RouterF] ipv6 pim
[RouterF-pim6] c-bsr 8001::1
[RouterF-pim6] c-rp 8001::1
[RouterF-pim6] quit
# 显示Router B上IPv6 PIM-SM域中的BSR信息。
[RouterB] display ipv6 pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:25
Elected BSR address: 8001::1
Priority: 64
Hash mask length: 126
Uptime: 00:01:45
Scope: 4
State: Elected
Bootstrap timer: 00:00:06
Elected BSR address: 1002::2
Priority: 64
Hash mask length: 126
Uptime: 00:04:54
Candidate BSR address: 1002::2
Priority: 64
Hash mask length: 126
# 显示Router D上IPv6 PIM-SM域中的BSR信息。
[RouterD] display ipv6 pim bsr-info
Scope: non-scoped
State: Accept Preferred
Bootstrap timer: 00:01:25
Elected BSR address: 8001::1
Priority: 64
Hash mask length: 126
Uptime: 00:01:45
Scope: 4
State: Elected
Bootstrap timer: 00:01:25
Elected BSR address: 3003::2
Priority: 64
Hash mask length: 126
Uptime: 00:01:45
Candidate BSR address: 3003::2
Priority: 64
Hash mask length: 126
# 显示Router F上IPv6 PIM-SM域中的BSR信息。
[RouterF] display ipv6 pim bsr-info
Scope: non-scoped
State: Elected
Bootstrap timer: 00:00:49
Elected BSR address: 8001::1
Priority: 64
Hash mask length: 126
Uptime: 00:01:11
Candidate BSR address: 8001::1
Priority: 64
Hash mask length: 126
# 显示Router B上所有IPv6组播组对应的RP信息。
[RouterB] display ipv6 pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: FF00::/8
RP address Priority HoldTime Uptime Expires
8001::1 192 180 00:01:14 00:02:46
Scope: 4
Group/MaskLen: FF04::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF14::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF24::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF34::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF44::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF54::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF64::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF74::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF84::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF94::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFA4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFB4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFC4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFD4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFE4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FFF4::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
Group/MaskLen: FF04::/16
RP address Priority HoldTime Uptime Expires
1002::2 (local) 192 180 00:02:03 00:02:56
# 显示Router F上所有IPv6组播组对应的RP信息。
[RouterF] display ipv6 pim rp-info
BSR RP information:
Scope: non-scoped
Group/MaskLen: FF00::/8
RP address Priority HoldTime Uptime Expires
8001::1 (local) 192 180 00:10:28 00:02:31
· 网络中运行OSPFv3协议,接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在至少一个接收者,整个IPv6 PIM域采用SSM方式。
· Host A和Host C为两个末梢网络中的IPv6组播信息接收者;Router D通过GigabitEthernet3/1/1接口与IPv6组播源(Source)所在网络连接;Router A通过GigabitEthernet3/1/1接口连接末梢网络N1,通过GigabitEthernet3/1/2接口和 GigabitEthernet3/1/3接口分别连接Router D和Router E;Router B和Router C分别通过各自的GigabitEthernet3/1/1接口连接末梢网络N2,并分别通过各自的GigabitEthernet3/1/2接口连接Router E。
· IPv6 SSM组播组的范围是FF3E::/64。
· Router A与末梢网络N1之间运行MLDv2;Router B和Router C与末梢网络N2之间也运行MLDv2。
图2-4 IPv6 PIM-SSM典型配置组网图
设备 |
接口 |
IPv6地址 |
设备 |
接口 |
IPv6地址 |
Router A |
GE3/1/1 |
1001::1/64 |
Router D |
GE3/1/1 |
4001::1/64 |
|
GE3/1/2 |
1002::1/64 |
|
GE3/1/2 |
1002::2/64 |
|
GE3/1/3 |
1003::1/64 |
|
GE3/1/3 |
4002::1/64 |
Router B |
GE3/1/1 |
2001::1/64 |
Router E |
GE3/1/1 |
3001::2/64 |
|
GE3/1/2 |
2002::1/64 |
|
GE3/1/2 |
2002::2/64 |
Router C |
GE3/1/1 |
2001::2/64 |
|
GE3/1/3 |
1003::2/64 |
|
GE3/1/2 |
3001::1/64 |
|
GE3/1/4 |
4002::2/64 |
在进行下面的配置之前,请先配置各接口的IPv6地址和前缀长度,并确保IPv6 PIM-SSM域内各设备之间路由可达。
(1) 配置IPv6地址和IPv6单播路由协议
请按照图2-4配置各接口的IPv6地址和前缀长度,并在IPv6 PIM-SSM域内的各路由器上配置OSPFv3协议,具体配置过程略。
(2) 使能IPv6组播路由,并使能IPv6 PIM-SM和MLD
# 在Router A上使能IPv6组播路由,在其连接末梢网络的接口GigabitEthernet3/1/1上使能MLD,且配置其版本为2;并在其它接口上使能IPv6 PIM-SM。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] mld enable
[RouterA-GigabitEthernet3/1/1] mld version 2
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] ipv6 pim sm
[RouterA-GigabitEthernet3/1/2] quit
[RouterA] interface gigabitethernet 3/1/3
[RouterA-GigabitEthernet3/1/3] ipv6 pim sm
[RouterA-GigabitEthernet3/1/3] quit
Router B和Router C的配置与Router A相似,Router D和Router E除了不需要在相应接口上使能MLD外,其它的配置也与Router A相似,配置过程略。
(3) 配置IPv6 SSM组播组的地址范围
# 在Router A上配置IPv6 SSM组播组的地址范围为FF3E::/64。
[RouterA] acl ipv6 basic 2000
[RouterA-acl-ipv6-basic-2000] rule permit source ff3e:: 64
[RouterA-acl-ipv6-basic-2000] quit
[RouterA] ipv6 pim
[RouterA-pim6] ssm-policy 2000
[RouterA-pim6] quit
Router B、Router C、Router D和Router E的配置与Router A相似,配置过程略。
# 显示Router A上IPv6 PIM的配置信息。
[RouterA] display ipv6 pim interface
Interface NbrCnt HelloInt DR-Pri DR-Address
GE3/1/2 1 30 1 FE80::A01:201:2
GE3/1/3 1 30 1 FE80::A01:201:3
假如Host A需要接收指定IPv6组播源S(4001::100/64)发往IPv6组播组G(FF3E::101)的信息,Router A会向IPv6组播源方向构造SPT,SPT路径中的路由器(Router A和Router D)上生成(S,G)表项,而SPT路径之外的路由器(Router E)上没有IPv6组播路由项。
# 显示Router A上的IPv6 PIM路由表信息。
[RouterA] display ipv6 pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(4001::100, FF3E::101)
Protocol: pim-ssm, Flag: ACT
UpTime: 00:00:11
Upstream interface: GigabitEthernet3/1/2
Upstream neighbor: 1002::2
RPF prime neighbor: 1002::2
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet3/1/1
Protocol: mld, UpTime: 00:00:11, Expires: 00:03:25
# 显示Router D上的IPv6 PIM路由表信息。
[RouterD] display ipv6 pim routing-table
Total 0 (*, G) entry; 1 (S, G) entry
(4001::100, FF3E::101)
Protocol: pim-ssm, Flag: LOC
UpTime: 00:08:02
Upstream interface: GigabitEthernet3/1/1
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: GigabitEthernet3/1/2
Protocol: pim-ssm, UpTime: 00:08:02, Expires: 00:03:25
网络中各设备(包括直连IPv6组播源或接收者的设备)上都没有IPv6组播转发项,也就是说无法正确建立组播分发树,客户端无法接收IPv6组播数据。
· 当全网运行IPv6 PIM-DM时,IPv6组播数据由直连组播源的第一跳设备扩散到直连客户端的最后一跳设备。无论IPv6组播数据扩散到哪一台设备,只有该设备存在到达组播源的路由,才会创建(S,G)表项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能IPv6 PIM-DM,该设备就无法创建(S,G)表项。
· 当全网运行IPv6 PIM-SM时,设备在准备加入SPT时,只有存在到达组播源的路由,才会创建(S,G)表项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能IPv6 PIM-SM,该设备就无法创建(S,G)表项。
· 对于某个RPF检查对象,在现存的IPv6单播路由表中查找到达该对象的最优路由,该路由的出接口作为RPF接口,下一跳作为RPF邻居。RPF接口完全依赖于现存的IPv6单播路由,并且与IPv6 PIM本身无关。RPF接口上必须使能IPv6 PIM,而且RPF邻居也必须是IPv6 PIM邻居。如果RPF接口或RPF邻居所在设备上没有使能IPv6 PIM,必然使组播分发树无法正确建立,导致IPv6组播数据转发异常。
· Hello报文并不携带IPv6 PIM的模式信息,所以运行IPv6 PIM的设备无法掌握自己的IPv6 PIM邻居运行的是何种模式的IPv6 PIM。如果RPF接口和RPF邻居所在设备的对应接口没有使能相同模式的IPv6 PIM,必然使组播分发树无法正确建立,导致IPv6组播数据转发异常。
· 全网必须运行相同模式的IPv6 PIM。否则,组播分发树必然无法正确建立,导致IPv6组播数据转发异常。
(1) 检查IPv6单播路由。使用命令display ipv6 routing-table命令检查是否有到达IPv6组播源或RP的IPv6单播路由。
(2) 检查接口上是否使能了IPv6 PIM,尤其是RPF接口上是否使能了IPv6 PIM。通过命令display ipv6 pim interface命令查看接口上的IPv6 PIM信息。若接口上未使能IPv6 PIM,请使用ipv6 pim dm或ipv6 pim sm命令使能IPv6 PIM-DM或IPv6 PIM-SM。
(3) 检查RPF邻居是否是IPv6 PIM邻居。通过display ipv6 pim neighbor命令查看IPv6 PIM邻居的信息。
(4) 检查直连IPv6组播源或接收者的设备接口上是否使能了IPv6 PIM和MLD。
(5) 检查IPv6 PIM模式是否一致。通过命令display ipv6 pim interface verbose检查RPF接口和RPF邻居所在设备的对应接口上是否使能了相同模式的IPv6 PIM。
(6) 检查全网各设备上的IPv6 PIM模式是否一致。通过命令display current-configuration查看接口上的IPv6 PIM模式信息,确保全网所有设备配置有相同模式的IPv6 PIM。如果都配置为IPv6 PIM-SM,则还需检查BSR以及C-RP的配置是否正确。
IPv6组播数据可以到达中间设备,但无法到达最后一跳设备。中间设备某接口上收到IPv6组播数据,但IPv6 PIM路由表中没有创建相应的(S,G)表项。
· 命令ipv6 multicast boundary用于在接口上设置IPv6组播转发边界,如果IPv6组播数据无法通过该边界,IPv6 PIM将无法创建路由项。
· 此外,source-policy命令用于过滤接收到的IPv6组播数据报文。如果IPv6组播数据报文无法通过该命令中的ACL规则,IPv6 PIM也无法创建路由项。
(1) 检查IPv6组播转发边界的配置。通过命令display current-configuration查看IPv6组播转发边界上的设置,使用ipv6 multicast boundary命令更改IPv6组播转发边界的设置,使IPv6组播数据能够通过该边界。
(2) 检查IPv6组播过滤器配置。通过命令display current-configuration查看IPv6组播过滤器的配置,更改source-policy命令的ACL规则,使IPv6组播数据的源/组地址通过ACL过滤。
RPT无法正确建立,或者RP无法加入到达IPv6组播源的SPT。
· RP是IPv6 PIM-SM网络的核心,为特定的IPv6组播组服务,网络中可以同时存在多个RP。必须保证所有设备上的RP信息完全一致,并且相同的IPv6组播组映射到相同的RP,否则将导致IPv6组播数据转发异常。
· 如果使用了静态RP,必须在全网所有设备上配置完全相同的静态RP,否则将导致IPv6组播数据转发异常。
(1) 检查是否有到达RP的IPv6单播路由。通过命令display ipv6 routing-table查看各设备上是否有到达RP的IPv6单播路由。
(2) 检查动态RP的信息。通过命令display ipv6 pim rp-info查看各设备上的RP信息是否一致。
(3) 检查静态RP的配置。通过命令display ipv6 pim rp-info查看全网所有设备上的静态RP配置是否完全相同。
C-RP无法向BSR单播通告报文,BSR没有发布包含C-RP的自举报文,BSR上没有到达各C-RP的IPv6单播路由,RPT无法正确建立,或者DR无法向RP进行源注册。
· C-RP周期性地向BSR单播宣告报文,如果C-RP没有到达BSR的IPv6单播路由就无法发送宣告报文,BSR就收不到C-RP宣告报文,也就不会发布包含该C-RP的自举报文。
· 另外,如果BSR没有到达C-RP的IPv6单播路由,就会丢弃C-RP发来的宣告报文,也不会发布包含该C-RP的自举报文。
· RP是IPv6 PIM-SM网络的核心。必须保证全网所有设备的RP信息完全一致,并且特定的组G映射到相同的RP,以及存在到达RP的IPv6单播路由。
(1) 检查是否有到各C-RP、BSR的IPv6单播路由。通过命令display ipv6 routing-table查看各设备上是否有到达C-RP和BSR的路由,以及C-RP和BSR之间的路由是否可达。确保各C-RP上存在到达BSR的路由,BSR上存在到达各C-RP的路由,全网所有设备上存在到达C-RP的路由。
(2) 检查RP和BSR信息。IPv6 PIM-SM协议需要有RP和BSR的支持,首先使用命令display ipv6 pim bsr-info查看各设备上是否有BSR的信息,使用display ipv6 pim rp-info命令查看各设备上的RP信息是否正确。
(3) 检查IPv6 PIM邻居关系。通过命令display ipv6 pim neighbor查看各设备之间是否正确建立了邻居关系。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!