金浩 楊洪章
摘 要:面對高性能計算、分布式存儲等應用的快速發展,現有的網絡件架構無法滿足業務發展的需求,新興的RDMA技術解決了傳統網絡架構的性能瓶頸,本文對RDMA技術的基本原理深入研究,并為應用開發給出指導。
關鍵詞:RDMA;RoCE;零拷貝
RDMA(Remote-Direct Memory Access)遠程內存直接訪問,由Infiniband公司針對高性能技術領域推出的高速網絡技術,與傳統網絡技術相比,RDMA能夠提供更高帶寬、更低時延、占用更少的系統資源。
1 RDMA關鍵技術
RDMA基本原理是本地應用通過網卡直接訪問遠端節點的內存數據,無需遠端CPU和操作系統的參與,主要包含下面幾種關鍵技術:第一,內核旁路技術,應用程序直接使用RDMA接口實現數據發送、接收,不需要使用系統調用,避免了在系統態、用戶態之間切換的開銷。第二,減少拷貝,RDMA網卡能夠直接訪問主機內存空間,將上層應用設計為訪問固定物理內存空間,可以實現全流程零拷貝。第三,減少資源占用,RDMA網卡與主機內存之間采用DMA(Direct Memory Access)方式,占用系統總線,不占用CPU資源,因而報文收發流程CPU開銷很小。
2 RDMA實現方式
RDMA規范的前身Infiniband簡稱IB,起初用于高性能計算領域,需要使用專用的交換機、路由器等網絡設備,部署維護成本高。為了降低RDMA使用成本,推動RDMA技術普及,業界廠家將IB協議移植到以太網協議上,定義了RoCE(RDMA over Converged Ethernet)、iWarp(internet Wide Area RDMA protocol)兩種協議。RoCE分為v1、v2兩種,v1基于Ethernet協議實現IB協議,不支持跨網絡傳輸;v2基于UDP協議實現IB協議,支持三層路由設備,適合大規模組網。iWarp則是在TCP協議之上實現iWarp協議,對網絡設備要求低,但性能較差,目前只有intel生產支持iWarp協議的網卡。
3 RDMA通信原理
RDMA協議定義RC、UC、UD三種通信模式。RC(Reliable Connection)模式,保證報文正確的傳輸到目的端,支持報文ack確認、超時重傳,某個報文超時沒有確認,則重傳該報文后的所有報文。UC(Unreliable Connection)模式,需要提前建鏈,報文不需要攜帶地址信息,不支持ack確認、重傳,不保證對端能正確接收。UD(Unreliable Datagram)模式,不需要建鏈,每個報文都攜帶目標地址、目標隊列信息,不支持ack確認、重傳,每個報文不能大于網絡MTU限制。三種模式穩定性依次下降,執行效率依次升高,RC、UC鏈路資源都需要占用網卡的cache資源,并發鏈路數量過多時,需要考慮UD模式。
協議定義了雙邊、單邊2種通信原語。send、recv指令屬于雙邊原語,接收端執行recv指令等待數據到達,發送端執行send指令發起數據傳輸,雙邊CPU都參與傳輸過程,適合小數據傳輸。read、write指令屬于單邊原語,得知遠端內存地址后,本地網卡直接訪問遠端內存,遠端CPU無感知。單邊原語是RDMA規范中最具創新性的特性,通過RDMA協議把本地內存總線延伸到其他主機,傳輸效率高,適合較大數據的傳輸。不同模式下支持原語不同,RC模式支持全部原語,UC模式不支持read,UD模式僅支持send、recv單邊操作。
4 部署及應用
常用的RDMA網卡硬件分為IB卡和RoCE卡兩類。RoCE網卡兼容傳統以太網卡操作,支持ip、ifconfig等系統命令管理網卡設備,上層應用可以同時訪問以太網卡、RoCE網卡,通用socket接口訪問以太網卡,專用RDMA接口訪問RoCE網卡。IB網卡則需要安裝專用的驅動軟件,并與IB交換機連接,部署成本高。IB網絡通過ID信息訪問網卡,為了使IB網卡與傳統網卡兼容,驅動軟件提供了ipoib模塊、opensm服務,前者支持tcp/ip與IB協議互轉,實現通過IP地址訪問本地IB網卡,后者周期掃描子網內所有IB網卡,并維護網絡路由信息,實現通過IP地址與其他IB節點通信的能力。
網卡硬件對上層應用透明,應用程序通過專門的接口庫實現RDMA通信,不需要區分不同硬件。socket應用也可以通過ipoib模塊直接運行到RDMA網絡上,該方式使用內核協議棧,無法發揮RDMA性能,從測試結果看,ipoib方式的傳輸帶寬下降37%,時延增加376%,CPU資源開銷則增加86~490%。
5 性能測試
為驗證RDMA傳輸性能,本文采用Mellanox ConnectX-3 Pro網卡對RDMA、TCP的傳輸性能做對比測試。網卡配置為RoCE模式,qperf測試TCP性能,ib_send_bw、ib_send_lat測試RoCE性能,分別測試64B、256B、1KB、4KB、16KB、64KB幾種大小數據包。測試結果顯示,64字節小包時,RDMA帶寬達超過TCP的10倍,平均時延不足TCP的4%;64K字節大包時,RDMA帶寬超過TCP帶寬73%,平均時延只有TCP的7%;RDMA傳輸的CPU開銷遠小于TCP。本性能測試充分證明,同等硬件的RDMA性能遠遠優于傳統TCP鏈路。
6 總結
與傳統網絡相比,RDMA在帶寬、時延、資源占用方面優勢顯著,目前RDMA在很多頂級產品都已商用,如阿里的PolarFS、華為的FusionStore、亞馬遜服務集群。可以預見,不久的將來,將會看到更多的廠家推廣應用RDMA技術。
參考文獻:
[1]吳昊,陳康.基于RDMA和NVM的大數據系統一致性協議研究[J].大數據,2019.04:89-99.
[2]陳游旻,陸游游.基于RDMA的分布式存儲系統研究綜述[J].計算機發展與應用,2019.02:227-239.
基金課題:國家重點研發計劃項目(2018YFB1003302);江蘇省工業和信息產業轉型升級專項資金項目;南京市工業和信息化發展專項資金項目
作者簡介:金浩,男,高級工程師,主要研究方向為高速存儲及網絡協議棧。