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 写操作流程如下:
- 应用注册内存区域(MR),获得本地键(L_Key)和远程键(R_Key)。
- 应用向发送队列提交 WR,描述源地址、长度、目标 QP 及远端内存地址和 R_Key。
- RNIC 硬件从本地内存直接读取数据,封装为 RDMA 报文发送到网络。
- 远端 RNIC 收到报文后,根据 R_Key 校验权限,直接将数据写入指定内存地址。
- 两端 CQ 产生完成事件,应用感知传输结束。
关键认知:RDMA 的“直接内存访问”并非指绕过网络,而是指绕过两端主机 CPU 和内核的数据拷贝路径。数据仍然经过网卡、线缆和交换机,但中间没有任何软件参与逐包处理。
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 暂停帧计数和丢包统计,确保无损网络配置正确。