虚拟路由器冗余协议 - VRRP

VRRP 允许处于活动备用配置中的两个或多个网络设备共享单个虚拟默认网关。在任何给定时间转发数据包的 VRRP 路由器是主路由器。如果此 VRRP 路由器发生故障,则另一个 VRRP 备用路由器将自动接管为主路由器。主路由器向同一虚拟路由器组中的其他 VRRP 路由器发送 VRRP 通告,其中包括主路由器的优先级和状态。VRRP 路由器优先级确定每个虚拟路由器扮演的角色以及主路由器发生故障时谁将成为新的主路由器。

当您有多个不同的设备通过多个逻辑连接(而不是通过单个链路聚合)连接到第 2 层网段时,请使用 VRRP。VRRP 选择一个在活动状态时拥有虚拟 MAC 地址的单个活动转发器。这可以防止第 2 层域的转发表数据库因 MAC 地址抖动而持续更新,因为交换机从离散的逻辑连接接收源自虚拟 MAC 地址的帧。

所有虚拟路由器都使用 00:00:5E:00:01:XX 作为 IPv4 网关的 MAC 地址,或使用 00:00:5E:00:02:XX 作为 IPv6 网关的 MAC 地址。地址的最后一个字节是虚拟路由器标识符 (VRID),网络中每个虚拟路由器的 VRID 都不相同。一次只有一个物理路由器使用此 MAC 地址。当路由器收到针对虚拟路由器的 IP 地址的 ARP 请求或邻居请求数据包时,路由器将使用此地址进行回复。

  • Cumulus Linux 同时支持 VRRPv2 和 VRRPv3。默认协议版本为 VRRPv3。
  • 您可以在一台交换机上配置最多 255 个虚拟路由器。
  • 您不能将 VRRP 与 MLAG 一起使用。
  • 要在 SVI传统模式网桥 上配置 VRRP,您需要编辑 etc/network/interfaces/etc/frr/frr.conf 文件。
  • 您可以将 VRRP 与属于 VRF 的第 3 层接口和子接口一起使用。
  • 您不能在 EVPN 配置中使用 VRRP;请改用 MLAG 和 VRR。您不能在同一台交换机上同时配置 VRR 和 VRRP。

RFC 5798 详细描述了 VRRP。

以下示例说明了基本的 VRRP 配置。

配置 VRRP

要配置 VRRP,请在每台交换机上指定以下信息

  • 用于标识 VRRP 路由器组的虚拟路由器 ID (VRID)。您必须在组中的所有虚拟路由器上指定相同的 ID。
  • 虚拟路由器组的一个或多个虚拟 IP 地址。这些 IP 地址不直接连接到特定接口。交换机将入站数据包重定向到虚拟 IP 地址,然后再重定向到物理网络接口。

您还可以设置以下可选参数

可选参数默认值描述
优先级100虚拟路由器在虚拟路由器组中的优先级级别,它决定了每个虚拟路由器扮演的角色以及主路由器发生故障时会发生什么。虚拟路由器的优先级介于 1 到 254 之间;优先级最高的路由器将成为主路由器。
通告间隔1000 毫秒通告间隔是虚拟路由器组中主路由器连续通告之间的间隔。您可以指定介于 10 到 40950 之间的值。
抢占已启用如果路由器的优先级高于当前主路由器,则抢占模式允许路由器接管虚拟路由器组的主路由器角色。默认情况下,抢占模式处于启用状态。要禁用抢占模式,请编辑 /etc/frr/frr.conf 文件,在接口节中添加行 no vrrp <VRID> preempt,然后重启 FRR 服务。
版本3VRRP 协议版本。您可以指定值 2 或 3。

以下示例命令配置两台交换机(spine01 和 spine02),这两台交换机形成一个虚拟路由器组 (VRID 44),IPv4 地址为 10.0.0.1/24,IPv6 地址为 2001:0db8::1/64。spine01 是主路由器;其优先级为 254。spine02 是备份 VRRP 路由器。

父接口必须使用主地址作为 VRRP 通告数据包上的源地址。

当您使用 NVUE 命令配置 VRRP 时,NVUE 会启用 vrrpd 服务并重启 FRR 服务;重启 FRR 服务可能会影响流量。

cumulus@spine01:~$ nv set interface swp1 ip address 10.0.0.2/24
cumulus@spine01:~$ nv set interface swp1 ip address 2001:0db8::2/64
cumulus@spine01:~$ nv set interface swp1 ip vrrp virtual-router 44 address 10.0.0.1
cumulus@spine01:~$ nv set interface swp1 ip vrrp virtual-router 44 address 2001:0db8::1
cumulus@spine01:~$ nv set interface swp1 ip vrrp virtual-router 44 priority 254
cumulus@spine01:~$ nv set interface swp1 ip vrrp virtual-router 44 advertisement-interval 5000
cumulus@spine01:~$ nv config apply
cumulus@spine02:~$ nv set interface swp1 ip address 10.0.0.3/24
cumulus@spine02:~$ nv set interface swp1 ip address 2001:0db8::3/64
cumulus@spine02:~$ nv set interface swp1 ip vrrp virtual-router 44 address 10.0.0.1/24
cumulus@spine02:~$ nv set interface swp1 ip vrrp virtual-router 44 address 2001:0db8::1/64
cumulus@spine02:~$ nv config apply
  1. 编辑 /etc/network/interface 文件以将 IP 地址分配给父接口;例如

    cumulus@spine01:~$ sudo vi /etc/network/interfaces
    ...
    auto swp1
    iface swp1
        address 10.0.0.2/24
        address 2001:0db8::2/64
    
  2. 启用 vrrpd 守护程序,然后启动 FRR 服务。请参阅 FRRouting

  3. 从 vtysh shell 中,配置 VRRP。

    cumulus@spine01:~$ sudo vtysh
    ...
    spine01# configure terminal
    spine01(config)# interface swp1
    spine01(config-if)# vrrp 44 ip 10.0.0.1
    spine01(config-if)# vrrp 44 ipv6 2001:0db8::1
    spine01(config-if)# vrrp 44 priority 254
    spine01(config-if)# vrrp 44 advertisement-interval 5000
    spine01(config-if)# end
    spine01# write memory
    spine01# exit
    
  1. 编辑 /etc/network/interface 文件以将 IP 地址分配给父接口;例如

    cumulus@spine02:~$ sudo vi /etc/network/interfaces
    ...
    auto swp1
    iface swp1
        address 10.0.0.3/24
        address 2001:0db8::3/64
    
  2. 启用 vrrpd 守护程序,然后启动 FRR 服务。请参阅 FRRouting

  3. 从 vtysh shell 中,配置 VRRP。

    cumulus@spine02:~$ sudo vtysh
    ...
    spine02# configure terminal
    spine02(config)# interface swp1
    spine02(config-if)# vrrp 44 ip 10.0.0.1
    spine02(config-if)# vrrp 44 ipv6 2001:0db8::1
    spine02(config-if)# end
    spine02# write memory
    spine02# exit
    

vtysh 命令将配置保存在 /etc/network/interfaces 文件和 /etc/frr/frr.conf 文件中。例如

cumulus@spine01:~$ sudo cat /etc/network/interfaces
...
auto swp1
iface swp1
    address 10.0.0.2/24
    address 2001:0db8::2/64
    vrrp 44 10.0.0.1/24 2001:0db8::1/64
...
cumulus@spine01:~$ sudo cat /etc/frr/frr.conf
...
interface swp1
vrrp 44
vrrp 44 advertisement-interval 5000
vrrp 44 priority 254
vrrp 44 ip 10.0.0.1
vrrp 44 ipv6 2001:0db8::1
...

显示 VRRP 配置

要显示全局 VRRP 配置,请运行 NVUE nv show router vrrp 命令

cumulus@switch:~$ nv show router vrrp
                        applied
----------------------  -------
enable                  on     
advertisement-interval  1000   
preempt                 on     
priority                100    

vtysh show vrrp 命令显示 VRRP 配置和运行数据

...
switch# show vrrp
 Virtual Router ID                       44                          
 Protocol Version                        3                           
 Autoconfigured                          No                          
 Shutdown                                No                          
 Interface                               swp1                        
 VRRP interface (v4)                     vrrp4-3-44                  
 VRRP interface (v6)                     vrrp6-3-44                  
 Primary IP (v4)                         10.0.0.2                    
 Primary IP (v6)                         fe80::14a8:c009:2597:9854   
 Virtual MAC (v4)                        00:00:5e:00:01:2c           
 Virtual MAC (v6)                        00:00:5e:00:02:2c           
 Status (v4)                             Master                      
 Status (v6)                             Master                      
 Priority                                254                         
 Effective Priority (v4)                 254                         
 Effective Priority (v6)                 254                         
 Preempt Mode                            Yes                         
 Accept Mode                             Yes                         
 Advertisement Interval                  5000 ms                     
 Master Advertisement Interval (v4) Rx   5000 ms (stale)             
 Master Advertisement Interval (v6) Rx   5000 ms (stale)             
 Advertisements Tx (v4)                  4                           
 Advertisements Tx (v6)                  3                           
 Advertisements Rx (v4)                  0                           
 Advertisements Rx (v6)                  0                           
 Gratuitous ARP Tx (v4)                  1                           
 Neigh. Adverts Tx (v6)                  1                           
 State transitions (v4)                  2                           
 State transitions (v6)                  2                           
 Skew Time (v4)                          30 ms                       
 Skew Time (v6)                          30 ms                       
 Master Down Interval (v4)               15030 ms                    
 Master Down Interval (v6)               15030 ms                    
 IPv4 Addresses                          1                           
 ..................................      10.0.0.1                    
 IPv6 Addresses                          1                           
 ..................................      2001:db8::1

要显示有关所有已配置 VRRP 虚拟路由器的配置和运行信息,请运行 NVUE nv show interface <interface-id> ip vrrp virtual-router 命令或 vtysh show vrrp 命令。

在 NVUE 命令末尾添加 -o json 以查看更易读格式的输出

cumulus@switch:~$ nv show interface swp1 ip vrrp virtual-router -o json
{
  "44": {
    "accept-mode": "on",
    "address-family": {
      "ipv4": {
        "counters": {
          "adv-rx": 0,
          "adv-tx": 4663,
          "garp-tx": 1,
          "state-transitions": 2
        },
        "down-interval": 15030,
        "master-adv-interval": 5000,
        "primary-addr": "10.0.0.2",
        "priority": 254,
        "skew-time": 30,
        "status": "Master",
        "virtual-addresses": {
          "10.0.0.1": {}
        },
        "vmac": "00:00:5e:00:01:2c",
        "vrrp-interface": "vrrp4-3-44"
      },
      "ipv6": {
        "counters": {
          "adv-rx": 0,
          "adv-tx": 4662,
          "neigh-adv-tx": 1,
          "state-transitions": 2
        },
        "down-interval": 15030,
        "master-adv-interval": 5000,
        "primary-addr": "fe80::42cc:fd5c:fb48:76a8",
        "priority": 254,
        "skew-time": 30,
        "status": "Master",
        "virtual-addresses": {
          "2001:db8::1": {}
        },
        "vmac": "00:00:5e:00:02:2c",
        "vrrp-interface": "vrrp6-3-44"
      }
    },
    "advertisement-interval": 5000,
    "auto-config": "off",
    "interface": "swp1",
    "is-shutdown": "off",
    "preempt": "on",
    "priority": 254,
    "version": 3
  }
}

要显示有关特定 VRRP 虚拟路由器的配置信息,请运行 NVUE nv show interface <interface-id> ip vrrp virtual-router <virtual-router-id> 命令或 vtysh show vrrp <virtual-router-id> 命令

cumulus@switch:~$ nv show interface swp1 ip vrrp virtual-router 44
                        operational  applied
----------------------  -----------  ------------
advertisement-interval  5000         5000
preempt                 on           auto
priority                254          254
version                 3            3
[address]                            10.0.0.1
[address]                            2001:0db8::1
accept-mode             on
auto-config             off
interface               swp1
is-shutdown             off
[address-family]        ipv4
[address-family]        ipv6

vtysh show vrrp <virtual-router-id> 命令除了配置信息外,还显示运行信息

...
switch# show vrrp  44

 Virtual Router ID                       44                          
 Protocol Version                        3                           
 Autoconfigured                          No                          
 Shutdown                                No                          
 Interface                               swp1                        
 VRRP interface (v4)                     vrrp4-3-44                  
 VRRP interface (v6)                     vrrp6-3-44                  
 Primary IP (v4)                         10.0.0.2                    
 Primary IP (v6)                         fe80::42cc:fd5c:fb48:76a8   
 Virtual MAC (v4)                        00:00:5e:00:01:2c           
 Virtual MAC (v6)                        00:00:5e:00:02:2c           
 Status (v4)                             Master                      
 Status (v6)                             Master                      
 Priority                                254                         
 Effective Priority (v4)                 254                         
 Effective Priority (v6)                 254                         
 Preempt Mode                            Yes                         
 Accept Mode                             Yes                         
 Advertisement Interval                  5000 ms                     
 Master Advertisement Interval (v4) Rx   5000 ms (stale)             
 Master Advertisement Interval (v6) Rx   5000 ms (stale)             
 Advertisements Tx (v4)                  4710                        
 Advertisements Tx (v6)                  4709                        
 Advertisements Rx (v4)                  0                           
 Advertisements Rx (v6)                  0                           
 Gratuitous ARP Tx (v4)                  1                           
 Neigh. Adverts Tx (v6)                  1                           
 State transitions (v4)                  2                           
 State transitions (v6)                  2                           
 Skew Time (v4)                          30 ms                       
 Skew Time (v6)                          30 ms                       
 Master Down Interval (v4)               15030 ms                    
 Master Down Interval (v6)               15030 ms                    
 IPv4 Addresses                          1                           
 ..................................      10.0.0.1                    
 IPv6 Addresses                          1                           
 ..................................      2001:db8::1