摘要

  • RFC 9884 为 IPv4 和 IPv6 分别定义策略、候选路径、段列表三类 Target FEC 子 TLV,使出口节点能够核对 PSID 的控制平面关联。
  • 返回码 3 是出口处理证据,不是中转路径证据;中间节点不参与 PSID 处理,规范也没有为此定义 LSP Traceroute。
  • 若一枚 PSID 只代表聚合中的部分段列表,发送方必须逐列表发出多条消息,不能用一次成功替代未执行的检查。

值班屏幕上出现一个绿色方块。它收到返回码 3,于是自动化系统准备把状态写成“路径已验证”。真正得到回答的问题要窄得多:应答路由器是否是报文所列 FEC 在指定标签栈深度上的出口?

这个区别来自 SR-MPLS 的工作方式。报文穿越网络时,承担转发的标签可能被交换或弹出。RFC 9545 定义 PSID,让入口在 SR 路径最后一个标签之后放入一枚由出口从本地 SRLB 分配的标签。出口弹出 PSID,并借它找回路径上下文。它是出口本地的识别手段,不是全球唯一的路径名称。

一枚 PSID 的覆盖范围也未必只有一条段列表。它可以代表某一列表、候选路径中的部分或全部列表、跨候选路径的若干列表,甚至整个 SR Policy。只有“PSID 数值”而没有关联范围的日志,无法说明当时究竟验证了什么。

RFC 9884 因此把验证拆成三级。Policy 级使用 Headend、Color、Endpoint;Candidate Path 级再加入 Protocol-Origin、Originator、Discriminator;Segment List 级还需要 Segment-List-ID。每一级各有 IPv4 与 IPv6 编码,共六种子 TLV。这些字段不是冗余元数据,而是证据的主语。

当 PSID 只覆盖 Policy 或 Candidate Path 中的部分段列表时,发送方必须发送多条 LSP Ping,每条只携带一个 Segment List Associated PSID 子 TLV。同一消息塞入多种 PSID 子 TLV 并不会形成批量证明;接收方只处理第一项。没有执行的验证不会因为相邻项目成功而自动成立。

返回码也必须按原义保存。核对成功使用代码 3,表示应答器是该 FEC 在所示深度的出口;关联失败使用代码 10;格式错误的 PSID FEC 子 TLV 使用代码 1。不支持的 Protocol-Origin 会使校验失败。代码 3 没有宣称业务流量采用同一条 ECMP 分支,也没有证明丢包、时延、保护切换或应用交付达标。

不可见的中段并非遗漏。RFC 9884 明确要求 PSID 应答器是 SR 路径端点,并排除 LSP Traceroute,因为中转节点不处理 PSID。RFC 9545 更指出:存在 ECMP 时,PSID 最多识别 SID 列表,不能标识实际转发路径;加入 PSID 甚至可能改变哈希选择,使探测本身走上另一条路。

反向或应答路径也需要独立校验。PSID 出现在相应 TLV 时,头端要重新执行有效性检查。无效应答应被丢弃并记录,但收到的返回码不应被篡改。收到、校验、采用,是三个不同的事实。

来源