以太網技術目前在全球互聯的因特網中始終占據主導地位,但在高帶寬、低延時的專有網絡中卻透露出許多弊端。隨著網絡融合概念的興起,在IETF發布了的DCB(Data Center Bridging)標準中,基于RDMA/Infiniband的無損鏈路得以解決,以太網終于在專有網絡領域內擁有了自己的標準,同時也提出了RoCE(RDMA over Converged Ethe.NET)的概念。
經過版本的升級(從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幀結構示意圖
RoCEv1對應的協議請規范參考InfiniBand™ Architecture Specification Release 1.2.1 Annex A16: RoCE
RoCEv1報文內容示意圖
RoCEv2
由于RoCEv1的數據幀不帶IP頭部,所以只能在L2子網內通信。為了解決此問題,IBTA于2014年提出了RoCE V2,RoCEv2擴展了RoCEv1,將GRH(Global Routing Header)換成UDP header + IP header,擴展后的幀結構如下圖所示。
RoCEv2幀結構
對應一個具體的報文示意圖如下圖所示。
RoCEv2報文示意圖
針對RoCE v1和RoCE v2,以下兩點值得注意:
- 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數據。
Soft-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更加適
文章摘自微信公眾號:架構師技術聯盟
參考文獻:
https://www.cnblogs.com/echo1937/p/7018266.html
http://hustcat.github.io/roce-protocol/
RoCE: An Ethernet-InfiniBand Love Story
InfiniBand™ Architecture Specification Release 1.2.1 Annex A16: RoCE
InfiniBand™ Architecture Specification Release 1.2.1 Annex A17: RoCEv2
RoCEv2 CNP Packet Format Example
作者:北春南秋鏈接:
https://www.jianshu.com/p/85e7309c6187