显式拥塞通知(ECN,Explicit Congestion Notification) 是一种网络层拥塞控制机制,核心是在数据包不被丢弃的前提下,通过标记数据包的方式向发送端传递网络拥塞信号,解决传统 "丢包作为拥塞信号" 机制的高开销、高延迟问题,尤其适配智算中心 RoCE 网络、数据中心 TCP 网络等对低丢包、低延迟敏感的场景。

一、ECN 的核心设计逻辑
传统拥塞控制依赖 "数据包丢弃" 作为拥塞信号(如 TCP Reno),但丢包会触发重传,增加时延和带宽开销;而 ECN 的核心是**"标记替代丢弃"**:
- 网络设备(交换机 / 路由器)检测到拥塞时,不丢弃数据包,而是修改数据包 IP 头部的ECN 标志位,标记为 "经历过拥塞"。
- 接收端收到标记包后,通过反馈机制告知发送端网络拥塞。
- 发送端收到反馈后,主动降低发送速率,提前缓解拥塞,避免队列溢出导致的丢包。
二、ECN 的关键组成(IP 头部标志位定义)
ECN 功能通过 IP 头部的 2 个保留比特位(共 4 种组合) 实现,具体定义如下:
| 标志位组合 | 含义 | 角色 |
|---|---|---|
| 00 | ECN-Capable Transport(ECT)= 0 | 数据包来自不支持 ECN的端系统,设备不标记 |
| 01 | ECT(1) | 数据包来自支持 ECN的端系统,可被标记 |
| 10 | ECT(0) | 数据包来自支持 ECN的端系统,可被标记 |
| 11 | Congestion Experienced(CE) | 数据包被网络设备标记为经历过拥塞 |
注:ECT (0) 和 ECT (1) 功能等价,仅用于区分不同传输流,设备对两者的标记逻辑一致。
三、ECN 的完整工作流程(以 RoCE 网络为例)
1.端系统协商:
发送端和接收端在建立连接时,通过协议握手确认双方均支持 ECN(如 RoCEv2 通过 IB 握手报文)。
2.拥塞检测与标记
- 交换机实时监控端口队列长度,对比预设的低水位线(Kmin) 和高水位线(Kmax)。
- 队列长度 < Kmin:无拥塞,不标记,正常转发。
- Kmin ≤ 队列长度 ≤ Kmax:中度拥塞,按ECN 标记比例概率性标记数据包为 CE。
- 队列长度 > Kmax:严重拥塞,对所有 ECT 数据包标记为 CE。
3.拥塞反馈
接收端收到 CE 标记的 RoCE 数据包后,生成CNP(拥塞通知报文),发送给发送端。
4.速率调整
发送端接收 CNP 后,触发拥塞控制算法(如 DCQCN),降低发送速率,缓解网络拥塞。
四、ECN 的核心优势与适用场景
| 优势 | 适用场景 |
|---|---|
| 无丢包开销,避免重传延迟 | 智算中心 RoCE 网络(AI 训练梯度同步) |
| 拥塞信号更精准,提前缓解 | 数据中心低时延业务(实时交易、数据库同步) |
| 与现有协议兼容(TCP/RoCE) | 混合流量网络(长流 + 短流并发) |
ECN 的依赖条件
- 端到端支持:发送端、接收端必须均开启 ECN 功能,否则设备会退化为传统丢包策略。
- 网络设备支持:交换机需具备 ECN 标记能力,且可配置水位线和标记比例。
- 拥塞控制算法适配:发送端需支持基于 ECN 反馈的速率调整(如 TCP 的 ECE 标志位、RoCE 的 DCQCN 算法)。
五、ECN 标记比例
ECN 标记比例是显式拥塞通知(ECN)机制中的关键参数,指在网络处于特定拥塞程度时,交换机等网络设备对经过的数据包进行 ECN 拥塞标记(即 CE 标记)的概率或占比,用于精准控制拥塞通知的触发强度,避免标记过于频繁或不足导致的网络波动。
1.核心作用
该比例通常作用于网络中度拥塞场景。比如交换机缓冲区数据量处于低水位线(拥塞预警阈值)和高水位线(严重拥塞阈值)之间时,不会对所有数据包都标记,而是按设定比例标记部分数据包。这样既能向发送端传递拥塞信号,促使其降速,又能避免因全量标记导致发送端速率骤降,保障网络传输的稳定性。例如星飞全闪存储就曾配置 9% 的标记比例,用于低、高水位线之间的数据包拥塞标记。
2.功能实现方式
其实现需依托网络设备配置、队列监测和端侧反馈协同完成,具体步骤如下:
- 预设关键参数阈值:首先在交换机等网络设备上完成基础配置。一方面设定队列的低水位线(Kmin)和高水位线(Kmax),界定不同拥塞阶段;另一方面设定 ECN 标记比例。比如典型配置可设低水位线为 30% 队列深度、高水位线为 60% 队列深度,标记比例设为 10%,明确中度拥塞时的标记概率。在 SONiC 交换机等设备中,还可通过专属配置界面或命令行定义这些参数。
- 实时监测队列拥塞状态:设备持续监控端口缓冲区的队列长度。当队列长度小于低水位线时,判定为无拥塞,不进行任何 ECN 标记,数据包正常转发;当队列长度超过高水位线,判定为严重拥塞,通常对所有数据包进行 ECN 标记,快速触发拥塞缓解;当队列长度处于低、高水位线之间时,进入中度拥塞状态,触发概率性标记逻辑。
- 按比例执行 ECN 标记:中度拥塞状态下,设备依据预设的 ECN 标记比例,通过随机算法筛选待标记数据包。例如标记比例为 9% 时,每 100 个经过的数据包中约有 9 个会被设置 CE 标记。标记过程仅修改 IP 头部的两位 ECN 标志位,不改变数据包的有效数据,几乎无额外开销。
- 端侧反馈与速率调整:接收端收到带 CE 标记的数据包后,会通过对应的反馈机制告知发送端。比如 TCP 协议通过 ACK 包中的 ECE 标志位反馈,RoCE 网络中接收端可生成 CNP(拥塞通知报文)反馈。发送端根据接收的反馈信息,结合标记数据包的占比感知拥塞程度,通过 AIMD 等算法调整发送速率,最终实现拥塞缓解。
3.网络硬件与基础参数
- 设备缓冲区容量:不同厂商交换机的缓冲区差异很大,比如 Mellanox 交换机缓冲区可能达 12MB,而 Broadcom 部分机型仅 4MB。缓冲区小的设备若标记比例对应的触发区间过宽,易导致队列溢出;缓冲区大的设备可适当放宽比例区间,避免过早标记。像 H3C S9825 - 64D 交换机就建议下限值设为队列容量的 5% - 10%,上限值设为 10% - 20%。
- 链路带宽与 RTT:链路带宽和往返时延(RTT)决定的 BDP(在途数据量)是关键参考。100Gbps 链路搭配 50 微秒 RTT 时,BDP 约 625KB,ECN 标记比例对应的阈值区间需预留足够 gap 以容纳 1 - 2 个 BDP 的数据。高速链路(如 400G)需适配更大的阈值区间,Meta 的 400G 网络就采用了 5MB 的宽松 ECN 阈值,对应的标记比例区间也随之调整。
4.网络拥塞控制协同机制
ECN 常与 PFC(优先级流控)配合使用,二者的阈值搭配直接影响标记比例设定。**核心原则是 ECN 的高阈值(kmax)必须小于 PFC 的关闭阈值(xoff),且要留出足够 gap。**若 kmax 与 xoff 过近,ECN 反馈回路(需至少 1 个 RTT)来不及生效,PFC 会频繁触发,此时需调低 kmax 并调整标记比例,让 ECN 提前发挥作用;若 PFC 极少触发但延迟过高,则需提高标记比例的触发概率,通过更早的标记缓解队列积压。
5.业务流量特征
- 业务时延敏感度:低时延敏感业务如 AI 训练、实时交易,需设置较高的初始标记比例,比如降低 kmin 阈值,让队列刚出现轻微积压就触发概率标记,以小幅度降速换取低延迟;而云存储等对吞吐更敏感的业务,可降低初始标记比例,避免频繁降速影响传输效率。
- 流量突发与汇聚模式:AI 训练中的 AllReduce 场景会出现几十上百个节点同时向一个节点发数据的 Incast 情况,入向队列压力骤增。此时需提高中度拥塞阶段的标记比例,快速压制突发流量;而常规分布式业务流量平稳,标记比例可设得更平缓。
6.端侧协议与适配能力
标记比例需匹配发送端的拥塞控制算法响应能力。在 RoCE 网络中,发送端通常依赖 DCQCN 算法响应 ECN 标记,若算法中速率恢复设置得过于激进,刚降速就快速回升,就需提高标记比例,通过更密集的标记强化拥塞信号;而 TCP 协议通过 ACK 包中的 ECE 标志位反馈拥塞,其 AIMD 算法调整节奏较慢,标记比例可设置得更温和,避免发送端速率骤降。若发送端不支持 ECN 功能,设备会按 WRED 策略丢弃报文,此时标记比例设置便失去意义,需适配丢弃概率而非标记比例。
7.网络拓扑与负载变化
- 网络拓扑复杂度:多跳网络的 RTT 更长,ECN 反馈延迟增加,标记比例的区间需扩大,让标记率缓慢上升,给发送端充足的调整时间;而 1 - 2 跳的简单拓扑可缩小区间,提升标记灵敏度。
- 动态负载波动:网络流量模式会随业务变化,如新增推理服务、数据预处理任务后,流量特征改变。若监控到 ECN 标记率持续高于 50% 或低于 5%,需相应调低或调高标记比例;若 PFC 触发计数持续增长,也需通过调整标记比例让 ECN 充分发挥作用,减少 PFC 介入。
六、ECN 与 PFC 协同部署
ECN 与 PFC 常协同部署于 RoCE 等对无损传输、低延迟要求高的智算中心网络,二者遵循 "ECN 提前预警控拥塞,PFC 兜底防丢包" 的核心逻辑,配置需围绕阈值匹配、设备协同、业务适配等核心要点展开。

1.阈值强绑定:筑牢层级控制关系
这是协同配置的核心原则,需明确 4 个关键阈值的大小排序:ECN 的 kmin(开始标记阈值)<ECN 的 kmax(全量标记阈值)<PFC 的 xoff(触发暂停阈值),且各阈值间需预留合理间隙。一方面,kmax 与 xoff 的间隙要能容纳至少 1 个 BDP(在途数据量),比如 100G 链路搭配 50 微秒 RTT 时 BDP 约 625KB,二者间隙就不宜小于该值,为 ECN 反馈(需 1 - 2 个 RTT)预留足够反应时间,避免 ECN 未生效就触发 PFC;另一方面,kmin 与 kmax 需保留渐进区间,像 100G RoCE 网络设 kmin=150KB、kmax=500KB,可实现标记率平滑上升,防止发送端速率骤变。同时 PFC 需配置 xon(恢复发送阈值),通常设为 xoff 减去 10KB - 100KB,避免 XON/XOFF 频繁切换导致网络抖动。
2.设备参数协同:统一底层适配标准
- 交换机侧参数适配:不同厂商交换机缓冲区差异大,Mellanox 交换机缓冲区可达 12MB,Broadcom 部分机型仅 4MB,配置时需按缓冲区容量调整阈值。例如大容量缓冲区交换机可将 xoff 设为 2 - 5MB,小缓冲区设备则需适度降低,同时确保 ECN 阈值同步适配。且交换机需开启优先级队列与 ECN 标记功能,确保仅对目标优先级流量(如 RoCE 业务对应的优先级)启用 PFC 和 ECN,避免影响其他普通流量。
- 网卡侧算法联动:网卡需启用 DCQCN 等适配 RoCE 的拥塞控制算法,其参数要与 ECN 标记逻辑匹配。若网卡速率恢复设置过激进,会导致发送端降速后快速回升,使 ECN 标记失效,此时需调慢速率恢复节奏;同时需确保网卡能正常解析 CNP 报文,及时响应 ECN 的拥塞标记信号。
3.业务场景适配:按需调整管控强度
- 低时延高优业务:AI 训练梯度同步、实时交易等业务,需让 ECN 更早介入,可将 kmin 下调至 150KB 左右,使轻微队列积压就触发标记,通过柔性降速控制延迟,同时将 xoff 设为较高值(如 1.5MB 以上),减少 PFC 触发概率。
- Incast 高发场景:AI AllReduce 等多对一传输场景,流量突发时队列压力会骤增,需扩大 kmin 与 kmax 的区间,提高中度拥塞阶段的标记比例,同时 xoff 需预留更大缓冲区,避免突发流量直接触发 PFC,防止多节点互相暂停引发 PFC 死锁。
- 大吞吐普通业务:数据备份、非实时推理等业务,可适当提高 kmin(如 300 - 500KB),避免 ECN 过度干预影响吞吐,xoff 则按链路 BDP 的 1.5 倍配置,平衡缓冲空间与拥塞防护。
4.动态监控调优:适配网络负载变化
配置并非一成不变,需通过监控指标持续优化。正常状态下应满足 ECN 标记率维持在 10% - 30%,PFC 触发次数接近 0,RDMA 重传率低于 0.01%。若 PFC 频繁触发,需降低 kmax 并增大其与 xoff 的间隙,让 ECN 充分发挥作用;若延迟过高但无 PFC 触发,可下调 kmin 和 kmax,减少队列积压;当新增业务导致流量特征改变时,需重新计算 BDP,同步调整 ECN 和 PFC 的阈值参数。
5.规避典型风险:提前防范异常问题
一是避免 PFC 死锁,配置时需避免多链路互传场景下 xoff 阈值过近,同时限制 PFC 暂停帧的传播范围,防止全网扩散引发 "PFC 风暴";二是防止 ECN 失效,需确认端到端设备均开启 ECN 功能,若某端设备不支持,需降级适配丢包策略,避免标记功能无效导致拥塞扩散;三是上线前通过 iperf3、perftest 等工具模拟满负载和突发流量,验证阈值合理性,确保极端场景下也能实现 "ECN 为主、PFC 兜底" 的协同效果。