2. RDMA基础:概念、与传统网络的区别及主要技术

2.1 核心原理:RDMA 的本质是“绕过内核”

RDMA(Remote Direct Memory Access,远程直接内存访问)是一种允许网卡(RNIC,RDMA Network Interface Card)直接读写远端主机内存的技术,而无需两端操作系统的内核参与数据搬运。传统网络路径中,数据从网卡到达内核协议栈,经过 Socket 层、TCP/IP 处理,再拷贝到用户态缓冲区,期间经历多次 CPU 拷贝和上下文切换。RDMA 则通过内核旁路(Kernel Bypass)机制,让用户态应用直接与网卡交换描述符,网卡硬件负责将数据从本地内存直接传输到远端内存。

RDMA 的核心组件包括:

  • RNIC:支持 RDMA 的网卡,负责执行传输层的全部协议处理。
  • QP(Queue Pair,队列对):由发送队列(SQ)和接收队列(RQ)组成,应用通过提交 Work Request(WR)到 QP 来发起传输。
  • CQ(Completion Queue,完成队列):用于异步通知应用传输完成状态。
  • MR(Memory Region,内存区域):注册后的内存区域,网卡可直接访问,需记录虚拟地址、长度、访问权限及对应的 L_Key/R_Key。

一次典型的 RDMA 写操作流程如下:

  1. 应用注册内存区域(MR),获得本地键(L_Key)和远程键(R_Key)。
  2. 应用向发送队列提交 WR,描述源地址、长度、目标 QP 及远端内存地址和 R_Key。
  3. RNIC 硬件从本地内存直接读取数据,封装为 RDMA 报文发送到网络。
  4. 远端 RNIC 收到报文后,根据 R_Key 校验权限,直接将数据写入指定内存地址。
  5. 两端 CQ 产生完成事件,应用感知传输结束。

关键认知:RDMA 的“直接内存访问”并非指绕过网络,而是指绕过两端主机 CPU 和内核的数据拷贝路径。数据仍然经过网卡、线缆和交换机,但中间没有任何软件参与逐包处理。

主机 A(发起端) 用户态应用 内存区域 MR-A 地址: 0x7f3a... 长度: 4KB L_Key: 0x5A2C 内核协议栈 TCP/IP / Socket (不参与数据路径) RNIC-A QP: 0x1A (SQ/RQ) CQ: 0x03 R_Key: 0x8F21 主机 B(目标端) 用户态应用 内存区域 MR-B 地址: 0x9c20... 长度: 4KB L_Key: 0x3D7E 内核协议栈 (不参与数据路径) RNIC-B QP: 0x2B (SQ/RQ) CQ: 0x07 R_Key: 0x4C19 RDMA 数据报文 (绕过内核,硬件直接读写) WR 提交 CQ 完成 WR 提交 CQ 完成 RDMA 网络(无损/有损) 图:RDMA 写操作数据路径与控制路径分离示意

2.2 与传统网络(TCP/IP)的本质区别

传统以太网与 RDMA 的差异不仅体现在性能数字上,更体现在架构哲学上。下表从多个维度进行对比:

对比维度 传统 TCP/IP + Socket RDMA
数据路径 网卡 → 内核 → Socket 缓冲区 → 用户缓冲区(多次拷贝) 网卡硬件 ↔ 用户注册内存(零拷贝)
CPU 参与度 每个包均触发中断,CPU 处理协议栈 网卡硬件处理传输层,CPU 仅提交请求和处理完成事件
通信语义 基于字节流的 send/recv 基于消息的 Send/Recv、RDMA Read/Write、原子操作
内存访问方式 内核负责将数据拷贝到应用指定缓冲区 远端 CPU 不感知,网卡直接读写应用注册的内存
时延(同机房) 10~50 微秒 0.5~2 微秒
吞吐量 受限于内核处理能力,高 CPU 占用 可线性扩展至 100Gbps/200Gbps 以上
可靠性机制 TCP 滑动窗口、重传、拥塞控制 由 InfiniBand 或 RoCEv2 的传输层保证(可选可靠连接 RC)

传统网络适合通用互联网通信,其内核协议栈提供了完善的隔离、拥塞控制和错误处理。但在多 GPU 集群中,通信模式具有“高突发、大消息、强同步”的特点,TCP/IP 的逐包处理成为瓶颈。RDMA 将传输层卸载到网卡硬件,使得单条流即可打满物理带宽,且 CPU 占用率极低。

2.3 三大主要技术:InfiniBand、RoCE、iWARP

RDMA 并非单一标准,而是三种主要技术路线的统称。它们共享相同的上层接口(如 Verbs API),但底层传输网络和封装方式不同。

2.3.1 InfiniBand(IB)—— 原生 RDMA 网络

InfiniBand 从设计之初就为 RDMA 而生,定义了完整的网络分层:物理层、链路层、网络层、传输层。IB 网络使用专用的交换机、线缆和网卡(HCA,Host Channel Adapter),通过子网管理器(Subnet Manager)进行路径计算和配置。IB 提供无损网络保障,通过基于信用的流控机制避免丢包,因此能实现极低的时延和最高的带宽利用率。

  • 优势:端到端无损、时延最低(亚微秒级)、生态成熟(HPC 领域长期主导)。
  • 劣势:需要独立组网,成本高,与现有以太网不兼容。

2.3.2 RoCE(RDMA over Converged Ethernet)—— 以太网上的 RDMA

RoCE 允许在标准以太网上运行 RDMA 协议,分为两个版本:

  • RoCEv1:在以太网链路层(L2)直接封装 IB 报文,要求两端在同一二层网络内,无法跨 VLAN 路由。
  • RoCEv2:将 IB 报文封装在 UDP/IP(L3)中,支持三层路由,成为当前数据中心的主流选择。

RoCE 依赖以太网的无损特性(如 PFC 优先级流控、ECN 显式拥塞通知)来避免因丢包导致的性能断崖。在 GPU 集群中,RoCEv2 配合支持 PFC/ECN 的交换机,可以接近 InfiniBand 的性能,同时复用现有以太网运维体系。

2.3.3 iWARP(Internet Wide Area RDMA Protocol)—— 面向 TCP 的 RDMA

iWARP 将 RDMA 语义映射到 TCP 协议之上,利用 TCP 的可靠传输和拥塞控制。iWARP 无需特殊网络设备,只要网卡支持硬件卸载即可。但由于 TCP 协议栈本身较重,且需要处理乱序、重传等复杂状态,iWARP 的时延和吞吐通常不如 IB 和 RoCE。它更适合跨广域网或无法改造为无损网络的场景。

选型建议:多 GPU 集群内部通信优先选择 InfiniBand(追求极致性能)或 RoCEv2(兼顾成本与性能)。iWARP 在多数据中心互联或无法保证无损网络时作为备选方案。

2.4 案例场景:三种技术在同一集群中的表现

假设某公司搭建一个 8 节点 GPU 集群,每节点 8 张 A100 GPU,运行分布式深度学习训练(使用 NCCL 库)。分别测试三种 RDMA 技术下的 AllReduce 性能:

  • InfiniBand HDR(200Gbps):NCCL 实测带宽 185 GB/s(聚合),时延约 1.2 微秒,CPU 占用率低于 5%。
  • RoCEv2(100Gbps,启用 PFC+ECN):聚合带宽 92 GB/s,时延约 2.5 微秒,CPU 占用率约 8%。
  • iWARP(100Gbps,普通交换机):聚合带宽仅 60 GB/s,时延约 6 微秒,CPU 占用率约 15%。

该案例表明,在相同硬件预算下,RoCEv2 通过合理配置可以接近 IB 性能的 80%~90%,而 iWARP 因 TCP 处理开销明显落后。

2.5 常见误区与复盘

误区一:认为 RDMA 就是“网卡直连内存”

实际上 RDMA 仍然需要完整的网络传输,只是将协议处理从 CPU 卸载到网卡。若交换机不支持无损流控,RoCE 在拥塞时丢包,性能会急剧下降(可能跌至 TCP 水平)。

误区二:忽略内存注册(MR)的开销

内存注册涉及页锁定和地址映射,每次注册耗时约 10~100 微秒。高频小消息场景下,若反复注册/注销内存,会严重拖慢性能。正确做法是使用内存池,预先注册并复用 MR。

误区三:混淆 RoCEv1 与 RoCEv2 的组网范围

RoCEv1 只能在二层网络工作,无法跨子网。RoCEv2 虽然支持三层路由,但需要保证端到端无损(或启用 DCQCN 拥塞控制),否则性能不稳定。

复盘总结:在部署 RDMA 前,务必确认网卡、交换机、驱动和固件均支持所选技术;使用 ib_write_bw 或 perftest 工具进行基线测试;监控 PFC 暂停帧计数和丢包统计,确保无损网络配置正确。