20.2 两个 ECT Codepoints 的动机
20.2 两个 ECT Codepoints 的动机
本节解释为什么定义两个 ECT codepoints, ECT(0) 和 ECT(1), 而不是只定义一个.
拥有两个 ECT codepoints 的主要动机是支持 ECN nonce 机制. ECN nonce 使用两个 ECT codepoints 提供一位 nonce, 帮助验证 ECN 信令的完整性.
ECN Nonce 机制
ECN nonce 的工作方式如下:
-
发送方行为: 数据发送方为每个分组在 ECT(0) 和 ECT(1) 之间选择, 实际上设置一位 nonce 值. 发送方跟踪已发送的 nonce 值.
-
路由器行为: ECN-capable routers 以相同方式处理 ECT(0) 和 ECT(1), 二者都表示 ECN-capability. 当为拥塞标记分组时, 路由器设置 CE codepoint (11), 不论该分组原来是 ECT(0) 还是 ECT(1).
-
接收方报告: 接收方向发送方报告哪些分组被标记为 CE. 然而, 一旦分组被标记为 CE, 原始 ECT(0) 或 ECT(1) 信息就会丢失.
-
验证: 通过比较已收到未标记分组的 nonce 值与最初发送的 nonce 值, 发送方可以检测:
- 接收方错误报告 CE marks (声称未被标记的分组被标记)
- 网络元素正在清除 CE marks (移除拥塞信号)
ECN Nonce 的收益
ECN nonce 针对以下情况提供保护:
-
行为不当的接收方: 接收方可能错误报告分组未被标记为 CE, 使发送方维持高于适当水平的发送速率.
-
恶意网络元素: 路由器可能清除 CE marks 以隐藏拥塞, 或给某些流提供不公平优势.
-
被擦除的拥塞信号: 检测拥塞指示在传输途中被移除的场景.
部署考虑
ECN nonce 是可选的:
- 不实现 nonce 的发送方可以简单地对所有分组使用 ECT(0)
- 基本 ECN 功能只使用一个 ECT codepoint 也可工作
- nonce 为选择使用它的实现提供额外安全性
总之, 两个 ECT codepoints 支持一种优雅的 ECN 完整性验证机制, 同时保持向后兼容并允许 nonce 功能增量部署.