首页/网络/协议速查/ECN 显式拥塞通知

ECN 显式拥塞通知

IP 层的拥塞标记:路由器在队列满前置位 CE,接收方通过 TCP 的 ECE 回显,发送方降速并回 CWR;不用丢包就能通知拥塞。

协议速查网络更新于 2026-10-13

ECN 是什么

ECN(显式拥塞通知)让路由器在队列快要满时,直接在 IP 头里标记一下,而不是等到必须丢弃报文。接收端看到标记后通过 TCP 标志位回显给发送端,发送端据此降速并确认。这样拥塞信号能在丢包之前就传达出去,避免了「靠丢包发现拥塞」带来的时延尖峰与吞吐波动,在数据中心这类对时延敏感的环境里价值尤其明显。

基本信息

承载位置IP 头的流量类别字段低两位
取值含义不支持、两种可标记状态、已发生拥塞
端到端协商通过 TCP 的 ECE 与 CWR 标志完成
内核开关net.ipv4.tcp_ecn
常见场景数据中心内部普遍启用
相关算法数据中心拥塞控制算法依赖它工作

查看与开关

查看与开关
sysctl net.ipv4.tcp_ecn           # 0 关闭 1 开启 2 仅在对端请求时启用
ss -tin state established | head -5 | grep -i ecn
tcpdump -nn -v 'tcp' -c 5 | grep -i ecn   # 观察握手标志位中的协商

四类标记含义

标记含义说明
不支持该报文不参与 ECN 机制传统实现或对端未启用
可标记一发送方支持 ECN 的第一类标记与可标记二区分不同实验用途
可标记二发送方支持 ECN 的第二类标记协商成功后的常规标记
已拥塞路径上的设备报告出现拥塞接收端据此回显给发送端

典型使用场景

  • 数据中心网络优化:配合相应拥塞控制算法降低时延与队列堆积
  • 排查吞吐异常:确认链路上是否有设备剥掉标记破坏协商
  • 内核参数审查:核对开关取值是否符合当前网络环境
  • 新设备上线验证:确认中间的负载均衡与防火墙对标记位处理正确
  • 评估拥塞控制改造:先确认端到端 ECN 能力再决定算法选型
ECN 需要端到端配合:只要链路上有设备改动或丢弃标记位,协商就会失败或退化。排查此类问题的可靠办法是在两端同时抓包对比同一连接的标志位,看标记是否在中间段丢失或被改写,而不是只看单侧的内核参数。

易错点

  • 老设备或防火墙剥掉标记位破坏协商,个别路径吞吐异常却查不出原因
  • 两端都开了但中间负载均衡未正确处理标记,效果与预期不符
  • 把 ECN 当作流量控制手段用于业务限速,用错了工具
  • 只看内核开关不看实际连接是否协商成功,误判为已生效
  • 在链路过长或设备能力未知的公网上启用,引入难以复现的偶发问题

数据来源与参考

  • RFC 3168(ECN)
  • RFC 9331(ECN 使用建议)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌