一、RoCE技术概述

1.1 RDMA技术背景

RDMA,全称是远程直接内存访问。说白了,就是让一台机器的网卡,能直接读写另一台机器的内存。不需要经过CPU、不需要经过操作系统协议栈。

我刚开始接触这个技术时,也觉得有点反直觉。传统网络通信,数据要从应用层一路往下走,经过TCP/IP协议栈,到内核空间,再到网卡。接收端呢?再反向走一遍。这中间CPU参与了很多次数据拷贝和上下文切换。你想想看,对于高性能计算或者存储场景,这种开销简直不能忍。

RDMA的核心思路就一句话:绕过内核,直接访问远端内存。网卡硬件自己完成数据的封装、传输、校验。CPU只需要告诉网卡「把这段数据发过去」,然后就干别的去了。等网卡干完活,再通知CPU一声。

我在项目中遇到过这样的场景:一个分布式存储集群,用传统TCP做数据复制,CPU占用率常年70%以上。换成RDMA后,CPU占用直接降到15%。数据吞吐量反而翻了一倍。嗯,这就是RDMA的价值所在。

RDMA三大核心技术:

  • 内核旁路:应用层直接与网卡交互,不经过操作系统协议栈
  • 零拷贝:数据直接从应用缓冲区到网卡,无需中间拷贝
  • CPU卸载:数据传输由网卡硬件完成,CPU几乎不参与

1.2 RoCE v1/v2协议演进

RDMA最早是InfiniBand的专属技术。但InfiniBand需要专用网卡和交换机,成本高、生态封闭。后来大家想:能不能在以太网上跑RDMA?于是就有了RoCE。

RoCE v1是初代版本。它把RDMA数据包直接封装在以太网帧里。好处是简单,坏处是只能在同一个二层网络里用。跨网段?不行。我记得有次帮客户做方案,他们机房分了好几个网段,RoCE v1根本没法用,只能上InfiniBand或者等v2。

RoCE v2解决了这个问题。它把RDMA封装在UDP/IP里。说白了,就是给RDMA数据包加了个IP头。这样一来,三层路由就通了。RoCE v2的报文结构大概是这样的:

以太网头 | IP头 | UDP头 | BTH(基础传输头) | 数据载荷

这里有个关键点:UDP的目的端口号是4791。这是IANA给RoCE v2分配的专用端口。我在做抓包分析时,经常用这个端口号来过滤RoCE流量。

特性 RoCE v1 RoCE v2
封装层 以太网层 UDP/IP层
路由能力 仅二层 三层可路由
标准 IBTA规范 IBTA规范
端口号 UDP 4791

避坑指南:RoCE v2虽然支持三层路由,但实际部署时,我建议尽量保持二层网络。跨三层路由会引入额外的延迟和丢包风险。我曾经在一个跨数据中心场景里硬上RoCE v2,结果性能惨不忍睹。后来老老实实拉专线做二层互联,问题才解决。

1.3 RoCE与InfiniBand对比

这个问题我经常被问到。说白了,就是「选专用还是选通用」的问题。

InfiniBand是RDMA的原生平台。从硬件到协议,全部为RDMA优化。性能天花板高,延迟极低。但代价是贵,而且需要专门的运维技能。我见过不少超算中心,清一色InfiniBand,确实稳。

RoCE走的是以太网路线。你现有的交换机、网线、运维经验,基本都能复用。成本低很多。但RoCE对网络质量要求极高——它需要无损网络的支持。为什么?因为RoCE v2跑在UDP上,UDP本身不保证可靠传输。一旦丢包,性能断崖式下跌。

我个人习惯这样选型:

  • 预算充足、追求极致性能:选InfiniBand。比如顶级AI训练集群、HPC超算中心
  • 成本敏感、已有以太网基础设施:选RoCE。比如企业级分布式存储、中等规模AI推理
  • 混合场景:核心计算用InfiniBand,存储和业务用RoCE。我做过一个方案就是这么干的
对比维度 InfiniBand RoCE
延迟 极低(1us以内) 低(2-5us)
吞吐量 极高(400Gbps+) 高(100Gbps/200Gbps)
成本 中低
生态 封闭 开放
运维 需要专业团队 可复用以太网经验
无损网络 原生支持 需要额外配置

注意:不要以为RoCE是InfiniBand的廉价替代品。两者定位不同。RoCE在以太网生态里能发挥很大价值,但前提是你得把网络调好。我见过太多人买了RoCE网卡,结果网络丢包率0.1%,性能连TCP都不如。嗯,这就是为什么我们要讲无损网络。

1.4 RoCE应用场景

RoCE现在用得最多的是三个方向:AI训练、分布式存储、高性能计算。

AI训练是当前最火的场景。大模型训练需要频繁的梯度同步,数据量巨大。用RoCE做AllReduce通信,比TCP快好几倍。我参与过一个千卡集群的项目,网络全部用RoCE v2,梯度同步时间从原来的5秒降到了0.8秒。训练效率提升非常明显。

分布式存储是另一个典型场景。像Ceph、GPFS这类存储系统,后端数据复制和IO路径很长。用RoCE可以大幅降低延迟。我记得有个客户,他们的Ceph集群用RoCE后,IOPS提升了3倍,延迟从2ms降到了200us。

高性能计算就不用多说了。分子模拟、气象预报、金融风控,这些场景对延迟极度敏感。RoCE虽然不是InfiniBand,但配合无损网络,也能达到非常接近的效果。

一句话总结:RoCE适合那些「需要RDMA性能,但又不想被InfiniBand绑定」的场景。它是在成本和性能之间,一个非常务实的折中方案。

RoCE技术知识体系 RoCE技术 RDMA技术背景 内核旁路 · 零拷贝 CPU卸载 · 直接内存访问 协议演进 RoCE v1 → RoCE v2 以太网帧 → UDP/IP封装 vs InfiniBand 成本 · 性能 · 生态 开放 vs 专用 应用场景 AI训练 · 分布式存储 高性能计算 核心:以太网上的RDMA解决方案

专注资料整理