摘要
- 对 SRv6 的 I、J、K 三类段,RFC 9831 允许 SID 字段以全零值出现:字段确实存在,但控制器并未指定最终 SID,只表达期望的行为或结构。
- S 标志只能证明字段随消息到达;头端仍要用自己的 SR 信息解析节点或邻接,并区分“查不到”“解析不出”“给定值与本地值不符”等失败。
- 可审计记录必须同时保留 A、S、B、V 标志、原始值、拓扑语境、解析结果、校验理由、候选状态、转发安装与包级观察,不能用一个“已收到 SID”的绿灯覆盖全链条。
先别把“有字段”读成“有答案”
许多故障始于一个看似无害的界面简化。解析器确认了类型和长度,S 标志表明 SID 字段在场,监控系统便显示“SID 已提供”。对 RFC 9831 而言,这句话可能多走了一步。
I、J、K 三类段可以携带 16 字节 SRv6 SID。控制器若想指出目标端行为或 SID 结构,却不想指定具体 SID,可以把这 16 字节全部置零。于是,消息在语法上拥有 SID 字段,在业务动作上仍欠一个可执行标识。这个缺口不是传输损坏,也不等于随意空值;它是一次明确的职责分配:控制器给出语境,头端完成解析。
“字段缺席”又是另一种状态。若 SID 字段根本不在,端行为与 SID 结构也不得出现。全零字段则可以承载这部分补充语义。非零字段构成第三种状态,表示发送端给出了一个具体候选值。三者分别是:只描述节点或邻接;描述并约束本地解析;直接给值、再由接收端检查。
如果存储层把前两种都归一化为 null,它会擦掉委托决定;如果只保存 present=true,它又会把全零误读成完整答案。最低限度的凭据必须保留原始 128 位、段类型、S 与 B 标志,以及节点、地址和接口信息。
显式路径仍然可以包含间接引用
RFC 9831 把 Segment List sub-TLV 定义为通往端点的一条显式路径,每个 Segment sub-TLV 是路径中的一个元素。“显式”容易让人联想到可以直接写入报文的标签栈或 SID 列表,C 到 K 类却展示了更细的含义:顺序与意图可以明确,最终执行值仍可由本地语境补完。
C、D 类用 IPv4 或 IPv6 节点地址描述 SR-MPLS 节点;E 到 H 类用节点地址、链路地址或接口标识描述邻接;I 到 K 类对 SRv6 节点和邻接完成类似工作。RFC 9256 要求头端把这些描述解析成 MPLS 标签或 SRv6 SID。段描述是查询条件,不必天然就是查询结果。
这项设计避免控制器把接收网络的全部实时分配固化进每一条通告,也允许本地节点依据当前拓扑完成映射。代价是结果依赖接收端所见的网络事实。两个头端收到完全相同的字节,一个可能找到有效 SID,另一个可能因信息缺失、版本不同或邻接变化而失败。
因此,事故记录若只保存控制器消息,就只能证明“提出了同一描述”,不能解释“为何执行结果不同”。还要保存头端当时使用的信息来源、版本、解析值与时间,才能知道差异产生在哪个交接点。
四个标志,四个问题
A、S、B、V 共处一个紧凑标志字段,却分别回答不同问题。
A 表示 SR Algorithm 字段对适用的段类型有意义。A 未置位时,发送端必须写零,接收端必须忽略。这里的零只是没有声明算法,并非请求头端选择某个算法。它与全零 SID 看起来同为零,语义却完全不同。
S 表示 SID 字段出现。它不证明这个字段非零,也不证明所给值能在本地找到,更不证明值与节点或邻接描述一致。
B 表示 SRv6 端行为与 SID 结构块存在,适用于 B、I、J、K 类。这个块不能在 SID 字段缺席时单独出现;但 SID 字段可以存在且全零,因此 B 能对尚待本地解析的值表达期望。它是约束信息,不是完成证明。
V 要求 SR Policy Manager 做 SID 校验。V 等于一的含义是“请验证”,不是“已经验证”。任何把 V 直接渲染为绿色勾选的系统,都把动作请求偷换成动作结果。
四个标志把控制器意图、编码存在性、补充语义与接收端校验拆开。省略其中任何一个,都会使后续状态看起来比实际更确定。
头端不是被动解码器
RFC 9256 所说的 SR-DB 是一个概念性的信息集合,为路径计算与校验提供依据;规范并不要求产品真的新建一个同名数据库。关键在于,头端拥有可以解释节点、链路、接口与 SID 对应关系的本地证据。
校验失败也不是一个单一原因。头端可能在本地信息中找不到发送端给出的 SID;它可能从 C 到 K 类的描述解析出另一个 SID,发现两值冲突;也可能根本无法把某个非首段解析成标签或 SID。第一种是本地记录缺失,第二种是发送语境与接收语境不一致,第三种是有序路径中仍有一步未完成。都显示为“无效”会妨碍定位责任。
跨域场景把知识边界写得更清楚。RFC 9256 承认,头端未必能够校验远端域中 SID 的可达性。对于无法校验的段,应使用直接给出标签或 SID 的 A、B 类;首个 SID 则始终必须可达。规范没有假装本地解析器能看见所有网络,而是在语境无法可靠延伸时改变表达方式。
由此可见,头端会决定哪些字段应解释、用什么网络事实补值、是否发生冲突、整条段列表是否有效。BGP 会话的认证可以说明消息来自哪个对等体,却不能替对等体证明某节点地址、接口标识、端行为或拓扑认知是正确的。
长度正确只关闭了一个问题
RFC 9831 为各类段规定不同长度,S、B 等标志又决定哪些字段应该存在。长度校验非常重要:它能防止接收端把后续字节错当成当前字段。但是,长度正确只证明某种结构完整到达。
类型检查说明字段代表节点、邻接、标签或 SRv6 SID;标志检查说明算法、SID、端行为与结构是否应该解释;SRPM 才判断整条路径能否解析和使用。RFC 9256 还规定,把 SR-MPLS 与 SRv6 段混在同一列表会使列表无效。每个 sub-TLV 都能单独解析,并不保证组合后可执行。
RFC 9830 已经把显式路径的语义校验放在 BGP 之外,交给 SRPM;RFC 9831 明确说新增类型不改变既有操作与故障管理。上一轮文章研究的是 BGP 通告进入表后仍未取得转发授权。本轮再向内部推进一步:即便尚未讨论候选路径胜负,已到达的一个字段也可能只是让本地系统完成工作的请求。
注册表协调的是语法,不是设备现实
IANA 为 C 至 H、I 至 K 各类 Segment List sub-TLV 分配代码点,也记录 A、S 标志位。这些公共分配避免不同实现把同一个数字解释成不同结构,是互操作的必要基础。
代码点并不能证明某台路由器支持全部类型,也不能证明它掌握最新邻接、控制器选对节点、接口标识仍指向原链路、解析出的 SID 已被转发面接受。RFC 9831 的 Experimental 身份同样只说明这是一项供实现与评估的公开设计,不能被扩写成部署统计。
“支持”可能只表示解析器认识 Type J;“已解析”表示本地语境产出了 SID;“已校验”表示给定值与解析值一致;“已激活”表示候选被选中;“已安装”表示转发面接受;“已观察”则要求受控数据包产生预期效果。这些动词属于不同事实层,注册表没有让它们互相替代。
把未完成的值留在证据里
控制器侧记录应保存策略意图、段顺序、类型、节点或邻接语境、A/S/B/V 标志、字段长度、原始值、控制器身份与配置版本。它必须直说:发送端给了非零 SID、用全零值委托解析,还是根本省略了字段。
头端解析记录再加入当时使用的 SR 信息来源与版本、解析出的标签或 SID、查询时间和歧义。校验记录说明给定值是否存在并匹配、引用是否可解析、是否出现技术混合、拒绝理由是什么。之后才轮到候选有效性、激活选择、转发安装、包级观察与服务结果。
这种记录不是为了堆积日志,而是为了把故障送回正确责任人。控制器明确委托后,本地映射缺失不应被描述成“控制器发了坏 SID”;控制器给出非零值却与本地结果冲突,也不能被模糊成“路径不可用”;解析与校验都成功而安装失败时,解析器不应替下一层背锅。
来源
- https://datatracker.ietf.org/doc/rfc9831/
- https://datatracker.ietf.org/doc/rfc9831/history/
- https://datatracker.ietf.org/doc/rfc9831/referencedby/
- https://datatracker.ietf.org/doc/rfc9831/references/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml
- https://www.rfc-editor.org/errata/rfc9831
- https://www.rfc-editor.org/info/rfc9831/
- https://www.rfc-editor.org/rfc/rfc2119.html
- https://www.rfc-editor.org/rfc/rfc8174.html
- https://www.rfc-editor.org/rfc/rfc8402.html
- https://www.rfc-editor.org/rfc/rfc8660.html
- https://www.rfc-editor.org/rfc/rfc8754.html
- https://www.rfc-editor.org/rfc/rfc8986.html
- https://www.rfc-editor.org/rfc/rfc9256.html
- https://www.rfc-editor.org/rfc/rfc9552.html
- https://www.rfc-editor.org/rfc/rfc9830.html
- https://www.rfc-editor.org/rfc/rfc9831.html
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
