Explicit Congestion Notification

ECN是一种扩展TCP/IP协议的方法,允许在不丢失数据包的情况下通知网络拥塞。通过在IP头中设置标志,路由器可以标记即将发生拥塞,而不是丢弃数据包。接收方将拥塞信息反馈给发送方,从而调整传输速率。ECN与TCP、DCCP和SCTP等传输层协议协同工作,减少丢包,优化性能,特别是在交互式和短连接中效果显著。然而,其性能取决于精确的主动队列管理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Explicit Congestion Notification

Explicit Congestion Notification (ECN) 是对 Internet Protocol 和 Transmission Control Protocol 的拓展,定义于 RFC 3168(2001) 中。ECN 允许端到端的通知 network congestion 而不丢失数据包。ECN 是一个可选的特性,可能被用于两个 ECN-enabled 的终端之间,当底层的网络基础结构也支持的时候。

依照惯例,TCP/IP 网络通过丢弃 packets 来通知拥塞。当 ECN 被成功协商时,ECN-aware 路由器可能在 IP header 中设置一个标识,而非丢弃 packet 以通知即将发生的拥塞。packet 的接收方将拥塞指示反馈给发送方,它会向检测到 packet 丢弃一样减少它的传输率。

Operation

ECN 需要位于 Internet layer 和 transport layer 的特定支持,理由如下:

  • 在 TCP/IP 中,路由器运行在网络层,而传输率有运输层的终端处理。
  • 拥塞仅能由发送端处理,但是因为只有在 packet 被发送后才知道发生了拥塞,因此必须通过接收方向发送方反馈拥塞指示。

没有 ECN,拥塞指示反馈通过检测 packet 的丢弃间接实现。使用 ECN,拥塞通过设置 IP packet 中的 ECN 字段为 CE (Congestion Encountered) 来指示;通过在传输协议的 header 中设置合适的位,拥塞指示由接收方反馈给发送方。例如,使用 TCP 时,通过设置 ECE 位反馈拥塞指示。

Operation of ECN with IP

ECN 使用 IPv4 和 IPv6 header 中 Traffic Class 字段的最低两位 (最右边) 进行编码:

  • 00 - Non ECN-Capable Transport, Non-ECT
  • 10 - ECN Capable Transport, ECT(0)
  • 01 - ECN Capable Transport, ECT(1)
  • 11 - Congestion Encounted, CE

当两端都支持 ECN 时,它们将它们的 packet 标识位 ECT(0) 或 ECT(1)。路由器将 ECT(0) 和 ECT(1) 看作是等价的。如果 packet 穿过 active queue management (AQM) 队列 (e.g.,使用 random early detection(RED) 的队列),AQM 队列正在拥塞,且对应的路由器支持 ECN,它会将 code point 改为 CE 而不是丢弃 packet。这种行为被称为 “marking” 且它的目的是通知接收端即将发送的拥塞。在接收端,拥塞通知由上层协议 (传输层协议) 处理,且需要反馈到发送节点以通知它减少传输速率。

当接收到有 Congestion Experienced code point 的 IP packet 时,TCP 接收方使用 TCP header 中的 ECE flag 来反馈拥塞指示。当终端收到具有 ECE bit 的 TCP segment,它如同packet 被丢弃一样减少它的拥塞窗口。随后它通过发送一个设置了 CWR bit 的 segment 来确认这个拥塞通知。

节点持续发送设置 ECE bit 的 TCP segment ,直到它收到了设置 CWR bit 的 TCP segment。

使用 tcpdump 查看受影响的 packets,使用筛选谓词 (tcp[13] & 0xc0 != 0)

ECN and control packets

因为 Transmission Control Protocol (TCP) 对 control packets (pure ACKs,SYN,FIN segments) 不执行拥塞控制。control packets 通常不被标记为 ECN-capable。

2009年的一项提案[7]建议将SYN-ACK包标记为支持ecn的。这种改进被称为ECN+,已被证明可以显著提高 short-lived TCP connections 的性能。

Operation of ECN with other transport protocol

ECN 也能对其他传输层协议执行拥塞控制,特别是 DCCP 和 [Stream Control Transmission Protocol] (SCTP) 。其基本规则与 TCP 类似,尽管在 on-the-wire encoding 的细节上有所不同。

Effects on performance

因为 ECN 仅当与 Active Queue Management (AQM) 政策结合使用时才有效果,ECN 的有点依赖于使用精确的 AQM。然而,一些观测结果,似乎在不同的 AQMs 中都成立。

正如所期望的,ECN 减少了 TCP 连接丢弃的 packets 的数量,ECN 避免了重传,减少了延迟,很大程度上减少了抖动。当 TCP 连接有一个未完成的 segment 时,这一影响最为明显,当它能够避免 RTO 超时;这通常是在交互式连接的情况下,比如远程登录,和事务性协议,比如 HTTP 请求,SMTP 的会话阶段,或 SQL 请求。

ENC 对批量吞吐量的影响不太清楚,因为现代 TCP 实现十分擅长当发送方的 window 很大时,重传丢弃的 segments。

当使用的 AQM 算法从不丢弃 packets 时,在高拥塞的网络中使用 ECN 被发现会影响性能。现代 AQM 实现通过在高负载时丢弃 packets 而不是标记 packets 来避免这一缺陷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值