摘要
- RFC 9252 的按位 OR 只有在 Ethernet A-D per ES 与 Inclusive Multicast 两类路由使用相同 SID 结构时才安全;RFC 9819 明确取消了这一普遍假设。
- 启用 ESI Filtering 时,Route Type 3 给出 End.DT2M 的 LOC:FUNC 与插入边界,Route Type 1 提供
Arg.FE2。AL 相等是必要条件,却不是全部结构相同的证明。 - 通过结构校验只说明能够构造候选 SID;本地策略、最佳路径、FIB、出口 local SID、实际排除的接口与最终 BUM 交付仍需各自回执。
最容易被忽略的故障,不是字段缺失,而是字段齐全。NOC 看到两条 BGP 路由、两个合法 TLV、一个计算完成的 IPv6 地址,于是把“收到”写成“可用”。RFC 9819 要求工程团队退回半步:这个 ARG 究竟应从哪一位开始写入?
RFC 9252 曾规定,把 EVPN Route Type 1 携带的 ESI Filtering Argument 与 Route Type 3 携带的 End.DT2M SID 做按位逻辑 OR。这个方法没有天然错误;它依赖一个前提——两条路由中的 SID 结构完全相同。RFC 9819 记录,实施与互通测试暴露了原规范细节不足,统一结构并不总是成立。
因此,更新的真正价值不是增加字段,而是重新分配结构解释权。属于 End.DT2M 业务 SID 的 LOC:FUNC 由 Inclusive Multicast Ethernet Tag 路由声明;用于 ESI Filtering 的 ARG 由 Ethernet A-D per ES 路由声明。接收端不能把两个 128 位容器当成匿名位图,而要依据拥有 LOC:FUNC 的路由所声明的结构插入论元。
ARG 是局部含义,不是任意标签
RFC 8986 将 SRv6 SID 划分为 Locator、Function 和可选 Argument。End.DT2M 解封装以太网载荷,在指定 L2 表中泛洪,并用 Arg.FE2 找到应从泛洪集合中排除的接口。这一映射由实例化该行为的段端点节点在本地分配,再通过控制平面告知其他节点。
所以 ARG 的数值并不自带全球语义。相同的十六进制片段,在另一个节点、另一条 SID、另一个 ESI 或另一个时期可能没有同样含义。论元公告至少要说明长度、数值、关联行为以及它适用于哪些 SID;拥有 LOC:FUNC 的端点还必须说明是否接受论元以及接受的位置。
SID Structure Sub-Sub-TLV 承载这个边界。LBL、LNL 与 FL 的和决定 ARG 起点,AL 决定长度。若行为不接受论元,AL 必须为零,FUNC 后的位也必须清零。若接受非零 AL,声明之外的尾部位仍必须为零。这里的“零”不是占位,而是可验证的编码约束。
三种结果不能归并为一个状态
RFC 9819 对入口 PE 的处理可以分成三个分支。
第一,Type 3 的 AL 为零。入口只使用 LOC:FUNC,并忽略对应 Type 1 的 SID 值与结构。即使 Type 1 中恰好出现一段像 ARG 的比特,也不应被提升为转发含义。
第二,Type 3 声明非零 AL,但找不到匹配的 Type 1 End.DT2M 公告,或 Type 1 的 AL 为零。这时没有可用 ARG,入口仍构造 LOC:FUNC-only SID;若业务预期 ESI Filtering,设备应留下便于排障的日志。
第三,两边 AL 都非零。若长度不同,这是配置不一致;为防潜在环路,来自相关 Ethernet Segment 的 BUM 流量不得继续转发。若长度相同,入口才把 Type 1 的 ARG 写入 Type 3 结构所给出的 LBL + LNL + FL 偏移,并把声明范围后的所有位清零。
这个顺序说明,AL 相同并不等于结构相同。RFC 9819 的多 bridge-domain 示例让同一个 16 位 ARG 服务于两个 Type 3 SID:一个 FL 为 32 位,另一个为 16 位。完成后的 ARG 位置自然不同。按位 OR 只能在结构确实相同的旧兼容场景继续使用;显式插入才支持这种异构布局。
“匹配路由”需要身份与时间
RFC 7432 为 EVPN 路由提供 RD、RT、Ethernet Tag、ESI、originating PE、next hop 与撤回机制。它们共同界定一条控制记录属于谁、服务于哪里、何时仍有效。只在数据库里发现 Route Type 1 与 Route Type 3 两行,不能证明这两行属于同一个广播域、同一个 Ethernet Segment 或同一个变更世代。
组合证据应保留源 PE、EVI、广播域、ESI、路径选择、接收时间与撤回序列。它还要说明是否采用 ESI Filtering;若使用 RFC 8365 的 local bias,便不应把 ESI Filtering ARG 合进 End.DT2M SID。
压缩也不能成为省略结构的理由。RFC 9800 定义压缩 SID 行为,RFC 9819 允许压缩与非压缩 End.DT2M flavor 混合出现,只要 AL 一致性检查成立。行为 flavor 必须随证据保留。Transposition Scheme 同样没有被 RFC 9819 改写;一旦 Function 或 ARG 位借用 MPLS label 字段传递,TPOS-O、TPOS-L 与 label 容量仍是独立校验项。
控制平面只交付候选,不交付结果
RFC 9819 直接规范了公告、校验、失败处理与 SID 构造。它没有声称收到路由就表示本地策略接受,解析成功就表示最佳路径采用,构造完成就表示硬件已写入,更没有声称 End.DT2M 已按预期排除接口。
一条可审计链至少包括:原始路由身份与新鲜度;行为与结构;Type 1/Type 3 关联;完成后的 128 位 SID;实现版本与本地策略;RIB/FIB、封装与出口 local SID 编程;绑定到该 SID 世代的报文计数或 trace;接收者看到的业务结果。
出口侧尤其关键。Arg.FE2 必须仍映射到预期 ESI,End.DT2M 必须绑定预期 L2 表,泛洪集合必须排除正确接口。入口发送一个数学上正确的地址,无法替出口设备证明这些本地事实。即使分割视界动作正确,也仍要确认预期接收者收到 BUM、来源段没有收到回送副本、没有重复和环路。
这正是本篇与相邻文章的边界。RFC 10018 的文章拥有 SR P2MP 树、逐节点安装和逐叶交付;RFC 9830 拥有 BGP candidate path 与 SR Policy Manager 的激活边界;RFC 9863 拥有 PCEP Color;RFC 10039 拥有跨域 D-PATH。RFC 9819 处理的是更早、更窄的一步:在任何交付结论之前,两个路由组件是否能够在不捏造统一结构的前提下成为目标业务 SID。
Lu Heng 的最小初始规范主张把共同层限制在确定、可本地验证的规则内,Running-Code Primacy则把文档与实际采用区分开来,Reality Layers提醒读者不要把符号声明误当成物理效果。这里将其用作编辑分析框架,不把它归因于 IETF 的设计动机。
RFC 9819 让“拼接正确”第一次足够精确。领导层仍需坚持:拼接正确不是路由正确,不是编程正确,不是行为正确,也不是业务正确。
来源
- RFC 9819 正文、RFC Editor 记录、IETF Datatracker与勘误查询
- RFC 9252:基于 SRv6 的 BGP Overlay Services
- RFC 8986:SRv6 Network Programming
- RFC 7432:EVPN、RFC 8317:EVPN E-Tree与 RFC 8365:EVPN overlay/local bias
- RFC 8402:Segment Routing Architecture、RFC 8754:SRH与 RFC 9800:压缩 SRv6 Segment List
- IANA BGP Parameters与 IANA Segment Routing Parameters
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
