虚拟路由冗余协议VRRP

2023-10-24 05:29:19

什么是VRRP?

虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)是一种用于提高网络可靠性的容错协议。通过VRRP,可以在主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保障网络通信的连续性和可靠性。

VRRP的工作原理

VRRP的三种状态

VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。下表详细描述了三种状态。

VRRP选举机制

VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。

初始创建的路由器工作在Backup状态,通过VRRP报文的交互获知虚拟路由器中其他成员的优先级:

如果VRRP报文中Master路由器的优先级高于自己的优先级,则路由器保持在Backup状态;

如果VRRP报文中Master路由器的优先级低于自己的优先级,采用抢占工作方式的路由器将抢占成为Master状态,周期性地发送VRRP报文,采用非抢占工作方式的路由器仍保持Backup状态;

如果在一定时间内没有收到VRRP报文,则路由器切换为Master状态。

VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。当路由器为IP地址拥有者时,其优先级始终为255且不能修改。因此,当虚拟路由器内存在IP地址拥有者时,只要其工作正常,则为Master路由器,选举方式如下图所示。

注:当vrrp组中的优先级相同时,先启动完成初始化的路由器为Master不比较IP大小,backup不抢占;只有vrrp组中的所有路由器同时启动且优先级相同才比较IP大小,IP大的为Master

配置命令

vrrp主备备份

[SwitchA] interface vlanif 100 [SwitchA-Vlanif100] vrrp vrid 1 virtual-ip 10.1.1.111 [SwitchA-Vlanif100] vrrp vrid 1 priority 120 //设备在VRRP备份组中的优先级缺省为100,修改Master设备的优先级大于Backup设备 [SwitchA-Vlanif100] vrrp vrid 1 preempt-mode timer delay 20 //设备在VRRP备份组中缺省采用立即抢占方式。修改Master设备的延迟抢占时间,以避免在网络环境不稳定时,由于双方频繁抢占而导致流量中断的问题 [SwitchA-Vlanif100] quit SwitchB配置相同 [SwitchA] display vrrp Vlanif100 | Virtual Router 1 State : Master Virtual IP : 10.1.1.111 Master IP : 10.1.1.1 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 20 s TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Backup-forward : disabled Create time : 2012-01-12 20:15:46 Last change time : 2012-01-12 20:20:56

vrrp实现负载分担

[SwitchA] interface vlanif 100 [SwitchA-Vlanif100] vrrp vrid 1 virtual-ip 10.1.10.111 [SwitchA-Vlanif100] vrrp vrid 1 priority 120 //设备在VRRP备份组中的优先级缺省为100,修改Master设备的优先级大于Backup设备 [SwitchA-Vlanif100] vrrp vrid 1 preempt-mode timer delay 20 //设备在VRRP备份组中缺省采用立即抢占方式。修改Master设备的延迟抢占时间,以避免在网络环境不稳定时,由于双方频繁抢占而导致流量中断的问题 [SwitchA-Vlanif100] quit [SwitchA] interface vlanif 500 [SwitchA-Vlanif500] vrrp vrid 2 virtual-ip 10.1.50.111 [SwitchA-Vlanif500] quit [SwitchB] interface vlanif 100 [SwitchB-Vlanif100] vrrp vrid 1 virtual-ip 10.1.10.111 [SwitchB-Vlanif100] quit [SwitchB] interface vlanif 500 [SwitchB-Vlanif500] vrrp vrid 2 virtual-ip 10.1.50.111 [SwitchB-Vlanif500] vrrp vrid 2 priority 120 //设备在VRRP备份组中的优先级缺省为100,修改Master设备的优先级大于Backup设备 [SwitchB-Vlanif500] vrrp vrid 2 preempt-mode timer delay 20 //设备在VRRP备份组中缺省采用立即抢占方式。修改Master设备的延迟抢占时间,以避免在网络环境不稳定时,由于双方频繁抢占而导致流量中断的问题 [SwitchB-Vlanif500] quit

VRRP与BFD联动

VRRP备份组通过收发VRRP协议报文进行主备状态的协商,以实现设备的冗余备份功能。当VRRP备份组之间的链路出现故障时,由于此时VRRP报文无法正常协商,Backup设备需要等待3倍协商周期(通常为3秒左右)后才会切换为Master设备,在等待切换期间内,业务流量仍会发往Master设备,此时会造成业务流量丢失。

BFD能够快速检测、监控网络中链路或者IP路由的连通状况,通过部署VRRP与BFD联动,可以使主备切换的时间控制在1秒以内,有效解决上述问题。通过在Master设备和Backup设备之间建立BFD会话并与VRRP备份组进行绑定,由BFD机制快速检测VRRP备份组的通信故障,并在出现故障时及时通知VRRP备份组进行主备切换,从而大大减少应用中断时间。


[SwitchA] interface vlanif 100 [SwitchA-Vlanif100] vrrp vrid 1 virtual-ip 10.1.1.3 [SwitchA-Vlanif100] vrrp vrid 1 priority 120 //设备在VRRP备份组中的优先级缺省为100,修改Master设备的优先级大于Backup设备 [SwitchA-Vlanif100] vrrp vrid 1 preempt-mode timer delay 20 //设备在VRRP备份组中缺省采用立即抢占方式。修改Master设备的延迟抢占时间,以避免在网络环境不稳定时,由于双方频繁抢占而导致流量中断的问题 [SwitchA-Vlanif100] quit [SwitchB] interface vlanif 100 [SwitchB-Vlanif100] vrrp vrid 1 virtual-ip 10.1.1.3 [SwitchB-Vlanif100] quit [SwitchA] bfd [SwitchA-bfd] quit [SwitchA] bfd atob bind peer-ip 10.1.1.2 interface vlanif 100 //配置静态BFD会话,监测备份组之间的链路。 [SwitchA-bfd-session-atob] discriminator local 1 //配置BFD会话的本地标识符,SwitchA上的本地标识符需要与SwitchB上的远端标识符一致 [SwitchA-bfd-session-atob] discriminator remote 2 //配置BFD会话的远端标识符,SwitchA上的远端标识符需要与SwitchB上的本地标识符一致 [SwitchA-bfd-session-atob] min-rx-interval 100 //配置BFD报文的接收间隔 [SwitchA-bfd-session-atob] min-tx-interval 100 //配置BFD报文的发送间隔 [SwitchA-bfd-session-atob] commit //提交BFD会话配置,使配置生效 [SwitchA-bfd-session-atob] quit [SwitchA] display bfd session all -------------------------------------------------------------------------------- Local Remote PeerIpAddr State Type InterfaceName -------------------------------------------------------------------------------- 1 2 10.1.1.2 Up S_IP_IF Vlanif100 -------------------------------------------------------------------------------- Total UP/DOWN Session Number : 1/0 [SwitchB] bfd [SwitchB-bfd] quit [SwitchB] bfd btoa bind peer-ip 10.1.1.1 interface vlanif 100 [SwitchB-bfd-session-btoa] discriminator local 2 [SwitchB-bfd-session-btoa] discriminator remote 1 [SwitchB-bfd-session-btoa] min-rx-interval 100 [SwitchB-bfd-session-btoa] min-tx-interval 100 [SwitchB-bfd-session-btoa] commit [SwitchB-bfd-session-btoa] quit 配置vrrp与bfd联动 在SwitchB上配置VRRP与BFD联动,当BFD会话状态Down时,SwitchB的优先级增加40 [SwitchB] interface vlanif 100 [SwitchB-Vlanif100] vrrp vrid 1 track bfd-session 2 increased 40 //其中2代表BFD会话的本地标识符 [SwitchB-Vlanif100] quit 验证 [SwitchA] display vrrp Vlanif100 | Virtual Router 1 State : Master Virtual IP : 10.1.1.3 Master IP : 10.1.1.1 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 20 s TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Backup-forward : disabled Create time : 2012-01-12 20:15:46 Last change time : 2012-01-12 20:15:46 [SwitchB] display vrrp Vlanif100 | Virtual Router 1 State : Backup Virtual IP : 10.1.1.3 Master IP : 10.1.1.1 PriorityRun : 100 PriorityConfig : 100 MasterPriority : 120 Preempt : YES Delay Time : 0 s TimerRun : 1 s TimerConfig : 1 s Auth type : NONE Virtual MAC : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Backup-forward : disabled Track BFD : 2 Priority increased : 40 BFD-session state : UP Create time : 2012-01-12 20:15:46 Last change time : 2012-01-12 20:15:46

模拟故障

# 在SwitchA的接口GE1/0/1上执行shutdown命令,模拟链路故障。此时在SwitchA和SwitchB上分别执行display vrrp命令,可以看出SwitchA状态变为Initialize,SwitchB状态变为Master,联动的BFD会话状态为DOWN。

在SwitchA的接口GE1/0/1上执行undo shutdown命令,模拟故障恢复。等待20秒后,分别在SwitchA和SwitchB上执行display vrrp命令,可以看出SwitchA状态恢复为Master,SwitchB状态恢复为Backup,联动的BFD会话状态恢复为UP。

VRRP与接口状态联动监视上行接口


[RouterA] interface gigabitethernet 2/0/0 [RouterA-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.3 [RouterA-GigabitEthernet2/0/0] vrrp vrid 1 priority 120 [RouterA-GigabitEthernet2/0/0] vrrp vrid 1 preempt-mode timer delay 20 [RouterA-GigabitEthernet2/0/0] quit [RouterB] interface gigabitethernet 2/0/0 [RouterB-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.3 [RouterB-GigabitEthernet2/0/0] quit [RouterA] interface gigabitethernet 2/0/0 [RouterA-GigabitEthernet2/0/0] vrrp vrid 1 track interface gigabitethernet 1/0/0 reduced 40 监视的接口GE1/0/0状态Down时,RouterA的优先级降低40。 [RouterA-GigabitEthernet2/0/0] quit [RouterA] display vrrp GigabitEthernet2/0/0 | Virtual Router 1 State : Master Virtual IP : 10.1.1.3 Master IP : 10.1.1.1 PriorityRun : 120 PriorityConfig : 120 MasterPriority : 120 Preempt : YES Delay Time : 20 s TimerRun : 1 s TimerConfig : 1 s Auth Type : NONE Virtual Mac : 0000-5e00-0101 Check TTL : YES Config type : normal-vrrp Backup-forward : disabled Track IF : GigabitEthernet1/0/0 Priority reduced : 40 IF state : UP Create time : 2012-05-22 17:32:56 Last change time : 2012-05-22 17:33:00

VRRP与路由联动监视上行链路

如图7-17所示,局域网内的主机通过Switch双归属到部署了VRRP备份组的RouterA和RouterB,其中RouterA为Master。正常情况下,RouterA承担网关工作,用户侧流量由Switch → RouterA → RouterC → RouterE进行转发。

用户希望当RouterC到RouterE之间路由撤销或者状态变为非激活时,VRRP备份组能感知并进行主备切换。启用RouterB承担业务转发,以减小链路故障对业务转发的影响。


[RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 virtual-ip 10.1.1.10 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 priority 120 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 preempt-mode timer delay 20 [RouterA-GigabitEthernet1/0/0] quit [RouterB] interface gigabitethernet 1/0/0 [RouterB-GigabitEthernet1/0/0] vrrp vrid 1 virtual-ip 10.1.1.10 [RouterB-GigabitEthernet1/0/0] quit [RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 track ip route 172.16.1.0 24 reduced 40 [RouterA-GigabitEthernet1/0/0] quit

验证

在RouterA上执行display isis route命令,可以看到存在一条去往172.16.1.0/24网段的路由。

# 分别在RouterA和RouterB上执行display vrrp命令,可以看到RouterA的状态为Master,联动的路由状态为Reachable,RouterB的状态为Backup


# 在RouterE的接口GE1/0/0上执行shutdown命令,模拟链路故障。

# 分别在RouterA和RouterB上执行display vrrp命令,可以看到RouterA的状态切换为Backup,联动的路由状态为Unreachable,RouterB的状态切换为Master。

# 在RouterE的接口GE1/0/0上执行undo shutdown命令,恢复链路故障。等待20秒后,分别在RouterA和RouterB上执行display vrrp命令,可以看到RouterA的状态恢复为Master,联动的路由状态恢复为Reachable,RouterB的状态恢复为Backup。

VRRP与NQA联动监视上行链路

组网需求

如图7-16所示,局域网内的主机通过Switch双归属到部署了VRRP备份组的RouterA和RouterB,其中RouterA为Master。正常情况下,RouterA承担网关工作,用户侧流量由Switch → RouterA → RouterC → RouterE进行转发。

用户希望当RouterC到RouterE之间的链路故障或链路质量较差时,VRRP备份组可以感知并进行主备切换,启用RouterB承担业务转发,以减小链路故障对业务转发的影响。

配置思路

采用VRRP与NQA联动实现对上行链路故障的感知及主备网关的切换,配置思路如下:

  1. 配置各设备接口IP地址及路由协议,使网络层路由可达。
  2. 在RouterA和RouterB上配置VRRP备份组,其中RouterA的优先级为120,抢占延时为20秒,作为Master设备;RouterB的优先级为缺省值,作为Backup设备,实现网关的主备备份。
  3. 在RouterA上配置ICMP类型的NQA测试例,配置目的地址为RouterE上接口GE1/0/0的IP地址,监测RouterA到RouterE的接口GE1/0/0间链路的连通性。
  4. 在RouterA上配置VRRP和NQA联动,当NQA检测到链路故障时,触发VRRP备份组进行主备切换。

[RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 virtual-ip 10.1.1.10 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 priority 120 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 preempt-mode timer delay 20 [RouterA-GigabitEthernet1/0/0] quit [RouterB] interface gigabitethernet 1/0/0 [RouterB-GigabitEthernet1/0/0] vrrp vrid 1 virtual-ip 10.1.1.10 [RouterB-GigabitEthernet1/0/0] quit 在RouterA上配置目的IP地址为20.1.1.2/24的ICMP类型的NQA测试例,当丢包率达到80%时,判定测试例failed。 [RouterA] nqa test-instance user test [RouterA-user-test] test-type icmp [RouterA-user-test] destination-address ipv4 20.1.1.2 [RouterA-user-test] frequency 20 探测频率 [RouterA-user-test] probe-count 5 计数 [RouterA-user-test] fail-percent 80 失败百分比 [RouterA-user-test] start now [RouterA-user-test] quit 在RouterA配置VRRP与NQA联动功能,当NQA测试例failed时,RouterA的优先级降低40。 [RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] vrrp vrid 1 track nqa user test reduced 40 [RouterA-GigabitEthernet1/0/0] quit