RDMA 深入 —— InfiniBand、RoCE 与 iWARP
第五章 5.8 已经讲了 AI 集群里 IB / RoCE 的”应用层”。本篇深入协议——RDMA 的 verbs、QP / WQE、IB / RoCE / iWARP 的协议差异,以及实际调优。
为什么 RDMA 这么重要
1 | |
RDMA 三大特性:
graph TB
R1[Kernel Bypass<br/>不过 OS 内核]
R2[Zero Copy<br/>不拷贝数据]
R3[Direct Memory Access<br/>网卡读写应用内存]
R1 --> P[低延迟 + 低 CPU]
R2 --> P
R3 --> P
三种 RDMA 实现
graph TB
RDMA[RDMA]
RDMA --> IB[InfiniBand<br/>专用物理 + 链路 + 网络]
RDMA --> ROCE[RoCE<br/>跑在以太网上]
RDMA --> IWARP[iWARP<br/>跑在 TCP/IP 上]
| InfiniBand | RoCE v2 | iWARP | |
|---|---|---|---|
| 物理层 | IB 专用 | 以太网 | 以太网 |
| 链路层 | IB | 以太网 + 无损 | 以太网 |
| 网络层 | IB IBA | UDP/IP | TCP/IP |
| 传输层 | IBA | IBA | iSER over TCP |
| 流控 | Credit-based 无损 | PFC + ECN | TCP 重传 |
| 延迟 | 1-2 μs | 2-5 μs | 5-15 μs |
| 跨子网 | 经路由器 | UDP 路由可达 | TCP 路由可达 |
| 厂家 | NVIDIA Mellanox 主导 | NV / BCM / Marvell | Chelsio 主导 |
| 市场 | AI / HPC 主流 | AI / 云存储 增长 | 金融 / 存储 小众 |
InfiniBand 协议栈
graph TB
APP[应用]
APP --> VERBS[Verbs API<br/>libibverbs]
VERBS --> CORE[IB Core<br/>kernel]
CORE --> HW[网卡硬件<br/>HCA]
HW --> LINK[IB 链路层<br/>credit 流控]
LINK --> PHY[IB 物理层<br/>SerDes / NRZ / PAM4]
HCA(Host Channel Adapter)= IB 网卡。每个 HCA 有:
1 | |
IB 子网管理器
每个 IB 网络有一个 SM(Subnet Manager)——通常运行在 IB 交换机上:
1 | |
这是 IB 和以太网最大的不同——IB 自带”自动配置”,以太网要靠 BGP / 自配置协议。
verbs API:编程模型
RDMA 应用通过 libibverbs 编程。核心概念:
graph TB
PD[Protection Domain<br/>保护域]
CQ[Completion Queue<br/>完成队列]
QP[Queue Pair<br/>SQ + RQ]
MR[Memory Region<br/>注册内存]
WR[Work Request<br/>请求]
PD --- QP
PD --- MR
QP --- CQ
WR --> QP
| 概念 | 作用 |
|---|---|
| PD(Protection Domain) | 保护域,隔离不同应用的资源 |
| MR(Memory Region) | 注册的内存——网卡知道 va→pa 映射 |
| QP(Queue Pair) | 一对 Send Queue + Receive Queue |
| CQ(Completion Queue) | 操作完成事件队列 |
| WR(Work Request) | send/recv/read/write 请求 |
| WC(Work Completion) | WR 完成事件 |
QP 类型
1 | |
RC 是最常用的——MPI / NCCL / Verbs 应用绝大多数用 RC。
四种核心操作
1 | |
RDMA WRITE/READ 是真正的”零开销”——对方 CPU 完全不知道。
1 | |
RoCE 详解
RoCE = RDMA over Converged Ethernet
graph TB
subgraph V1["RoCE v1"]
L1V1[Ethernet]
L2V1[IB 传输层]
L1V1 --- L2V1
end
subgraph V2["RoCE v2"]
L1V2[Ethernet]
L2V2[IP]
L3V2[UDP 4791 端口]
L4V2[IB 传输层]
L1V2 --- L2V2 --- L3V2 --- L4V2
end
RoCE v1:链路层 RDMA,只能同 LAN 内(无 IP 头,不能路由)
RoCE v2:UDP 4791 端口承载 IB 传输层——可以跨子网路由
现在大家说 RoCE 默认是 v2。
RoCE 的”无损”挑战
IB 物理层就是无损的(credit 流控);以太网默认会丢包,RoCE 必须靠无损以太网:
1 | |
详细在 无损网络与拥塞控制 一篇展开。
iWARP 简介
iWARP(Internet Wide Area RDMA Protocol):
1 | |
iWARP 主要在金融、存储应用上有少量部署——AI 不用 iWARP。
GPUDirect RDMA
普通 RDMA 是 CPU 内存 ↔ CPU 内存。AI 训练要 GPU 内存 ↔ GPU 内存——这就是 GPUDirect RDMA:
graph LR
G1[GPU A 显存] --> NIC1[HCA A]
NIC1 --> NIC2[HCA B]
NIC2 --> G2[GPU B 显存]
CPU1[CPU A] -.- X[不参与]
CPU2[CPU B] -.- X
工作原理:
1 | |
GPUDirect RDMA 让 GPU 跨节点通信延迟从 ~10 μs 降到 ~3 μs。这是 H100/B200 集群训练的标配。
配置要点
1 | |
性能数字直觉
| 操作 | 延迟 | 带宽 |
|---|---|---|
| IB ConnectX-7 RC SEND(小消息) | ~1 μs | - |
| IB RDMA WRITE 4 KB | ~2 μs | - |
| IB RDMA READ 4 KB | ~3 μs | - |
| IB RC bulk write 1 MB | - | ~50 GB/s(400G) |
| RoCE v2 RC SEND | ~2-3 μs | - |
| iWARP TCP write 4 KB | ~10 μs | - |
| TCP socket 4 KB | ~30-50 μs | - |
| GPUDirect RDMA WRITE 4 KB | ~3 μs(跨节点) | - |
实测带宽:
1 | |
RDMA 的应用栈
graph TB
APP[应用]
APP --> CHOICE{选择}
CHOICE --> VERBS[Verbs<br/>底层 API]
CHOICE --> MPI[MPI<br/>HPC 标准]
CHOICE --> NCCL[NCCL<br/>AI 集合通信]
CHOICE --> UCX[UCX<br/>统一通信层]
CHOICE --> NVMEoF[NVMe-oF<br/>存储]
CHOICE --> GPFS[GPFS / Lustre<br/>文件系统]
VERBS --> HW[HCA]
MPI --> VERBS
NCCL --> VERBS
UCX --> VERBS
NVMEoF --> VERBS
GPFS --> VERBS
直接写 verbs 的应用很少——大部分通过 MPI / NCCL / UCX 这些上层库。
MPI(Message Passing Interface)
1 | |
NCCL(NVIDIA Collective)
1 | |
UCX(Unified Communication X)
1 | |
RDMA 的”老坑”
坑 1:MTU 不一致导致丢包
1 | |
坑 2:QP 数量爆炸
1 | |
坑 3:RoCE PFC storm
1 | |
坑 4:内存注册慢
1 | |
坑 5:MR 限制
1 | |
verbs 编程的几个调试命令
1 | |
调优清单
1 | |
RoCEv2 与 InfiniBand 深度对比
表格看过便知其一,不知其二。咱今日将两者的骨子里讲透。
可靠性机制的根本差异
InfiniBand 的可靠性刻进了物理层:每条链路都有 credit-based 流控,发送方只在收到对端”空位”信号后才发包,从根本上杜绝链路级丢包。整个 IB 网络是一张天然无损的网。
RoCEv2 跑在以太网上,以太网没有 credit,靠三件套补救:
1 | |
三者缺一不可——PFC 防止瞬时丢包,ECN 提供信号,DCQCN 做反应。光有 PFC 会引发”PFC storm”,光有 ECN 反应太慢——组合才是无损以太网的本质。
DCQCN 拥塞控制详解
DCQCN(Data Center Quantized Congestion Notification)是 Microsoft 与 Mellanox 联合设计、现已成为 RoCE 事实标准的拥塞控制算法。
graph LR
TX[发送端 NIC] -->|数据流| SW[交换机]
SW -->|ECN 标记 CE bit| RX[接收端 NIC]
RX -->|CNP 包 反向路径| TX
TX -->|降速 α 算法| TX2[降速后继续发送]
工作流程:
1 | |
调优关键参数:
1 | |
DCQCN vs TCP CUBIC/BBR:
1 | |
这就是为何 RDMA 能做到 2-5 μs 端到端延迟——连拥塞响应都是硬件完成的。
PFC 风暴的根源与防治
PFC 是把双刃剑:配得好是护身符,配错了是整网熔断器。
graph TB
A[Node A 拥塞] -->|发 PAUSE 帧| B[上游交换机]
B -->|传播 PAUSE| C[更上游交换机]
C -->|蔓延| D[整网停摆]
防治:
1 | |
AI 推理场景:prefill/decode 解耦的流量不对称
训练集群的流量模式是”对称的全员合唱”——AllReduce/AllGather,人人都有份,带宽均匀。推理集群不同,尤其是近年流行的 prefill/decode disaggregation(预填充与解码分离)架构,流量模式要复杂得多。咱今日细说。
推理的两阶段
graph LR
P[Prefill 节点群<br/>计算密集型<br/>处理 prompt] -->|KV Cache 迁移<br/>P2P 单向大流| D[Decode 节点群<br/>内存带宽密集型<br/>自回归生成]
D -->|token 输出| OUT[用户]
| 维度 | Prefill 阶段 | Decode 阶段 |
|---|---|---|
| 计算特征 | 计算密集,矩阵乘法 | 内存带宽密集,逐 token 生成 |
| 流量模式 | 类 All-to-All(batch 内) | P2P 单向传输(KV Cache 迁移) |
| 流量特征 | 较均匀,批次式 | 突发性强,不对称 |
| 延迟要求 | 吞吐优先 | 低延迟优先(TTFT/TPOT) |
| 通信对象 | Prefill 节点互相通信 | Prefill → Decode 单向 |
KV Cache 迁移为何是难题
1 | |
与训练流量的对比
1 | |
Jericho3-AI 在推理流量优化上的方向
Broadcom Jericho3-AI 是专为 AI 后端网络设计的深缓冲路由芯片。在推理流量场景下,其主要优化方向包括:
1 | |
注:Jericho3-AI 针对 prefill/decode disaggregation 的具体专项优化机制,博通在 2026-06 的技术访谈中未提供详细披露,上述为基于已知架构特性的推断。
实践建议
1 | |
选 IB 还是 RoCE?
| 场景 | 推荐 | 原因 |
|---|---|---|
| 万卡 AI 训练 | InfiniBand | 默认稳定 + SHARP |
| 千卡 AI 训练 | IB / RoCE 都行 | 两者差距不大 |
| 中小集群 | RoCE | 便宜 + 以太网兼容 |
| 云存储后端 | RoCE | 与现有以太网融合 |
| HPC 计算 | InfiniBand | 默认 |
| 跨厂家集群 | RoCE | IB 厂家锁定 |
一些实战经验
1 | |
小结
- RDMA 三大特性:kernel bypass、zero copy、direct memory access
- IB / RoCE / iWARP 三种实现,AI 集群只用前两个
- verbs API 暴露 QP / MR / CQ / WR 等概念
- GPUDirect RDMA 让 GPU 跨节点直接通信
- IB 自带子网管理 + credit 流控,RoCE 要靠 PFC/ECN
- DCQCN 是 RoCE 无损以太网的核心算法:ECN 标记 → CNP → 速率调节,全硬件实现
- prefill/decode disaggregation 带来流量不对称,Jericho3-AI 的深缓冲 + adaptive routing 是应对之道
- NCCL / MPI / UCX 是上层最常用的 RDMA 应用接口
- 调优要从 NUMA、大页、中断绑定全面着手
下一篇讲数据中心拓扑——Spine-Leaf、Fat-Tree、Dragonfly。
内容深度由贤狼赫萝于 2026-06-15 增补,引用来源:OCP 2025/2026 幻灯片、Broadcom 技术访谈。