跳到主要内容

InfiniBand

InfiniBand 协议栈的组成,以及与 GPUDirect 的集成方式

核心要点

  • IBTA 定义、NVIDIA/Mellanox 主导实现的 RDMA 高速互联标准
  • 22 年 9 代,从 10 Gbps 增至 1.6 Tbps (GDR 规划中)
  • 子网由 Subnet Manager 统一管理拓扑、LID 分配、路由
  • QP + CQ + Memory Registration 是 RDMA 编程的基本对象
  • 硬件天然无损 (信用流控),不依赖 PFC
  • SHARP 把 AllReduce 延迟从 O(N) 降到 O(log N)

代际如何演进?

每 3-4 年新一代,带宽大致翻倍。每端口速率以信令 Gbps 标注,实际可用带宽约 80%(8b/10b 或 64b/66b 编码开销),见 @tbl-hw-ib-gen

代际年份每端口线速有效带宽(单向)代表 HCA典型部署
SDR200310 Gbps~1 GB/sConnectX早期 HPC
DDR200520 Gbps~2 GB/sConnectX早期 HPC
QDR200840 Gbps~4 GB/sConnectX-2HPC 集群
FDR201256 Gbps~6 GB/sConnectX-3HPC / DL 早期
EDR2015100 Gbps~12.5 GB/sConnectX-4DGX-1 (V100)
HDR2019200 Gbps~25 GB/sConnectX-6DGX A100
NDR2022400 Gbps~50 GB/sConnectX-7DGX H100/H200
XDR2025800 Gbps~100 GB/sConnectX-8DGX B200
GDR~20271600 Gbps~200 GB/s下一代规划中

@tbl-hw-ib-gen InfiniBand 代际规格

关键节点

  • HDR 及之前用 NRZ 信令,NDR 开始用 PAM4,单通道 50 → 100 Gbps
  • 高端交换机 (Quantum-2) 提供 64 个 NDR 端口,支持 fat-tree 全双工无阻塞
  • XDR 实质是 NDR 升级版,每端口 2×400 Gbps 通道 (2×SerDes bundle) 实现 800 Gbps

子网怎么管理?

每个子网由一个 Subnet Manager (SM) 统一负责拓扑发现、地址分配、路由计算

  • SM 部署:运行在某台主机或专用交换机上
  • 地址体系:节点用 GUID(64 位全局唯一标识);LID(16 位本地地址)由 SM 分配,子网内有效;跨子网走 Router,用 GID(128 位,IPv6 基础)

SM 工作流程:

启动 → 拓扑发现 (SMP 协议,子网管理包)
→ LID 分配 (每端口唯一 LID)
→ 路由计算 (fat-tree 线性转发表 LFT)
→ 下发路由 (写入每交换机转发表)
→ 监控心跳 (检测链路变化,触发重路由)

QP / CQ / Memory Registration 怎么协作?

QP 是通信单元,CQ 是完成通知,MR 是 RDMA 可访问内存的句柄。三者构成 RDMA 编程的基础。

Queue Pair (QP) — 发送队列 (SQ) + 接收队列 (RQ),QP 类型见 @tbl-hw-ib-qp

QP 类型全称特点适用场景
RCReliable Connection面向连接,有序可靠投递,支持 RDMAMPI 点对点,NCCL P2P
UCUnreliable Connection面向连接,不保证可靠,支持部分 RDMA较少使用
UDUnreliable Datagram无连接,1:N,不支持 RDMA组播,管理流量
XRCExtended RCRC 扩展,多端共用 RQ,减少连接数大规模集群 (10万+ 节点)

@tbl-hw-ib-qp QP 类型

QP 状态机Reset → Init → RTR (Ready to Receive) → RTS (Ready to Send) → SQE/Error → Reset

WR (Work Request) 投入 SQ/RQ,完成后生成 CQE 写入 CQ。

Completion Queue (CQ) — 应用通过两种方式获取 CQE:

  • 轮询 (ibv_poll_cq):延迟最低,CPU 自旋;NCCL 默认
  • 事件驱动 (ibv_req_notify_cq + 等待 fd): CPU 友好,适合低频或后台任务

Memory Registration (MR) — RDMA 操作要求目标内存预先注册 (pinned),防止 OS 换页:

ibv_reg_mr(pd, buf, size, IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_READ | ...)
→ 返回 mr,含 lkey (本地访问 key) + rkey (远端访问 key)

注册本身有开销(OS 页表 pin + HCA 转换表更新),应提前注册并复用内存池。

RDMA 三种传输模型有什么区别?

双边、单边、Atomic 三类。差异在是否需要远端 CPU 参与。

双边 (Two-Sided) — Send/Receive

  • 发送端 Send + 接收端必须提前投 Receive WR
  • 两端都产生 CQE,两端都消耗 CPU 周期
  • 适合消息大小不确定 / 需接收端流控(如 MPI eager 消息)

单边 (One-Sided, Zero-Copy) — 远端 CPU 不参与,见 @tbl-hw-ib-onesided

操作语义谁产生 CQE
RDMA Write发起端将数据写入远端地址仅发起端 (可选 Immediate 触发远端 CQE)
RDMA Read发起端从远端地址拉取数据仅发起端
RDMA Write w/ ImmediateWrite + 32 位立即数,触发远端 Receive CQE发起端 + 远端

@tbl-hw-ib-onesided RDMA 单边操作

零拷贝路径:数据在 HCA 和目标内存之间直接 DMA,不经 CPU 或 OS 内核。延迟极低,是 NCCL P2P 通信的底层机制。

Atomic — 远端内存原子读改写,64 位对齐:

  • CAS (Compare-and-Swap):若远端值=期望值则替换,返回旧值
  • FAA (Fetch-and-Add):远端值+增量,返回旧值

一次端到端消息延迟由什么构成?

注入 + 网络传播 + 序列化 + 目的端处理四段。NDR MPI ping-pong 约 600 ns。

注入延迟 (Injection)
软件开销: ibv_post_send 到 HCA 接收 WR (~100-300 ns)
HCA 处理: WR 解析 + 内存访问 + 组包 (~50-100 ns)

网络传播 (Propagation)
光速传播: 100m 光纤 ~500 ns
交换机转发: 每跳 ~100-200 ns (NDR Quantum-2)

序列化 (Serialization)
= 消息大小 / 链路带宽
NDR 400 Gbps: 1 KB → ~20 ns, 1 MB → ~20 us

目的端处理
HCA 收包 + DMA 写内存 + CQE 生成
应用轮询 CQ 到感知完成 (~100-200 ns)

IB 怎么做拥塞控制?

信用流控做底盘,ECN 处理热点,VL 隔离避免头阻塞。这是 IB 硬件天然无损的关键。

基于信用的流控 (Credit-Based)

  • 每条 IB 链路维护信用计数器,接收端为每个 VL (Virtual Lane) 分配信用
  • 发送端有足够信用才发包,避免接收端缓冲区溢出
  • 信用在链路层 (L1)、相邻节点间逐跳运作 → 天然防止丢包

这是 IB 与 RoCE 最根本的区别:IB 硬件天然无损,不依赖 PFC 等软件机制。

ECN (Explicit Congestion Notification):

  • FECN (Forward ECN):拥塞点交换机在包头设置 FECN,通知接收端"上游链路拥塞"
  • BECN (Backward ECN):接收端向发送端回送 BECN,通知"降速"
  • 发送端收 BECN 后乘性减、随后线性增恢复

虚通道 (Virtual Lane, VL)

  • 最多 15 条数据 VL + 1 条管理 VL (VL15)
  • 不同流量映射到不同 VL,避免头阻塞 (HoL Blocking)
  • 每 VL 独立信用 + 可配置优先级 (QoS)

SHARP 是什么?为什么能把 AllReduce 降到 O(log N)?

SHARP (Scalable Hierarchical Aggregation and Reduction Protocol) 让交换机直接执行归约,免去数据集中节点的多跳传递。

  • 大规模 AllReduce 延迟从 O(N) 降至 O(log N)
  • NDR 及更高代的 Quantum 交换机原生支持
  • NCCL 可自动启用 (NCCL_ALGO=NVLS 的 IB 版本)

AI 集群典型部署长什么样?

Fat-tree 拓扑 + NVLink/IB 分层分工

Fat-Tree (Clos 网络)

  • 全双工无阻塞:核心-汇聚-接入各层带宽对等
  • 低直径:3 层中任意节点间最多 5 跳
  • 路由:ECMP 散列 + OFED 自适应路由 (AR)

NDR 典型规模见 @tbl-hw-ib-cluster

规模接入层核心层节点数GPU/节点总 GPU
小集群8×40 端口4×80 端口32082560
中集群16×64 端口32×64 端口102488192
大集群32×64 端口128×64 端口4096832768

@tbl-hw-ib-cluster Fat-Tree 集群规模配置 (NDR)

与 NVLink 的分工

节点内 (同一 DGX,8 GPU)
NVLink 4.0/5.0 — 900/1800 GB/s 每 GPU
角色: Tensor Parallelism AllReduce (延迟敏感)

节点间 (跨服务器)
IB NDR/XDR — 50/100 GB/s 每端口
角色: PP P2P / DP AllReduce / EP AllToAll

关键原则:TP AllReduce 通信量最大且延迟最敏感,必须在 NVLink 层完成;PP P2P 激活传输较小,可跨节点走 IB。

典型配置

  • DGX A100 (HDR 200 Gbps):每节点 8×HDR,接入交换机 Quantum (HDR, 40 端口),典型集群 512 节点 → 4096 GPU
  • DGX H100 (NDR 400 Gbps):每节点 8×NDR (ConnectX-7),接入交换机 Quantum-2 (NDR, 64 端口,SHARP v3),典型集群 1024 节点 → 8192 GPU

性能参考数据

核心问题:NDR InfiniBand 在延迟和带宽上的实测参考值是多少?小消息和大消息行为有什么区别?

延迟参考 (@tbl-hw-ib-latency):

测试场景数据量延迟备注
硬件链路延迟 (单跳)-~100-200 ns交换机转发
RDMA Write (单边)4 B~700 nsNDR, MPI 实测
MPI ping-pong (RC Send/Recv)8 B~600 nsNDR, ib_send_lat
MPI ping-pong (RC Send/Recv)1 KB~650 nsNDR
MPI ping-pong (RC Send/Recv)1 MB~21 usNDR,带宽受限

@tbl-hw-ib-latency NDR 延迟参考

带宽参考 (@tbl-hw-ib-bw):

测试场景数据量带宽备注
RDMA Write (单向峰值)1 MB+~48 GB/sNDR, ib_write_bw
MPI AllReduce (Ring, 8 节点)1 GB~42 GB/sNDR, nccl-tests
MPI AllToAll (8 节点)256 MB/rank~35 GB/sNDR, NCCL

@tbl-hw-ib-bw NDR 带宽参考

线速利用率:NDR 理论单向 = 400 Gbps × (1 - 64b/66b 开销) / 8 ≈ 48 GB/s。RDMA Write 大消息利用率可达 ~95%,IB 协议头比 NVLink 多,但大消息下可忽略。

NCCL 与 IB 集成

  • 使用 RC QP + RDMA Write (NCCL P2P)
  • AllReduce 默认 Ring,启用 SHARP 后走 Tree (延迟更低)
  • 推荐环境变量:NCCL_IB_HCA=mlx5_0,mlx5_1,...

与 RoCE 怎么对比?

IB 延迟低 2-3×,硬件天然无损,但成本高且生态封闭。详细对比见 @tbl-hw-ib-vs-roce,专题见 1.5 RoCE (RDMA over Converged Ethernet)

维度InfiniBand NDRRoCEv2 (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 规模

@tbl-hw-ib-vs-roce IB vs RoCE 对比

Takeaway

知识点核心结论
代际演进9 代 22 年,NDR 400 Gbps / XDR 800 Gbps,PAM4 起步
子网架构SM 集中管理拓扑 / LID / 路由;GUID 全局 + LID 本地
RDMA 三模型双边 Send/Recv;单边 Write/Read (零拷贝);Atomic
端到端延迟NDR ping-pong ~600 ns,由注入 + 传播 + 序列化 + 目的端构成
拥塞控制信用流控 + ECN + VL 隔离,硬件天然无损
SHARP交换机做归约,AllReduce 延迟 O(N) → O(log N)
与 NVLink 分工TP 走 NVLink;PP / DP / EP 走 IB