摘要

  • RFC 9723 复用 IPv6 单播 AFI/SAFI 2/1 和 Color Extended Community,传播带意图的 SRv6 locator 前缀;SRv6 Service SID 通过对这些彩色前缀做最长匹配而被引向域内路径。
  • 看见颜色只证明一项控制面声明。它不证明每个 AS 使用同一版意图词典、不证明路由已进入每台设备的 FIB、不证明预期前缀赢得匹配,也不证明时延、隔离或可用性目标已经实现。
  • 可审计的服务结论必须连接颜色语义、locator 分配、BGP 传播、每域 (下一跳, 颜色) 解析、RIB/FIB、实际匹配、包路径、服务测量以及反向撤销。

最容易被忽略的是中间那个 AS

设想一项跨三个 AS 的企业服务。源端 PE 为“低时延”业务分配了一个位于彩色 locator 下的 SRv6 Service SID。第一个 AS 的路由表显示颜色 C1,第三个 AS 的收集器也看到 C1。两端都绿了。

但第二个 AS 尚未支持 CPR。它的边界路由器忽略 Color Extended Community,把下一跳解析到尽力而为的域内路径,同时继续向下游传播彩色前缀。这正是 RFC 9723 为增量部署规定的兼容行为。颜色完整地穿过了控制面,意图却没有完整地穿过数据面。

问题不在协议“失灵”,而在证据被错误合并。两端关于颜色的记录可以同时为真,端到端低时延结论仍然没有成立。运营者必须追问:谁负责解释颜色,谁把它解析为路径,谁证明路径进入硬件,谁证明包真的走过,最后又由谁承担服务承诺。

RFC Editor 状态页与 IETF Datatracker显示,RFC 9723 于 2025 年 5 月发布,类别为 Informational,并非 Internet Standards Track specification。勘误查询是规范状态记录,不是实现合格证。

用地址层级承载意图

RFC 9723 没有另造 BGP 地址族。它复用 RFC 2545 所描述的 IPv6 单播跨域传播基础,即 AFI/SAFI 2/1,并携带 RFC 9012 中既有的 Color Extended Community。IANA BGP Extended Communities 注册表保存公共分配面;RFC 9723 本身没有新的 IANA action。

一个 SRv6 PE 可以把 base locator 切分成更具体的 sub-locator,每个子前缀关联一种颜色与意图,例如低时延或高带宽。PE 传播带颜色的具体前缀,也可以同时传播不带颜色的覆盖性 base locator。

某项服务的 Service SID 被分配在相应彩色 locator 之下,服务路由按 RFC 9252 发布。在 RFC 9723 使用的 Option C 情形中,服务路由的下一跳保持原始 PE。意图已经体现在 SID 所属的 locator 结构里,因此服务路由不必再次带 Color Extended Community。

入口 PE 把 Service SID 放进外层 IPv6 目的地址。若相应 CPR route 已经接收并安装,路由器就对 Service SID 与彩色前缀执行最长前缀匹配,得到指向域内 color-aware path 的下一跳;每个跨域边界重复这一过程。它的效率来自普通 IP 转发:无需为整条跨域路径另加专用传输标签或 SID。

风险也来自同一处。业务意图不是在服务路由上再次声明,而是由四项关系推导出来:Service SID、覆盖它的前缀、当时赢得最长匹配的那条路由、该路由当时携带的颜色。任何过期或意外的更具体路由,都能在不改变 Service SID 的情况下改变实际结果。

颜色词典必须有负责人和版本

RFC 的普通情形假设同一受信域内各 AS 对颜色含义保持一致;特殊情形允许边界节点根据 color-mapping policy,把一个域的颜色改写成另一个域代表同一意图的颜色。

两种情形都不会自证。BGP 可以传播 32 位值,却不会认证“低时延”的业务含义、阈值、测量窗口、批准者与生效时间。即使 BGP 会话完成身份和完整性保护,语义协议仍位于线协议之外。

因此颜色词典本身就是受治理的运行资产。每条记录至少应包括:颜色值、自然语言意图、可测目标、适用 AS 与服务范围、版本、所有者、批准人、生效与废止时间、允许的跨域映射。每台边界路由器的策略要能指回它连接的两个确切版本。没有这些字段的 route receipt 只能证明“带来了一个数字”。

RFC 9723 把同一彩色前缀同时出现不同 Color Extended Community 视为 misconfiguration。遇到这种冲突,系统不应偷偷挑一个继续给 SLA 打绿灯。它应保存两份观察、冻结自动保证、定位各自的来源和策略版本,并记录最终由谁解除冲突。

(N,C) 只是交给本地系统的一道题

边界节点收到 CPR route 后,可以用 (N,C)——BGP next hop 与颜色——解析域内 color-aware path。可选机制包括 SRv6 Policy、SR-MPLS Policy、SRv6 Flex-Algo、SR-MPLS Flex-Algo 或 RSVP-TE。详细解析政策由各域自行决定。

同一颜色由此可能在三个 AS 触发三种完全不同的机器。第一个域把 C1 绑定到显式 SR Policy,第二个域用 Flex-Algo,第三个域只在候选路径有效时采用,否则回退。RFC 9256说明 SR Policy 自己还有 candidate path、validity、preference、active path 和 fallback 状态。颜色是路径选择的输入,不是选择结果。

每个域都应保留收到的 prefix、next hop 与 color,映射政策版本,合格的路径机制,被选中的 candidate 及原因,validity/liveness,回退规则和最终编程的下一跳。控制器的 intended state 不能冒充路由器 readback。

最长匹配能保住可达性,也能悄悄抹掉意图

base locator 覆盖彩色 sub-locator。为让更具体的彩色前缀抵达入口 PE,RFC 9723 要求携带 Color Extended Community 的 IPv6 单播路由禁用聚合。

典型误判发生在 /68 彩色前缀撤走而 /64 无色 base locator 仍然存在时。Service SID 依旧可达,一个简单 ping 甚至可能成功。但最长匹配已经变了,包走的也不再是原本的低时延路径。这里恢复的是连接,不是服务意图。

反方向同样危险:一条意外的更具体路由可能遮蔽授权的彩色前缀。因此 FIB 审计不能只问“预期前缀在不在”,而要对代表性 Service SID 计算当时真正获胜的最长匹配,并保存整条覆盖前缀链、路由年龄和撤销历史。正向 canary 要证明该走的处理,负向 canary 要证明不该走的泄漏没有发生。

RIB 接收仍不等于 FIB 安装。RFC 9723 明确要求边界节点与入口 PE 把彩色 locator 前缀装入 RIB 和 FIB。政策拒绝、递归解析失败、硬件容量、编程延迟或线卡陈旧,都可能让控制面看见路由而包行为不变。

增量部署也是一条明确的降级路径

不支持 CPR 的 transit AS 会忽略颜色,按 best effort 解析下一跳,却仍把彩色路由向下游传播。兼容性和可达性因此得到保存,同时端到端保证出现一个定位清楚的断点。

运营记录应建立 capability path:哪些 AS 与边界支持 CPR,哪些接收并解析颜色,哪些忽略颜色,fallback 从何处开始,服务负责人是否授权这次降级。下游重新看见 C1,不能推断上游所有域都按 C1 转发。

多条 EBGP 路径还引入本地政策。路由器可综合链路属性和 CPR route 属性,选择更符合意图的 best path;RFC 9723 把详细政策留在范围外,同时指出多 AS 政策需要一致。这是一项需要证明的运维要求,不是一条自动成立的事实。

“受信域”不是测量结果

RFC 9723 把机制限定在同一运营者的多个 AS,或存在运营信任模型的不同运营者 AS。RFC 8402描述 SR trusted domain,也要求 SID 来自受信来源、冲突有确定性处置,并指出必须用 OAM 验证路径有效性、存活与性能;默认交付仍是 best effort。

“受信”要拆成可核查控制:BGP peer 授权、路由过滤、origin/next-hop policy、颜色词典保管、控制器写权限、配置复核、RIB/FIB readback 和数据面观察。把多个 AS 叫作一个 trusted domain,不能证明它们运行同一版本,也不能排除域内攻击者。

RFC 9723 还指出,颜色与意图的映射对域内 BGP 节点可见,on-path attacker 可能识别特定意图的流量。RFC 4271及 RFC 4272保留 BGP 本身的安全边界;RFC 8754与 RFC 8986则界定 SRv6 数据面和 endpoint behavior。

对 RFC 9602 分配的 5f00::/16,RFC 9723 描述了参与方共同约定的过滤方式:默认丢弃大范围,只放行实际使用的彩色前缀。协议中的共同约定仍需落地为过滤配置、例外列表、硬件安装和包结果四份证据。

最终结论属于服务负责人

低时延意图要用带时钟与测点 provenance 的单向或往返时延,并同时看损失、抖动、可用性与约定窗口。隔离需要证明实际转发和资源边界,而不是不同颜色。带宽需要区分路径容量、预留、拥塞与交付吞吐。

包证据必须能与控制状态关联:Service SID、获胜前缀、FIB next hop、各域入口与出口、封装或 segment list、观察时间和政策版本。路由变化后的测试包不能倒推变化前的状态,健康平均值也可能掩盖一个 legacy AS 的长尾降级。

撤销应沿相反方向闭环。彩色 locator 退休时,保存 origin withdrawal、各下游消失、控制器失效、FIB 删除、fallback 激活以及旧处理上的最后一包。base locator 保住可达性时,更应显式把服务从“保证”降为“仅可达”。

这正是 Lu Heng Running-Code Primacy 的适用处:发布和控制面符号不能压过运行中的网络。他的 Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption让线上的共同承载保持薄,同时要求每个参与方对实际采用负责。On Reality Layers进一步把颜色这种协调事实,与安装路径和测量结果这种可执行事实分开。

RFC 9723 让意图更容易携带,并没有让意图自动成为证据。真正的运营成果不是 C1 穿过三个 AS,而是能明确指出:它在哪里被解释、在哪里被忽略、哪条前缀获胜、哪条路径运行、服务最终交付了什么。

来源

主要规范来源:RFC 9723、RFC Editor 状态页、IETF Datatracker、RFC 9723 勘误查询、RFC 2545、RFC 4271、RFC 4272、RFC 8402、RFC 8754、RFC 8986、RFC 9012、RFC 9252、RFC 9256、RFC 9602与 IANA BGP Extended Communities 注册表。

署名分析框架:Running-Code Primacy、Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption与 On Reality Layers。