乐于分享
好东西不私藏

AI 集群网络调优:ECN 水位线没配好,你知道会发生什么吗?

AI 集群网络调优:ECN 水位线没配好,你知道会发生什么吗?

🔺点击上方卡片关注YESLAB实验室
获取新网工学习资源
学习笔记 | 实验手册 考试咨询 | 就业辅导

— AI算力网络系列 篇 —

AI算力网络系列连载

配过 OSPF、做过 QoS,但AI集群的网络为什么让你看不懂?

为什么AI集群不用TCP,非要用RDMA?

为什么AI集群宁可网络变慢,也不能让PFC频繁触发?

前一篇讲了PFC的工作机制与副作用——

PFC通过PAUSE帧让上游暂停发送,从而保住缓冲区、避免丢包。 但PFC的本质是被动响应:缓冲区水位已经到达阈值, 拥塞实际上已经发生,PFC才介入。

被动响应有两个代价:

第一,PAUSE 帧向上游逐跳传播,形成背压, 严重时引发HoL Blocking,极端情况下造成PFC死锁。

第二,PAUSE帧的粒度是端口级别, 一旦触发,该优先级下所有流量全部暂停, 无法区分哪条流是拥塞源头。

ECN的目标,是在PFC触发之前就把拥塞消解掉。


ECN 的基本原理

ECN,全称Explicit Congestion Notification,显式拥塞通知。

标准定义在RFC3168,核心机制分两个层面:

① 交换机标记当交换机的出端口队列深度超过预设阈值时, 不丢弃数据包,而是在包头的IP ECN字段打上拥塞标记—— 将ECN字段从 01 或 10(支持ECN)修改为 11(发生拥塞)。

② 接收方通知发送方接收方收到带有拥塞标记的数据包后, 在回复的 ACK 报文中设置 ECE(ECN-Echo)标志, 通知发送方:路径上出现了拥塞。

发送方收到ECE通知后,主动降低发送速率。

ECN标记与反馈路径

整个过程中,没有一个包被丢弃,拥塞信号通过包头字段传递,发送方主动响应。


ECN在RoCEv2中的工作方式

标准ECN依赖TCP的ACK机制来回传拥塞通知。 RDMA绕过了TCP协议栈,ACK机制不再适用。

RoCEv2 中 ECN 的反馈路径

RoCEv2环境下,ECN的反馈路径做了对应调整:

接收方收到带ECN标记的数据包后, 生成一个 CNP(Congestion Notification Packet,拥塞通知包), 直接发回给发送方的 RDMA网卡(RNIC)。

发送方的RNIC收到CNP后, 按照 DCQCN 算法降低对应QP的发送速率。

这里有一个重要细节:

CNP的发送频率有上限控制, 默认每个流每 50 微秒最多发送一个 CNP, 防止CNP报文本身占用过多带宽。


ECN的核心参数:水位线

ECN的标记行为由交换机上的两个阈值控制:

Kmin(最小阈值)队列深度低于Kmin时,不标记任何包。 网络处于正常状态,无需干预。

Kmax(最大阈值)队列深度超过Kmax时,对所有包打满标记。 拥塞已经严重,需要让所有发送方立刻降速。

Kmin 到 Kmax 之间按概率标记,队列越深,标记概率越高。 这个区间实现了渐进式的拥塞反馈, 避免所有发送方同时降速造成的流量振荡。

ECN 水位线三区间示意

三个参数的设置直接影响ECN的响应灵敏度:

  • Kmin设得太高:拥塞已经较严重才开始标记, ECN的提前介入优势丧失,PFC仍会频繁触发
  • Kmin 设得太低:正常流量波动也会触发标记, 发送方频繁降速,带宽利用率下降
  • Kmax与Kmin区间太窄:所有发送方几乎同时收到拥塞通知, 集体降速后流量骤降,随后又集体升速,形成周期性振荡

ECN 与 PFC 的关系

ECN和PFC不是替代关系,是分层防御

正常状态↓ 队列深度超过 KminECN 开始标记 → 发送方收到 CNP → 主动降速↓ 降速不及时,队列继续上涨↓ 队列深度超过 PFC 阈值PFC 触发 → PAUSE 帧发出 → 强制暂停上游↓ 极端情况丢包

ECN在第一层介入,依赖发送方的主动配合。 PFC在第二层兜底,强制暂停,不依赖发送方的配合。

理想状态下,ECN把拥塞消解在萌芽阶段, PFC几乎不需要触发。

衡量一个AI集群网络调优质量的重要指标之一, 正是 PFC 触发次数与 ECN 标记次数的比值—— ECN标记多、PFC触发少,说明拥塞被提前消解; PFC频繁触发,说明ECN的水位线配置需要重新审视。


ECN的局限性

ECN依赖发送方的主动降速,存在一个前提假设:

发送方必须支持 ECN,且必须及时响应 CNP。

Incast 场景示意

在RoCEv2集群里,这个条件通常满足—— 主流RNIC(如 Mellanox ConnectX 系列)均支持 DCQCN, CNP 响应机制内置在硬件中。

但ECN无法解决所有拥塞场景:

  • Incast 场景:大量发送方同时向同一个接收方发送数据, 队列在极短时间内从空到满,ECN来不及响应, PFC直接触发甚至发生丢包
  • 参数配置不当:Kmin/Kmax 水位线、CNP 发送间隔、 DCQCN速率恢复参数之间相互影响, 任何一个参数配置失当都可能让ECN失效

这也是为什么AI集群的网络调优, 需要将 ECN、PFC、DCQCN 作为一个整体来设计, 而不是单独配置每一个机制。


小结

ECN 通过在 IP 包头打标记的方式, 将拥塞信号从交换机传递给发送方, 让发送方在缓冲区溢出、丢包发生之前主动降速。

在 RoCEv2 环境中,ECN 标记触发 CNP 报文, 由 DCQCN 算法控制发送方的速率调整行为。

ECN 是 AI 集群无损网络的第一道主动防线, 目标是将 PFC 的触发频率降到最低。


下一篇:DCQCN 是什么?ECN 和 PFC 如何被协调成一套完整的拥塞控制体系?

报名信息

5月11日前完成报名,课程依然是¥1999。 
之后将调整至¥2199——涨价不可逆
更重要的是:专家课程模块已开发完毕,5月11日前报名的同学,享有专家课程优惠升级资格(需要了解专家课程的也可以后台私信)
现在报名 = 最低价 + 最多内容 + 专家课程升级优惠资格 
扫码即可报名
点赞”“在看”,让更多人看到
新网工学习平台

无论你是网络工程的初学者,还是希望提升技能的专业人士,YESLAB致力于提供系统化的技术学习资源。通过灵活的学习模式和实战案例解析,帮助你逐步构建专业知识体系,探索职业发展的可能性。加入YESLAB,与行业爱好者共同成长,如需了解更多学习资源,可联系课程顾问获取,开启你的技术进阶之旅!