
RDMA(远程直接内存访问)作为一种编程模型,允许应用程序绕过内核直接读写远端内存,大幅降低CPU开销。当这种能力被移植到标准以太网环境中时,就诞生了RoCE(RDMA over Converged Ethernet,即融合以太网上的RDMA)。简单来说,RoCE保留了RDMA的语义和操作接口(如verbs API),只是将底层传输介质从专用的InfiniBand网络换成了以太网。
RoCE有两个主要版本:
虽然编程模型没有改变,但网络行为发生了根本变化。以太网默认不保证无损传输,因此RoCE必须依赖额外的拥塞控制和丢包避免机制,这使得性能的稳定性从应用程序转移到了网络基础设施的配置上。
当企业已经拥有成熟的以太网基础设施,且不愿更换为独立的InfiniBand网络时,RoCE就成为了最佳折衷方案。它允许在现有网络上增量引入RDMA能力,无需改变网络的管理模式或操作经验。
常见部署环境包括:
这些场景中,复用现有网络与追求性能同样重要。RoCE本质上是一种实用主义的权衡:在避免全面重写网络栈的前提下,突破应用程序的性能瓶颈。
要理解RoCE在实际中的表现,必须对比两个不同的世界:InfiniBand原生支持RDMA,而以太网需要做出调整。
传统以太网的高层协议(如TCP)可以容忍丢包,因为重传机制是内置的。但RDMA完全不同——它要求网络行为可预测、零丢包,因为任何重传都会破坏延迟保证并打乱细粒度的通信模式。RoCE因此必须在一开始就非无损的以太网之上“强行”附加一套丢包避免机制。
RDMA工作负载具有高度同步和突发性的特点。例如分布式训练中的集合通信操作,多个节点同时向同一接收端发送数据,造成“incast(多对一收敛)”流量。此时交换机缓冲区迅速耗尽,传统以太网就会发生丢包。
为了解决这些问题,业界引入了多种机制:
因此,RoCE的性能高度取决于以太网络的工程调优。一个精心调校的RoCE网络可以在延迟和吞吐量上接近InfiniBand,而调校不佳的网络则会在负载下变得不可预测。队列阈值、ECN标记点、PFC优先级、MTU以及网卡参数之间相互影响,生产环境部署通常需要经过反复的迭代调优。
理论上可以,但实践中需要精心设计。由于RoCE对丢包极为敏感,而普通IP流量(如TCP)可能产生突发性丢包,两者共存时需要通过DCB等机制严格隔离优先级队列。否则,一条普通的TCP流就可能引发PFC风暴,从而拖垮整个RoCE通信。
关注微信号:智享开源 ,及时了解更新信息。
原文链接:https://ubuntu.com//blog/what-is-rdma-over-converged-ethernet-roce
你必须 登录 才能发表评论.
| 微信捐赠 | 支付宝捐赠 |
|---|---|
![]() |
![]() |
扫码关注公众号:智享开源

[blog_mailer_subscribe]
还没有任何评论,你来说两句吧!