第119篇:VRRP 跟踪上行接口实现联动切换
关键词:VRRP 跟踪、Interface Track、BFD 跟踪、NQA 跟踪、优先级降低、上行链路故障、联动切换
一、引言
在前一篇第118篇中,我们学习了 VRRP 的基本原理和主备切换机制。然而,VRRP 默认只检测路由器自身的存活状态。如果 Master 路由器的上行接口故障(如连接核心层的链路 Down),路由器本身仍然正常运行,VRRP 不会发生切换。此时终端的流量仍然发送到 Master,但 Master 的上行链路已经不通,导致业务中断。
VRRP 跟踪机制解决了这个问题:通过跟踪上行接口状态、BFD 会话或 NQA 探测结果,当跟踪对象故障时自动降低 VRRP 优先级,触发主备切换。
二、核心概念
2.1 VRRP 跟踪机制分类
| 跟踪类型 | 检测粒度 | 检测速度 | 配置复杂度 |
|---|---|---|---|
| 接口跟踪 | 接口物理状态(Up/Down) | 毫秒级 | 简单 |
| BFD 跟踪 | 端到端连通性 | 毫秒级(3×10ms = 30ms) | 中等 |
| NQA 跟踪 | 端到端应用层连通性 | 秒级 | 复杂 |
2.2 VRRP 跟踪原理

2.3 优先级调整机制
| 状态 | 操作 | 说明 |
|---|---|---|
| 跟踪对象 Up | 恢复原始优先级 | 跟踪对象恢复正常,优先级恢复 |
| 跟踪对象 Down | 优先级 -= Reduced 值 | 优先级降低,可能失去 Master 角色 |
| 优先级降至 ≤ 100 | 触发切换 | 如果 Backup 优先级 > 当前优先级,发生切换 |
2.4 不同跟踪方式的对比

三、技术细节
3.1 接口跟踪(Interface Track)
接口跟踪是最简单的跟踪方式,直接监控指定接口的物理状态。当被跟踪接口 Down 时,VRRP 优先级自动降低。
| 参数 | 说明 |
|---|---|
| 被跟踪接口 | 上行接口,如 GigabitEthernet0/0/1 |
| Reduced 值 | 接口 Down 时优先级降低的值 |
| 恢复时间 | 接口 Up 后优先级立即恢复 |
3.2 BFD 跟踪
BFD(Bidirectional Forwarding Detection)提供毫秒级的连通性检测。VRRP 可以跟踪 BFD 会话的状态,实现快速故障检测。
| 参数 | 默认值 | 说明 |
|---|---|---|
| 发送间隔 | 10ms | 最小 10ms |
| 接收间隔 | 10ms | 最小 10ms |
| 检测倍数 | 3 | 连续 3 次未收到 BFD 报文判定为 Down |
| 检测时间 | 30ms | 3 × 10ms |
3.3 NQA 跟踪
NQA(Network Quality Analysis)提供应用层连通性检测。VRRP 可以跟踪 NQA 探针的结果,实现基于业务可达性的主备切换。
| 参数 | 说明 |
|---|---|
| 测试类型 | ICMP-Echo、TCP、HTTP 等 |
| 探测频率 | 每次探测的时间间隔 |
| 探测次数 | 连续失败次数达到阈值后判定为 Down |
| 反应时间 | Down/Up 的反应延迟 |
四、实战配置/案例分析
4.1 VRRP 接口跟踪配置
# ========== 路由器 A(Master,跟踪上行接口) ==========
# 1. 配置 VRRP 和接口跟踪
[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
# 跟踪上行接口 GE0/0/1,Down 时优先级降低 30
[HUAWEI-Vlanif10] vrrp vrid 1 track interface GigabitEthernet 0/0/1 reduced 30
[HUAWEI-Vlanif10] quit
# ========== 路由器 B(Backup) ==========
[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
# Backup 也配置跟踪,防止自身上行故障
[HUAWEI-Vlanif10] vrrp vrid 1 track interface GigabitEthernet 0/0/1 reduced 30
[HUAWEI-Vlanif10] quit
# ========== 验证 ==========
[HUAWEI] display vrrp verbose
# 查看跟踪接口状态和当前优先级
4.2 VRRP + BFD 跟踪配置
# ========== BFD 单跳会话配置 ==========
# 路由器 A 配置
[HUAWEI] bfd
[HUAWEI-bfd] quit
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] bfd 1 min-rx 10 min-tx 10 multiplier 3
[HUAWEI-GigabitEthernet0/0/1] quit
# 路由器 B 配置
[HUAWEI] bfd
[HUAWEI-bfd] quit
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] bfd 1 min-rx 10 min-tx 10 multiplier 3
[HUAWEI-GigabitEthernet0/0/1] quit
# ========== VRRP 跟踪 BFD ==========
# 路由器 A
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 track bfd-session 1 reduced 40
[HUAWEI-Vlanif10] quit
# 路由器 B
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 track bfd-session 1 reduced 40
[HUAWEI-Vlanif10] quit
# ========== 验证 ==========
[HUAWEI] display bfd session
[HUAWEI] display vrrp verbose
4.3 VRRP + NQA 跟踪配置
# ========== NQA 探针配置 ==========
# 路由器 A 配置 NQA 探针(探测核心路由器可达性)
[HUAWEI] nqa test-instance core-check 1
[HUAWEI-nqa-core-check-1] type icmp-reply
[HUAWEI-nqa-core-check-1] destination-address ipv4 10.1.1.1
[HUAWEI-nqa-core-check-1] frequency 3
[HUAWEI-nqa-core-check-1] probe count 3
[HUAWEI-nqa-core-check-1] timeout 2
[HUAWEI-nqa-core-check-1] commit
[HUAWEI-nqa-core-check-1] quit
# ========== VRRP 跟踪 NQA ==========
[HUAWEI] interface Vlanif 10
[HUAWEI-Vlanif10] vrrp vrid 1 track nqa core-check 1 ipv4 reacted-timeup reduced 40 timedown 3
[HUAWEI-Vlanif10] quit
# ========== 验证 ==========
[HUAWEI] display nqa test-instance core-check 1 results
[HUAWEI] display vrrp verbose
4.4 故障案例:上行接口 Down 但 VRRP 不切换
场景描述:Master 路由器 A 的上行接口故障,终端仍然将流量发送到路由器 A,导致全网无法访问互联网。
排查过程:
- 检查 VRRP 状态:
[RTR-A] display vrrp brief
# VRID 1, State: Master, Priority: 120
# 路由器 A 仍然是 Master
[RTR-B] display vrrp brief
# VRID 1, State: Backup, Priority: 100
# 路由器 B 仍然是 Backup
- 检查 VRRP 跟踪配置:
[RTR-A] display current-configuration interface Vlanif 10
# 未配置 VRRP 跟踪!
# vrrp vrid 1 priority 120
# 没有 track 命令
- 根因确认:VRRP 未配置跟踪机制。当上行接口故障时,VRRP 只检测自身存活状态,不检测上行链路状态。路由器 A 本身仍然正常运行,不会降低优先级,因此不会触发切换。
处理措施:
# 紧急切换:手动降低路由器 A 的优先级
[RTR-A] interface Vlanif 10
[RTR-A-Vlanif10] vrrp vrid 1 priority 80
# 优先级 80 < 100,路由器 B 抢占为 Master
# 永久修复:配置 VRRP 接口跟踪
[RTR-A] interface Vlanif 10
[RTR-A-Vlanif10] vrrp vrid 1 priority 120
[RTR-A-Vlanif10] vrrp vrid 1 track interface GigabitEthernet 0/0/1 reduced 30
[RTR-A-Vlanif10] quit
# 同样在路由器 B 上配置
[RTR-B] interface Vlanif 10
[RTR-B-Vlanif10] vrrp vrid 1 track interface GigabitEthernet 0/0/1 reduced 30
[RTR-B-Vlanif10] quit
4.5 故障案例:BFD 会话震荡导致 VRRP 频繁切换
场景描述:部署 BFD 跟踪后,VRRP 频繁在主备之间切换,终端网络时断时续。
排查过程:
- 检查 BFD 会话状态:
[RTR-A] display bfd session all
# BFD 会话频繁 Up/Down
# Last change: 2 seconds ago
- 检查 VRRP 日志:
[RTR-A] display logfile | include VRRP
# 频繁记录优先级变更和状态切换
- 根因分析:上行链路存在间歇性丢包,导致 BFD 检测超时。BFD 检测间隔配置为 10ms,检测倍数为 3,总检测时间为 30ms。链路抖动超过 30ms 就会触发 BFD 会话 Down,进而触发 VRRP 切换。
处理措施:
# 方案一:调整 BFD 参数,增加容错时间
[RTR-A] interface GigabitEthernet 0/0/1
[RTR-A-GigabitEthernet0/0/1] bfd 1 min-rx 100 min-tx 100 multiplier 5
# 检测时间:5 × 100ms = 500ms,容忍短时抖动
[RTR-A-GigabitEthernet0/0/1] quit
# 方案二:使用 NQA 跟踪代替 BFD 跟踪
# NQA 虽然检测速度慢,但更稳定,不受链路抖动影响
[RTR-A] nqa test-instance core-check 1
[RTR-A-nqa-core-check-1] type icmp-reply
[RTR-A-nqa-core-check-1] destination-address ipv4 10.1.1.1
[RTR-A-nqa-core-check-1] frequency 3
[RTR-A-nqa-core-check-1] probe count 5
[RTR-A-nqa-core-check-1] timeout 3
[RTR-A-nqa-core-check-1] commit
[RTR-A-nqa-core-check-1] quit
[RTR-A] interface Vlanif 10
[RTR-A-Vlanif10] undo vrrp vrid 1 track bfd-session 1
[RTR-A-Vlanif10] vrrp vrid 1 track nqa core-check 1 ipv4 reacted-timeup reduced 40 timedown 5
五、总结
| 项目 | 说明 |
|---|---|
| VRRP 跟踪本质 | 监控外部对象状态,联动调整 VRRP 优先级 |
| 接口跟踪 | 最简单,检测接口物理状态 |
| BFD 跟踪 | 毫秒级检测,适合高可用要求 |
| NQA 跟踪 | 应用层检测,适合业务可达性跟踪 |
| Reduced 值 | 跟踪对象 Down 时优先级降低的值,需合理设置 |
| 华为推荐 | 接口跟踪 + BFD 跟踪组合使用,兼顾速度和可靠性 |
思考
-
如果 VRRP 的 Reduced 值设置过大(如 100),可能导致什么问题?如果设置过小(如 1)呢?
-
BFD 跟踪和接口跟踪可以同时配置吗?如果同时配置,优先级降低是叠加的吗?
-
NQA 跟踪的 timedown 参数表示连续失败多少次后判定为 Down。如果将其设置为 1,检测速度会加快,但会带来什么问题?
下篇预告:第120篇:堆叠与 VRRP 结合的高可用方案