本文档介绍如何配置路由器以使用虚拟路由器冗余协议感知(VRRP感知)协议独立组播(PIM)。
思科建议您了解组播和VRRP功能。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
VRRP版本3.10(15.3(3)S)支持VRRP感知PIM。PIM没有固有的冗余功能,其操作完全独立于第一跳冗余协议(FHRP),如VRRP。因此,IP组播流量不一定由VRRP选出的同一路由器转发。
在启用虚拟路由器组(VRG)的冗余网络中,需要提供一致的IP组播转发。利用PIM冗余,可以利用虚拟路由器冗余服务(VRRS),并根据路由器中的VRRP状态,进行指定路由器(DR)选举和PIM加入/修剪处理决策。启用PIM非DR加入功能时,它允许非DR(NonDR)创建组播路由(mroute)状态并拉取流量,但不转发流量。当VRRP故障切换发生时,VRRP组选择的新主路由器(MR)将接管第一跳路由器(FHR)或最后一跳路由器(LHR)DR责任并开始转发流量。
思科引入了使用ip pim non-dr-join CLI命令启用的新功能。此新功能独立于VRRP感知PIM功能工作,除VRRP外,还可用于其他功能,如双向转发检测(BFD)。启用此CLI功能后,NonDR可以处理互联网组管理协议(IGMP)加入并像DR一样运行,但以下例外:
本文档中描述的配置使用新的接口CLI功能,以便通过标记(48个字符串)将PIM绑定到VRRS会话:
ip pim redundancy[vrrp ] dr-priority
ipv6 pim redundancy[vrrp ] dr-priority
PIM注册为VRRS客户端并侦听VRRP事件通知。为了将VRRP MR指定为多路访问网段上的PIM DR,请在从物理IP地址发送的Hello消息中增加PIM DR优先级。
在接口上启用VRRP感知PIM跟踪后,可能会观察到不同的行为,具体取决于ip pim non-dr-join功能是否在同一接口上启用:
由于唯一感兴趣的应用设置是最后/第一跳方案,因此PIM仅允许跟踪每个接口一个VRRP组。您无法配置一个接口以跟踪多个VRRP组,这会造成一个接口处于一个VRRP组的主状态和另一个VRRP组处于备份状态的情况。
在VRRP故障切换时,已成为新MR的路由器将被选为新DR:
VRRP指定一种选举协议,该协议将IPv4/IPv6地址表示的虚拟路由器的责任动态分配给LAN上的VRRP路由器之一(RFC5798)。 控制与虚拟路由器关联的地址的VRRP路由器称为主路由器,它转发发送到虚拟媒体访问控制(MAC)地址的数据包。
实施此新功能时,使用VRRP来选择VRRP MR。VRRP MR对发往VRRP组虚拟IP(VIP)的所有流量执行路由和转发。 这实现了三个目标:
PIM充当VRRS客户端,侦听来自VRRS服务器(VRRP)的状态更改和更新通知,并:
由于mroute状态和流量在主路由器和备份路由器上都可用,因此切换时间主要取决于冗余基础设施(VRRP和VRRS)以及设置规模(如mroute条目数)。 在通知状态更改后,PIM立即通知MRIB和组播转发信息库(MFIB)通过VRRP MR转发流量。
本节介绍有关本文档中介绍的配置的一些重要说明。
引入PIM CLI命令,以在接口上启用PIM冗余并将其绑定到VRRS服务器组(VRRP组):
ip pim redundancy[vrrp ] dr-priority
ipv6 pim redundancy[vrrp ] dr-priority
当在接口上配置时,PIM将作为客户端注册到VRRS,并获取由VRRS数据库分配的客户端ID。它还请求VRRS向PIM发送有关由<tag>标识的组的所有事件的通知。
在CLI中输入以下命令之一以启用NonDR Join功能:
ip pim non-dr-join
ipv6 pim non-dr-join
由于目标应用方案只是“第一跳/最后一跳”设置,因此最常见的设置是LAN上所有LHR接口跟踪同一VRRP组。因此,PIM仅允许跟踪每个接口一个VRRP组,即使您可以启用VRRS跟踪每个接口多个标记。
在CLI中输入以下命令之一,以启用PIM冗余功能并为每个VRRP组指定PIM DR优先级:
[no] ip pim redundancy[hsrp | vrrp] dr-priority
[no] ipv6 pim redundancy[hsrp | vrrp] dr-priority
在CLI中输入以下命令之一以启用PIM DR功能(非DR上的转发除外):
[no] ip pim non-dr-join
[no] ipv6 pim non-dr-join
对LHR DR使用此配置:
interface Ethernet0/0
ip address 10.10.10.1 255.255.255.0
ip pim redundancy VRRP vrrp dr-priority 150
ip pim non-dr-join
ip pim sparse-mode
vrrp 1 address-family ipv4
vrrs leader VRRP
priority 120
track 1 decrement 30
address 10.10.10.5 primary
exit-vrrp ! track 1 interface Ethernet0/1 line-protocol
对LHR NonDR使用此配置:
interface Ethernet0/0
ip address 10.10.10.2 255.255.255.0
ip pim redundancy VRRP vrrp dr-priority 150
ip pim non-dr-join
ip pim sparse-mode
vrrp 1 address-family ipv4
address 10.10.10.5 primary
exit-vrrp
输入show vrrp brief命令以查看LHR配置:
LHR-DR#show vrrp brief
Interface Grp A-F Pri Time Own Pre State Master addr/Group addr
Et0/0 1 IPv4 120 0 N Y MASTER 10.10.10.1(local) 10.10.10.5
LHR-DR#
LHR-NonDR#show vrrp brief
Interface Grp A-F Pri Time Own Pre State Master addr/Group addr
Et0/0 1 IPv4 100 3609 N Y BACKUP 10.10.10.1 10.10.10.5
LHR-NonDR#
使用本节中介绍的信息验证配置是否正常工作。
在CLI中输入show vrrs server VRRP命令,以验证VRRS数据库是否已按先前配置填充:
LHR-DR#show vrrs server VRRP
Server Name: vrrpEthernet0/0v41
Address Family: IPv4
Interface: Ethernet0/0
State: ACTIVE
vMAC: 0000.5E00.0101
vIP Address: 10.10.10.5
Tags Connected:
Tag Name VRRP
LHR-DR#
LHR-NonDR#show vrrs server VRRP
Server Name: vrrpEthernet0/0v41
Address Family: IPv4
Interface: Ethernet0/0
State: BACKUP
vMAC: 0000.5E00.0101
vIP Address: 10.10.10.5
Tags Connected:
LHR-NonDR#
输入以下命令之一,以验证接口是否已为非dr-join功能正确编程,且NonDR已使用阻止标志构建树:
LHR-DR#show ip pim int e0/0 det | i Non|DR
PIM DR: 10.10.10.1 (this system)
PIM Non-DR-Join: TRUE
LHR-NonDR#show ip pim int e0/0 det | i Non|DR
PIM DR: 10.10.10.1
PIM Non-DR-Join: TRUE
LHR-NonDR#
在LHR-NonDR CLI中输入show ip mroute sparse命令,以查看新的Blocked字段:
LHR-NonDR#show ip mroute sparse
(*, 239.1.1.1), 01:26:15/stopped, RP 192.168.1.254, flags: SJC
Incoming interface: Ethernet0/1, RPF nbr 192.168.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse, 00:00:16/00:02:43 Blocked
(192.168.7.2, 239.1.1.1), 00:11:56/00:02:50, flags: T
Incoming interface: Ethernet0/1, RPF nbr 192.168.2.2
Outgoing interface list:
Ethernet0/0, Forward/Sparse, 00:00:16/00:02:43 Blocked
在LHR-NonDR的CLI中输入show mrib route命令,以验证MRIB路由是否未设置F标志:
LHR-NonDR#show ip mrib route 239.1.1.1 | b \(
(*,239.1.1.1) RPF nbr: 192.168.2.2 Flags: C
Ethernet0/1 Flags: A NS
(192.168.7.2,239.1.1.1) RPF nbr: 192.168.2.2 Flags:
Ethernet0/1 Flags: A
根据需要,MRIB路由在LHR-DR上设置了F标志:
LHR-DR#show ip mrib route 239.1.1.1 | b \(
(*,239.1.1.1) RPF nbr: 192.168.3.2 Flags: C
Ethernet0/0 Flags: F NS
Ethernet0/1 Flags: A NS
(192.168.7.2,239.1.1.1) RPF nbr: 192.168.3.2 Flags:
Ethernet0/1 Flags: A
Ethernet0/0 Flags: F NS
在LHR-DR的CLI中输入conf t命令,以通过Ethernet0/1关闭触发VRRP状态更改:
LHR-DR#conf t
Enter configuration commands, one per line. End with CNTL/Z.
LHR-DR(config)#int e0/1
LHR-DR(config-if)#shutdown
LHR-DR(config-if)#end
观察LHR-NonDR的输出时,您可以看到VRRP状态已更改(通知VRRS),PIM从VRRS接收通知并相应地更改DR角色:
LHR-NonDR#show ip pim int e0/0 det | i DR
PIM DR: 10.10.10.2 (this system)
PIM Non-DR-Join: TRUE
LHR-NonDR#
LHR-NonDR# show vrrp brief
Interface Grp A-F Pri Time Own Pre State Master addr/Group addr
Et0/0 1 IPv4 100 0 N Y MASTER 10.10.10.2(local) 10.10.10.5
LHR-NonDR# show vrrs server VRRP
Server Name: vrrpEthernet0/0v41
Address Family: IPv4
Interface: Ethernet0/0
State: ACTIVE
vMAC: 0000.5E00.0101
vIP Address: 10.10.10.5
Tags Connected:
如预期,设置F标志,并且NonDR开始转发组播流量,而无需构建新的组播树:
LHR-NonDR# show ip mrib route 239.1.1.1 | b \(
(*,239.1.1.1) RPF nbr: 192.168.2.2 Flags: C
Ethernet0/0 Flags: F NS
Ethernet0/1 Flags: A NS
(192.168.7.2,239.1.1.1) RPF nbr: 192.168.2.2 Flags:
Ethernet0/0 Flags: F NS
Ethernet0/1 Flags: A
在上一节的事务中丢失了两个数据包。您可以在源路由器上验证以下信息:
Source#ping 239.1.1.1 rep 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Reply to request 0 from 10.10.10.3, 2 ms
Reply to request 1 from 10.10.10.3, 2 ms
Reply to request 2 from 10.10.10.3, 1 ms..
Reply to request 5 from 10.10.10.3, 1 ms
在高可用性(HA)组播设计上运行的部署需要在非DR上形成备用树,并且可以从非DR加入功能中受益。此功能会提取组播流量,但直到它被选为DR后才转发。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
26-Mar-2015 |
初始版本 |