摘要

  • draft-ietf-pce-entropy-label-position-07 为 SR-MPLS 中的 ELI/EL 位置定义了能力协商、单条 LSP 请求与逐段位置指示三类 E 位;它仍是 PCE 工作组 Last Call 阶段的互联网草案。
  • 第 07 版明确:一次有效 PCUpd 携带的是此前 ELP 集合的完整替代;没有 E 位就应清除所有旧配对,无效或部分有效的集合则不得改动现有状态。
  • 这项原子规则只约束控制面。它不证明芯片已完成替换、当前路径上的设备都读得到 EL、本地散列确实使用它,也不证明链路负载已经改善。

评估一次熵标签更新,最容易漏看的不是新标签,而是旧标签。控制器可以准确地说“在第三段和第六段之后插入”,PCC 也可以返回成功;如果上一轮位置仍残留,两个时代的意图便会同时进入一条看似正常的标签栈。

第 07 版正面处理了这个问题。它没有把 PCUpd 解释为补丁,而是定义为整组替换。有效的新集合取代旧集合;有效但不含 E 位的 SR-ERO 清空旧配对;无效或只有部分位置可信的输入必须保持现有路径与 ELP 不变,并用 SRP ID 关联错误。

这是草案从第 06 版到第 07 版最有价值的变化之一。但“旧状态不应残留”仍是一项需要观测的义务,而不是由规范句子自动完成的事实。

为什么一条 MPLS 栈需要多个熵标签

深标签栈让中间设备难以看到原始 IP 或传输层字段。入口设备先从报文特征计算一个熵值,把 EL 放入栈内,并用 ELI 标出它。沿途 LSR 如果能读到该深度,就可以把 EL 纳入本地等价多路径或链路聚合散列。

ERLD 不是单纯的解析深度。RFC 8662 要求设备在这个深度内既能读到标签,也能在负载均衡函数中使用 EL。硬件即使看得到 N 层,但不能用其中的 EL,也必须把 ERLD 视为零。由此可见,遥测里“标签可见”与“标签影响了下一跳选择”是两张不同的收据。

多个 ELI/EL 配对是为了让不同位置的设备都能在自身 ERLD 内遇到一个可用 EL。然而每个配对又增加两个标签。让下游更容易读到的方案,可能反过来耗尽入口的标签压入能力。

这就是 MSD 与 ERLD 的方向差异:MSD 约束一个节点能压入多少标签,ERLD 约束另一个节点能向下读多深并使用熵值。任何 ELP 计算都必须同时尊重两者,而不能用“位置合法”代替“整栈可执行”。

三个 E 位不是同一项授权

OPEN 中的 E 位用于能力协商。PCE 声明自己能够利用 MSD 与 ERLD 计算位置;PCC 声明自己能按 PCE 指定的位置插入多个配对。它只是一项会话级能力陈述。

LSP-EXTENDED-FLAG 中的 E 位是针对某次 LSP 操作的请求。SR-ERO 子对象里的 E 位才是具体位置指示:在这个段之后插入 ELI/EL。

三者外形相近,却对应三种不同事实。双方声明支持,不代表这条路径拥有充分输入;提出请求,不代表 PCE 能产生完整答案;收到完整答案,也不代表 PCC 已把它写进实际转发表。

第 07 版因此强化了拒绝路径。不能应用多配对的 PCC 不应收到位置;未声明计算能力的 PCE 不应被要求返回位置;未经请求的 ELP 不得直接生效;ERLD 或 MSD 缺失、矛盾或不足时,PCE 应返回没有可用 SR-ERO 的错误,而不是拼出一个“差不多”的部分集合。

这种失败方式符合最小公共规则。协议只负责可重复验证的共同边界,不替各地设备猜测未知能力,也不把运营者的风险偏好藏进一个宽松默认值。

原子替换必须落到硬件层才算完成

控制进程、配置数据库和转发芯片往往不是一个事务域。模块化设备的不同线卡也可能在不同时间收敛。PCC 可以先接受 PCUpd,再异步下发;逻辑回读可能显示新意图,而快速转发路径仍处于旧时代。

因此,完整替换至少要保存旧集合与新集合的指纹、SRP ID、计算所依据的拓扑纪元、PCC 接受结果、每个相关硬件组件的回读,以及旧配对不再存在的负面证明。只验证新配对出现,会遗漏最危险的混合状态。

当平台无法给出芯片级回读时,公开状态应写成“意图已接受”,而不是“替换已完成”。这不是语义洁癖,而是为了在链路异常时知道修复应该落在控制器、设备代理还是具体转发组件。

正确的位置也会过期

邻接段的 ERLD 归属于实际处理该邻接的节点。Node SID 则可能覆盖多个中间节点。RFC 8662 允许实现计算整条段路径上的最小 ERLD;如果做不到,也可退回使用尾节点 ERLD。后者是合法退路,不是对隐藏中间节点的能力证明。

IGP 重新收敛后,同一个 Node SID 可能走过另一组设备。Binding SID 背后的 LSP 也可能更换。保存下来的 SR-ERO 仍然语法有效,但计算它时使用的能力集合已失效。

所以 ELP 必须带有证据纪元:当时的拓扑、段解析、Binding SID 关联、ELC、ERLD 与 BMI-MSD。路径变化、线卡更换或能力通告变化都应触发重算或把状态降为“未知”。不能让一条旧的绿色记录长期冒充当前事实。

RFC 9088 与 RFC 9089 还限定了“缺失”的含义。没有 ERLD-MSD 通告,只能证明节点不支持这种通告,不能证明硬件没有相应能力。控制器在缺少正面证据时应拒绝自动计算;资产清单则必须保留“未知”,不能偷换成物理上的零。

读到 EL 仍不等于均衡

散列输入由本地配置决定。设备可以只用 EL,也可以把它与其他字段组合。两台具有相同 ERLD 的路由器,面对同一个熵值也可能选出不同的成员。

即便 EL 确实参与散列,流量也未必均匀。流大小并不相等,少数大流可以压住一个成员;ECMP 或 LAG 成员集合会变化;重新散列还可能带来乱序。最终判断需要指定观察窗口、成员计数器、流分布、丢包、乱序与路径成员变化。

草案明确没有新增存活检测或运行验证机制。这一克制是合理的:PCEP 保持窄接口。但运营者也就不能把 E 位当成隐含探针。

层次 最低证据 仍不能证明
能力 OPEN 标志与会话身份 此 LSP 的输入充分
计算 拓扑纪元、ELC、ERLD、MSD、算法版本 PCC 接受
响应 完整 SR-ERO 或有界错误 硬件安装
替换 新旧指纹、旧配对消失 报文使用新状态
可读 每类组件的深度回读 EL 进入散列
散列 本地策略版本与相关计数器 负载均衡
测量 窗口、成员、丢包、乱序 业务交付
结果 独立服务观测 下一次变更权限

第 07 版改善的是这条链中间的控制契约。真正的可靠性来自不跨越层次冒领结论。