ECN · CNP · RoCEv2

DCQCN:面向 RDMA 的量化拥塞控制

DCQCN(Data Center Quantized Congestion Notification)是一种端到端拥塞控制机制,使无损 RoCEv2 fabric 无需长期处于 PFC 暂停状态即可运行。 交换机提前进行 ECN 标记,接收端回送 CNP,发送端随之量化调整速率,使发送端在队列溢出前降速。

闭环ECN 标记、CNP、速率下调
先于 PFCECN 在暂停之前先行标记

DCQCN 闭环

发送端 NIC、拥塞交换机、接收端 NIC。交换机的 WRED ECN 标记器会在队列触及 PFC 暂停阈值之前触发。接收端生成拥塞通知包(CNP);发送端的反应点降低速率,随后回升。无损、无 PFC 压力、快速收敛。

DCQCN 闭环拥塞控制 从左到右共三个方框:发送端网卡(reaction point)、带 WRED ECN 标记器的拥塞交换机、接收端网卡(notification point)。正向箭头表示报文从左向右流动并被交换机标记。反向箭头表示 CNP 从右向左回传至发送端。标注指明了 ECN K-min、K-max 阈值以及 CNP 反馈路径。 数据 + 支持 ECN ECN = CE(已标记) CNP:拥塞通知报文 发送端 NIC反应点(Reaction Point)α 更新 · 降速 · 恢复 OcNOS-DC 交换机WRED ECN 标记器K-min · K-max · P-max 接收端 NIC通知点每 50 µs 一个 CNP DCQCN · WRED 标记 · CNP 反馈 · 量化速率限制 · 无损 RoCEv2

DCQCN 在 AI 网络中所承担的工作

RoCEv2 有两种处理拥塞的方式:PFC 暂停,这是一种逐跳传播的反压;以及 DCQCN,一种端到端的速率控制环。仅靠 PFC 也能奏效,但它会把拥塞向上游推挤,存在暂停风暴和队头阻塞的风险。DCQCN 在 PFC 之前起作用,在队列达到暂停阈值之前就用 ECN 标记数据包,使发送端在交换机不得不发出暂停之前就放慢速度。

做得好,您 fabric 生命周期的大部分时间都只依赖 DCQCN 反馈,以 PFC 作为安全兜底。做得差,ECN 阈值与 PFC headroom 不匹配,即便配置了 DCQCN,您仍会遭遇 pause 风暴。

反应点(Reaction Point)

发送端 NIC 量化其速率

接收 CNP 并运行 DCQCN α-更新、乘性递减、加性递增 环,以量化其发送速率。

拥塞点

交换机提前标记 ECN

将支持 ECN 的报文标记为 CE 当队列深度越过 K-min 时采用 WRED 曲线,标记概率线性上升,在 K-max 处达到 P-max。

通知点

接收端回送 CNP

针对每条被标记的流,向发送端回送一个 CNP,速率限制约为 每条流每 50 µs 一个.

PFC 暂停与 DCQCN,并排对比

两者都能让 RoCEv2 保持无损,但作用点不同。调优目标是让 fabric 的绝大部分运行时间依靠 DCQCN 反馈,而把 PFC 作为兜底手段保留。

维度 PFC 暂停最后防线 DCQCN主控制
机制逐跳向上游传播的反压。从发送端到接收端的端到端速率控制环。
触发点当队列达到暂停阈值时触发。在队列达到暂停阈值之前标记 ECN。
失效模式存在暂停风暴和队头阻塞的风险。发送端在交换机不得不发出暂停之前就放慢速度。
在 fabric 中的角色仅作为安全兜底,用于缓冲区仍被填满的情况。在 fabric 绝大部分运行时间里担任主控制。
适用范围链路级,逐跳进行。端到端,从发送端一路到接收端。

OcNOS-DC 中的 ECN 标记

WRED 曲线

K-min, K-max, P-max

按优先级队列的 WRED ECN 标记,可配置 K-min 和 K-max 阈值以及 P-max 标记概率。

按优先级

独立于 PFC

ECN 标记与 PFC 暂停阈值相互独立配置。

VXLAN 感知

基于 VXLAN 的 ECN

在 Trident 3(X4、X5、X7)和 Trident 4 平台上,ECN 位在 VXLAN 封装和解封装过程中得以保留,因此 DCQCN 可在 EVPN-VXLAN overlay 上端到端生效,而不仅限于 underlay。

适用范围

许可层级

PFC 和 ECN 包含在 OcNOS-DC IPBASE 和 PLUS SKU 中。Dynamic ECN、PFC 死锁检测与恢复,以及基于 VXLAN 的 PFC 和 ECN 包含在 PLUS SKU 中。

为什么这一点比听起来更重要

ECN 阈值失调有两种看似相反的情形,但都会让 fabric 调校失当。

  • 配置了 ECN 却从不标记(K-min 过高):PFC 承担了全部拥塞控制负担。
  • ECN 标记过于激进(K-min 过低):在出现任何真正拥塞之前,发送端就已降速。

DCQCN 常见问题解答

什么是 DCQCN?
DCQCN(Data Center Quantized Congestion Notification)是面向以太网 AI 与存储 fabric 上 RoCEv2 RDMA 流量的拥塞控制算法。它在队列溢出之前对发送端进行限速,从而使 GPU 与存储流量减少处于 PFC 暂停的时间并避免停顿。
DCQCN 如何工作?
DCQCN 以闭环方式运作:当某队列越过其阈值时,交换机对报文进行 ECN 标记,接收方向发送方回送一个 Congestion Notification Packet(CNP),发送方随即降低发送速率,之后随着拥塞消退逐步恢复。
DCQCN与PFC如何协同工作?
DCQCN 是主要控制手段,PFC 则是最后防线。ECN 标记与 CNP 反馈会提早降低发送方速率,因此流量很少触及暂停。只有在缓冲区仍被填满时 PFC 才会触发,从而防止丢包。调优的目标是让 fabric 保持在 ECN 控制之下,并避免持续的 PFC 暂停。
DCQCN 中的 ECN K-min 和 K-max 阈值是什么?
K-min 和 K-max 是驱动 ECN 标记的队列深度阈值。低于 K-min 时不标记任何数据包;高于 K-max 时全部标记。在两者之间,标记概率会向设定的最大值上升,因此拥塞信号随队列增长而逐步变化,而非突然触发。
DCQCN 是否需要 RoCEv2?
是的,DCQCN 专为 RoCEv2 RDMA 流量而设计,依赖 RoCEv2 端点生成 CNP 反馈并据此作出响应。它将网络中的 ECN 与 RoCEv2 发送端的速率控制相结合,因此是 RoCEv2 fabric 的标准拥塞控制选择。

在为真实工作负载调优 DCQCN?把您的抓包记录交给我们

把您的 ECN 计数器和队列抓包记录发给我们,IP Infusion 的工程师将帮您对齐 K-min、K-max 和 PFC 余量,或先在 AI Fabric Design Suite 中生成一版初步的 leaf-spine 布局。