Summary

  • BGP End-of-RIB 表示会话建立后,某一个地址族的初始路由更新已经完成;它不是覆盖所有 AFI/SAFI 的全局新鲜度证书。
  • Graceful Restart 有意允许接收端保留并标记 stale 路由,同时继续转发。路由替换、陈旧状态清理、本地选路、FIB 下装和数据面可用性仍是不同证据。
  • 运营人员需要按 peer 和地址族建立“重启到刷新”回执,把重启原因、协商能力、保留集合、EOR、清理、FIB 与真实路径测试连在一起。

会话先于证据恢复

设想一台路由器重启后重新建立了 BGP 会话。IPv4 unicast 的 EOR 到达,监控系统于是把会话改成绿色。与此同时,另一个地址族仍含有旧会话保留下来的路由,其中一条流量还在使用重启前形成的转发表项。

第一份 EOR 并不否定这种状态。它只关闭特定地址族的初始更新,既不代表会话协商的其他地址族,也不测试被保留转发状态是否仍然可用。错误不在于相信 EOR,而在于把一项有明确边界的协议事实扩展成全网路由已经刷新的判决。

这种扩展在 Graceful Restart 中尤其诱人,因为保连续性正是功能目标。保留转发可以避免不必要的抖动和短暂丢包;但同一个机制也创造了一段时间窗口,使“还在转发”与“已重新验证”成为两种状态。

EOR 真正关闭了什么

RFC 4724 对 IPv4 unicast 的 EOR 定义,是一条没有可达 NLRI、也没有撤回 NLRI 的 UPDATE。其他地址族则使用只含 MP_UNREACH_NLRI 且没有撤回路由的报文,并明确限定到某个 <AFI, SAFI>。speaker 在完成该地址族的初始更新后发送它,即使没有更新需要发送也是如此。

作用域已经写进编码。IPv4 EOR 不说明 IPv6、VPN、EVPN 或任何其他地址族。即使对同一地址族,它也只表示发送端已完成准备发送的初始更新。接收端仍要应用更新、用新路由替换 stale 路由、删除剩余 stale 项、执行本地选路并编程转发。

RFC 4724 还把 EOR 生成能力与保留转发能力分开。speaker 可以在不列出任何地址族的情况下通告 Graceful Restart Capability,仅用来表示它会生成 EOR 并支持正在重启的 peer。因此,看到 capability 或 EOR 都不能证明本机保留了可用的转发状态。

Restart State bit 解决的是另一项协同问题。正在重启的 speaker 会在新的 OPEN 中设置该 bit;peer 看到后,不能等待这台 speaker 的 EOR 才向它重新通告路由。会话恢复后,重启端针对每个地址族延迟选路,直到收到相关 peer 的 EOR,或 Selection_Deferral_Timer 到期;随后才执行选路、更新转发、删除自身 stale 信息,并发送该地址族的 EOR。若只保存 EOR 时间而丢掉这段先后关系,就会把“peer 的更新已经结束”与“本地转发已经完成”混为一谈。

被保留的路由明确标为 stale

接收端发现一个曾为某地址族通告 Graceful Restart 的 peer 会话丢失时,会保留该地址族的路由,并把它们标记为 stale。转发时,路由器不会把这些 stale 信息与其他路由区别对待。这是刻意设计的连续性,不是新鲜度声明。

清理规则提供了缺失的时间边界。会话若未在 peer 通告的 Restart Time 内重建,保留的 stale 路由必须删除。会话重建后,如果新的 capability 不再包含该地址族、Forwarding State bit 未设置,或 capability 根本没有收到,也必须立即删除。新 UPDATE 会替换 stale 路由;该地址族 EOR 到达后,仍被标为 stale 的剩余路由必须清除。

因此,路由身份和去向比会话图标颜色更重要。EOR 前,保留路由可能仍在等待替换;EOR 给出删除剩余项的边界;EOR 后,本地选路和 FIB 仍需形成可用结果。

转发可用性是另一项观察

按地址族携带的 Forwarding State bit 说明重启期间是否保留了转发状态。RFC 4724 把它与实际保留联系起来,同时保留配置限定。它不是报文测试。RFC 明确把“如何判断 peer 的转发状态仍然可用”留在范围之外,只把 BFD 或二层监测作为例子。

被保留的下一跳可能在路由仍被保留时失效,本地 FIB 也可能落后于 RIB。即使会话已经回来并处理 EOR,流量仍可能黑洞或成环。反过来,stale 标签本身也不能证明报文失败;被保留的转发可能正在准确实现 Graceful Restart 的目标。

RFC 8538 在双方交换 N bit 时,把 graceful 行为扩展到合资格的 NOTIFICATION 和 Hold Time 到期。两端此时都按 receiving speaker 行事并保留对方路由;Hard Reset 则要求完整重置。N bit 已交换时,连续重启场景中“删除此前已标记 stale 路由”的规则会被放宽,因此 stale timer 成为防止无限保留的关键边界。该扩展强制实现可配置 stale timer,建议默认 180 秒,并警告长时间或无限保留会带来运营问题。

来源