作者:戚丁元,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心
通信領(lǐng)域出場(chǎng)率最高的性能指標(biāo)就是“帶寬”和“時(shí)延”。簡(jiǎn)單的說(shuō),所謂帶寬是指單位時(shí)間內(nèi)能夠傳輸?shù)臄?shù)據(jù)量,而時(shí)延指的是數(shù)據(jù)從本端發(fā)出到被對(duì)端接收所耗費(fèi)的時(shí)間。因?yàn)閰f(xié)議本身設(shè)計(jì)的缺陷,傳統(tǒng)以太網(wǎng)在城域網(wǎng)絡(luò)算力化全面升級(jí)的今天,要同時(shí)保證高帶寬和低時(shí)延則顯得力不從心,而相比于傳統(tǒng)以太網(wǎng),RDMA技術(shù)同時(shí)做到了更高帶寬和更低時(shí)延,所以其在帶寬敏感的場(chǎng)景——比如海量數(shù)據(jù)的交互,時(shí)延敏感——比如多個(gè)計(jì)算節(jié)點(diǎn)間的數(shù)據(jù)同步的場(chǎng)景下得以發(fā)揮其作用。
RDMA(Remote Direct Memory Access,遠(yuǎn)程直接地址訪問(wèn)技術(shù))是一種新的內(nèi)存訪問(wèn)技術(shù),可以讓服務(wù)器直接高速讀寫(xiě)其他服務(wù)器的內(nèi)存數(shù)據(jù),而不需要經(jīng)過(guò)操作系統(tǒng)/CPU耗時(shí)的處理。RDMA已經(jīng)廣泛應(yīng)用于高性能(HPC)科學(xué)計(jì)算中。隨著數(shù)據(jù)中心高帶寬、低時(shí)延的發(fā)展需求,RDMA也開(kāi)始逐漸應(yīng)用于某些要求數(shù)據(jù)中心具備高性能的場(chǎng)景中。舉個(gè)例子,2021年某大型網(wǎng)上商城的雙十一交易額再創(chuàng)新高,達(dá)到5000多億,比2020年又增長(zhǎng)了近10%。如此巨大的交易額背后是海量的數(shù)據(jù)處理,該網(wǎng)上商城就采用了RDMA技術(shù)來(lái)支撐高性能網(wǎng)絡(luò),保障了雙十一的順暢購(gòu)物。
傳統(tǒng)TCP/IP網(wǎng)絡(luò)傳輸困境
1.1 傳統(tǒng)以太網(wǎng)端到端傳輸系統(tǒng)開(kāi)銷(xiāo)過(guò)大
在描述通信過(guò)程時(shí)的軟硬件關(guān)系時(shí),我們通常將模型劃分為用戶(hù)層Userspace、內(nèi)核Kernel以及硬件Hardware。
Userspace和Kernel實(shí)際上使用的是同一塊物理內(nèi)存,但是出于安全考慮,Linux將內(nèi)存劃分為用戶(hù)空間和內(nèi)核空間。用戶(hù)層沒(méi)有權(quán)限訪問(wèn)和修改內(nèi)核空間的內(nèi)存內(nèi)容,只能通過(guò)系統(tǒng)調(diào)用陷入內(nèi)核態(tài),Linux的內(nèi)存管理機(jī)制比較復(fù)雜。
一次典型的基于傳統(tǒng)以太網(wǎng)的通信過(guò)程的可以如下圖所示進(jìn)行分層:
這個(gè)模型的數(shù)據(jù)流向大致是像上圖這個(gè)樣子,數(shù)據(jù)首先需要從用戶(hù)空間復(fù)制一份到內(nèi)核空間,這一次復(fù)制由CPU完成,將數(shù)據(jù)塊從用戶(hù)空間復(fù)制到內(nèi)核空間的Socket Buffer中。內(nèi)核中軟件TCP/IP協(xié)議棧給數(shù)據(jù)添加各層頭部和校驗(yàn)信息。最后網(wǎng)卡會(huì)通過(guò)DMA從內(nèi)存中復(fù)制數(shù)據(jù),并通過(guò)物理鏈路發(fā)送給對(duì)端的網(wǎng)卡。
而對(duì)端是完全相反的過(guò)程:硬件將數(shù)據(jù)包DMA拷貝到內(nèi)存中,然后CPU會(huì)對(duì)數(shù)據(jù)包進(jìn)行逐層解析和校驗(yàn),最后將數(shù)據(jù)復(fù)制到用戶(hù)空間。上述過(guò)程中的關(guān)鍵點(diǎn)是需要CPU全程參與整個(gè)數(shù)據(jù)的處理過(guò)程,即從用戶(hù)空間拷貝數(shù)據(jù)到內(nèi)核空間、以及對(duì)數(shù)據(jù)進(jìn)行組裝和解析等,數(shù)據(jù)量大的情況下,這將對(duì)CPU將造成很大的負(fù)擔(dān)。
傳統(tǒng)網(wǎng)絡(luò)中,“節(jié)點(diǎn)A給節(jié)點(diǎn)B發(fā)消息”實(shí)際上做的是“把節(jié)點(diǎn)A內(nèi)存中的一段數(shù)據(jù),通過(guò)網(wǎng)絡(luò)鏈路搬移到節(jié)點(diǎn)B的內(nèi)存中”,而這一過(guò)程無(wú)論是發(fā)端還是收段,都需要CPU的指揮和控制,包括網(wǎng)卡的控制,中斷的處理,報(bào)文的封裝和解析等等。
上圖中左邊的節(jié)點(diǎn)在內(nèi)存用戶(hù)空間中的數(shù)據(jù),需要經(jīng)過(guò)CPU拷貝到內(nèi)核空間的緩沖區(qū)中,然后才可以被網(wǎng)卡訪問(wèn),這期間數(shù)據(jù)會(huì)經(jīng)過(guò)軟件實(shí)現(xiàn)的TCP/IP協(xié)議棧,加上各層頭部和校驗(yàn)碼,比如TCP頭,IP頭等。網(wǎng)卡通過(guò)DMA拷貝內(nèi)核中的數(shù)據(jù)到網(wǎng)卡內(nèi)部的緩沖區(qū)中,進(jìn)行處理后通過(guò)物理鏈路發(fā)送給對(duì)端。
對(duì)端收到數(shù)據(jù)后,會(huì)進(jìn)行相反的過(guò)程:從網(wǎng)卡內(nèi)部存儲(chǔ)空間,將數(shù)據(jù)通過(guò)DMA拷貝到內(nèi)存內(nèi)核空間的緩沖區(qū)中,然后CPU會(huì)通過(guò)TCP/IP協(xié)議棧對(duì)其進(jìn)行解析,將數(shù)據(jù)取出來(lái)拷貝到用戶(hù)空間中??梢钥吹剑词褂辛薉MA技術(shù),上述過(guò)程還是對(duì)CPU有較強(qiáng)的依賴(lài)。
1.2 TCP協(xié)議本身在長(zhǎng)肥管道場(chǎng)景下存在天然不足
TCP長(zhǎng)肥管道的兩大特征
①傳輸時(shí)延(發(fā)送時(shí)延)很?。?/strong>收發(fā)包速度很快,非常短的時(shí)間就能把大量的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。
②傳播時(shí)延很大:數(shù)據(jù)包從發(fā)送到網(wǎng)絡(luò)上開(kāi)始,要經(jīng)過(guò)很長(zhǎng)的時(shí)間(相比于發(fā)送時(shí)延)才能傳送到接收端。
LFN對(duì)TCP性能的影響
①LFN的帶寬延時(shí)積很大
(發(fā)送很快,傳播到另外一端需要很長(zhǎng)時(shí)間),導(dǎo)致會(huì)有大量的數(shù)據(jù)包滯留在傳播途中TCP流控算法會(huì)在窗口變成0時(shí)停止發(fā)送。但原始的TCP頭部的窗口大小字段是16位的,因此窗口大小最大為65535字節(jié),這就將發(fā)送方發(fā)送但未被確認(rèn)的數(shù)據(jù)的總長(zhǎng)度限制到了65536字節(jié)。參考計(jì)算65535*8/1024/1024=0.5Mbps,那么假設(shè)發(fā)送速度足夠快的前提下,在傳播時(shí)延為100毫秒的網(wǎng)絡(luò)里,只要5Mbps的帶寬就可以做到在第一個(gè)bit還沒(méi)有到達(dá)接收端時(shí),發(fā)送端就已經(jīng)發(fā)送完了最后一個(gè)bit, 然后窗口變成0,停止發(fā)送數(shù)據(jù),還要等待至少100毫秒發(fā)送端才能收到接收端發(fā)回來(lái)的接收窗口通告,然后才能打開(kāi)窗口繼續(xù)發(fā)送,意味著最多只能使用到5Mbps的帶寬,因此不能充分利用網(wǎng)絡(luò)。------由此提出了窗口擴(kuò)大選項(xiàng)以聲明更大的窗口。
②LFN的高延時(shí)會(huì)導(dǎo)致管道枯竭
據(jù)TCP的擁塞控制,丟失分組會(huì)導(dǎo)致連接進(jìn)行擁塞控制,即便是由于冗余ACK而進(jìn)入了快速恢復(fù),也會(huì)使得擁塞窗口降低一半,而如果是由于超時(shí)進(jìn)入了慢啟動(dòng),則擁塞窗口會(huì)變?yōu)?,無(wú)論是哪一種情形,發(fā)送方允許被發(fā)送的數(shù)據(jù)量都大量減小了,這會(huì)使得管道枯竭,網(wǎng)絡(luò)通信速度急劇下降。
③LFN不利于TCP協(xié)議的RTT測(cè)量
按TCP協(xié)議,每個(gè)TCP連接只有一個(gè)RTT計(jì)時(shí)器, 同一時(shí)間,只有一個(gè)報(bào)文做RTT測(cè)量,啟動(dòng)RTT計(jì)時(shí)的數(shù)據(jù)在沒(méi)有被ACK前, TCP無(wú)法進(jìn)行下一次RTT的測(cè)量。而在長(zhǎng)肥管道中,傳播時(shí)延很大,這意味著RTT的測(cè)試周期很大。
④LFN導(dǎo)致收端tcp亂序
長(zhǎng)肥管的發(fā)送速度非??欤òl(fā)送時(shí)延),TCP對(duì)每個(gè)字節(jié)數(shù)據(jù)使用一個(gè)32bit無(wú)符號(hào)的序號(hào)來(lái)進(jìn)行標(biāo)識(shí)。TCP定義了最大的報(bào)文段生存時(shí)間(MSL)來(lái)限制報(bào)文段在網(wǎng)絡(luò)中的生存時(shí)間。但是在LFN網(wǎng)絡(luò)上,由于序號(hào)空間是有限的,在已經(jīng)傳輸了4294967296個(gè)字節(jié)以后序號(hào)會(huì)被重用。如果網(wǎng)絡(luò)快到在不到一個(gè)MSL的時(shí)候序號(hào)就發(fā)生了回繞,網(wǎng)絡(luò)中就會(huì)有兩個(gè)具有相同序號(hào)的不同的報(bào)文段,接收方將無(wú)法區(qū)分它們的順序。在一個(gè)千兆比特網(wǎng)絡(luò)(1000Mb/s)中只需要34秒就可以完成4294967296個(gè)字節(jié)的發(fā)送。
XDP的整體框架
2.1 基本原理
RDMA(Remote Direct Memory Access)意為遠(yuǎn)程直接地址訪問(wèn),通過(guò)RDMA,本端節(jié)點(diǎn)可以“直接”訪問(wèn)遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存。所謂“直接”,指的是可以像訪問(wèn)本地內(nèi)存一樣,繞過(guò)傳統(tǒng)以太網(wǎng)復(fù)雜的TCP/IP網(wǎng)絡(luò)協(xié)議棧讀寫(xiě)遠(yuǎn)端內(nèi)存,而這個(gè)過(guò)程對(duì)端是不感知的,而且這個(gè)讀寫(xiě)過(guò)程的大部分工作是由硬件而不是軟件完成的。而使用了RDMA技術(shù)之后,這一過(guò)程可以簡(jiǎn)單的表示成下面的示意圖:
同樣是把本端內(nèi)存中的一段數(shù)據(jù),復(fù)制到對(duì)端內(nèi)存中,在使用了RDMA技術(shù)時(shí),兩端的CPU幾乎不用參與數(shù)據(jù)傳輸過(guò)程(只參與控制面)。本端的網(wǎng)卡直接從內(nèi)存的用戶(hù)空間DMA拷貝數(shù)據(jù)到內(nèi)部存儲(chǔ)空間,然后硬件進(jìn)行各層報(bào)文的組裝后,通過(guò)物理鏈路發(fā)送到對(duì)端網(wǎng)卡。對(duì)端的RDMA網(wǎng)卡收到數(shù)據(jù)后,剝離各層報(bào)文頭和校驗(yàn)碼,通過(guò)DMA將數(shù)據(jù)直接拷貝到用戶(hù)空間內(nèi)存中。RDMA將服務(wù)器應(yīng)用數(shù)據(jù)直接由內(nèi)存?zhèn)鬏數(shù)街悄芫W(wǎng)卡(固化RDMA協(xié)議),由智能網(wǎng)卡硬件完成RDMA傳輸報(bào)文封裝,解放了操作系統(tǒng)和CPU。
2.2 核心優(yōu)勢(shì)
1)Zero Copy(零拷貝):無(wú)需將數(shù)據(jù)拷貝到操作系統(tǒng)內(nèi)核態(tài)并處理數(shù)據(jù)包頭部的過(guò)程,傳輸延遲會(huì)顯著減小。
2)Kernel Bypass(內(nèi)核旁路) :不需要操作系統(tǒng)內(nèi)核參與,數(shù)據(jù)通路中沒(méi)有繁瑣的處理報(bào)頭邏輯,不僅會(huì)使延遲降低,而且也大大節(jié)省了CPU的資源。
3)Protocol Offload(協(xié)議卸載):RDMA通信可以在遠(yuǎn)端節(jié)點(diǎn)CPU不參與通信的情況下,對(duì)內(nèi)存進(jìn)行讀寫(xiě),這實(shí)際上是把報(bào)文封裝和解析放到硬件中做了。對(duì)比傳統(tǒng)的以太網(wǎng)通信,雙方CPU都必須參與各層報(bào)文的解析,如果數(shù)據(jù)量大且交互頻繁,對(duì)CPU來(lái)講將是一筆不小的開(kāi)銷(xiāo),而這些被占用的CPU計(jì)算資源本可以做一些更有價(jià)值的工作。
相比于傳統(tǒng)以太網(wǎng),RDMA技術(shù)同時(shí)做到了更高帶寬和更低時(shí)延,所以其在帶寬敏感的場(chǎng)景——比如海量數(shù)據(jù)的交互,時(shí)延敏感——比如多個(gè)計(jì)算節(jié)點(diǎn)間的數(shù)據(jù)同步的場(chǎng)景下得以發(fā)揮其作用。
2.3 RDMA網(wǎng)絡(luò)基本分類(lèi)
目前,大致有三類(lèi)RDMA網(wǎng)絡(luò),分別是InfiniBand、RoCE(RDMA over Converged Ethernet,RDMA過(guò)融合以太網(wǎng))和iWARP(RDMA over TCP,互聯(lián)網(wǎng)廣域RDMA協(xié)議)。RDMA最早專(zhuān)屬于Infiniband網(wǎng)絡(luò)架構(gòu),從硬件級(jí)別保證可靠傳輸,而RoCE和iWARP都是基于以太網(wǎng)的RDMA技術(shù)。
1)InfiniBand
InfiniBand是一種專(zhuān)為RDMA設(shè)計(jì)的網(wǎng)絡(luò), 由IBTA(InfiniBand Trade Association)在2000年提出,其規(guī)定了一整套完整的鏈路層到傳輸層(非傳統(tǒng)OSI七層模型的傳輸層,而是位于其之上)規(guī)范,主要采用Cut-Through轉(zhuǎn)發(fā)模式(直通轉(zhuǎn)發(fā)模式)以減少轉(zhuǎn)發(fā)時(shí)延,基于Credit的流控機(jī)制(基于信用的流控機(jī)制)以保證無(wú)丟包。但I(xiàn)B也存在不可避免的成本缺陷。由于其無(wú)法兼容現(xiàn)有以太網(wǎng),除了需要支持IB的網(wǎng)卡之外,企業(yè)如果想部署的話還要重新購(gòu)買(mǎi)配套的交換設(shè)備。
2)RoCE
RoCE有兩個(gè)版本:RoCEv1基于以太網(wǎng)鏈路層實(shí)現(xiàn),v1版本網(wǎng)絡(luò)層仍然使用了IB規(guī)范,而v2使用了UDP+IP作為網(wǎng)絡(luò)層,使得數(shù)據(jù)包也可以被路由,只能在L2層傳輸;RoCEv2基于UDP承載RDMA,可部署于三層網(wǎng)絡(luò)。
RoCE可以被認(rèn)為是IB的“低成本解決方案”,部署RoCE網(wǎng)絡(luò)需要支持RDMA專(zhuān)用智能網(wǎng)卡,不需要專(zhuān)用交換機(jī)和路由器(支持ECN/PFC等技術(shù),降低丟包率),其建網(wǎng)成本在三種rdma網(wǎng)絡(luò)模型中最低。
3)iWARP
傳輸層為iWARP協(xié)議,iWARP是以太網(wǎng)TCP / IP協(xié)議中TCP層實(shí)現(xiàn),支持L2 / L3層傳輸,大型組網(wǎng)TCP連接會(huì)消耗大量CPU,所以應(yīng)用很少。
iWARP只要求網(wǎng)卡支持RDMA,不需要專(zhuān)用交換機(jī)和路由器,建網(wǎng)成本介于InfiniBand和RoCE之間。
2.4 實(shí)現(xiàn)對(duì)比
Infiniband技術(shù)先進(jìn),但是價(jià)格高昂,應(yīng)用局限在HPC高性能計(jì)算領(lǐng)域,隨著RoCE和iWARPC的出現(xiàn),RDMA的使用成本進(jìn)一步,從而推動(dòng)了RDMA技術(shù)普及。
在高性能存儲(chǔ)、計(jì)算數(shù)據(jù)中心中采用這三類(lèi)RDMA網(wǎng)絡(luò),都可以大幅度降低數(shù)據(jù)傳輸時(shí)延,并為應(yīng)用程序提供更高的CPU資源可用性。
其中InfiniBand網(wǎng)絡(luò)為數(shù)據(jù)中心帶來(lái)極致的性能,傳輸時(shí)延低至百納秒,比以太網(wǎng)設(shè)備延時(shí)要低一個(gè)量級(jí);
RoCE和iWARP網(wǎng)絡(luò)為數(shù)據(jù)中心帶來(lái)超高性?xún)r(jià)比,基于以太網(wǎng)承載RDMA,充分利用了RDMA的高性能和低CPU使用率等優(yōu)勢(shì),同時(shí)網(wǎng)絡(luò)建設(shè)成本也不高;
基于UDP協(xié)議的RoCE比基于TCP協(xié)議的iWARP性能更好,結(jié)合無(wú)損以太網(wǎng)的流控技術(shù),解決了丟包敏感的問(wèn)題,RoCE網(wǎng)絡(luò)已廣泛應(yīng)用于各行業(yè)高性能數(shù)據(jù)中心中。
RDMA在家寬網(wǎng)絡(luò)中的應(yīng)用探索
在“網(wǎng)絡(luò)強(qiáng)國(guó)、數(shù)字中國(guó)、智慧社會(huì)”等國(guó)家戰(zhàn)略的全面推進(jìn)下,數(shù)字化、網(wǎng)絡(luò)化、智能化的數(shù)字家庭已經(jīng)成為智慧城市理念在家庭層面的體現(xiàn),“十四五”規(guī)劃和2035遠(yuǎn)景目標(biāo)中,數(shù)字家庭被定位為構(gòu)筑“美好數(shù)字生活新圖景”的重要組成部分,在新一代信息技術(shù)的支持下,數(shù)字家庭正向智慧家庭不斷演進(jìn),完成從“數(shù)字”到“智慧”的轉(zhuǎn)變。當(dāng)前,中國(guó)智慧家庭市場(chǎng)規(guī)模逐年擴(kuò)大,中國(guó)已成為全球最大的智能家居市場(chǎng)消費(fèi)國(guó),占據(jù)全球約50%~60%的市場(chǎng)份額(數(shù)據(jù)來(lái)源:CSHIA,艾梅數(shù)據(jù),國(guó)家統(tǒng)計(jì)局)。據(jù)賽迪顧問(wèn)研究預(yù)計(jì),2030年中國(guó)智慧家庭市場(chǎng)規(guī)模將會(huì)達(dá)到15700億元,2021—2030年平均復(fù)合增長(zhǎng)率(CAGR)高達(dá)14.6%。
伴隨著家寬市場(chǎng)規(guī)模的快速發(fā)展是:
① 家寬無(wú)差異化、盡力而為的服務(wù)方式與業(yè)務(wù)差異化、確定性網(wǎng)絡(luò)質(zhì)量需求間的矛盾
當(dāng)前寬帶接入對(duì)不同業(yè)務(wù)網(wǎng)絡(luò)連接不做差異化區(qū)別,以盡力而為方式提供服務(wù),在擁塞時(shí)所有業(yè)務(wù)優(yōu)先級(jí)相同,采用的處理策略相同。但業(yè)務(wù)對(duì)網(wǎng)絡(luò)質(zhì)量要求不同,對(duì)時(shí)延丟包等敏感度不同,部分時(shí)延敏感業(yè)務(wù)如游戲、云電腦等需要確定性網(wǎng)絡(luò)保障,為確保用戶(hù)體驗(yàn),在網(wǎng)絡(luò)擁塞丟包時(shí),用戶(hù)體驗(yàn)急劇下降,因此在擁塞時(shí)對(duì)此類(lèi)業(yè)務(wù)需要不同的處理策略。
② 帶寬提升與長(zhǎng)肥管道場(chǎng)景體驗(yàn)劣化間的矛盾
根據(jù)工信部統(tǒng)計(jì)數(shù)據(jù),全國(guó)100Mbps以上寬帶用戶(hù)占比超過(guò)94%,但用戶(hù)在訪問(wèn)遠(yuǎn)距離內(nèi)容時(shí)仍存在卡頓、下載速度慢的問(wèn)題。其原因不是接入帶寬不足,而是底層TCP協(xié)議擁塞控制算法在長(zhǎng)肥管道(LFN)場(chǎng)景下的天然不足。TCP為幾十年前的協(xié)議,已無(wú)法適應(yīng)目前的網(wǎng)絡(luò)狀態(tài)與應(yīng)用需求,亟需新的協(xié)議與算法來(lái)確保長(zhǎng)肥管道場(chǎng)景下的業(yè)務(wù)體驗(yàn)。
綜上,從行業(yè)趨勢(shì)上來(lái)看,在家寬網(wǎng)絡(luò)算力化升級(jí)的浪潮之下,RDMA技術(shù)相比于TCP而言,能夠?qū)崿F(xiàn)計(jì)算和網(wǎng)絡(luò)的深度融合。將數(shù)據(jù)直接從一臺(tái)計(jì)算機(jī)的內(nèi)存?zhèn)鬏數(shù)搅硪慌_(tái)計(jì)算機(jī),無(wú)需雙方操作系統(tǒng)的介入,不需要經(jīng)過(guò)處理器耗時(shí)的處理,最終達(dá)到高帶寬、低時(shí)延和低資源占用率的效果。
參考文獻(xiàn)
[1]https://zhuanlan.zhihu.com/p/138874738, 2021.12.24.
[2]https://blog.csdn.net/meihualing/article/details/129506207, 2023.5.5.