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