Summary

  • RFC 9599 规定了低层帧或隧道外层头被移除时,如何把显式拥塞信号继续传入 IP 层,而不是让标记随封装头一起消失。
  • 在出口看到 CE,只能证明被观察的那个头部当时携带 CE。它不能单独指出哪个队列完成标记,也不能证明接收端上报或发送端降速。

一个数据包离开隧道时,IP 头里的值是 CE。监控系统把这次观测画成橙色。最省事的结论是:这条隧道发生了拥塞。

但从观测到归因,中间缺了好几张收据。标记可能在入隧道前就存在于内层头;也可能由二层队列写入外层帧。解封装器可能合并内外两种状态并保留更严重的一种。重新成帧可能把某个低层事件映射到稍后的 IP 包。如果语义依赖 DSCP,边界设备还可能保留两个 ECN 比特,却改掉解释它们所需的上下文。

RFC 9599 于 2024 年 8 月发布,属于 BCP 89,并更新 RFC 3819。它没有承诺替运营商完成上述归因。它处理更基础的工程问题:当低层协议封装 IP 时,怎样让拥塞通知不在层间断裂。

丢包天然会跨层生效。外层帧没了,里面的 IP 包也没了。显式标记则不同:队列修改的是一个稍后会被移除的头部。如果出口不主动把信号向上转交,包还在继续走,拥塞证据却已经消失。

因此,解封装器本身就是反馈回路的一部分。两端支持 ECN 还不够。凡是把信号送回负载调节器所必需的节点,都要能传播它。RFC 9599 所说的 ECN-PDU,描述的是整条反馈回路的能力,而不只是某个 PDU 上的比特。能力可以写在头部、绑定到标签、存在流状态中,也可以由配置或控制面保证。抓到一个包,并不会自动告诉观察者是哪种保证在起作用。

标准用四种模式把差异说清。Feed-forward-and-up 让信号先沿低层前进,到出口后上移到 IP,再由目的传输层反馈给源端。Feed-up-and-forward 允许低层设备直接修改所承载的 IP 头。Feed-backward 在低层内部把控制信号送回入口。Null 模式则假定低层内部没有独立的可拥塞资源。

这不是命名差异,而是证据路径差异。Feed-backward 可以在封闭子网内快速调节,却不直接触达原始 IP 发送者。子网入口减速,原始源端仍可能继续发送,于是队列转移到边界。入口收到的回压,不能证明应用源端已经看到或执行了反馈。

Feed-up-and-forward 的边界是可见性。交换机必须找到并读到 IP 头。链路加密、未知 shim 或过深封装都可能使它看不见。RFC 要求限制搜索深度,找不到时回退到丢包或另一种有效信号。因此,“这个设备没有写入标记”可能只说明检查路径到此为止,并不说明没有拥塞。

在 feed-forward-and-up 中,入口启用低层标记前,必须有理由相信出口会传播信号。MPLS 可以依赖全域配置:只要任何内部节点会标记,所有相关出口都必须升级。这是运营纪律,不是包自己携带的事实。

TRILL 展示了另一种失效安全设计。拥塞扩展从入口到出口属于关键字段。老旧出口若不理解,就丢掉整帧,而不是删去标记后静默放行。对不理解 ECN 的传输层来说,丢失仍是一种能被识别的拥塞信号。

出口也不能把外层状态直接覆盖到内层。它必须同时计算两者。如果内层是 Not-ECT,而外层携带最严重的拥塞指示,数据包必须被丢弃;给 Not-ECT 包写入 CE,只会制造一个传输层没有承诺读取的信号。若两层都表达有效严重度,应保留更严重者。遇到按现行规则不可能出现的组合,可以记录和告警,但只要存在安全输出,就不应轻易把永久丢弃写死,因为未来标准可能给今天空闲的组合赋予新义。

入口还不应在创建外层头时把拥塞历史清零。保留到达时的水平,可以形成统一监测基线,使内外层标记率之差用于估算某段隧道新增的拥塞。

这里的关键词是“估算”。它要求观测总体对齐、采样边界明确、两端规则一致。它无法把某个最终 CE 包公证成某个特定队列的产物。重新成帧会进一步削弱逐包归因:设计可以优先保留标记出现的时序,也可以优先保留比例;流水线还可能把信号附到稍后的 IP 包。最终带标记的包,不一定就是进入拥塞队列的那个低层对象。

两个比特也没有脱离上下文的单一含义。传统 ECN、PCN 与 L4S 对 ECT(0)、ECT(1) 和 CE 的解释并不总相同,有些语义与 DSCP 绑定。域边界一旦改写 DSCP,就可能完成比特复制,却没有完成含义传播。

安全边界同样重要。若内部节点会合法修改某字段,该字段必须被声明为可变;否则一次正确标记反而会破坏对“不可变头部”的认证。即使接收端确实反馈,也仍不能证明发送端已经降速。反馈到达与控制响应是两张不同收据。

可靠验收至少应保存:入口处内层 ECN 与 DSCP、封装规则、隧道或子网身份、出口能力保证、AQM 配置与观察边界、解封装时的内外状态、最终转发或主动丢弃、接收端反馈、发送端收到反馈,以及速率、队列或交付结果的实测变化。

RFC 9599 的价值,在于让信号可以跨层携带。可携带不等于有来源证明。一个头部可以证明自己在某个观察点的状态;队列、保管、语义和响应仍需后续证据逐项取得。

Sources