摘要

  • 当前草案建议在政策选择的数据平面转发表中解析 BGP next hop,并允许用同一数据平面的 OAM 机制检查路径可用性。
  • 草案允许按需检查,也允许预先取得结果,却没有规定结果寿命、启动状态、失效后的含义以及状态变化如何触发 BGP 重评。
  • 如果探测能够排除路径,证据就必须绑定转发表代际、时间、方法、政策版本和排除原因;服务结果仍需独立验证。

凌晨 02:14,MPLS 路径完成了一次重算。旧 LSP 被新路径替换,转发表代际已经变化。02:15,BGP 重新评估一条 VPNv4 路径,却读到 02:12 生成的 OAM 结果:down。那次探测针对的是已经不存在的路径。系统没有保存两者的代际关系,只看到一条尚未过期的负面状态,于是排除 next hop,撤回路由。

真实数据平面已经恢复。证据还停留在三分钟前。

这是一种基于现有草案和评审问题构造的控制场景,并非对某个厂商事故的陈述。draft-ietf-idr-bgp-bestpath-selection-criteria-13 发布于 2026 年 9 月 14 日,是 IETF IDR 工作组的现行 Internet-Draft,目标状态为 Proposed Standard;若获批准,它将更新 RFC 4271。目前它不是 RFC。Datatracker 显示专家评审问题尚待解决,需要修订版本;Routing、Operations、Security 和 BGP 四份早期评审都认为文本还不能直接推进。

草案要解决的问题真实而具体。RFC 4271 在 best-path 决策前要求路径满足 Route Resolvability Condition。可是在 MPLS VPN 等网络里,IP 表能解析 next hop,不代表承担实际转发的 MPLS 路径可用。PE 可能继续向客户侧吸引流量,而 LSP 因标签转发表缺项、绑定错误或中间故障已经无法工作。

修订 13 提出两项增强。第一,next-hop reachability 应当在政策选中的特定数据平面转发数据库里解析。第二,可以用与该平面关联的 OAM 存活机制检查到 next hop 的功能路径,而且所检查的数据平面必须同第一项一致。

草案同时把机制选择、数据平面选择和政策放在范围之外。检查可以因这次判断而触发,也可以事先完成。正是“事先完成”把证据寿命带进了 BGP 决策,却没有说明它该活多久。

一条结果至少有三个时间

任何存活判断都不能只存一个时间戳。它至少涉及采样开始时间、采样完成时间和被决策消费的时间。若检查包含多个报文,还要知道有效窗口。若中间发生转发表更新、隧道重算、标签重绑或政策变更,旧结果是否仍能描述新对象,必须有明确规则。

把 down 缓存五秒、三十秒或五分钟,并不是性能参数那么简单。它决定一份观察可以在多长时间内排除路径。把 up 缓存同样久,则决定一份旧的好消息可以把故障路径保留多久。正负结果可能需要不同寿命;启动期、缺少机制和认证失败也不能自动归入负面。

草案没有规定这些细节。评审进一步提出:当 OAM 尚未收敛、不可用或者发生变化时,路由算可解析还是不可解析?RFC 4271 要求可解析性变化时重新运行决策过程,但修订 13 需要明确第一、第二项状态变化如何触发重评。

因此系统应保存的不只是 up/down,而是对象标识、数据平面、精确表或 VRF、转发表代际、探测方法、探测范围、开始与完成时间、最长有效期、认证状态、政策版本以及消费时间。若任一关联失配,合理状态是 indeterminate,而不是继续相信最后一个颜色。

观测链会反过来塑造路由

原问题是一种假阳性:IP reachability 说“可以到达”,但 MPLS 实际不能转发。引入同平面检查能够暴露这个差异。反向问题是假阴性:探测说路径不可用,而生产数据仍能通过。Operations 评审指出,错误的负面结果可能撤掉好路径,从相反方向制造草案想防止的黑洞。

Security 评审把影响推得更远。若 OAM 结果能决定候选资格,能够丢弃、延迟或伪造探测报文的人,就可能让所有共享这个 next hop 的路由被排除。BGP 会把本地测量故障变成对外撤回或替换;双归属场景中还可能把流量导向另一条路径。

BFD 和 LSP Ping 是评审引用的例子,草案本身没有指定其中任何一种。RFC 5880 讨论 BFD 被错误宣布为 up 或 down 的风险;RFC 8029 讨论 LSP Ping 的伪造、重放和篡改。认证可以约束身份与完整性,却不能让在途攻击者必然转发探测,也不能证明探测和业务流量遭受完全相同的处理。

这意味着“测量系统是否健康”必须同“被测路径是否健康”分开。探测进程 CPU 饱和、调度抖动、控制队列拥塞、认证密钥不同步和报文过滤,都是测量失败而非必然的转发失败。把它们合并为一个负面位,会让监控系统获得制造网络事件的能力。

表的身份也会随时间变化

第一项检查同样存在时间问题。草案写的是在某个特定数据平面的 forwarding database 中解析,但没有指出 VRF、实例或具体表。客户前缀与隧道 endpoint 可能在不同表里解析。表的内容又可能在 BGP 重评前后发生变化。

所以一次可复现的判断要绑定:收到的路径、peer、AFI/SAFI、VRF、递归 endpoint、选中的数据平面、表标识、表代际、政策版本、查找结果和决策原因。只记录“当时存在 MPLS entry”不够,因为无法证明 BGP 使用的是哪一代、哪张表、哪条递归链。

草案引用的 RFC 5512 已被 RFC 9012 取代,后者已经涉及 BGP 隧道封装与可解析性。评审还提到 SR Policy 和更新的彩色解析工作。多个机制可以影响实际传输时,优先级必须能被检查;否则版本升级会在不改变业务意图的情况下改变哪份状态拥有权力。

到达 next hop 仍不是交付服务

即使时间、对象和方法完全匹配,正面结果的证明范围仍然有限。它可以说明某个机制在某段时间内收到了预期响应,或某张表里存在有效转发项。它不能证明所有 ECMP 成员、所有 FEC、远端 VRF、客户前缀、返回路径和应用处理都成功。

完整链条应依次保留:BGP 收到路径;政策选择数据平面与表;转发状态被读取;OAM 得出有时限的结果;政策将其解释为 eligible、ineligible 或 indeterminate;BGP 重跑选择;本地完成安装或删除;更新被邻居处理;独立业务流量验证转发;应用证据确认结果。

撤回是控制平面动作,不是故障真相。best path 是被选中的候选,不是业务交付凭证。OAM 回复是局部存活证据,不是服务级承诺。把三者分开,才能在出现矛盾时知道该调查哪一层。

可逆性必须包含清除旧证据

评审质疑草案关于“预计不会影响 BGP 收敛”的表述。PE 网状环境中的 per-next-hop 会话有规模成本。一个结果抖动时,所有共享 next hop 的路由可能一起切换;撤回与重发布还会传播到 CE 或更远。部分部署则使不同 speaker 使用不同候选集合。

上线前应先运行影子模式:计算增强后的资格,但不改变 best path。运营者比较结果与生产计数器、独立探测和应用成功率,统计假阴性、结果年龄、共享路由数量和潜在更新量。只有证据稳定后,才定义强制策略、迟滞、冷却和人工 override。

回滚不只是关闭 OAM。它必须撤销由旧结果产生的资格状态、恢复已知政策版本,并触发受影响路由重新评估。如果缓存的 down 在机制停用后继续存在,所谓回滚只把原因藏得更深。

修订 13 的重要洞见是:IP 控制平面不能替实际数据平面作证。下一步同样重要:一份没有对象代际和寿命的探测结果,也不能替当前数据平面作证。证据何时过期、何时重做、谁能覆盖,都是路由权力的组成部分,而不是监控页面的实现细节。

来源