1、RoCE技术概览
大家好,我是老张。在数据中心摸爬滚打了十几年,从万兆到25G再到现在的100G/200G,网络技术换了一茬又一茬。但要说近几年最让我兴奋的技术,RoCE绝对排前三。今天咱们就来聊聊这个让存储、AI、HPC圈子都为之疯狂的技术。
1.1 什么是RoCE
RoCE,全称RDMA over Converged Ethernet。说白了,就是在以太网上跑RDMA。
RDMA是什么?远程直接内存访问。传统网络通信,数据要从应用层一路拷贝到内核、网卡,再发出去。接收端反过来再来一遍。这中间CPU参与了很多次数据拷贝,延迟高、开销大。
RDMA的思路很暴力——让网卡直接读写远端内存。数据从应用内存到网卡,中间不经过CPU。延迟从毫秒级降到微秒级,CPU占用率从百分之几十降到几乎为零。
我2016年第一次在项目中部署RoCE时,客户问我:「这玩意儿靠谱吗?」我说:「你试试就知道了。」结果测试下来,存储集群的IOPS翻了三倍,CPU占用率从60%降到了5%。从那以后,我再也没用过传统的TCP/IP方案。
核心要点:RoCE = RDMA + 以太网。它让以太网具备了InfiniBand级别的低延迟和高吞吐能力,同时保留了以太网的生态和成本优势。
1.2 RoCE v1 vs v2
RoCE有两个版本,我分别说说它们的区别。
| 特性 | RoCE v1 | RoCE v2 |
|---|---|---|
| 网络层 | 基于以太网(L2) | 基于UDP/IP(L3) |
| 路由能力 | 仅限同一广播域 | 支持三层路由 |
| 部署范围 | 单个交换机域 | 跨网段、跨数据中心 |
| 头部开销 | 较小 | 较大(多了IP+UDP头) |
| 实际应用 | 基本被淘汰 | 主流选择 |
RoCE v1:它直接在以太网帧里封装RDMA数据。没有IP头,所以只能在同一个二层网络里跑。你想想看,一个数据中心少说几十台交换机,v1只能在一个广播域里用,这限制太大了。我在2017年帮客户做POC时,就因为v1不能跨网段,不得不重新规划网络拓扑,折腾了好几天。
RoCE v2:把RDMA数据封装在UDP包里。有了IP头,就能跨网段路由了。现在几乎所有RoCE部署都是v2。嗯,这里要注意,虽然v2支持路由,但实际部署时最好还是保持网络拓扑尽量扁平,减少跳数。为什么?因为每多一跳,延迟就多一点点,PFC(优先级流控)的配置也复杂一分。
我的建议:新项目直接上RoCE v2。别在v1上浪费时间了,它已经是过去式。
1.3 RoCE vs iWARP
说到RDMA over Ethernet,其实还有另一个选择——iWARP。它俩经常被拿来比较。
| 对比项 | RoCE v2 | iWARP |
|---|---|---|
| 传输层 | UDP | TCP |
| 丢包处理 | 依赖无损网络(PFC) | TCP重传机制 |
| 延迟 | 极低(1-3μs) | 较低(5-10μs) |
| CPU卸载 | 完全卸载 | 部分卸载 |
| 网络要求 | 需要无损以太网 | 标准以太网即可 |
| 生态支持 | 广泛(Mellanox/Chelsio/Broadcom) | 较少(Intel为主) |
我个人习惯用RoCE。为什么?三个原因:
- 延迟更低:RoCE走UDP,没有TCP那套三次握手、拥塞控制的开销。在AI训练场景下,每微秒的延迟都影响整体训练效率。
- 生态更成熟:NVIDIA(Mellanox)的网卡几乎都支持RoCE,交换机厂商也对RoCE做了大量优化。iWARP主要靠Intel推,市场份额小很多。
- 性能更稳定:iWARP的TCP卸载在重负载下有时会出问题。我曾经在一个存储项目中测试iWARP,压力上来后CPU占用率突然飙升,排查了半天发现是TCP卸载引擎的bug。
但iWARP也有它的优势——不需要无损网络。如果你的网络基础设施比较老旧,或者不想折腾PFC配置,iWARP可以即插即用。说白了,iWARP是「省心但性能差一点」,RoCE是「性能好但需要调优」。
避坑指南:我曾经见过一个团队,在标准以太网上直接跑RoCE,结果丢包率一高,性能直接崩了。RoCE对丢包极其敏感,必须配合无损网络使用。如果你没有信心搞定PFC和ECN,可以考虑先用iWARP过渡。
1.4 RoCE的应用场景
RoCE现在主要用在三个领域,我分别说说。
存储场景
分布式存储是RoCE最早大规模落地的场景。NVMe over Fabrics(NVMe-oF)搭配RoCE,延迟可以做到10μs以内。我参与过一个金融核心存储项目,用RoCE替换了原来的FC SAN,成本降了60%,性能反而提升了30%。
存储场景下,RoCE主要解决两个问题:
- 降低存储访问延迟:传统iSCSI走TCP/IP,延迟在100μs级别。RoCE直接降到10μs以下。
- 释放CPU资源:存储节点的CPU不用处理网络协议栈,可以专心做数据读写。
AI训练场景
这是RoCE目前最火的应用。大模型训练动辄上千张GPU卡,卡间通信效率直接影响训练速度。NVIDIA的DGX系列和HGX系列都标配RoCE网络。
AI训练对网络的要求很明确:
- 高带宽:200G/400G起步,未来可能到800G
- 低延迟:AllReduce等集合通信操作,延迟每增加1ms,训练时间可能延长数小时
- 零丢包:丢包会导致通信超时,整个训练任务可能卡住
我记得去年帮一个互联网公司搭建千卡集群,他们一开始用传统TCP网络做分布式训练,结果通信开销占了总训练时间的40%。换成RoCE后,通信开销降到了10%以内,训练速度提升了将近3倍。
HPC场景
高性能计算是RDMA的老本行。MPI(消息传递接口)应用天然适合RDMA。RoCE在HPC领域的优势是成本——InfiniBand虽然性能更好,但价格贵得多。很多高校和科研机构预算有限,RoCE成了性价比之选。
HPC场景下,RoCE需要注意的点:
- MPI库的适配:OpenMPI、MVAPICH等主流MPI库都支持RoCE,但需要正确配置
- 网络拓扑:HPC应用对网络拓扑敏感,Fat-Tree或Dragonfly拓扑更合适
- 拥塞控制:HPC的通信模式是突发性的,容易造成网络拥塞,需要配合DCQCN等算法
一句话总结:RoCE不是万能的,但在存储、AI、HPC这三个场景下,它是最优解之一。选型时记住三点——要性能选RoCE,要省心选iWARP,要极致选InfiniBand。
好了,RoCE技术概览就聊到这里。从版本选择到协议对比,再到实际应用场景,相信你已经对RoCE有了整体认识。下一章我们深入聊聊RoCE网卡的硬件架构和选型要点。
公众号:蓝海资料掘金营,微信deep3321