12. IP 和 TCP 所需变更摘要
12. IP 和 TCP 所需变更摘要
本文档规定在 IP header 中使用两位用于 ECN. not-ECT codepoint 表示传输协议将忽略 CE codepoint. 这是 ECN codepoint 的默认值. ECT codepoint 表示传输协议愿意且能够参与 ECN.
路由器设置 CE codepoint, 用于向端节点指示拥塞. 分组 header 中的 CE codepoint MUST NOT 被路由器复位.
TCP 为支持 ECN 需要三项变更: 一个建立阶段, 以及 TCP header 中的两个新 flag. ECN-Echo flag 由数据接收方用于通知数据发送方已收到 CE 分组. Congestion Window Reduced (CWR) flag 由数据发送方用于通知数据接收方拥塞窗口已经减小.
使用 ECN (Explicit Congestion Notification) 时, 要求 IP tunnel 内部产生的拥塞指示不得在 tunnel egress 处丢失. 我们规定了 IP 协议在封装和解封装期间处理 ECN field 的小幅修改, 以允许经历 IP tunnel 传输的流使用 ECN.
针对 tunnel 中的 ECN, 本文档规定两个选项:
-
limited-functionality option: 不在 IP tunnel 内使用 ECN, 做法是将 outer header 中的 ECN field 设置为 not-ECT, 并且在解封装时不改变 inner header.
-
full-functionality option: 根据 inner header 中的 ECN field, 将 outer header 中的 ECN field 设置为 not-ECT 或某个 ECT codepoint. 在解封装时, 如果 outer header 中设置了 CE codepoint 且 inner header 被设置为某个 ECT codepoint, 则将 CE codepoint 复制到 inner header.
对于 IPsec tunnels, 本文档还定义了一个可选的 IPsec Security Association (SA) attribute, 用于协商 IPsec tunnels 内 ECN 的使用; 并定义了 Security Association Database 中的一个可选字段, 用于指示某个 SA 在 tunnel mode 下是否允许 ECN. 使用 ECN 的 IPsec tunnels 所需变更修改了 RFC 2401 [RFC2401], 后者定义 IPsec 架构并规定其实现的若干方面. 新的 IPsec SA attribute 是对 [RFC2407] Section 4.5 中已定义属性的补充.
本文档废止 RFC 2481 "A Proposal to add Explicit Congestion Notification (ECN) to IP", 后者将 ECN 定义为 Internet community 的 Experimental Protocol. 本节其余部分描述本文档与其前身之间的关系.
RFC 2481 简要讨论了 ECN 与封装分组的结合使用, 并指出按照当时 (1999 年 1 月) 的 IPsec 规范, 如果流会穿越 IPsec tunnel, 则不能安全地使用 ECN. RFC 2481 还描述了可对 IPsec tunnel 规范作出的变更, 以使其与 ECN 兼容.
本文档还纳入了 RFC 2481 之后完成的工作. 第一项是对 IPsec tunnels 变更的详细描述, 以及对 ECN 安全影响的广泛讨论 (现在作为本文档 Sections 18 和 19). 第二项是将 IPsec tunnels 的讨论扩展为覆盖所有 IP tunnels. 由于较旧的 IP tunnels 与流使用 ECN 不兼容, Internet 中部署 ECN 将对旧 IP tunnels 形成强烈压力, 促使其更新为与 ECN 兼容的版本, 使用 limited-functionality 或 full-functionality option.
本文档不处理在非 IP tunnels 中包含 ECN 的问题, 例如 MPLS, GRE, L2TP 或 PPTP. 一份关于向 MPLS 加入 ECN 支持的早期初步文档没有继续推进.
RFC2481 之后的第三项补充是对重传分组 ECN 过程的描述, 即 ECT codepoint SHOULD NOT 在重传分组上设置. 这一附加规定的动机是消除对现有 TCP 连接进行 Denial of Service 攻击的一种可能途径. 某些先前部署的 ECN-capable TCP 可能不符合不在重传分组上设置 ECT codepoint 的 (新) 要求; 我们认为这在实践中不会造成重大问题.
本文档还略微扩展了使用 SYN 分组进行 ECN 协商的规范. 虽然某些先前部署的 ECN-capable TCP 可能不符合本文档规定的要求, 但我们认为这不会给端点 TCP 实现组合形成的 TCP 连接造成任何性能或兼容性问题.
本文档还包含 ECT(1) codepoint 的规范, TCP 可以将其作为实现 ECN nonce 的一部分.