摘要

  • IESG 于 2026 年 8 月 17 日批准 draft-ietf-mpls-mna-ps-hdr-19 作为拟议标准发布。P 位、起止偏移、基础头和长度校验让栈后 MPLS 头变得可定位、可验证;获批不代表已经实现、部署或成功执行。
  • 草案明确规定:若转发节点的可读标签深度不足以覆盖完整栈后头部,该节点直接跳过栈后处理。编码正确与数据包抵达,因而都不能替代能力清单、逐节点计数器和动作结果。

最危险的不是坏包,而是好包里的空白

开篇是对规范边界的假设性测试,不是真实事故。它之所以重要,在于故障未必留下坏包。MNA 子栈可以正确设置 P 位,起始位置和容器长度也能完全吻合,出口还会看到一个结构完整的数据包;缺失的只是中间节点没有调用那项动作。

在可读深度不够的特定分支,草案写的是跳过 PSMH 处理,而不是一律丢包。因此不能把“出口收到了包”当作“路径上动作都已执行”,也不能把“没有丢包”当作能力证明。

至少要拆开三句话:包里编码了动作;某节点按作用域应当执行;该节点确实执行成功。第一句属于语法,第二句属于路径和作用域,第三句只能由节点证据支持。

新格式解决了“在哪里”,没有解决“谁能读”

IESG 在 8 月 17 日宣布批准第 19 版 MPLS Network Action Post-Stack Header 草案。RFC Editor 正式发布前,它仍是 Internet-Draft,多个注册值仍标为 TBA。协议里程碑不能被写成厂商支持或生产可用声明。

方案把 MNA 子栈留在 MPLS 标签栈内。Format B 的 P 位表示栈底之后存在相关的 Post-Stack MPLS Header。基础头给出首半字节、长度和类型,后面排列一个或多个栈后网络动作及辅助数据。

PSMH 不一定紧挨栈底。伪线控制字、Generic Associated Channel 或其他栈后结构可能位于它之前。起始偏移操作码以栈底为基准、按四字节字定位容器;若第一个相关 NAS 没有起始偏移,默认偏移为零,后续带 P 位的 NAS 则需要明确位置。可选的结束偏移让设备在不解析整个 PSMH 的情况下先知道它的范围与所需深度。

容器声明的长度为基础头之后一到 255 个四字节字,各动作长度之和必须相符。首半字节不合预期、偏移无效、起止不一致或长度账目不平衡,都属于畸形包,并且无论未知动作策略如何都必须丢弃。

这些规则把“动作从哪里开始”从猜测变成可检查事实。不过,知道房间地址,并不代表每个经过的人都有钥匙和足够长的走廊。

可读标签深度成了路径准入条件

草案在这一语境下改写了 RLD 的含义:它不再只计算标签项,而是从标签栈顶部开始计算四字节字。这样,可读能力才能描述越过栈底后的字节范围。

路径选择节点需要掌握相关中转和出口节点的栈后 MNA 能力、路径 MTU,以及作用域内每个节点的 RLD。封装节点不能在出口不支持时加入 PSMH;若某个会移除相关 NAS 的中转节点不支持 P 位,也不能加入;最后还必须满足路径 MTU。

关键在于,草案没有规定这些能力如何获得。配置、管理协议和控制协议都可能提供信息,但本规范不定义发现机制。这是包格式与运行系统之间的明确边界,也意味着控制器不能用“标准已经获批”代替节点能力证据。

RLD 记录必须有来源和时间。它是测量值、配置值还是推断值?板卡更换、软件回退、功能开关或新的封装层是否已经让它失效?路径计算时纳入的节点是否真的处在转发路径上?一个过期的最大深度值,足以制造格式完美、执行不完整的服务。

跳过、未知和畸形是三条不同分支

诊断时若把所有“不执行”都叫作“不支持动作”,就会丢掉规范给出的责任边界。

结构校验失败的 PSMH 是畸形分支,结果是强制丢包。节点识别 P 位、却不认识某个动作,是未知动作分支,其行为取决于关联 NAS 中的策略。不支持 P 位的节点根本不会解析 PSMH,因此也不能让其中派生的策略支配它看不见的内容。

完整头部超出 RLD 则是第三种情况:中转节点跳过处理。如果该节点还因为深度或缺少起始偏移支持而无法移除关联 PSMH,它不得移除携带 P 位的 NAS。提示与容器必须一起留给后续有能力的节点。

倒数第二跳还要为出口保留已经暴露的逐跳或入口至出口 NAS/PSMH;出口在移除 NAS 时移除关联栈后头。这些生命周期规则防止清理动作把提示与内容拆散,却仍然不能证明更早的每个节点执行过动作。

作用域说明意图,不是回执

MNA 区分逐跳、入口至出口和指定节点作用域。作用域定义“应在哪里运行”,并不提供“已经在那里运行”的收据。

逐跳动作需要关联真实路径、P 位支持、具体动作支持、每台节点的 RLD、本地策略以及调用结果。指定节点动作还要证明选择依据与当前拓扑、能力状态一致。入口至出口动作即使被完整保留到出口,也仍需出口的动作成功证据。

草案建议分别统计收到的 PSMH、RLD 超限、未知动作的丢弃或跳过、畸形丢包,以及每项动作的成功和失败。这些计数器应当与路径、动作标识、包类别、软件状态和时间相关联,而不应被压缩成一个“处理了多少 MNA 包”的总数。

域边界必须看得比内部更深

栈后动作具有开放语义,包括只在本域内定义、跨域后可能不安全的动作。安全章节因此要求运营商在部署前,让边界节点能够过滤来自另一个管理域的 Post-Stack MNA 数据包,并要求过滤节点的 RLD 高于域内所有其他节点。

这不是普通容量建议,而是一条权责规则:负责拒绝外部危险动作的节点,至少必须能看到内部设备可能看到的一切。若边界解析器比内部节点更浅,它只能为自己读到的前缀背书。

中间节点还可能修改栈后数据,关键功能不能只依赖它而缺少全网验证。敏感辅助数据要么加密传输,要么不要使用这一机制。性能和规模不在本草案范围内,BIER 转发路由器的处理也不在范围内。

因此,准确的部署声明应当很窄:新规范定义了怎样提示、定位、检查和携带栈后容器;一条真实路径能否安全、一致地执行它,仍取决于能力、遥测和治理证据。

来源