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