歡迎user
分布式存儲是通過網絡將各個獨立的存儲節點互聯組成集群,並通過網絡對外提供服務,從前麵介紹的分布式存儲架構和原理可以很明顯的看出,網絡是影響集群整體性能的另一個重要因素。數據讀寫、複製、恢複、再平衡等關鍵行為,以及各組件間各端口的心跳檢測和通信,無一不受到網絡的影響。如今,在存儲節點單機性能不斷提高的背景下,網絡的重要性愈發明顯,對網絡的訴求也越來越高。
隨著節點網絡帶寬的提升,尤其是進入100G+的時代,傳統TCP/IP協議棧內核轉發的瓶頸盡顯,為了解決傳統TCP/IP協議在網絡傳輸時過於複雜的數據處理環節,及其所引入的較高時延和對服務器資源的過度消耗等問題,采用RDMA技術則是當下一種理想的選擇。
RDMA技術實現了在網絡傳輸過程中兩個節點之間數據緩衝區數據的直接傳遞,在本節點可以直接將數據通過網絡傳送到遠程節點的內存中,具備零拷貝、內核旁路和CPU卸載三個標誌性的技術特點。數據平麵工作由RDMA硬件網卡完成,同時做到了高帶寬、低時延、低CPU開銷。
RDMA是基於消息的傳輸協議,一共有三種隊列:SQ(發送隊列)、RQ(接收隊列)、CQ(完成隊列),其中,把一對SQ和RQ稱為QP(Queue Pair)。
我們以最能體現RDMA特點的Write、Read操作為例,來介紹一下數據傳輸的流程:
RDMA Write,本端寫入遠端內存
(1)將可操作的內存區域注冊到RDMA MR(Memory Region)中,用於存放RDMA硬件網卡收發的數據。(2)節點兩端QP間建立鏈接,雙方交換用於後續數據讀寫所需要的關鍵參數,包括Virtual Address、Key、GID(全局ID,網絡層地址)、QPN(QP Number)等。(3)源端上層應用提交工作請求(WR)到工作隊列(WQ)的發送隊列(SQ)中,工作隊列元素(WQE)為Write任務。源端硬件從SQ中取出WQE來解析執行,將虛擬地址(VA)轉換為物理地址(PA),根據PA從內存中拿到待發送數據,封裝數據包,並通過網絡鏈路發送給目的端。(4)目的端硬件收到數據包並解析,根據目的VA轉換成本地PA,根據Key校驗權限後將數據放到本地內存的指定位置。(5)目的端回複ACK應答報文給源端,源端硬件收到後生成完成隊列元素(CQE)放置到完成隊列(CQ)中,源端上層應用從而取得工作完成信息(WC)。
RDMA Read,本端讀取遠端內存
(1)、(2)與Write過程相同。(3)源端上層應用提交工作請求(WR)到工作隊列(WQ)的發送隊列(SQ)中,工作隊列元素(WQE)為Read任務。源端硬件從SQ中取出WQE來解析執行,將Read請求通過網絡鏈路發送給目的端。(4)目的端硬件收到數據包並解析,根據目的VA轉換成本地PA,根據Key校驗權限後將指定內存位置的數據取出,封裝成數據包,並通過網絡鏈路發送給源端。(5)源端硬件收到數據包並解析,將數據放到指定的內存位置中,生成完成隊列元素(CQE)放置到完成隊列(CQ)中,源端上層應用從而取得工作完成信息(WC)。
從以上可以看出,RDMA Write、Read都是單端操作,數據傳輸時不需要遠端CPU的感知與參與,非常適合在節點間進行大數據量的高速傳輸,對吞吐和時延有較高要求的應用場景。
RDMA還可以作為承載NVMe-oF和GPUDirect Storage兩種技術的傳輸通道使用,利用RDMA的技術優勢提供高效的節點間網路通信。
NVMe-oF(NVMe over Fabric),使用NVMe協議通過網絡將主機連接到存儲,將NVMe的應用範圍從主機內部擴展到了外部網絡,極大地增強了靈活性和擴展性。其中NVMe-oF的傳輸實現方案之一是NVMe over RDMA,NVMe_RDMA模塊連接NVMe Core接口和RDMA Stack,把NVMe的IO隊列映射到RDMA QP連接,通過RDMA SEND,RDMA_WRITE,RDMA_READ語義實現IO交互,采用NVMe over RDMA構建的網絡其性能和時延可以媲美直連存儲。
在計算與存儲解耦的存算分離架構中,NVMe-oF能夠在盡可能小的損耗下將存儲資源提供給計算使用。
GPUDirect Storage,傳統方式下需要先將數據從存儲設備加載到內存中,再拷貝到GPU顯存進行訓練,通過GPUDirect Storage可以讓GPU直接與存儲設備進行通信,在GPU顯存與本地或遠端存儲之間建立直接的數據IO路徑,減少了額外的數據副本和CPU開銷,降低了時延,其中遠端方式由RDMA技術構建。
在AI/ML場景中,隨著數據集規模及複雜性的急劇增加,應用程序載入數據花費的時間成為影響整體性能的瓶頸,通過GPUDirect Storage可以大幅提高程序載入數據的速度,提升了端到端應用程序的性能。
由此可見,RDMA在分布式存儲領域的應用是非常有價值的一個方向,當前RDMA技術的實現方式主要有InfiniBand、RoCE、iWARP三種。
InfiniBand是專為RDMA設計的網絡,主要應用在HPC領域,其有一整套完整的框架和鏈路層到傳輸層規範,架構較為封閉,需要用專用的硬件設備搭建一套獨立的組網。IB在鏈路層提供了基於Credit的流量控製機製,可保證數據的可靠有序傳輸。
RoCE和iWARP都是基於Ethernet網絡,其中RoCE主要采用可部署於三層網絡上的v2版本。RoCE v2基於UDP協議,它的報文結構是在原有的IB架構的報文上增加UDP頭、IP頭和二層以太網報文頭,通過UDP目的端口號4791來標識RoCE報文,利用源端口號HASH實現負載分擔,提高了網絡的利用率。
RoCE v2相比采用TCP協議的iWARP的優點是保留了IB傳輸層,協議棧層數少且實現更簡單,有更好的性能和更低的時延,當前在數據中心領域中RoCE v2的應用更為廣泛。
未完待續,在後續一篇報道中,我們將繼續沿著網絡創新和變革的步伐,帶你繼續領略無損以太網對分布式存儲網絡的優化,敬請期待!