VRRP 切换慢到怀疑人生,这个优化方法了解一下
1. 现象与典型误判
-
现象:上联断了,或者主设备重启,VIP 切过去要 3~10 秒,期间业务断续。
-
常见误判:
- “VRRP就是这么慢”——不对,默认慢,可调到亚秒级。
- “切过去了但还不通”——多半是下游 ARP/MAC 缓存没刷新,或者上游路由没联动。
- “接口都UP”——链路物理好不代表上行路由/出口可达。
2. VRRP 为啥默认慢?(先把原理掰直)
VRRP Master Down 的检测时间由广告报文间隔决定:
- Master_Down_Interval = 3 × Adv_Interval + Skew_Time(Skew 随优先级略微调整)
- 默认 Adv_Interval=1s → 大约 3s+ 才感知主挂了
想更快,就两条路:
- 把 Adv_Interval 拉到毫秒级;
- 用 BFD/NQA 做外部探测,一丢就立刻降优先级/切换。
3. 真正的瓶颈在这四个环节
-
故障检测:你多久意识到“主不行了”?(Adv、BFD、NQA)
-
角色切换:备能不能马上抢到 VIP?(抢占/延时)
-
邻居刷新:周边设备多久知道“VIP 换 MAC 了”?(GARP/NA 刷新、广播抑制)
-
上行联动:切过去那台真的有上行/路由吗?(track 接口/路由/探测)
4. 优化思路一图流(拿去做Checklist)
-
检测提速:Adv 毫秒级 + BFD/NQA 旁路探测
-
联动到位:track 上联接口/静态路由/探测会话,降优先级切换
-
控制抢占:开启抢占但加延时,等路由/邻接就绪再接管
-
强制刷新:发送Gratuitous ARP/NA,快速更新下游缓存
-
清理围挡:别让 224.0.0.18(VRRP组播) 和 GARP 被 ACL/风暴抑制挡了
-
可观测:打点监控+压测演练,算出真实收敛时间
5. 华为(VRP)实战模板(IPv4 示例)
★场景:双核心(主备)为接入网关,要求切换 <300ms,上联链路/出口可达性联动,避免抖动。
5.1 主/备共同基础
# 接口作为网关的三层SVI
interface Vlanif 10
ip address 10.10.10.2 255.255.255.0
#
# VRRP 基本
vrrp vrid 10 virtual-ip 10.10.10.1
#
# 广告周期下到毫秒级(100ms示例)
vrrp vrid 10 timer advertise msec 100
#
# 允许抢占,但延时接管(等路由/BGP/OSPF稳定再上VIP)
vrrp vrid 10 preempt-mode timer delay 5
#
# 发送GARP刷新邻居缓存(有平台默认会发,显式再打开/增强)
vrrp vrid 10 gratuitous-arp enable
#
# (可选)增强发送次数与间隔——不同版本命令略异,可参考:
# arp gratuitous send count 5 interval 200
5.2 主设备(提高优先级)
interface Vlanif 10
vrrp vrid 10 priority 120
# 追踪上联:上联口down则降优先级30,触发切换
vrrp vrid 10 track interface GigabitEthernet1/0/48 reduced 30
# 追踪出口路由可达性(用NQA/BFD)
# --- NQA 探测公网/上游回环IP ---
nqa test-instance icmp vr10-to-upstream
test-type icmp
destination-address 100.64.0.1
frequency 1
timeout 200
start now
# 绑定 track 条目(实际命令随版本可能为 track nqa)
track 10 nqa vr10-to-upstream
#
interface Vlanif 10
vrrp vrid 10 track track-entry 10 reduced 50
5.3 备设备(低优先级)
interface Vlanif 10
vrrp vrid 10 priority 100
# 同样追踪上联与NQA,这样“主/备”都能感知自身可用性
vrrp vrid 10 track interface GigabitEthernet1/0/48 reduced 30
vrrp vrid 10 track track-entry 10 reduced 50
5.4 BFD 快速联动(可替/可并,用于<200ms)
# 与上游邻居建BFD会话(示例语法,实际以现场版本为准)
bfd
quit
# 绑定会话
interface GigabitEthernet1/0/48
bfd enable
bfd min-tx-interval 50
bfd min-rx-interval 50
bfd detect-multiplier 3
#
interface Vlanif 10
vrrp vrid 10 track bfd-session GigabitEthernet1/0/48 reduced 60
★说明:BFD/NQA二选一或并用;并用时优先以更快的触发为准。毫秒级广告+ BFD 双保险,通常能把切换压到 100~300ms。
6. 邻居刷新:别让“已经切”变成“还没通”
-
GARP/NA 必须能跑起来:
- 新 Master 抢到 VIP 后主动发 GARP(IPv6 发无请求 NA),让接入交换机/服务器立刻更新 VIP→新MAC映射。
-
别被限速/丢弃:
- 检查接入交换机是否对 GARP/组播做了风暴抑制/ACL;
- 下游服务器/虚机安全策略是否禁止 ARP 响应;
-
下游老化调优:
- 对关键网段,可适当降低 ARP/MAC 老化时间,配合 GARP 冲刷更快收敛。
7. 验证与打点(别凭感觉)
目标:端到端收敛 <300ms(按你的SLA微调)
-
-
观测手段:
- display vrrp / display vrrp brief 看状态切换时间戳;
- display vrrp statistics 看收发广告、抢占次数;
- display bfd session all 看检测时延;
- display arp dynamic 观察 VIP 的 MAC 是否立刻切到新 Master;
-
-
-
在业务端跑持续 ICMP/TCP 探活,记录 RTT/丢包窗口;
-
设备侧:
-
-
演练脚本:
- 拔/禁上联口、禁上游路由、重启主机进程,各测一次;
- 记录每次第一包恢复时间与稳定时间,存档对比。
8. 常见坑位清单
-
只改VRRP计时,不做链路/路由联动:出口其实不可达,切过去也“假通”。
-
开了抢占但不延时:路由/BGP/OSPF还没好就接管,抖动从此伴你。
-
GARP被挡:组播/广播被风暴抑制或ACL限了,“切了但不通”的高发源。
-
跨L2域过深:VRRP 报文 224.0.0.18 路上被奇怪设备处理,偶发建组异常。
-
堆叠/IRF场景还用VRRP:本该用同一控制平面,没必要再漂VIP。
-
IPv6 忽视 NA:只顾 ARP,忘了邻居通告,v6 侧还是慢。
9. 什么时候干脆别用 VRRP?
- 核心/汇聚能上 IRF/VSF/Stack/MC-LAG(多活网关/Anycast GW) 的,优先上;
- 数据中心里搞 EVPN + Anycast GW,比“漂VIP”更干净、省事、快。
10. 一句话落地
检测要快、联动要准、接管要稳、刷新要狠。
把 Adv 毫秒级 +(BFD/NQA)+ track 上联/路由 + 抢占延时 + GARP 强刷 这套组合拳打全,VRRP 从“几秒挪窝”进化到“百毫秒切换”,不是问题。