目录

简介

先决条件

要求

使用的组件

背景信息

新接口功能

IP PIM冗余

VRRP的角色

PIM的作用

实施详细信息

将PIM与VRRP组绑定

跟踪接口上的多个VRRP组

配置

网络图

启用PIM冗余功能

LHR配置

验证

验证VRRS数据库信息

检验接口信息

故障排除

相关信息

简介

本文档介绍如何配置路由器以使用虚拟路由器冗余协议感知（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一样运行，但以下例外：

- 非DR将接口保留在传出接口列表(OIL)中，但不设置F标志(组播路由信息库(MRIB)中的转发标志)，以便不转发流量。当非DR成为DR时，它会设置F标志并开始转发流量。

注意：此逻辑完全独立于VRRP组状态运行。

- 如果接口上同时启用了ip pim non-dr-join和ip pim redundancy <tag> vrrp dr-priority <value>功能，则无论VRRP状态如何，流量都会被拉入所有非DR。PIM根据VRRP状态设置或清除接口上的F标志，这允许在VRRP切换时快速收敛时间。

IP PIM冗余

本文档中描述的配置使用新的接口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功能是否在同一接口上启用：

- 如果启用了ip pim non-dr-join功能，则NonDR会处理IGMP报告并像往常一样创建mroute状态。与默认的NonDR行为不同，NonDR将接口添加到mroute条目的出站接口列表，向上游发送PIM加入/修剪决策，并像DR一样提取流量。但是，NonDR未在MRIB中的接口上设置F标志，因此不会从接口转发流量。相反，会为MRIB的出站接口列表(OIL)中的接口设置新的b标志(阻塞)，该标志表示此接口上的转发已阻塞（如果处于VRRP备份状态）。 这允许在切换时以带宽为代价快速收敛。

- 如果ip pim non-dr-join功能未启用，则只有MR充当PIM DR并处理PIM加入/修剪决策，而所有备份路由器都忽略IGMP加入和PIM加入/修剪请求。切换后，新MR将发送带有虚拟IP地址的PIM Hello消息。然后，主机或下游框会被触发以重新发送加入请求，因此新MR会处理这些请求并提取组播流量。这会导致收敛时间比其他方法更慢，但从系统角度来看，它更具带宽经济性。

由于唯一感兴趣的应用设置是最后/第一跳方案，因此PIM仅允许跟踪每个接口一个VRRP组。您无法配置一个接口以跟踪多个VRRP组，这会造成一个接口处于一个VRRP组的主状态和另一个VRRP组处于备份状态的情况。

在VRRP故障切换时，已成为新MR的路由器将被选为新DR:

- 如果启用ip pim non-dr-join功能，PIM将遍历所有mroute条目，清除b标志，并在接口上设置F标志（因为它现在是VRRP组的MR）。 如果前一个MR进入“备份”状态，则清除该F标志并在接口上设置b标志。

- 如果ip pim non-dr-join功能未启用，则遵循热备用路由器协议感知（HSRP感知）PIM逻辑，新MR将使用新GenID发送PIM Hello消息，以触发下游框重新发送PIM加入请求（或等待主机定期发送下一个请求）IGMP报告)，重新创建mroute状态，并通过新的DR提取流量。

- 流量现在通过新的MR（和PIM DR）转发到LAN，并且在故障切换时，下游路由器上根本不需要任何操作。

VRRP的角色

VRRP指定一种选举协议，该协议将IPv4/IPv6地址表示的虚拟路由器的责任动态分配给LAN上的VRRP路由器之一(RFC5798)。 控制与虚拟路由器关联的地址的VRRP路由器称为主路由器，它转发发送到虚拟媒体访问控制(MAC)地址的数据包。

实施此新功能时，使用VRRP来选择VRRP MR。VRRP MR对发往VRRP组虚拟IP(VIP)的所有流量执行路由和转发。 这实现了三个目标：

- 它会将所有VRRP服务器状态更改和更新通知VRRS。

- 它允许所有PIM加入/修剪请求到达VRRP组VIP，从而最大限度地减少下游路由器端的更改和配置（他们只需知道VIP）。

- 它允许PIM DR在与VRRP MR相同的网关上运行并保持mroute状态。组播流量通过VRRP MR转发，PIM可以利用VRRP冗余以避免潜在的重复流量并启用故障切换。

PIM的作用

PIM充当VRRS客户端，侦听来自VRRS服务器(VRRP)的状态更改和更新通知，并：

- 根据VRRP状态自动调整PIM DR优先级。

- 在VRRP故障切换时，从VRRS接收跟踪的VRRP组的状态更改通知。作为响应，PIM管理接口标志并确保流量通过VRRP MR转发。

由于mroute状态和流量在主路由器和备份路由器上都可用，因此切换时间主要取决于冗余基础设施（VRRP和VRRS）以及设置规模（如mroute条目数）。 在通知状态更改后，PIM立即通知MRIB和组播转发信息库(MFIB)通过VRRP MR转发流量。

实施详细信息

本节介绍有关本文档中介绍的配置的一些重要说明。

将PIM与VRRP组绑定

引入PIM CLI命令，以在接口上启用PIM冗余并将其绑定到VRRS服务器组（VRRP组）：

ip pim redundancy

[vrrp ] dr-priority

ipv6 pim redundancy

[vrrp ] dr-priority

当在接口上配置时，PIM将作为客户端注册到VRRS，并获取由VRRS数据库分配的客户端ID。它还请求VRRS向PIM发送有关由<tag>标识的组的所有事件的通知。

注意：VRRS服务器和客户端使用名称（48个字符串）绑定，该名称称为Tag。VRRS通过注册和回叫机制工作。向VRRS实施冗余寄存器的客户端（如PIM）。

在CLI中输入以下命令之一以启用NonDR Join功能：

ip pim non-dr-join

ipv6 pim non-dr-join

跟踪接口上的多个VRRP组

由于目标应用方案只是“第一跳/最后一跳”设置，因此最常见的设置是LAN上所有LHR接口跟踪同一VRRP组。因此，PIM仅允许跟踪每个接口一个VRRP组，即使您可以启用VRRS跟踪每个接口多个标记。

注意：默认情况下，该功能处于禁用状态。

配置

网络图

启用PIM冗余功能

注意：只有一个CLI命令可用于启用PIM冗余。您可以对PIM和HSRP使用当前的show和debug命令。

在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配置

对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#

验证

使用本节中介绍的信息验证配置是否正常工作。

验证VRRS数据库信息

在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后才转发。

相关信息

- VRRPv3协议支持

- 技术支持和文档 - Cisco Systems