• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于RDMA的區(qū)塊傳輸機(jī)制設(shè)計(jì)與實(shí)現(xiàn)

      2023-02-24 05:01:24棟,王彪,徐云*
      計(jì)算機(jī)應(yīng)用 2023年2期
      關(guān)鍵詞:原語(yǔ)內(nèi)存區(qū)塊

      孫 棟,王 彪,徐 云*

      (1.中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027;2.安徽省高性能計(jì)算重點(diǎn)實(shí)驗(yàn)室(中國(guó)科學(xué)技術(shù)大學(xué)),合肥 230027)

      0 引言

      區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本,以區(qū)塊的形式維護(hù)已完成交易,并使用前一個(gè)區(qū)塊哈希來(lái)進(jìn)行鏈接,記錄已完成交易的順序,系統(tǒng)中的節(jié)點(diǎn)通過(guò)共識(shí)機(jī)制保證分布式賬本的一致性。近年來(lái),隨著區(qū)塊鏈數(shù)據(jù)量和業(yè)務(wù)請(qǐng)求率的增加,對(duì)區(qū)塊鏈系統(tǒng)可擴(kuò)展性的要求越來(lái)越高。為此,區(qū)塊鏈的性能分析和共識(shí)機(jī)制得到了廣泛的研究,早期的基于Proof of Work共識(shí)機(jī)制的區(qū)塊鏈,如比特幣[1]、以太坊[2]等,需要大量的計(jì)算資源進(jìn)行哈希計(jì)算,導(dǎo)致區(qū)塊鏈系統(tǒng)的交易吞吐量低、出塊間隔時(shí)間長(zhǎng)。由于在共識(shí)機(jī)制研究[3-5]上的投入,區(qū)塊鏈系統(tǒng)的出塊間隔時(shí)間已經(jīng)從數(shù)分鐘減少到秒[6],甚至是毫秒級(jí)別。在出塊速度得到極大提升的情況下,區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)間區(qū)塊傳輸?shù)难舆t逐漸成為區(qū)塊鏈可擴(kuò)展性提升的瓶頸。

      在區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)生成一個(gè)區(qū)塊之后,需要將其傳輸給網(wǎng)絡(luò)中的其他節(jié)點(diǎn),從而讓這個(gè)區(qū)塊得到全網(wǎng)共識(shí)。根據(jù)Bonneau 等[7]的研究,在節(jié)點(diǎn)發(fā)現(xiàn)塊和所有其他節(jié)點(diǎn)接收塊之間的任何延遲都會(huì)增加臨時(shí)分叉的可能性,當(dāng)分叉過(guò)多或分叉無(wú)法解決時(shí),區(qū)塊鏈系統(tǒng)就會(huì)變得不穩(wěn)定,所以降低區(qū)塊傳輸延遲是提高區(qū)塊鏈系統(tǒng)可擴(kuò)展性的重要一環(huán)。盡管近年來(lái)研究者為降低區(qū)塊傳輸延遲付出了大量的努力,但是傳統(tǒng)的區(qū)塊傳輸方案是基于TCP(Transmission Control Protocol)技術(shù)來(lái)設(shè)計(jì)的,而TCP 協(xié)議棧在接收、發(fā)送報(bào)文時(shí),內(nèi)核需要做多次上下文切換,還需要至少三次的數(shù)據(jù)拷貝并依賴(lài)CPU 進(jìn)行協(xié)議封裝,使得基于TCP 的區(qū)塊傳輸機(jī)制在降低延遲上難以取得較好的效果。

      與此同時(shí),新興的先進(jìn)硬件技術(shù)遠(yuǎn)程直接內(nèi)存訪(fǎng)問(wèn)(Remote Direct Memory Access,RDMA)[8]為數(shù)據(jù)密集型應(yīng)用的高性能數(shù)據(jù)傳輸提供了新的機(jī)會(huì)。RDMA 是一種新的直接內(nèi)存訪(fǎng)問(wèn)技術(shù),讓?xiě)?yīng)用程序可以直接存取遠(yuǎn)程計(jì)算機(jī)的內(nèi)存,無(wú)需對(duì)方處理器參與,通過(guò)零拷貝和內(nèi)核繞過(guò)技術(shù)實(shí)現(xiàn)了高帶寬和低延遲。隨著InfiniBand 等新硬件的成本下降以及RoCE(RDMA over Converged Ethernet)技術(shù)的成熟,基于RDMA 構(gòu)建的高性能系統(tǒng)逐漸顯現(xiàn)出優(yōu)勢(shì),如FaRM(Fast Remote Memory)[9]、DrTM[10],同時(shí),基于RDMA 的區(qū)塊鏈系統(tǒng)通信優(yōu)化研究已經(jīng)漸漸展開(kāi),如BAASH(Blockchain-As-AService for HPC)[11]。

      本文通過(guò)RDMA 為區(qū)塊鏈系統(tǒng)提供高性能通信,設(shè)計(jì)并實(shí)現(xiàn)了基于RDMA 的低延遲區(qū)塊傳輸機(jī)制。首先分析了其不同通信原語(yǔ)的特點(diǎn),并結(jié)合區(qū)塊鏈的區(qū)塊傳輸場(chǎng)景,選擇了適合的通信原語(yǔ);然后基于選擇的通信原語(yǔ)的特性,設(shè)計(jì)了用于區(qū)塊信息共享的區(qū)塊目錄結(jié)構(gòu);結(jié)合單邊原語(yǔ)和區(qū)塊目錄結(jié)構(gòu),設(shè)計(jì)并實(shí)現(xiàn)了基本的區(qū)塊傳輸過(guò)程;最后分別在真實(shí)環(huán)境和模擬環(huán)境中對(duì)傳輸機(jī)制的性能進(jìn)行了分析,結(jié)果表明本文方案能夠有效地降低現(xiàn)有區(qū)塊傳輸機(jī)制的延遲,提高現(xiàn)有區(qū)塊鏈系統(tǒng)的可擴(kuò)展性。

      1 相關(guān)研究

      在區(qū)塊鏈網(wǎng)絡(luò)中,每當(dāng)節(jié)點(diǎn)產(chǎn)生了一個(gè)新區(qū)塊或接收到一個(gè)由其他節(jié)點(diǎn)產(chǎn)生的新區(qū)塊,首先需要對(duì)這個(gè)區(qū)塊進(jìn)行驗(yàn)證,再將區(qū)塊傳輸給它的鄰居節(jié)點(diǎn),通過(guò)共識(shí)機(jī)制完成區(qū)塊鏈賬本的一致性維護(hù),整個(gè)過(guò)程中存在大量的數(shù)據(jù)通信,其中就包含區(qū)塊傳輸?,F(xiàn)有的區(qū)塊鏈系統(tǒng)的通信機(jī)制根據(jù)其依賴(lài)的底層通信技術(shù)不同可以分為基于TCP 的通信機(jī)制和基于RDMA 的通信機(jī)制兩類(lèi)。傳統(tǒng)的基于TCP 的通信機(jī)制發(fā)展時(shí)間較長(zhǎng),得到了廣泛研究,經(jīng)過(guò)大量的優(yōu)化性能已經(jīng)得到了較大提升。近年來(lái),隨著在高性能計(jì)算機(jī)上RDMA 技術(shù)的應(yīng)用與研究的展開(kāi),利用RDMA 技術(shù)構(gòu)建高性能區(qū)塊鏈系統(tǒng)的研究也逐漸興起。

      Bi 等[12]提出了一種通過(guò)選擇最近的鄰居作為對(duì)等體來(lái)加速塊傳播的方案,其中最近的鄰居由傳輸延遲決定,使得總體的區(qū)塊廣播延遲得到降低;Ayinala 等[13]為區(qū)塊鏈網(wǎng)絡(luò)提出了一種名為PiChu 的區(qū)塊傳輸方案,該方案通過(guò)驗(yàn)證區(qū)塊報(bào)頭的一致性,并在P2P(Peer-to-Peer)網(wǎng)絡(luò)上通過(guò)小塊增量轉(zhuǎn)發(fā)塊體,來(lái)加速塊的傳播;Zhao 等[14]提出了用交易哈希來(lái)替換整個(gè)交易的輕量區(qū)塊結(jié)構(gòu)用于區(qū)塊傳輸,并且通過(guò)對(duì)交易丟失進(jìn)行預(yù)測(cè),降低用于傳輸交易信息的額外通信次數(shù),從而到達(dá)降低網(wǎng)絡(luò)傳輸數(shù)據(jù)量的目的。上述的研究為降低區(qū)塊鏈系統(tǒng)的通信數(shù)據(jù)量、通信延遲做出了一定的貢獻(xiàn),但仍是基于TCP 方案來(lái)設(shè)計(jì)實(shí)現(xiàn)的,受到底層網(wǎng)絡(luò)協(xié)議棧的限制,所以對(duì)于通信延遲的優(yōu)化相對(duì)有限。

      Huang 等[6]為EOS(Enterprise Operation System)區(qū)塊鏈設(shè)計(jì)了基于RDMA 原語(yǔ)的底層通信過(guò)程,用雙邊原語(yǔ)來(lái)實(shí)現(xiàn)原有系統(tǒng)的各類(lèi)消息,并通過(guò)預(yù)注冊(cè)內(nèi)存池等方案實(shí)現(xiàn)了低延遲、低CPU 占用的EOS 節(jié)點(diǎn)啟動(dòng)過(guò)程,使啟動(dòng)過(guò)程區(qū)塊同步用時(shí)降低20%。Rüsch 等[15]提出了用于BFT(Byzantine Fault Tolerance)協(xié)議的基于RDMA 的通信框架,該框架模擬了多路復(fù)用技術(shù),使一個(gè)線(xiàn)程可以處理多個(gè)連接,使得BFT 協(xié)議的通信延遲能夠極大降低。Wang 等[16]實(shí)現(xiàn)了基于RDMA 的Paxos 協(xié)議,利用單邊原語(yǔ)使得共識(shí)協(xié)議的延遲最多為傳統(tǒng)共識(shí)協(xié)議的1/32。以上研究充分說(shuō)明了RDMA 技術(shù)在區(qū)塊鏈系統(tǒng)的通信優(yōu)化上存在的優(yōu)勢(shì),也為進(jìn)一步的研究提供了良好的基礎(chǔ)。

      傳統(tǒng)的基于TCP 的區(qū)塊傳輸方案對(duì)區(qū)塊傳輸?shù)难舆t的優(yōu)化上限較低,且現(xiàn)有優(yōu)化方案不具有普適性,在某些情況下甚至?xí)档屯ㄐ判阅?。基于RDMA 技術(shù)的區(qū)塊鏈系統(tǒng)優(yōu)化研究目前還處于起步階段,雖然在降低區(qū)塊鏈系統(tǒng)中的區(qū)塊傳輸延遲的研究上已經(jīng)取得了一定的成果,但是現(xiàn)有研究缺乏對(duì)區(qū)塊傳輸過(guò)程與RDMA 原語(yǔ)的針對(duì)性分析與設(shè)計(jì),未能充分發(fā)揮RDMA 原語(yǔ)的在區(qū)塊傳輸上的優(yōu)勢(shì)。本文分析了區(qū)塊傳輸過(guò)程的特點(diǎn),并依據(jù)其特點(diǎn)選擇了合適的通信原語(yǔ),充分利用單邊原語(yǔ)的特點(diǎn)來(lái)進(jìn)行數(shù)據(jù)傳輸機(jī)制的設(shè)計(jì),能夠穩(wěn)定地提升現(xiàn)有區(qū)塊鏈系統(tǒng)的性能。

      2 本文方法

      2.1 方法概述

      本文方法的總體框架如圖1 所示,傳統(tǒng)的區(qū)塊鏈框架分為區(qū)塊鏈管理層和傳輸層兩個(gè)部分,由于現(xiàn)有的區(qū)塊鏈傳輸層的TCP 技術(shù)限制了區(qū)塊傳輸?shù)男阅?,本文設(shè)計(jì)了基于RDMA 技術(shù)的傳輸層來(lái)進(jìn)行替換。每當(dāng)區(qū)塊鏈系統(tǒng)中產(chǎn)生了一個(gè)新的區(qū)塊,就通過(guò)傳輸層的內(nèi)存管理將區(qū)塊存儲(chǔ)到注冊(cè)內(nèi)存中,并將此內(nèi)存的信息通過(guò)RDMA 原語(yǔ)發(fā)送給其他鄰居節(jié)點(diǎn);鄰居節(jié)點(diǎn)得到區(qū)塊的信息,若需要此區(qū)塊則可以再次通過(guò)RDMA 原語(yǔ)從相應(yīng)的注冊(cè)內(nèi)存中遠(yuǎn)程讀取此區(qū)塊,從而完成區(qū)塊的傳輸。

      圖1 本文方法的總體框架Fig.1 Overall framework of the proposed method

      如圖2(a)所示,基于TCP 的區(qū)塊傳輸方案中,當(dāng)節(jié)點(diǎn)A收到一個(gè)新的區(qū)塊,將此區(qū)塊傳輸給節(jié)點(diǎn)B 的基本傳輸過(guò)程由三次通信組成:A 得到新的區(qū)塊,發(fā)送一個(gè)包含區(qū)塊的id、hash 的消息給所有鄰接點(diǎn);B 收到消息之后根據(jù)id、hash 判斷是否需要這個(gè)區(qū)塊,若需要?jiǎng)t向A 發(fā)送消息獲取區(qū)塊;A 收到消息之后,再將消息中指定的區(qū)塊發(fā)送給B。如圖2(b)所示,基于RDMA 的區(qū)塊傳輸方案相較于傳統(tǒng)的基于TCP 的區(qū)塊傳輸方案,將區(qū)塊傳輸過(guò)程中的三次TCP 通信優(yōu)化為通過(guò)兩次RDMA 原語(yǔ)通信即可完成,同時(shí)RDMA 原語(yǔ)的單次通信延遲也低于TCP 消息的延遲。所以從理論上分析,基于RDMA 的區(qū)塊傳輸方案能夠大幅降低區(qū)塊鏈系統(tǒng)中區(qū)塊傳輸?shù)难舆t。

      圖2 兩種區(qū)塊傳輸方案的基本過(guò)程Fig.2 Basic processes of two block transmission schemes

      2.2 RDMA原語(yǔ)選擇

      RDMA 網(wǎng)絡(luò)傳輸主要有兩類(lèi)通信原語(yǔ):send/receive 雙邊原語(yǔ)和read/write 單邊原語(yǔ),兩種原語(yǔ)在通信模式、效率及使用場(chǎng)景上存在一定的差別。兩類(lèi)原語(yǔ)所需要的內(nèi)存管理方式存在一定差異,其中,send/receive 雙邊原語(yǔ)采用內(nèi)存復(fù)制方式,read/write 單邊原語(yǔ)采用內(nèi)存注冊(cè)方式。同時(shí)兩種內(nèi)存機(jī)制在時(shí)間開(kāi)銷(xiāo)上存在一定的差異,采用內(nèi)存復(fù)制方式,在傳輸過(guò)程中數(shù)據(jù)復(fù)制時(shí)間開(kāi)銷(xiāo)主要與復(fù)制的內(nèi)存空間大小相關(guān),而在采用內(nèi)存注冊(cè)方式時(shí),調(diào)用內(nèi)存注冊(cè)接口同樣會(huì)帶來(lái)一定的時(shí)間開(kāi)銷(xiāo),此時(shí)間開(kāi)銷(xiāo)主要與內(nèi)存注冊(cè)接口在內(nèi)核態(tài)的效率相關(guān)。

      為了對(duì)比不同數(shù)據(jù)量下兩者的性能,本文對(duì)不同數(shù)據(jù)量下兩種內(nèi)存操作的耗時(shí)進(jìn)行了測(cè)試。通過(guò)測(cè)試分析,隨著操作內(nèi)存空間大小的增加,內(nèi)存復(fù)制操作的耗時(shí)增速遠(yuǎn)超內(nèi)存注冊(cè)操作的耗時(shí)。進(jìn)一步說(shuō)明了內(nèi)存注冊(cè)和read/write 原語(yǔ)相對(duì)于內(nèi)存復(fù)制和其對(duì)應(yīng)的send/receive 原語(yǔ)更適合于數(shù)據(jù)量更大的傳輸過(guò)程,同時(shí)在區(qū)塊鏈系統(tǒng)中,區(qū)塊普遍為100 KB~ 1 MB 大小,如比特幣中區(qū)塊平均大小為1 MB,所以read/write 方式更適合于區(qū)塊鏈系統(tǒng)中的區(qū)塊傳輸過(guò)程。

      此外,這兩種通信原語(yǔ)的區(qū)別還在于read/write 原語(yǔ)是單邊操作,這意味著采用這種方式來(lái)進(jìn)行通信時(shí),當(dāng)A 節(jié)點(diǎn)將區(qū)塊信息通過(guò)write 原語(yǔ)寫(xiě)到B 內(nèi)存中時(shí),這個(gè)操作不需要B 節(jié)點(diǎn)參與,而read 原語(yǔ)完成后,A 節(jié)點(diǎn)的CPU 就不需要再參與之后的通信過(guò)程,之后B 節(jié)點(diǎn)可以直接繞過(guò)A 節(jié)點(diǎn)的CPU完成數(shù)據(jù)的讀取。這樣的特性是send/receive 原語(yǔ)所不具備的,而降低區(qū)塊傳輸過(guò)程中對(duì)CPU 的占用同樣能夠?yàn)閰^(qū)塊鏈系統(tǒng)帶來(lái)性能上的提升。

      綜合以上兩個(gè)因素,在基于RDMA 進(jìn)行區(qū)塊傳輸機(jī)制設(shè)計(jì)時(shí),read/write 單邊原語(yǔ)相較于send/receive 雙邊原語(yǔ)具有更大的優(yōu)勢(shì),所以接下來(lái)的區(qū)塊傳輸過(guò)程的設(shè)計(jì)將圍繞read/write 單邊原語(yǔ)的特性來(lái)展開(kāi)。

      2.3 區(qū)塊目錄結(jié)構(gòu)設(shè)計(jì)

      在基于read/write 原語(yǔ)進(jìn)行區(qū)塊傳輸機(jī)制的設(shè)計(jì)時(shí),當(dāng)A節(jié)點(diǎn)新產(chǎn)生一個(gè)區(qū)塊,需要通過(guò)RDMA 網(wǎng)卡注冊(cè)一塊內(nèi)存用于存儲(chǔ)這個(gè)區(qū)塊,得到這塊內(nèi)存的地址、空間大小以及鑰匙,再將這些信息與區(qū)塊id、區(qū)塊hash 一起通過(guò)write 原語(yǔ)寫(xiě)到B節(jié)點(diǎn)的內(nèi)存中。write 原語(yǔ)能夠成功執(zhí)行的前提是需要有一塊在B 節(jié)點(diǎn)上的注冊(cè)內(nèi)存,且A 節(jié)點(diǎn)需要知道此內(nèi)存的虛擬地址以及訪(fǎng)問(wèn)鑰匙。所以每次需要向B 節(jié)點(diǎn)的內(nèi)存寫(xiě)入信息時(shí),必須先注冊(cè)內(nèi)存,B 節(jié)點(diǎn)再發(fā)送消息通知A 節(jié)點(diǎn)這塊內(nèi)存的地址等信息,然后A 節(jié)點(diǎn)通過(guò)write 原語(yǔ)寫(xiě)入數(shù)據(jù),如前所述,內(nèi)存注冊(cè)同樣存在時(shí)間開(kāi)銷(xiāo),頻繁的內(nèi)存注冊(cè)會(huì)降低整個(gè)傳輸過(guò)程的效率。

      為此,本文采用了預(yù)注冊(cè)內(nèi)存的方式,設(shè)計(jì)了可復(fù)用區(qū)塊目錄結(jié)構(gòu),用于讓鄰居節(jié)點(diǎn)寫(xiě)入最新的區(qū)塊信息。在區(qū)塊鏈系統(tǒng)中,區(qū)塊在相鄰節(jié)點(diǎn)之間的傳輸所需要的時(shí)間是遠(yuǎn)小于區(qū)塊的產(chǎn)生時(shí)間間隔的,且一個(gè)區(qū)塊在產(chǎn)生的一段時(shí)間之后就不需要再存儲(chǔ)在內(nèi)存中,所以節(jié)點(diǎn)中用于write 原語(yǔ)寫(xiě)入?yún)^(qū)塊信息的注冊(cè)內(nèi)存是可以復(fù)用的。若節(jié)點(diǎn)在開(kāi)始通信之前預(yù)注冊(cè)N塊內(nèi)存,用于讓鄰居節(jié)點(diǎn)寫(xiě)入新產(chǎn)生區(qū)塊的信息,并且將內(nèi)存的信息先發(fā)送給鄰居節(jié)點(diǎn),同時(shí)記錄每一塊內(nèi)存的信息是否過(guò)期就可以重復(fù)利用這N塊內(nèi)存,同時(shí)也避免了在每一次通信前注冊(cè)內(nèi)存帶來(lái)的時(shí)間消耗,這N塊內(nèi)存即組成了用于在節(jié)點(diǎn)間共享區(qū)塊信息區(qū)塊目錄。預(yù)注冊(cè)的可復(fù)用區(qū)塊目錄一方面降低內(nèi)存注冊(cè)的時(shí)間代價(jià),另一方面內(nèi)存的復(fù)用簡(jiǎn)化了對(duì)注冊(cè)內(nèi)存的管理。

      如上所述,每個(gè)節(jié)點(diǎn)需要為鄰居節(jié)點(diǎn)需要注冊(cè)N塊內(nèi)存mem1,mem2,…,memN,用于讓鄰居更新區(qū)塊的信息。每塊內(nèi)存中存儲(chǔ)的信息都有6 個(gè)字段,鄰居節(jié)點(diǎn)可以根據(jù)自己產(chǎn)生或接收新區(qū)塊的情況更新這N塊注冊(cè)內(nèi)存中存儲(chǔ)的信息,字段的內(nèi)容及意義如表1 所示。

      表1 區(qū)塊目錄存儲(chǔ)的字段Tab.1 Fields stored in block catalogue

      如圖3 所示,每個(gè)節(jié)點(diǎn)需要為所有的鄰居預(yù)注冊(cè)N塊注冊(cè)內(nèi)存,構(gòu)成用于共享區(qū)塊信息的區(qū)塊目錄,將N塊內(nèi)存的寫(xiě)入權(quán)限開(kāi)放給鄰居節(jié)點(diǎn),鄰居節(jié)點(diǎn)可以通過(guò)write 原語(yǔ)遠(yuǎn)程更新區(qū)塊目錄,同時(shí)每個(gè)節(jié)點(diǎn)可以根據(jù)內(nèi)存中的區(qū)塊目錄存儲(chǔ)的信息查看需要哪些區(qū)塊,并通過(guò)read 原語(yǔ)遠(yuǎn)程讀取區(qū)塊數(shù)據(jù)。

      圖3 區(qū)塊信息共享Fig.3 Block information sharing

      2.4 基于RDMA單邊原語(yǔ)的區(qū)塊傳輸過(guò)程

      在為鄰居節(jié)點(diǎn)預(yù)注冊(cè)N塊用于存儲(chǔ)區(qū)塊信息的內(nèi)存后,節(jié)點(diǎn)需要將這N塊內(nèi)存的地址等信息發(fā)送給鄰居節(jié)點(diǎn),鄰居節(jié)點(diǎn)可以將數(shù)據(jù)遠(yuǎn)程寫(xiě)入這N塊內(nèi)存。在之后的通信中,鄰居節(jié)點(diǎn)在產(chǎn)生新的區(qū)塊時(shí),可以直接根據(jù)這N塊注冊(cè)內(nèi)存的注冊(cè)信息通過(guò)write 原語(yǔ)將新區(qū)塊的id、hash、addr、length、key信息寫(xiě)入其中一塊注冊(cè)內(nèi)存,并標(biāo)記此區(qū)塊數(shù)據(jù)為已被更新的,更新區(qū)塊目錄的具體過(guò)程如圖4 所示。

      圖4 基于單邊原語(yǔ)的區(qū)塊目錄更新過(guò)程Fig.4 Updating process of block catalogue based on one-side primitives

      節(jié)點(diǎn)在得到其鄰居節(jié)點(diǎn)更新的區(qū)塊目錄信息后,便可以根據(jù)區(qū)塊目錄信息判定是否需要這些區(qū)塊,若需要區(qū)塊則可以根據(jù)區(qū)塊目錄中的信息通過(guò)read 原語(yǔ)到相應(yīng)的鄰居節(jié)點(diǎn)的內(nèi)存中讀取區(qū)塊,從而完成了一個(gè)區(qū)塊從產(chǎn)生到傳輸?shù)饺W(wǎng)所有節(jié)點(diǎn)的過(guò)程。區(qū)塊傳輸?shù)木唧w過(guò)程如圖5 所示。

      圖5 基于單邊原語(yǔ)的區(qū)塊傳輸過(guò)程Fig.5 Block transmission process based on one-side primitives

      3 實(shí)驗(yàn)與結(jié)果分析

      本章將通過(guò)實(shí)驗(yàn)分析兩種內(nèi)存操作的性能作為兩類(lèi)RDMA 原語(yǔ)對(duì)比的依據(jù),并評(píng)估基于RDMA 的區(qū)塊傳輸機(jī)制對(duì)于現(xiàn)有區(qū)塊鏈系統(tǒng)的性能的影響,并與現(xiàn)有的區(qū)塊傳輸機(jī)制進(jìn)行對(duì)比。為此,分別對(duì)兩種方案在真實(shí)環(huán)境中測(cè)試了點(diǎn)到點(diǎn)的區(qū)塊傳輸延遲,在模擬環(huán)境中測(cè)試了多到多區(qū)塊傳輸?shù)难舆t以及區(qū)塊鏈產(chǎn)生臨時(shí)分叉的個(gè)數(shù)。

      3.1 數(shù)據(jù)復(fù)制與內(nèi)存注冊(cè)耗時(shí)對(duì)比實(shí)驗(yàn)

      為了針對(duì)區(qū)塊鏈系統(tǒng)的區(qū)塊傳輸過(guò)程選擇更適合的RDMA 數(shù)據(jù)傳輸方式,需要對(duì)send/receive 方式中的內(nèi)存復(fù)制操作和read/write 方式中的內(nèi)存注冊(cè)操作在不同數(shù)據(jù)量下的耗時(shí)進(jìn)行測(cè)試,分析得到更適合于大數(shù)據(jù)量的數(shù)據(jù)傳輸方式。為此,本實(shí)驗(yàn)分別測(cè)試了兩種操作在從1 KB 至1 MB 的內(nèi)存大小的情況下的平均耗時(shí)。

      實(shí)驗(yàn)結(jié)果如圖6 所示,從圖6 的測(cè)試結(jié)果可以看出,隨著操作內(nèi)存空間的大小的增加,內(nèi)存復(fù)制操作的耗時(shí)增加的幅度較大;相反,內(nèi)存注冊(cè)操作的耗時(shí),只是隨著內(nèi)存空間大小的增大緩慢增加。該測(cè)試結(jié)果說(shuō)明,與兩種內(nèi)存管理方式相應(yīng)的兩種通信原語(yǔ)中,send/receive 原語(yǔ)更適用于小塊數(shù)據(jù)的傳輸,而read/write 原語(yǔ)更適合大塊數(shù)據(jù)。

      圖6 不同數(shù)據(jù)量時(shí)的復(fù)制與注冊(cè)操作耗時(shí)對(duì)比Fig.6 Comparison of time consumed by copy and register operations under different data sizes

      3.2 真實(shí)環(huán)境中節(jié)點(diǎn)間區(qū)塊傳輸實(shí)驗(yàn)

      真實(shí)環(huán)境中的實(shí)驗(yàn)在兩臺(tái)配置有RDMA 網(wǎng)卡的服務(wù)器上進(jìn)行,兩臺(tái)服務(wù)器配置相同,具體配置如表2 所示。

      表2 實(shí)驗(yàn)環(huán)境配置Tab.2 Experimental environment configuration

      比特幣中的區(qū)塊傳輸機(jī)制是基于TCP 的區(qū)塊傳輸機(jī)制的經(jīng)典實(shí)現(xiàn),因此為了比較基于RDMA 的區(qū)塊傳輸機(jī)制與基于TCP 的區(qū)塊傳輸機(jī)制的性能,并分析所提出的區(qū)塊傳輸機(jī)制對(duì)現(xiàn)有區(qū)塊鏈系統(tǒng)的影響,實(shí)驗(yàn)將對(duì)本文所提出區(qū)塊傳輸機(jī)制與比特幣系統(tǒng)中的區(qū)塊傳輸過(guò)程的性能進(jìn)行對(duì)比。首先模擬了比特幣中的區(qū)塊結(jié)構(gòu),并生成隨機(jī)的區(qū)塊作為實(shí)驗(yàn)過(guò)程傳輸?shù)膮^(qū)塊數(shù)據(jù),用于測(cè)試區(qū)塊傳輸機(jī)制的性能;再?gòu)?fù)現(xiàn)了比特幣系統(tǒng)中的區(qū)塊傳輸模塊,用于與基于RDMA 的區(qū)塊傳輸機(jī)制進(jìn)行對(duì)比。兩種區(qū)塊傳輸機(jī)制將對(duì)相同的模擬區(qū)塊進(jìn)行傳輸,從而得到兩者在性能上的差別。

      兩臺(tái)服務(wù)器分別視為區(qū)塊鏈網(wǎng)絡(luò)中的A 節(jié)點(diǎn)和B 節(jié)點(diǎn),在實(shí)驗(yàn)中,A 節(jié)點(diǎn)將以一定的時(shí)間間隔產(chǎn)生新的區(qū)塊,在產(chǎn)生新的區(qū)塊后,分別通過(guò)基于RDMA 的區(qū)塊傳輸方案和基于TCP 的區(qū)塊傳輸方案(比特幣的區(qū)塊傳輸方案)將區(qū)塊傳輸給B 節(jié)點(diǎn),A 節(jié)點(diǎn)在發(fā)送區(qū)塊之前記錄時(shí)間T1,B 節(jié)點(diǎn)完成區(qū)塊接收時(shí)記錄時(shí)間T2,從而得到節(jié)點(diǎn)間區(qū)塊傳輸?shù)难舆tT2-T1。在實(shí)驗(yàn)中,將隨機(jī)生成1 000 個(gè)區(qū)塊,測(cè)試1 000 個(gè)區(qū)塊傳輸?shù)钠骄舆t,并且通過(guò)改變區(qū)塊大小,分別測(cè)試了0.1 MB、0.3 MB、0.5 MB、1 MB 大小的區(qū)塊的傳輸延遲。

      如表3 所示,基于RDMA 的區(qū)塊傳輸方案相較于傳統(tǒng)的基于TCP 的方案,在兩節(jié)點(diǎn)間的區(qū)塊傳輸延遲得到了降低,在1 MB 大小的區(qū)塊上能夠使得節(jié)點(diǎn)間傳輸延遲降低44%。這是因?yàn)榛赗DMA 的區(qū)塊傳輸方案中將三次TCP 通信優(yōu)化為兩次RDMA 原語(yǔ)通信,并且單次RDMA 原語(yǔ)通信的延遲也低于TCP 通信,從而大幅降低了在兩節(jié)點(diǎn)間傳輸區(qū)塊的延遲。

      表3 節(jié)點(diǎn)間的傳輸延遲對(duì)比 單位:μsTab.3 Comparison of transmission latency between nodes unit:μs

      3.3 模擬環(huán)境中全網(wǎng)絡(luò)區(qū)塊傳輸實(shí)驗(yàn)

      為了測(cè)試區(qū)塊傳輸方案對(duì)區(qū)塊鏈系統(tǒng)整體的影響,需要測(cè)試在區(qū)塊鏈網(wǎng)絡(luò)中區(qū)塊全網(wǎng)傳播的延遲,但是在真實(shí)的區(qū)塊鏈網(wǎng)絡(luò)上測(cè)試改進(jìn)是幾乎不可能的,因?yàn)檫@需要更新所有網(wǎng)絡(luò)節(jié)點(diǎn)的軟件。SimBlock[17]是一個(gè)開(kāi)源的區(qū)塊鏈網(wǎng)絡(luò)模擬器,能模擬比特幣、以太坊等區(qū)塊鏈系統(tǒng)的參數(shù),如區(qū)塊鏈網(wǎng)絡(luò)大小、區(qū)塊生成間隔和網(wǎng)絡(luò)通信狀況,研究人員可以通過(guò)修改SimBlock 系統(tǒng)來(lái)模擬得到研究方案對(duì)于區(qū)塊鏈系統(tǒng)產(chǎn)生的影響。

      在實(shí)驗(yàn)中,通過(guò)SimBlock 模擬了5 000 個(gè)節(jié)點(diǎn)的區(qū)塊鏈網(wǎng)絡(luò),依據(jù)真實(shí)環(huán)境下節(jié)點(diǎn)間傳輸實(shí)驗(yàn)中得到的兩種方案在不同區(qū)塊大小的情況下的延遲,作為SimBlock 系統(tǒng)中兩個(gè)節(jié)點(diǎn)間區(qū)塊傳輸延遲參數(shù),再分別在SimBlock 系統(tǒng)中模擬生成1 000 個(gè)區(qū)塊,記錄這1 000 個(gè)區(qū)塊從產(chǎn)生到傳輸?shù)饺W(wǎng)所有節(jié)點(diǎn)所需要的時(shí)間,從而比較兩種方案的全網(wǎng)絡(luò)區(qū)塊傳輸延遲。

      如表4 所示,在SimBlock 模擬環(huán)境中,基于RDMA 的區(qū)塊傳輸方案相較于基于TCP 的方案,在1 MB 大小的區(qū)塊上,能夠?qū)⑷W(wǎng)絡(luò)傳輸延遲降低24.4%,這個(gè)結(jié)果相較于點(diǎn)到點(diǎn)傳輸實(shí)驗(yàn)的結(jié)果有所下降,這是因?yàn)閰^(qū)塊在全網(wǎng)傳輸?shù)倪^(guò)程中,延遲不僅包括網(wǎng)絡(luò)傳輸過(guò)程,還有節(jié)點(diǎn)對(duì)區(qū)塊的驗(yàn)證時(shí)間,而區(qū)塊驗(yàn)證時(shí)間并沒(méi)有因?yàn)閰^(qū)塊傳輸機(jī)制而改變。

      表4 模擬環(huán)境下全網(wǎng)絡(luò)傳輸延遲對(duì)比 單位:μsTab.4 Comparison of transmission latency among whole network in simulated environment unit:μs

      3.4 模擬環(huán)境中區(qū)塊鏈分叉實(shí)驗(yàn)

      在此實(shí)驗(yàn)中,同樣通過(guò)區(qū)塊點(diǎn)到點(diǎn)傳輸實(shí)驗(yàn)可以得到RDMA 和TCP 方案點(diǎn)到點(diǎn)之間1 MB 大小的區(qū)塊傳輸?shù)难舆t,設(shè)定SimBlock 模擬系統(tǒng)中節(jié)點(diǎn)之間進(jìn)行區(qū)塊傳輸?shù)膫鬏斞舆t,在2 000、5 000、10 000 個(gè)節(jié)點(diǎn)三種不同網(wǎng)絡(luò)規(guī)模下分別生成2 000 個(gè)區(qū)塊。SimBlock 模擬系統(tǒng)能夠模擬區(qū)塊生成和區(qū)塊在網(wǎng)絡(luò)中所有節(jié)點(diǎn)之間傳輸?shù)倪^(guò)程,并且會(huì)輸出每一個(gè)區(qū)塊的信息,包括區(qū)塊的高度、區(qū)塊生成時(shí)間、區(qū)塊被傳輸?shù)矫總€(gè)節(jié)點(diǎn)上的時(shí)間以及區(qū)塊是否在主鏈上等,從輸出的區(qū)塊信息中可以統(tǒng)計(jì)出不在主鏈上的區(qū)塊數(shù),從而得到此次模擬實(shí)驗(yàn)過(guò)程中RDMA 和TCP 方案中區(qū)塊鏈發(fā)生臨時(shí)分叉的個(gè)數(shù)。

      如表5 所示,在SimBlock 模擬環(huán)境中,基于RDMA 的區(qū)塊傳輸方案,在10 000 節(jié)點(diǎn)規(guī)模的區(qū)塊鏈上,使得系統(tǒng)產(chǎn)生臨時(shí)分叉的數(shù)量下降了22.6%。這是因?yàn)楸疚乃岱桨附档土藚^(qū)塊傳輸?shù)难舆t,而區(qū)塊傳輸延遲降低能夠使得區(qū)塊鏈系統(tǒng)中的區(qū)塊在產(chǎn)生后能夠快速得到全網(wǎng)其他節(jié)點(diǎn)同步,盡量降低各節(jié)點(diǎn)之間區(qū)塊鏈狀態(tài)的不一致性,從而達(dá)到降低臨時(shí)分叉數(shù)量的效果。

      表5 模擬環(huán)境下臨時(shí)分叉數(shù)量對(duì)比Tab.5 Comparison of temporary fork numbers in simulated environment

      總而言之,本文所提基于RDMA 技術(shù)區(qū)塊傳輸機(jī)制能夠在一定程度上降低現(xiàn)有的區(qū)塊鏈系統(tǒng)的區(qū)塊傳輸延遲,從而提高系統(tǒng)的可擴(kuò)展性。

      4 結(jié)語(yǔ)

      高性能區(qū)塊傳輸是實(shí)現(xiàn)具有高可擴(kuò)展性的區(qū)塊鏈系統(tǒng)的重要部分。本文設(shè)計(jì)了一種基于RDMA 技術(shù)的區(qū)塊傳輸機(jī)制,能夠降低現(xiàn)有系統(tǒng)的區(qū)塊傳輸延遲,實(shí)現(xiàn)高性能區(qū)塊鏈系統(tǒng)?;赗DMA 提供的原語(yǔ),本文設(shè)計(jì)了區(qū)塊鏈中區(qū)塊傳輸過(guò)程的兩次單邊操作,以實(shí)線(xiàn)低延遲、低負(fù)載的特性;并結(jié)合原語(yǔ)的特性,設(shè)計(jì)了預(yù)注冊(cè)的可復(fù)用區(qū)塊目錄結(jié)構(gòu),進(jìn)一步降低了內(nèi)存注冊(cè)的時(shí)間消耗。相較于傳統(tǒng)的基于TCP的區(qū)塊傳輸機(jī)制,本文所提方案能夠使得區(qū)塊全網(wǎng)同步的延遲降低24.4%,同時(shí)RDMA 單邊原語(yǔ)的引入也降低了傳輸過(guò)程CPU 資源的占用。本文主要的目的是設(shè)計(jì)高效的區(qū)塊傳輸機(jī)制,而忽視了區(qū)塊鏈系統(tǒng)中其他數(shù)據(jù)的傳輸?shù)牡脱舆t需求。下一步的工作是在當(dāng)前工作的基礎(chǔ)上,進(jìn)一步完成對(duì)區(qū)塊鏈系統(tǒng)的通信模塊的整體設(shè)計(jì),實(shí)現(xiàn)低延遲的共識(shí)過(guò)程。

      猜你喜歡
      原語(yǔ)內(nèi)存區(qū)塊
      測(cè)試原語(yǔ):存儲(chǔ)器故障最小檢測(cè)序列的統(tǒng)一特征
      區(qū)塊鏈:一個(gè)改變未來(lái)的幽靈
      科學(xué)(2020年5期)2020-11-26 08:19:12
      區(qū)塊鏈:主要角色和衍生應(yīng)用
      科學(xué)(2020年6期)2020-02-06 08:59:56
      “春夏秋冬”的內(nèi)存
      區(qū)塊鏈+媒體業(yè)的N種可能
      讀懂區(qū)塊鏈
      密碼消息原語(yǔ)通信協(xié)議介紹及安全分析
      基于內(nèi)存的地理信息訪(fǎng)問(wèn)技術(shù)
      基于原語(yǔ)自動(dòng)生成的安全協(xié)議組合設(shè)計(jì)策略及應(yīng)用研究
      “原語(yǔ)效應(yīng)”在漢英口譯中的運(yùn)用及局限性研究
      兰溪市| 华宁县| 博野县| 通化市| 婺源县| 青川县| 车险| 容城县| 屏边| 邛崃市| 年辖:市辖区| 棋牌| 宜君县| 都匀市| 蒲江县| 宝清县| 曲周县| 定兴县| 西吉县| 尼木县| 电白县| 清远市| 雷州市| 靖西县| 册亨县| 青阳县| 锡林浩特市| 达拉特旗| 彝良县| 乐安县| 新竹市| 博白县| 灵宝市| 衢州市| 琼海市| 临武县| 鹰潭市| 六盘水市| 铜陵市| 永仁县| 壶关县|