摘要

  • RFC 9568 依据配置的地址所有者、优先级、通告与超时计算,为一个 VRRP 实例选出 Active;这个结果是控制角色,不是经过认证的权威声明,也不是数据面健康证书。
  • 可审计的故障切换必须把选举与虚拟 MAC 迁移、ARP 或邻居发现、接口与邻接状态、上游可达性、彼此独立的 IPv4/IPv6 实例以及真实业务结果连接起来。

故障发生后的几秒钟里,监控画面往往非常漂亮:Backup 不再收到通告,倒计时归零,状态切换为 Active,新通告开始发送。日志没有报错,虚拟地址仍在配置中,自动化系统随即宣布“高可用切换成功”。

用户看到的却可能仍是超时。

这并不表示 VRRP 撒了谎。它只是回答了一个比“网络是否恢复”更窄的问题:当多个路由器在同一局域网中为一个虚拟首跳承担责任时,当前由谁扮演 Active。RFC 9568 精确规定了这场选举,但没有观察选举之后的每一段运行现实。

通告里有什么,也说明了它缺少什么

一份 VRRPv3 通告对应一个 VRID 和一种地址族,携带发送者优先级、最大通告间隔以及受保护的 IPv4 或 IPv6 地址。配置为地址所有者的路由器使用优先级 255;Backup 使用 1 到 254,默认值为 100;优先级 0 表示 Active 正在放弃责任。校验和发现意外损坏,TTL 或 Hop Limit 必须为 255,以限制来自远端网络的注入。

这些字段足以让参与者作出一致的角色决定,却没有携带 FIB、下一跳邻接、上联接口、ACL、NAT、状态服务或应用探测的结果。更重要的是,RFC 9568 明确写明 VRRPv3 不提供认证。本地链路上的恶意或错误配置节点仍可以表现得像 Active,甚至制造多个 Active。255 跳检查划定了远端边界,却没有证明本地发送者的身份与正当性。

因此,优先级 255 只能理解为实例内部的配置声明:这台设备被配置成受保护地址的所有者。它不是注册权属、法律权属或密码学证明。两台设备同时发出 255 时,规范要求运营者记录冲突;协议不会替人决定谁才是真正的权威。

超时能证明沉默,不能诊断沉默

Backup 保存 Active 通告中的时间间隔,并按照自身优先级计算 Skew_Time。三倍通告间隔再加这个偏移量,构成 Active_Down_Interval。优先级较高的 Backup 等待时间较短,从而形成较确定的接班顺序。

计时器到期只证明接收方在这段时间里没有见到合格的通告。原因可能是原设备断电,也可能是组播被过滤、控制进程停顿、局部链路分区或单向丢包。反过来,一台数据面已经失效的路由器仍可能持续发送健康的 VRRP 通告。控制通道的沉默与发声,都不能自动诊断整条业务路径。

把间隔调得更短,可以更早产生角色变更,却不能强迫交换机刷新 MAC,不能让所有主机接受邻居通告,也不能修复上游路由。RFC 9568 还指出,高优先级但发送较慢的 Active 与发送较快的低优先级 Backup 之间可能出现暂时竞争;多个 Backup 的优先级差距太小时,也可能几乎同时成为 Active。速度设置同时也是稳定性设置。

虚拟 MAC 还要穿过真实链路

新的 Active 必须使用虚拟 MAC,并通过 ARP 或 Neighbor Discovery 让链路上的设备认识新的位置。从“发出了正确通告”到“所有相关流量已经抵达新端口”,中间至少隔着交换机学习、邻居缓存更新和安全策略三层现实。

路由器旁边的抓包只能证明它发送了消息。某台交换机可能仍把虚拟 MAC 指向旧端口;部分主机可能接受更新,另一些保留旧缓存;端口安全策略也可能过滤非请求通告。RFC 9131 特别提醒,IPv6 的非请求邻居通告有时还需要额外配置,才能真正更新对应缓存。链路收敛不是一次原子写入。

Ping 也不能独自裁决。Accept_Mode 默认关闭;非地址所有者成为 Active 后,可以不把发往受保护地址本身的普通报文当作本机流量,却仍然正确转发以该地址为首跳的过境流量。因此,Ping 失败不必然等于转发失败;Ping 成功也只说明到达了这个局部目标,不能证明上游路径和应用终点可用。

双栈共享机箱,不共享结论

RFC 9568 把 IPv4 与 IPv6 虚拟路由器视为独立实例。它们可以运行在同一台设备上,也可以有相同的运维名称,但一个实例的 Active 状态不会自动传递给另一个实例。IPv4 的 ARP 已收敛时,IPv6 邻居缓存仍可能陈旧;两个地址族甚至可能由不同设备担任 Active。

这也是单一“网关正常”图标最容易掩盖的地方。双栈业务可能只恢复一半。IPv6 Router Advertisement 还可能携带特殊服务选项;规范要求只有当 Backup 能完整接管相应服务且状态已经同步时,地址所有者才应发送这类选项。能够接管地址,不等于能够接管地址背后的全部能力。

最小可用证据链

一次可以被复盘的切换,至少需要九类记录:准确的 VRID、地址族与受保护地址;所有者配置、优先级、通告间隔、抢占与接收模式;最后一份有效通告;超时计算;平票或优先级决定过程;交换机看到的虚拟 MAC;多个位置看到的 ARP 或邻居缓存;新 Active 的接口、邻接、转发表和策略;最后是按 IPv4、IPv6 分开测量的丢包、恢复时间与应用结果。

BFD 在被明确接入决策时,可以提供双向转发路径的额外信号。VRRP 的 YANG 模型可以提供状态与计数器。它们都不会隐藏在 Active 这个词里。只有把这些证据面与实际流量连起来,运营者才有资格把“选举完成”升级为“服务恢复”。

RFC 9568 的价值恰恰在于边界清楚:让终端无需参与复杂协议,也能获得本地首跳冗余。错误不是协议太窄,而是组织让一个窄而准确的标签承担了它从未获得的权威。

来源