??以太網(wǎng)技術(shù)目前在全球互聯(lián)的因特網(wǎng)中始終占據(jù)主導(dǎo)地位管削,但在高帶寬、低延時(shí)的專(zhuān)有網(wǎng)絡(luò)中卻透露出許多弊端撑螺。隨著網(wǎng)絡(luò)融合概念的興起含思,在IETF發(fā)布了的DCB(Data Center Bridging)標(biāo)準(zhǔn)中,基于RDMA/Infiniband的無(wú)損鏈路得以解決,以太網(wǎng)終于在專(zhuān)有網(wǎng)絡(luò)領(lǐng)域內(nèi)擁有了自己的標(biāo)準(zhǔn)含潘,同時(shí)也提出了RoCE(RDMA over Converged Ethernet)的概念饲做。經(jīng)過(guò)版本的升級(jí)(從RoCEv1到RoCEv2),10Gb及以上的新型NIC和switch基本都集成了RoCE支持遏弱。
RoCEv1
??2010年4月盆均,IBTA發(fā)布了RoCE,此標(biāo)準(zhǔn)是作為Infiniband Architecture Specification的附加件發(fā)布的漱逸,所以也稱為IBoE(InfiniBand over Ethernet)泪姨。這時(shí)的RoCE標(biāo)準(zhǔn)是在以太鏈路層之上用IB網(wǎng)絡(luò)層代替了TCP/IP網(wǎng)絡(luò)層,所以不支持IP路由功能饰抒。RoCE V1協(xié)議在以太層的typeID是0x8915肮砾。
??在RoCE中,infiniband的鏈路層協(xié)議頭被去掉袋坑,用來(lái)表示地址的GUID被轉(zhuǎn)換成以太網(wǎng)的MAC仗处。Infiniband依賴于無(wú)損的物理傳輸,RoCE也同樣依賴于無(wú)損的以太傳輸咒彤,這一要求會(huì)給以太網(wǎng)的部署帶來(lái)了成本和管理上的開(kāi)銷(xiāo)疆柔。以太網(wǎng)的無(wú)損傳輸必須依靠L2的QoS支持,比如PFC(Priority Flow Control)镶柱,接收端在buffer池超過(guò)閾值時(shí)會(huì)向發(fā)送方發(fā)出pause幀旷档,發(fā)送方MAC層在收到pause幀后,自動(dòng)降低發(fā)送速率歇拆。這一要求鞋屈,意味著整個(gè)傳輸環(huán)節(jié)上的所有節(jié)點(diǎn)包括end、switch故觅、router厂庇,都必須全部支持L2 QoS,否則鏈路上的PFC就不能在兩端發(fā)揮有效作用输吏。
RoCEv1對(duì)應(yīng)的協(xié)議請(qǐng)規(guī)范參考InfiniBand? Architecture Specification Release 1.2.1 Annex A16: RoCE
RoCEv2
??由于RoCEv1的數(shù)據(jù)幀不帶IP頭部权旷,所以只能在L2子網(wǎng)內(nèi)通信。為了解決此問(wèn)題贯溅,IBTA于2014年提出了RoCE V2拄氯,RoCEv2擴(kuò)展了RoCEv1,將GRH(Global Routing Header)換成UDP header + IP header它浅,擴(kuò)展后的幀結(jié)構(gòu)如下圖所示译柏。
對(duì)應(yīng)一個(gè)具體的報(bào)文示意圖如下圖所示。
值得注意的兩點(diǎn):
- RoCE v1(Layer 2)運(yùn)作在Ehternet Link Layer(Layer 2)所以Ethertype 0x8915姐霍,所以正常的Frame大小為1500 bytes鄙麦,而Jumbo Frame則是9000 bytes典唇。
- RoCE v2(Layer 3)運(yùn)作在UDP/IPv4或UDP/IPv6之上(Layer 3),采用UDP Port 4791進(jìn)行傳輸胯府。因?yàn)?RoCE v2的封包是座落在 Layer 3之上可進(jìn)行路由介衔,所以有時(shí)又會(huì)稱為「Routable RoCE」或簡(jiǎn)稱「RRoCE」。
Soft-RoCE
??Linux內(nèi)核在4.9通過(guò)軟件的實(shí)現(xiàn)了RoCEv2盟劫,即Soft-RoCE
夜牡。不同于RoCE,softRoCE適用于任何以太環(huán)境侣签,無(wú)需依賴NIC塘装、switch、L2QoS等支持影所。
??softRoCE
的目標(biāo)是在所有支持以太網(wǎng)的設(shè)備上都可以部署RDMA傳輸蹦肴,其實(shí)現(xiàn)可分成兩部分,對(duì)上通過(guò)librxe
與RDMA stack(libibverbs)耦合猴娩,對(duì)下通過(guò)rxe.ko
與linux stack layer3耦合阴幌,用戶通過(guò)某個(gè)eth NIC的UDP隧道為虛擬的RDMA設(shè)備傳輸RoCE數(shù)據(jù)。
??在性能敏感的虛擬化場(chǎng)景卷中,VM環(huán)境需要直接訪問(wèn)底層硬件矛双。借助于softRoCE,底層的網(wǎng)卡硬件也不需要暴露在VM環(huán)境就可以使用掛載的虛擬RoCE設(shè)備蟆豫。
??通過(guò)在節(jié)點(diǎn)上安裝
soft-RoCE
议忽,它就可以與支持RoCE的節(jié)點(diǎn)或者是同樣安裝有soft-RoCE
的節(jié)點(diǎn)建立RDMA傳輸。盡管在傳統(tǒng)以太上十减,one-copy甚至zero-copy的方案已經(jīng)出現(xiàn)多個(gè)栈幸,但個(gè)人認(rèn)為soft-RoCE
的 最大意義是使得不具備RDMA NIC的數(shù)據(jù)中心用最小的成本構(gòu)建起高效的RDMA網(wǎng)絡(luò),所以softRoCE作為RoCE方案的重要補(bǔ)充帮辟,已經(jīng)逐漸成為RDMA生態(tài)(IBTA)下一步開(kāi)發(fā)的標(biāo)準(zhǔn)構(gòu)件速址。
網(wǎng)絡(luò)要求
&RoCE可以運(yùn)行在無(wú)損網(wǎng)絡(luò)環(huán)境和有損網(wǎng)絡(luò)環(huán)境中,如果運(yùn)行在有損網(wǎng)絡(luò)環(huán)境中由驹,稱為彈性RoCE(Resilient RoCE)芍锚;如果運(yùn)行在無(wú)損網(wǎng)絡(luò)環(huán)境中,稱為無(wú)損RoCE(Lossless RoCE)蔓榄。
彈性RoCE網(wǎng)絡(luò) - 可以發(fā)送RoCE流的有損網(wǎng)絡(luò)環(huán)境闹炉,即無(wú)需開(kāi)啟PFC/ECN的網(wǎng)絡(luò)環(huán)境
https://community.mellanox.com/s/article/introduction-to-resilient-roce---faq無(wú)損RoCE網(wǎng)絡(luò) - 網(wǎng)絡(luò)中開(kāi)啟PFC流控功能,確保網(wǎng)絡(luò)的無(wú)損特性
https://community.mellanox.com/s/article/roce-v2-considerations#jive_content_id_Resilient_RoCE
??總結(jié):盡管RoCE對(duì)鏈路層和物理層存在特殊依賴润樱,但是在部署新型的數(shù)據(jù)中心時(shí),對(duì)于較新型switch羡棵、NIC壹若、SOC基本上都會(huì)集成網(wǎng)絡(luò)融合DCB和RDMA支持。所以在新建Data Center、SAN時(shí)店展,性能最優(yōu)的RoCE是最佳選擇养篓。而在舊DC、SAN擴(kuò)容或者成本敏感型的優(yōu)化時(shí)赂蕴,僅需要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