干貨:RDMA技術(shù)調(diào)研


直接內(nèi)存訪問 (DMA) 是設(shè)備無需 CPU 干預(yù)即可直接訪問主機(jī)內(nèi)存的能力。遠(yuǎn)程直接內(nèi)存訪問(RDMA)是訪問(即讀取或?qū)懭耄┻h(yuǎn)程機(jī)器上的內(nèi)存而不中斷該系統(tǒng) 上 CPU處理的能力。本文內(nèi)容參考自“RDMA技術(shù)調(diào)研”。
下載鏈接:
如何配置InfiniBand和RDMA網(wǎng)絡(luò)?
傳統(tǒng)網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)過程:

傳統(tǒng)網(wǎng)絡(luò)協(xié)議棧的過程下,無論是發(fā)送端還是接收端,都需要CPU的指揮和控制,包括 網(wǎng)卡的控制,中斷的處理,報(bào)文的封裝和解析等等。?
使用了RDMA技術(shù)之后網(wǎng)絡(luò)的轉(zhuǎn)發(fā)過程:

在使用了RDMA技術(shù)時(shí),兩端的CPU幾乎不用參與數(shù)據(jù)傳輸過程(只參與控制面)。本端的網(wǎng)卡直接從內(nèi)存的用戶空間DMA拷貝數(shù)據(jù)到內(nèi)部存儲(chǔ)空間,然后硬件進(jìn)行各層報(bào)文的組裝后,通過物理鏈路發(fā)送到對(duì)端網(wǎng)卡。對(duì)端的RDMA網(wǎng)卡收到數(shù)據(jù)后,剝離各層報(bào)文頭和校驗(yàn)碼,通過DMA將數(shù)據(jù)直接拷貝到用戶空間內(nèi)存中。
RDMA是現(xiàn)代高速網(wǎng)絡(luò)的具體實(shí)現(xiàn)方案,現(xiàn)主要用于數(shù)據(jù)中心內(nèi)部的存儲(chǔ)服務(wù)器之間的數(shù)據(jù)交互,相較于傳統(tǒng)網(wǎng)絡(luò),主要有三大核心優(yōu)勢∶
0拷貝∶應(yīng)用程序可以在沒有網(wǎng)絡(luò)軟件堆棧參與的情況下執(zhí)行數(shù)據(jù)傳輸,并且數(shù)據(jù)被直接發(fā)送到緩沖區(qū),而無需在網(wǎng)絡(luò)層之間進(jìn)行復(fù)制。
內(nèi)核旁路∶應(yīng)用程序可以真接從用戶空間執(zhí)行數(shù)據(jù)傳輸,而無需執(zhí)行上下文切換。
CPU卸載∶應(yīng)用程序可以訪問遠(yuǎn)程內(nèi)存而不會(huì)消耗遠(yuǎn)程機(jī)器中的任何CPU。遠(yuǎn)程內(nèi)存機(jī)器將在沒有任何遠(yuǎn)程進(jìn)程(或處理器)干預(yù)的情況下被讀取。遠(yuǎn)程 CPU 中的緩存不會(huì)被訪問的內(nèi)存內(nèi)容填滿。
可以在至少需要以下一項(xiàng)的場景中找到RDMA∶
低延遲-例如∶ HPC、金融服務(wù)、web 3.0
高帶寬-例如∶HPC、醫(yī)療設(shè)備、存儲(chǔ)和備份系統(tǒng)、云計(jì)算
CPU占用空間小-例如∶ HPC、云計(jì)算
RDMA本身指的是一種技術(shù),具體協(xié)議層面,包含Infiniband (IB),RDMA over Converged Ethernet (RoCE)和internet Wide Area RDMA Protocol (WARP)。三種協(xié)議都符合RDMA標(biāo)準(zhǔn),使用相同的上層接口,在不同層次上有一些差別。
Infiniband:從一開始就原生支持 RDMA 的新一代網(wǎng)絡(luò)協(xié)議。由于這是一項(xiàng)新的網(wǎng)絡(luò)技術(shù),因此需要支持該技術(shù)的網(wǎng)卡和交換機(jī)。
ROCE:一種允許在以太網(wǎng)網(wǎng)絡(luò)上執(zhí)行 RDMA 的網(wǎng)絡(luò)協(xié)議。它的下部網(wǎng)絡(luò)標(biāo)頭是以太網(wǎng)標(biāo)頭,其上部網(wǎng)絡(luò)標(biāo)頭(包括數(shù)據(jù))是 InfiniBand 標(biāo)頭。這允許在標(biāo)準(zhǔn)以太網(wǎng)基礎(chǔ)設(shè)施(交換機(jī))上使用 RDMA。只有 NIC 應(yīng)該是特殊的并且支持RoCE。
iWARP:一種允許通過 TCP執(zhí)行 RDMA 的網(wǎng)絡(luò)協(xié)議。有些功能存在于IB 和 RoCE 中,但在WARP中不受支持。這允許在標(biāo)準(zhǔn)以太網(wǎng)基礎(chǔ)設(shè)施(交換機(jī))上使用RDMA。只有NIC 應(yīng)該是特殊的并支持WARP(如果使用CPU 卸載),否則所有 iWARP 堆棧都可以在SW中實(shí)現(xiàn)并失去大部分RDMA性能優(yōu)勢。發(fā)展脈絡(luò)如下圖所示:

為了使用RDMA,需要一個(gè)具有 RDMA 功能的網(wǎng)絡(luò)適配器(例如 Mellanox 的Connect-X 系列網(wǎng)卡)。網(wǎng)絡(luò)的鏈路層協(xié)議可以是以太網(wǎng)或 InfiniBand——兩者都可以傳輸基于 RDMA 的應(yīng)用程序。
下面我們把CQ和WO(QP)放在一起,看一下一次SEND-RECV操作中,軟硬件的互動(dòng)(圖中序號(hào)順序不表示實(shí)際時(shí)序)∶

簡而言之。在通信前,接收端APP需要提前在RQ中準(zhǔn)備好接收任務(wù)工作區(qū)。
發(fā)送起始,發(fā)送端APP需要向SQ下達(dá)SEND任務(wù)。接收端收到數(shù)據(jù)后會(huì)第一時(shí)間向?qū)Ψ交貜?fù)ACK,之后生成CO,并通過CO告知APP收到了消息。
發(fā)送端也會(huì)通過接收對(duì)方剛剛生成的ACK,生成CQ,進(jìn)而通知APP任務(wù)完成。
RDMA支持以下4種通信操作
SEND/RECV SEND操作允許捋數(shù)據(jù)發(fā)送到遠(yuǎn)程OP的接收隊(duì)列。接收器之前必須發(fā)布了一個(gè)接收緩沖區(qū)才能接收數(shù)據(jù)。發(fā)送方無法控制數(shù)據(jù)在遠(yuǎn)程主機(jī)中的所在位置。
WRITE/READ系統(tǒng)將從遠(yuǎn)程主機(jī)中讀取一段內(nèi)存。調(diào)用者指定要復(fù)制到的遠(yuǎn)程虛擬地址以及本地內(nèi)存地址。在執(zhí)行RDMA操作之前,元程主機(jī)必須提供活當(dāng)?shù)臋?quán)限來訪問其內(nèi)存。一目設(shè)置了這些權(quán)限,就會(huì)執(zhí)行RDMA讀取操作,而無需發(fā)出任何通知到遠(yuǎn)程主機(jī)。對(duì)于RDMA的讀寫操作,遠(yuǎn)程端都是不知道正在執(zhí)行此操作的(除了準(zhǔn)備權(quán)限和資源之外)。
ATOMIC對(duì)RDMA操作的原子擴(kuò)展。
SRQ_RECV通過共享RQ的方式,將原先的一個(gè)QP中一個(gè)SQ對(duì)應(yīng)一個(gè)RQ的模式,變成了多個(gè)SQ共用一個(gè)RO的模式,減少了內(nèi)存占用。
RC可靠連接,類似于TCP?
UC不可靠連接,做了連接,但是沒有做重傳
UD不可靠數(shù)據(jù)報(bào),類似于UDP
幾種傳輸模式和支持的操作如下表所示∶

DC使用UD的主要優(yōu)點(diǎn)是單個(gè)OP 可以用來與任何其他 OP 對(duì)話;而使用 RC 時(shí),需要?jiǎng)?chuàng)建與通信對(duì)等點(diǎn)數(shù)量一樣多的 QP。Mellanox 的最新優(yōu)化引入了 DCT(動(dòng)態(tài)連接傳輸),可以很好地解決 OP 可擴(kuò)展性問題。
Send Request:SR定義了將發(fā)送多少數(shù)據(jù),從哪里、如何、發(fā)送到哪里。
Receive Request:RR定義了要為非RDMA操作接收數(shù)據(jù)的緩沖區(qū)。如果沒有定義緩沖區(qū),并且發(fā)送器嘗試發(fā)送操作或RDMA立即寫入,則捋發(fā)送接收未準(zhǔn)備好(RNR)錯(cuò)誤。
Completion Queue:完成隊(duì)列是一種通知應(yīng)用程序關(guān)于已結(jié)束的工作請(qǐng)求(狀態(tài)、操作碼、大小、來源)信息的機(jī)制。
Memory Registration:內(nèi)存注冊是一種機(jī)制,它允許應(yīng)用程序使用虛擬地址來描述一組虛擬連續(xù)的內(nèi)存位置或一組物理上連續(xù)的內(nèi)存位置到網(wǎng)絡(luò)適配器,作為一個(gè)虛擬連續(xù)的緩沖器。
Protection Domain:保護(hù)域用于將隊(duì)列對(duì)與內(nèi)存區(qū)域和內(nèi)存窗口關(guān)聯(lián)起來,作為啟用和控制網(wǎng)絡(luò)適配器對(duì)主機(jī)系統(tǒng)內(nèi)存的訪問的一種手段。
Scatter Gather 包含Address∶數(shù)據(jù)捋從其中收集或分散到的本地?cái)?shù)據(jù)緩沖區(qū)的地址。Size∶將從該地址讀取/寫入的數(shù)據(jù)的大小。L_key∶已注冊到此緩沖區(qū)的先生的本地密鑰。
Polling輪詢CO是獲取已發(fā)布的WR(發(fā)送或接收)的詳細(xì)信息。
本文主要從RDMA是什么、RDMA通信邏輯以及如何進(jìn)?RDMA編程三個(gè)方面初步介紹RDMA技術(shù)。
本文內(nèi)容參考自“RDMA技術(shù)調(diào)研”。
下載鏈接:
中國聯(lián)通的開放網(wǎng)絡(luò)研究與實(shí)踐
中國聯(lián)通開放硬件網(wǎng)絡(luò)設(shè)備白皮書
???????????????? ?END ?????????????????
轉(zhuǎn)載申明:轉(zhuǎn)載本號(hào)文章請(qǐng)注明作者和來源,本號(hào)發(fā)布文章若存在版權(quán)等問題,請(qǐng)留言聯(lián)系處理,謝謝。
推薦閱讀
更多架構(gòu)相關(guān)技術(shù)總結(jié)請(qǐng)參考“架構(gòu)師全店鋪技術(shù)資料打包”相關(guān)電子書(37本技術(shù)資料打包匯總詳情可通過“閱讀原文”獲取)。
內(nèi)容持續(xù)更新,現(xiàn)下單“全店鋪技術(shù)資料打包(全)”,后續(xù)可享全店更新“免費(fèi)”贈(zèng)閱,價(jià)格僅收198元(原總價(jià)350元)。
溫馨提示:
掃描二維碼關(guān)注公眾號(hào),點(diǎn)擊閱讀原文鏈接獲取“IT技術(shù)全店資料打包匯總(全)”電子書資料詳情。

