InfiniBand 高性能互联
InfiniBand(IB)是专为 HPC 和 AI 训练集群设计的高速互联标准,由 IBTA(InfiniBand Trade Association)定义,目前由 NVIDIA/Mellanox 主导实现。其核心特性是原生 RDMA 支持、极低延迟和硬件天然无损传输,是大规模 GPU 集群节点间互联的首选技术。
代际规格演进
InfiniBand 每 3-4 年推出新一代,带宽大致翻倍。每端口速率以 Gbps(信令速率)标注,实际可用带宽约为信令速率的 80%(8b/10b 或 64b/66b 编码开销)。
| 代际 | 发布年份 | 每端口线速 | 有效带宽(单向) | 代表 HCA/交换机 | 典型部署 |
|---|---|---|---|---|---|
| SDR | 2003 | 10 Gbps | ~1 GB/s | ConnectX | 早期 HPC |
| DDR | 2005 | 20 Gbps | ~2 GB/s | ConnectX | 早期 HPC |
| QDR | 2008 | 40 Gbps | ~4 GB/s | ConnectX-2 | HPC 集群 |
| FDR | 2012 | 56 Gbps | ~6 GB/s | ConnectX-3 | HPC/深度学习早期 |
| EDR | 2015 | 100 Gbps | ~12.5 GB/s | ConnectX-4 | DGX-1(V100 时代) |
| HDR | 2019 | 200 Gbps | ~25 GB/s | ConnectX-6 | DGX A100 |
| NDR | 2022 | 400 Gbps | ~50 GB/s | ConnectX-7 | DGX H100/H200 |
| XDR | 2025 | 800 Gbps | ~100 GB/s | ConnectX-8 | DGX B200 |
| GDR | ~2027 | 1600 Gbps | ~200 GB/s | 下一代 | 规划中 |
说明:
- HDR 及之前采用 NRZ 信令,NDR 开始采用 PAM4,单通道速率从 50 Gbps 提升至 100 Gbps。
- 多端口聚合:高端交换机(如 Quantum-2)提供 64 个 NDR 端口,支持 fat-tree 全双工无阻塞网络。
- XDR 实际上是 NDR 的升级版,采用同一 ConnectX 系列,每端口 2×400 Gbps 通道(2×SerDes bundle)实现 800 Gbps。
核心架构
子网结构与地址分配
InfiniBand 将网络划分为子网(Subnet),每个子网由一个 Subnet Manager(SM) 统一管理:
- SM 运行在某台主机或专用交换机上,负责发现拓扑、分配 LID(Local Identifier,16 位本地地址)、计算路由表并下发到所有交换机。
- 节点用 GUID(64 位全局唯一标识)标识,LID 只在子网内有效。
- 跨子网通信需要通过 Router,使用 GID(128 位,基于 IPv6)寻址。
SM 的核心工作流程:
启动 -> 拓扑发现(SMP 协议,子网管理包)
-> LID 分配(每个端口分配唯一 LID)
-> 路由计算(通常为 fat-tree 线性转发表 LFT)
-> 下发路由(写入每个交换机的转发表)
-> 监控心跳(检测链路变化,触发重路由)
队列对(Queue Pair,QP)
所有 InfiniBand 通信都通过 QP 进行。每个 QP 由一个发送队列(SQ)和一个接收队列(RQ)组成:
| QP 类型 | 全称 | 特点 | 适用场景 |
|---|---|---|---|
| RC | Reliable Connection | 面向连接,保证有序可靠投递,支持 RDMA | MPI 点对点,NCCL P2P |
| UC | Unreliable Connection | 面向连接,不保证可靠,支持部分 RDMA | 较少使用 |
| UD | Unreliable Datagram | 无连接,1:N 通信,不支持 RDMA | 组播,管理流量 |
| XRC | Extended RC | RC 的扩展,多端共用一个 RQ,减少连接数 | 大规模集群(10万+ 节点) |
QP 状态机(典型生命周期):
Reset -> Init -> RTR (Ready to Receive) -> RTS (Ready to Send) -> SQE/Error -> Reset
工作请求(Work Request,WR)投入 SQ/RQ,完成后生成 完成队列元素(CQE) 写入 CQ。
完成队列(Completion Queue,CQ)
应用程序通过轮询(ibv_poll_cq)或事件通知(ibv_req_notify_cq + 等待事件文件描述符)获取 CQE:
- 轮询模式:延迟最低,CPU 自旋等待,适合延迟敏感路径(NCCL 默认)。
- 事件驱动模式:CPU 友好,适合低频通信或后台任务。
内存注册(Memory Registration)
RDMA 操作要求目标内存预先注册(pinned),以防止操作系统换页:
ibv_reg_mr(pd, buf, size, IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_READ | ...)
-> 返回 mr,包含 lkey(本地访问 key)和 rkey(远端访问 key)
lkey:本地 DMA 操作使用,验证本端 HCA 对该内存的访问权。rkey:传给远端,远端通过 RDMA Read/Write 直接访问该内存区域时需要携带。- 注册操作本身有开销(OS 页表 pin + HCA 转换表更新),建议提前注册、复用内存池。
RDMA 传输模型
双边操作(Two-Sided)
发送端和接收端都需要主动参与,各自投入工作请求:
- Send:发送端将消息推到接收端,接收端必须提前投入 Receive WR(准备接收缓冲区)。
- Receive:接收端消费 Send 投递的数据,写入预先指定的缓冲区。
- 两边都产生 CQE,两边都消耗 CPU 周期(投 WR 和收 CQE)。
适用场景:消息大小不确定、需要接收端参与流控的场景(如 MPI eager 消息)。
单边操作(One-Sided,Zero-Copy)
发起端直接读写远端内存,远端 CPU 无需参与:
| 操作 | 语义 | 谁产生 CQE |
|---|---|---|
| RDMA Write | 发起端将数据写入远端指定地址 | 仅发起端(可选 Immediate 触发远端 CQE) |
| RDMA Read | 发起端从远端指定地址拉取数据 | 仅发起端 |
| RDMA Write with Immediate | Write + 携带 32 位立即数,触发远端 Receive CQE | 发起端 + 远端 |
零拷贝路径:数据直接在 HCA 和目标内存之间 DMA,不经过 CPU 或 OS 内核。延迟极低,是 NCCL P2P 通信的底层机制。
Atomic 操作
在远端内存上执行原子读-改-写,适合分布式同步:
- Compare-and-Swap(CAS):若远端值等于期望值,则替换为新值,返回旧值。
- Fetch-and-Add(FAA):将远端值加上指定增量,返回旧值。
Atomic 操作以 64 位对齐的地址为粒度,硬件保证原子性(无需软件锁)。
延迟构成
端到端消息延迟可分解为:
总延迟 = 注入延迟 + 网络传播延迟 + 序列化延迟 + 目的端处理延迟
注入延迟(Injection Latency):
- 软件开销:应用调用 ibv_post_send 到 HCA 接收 WR(~100-300 ns)
- HCA 处理:WR 解析、内存访问、组包(~50-100 ns)
网络传播延迟(Propagation Latency):
- 链路延迟:光速传播,100m 光纤 ~500 ns
- 交换机转发:每跳 ~100-200 ns(NDR Quantum-2 交换机)
序列化延迟(Serialization Latency):
- 消息大小 / 链路带宽
- NDR 400 Gbps:1 KB 数据 ~20 ns,1 MB 数据 ~20 us
目的端处理延迟:
- HCA 收包、DMA 写内存、CQE 生成
- 应用轮询 CQ 到感知完成(~100-200 ns)
NDR MPI 软件层 ping-pong 延迟约 600 ns(含双端软件开销),硬件链路延迟约 100-200 ns。
拥塞控制
InfiniBand 采用基于信用的流控(Credit-Based Flow Control)作为基础,辅以拥塞控制机制应对热点流量。
基于信用的流控
- 每条 IB 链路维护信用计数器,接收端为每个虚通道(Virtual Lane,VL)分配信用。
- 发送端在有足够信用时才发送数据包,避免接收端缓冲区溢出。
- 信用基于链路层(L1),在相邻节点间逐跳运作,天然防止丢包。
这是 InfiniBand 与 RoCE 最根本的区别:IB 硬件天然无损,不依赖 PFC 等软件机制。
ECN(Explicit Congestion Notification)
当网络内部出现拥塞(交换机缓冲区超过门限),InfiniBand 使用 ECN 通知通信双方:
- FECN(Forward ECN):拥塞点交换机在数据包头设置 FECN 位,通知接收端"上游链路拥塞"。
- BECN(Backward ECN):接收端向发送端回送 BECN 标记,通知"降速"。
发送端收到 BECN 后执行速率限制,通常为乘性减(multiply decrease),随后按线性增(additive increase)恢复。
虚通道隔离(Virtual Lane,VL)
InfiniBand 支持最多 15 条数据 VL + 1 条管理 VL(VL15):
- 不同流量类型(数据、管理、信号量)映射到不同 VL,避免头阻塞(Head-of-Line Blocking)。
- 每个 VL 独立维护信用,优先级可配置(QoS 策略)。
- SM 在路由计算时可以将不同流分配到不同 VL,实现流量隔离。
SHARP(Scalable Hierarchical Aggregation and Reduction Protocol)
InfiniBand 独有的网内计算(In-Network Computing)能力:
- AllReduce 等集合通信在交换机上完成部分归约,不需要数据集中到某个节点再分发。
- 大规模 AllReduce 延迟从 O(N) 降至 O(log N)。
- NDR 及更高代的 Quantum 交换机原生支持 SHARP,NCCL 可自动启用(
NCCL_ALGO=NVLS的 IB 版本)。
在 AI 集群中的典型部署
Fat-Tree 拓扑
AI 集群中最常见的 IB 网络拓扑为全双工 fat-tree(Clos 网络),具有以下特性:
- 全双工无阻塞:核心层-汇聚层-接入层各层带宽对等,任意两节点间带宽不低于单链路速率。
- 低直径:3 层 fat-tree 中,任意节点间最多 5 跳(叶节点 -> 接入交换机 -> 核心交换机 -> 接入交换机 -> 叶节点),延迟可预测。
- 路由算法:ECMP(等价多路径)散列流量;OFED 支持自适应路由(AR)动态选择低负载路径。
典型规模配置(以 NDR 为例):
| 规模 | 接入层交换机 | 核心层交换机 | GPU 节点数 | 每节点 GPU 数 | 总 GPU 数 |
|---|---|---|---|---|---|
| 小集群 | 8×40端口 | 4×80端口 | 320 | 8 | 2560 |
| 中集群 | 16×64端口 | 32×64端口 | 1024 | 8 | 8192 |
| 大集群 | 32×64端口 | 128×64端口 | 4096 | 8 | 32768 |
与 NVLink 的分工
AI 训练集群中,InfiniBand 和 NVLink 承担不同层级的通信任务:
节点内(同一 DGX/服务器,8 GPU):
NVLink 4.0/5.0 — 带宽 900/1800 GB/s 每 GPU
角色:Tensor Parallelism AllReduce(延迟敏感)
节点间(跨服务器,同 rack 或跨 rack):
InfiniBand NDR/XDR — 带宽 50/100 GB/s 每端口
角色:Pipeline Parallelism P2P、Data Parallelism AllReduce、Expert Parallelism AllToAll
关键原则:TP AllReduce 的通信量最大且延迟最敏感,必须在 NVLink 层完成;PP 的 P2P 激活传输量较小,可以跨节点走 IB。
HDR 和 NDR 典型配置
DGX A100(HDR,200 Gbps):
- 每节点 8×HDR 端口,通过 IB 直接连接接入交换机
- 常见接入交换机:Quantum(HDR,40 端口)
- 典型集群:512 节点 → 4096 GPU
DGX H100(NDR,400 Gbps):
- 每节点 8×NDR 端口(ConnectX-7)
- 接入交换机:Quantum-2(NDR,64 端口,SHARP v3 支持)
- 典型集群:1024 节点 → 8192 GPU
性能特性
延迟参考数据
| 测试场景 | 数据量 | 延迟 | 备注 |
|---|---|---|---|
| 硬件链路延迟(单跳) | - | ~100-200 ns | 交换机转发延迟 |
| RDMA Write(单边,软件到软件) | 4 B | ~700 ns | NDR,MPI 实测 |
| MPI ping-pong(RC Send/Recv) | 8 B | ~600 ns | NDR,ib_send_lat |
| MPI ping-pong(RC Send/Recv) | 1 KB | ~650 ns | NDR |
| MPI ping-pong(RC Send/Recv) | 1 MB | ~21 us | NDR,带宽受限 |
带宽参考数据
| 测试场景 | 数据量 | 带宽 | 备注 |
|---|---|---|---|
| RDMA Write(单向峰值) | 1 MB+ | ~48 GB/s | NDR,ib_write_bw |
| MPI Allreduce(Ring,8 节点) | 1 GB | ~42 GB/s(算法带宽) | NDR,NCCL nccl-tests |
| MPI Alltoall(8 节点) | 256 MB/rank | ~35 GB/s | NDR,NCCL |
线速利用率
NDR 理论单向带宽 = 400 Gbps × (1 - 64b/66b 编码开销) / 8 ≈ 48 GB/s。
RDMA Write 大消息利用率可达 ~95%,与 NVLink 相比,IB 的协议开销更大(更多头部字段),但大消息下影响可忽略。
NCCL 与 IB 集成
NCCL(NVIDIA Collective Communications Library)对 IB 的利用路径:
- 使用 RC QP + RDMA Write(NCCL P2P 通信)
- AllReduce 默认走 Ring 算法,启用 SHARP 后可走 Tree 算法(延迟更低)
- 推荐环境变量:
NCCL_IB_HCA=mlx5_0,mlx5_1,...(指定使用的 HCA)
与 RoCE 的对比
| 维度 | InfiniBand NDR | RoCEv2(200GbE) |
|---|---|---|
| 延迟(小消息) | ~600 ns | ~1-2 us |
| 峰值带宽(单端口) | ~50 GB/s(400 Gbps) | ~25 GB/s(200 Gbps) |
| 无损保证 | 硬件天然无损(信用流控) | 依赖 PFC + ECN 配置 |
| 网内计算 | SHARP(AllReduce 卸载) | 无原生支持 |
| 硬件成本 | 高(专用 HCA + 交换机) | 低(复用以太网交换机) |
| 大规模稳定性 | 成熟,SM 统一管理 | PFC 死锁风险,配置复杂 |
| 生态 | NCCL、MPI、OpenUCX 深度支持 | NCCL 支持,部分功能受限 |
| 典型用户 | NVIDIA DGX 集群,国家超算 | Meta、阿里云、规模 <1000 GPU |
详见 RoCE 专题文档。