DCQCN:面向 RDMA 的量化拥塞控制
DCQCN 是一种闭环拥塞控制机制,可使 RoCEv2 AI 组网远离 PFC pause 并避免丢包:交换机提前进行 ECN 标记,接收端回送 CNP,发送端据此量化调整其速率。OcNOS-DC 为 xCCL(NCCL / RCCL / oneCCL)集合通信负载提供了预调优的默认参数,并对外开放每一个阈值,以满足需要偏离默认值的组网需求。
DCQCN 闭环
发送端 NIC、拥塞交换机、接收端 NIC。交换机的 WRED ECN 标记器触发 before 队列触及 PFC pause 阈值。接收方生成一个 Congestion Notification Packet(CNP);发送方的反应点降低速率,随后再回升。无丢包、无 PFC 压力、快速收敛。
DCQCN 在 AI 网络中所承担的工作
RoCEv2 有两种处理拥塞的方式:PFC pause(逐跳传播的反压)和 DCQCN(端到端速率控制环路)。单独使用 PFC 也能奏效,但它会将拥塞向上游推送,并可能引发 pause 风暴和队头阻塞。DCQCN 在 PFC 之前发挥作用,通过 ECN 对报文进行标记 before 队列到达暂停阈值,从而让发送端在交换机不得不发起暂停之前就降速。
做得好,您 fabric 生命周期的大部分时间都只依赖 DCQCN 反馈,以 PFC 作为安全兜底。做得差,ECN 阈值与 PFC headroom 不匹配,即便配置了 DCQCN,您仍会遭遇 pause 风暴。 阈值调优是全部关键所在、OcNOS-DC 提供针对 xCCL 集体通信调优的默认值,同时为具有特定流量模式的 fabric 开放所有参数。
三大要素
- 反应点(发送端 NIC)。 接收 CNP 并运行 DCQCN 的 α 更新/乘性递减/加性递增循环,以量化其发送速率。
- 拥塞点(交换机)。 将支持 ECN 的报文标记为
CE当队列深度越过 K-min 时采用 WRED 曲线,标记概率随之线性上升,并在 K-max 处达到 P-max。 - 通告点(接收端 NIC)。 针对每条被标记的流向发送端生成一个 CNP,并进行速率限制(通常每条流每 50 µs 一个)。
OcNOS DCQCN 实现方案
K-min, K-max, P-max
按优先级队列进行 WRED ECN 标记,K-min 与 K-max 阈值及 P-max 标记概率均可配置。开箱即享 xCCL 级默认值,以 YANG 路径开放供调优。
独立于 PFC
ECN 标记与 PFC pause 阈值是独立配置的。两者不匹配是最常见的 DCQCN 配置错误。OcNOS 会在应用之前,校验 K-max、headroom 与 pause 触发之间的关系。
基于 VXLAN 的 ECN
ECN 比特位在 VXLAN 封装/解封装过程中得以保留,因此 DCQCN 可在 EVPN-VXLAN overlay 上实现端到端工作,而不仅限于 underlay。
每队列 ECN 计数器
通过 gNMI 流式上报每个出向队列被 ECN 标记的报文计数、队列深度分布以及 CNP 触发速率。可在集群上线(bring-up)期间进行闭环调优。
在投入前先验证
通过 CLI 进行健全性检查,确认 K-min / K-max / PFC 余量与分配给无损优先级的缓冲空间在数学上一致,从而对错误配置快速失败。
DC-PLUS 许可层级
属于 OcNOS-DC PLUS SKU 的一部分。同款镜像、同款支持;无需任何按功能付费的附加项即可激活无损 RDMA 协议栈。
为什么这一点比听起来更重要
大多数“RoCEv2 行为异常”的支持工单都归结于 DCQCN 阈值未对齐。要么 ECN 已配置却从不标记(K-min 设置过高),导致 PFC 承担全部拥塞控制负担;要么 ECN 标记过于激进(K-min 设置过低),导致发送端在出现真正拥塞之前就降速。OcNOS-DC 出厂默认值适用于大多数 TH4 / TH5 架构;对于需要偏离默认的架构,每一项参数都采用 YANG 建模且可查证。