跳到主要内容

RoCE(RDMA over Converged Ethernet)

RoCE 在标准以太网上实现 RDMA 功能,通过无损以太网机制(PFC + ECN)弥补以太网天然有损的缺陷,从而提供接近 InfiniBand 的低延迟和高带宽,同时复用现有以太网基础设施,大幅降低部署成本。Meta(24K GPU 集群)、阿里云、国内主要 AI 云厂商均大规模采用 RoCEv2。


RoCE v1 vs RoCE v2

特性RoCE v1RoCE v2
封装层以太网帧(L2,EtherType 0x8915)UDP/IP(L3,UDP dst port 4791)
路由不可路由,仅限同一广播域可路由,支持跨子网
多路径不支持ECMP(等价多路径)支持
拥塞控制PFC 逐跳背压PFC + ECN(DCQCN/TIMELY)
主流程度已被淘汰,仅存量部署当前主流,行业标准
引入时间20102014

RoCEv2 将 IB 传输层(BTH,Base Transport Header)封装在 UDP payload 中,使 IP 路由设备无需感知 RDMA 语义,网络基础设施与 IB 完全兼容。5 元组(源/目的 IP、源/目的端口、协议)可用于 ECMP 哈希,实现流量负载均衡。


协议栈结构

应用层(MPI、NCCL、存储客户端)
|
Verb API(ibv_post_send / ibv_poll_cq)
|
RDMA Provider(libibverbs + rdma-core)
|
RoCEv2 传输层(IB BTH + RETH/AETH)
|
UDP / IP(L3 路由)
|
以太网 MAC(L2)
|
25/100/200/400 GbE 物理层

与 InfiniBand Verb 兼容:RoCEv2 在应用层与 IB 使用相同的 Verb API(ibv_* 系列函数),应用代码无需修改即可在 IB 和 RoCE 网卡之间迁移。NCCL、OpenMPI、UCX 均通过同一接口同时支持 IB 和 RoCE。

RoCEv2 同样支持 RC/UD QP、RDMA Write/Read、Atomic 操作,语义与 IB 一致。主要差异在于底层封装和拥塞控制机制。


无损以太网要求

无损以太网是 RoCE 正常工作的前提。标准以太网在拥塞时直接丢包,RDMA 的 RC QP 遇到丢包后需要重传,重传路径涉及软件介入,延迟急剧增加(从 us 级变为 ms 级)。因此必须通过以下机制保证零丢包:

PFC(Priority Flow Control,802.1Qbb)

PFC 是逐跳(hop-by-hop)的背压机制,工作在链路层:

工作原理

  1. 接收端(交换机端口或 NIC)监控各优先级队列的占用水位。
  2. 当某优先级的缓冲区占用超过 Xon 门限(暂停门限)时,向上游发送 PAUSE 帧,携带需要暂停的优先级和暂停时间。
  3. 上游收到 PAUSE 帧后,停止发送该优先级的数据,直到暂停时间到期或收到 PFCWD 恢复帧(Xoff 门限以下时主动恢复)。
  4. RDMA 流量映射到独立优先级(通常 Priority 3 或 Priority 5),与普通 TCP 流量隔离。

PFC 的已知问题

  • Head-of-Line Blocking(HOLB):同一优先级内,一条流的拥塞 PAUSE 会阻塞同优先级的所有流,即使其他流没有问题。
  • PFC Deadlock(PFC 死锁):多个交换机之间形成循环等待,所有方向均被 PAUSE,网络永久停顿。需要 Watchdog(PFCWD)定时检测并强制恢复。
  • PAUSE 帧传播放大:背压沿链路向上游传播,可能影响无辜的流量。

缓解措施:细粒度优先级隔离、PFCWD(PFC Watchdog,自动断链恢复)、显式路由规避循环。

ECN(Explicit Congestion Notification)

ECN 是端到端的拥塞感知机制,工作在 IP 层(RoCEv2 特有,RoCEv1 不支持):

工作原理

  1. 发送端在 IP 头 ECN 字段标记 ECT(ECN-Capable Transport,01 或 10)。
  2. 交换机检测到队列深度超过 K_min 门限 时,将数据包 IP 头的 ECN 字段改写为 CE(Congestion Experienced,11)
  3. 接收端(RoCEv2 NIC)收到 CE 标记后,向发送端回送 CNP(Congestion Notification Packet),这是一个特殊的 RoCEv2 控制包。
  4. 发送端收到 CNP 后执行速率降低(见 DCQCN 小节)。

ECN 标记使用 RED(Random Early Detection)变种:

队列深度 < K_min:不标记 CE
K_min <= 队列深度 < K_max:以概率 p = (depth - K_min) / (K_max - K_min) × P_max 标记
队列深度 >= K_max:以概率 P_max 标记(通常 P_max = 0.1-1.0)

DCQCN 拥塞控制

DCQCN(Data Center Quantized Congestion Notification)是 RoCEv2 最主流的拥塞控制算法,由微软研究院提出,结合 ECN(端到端信号)和 Rate-Based 控制(发送端执行)。

速率控制状态机

降速(Rate Decrease)

收到 CNP -> 记录当前速率 RC
-> 将当前速率乘性减:RT = RC × (1 - α/2)
-> α 更新:α = α × (1 - g),其中 g 为平滑因子(~0.00390625)
-> 进入 Fast Recovery 阶段

默认乘性减因子:首次收到 CNP 后,速率降低约 50%(α 初始值为 1)。连续收到 CNP 时降幅逐渐减小(α 递减),避免过度降速。

速率恢复(Rate Increase):分两个阶段:

阶段 1 — Fast Recovery(快速恢复):
每隔 B 字节或 T 时间,将速率设置为当前速率与目标速率的中间值
RT = (RT + RC) / 2
重复 F 次(典型 F = 5)

阶段 2 — Additive Increase(加性增):
每隔 B 字节或 T 时间,速率线性增加一个固定步长 RAI
RT = RT + RAI
直到达到最大速率 Rmax 或收到新的 CNP

关键参数

参数典型值含义
Rmin线速的 5-10%最低发送速率下限
Rmax线速的 95-100%最高发送速率上限
K_min / K_max100KB / 200KBECN 标记队列深度门限
P_max0.5ECN 标记最大概率
T55 us速率恢复计时器间隔
B150 KB速率恢复字节计数间隔
F5Fast Recovery 步数
RAI40 Mbps加性增步长

实际部署中这些参数需根据集群规模和流量模式调优,配置不当会导致吞吐量震荡或收敛缓慢。

TIMELY 算法(替代方案)

Google 提出的基于 RTT 的拥塞控制,不依赖 ECN,通过测量 RTT 变化判断拥塞:

  • RTT 增加 -> 降速,RTT 稳定 -> 恢复
  • 优点:不需要交换机配置 ECN,部署简单
  • 缺点:RTT 测量精度依赖高精度时钟,对时间戳抖动敏感
  • 主要用于 Google 内部;RoCEv2 开源社区主要使用 DCQCN

与 InfiniBand 的性能对比

指标InfiniBand NDRInfiniBand HDRRoCEv2(200GbE)RoCEv2(400GbE)
单端口线速400 Gbps200 Gbps200 Gbps400 Gbps
单向峰值带宽~48 GB/s~24 GB/s~23 GB/s~46 GB/s
小消息延迟~600 ns~700 ns~1-2 us~1-2 us
无损保证机制硬件信用流控,天然无损硬件信用流控,天然无损PFC + ECN(软件配置)PFC + ECN(软件配置)
大规模拥塞控制ECN + FECN/BECN + SHARPECN + FECN/BECNDCQCN / TIMELYDCQCN / TIMELY
网内计算SHARP(AllReduce 卸载)SHARP(v2)
硬件成本(相对)
配置复杂度中(SM 统一管理)高(PFC 参数调优)
大规模稳定性成熟成熟PFC 死锁风险需管理PFC 死锁风险需管理

延迟差距分析

RoCEv2 比 IB 延迟高约 2-3 倍的根本原因:

  1. UDP/IP 封装比 IB LRH/GRH 更长,序列化时间略增。
  2. ECN 拥塞控制的反馈回路比 IB 信用流控慢(需要 CNP 往返)。
  3. PFC 暂停期间,被暂停的流等待时间不确定。
  4. 以太网交换机 store-and-forward 延迟通常高于 IB 直通(cut-through)交换机。

对于 AI 训练中的大消息 AllReduce,带宽是主要瓶颈而非延迟,RoCEv2 与 IB 的性能差距在大消息下缩小至 5-10%。


在 AI 集群中的应用

适用场景

RoCEv2 在以下场景具有成本优势:

  • 规模适中(<1000 GPU):交换机数量少,PFC 死锁风险低,配置复杂度可管理。
  • 成本敏感场景:以太网交换机价格约为同等端口数 IB 交换机的 1/3 到 1/2。
  • 混合流量:同一以太网网络同时承载 RDMA 和普通 TCP 流量(不同优先级隔离)。
  • 存储网络:NVMe-oF over RoCEv2 在 AI 存储系统中广泛使用。

主要厂商

  • NVIDIA(原 Mellanox)ConnectX 系列:同一 NIC 支持 IB 和 RoCEv2 两种模式,ConnectX-7 同时支持 NDR IB 和 400GbE RoCEv2。
  • Marvell FastLinQ:以太网 RDMA NIC,主要面向存储和超融合场景。
  • 博通(Broadcom):以太网交换机主力供应商,Tomahawk 和 Trident 系列广泛用于 RoCEv2 网络的 Spine/Leaf 层。

国内云厂商实践

阿里云:自研 RDMA 以太网方案,大规模部署 RoCEv2,通过自研交换机和拥塞控制算法(结合 DCQCN 改进版)支持 10万+ GPU 规模集群。主要经验:

  • 精细化 PFC 优先级分离,RDMA 流量独占优先级 3
  • 自适应 ECN 门限(动态根据队列深度调整 K_min/K_max)
  • 引入 PFCWD + 链路级别 PFC 死锁检测,将死锁恢复时间控制在秒级以内

华为:iRDMA(基于 RoCEv2 改进),在昇腾集群内部使用,结合 iLossless 无损以太网方案(HPCC 拥塞控制算法,基于 INT 精确 RTT 测量)。

字节跳动 / 腾讯 / 百度:均大规模部署 400GbE RoCEv2,替代 IB 用于 GPU 集群节点间通信。

与 InfiniBand 类似,RoCEv2 主要承担节点间通信:

节点内(NVLink / HCCS / ICI):
TP AllReduce — 带宽最优,延迟最敏感

节点间(RoCEv2 400GbE):
PP P2P — 激活值传递,消息适中
DP AllReduce — 梯度同步,消息大,带宽主导
EP AllToAll — MoE 专家路由,消息分散,延迟敏感

典型集群规格(400GbE RoCEv2)

层级设备端口规格备注
节点 NICConnectX-7 / CX72×200GbE 或 1×400GbE每 GPU 节点 1-2 张 NIC
Leaf 交换机Tomahawk4/564×400GbE下行连服务器,上行连 Spine
Spine 交换机Tomahawk5 / Jericho364-128×400GbE核心转发层
典型集群规模512-4096 GPU(2 层 fat-tree)

配置与运维要点

必须启用的网络功能

部署 RoCEv2 的以太网交换机必须配置:

  1. PFC:为 RDMA 流量优先级(如 Priority 3)启用 PFC,关闭其他优先级 PFC 以避免 HOLB。
  2. ECN:在所有交换机端口和 NIC 上启用 ECN,配置合适的 K_min/K_max。
  3. DCQCN 参数:在 NIC 驱动(OFED/MLNX_OFED)中配置 DCQCN 参数,并与交换机 ECN 门限匹配。
  4. PFCWD:启用 PFC Watchdog,设置超时时间(典型 200ms),检测并恢复 PFC 死锁。
  5. QoS 映射:确保 RDMA 流量的 DSCP 值正确映射到 PFC 优先级。

常见问题

问题根因解决方案
吞吐量低于线速 50%DCQCN 参数配置过于激进,速率过度降速调大 K_min/K_max,减小 P_max
延迟抖动严重PFC 暂停时间不稳定,交换机缓冲区设置不当增大交换机缓冲区,精调 PFC 水位
PFC 死锁网络拓扑存在环路,PFC 反馈形成循环等待启用 PFCWD,检查路由无环
RoCE 连接超时ECN 未正确传播,CNP 丢失检查 QoS 配置,确保 CNP 走高优先级

详见 InfiniBand 专题文档 了解与 IB 的技术对比与选型建议。