摘要

  • 普通 BGP NEXT_HOP 可达仍是必要条件,但在隧道与分段路由环境里,真正决定转发的端点、上下文和数据源可能完全不同。
  • 路径解析元组要求可达性、偏好、度量与跟踪来自同一次解析;管理层还应把选择、安装和实际交付分别留证。

地址活着,通道未必存在

RFC 4271 的经典模型很直观:确认 NEXT_HOP 可达,取得到该地址的内部开销,再把这份信息用于最佳路径选择。GRE、MPLS、SR Policy 与 SRv6 却把控制平面地址和实际承载流量的对象拉开了距离。外层地址可能正常,而某个隧道端点、策略或服务 SID 已经失效;也可能有多个解析系统分别返回含义不同的“成本”。

IDR 工作组于 2026 年 9 月 24 日发布了 BGP Best Path Selection Based on Next Hop Resolution 第 00 版。这是一份拟进入 Standards Track、若获批准将更新 RFC 4271 的互联网草案。它还不是 RFC,不代表最终共识,更不是部署普及率的证明。

草案提出的核心审计单元是路径解析元组:一个解析键,加上可选的解析上下文。解析键是候选 BGP 路径需要解析的对象,可以是普通 NEXT_HOP,可以是 RFC 9012 的 Tunnel Egress Endpoint,也可以是 RFC 9252 的 SRv6 服务 SID。解析上下文则说明使用哪套过程和数据源,例如 Tunnel Encapsulation 属性、Color 扩展团体,或 SID 之外的 SRv6 子 TLV 信息。

因此,即使解析键都叫 N1,{N1, C1} 与 {N1} 也不是同一份证据。前者可能要求在 SR Policy 数据源中按特定上下文解析,后者只是普通下一跳查找。上下文不同,甚至一个有上下文、一个没有上下文,就构成不同的解析请求。

真正的防线是“同一次解析”

这份草案最重要的控制并不是某个排序公式,而是原子性规则:一条路径的可解析性、解析键偏好、度量和跟踪状态必须指向同一次解析。实现不能从上下文 A 取“可达”,再从上下文 B 取一个更便宜的度量,最后把二者包装成一条好路径。那份合成记录也许数字漂亮,却没有任何系统真正解析过它所描述的转发通道。

解析约束负责限定哪些路由或数据源可以满足元组。它可以要求特定隧道类型、禁止通过聚合路由解析,或规定一种有序的传输类别方案。约束不是元组的第三个字段,而是本地解析规则。

普通 NEXT_HOP 检查仍然必须保留。草案增加的是受约束的路径解析元组检查,并允许通过配置启用。换言之,隧道对象看似可用,不能成为忽略传统下一跳已经断裂的借口。

度量也不能见到数字就比较。某个元组返回 IGP 开销,另一个返回时延,第三个可能根本没有度量。数值相同不代表尺度相同。第 00 版为此引入本地数值型的解析键偏好,数值越小越优先,先把不同解析机制分层;完成偏好过滤后,内部开销只能来自该路径自己的解析元组。元组可解析但没有度量时,应使用允许的最大开销,而不是从别处借一个看起来更有利的数字。

八张收据不能合并

可靠的路由决策至少需要八类独立记录。

通告收据保留原始路由、NEXT_HOP 及隧道或分段路由属性;元组收据记录解析键、上下文和推导规则;约束收据指出本地策略与合格数据源;解析收据把可达性、偏好、度量、转发数据和观察时间绑定成一个原子结果。

随后,选择收据记录候选集合、偏好过滤、可比成本步骤和最终决定;跟踪收据记录普通下一跳及每个上下文不同的元组订阅,包括非最佳路径;安装收据观察实际进入 RIB、FIB 与封装状态的内容;交付收据独立测量报文路径和服务结果。

前一张收据不能替代后一张。被选中的路径可能安装失败;已经写入硬件的隧道可能把流量送到意外位置;SID 可达也不证明应用成功。草案列出的拥塞、丢包和误路由是问题陈述,不是现网发生率,也不是新机制疗效的实测结论。

跟踪系统不能抹掉上下文

解析状态会在选路之后变化。草案要求 BGP 设备同时跟踪普通下一跳和路径解析元组;任何一方变为不可解析,或者元组度量变化,都应触发所有相关前缀重新评估。

订阅身份必须足够精确。相同解析键但不同上下文的元组不能合并。只跟踪当前最佳路径也不够,因为一条非最佳路径可能在没有新通告的情况下重新获得资格。如果实现把 {N1, C1} 和 {N1} 去重成同一个 watcher,它恰好删除了元组机制最想保存的证据边界。

公共规则应小,本地责任要清楚

这与 Heng Lu 关于最小初始规范、未来决策本地化与自愿采用的主张一致。公共标准可以规定元组身份,也可以禁止跨上下文拼证据,却不必替所有运营者决定应偏好哪种传输。约束、偏好值与上线顺序仍由各管理域自行承担。

他的权威与信念之分同样适用:BGP 通告是某个发言者通告了什么的权威记录,解析结果是某套路由系统找到了什么的记录;二者都不迫使我们相信报文已经按意图前进。运行代码优先则给出最后一道纪律:要谈实现效果,就要拿出版本化软件、原子日志、已编程状态和报文观察,而不是只引用规范图示。

这篇讨论也不能被折叠成 RFC 9830 的传输类别问题。Color 可以进入解析上下文,但本文关心的不是颜色导入和 SLA 设计是否正确,而是一次 BGP 决策的所有输入是否真的来自同一个解析现实。

草案状态与边界

第 00 版建议同一管理域内的 BGP 设备使用一致的选择配置。一致配置可以减少设备间分歧,却不能证明数据平面实现了控制平面意图。草案认为该机制没有增加超出现有 NEXT_HOP 使用的安全考虑,但错误约束、陈旧数据源和偏好漂移仍会造成运营风险。

草案文本可能继续变化;实现可能尚不存在,也可能无法输出足够证据来验证原子性。它当前最大的价值,是把一个不该发生的捷径说清楚:不要用关于不同路径的事实,拼出一条看似完整、实际不存在的路径。

来源