學習筆記-RDMA技術上篇

最近在看博通的智能網卡時候,看到了RoCE(RDMA over Converged Ethernet)技術,對於這種陌生的名詞,第一反應當然是百度了,然後記到CSDN這個小本本上。

要了解RoCE,首先就要了解RDMA。

一、什麼是RDMA

       RDMA(RemoteDirect Memory Access)技術全稱遠程直接內存訪問,就是爲了解決網絡傳輸中客戶端與服務器端數據處理的延遲而產生的。它將數據直接從一臺計算機的內存傳輸到另一臺計算機,無需雙方操作系統的介入。這允許高吞吐、低延遲的網絡通信,尤其適合在大規模並行計算機集羣中使用。RDMA通過網絡把資料直接傳入計算機的內存中,將數據從一個系統快速移動到遠程系統內存中,而不對操作系統造成任何影響,這樣就不需要用到多少計算機的處理能力。它消除了數據包在用戶空間和內核空間複製移動和上下文切換的開銷,因而能解放內存帶寬和CPU週期用於改進應用系統性能。

二、背景

    我們都知道OSI七層模型,傳統的TCP/IP網絡通信,數據需要通過用戶空間發送到遠程機器的用戶空間。數據發送方需要講數據從用戶應用空間Buffer複製到內核空間的Socket Buffer中。然後內核空間中添加數據包頭,進行數據封裝。通過一系列多層網絡協議的數據包處理工作,這些協議包括傳輸控制協議(TCP)、用戶數據報協議(UDP)、互聯網協議(IP)以及互聯網控制消息協議(ICMP)等。數據才被Push到NIC網卡中的Buffer進行網絡傳輸。消息接受方接受從遠程機器發送的數據包後,要將數據包從NIC Buffer中複製數據到Socket Buffer。然後經過一些列的多層網絡協議進行數據包的解析工作。解析後的數據被複制到相應位置的用戶空間Buffer。這個時候再進行系統上下文切換,用戶應用程序才被調用。以上就是傳統的TCP/IP協議層的工作。

   計算機網絡通信中,最重要的兩個指標是高帶寬和低延遲,我們沒有辦法在帶寬中做手腳,那麼只有在低延遲這部分下功夫了。這裏的延遲主要有處理延遲和網絡延遲,網絡延遲和硬件條件有直接關係。所以我們只能儘量降低處理延遲。在上一段的介紹中,OSI七層模型其實很有限制,大多數情況下都把時間浪費在複製,拆包,解包的過程中了,這使得CPU的壓力非常大。爲了減輕CPU的壓力,大佬們發明了TOE技術(TCP/IP Offloading Engine),將上述拆包、解包等處理任務轉移到網卡上。

三、詳解RDMA

       傳統數據傳輸模式與RDMA傳輸模式對比

3.1 RDMA的三個特性

1.Low-Latency   低延遲

2.Low CPU overhead  CPU低開銷

3. high bandwidth   高帶寬

3.2 RDMA的基本概念

RDMA有兩種基本操作。

    1.Memory verbs: 包括RDMA read、write和atomic操作。這些操作指定遠程地址進行操作並且繞過接收者的CPU。
    2.Messaging verbs:包括RDMA send、receive操作。這些動作涉及的接收方CPU,發送的數據被寫入由接收方的CPU先前發佈的接受所指定的地址。
    RDMA傳輸分爲可靠和不可靠的,並且可以連接和不連接的(數據報)。憑藉可靠的傳輸,NIC使用確認來保證消息的按序傳送。不可靠的傳輸不提供這樣的保證。然而,像InfiniBand這樣的現代RDMA實現使用了一個無損鏈路層,它可以防止使用鏈路層流量控制的基於擁塞的損失[1],以及使用鏈路層重傳的基於位錯誤的損失。因此,不可靠的傳輸很少會丟棄數據包。 

目前的RDMA硬件提供一種數據報傳輸:不可靠的數據報(UD),並且不支持memory verbs。


3.3 RDMA三種不同的硬件實現

    目前RDMA有三種不同的硬件實現。分別是InfiniBand、iWarp(internet Wide Area RDMA Protocol)、RoCE(RDMA over Converged Ethernet)。到此終於看到了我在博通文檔看到的RoCE了。

目前,大致有三類RDMA網絡,分別是Infiniband、RoCE、iWARP。其中,Infiniband是一種專爲RDMA設計的網絡,從硬件級別保證可靠傳輸 , 而RoCE 和 iWARP都是基於以太網的RDMA技術,支持相應的verbs接口,如圖所示。從圖中不難發現,RoCE協議存在RoCEv1和RoCEv2兩個版本,主要區別RoCEv1是基於以太網鏈路層實現的RDMA協議(交換機需要支持PFC等流控技術,在物理層保證可靠傳輸),而RoCEv2是以太網TCP/IP協議中UDP層實現。從性能上,很明顯Infiniband網絡最好,但網卡和交換機是價格也很高,然而RoCEv2和iWARP僅需使用特殊的網卡就可以了,價格也相對便宜很多。

相關名詞:

Infiniband,支持RDMA的新一代網絡協議。 由於這是一種新的網絡技術,因此需要支持該技術的NIC和交換機。
    RoCE,一個允許在以太網上執行RDMA的網絡協議。 其較低的網絡標頭是以太網標頭,其較高的網絡標頭(包括數據)是InfiniBand標頭。 這支持在標準以太網基礎設施(交換機)上使用RDMA。 只有網卡應該是特殊的,支持RoCE。
    iWARP,一個允許在TCP上執行RDMA的網絡協議。 IB和RoCE中存在的功能在iWARP中不受支持。 這支持在標準以太網基礎設施(交換機)上使用RDMA。 只有網卡應該是特殊的,並且支持iWARP(如果使用CPU卸載),否則所有iWARP堆棧都可以在SW中實現,並且喪失了大部分RDMA性能優勢。
 

部分摘自百度以及MasterT-J

 

 

       

    
 

發佈了122 篇原創文章 · 獲贊 29 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章