以太网技术目前在全球互联的因特网中始终占据主导地位,但在高带宽、低延时的专有网络中却透露出许多弊端。随着网络融合概念的兴起,在IETF发布了的DCB(Data Center Bridging)标准中,基于RDMA/Infiniband的无损链路得以解决,以太网终于在专有网络领域内拥有了自己的标准,同时也提出了RoCE(RDMA over Converged Ethernet)的概念。经过版本的升级(从RoCEv1到RoCEv2),10Gb及以上的新型NIC和switch基本都集成了RoCE支持。
RoCEv1
2010年4月,IBTA发布了RoCE,此标准是作为Infiniband Architecture Specification的附加件发布的,所以也称为IBoE(InfiniBand over Ethernet)。这时的RoCE标准是在以太链路层之上用IB网络层代替了TCP/IP网络层,所以不支持IP路由功能。RoCE V1协议在以太层的typeID是0x8915。
在RoCE中,infiniband的链路层协议头被去掉,用来表示地址的GUID被转换成以太网的MAC。Infiniband依赖于无损的物理传输,RoCE也同样依赖于无损的以太传输,这一要求会给以太网的部署带来了成本和管理上的开销。以太网的无损传输必须依靠L2的QoS支持,比如PFC(Priority Flow Control),接收端在buffer池超过阈值时会向发送方发出pause帧,发送方MAC层在收到pause帧后,自动降低发送速率。这一要求,意味着整个传输环节上的所有节点包括end、switch、router,都必须全部支持L2 QoS,否则链路上的PFC就不能在两端发挥有效作用。
RoCEv1对应的协议请规范参考InfiniBand™ Architecture Specification Release 1.2.1 Annex A16: RoCE
RoCEv2
由于RoCEv1的数据帧不带IP头部,所以只能在L2子网内通信。为了解决此问题,IBTA于2014年提出了RoCE V2,RoCEv2扩展了RoCEv1,将GRH(Global Routing Header)换成UDP header + IP header,扩展后的帧结构如下图所示。
对应一个具体的报文示意图如下图所示。
值得注意的两点:
- RoCE v1(Layer 2)运作在Ehternet Link Layer(Layer 2)所以Ethertype 0x8915,所以正常的Frame大小为1500 bytes,而Jumbo Frame则是9000 bytes。
- RoCE v2(Layer 3)运作在UDP/IPv4或UDP/IPv6之上(Layer 3),采用UDP Port 4791进行传输。因为 RoCE v2的封包是座落在 Layer 3之上可进行路由,所以有时又会称为「Routable RoCE」或简称「RRoCE」。
Soft-RoCE
Linux内核在4.9通过软件的实现了RoCEv2,即Soft-RoCE
。不同于RoCE,softRoCE适用于任何以太环境,无需依赖NIC、switch、L2QoS等支持。
softRoCE
的目标是在所有支持以太网的设备上都可以部署RDMA传输,其实现可分成两部分,对上通过librxe
与RDMA stack(libibverbs)耦合,对下通过rxe.ko
与linux stack layer3耦合,用户通过某个eth NIC的UDP隧道为虚拟的RDMA设备传输RoCE数据。
在性能敏感的虚拟化场景,VM环境需要直接访问底层硬件。借助于softRoCE,底层的网卡硬件也不需要暴露在VM环境就可以使用挂载的虚拟RoCE设备。
通过在节点上安装
soft-RoCE
,它就可以与支持RoCE的节点或者是同样安装有soft-RoCE
的节点建立RDMA传输。尽管在传统以太上,one-copy甚至zero-copy的方案已经出现多个,但个人认为soft-RoCE
的 最大意义是使得不具备RDMA NIC的数据中心用最小的成本构建起高效的RDMA网络,所以softRoCE作为RoCE方案的重要补充,已经逐渐成为RDMA生态(IBTA)下一步开发的标准构件。
网络要求
&RoCE可以运行在无损网络环境和有损网络环境中,如果运行在有损网络环境中,称为弹性RoCE(Resilient RoCE);如果运行在无损网络环境中,称为无损RoCE(Lossless RoCE)。
弹性RoCE网络 - 可以发送RoCE流的有损网络环境,即无需开启PFC/ECN的网络环境
https://community.mellanox.com/s/article/introduction-to-resilient-roce---faq无损RoCE网络 - 网络中开启PFC流控功能,确保网络的无损特性
https://community.mellanox.com/s/article/roce-v2-considerations#jive_content_id_Resilient_RoCE
总结:尽管RoCE对链路层和物理层存在特殊依赖,但是在部署新型的数据中心时,对于较新型switch、NIC、SOC基本上都会集成网络融合DCB和RDMA支持。所以在新建Data Center、SAN时,性能最优的RoCE是最佳选择。而在旧DC、SAN扩容或者成本敏感型的优化时,仅需要RNIC的iWRAP或者完全不依赖任何硬件的softRoCE更加适合。
Ref
1 https://www.cnblogs.com/echo1937/p/7018266.html
2 http://hustcat.github.io/roce-protocol/
3 RoCE: An Ethernet-InfiniBand Love Story
4 InfiniBand™ Architecture Specification Release 1.2.1 Annex A16: RoCE
5 InfiniBand™ Architecture Specification Release 1.2.1 Annex A17: RoCEv2
6 RoCEv2 CNP Packet Format Example