RDMA技術解析


文章出處:https://mp.weixin.qq.com/s/pW-tQR4AYr1Gtd4dpHVW7w

摘要:遠程直接內存訪問(即Remote Direct Memory Access)是一種直接內存訪問技術,它將數據直接從一台計算機的內存傳輸到另一台計算機,無需雙方操作系統的介入。

 

RDMA簡介

      傳統的TCP/IP技術在數據包處理過程中,要經過操作系統及其他軟件層,需要占用大量的服務器資源和內存總線帶寬,數據在系統內存、處理器緩存和網絡控制器緩存之間來回進行復制移動,給服務器的CPU和內存造成了沉重負擔。尤其是網絡帶寬、處理器速度與內存帶寬三者的嚴重”不匹配性”,更加劇了網絡延遲效應。

 

      RDMA是一種新的內存訪問技術,RDMA讓計算機可以直接存取其他計算機的內存,而不需要經過處理器耗時的處理。RDMA將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響。RDMA技術的原理及其與TCP/IP架構的對比如下圖所示。

 

 

      因此,RDMA可以簡單理解為利用相關的硬件和網絡技術,服務器1的網卡可以直接讀寫服務器2的內存,最終達到高帶寬、低延遲和低資源利用率的效果。如下圖所示,應用程序不需要參與數據傳輸過程,只需要指定內存讀寫地址,開啟傳輸並等待傳輸完成即可。

 

 

哪些網絡協議支持RDMA

  • InfiniBand(IB): 從一開始就支持RDMA的新一代網絡協議。由於這是一種新的網絡技術,因此需要支持該技術的網卡和交換機。

  • RDMA過融合以太網(RoCE): 一種允許通過以太網進行RDMA的網絡協議。其較低的網絡頭是以太網頭,其上網絡頭(包括數據)是InfiniBand頭。這允許在標准以太網基礎架構(交換機)上使用RDMA。只有NIC應該是特殊的,並支持RoCE。

  • 互聯網廣域RDMA協議(iWARP): 允許通過TCP執行RDMA的網絡協議。在IB和RoCE中存在功能,iWARP不支持這些功能。這允許在標准以太網基礎架構(交換機)上使用RDMA。只有NIC應該是特殊的,並支持iWARP(如果使用CPU卸載),否則所有iWARP堆棧都可以在SW中實現,並且丟失了大部分的RDMA性能優勢。

 

RDMA優勢

      在實現上,RDMA實際上是一種智能網卡與軟件架構充分優化的遠端內存直接高速訪問技術,通過在網卡上將RDMA協議固化於硬件,以及支持零復制網絡技術和內核內存旁路技術這兩種途徑來達到其高性能的遠程直接數據存取的目標。

 

  • (1)零復制:零復制網絡技術使網卡可以直接與應用內存相互傳輸數據,從而消除了在應用內存與內核之間復制數據的需要。因此,傳輸延遲會顯著減小。

  • (2)內核旁路:內核協議棧旁路技術使應用程序無需執行內核內存調用就可向網卡發送命令。在不需要任何內核內存參與的條件下,RDMA請求從用戶空間發送到本地網卡並通過網絡發送給遠程網卡,這就減少了在處理網絡傳輸流時內核內存空間與用戶空間之間環境切換的次數。

  • (3)沒有CPU參與: 應用程序可以訪問遠程內存,而不占用遠程機器中的任何CPU。遠程存儲器將被讀取,無需任何干預的遠程進程(或處理器)。遠程CPU中的緩存將不會被訪問的內存內容填滿。

  • (4)基於消息的事務:數據被作為離散消息處理,而不是作為流,這消除了應用將流分成不同消息/事務的需要。

  • (5)分散/收集條目支持: RDMA支持本地處理多個分散/收集條目,即讀取多個內存緩沖區並將其作為一個流或獲取一個流並將其寫入多個內存緩沖區。

 

      在具體的遠程內存讀寫中,RDMA操作用於讀寫操作的遠程虛擬內存地址包含在RDMA消息中傳送,遠程應用程序要做的只是在其本地網卡中注冊相應的內存緩沖區。遠程節點的CPU除在連接建立、注冊調用等之外,在整個RDMA數據傳輸過程中並不提供服務,因此沒有帶來任何負載。

 

 

RDMA的不同實現

      常見的RDMA實現包括虛擬接口架構、基於融合以太網的RDMA(RoCE)、[8][9]InfiniBand、iWARP。如下圖所示,RDMA的實現方式主要分為InfiniBand和Ethernet兩種傳輸網絡。而在以太網上,又可以根據與以太網融合的協議棧的差異分為iWARP和RoCE(包括RoCEv1和RoCEv2)。

      其中,InfiniBand是最早實現RDMA的網絡協議,被廣泛應用到高性能計算中。但是InfiniBand和傳統TCP/IP網絡的差別非常大,需要專用的硬件設備,承擔昂貴的價格。鑒於此,這里不對InfiniBand做過多的討論。

 

      在基於以太網的版本中,下面重點選擇RoCEv2來討論。可以看出,RoCEv2的協議棧包括IB傳輸層、TCP/UDP、IP和Ethernet,其中,后面三層都使用了TCP/IP中相應層次的封包格式。RoCEv2的封包格式如下圖所示。

      其中,UDP包頭中,目的端口號為4791即代表是RoCEv2幀。IB BTH即InfiniBand Base Transport Header,定義了IB傳輸層的相應頭部字段。IB Payload即為消息負載。ICRC和FCS分別對應冗余檢測和幀校驗。

 

      IB BTH格式和字段定義如下圖。其中,Opcode用於表明該包的type或IB PayLoad中更高層的協議類型。S是Solicited Event的縮寫,表明回應者產生應該產生一個事件。M是MigReq的縮寫,一般用於遷移狀態。Pad表明有多少額外字節被填充到IB PayLoad中。TVer即Transport Header Version,表明該包的版本號。Partition Key用來表征與本Packet關聯的邏輯內存分區。rsvd是reserved的縮寫,該字段是保留的。Destination QP表明目的端Queue Pair序號。A是Acknowledge Request,表示該packet的應答可由響應者調度。PSN是Packet Sequence Number,用來檢測丟失或重復的數據包。

      最后,順帶說下RDMA網卡的出包。如前文所述,RDMA是一種智能網卡與軟件架構充分優化的遠端內存直接高速訪問技術,通過將RDMA技術固化於網卡上實現,即,在RoCEv2協議棧中,IB BTH、UDP、IP以及Ethernet Layer全是固化在網卡上的。用戶空間的Application通過OFA Stack(亦或其他組織編寫的RDMA stack)提供的verbs編程接口(比如WRITE、READ、SEND等)形成IB payload,接下來便直接進入硬件,由RDMA網卡實現負載的層層封裝。

 

      文章參考網址:基於RDMA的架構規范

 http://www.rdmaconsortium.org/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM