第118篇:VRRP 虚拟路由冗余协议:主备切换
关键词:VRRP、虚拟路由器、主备切换、VRID、Master、Backup、优先级、抢占模式、默认网关冗余
一、引言
在前几篇中,我们系统学习了 IPv6 的邻居发现、地址配置、路由协议和过渡技术。现在回到园区网高可用架构,学习默认网关冗余方案。
在典型的园区网中,接入层终端的默认网关通常配置在汇聚层或核心层交换机的 VRF 接口(VLANIF)上。如果该网关设备故障,终端将失去通往外部网络的路径,导致业务中断。
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)通过将多台物理路由器虚拟为一台虚拟路由器,实现默认网关的冗余和故障自动切换。
二、核心概念
2.1 VRRP 基本架构

2.2 VRRP 关键概念
| 概念 | 说明 |
|---|---|
| VRID(Virtual Router ID) | 虚拟路由器标识,取值 1-255,同一 VRRP 组的成员必须配置相同的 VRID |
| Master | 当前活跃的成员路由器,负责转发发送给虚拟 IP 的报文 |
| Backup | 备份路由器,监听 Master 的通告,Master 故障时选举新的 Master |
| 虚拟 IP(Virtual IP) | 终端配置的默认网关地址,由 Master 负责响应 |
| 虚拟 MAC | 格式为 0000-5E00-01XX(XX = VRID),Master 负责响应 |
| 优先级(Priority) | 取值 1-254,值越大优先级越高,默认 100 |
| 抢占模式(Preempt) | 高优先级路由器恢复后是否抢占 Master 角色 |
2.3 VRRP 状态机

2.4 VRRP 通告机制
| 参数 | 默认值 | 说明 |
|---|---|---|
| 通告间隔(Advert Interval) | 1 秒 | Master 发送通告的时间间隔 |
| 通告超时(Master_Down_Timer) | 3 × 间隔 + 2 秒 | Backup 判断 Master 故障的时间 |
| 抢占延迟(Preempt Delay) | 200 秒 | 抢占模式下的延迟抢占时间 |
三、技术细节
3.1 VRRP 选举过程

3.2 VRRP 报文格式
| 字段 | 长度 | 说明 |
|---|---|---|
| Version | 1 字节 | VRRP 版本(v2=2, v3=3) |
| Type | 1 字节 | 报文类型(1=通告) |
| VRID | 1 字节 | 虚拟路由器 ID |
| Priority | 1 字节 | 优先级 |
| Auth Type | 1 字节 | 认证类型(VRRPv3 已废弃认证字段) |
| Advert Int | 1 字节 | 通告间隔 |
3.3 VRRPv2 与 VRRPv3 的区别
| 对比项 | VRRPv2 | VRRPv3 |
|---|---|---|
| 支持协议 | 仅 IPv4 | IPv4 + IPv6 |
| 组播地址 | 224.0.0.18 | IPv4: 224.0.0.18, IPv6: FF02::12 |
| 认证 | 支持明文认证 | 废弃认证(推荐 IPsec) |
| 虚拟 IP 数量 | 1 个 | 支持多个虚拟 IP |
| IPv6 支持 | 不支持 | 原生支持 |
3.4 VRRP 跟踪机制
VRRP 可以通过跟踪对象的状态来动态调整优先级,实现更智能的主备切换:
| 跟踪对象 | 说明 |
|---|---|
| 上行接口 | 跟踪上行接口状态,接口 Down 时降低优先级 |
| BFD 会话 | 跟踪 BFD 会话状态,实现毫秒级故障检测 |
| NQA 探针 | 跟踪 NQA 探测结果,检测端到端连通性 |
四、实战配置/案例分析
4.1 VRRP 基础配置
# ========== 路由器 A(Master,优先级 120) ==========
# 1. 配置 VLANIF 接口和虚拟 IP
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ip address 10.10.10.1 255.255.255.0
[HUAWEI-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.254
[HUAWEI-Vlanif10] vrrp vrid 1 priority 120
[HUAWEI-Vlanif10] vrrp vrid 1 preempt timer delay 200
[HUAWEI-Vlanif10] quit
# ========== 路由器 B(Backup,优先级 100) ==========
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ip address 10.10.10.2 255.255.255.0
[HUAWEI-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.254
[HUAWEI-Vlanif10] vrrp vrid 1 priority 100
[HUAWEI-Vlanif10] vrrp vrid 1 preempt timer delay 200
[HUAWEI-Vlanif10] quit
# ========== 验证 ==========
[HUAWEI] display vrrp brief
[HUAWEI] display vrrp verbose
4.2 VRRP 双主配置(负载均衡)
# ========== 路由器 A(VRID 1 的 Master,VRID 2 的 Backup) ==========
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ip address 10.10.10.1 255.255.255.0
# VRID 1:Master
[HUAWEI-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.253
[HUAWEI-Vlanif10] vrrp vrid 1 priority 120
# VRID 2:Backup
[HUAWEI-Vlanif10] vrrp vrid 2 virtual-ip 10.10.10.254
[HUAWEI-Vlanif10] vrrp vrid 2 priority 100
[HUAWEI-Vlanif10] quit
# ========== 路由器 B(VRID 1 的 Backup,VRID 2 的 Master) ==========
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ip address 10.10.10.2 255.255.255.0
# VRID 1:Backup
[HUAWEI-Vlanif10] vrrp vrid 1 virtual-ip 10.10.10.253
[HUAWEI-Vlanif10] vrrp vrid 1 priority 100
# VRID 2:Master
[HUAWEI-Vlanif10] vrrp vrid 2 virtual-ip 10.10.10.254
[HUAWEI-Vlanif10] vrrp vrid 2 priority 120
[HUAWEI-Vlanif10] quit
4.3 VRRP + IPv6 配置
# ========== VRRPv3 IPv6 配置 ==========
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] ipv6 enable
[HUAWEI-Vlanif10] ipv6 address 2001:db8:1::1/64
[HUAWEI-Vlanif10] vrrp vrid 1 virtual-ip 2001:db8:1::254
[HUAWEI-Vlanif10] vrrp vrid 1 priority 120
[HUAWEI-Vlanif10] quit
# ========== 验证 ==========
[HUAWEI] display vrrp brief
[HUAWEI] display ipv6 interface Vlanif 10
4.4 故障案例:VRRP 脑裂(Split-Brain)
场景描述:两台 VRRP 路由器同时认为自己是对端,两台都是 Master 状态。终端通信出现时断时续,ARP 表频繁变化。
排查过程:
- 检查 VRRP 状态:
[RTR-A] display vrrp brief
# VRID 1, State: Master, Priority: 120
[RTR-B] display vrrp brief
# VRID 1, State: Master, Priority: 120
# 两台路由器同时为 Master!
- 检查 VRRP 统计:
[RTR-B] display vrrp statistics
# 收到的通告报文数为 0
# RTR-B 从未收到 RTR-A 的 VRRP 通告
- 根因确认:两台路由器之间的二层链路故障,导致 VRRP 组播报文(224.0.0.18)无法到达对端。双方都因为 Master_Down_Timer 超时而将自己选举为 Master。
处理措施:
# 第一步:修复二层链路
# 检查交换机配置和物理链路
# 第二步:恢复后,高优先级的 RTR-A 抢占回 Master
# RTR-B 自动进入 Backup 状态
# 第三步:配置 BFD 快速检测
[HUAWEI] bfd
[HUAWEI-bfd] quit
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 track bfd-session 1 reduced 40
[HUAWEI-Vlanif10] quit
4.5 故障案例:VRRP 抢占导致业务震荡
场景描述:路由器 A 重启后,每次 VRRP 状态切换时,终端都会出现约 30 秒的网络中断。
排查过程:
- 检查 VRRP 日志:
[RTR-A] display logfile | include VRRP
# 路由器 A 重启后,延迟 200 秒后抢占 Master
# 抢占期间,报文从 RTR-B 切换到 RTR-A,导致路由震荡
- 根因分析:抢占延迟(Preempt Delay)设置为 200 秒,等待时间过长。且在抢占期间,路由表尚未完全收敛,导致部分报文丢失。
处理措施:
# 方案一:缩短抢占延迟
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 preempt timer delay 10
# 从 200 秒缩短到 10 秒
# 方案二:关闭抢占模式(不推荐,可能导致次优路径)
[HUAWEI-Vlanif10] undo vrrp vrid 1 preempt
# 方案三:配置 NQA 跟踪,确保路由收敛后再抢占
[HUAWEI] nqa test-instance mytest 1
[HUAWEI-nqa-mytest-1] type icmp-reply
[HUAWEI-nqa-mytest-1-icmp-reply] destination-address ipv4 10.10.10.254
[HUAWEI-nqa-mytest-1-icmp-reply] frequency 3
[HUAWEI-nqa-mytest-1-icmp-reply] probe count 3
[HUAWEI-nqa-mytest-1-icmp-reply] commit
[HUAWEI-nqa-mytest-1-icmp-reply] quit
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 track nqa mytest 1 ipv4 reacted-timeup reduced 40 timedown 3
五、总结
| 项目 | 说明 |
|---|---|
| VRRP 本质 | 将多台物理路由器虚拟为一台,实现默认网关冗余 |
| Master/Backup | 优先级决定主备角色,Master 负责转发 |
| 虚拟 IP/MAC | 终端配置虚拟 IP 作为默认网关 |
| 抢占模式 | 高优先级恢复后自动抢占 Master 角色 |
| 双主问题 | 链路故障导致双方收不到通告,同时成为 Master |
| 华为推荐 | VRRPv3 + 抢占延迟 + BFD 快速检测 + 合理优先级设置 |
思考
-
VRRP 的 Master_Down_Timer 为 3 倍通告间隔 + 2 秒。如果将通告间隔缩短为 0.5 秒,对网络有什么影响?
-
VRRP 双主配置(两个 VRID)实现了负载均衡,但如果一台路由器故障,另一台需要接管所有流量。这种情况下如何确保单机带宽足够?
-
VRRP 只提供了默认网关层面的冗余。如果上行链路故障但路由器本身正常,终端流量仍然会发送到故障路由器的 VRRP 虚拟 IP。如何解决这个问题?
下篇预告:第119篇:VRRP 跟踪上行接口实现联动切换