尚佳佳,霍 如,耿麗萍,汪 碩,3,黃 韜,3
(1.北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點實驗室,北京 100876;2.北京工業(yè)大學(xué) 信息學(xué)部,北京 100124;3.紫金山實驗室,南京 211111;4.中國人民解放軍61932 部隊,北京 100088)
傳統(tǒng)的區(qū)塊鏈技術(shù)大多在P2P(Peer-to-Peer)網(wǎng)絡(luò)中基于TCP 網(wǎng)絡(luò)架構(gòu)[1]并通過應(yīng)用層多播實現(xiàn)數(shù)據(jù)傳輸,而且不同終端節(jié)點對于同一個數(shù)據(jù)內(nèi)容的請求相互獨立,導(dǎo)致網(wǎng)絡(luò)中存在大量冗余流量以及較高的數(shù)據(jù)傳輸時延[2]。命名數(shù)據(jù)網(wǎng)絡(luò)(Named Data Networking,NDN)將IP 網(wǎng)絡(luò)沙漏模型的細腰部分更換為內(nèi)容名稱,基于內(nèi)容名稱進行數(shù)據(jù)傳輸,其關(guān)注點在于內(nèi)容本身,和區(qū)塊鏈的設(shè)計思想(即隱藏交易各方信息,公開透明交易內(nèi)容)相符合。區(qū)塊鏈技術(shù)已廣泛應(yīng)用于金融、智慧醫(yī)療、智能電網(wǎng)等場景:資金跨境支付結(jié)算[3]需要多個中間機構(gòu)合作構(gòu)建匯款通道以完成支付結(jié)算,其中涉及多個參與方,該過程需要保障支付結(jié)算的安全性和隱私性[4];金融行業(yè)對交易實時性要求較高,需要實現(xiàn)較低的時延[5];智慧城市關(guān)注居民、設(shè)施等各類數(shù)據(jù)的收集、分析和處理,要求保障數(shù)據(jù)安全和用戶隱私。在實際應(yīng)用中,需要針對不同場景差異化的服務(wù)質(zhì)量(Quality of Service,QoS)需求來設(shè)計有針對性的解決方案。
本文提出一種基于NDN 的區(qū)塊鏈網(wǎng)絡(luò)QoS 保障方法。為滿足實時性要求,將交易和區(qū)塊分為時延較敏感和時延較不敏感2 種類型,設(shè)計新的命名空間,為不同類型的區(qū)塊鏈數(shù)據(jù)創(chuàng)建各自的數(shù)據(jù)傳播結(jié)構(gòu)。在此基礎(chǔ)上,針對不同應(yīng)用場景對實時性和QoS 的不同要求,采用差異化路由機制對交易和區(qū)塊分別進行排隊轉(zhuǎn)發(fā)。
區(qū)塊鏈中的各節(jié)點具有分布式、對等的特性,因此,一般采用P2P 網(wǎng)絡(luò)來組織負責(zé)數(shù)據(jù)驗證和記賬的節(jié)點[6]。P2P 網(wǎng)絡(luò)中的每個節(jié)點地位均等,不存在任何中心化的節(jié)點或者特殊節(jié)點和結(jié)構(gòu),每個節(jié)點都可以進行交易驗證、交易傳播、區(qū)塊驗證、區(qū)塊傳播等。
區(qū)塊鏈節(jié)點在網(wǎng)絡(luò)中進行交易(區(qū)塊)的分發(fā)和接收,并且通過一系列的驗證機制[6]驗證交易(區(qū)塊)的有效性。區(qū)塊鏈系統(tǒng)的交易(區(qū)塊)傳播機制主要包括以下步驟:
1)區(qū)塊鏈節(jié)點將新生成的交易廣播給鄰居節(jié)點,鄰居節(jié)點收到后繼續(xù)廣播。
2)每個節(jié)點將在網(wǎng)絡(luò)中廣播的交易收集到區(qū)塊中,并且基于自身算力尋找一個難度與自身算力相匹配的工作量證明[7],算力較弱的節(jié)點會相互合作建立礦池,匯聚算力以共同解決一個難題,在找到工作量證明之后即全網(wǎng)廣播該區(qū)塊。
3)網(wǎng)絡(luò)中的其他節(jié)點在收到區(qū)塊后對區(qū)塊中包含的交易進行驗證,當且僅當區(qū)塊中包含的所有交易都是有效的并且之前沒有存在過,才認為該區(qū)塊有效。
4)在驗證區(qū)塊有效之后,其他節(jié)點接受該區(qū)塊并在該區(qū)塊末尾產(chǎn)生新塊延長鏈。
NDN 基于數(shù)據(jù)內(nèi)容名稱進行路由轉(zhuǎn)發(fā),每個數(shù)據(jù)分組對應(yīng)唯一的內(nèi)容名稱[3]。節(jié)點若要接收特定的內(nèi)容,需要主動向網(wǎng)絡(luò)中發(fā)送對該內(nèi)容的興趣請求,即“訂閱”該內(nèi)容,內(nèi)容擁有者或者緩存有該內(nèi)容的路由器節(jié)點接收到興趣請求后[8],則將該內(nèi)容按照請求分組路由方向的反方向發(fā)送給請求者。
NDN 分組類型具體如下:
1)請求分組(興趣包)。請求分組為內(nèi)容請求者向內(nèi)容擁有者發(fā)送的用于請求特定內(nèi)容的分組[9]。請求分組模型包含內(nèi)容名、選擇器和隨機數(shù)。
2)數(shù)據(jù)分組(數(shù)據(jù)包)。數(shù)據(jù)分組為內(nèi)容源或內(nèi)容緩存者響應(yīng)內(nèi)容請求者的請求向請求者返回的內(nèi)容,數(shù)據(jù)傳輸路徑按照請求分組傳輸路徑的反方向進行[10]。數(shù)據(jù)分組模型包含內(nèi)容名、簽名、署名信息和數(shù)據(jù)內(nèi)容。
NDN 數(shù)據(jù)結(jié)構(gòu)具體如下:
1)內(nèi)容存儲(Content Store,CS)。CS 結(jié)構(gòu)由數(shù)據(jù)內(nèi)容名稱和數(shù)據(jù)2 個條目構(gòu)成,其緩存節(jié)點收到的數(shù)據(jù)分組內(nèi)容[11]。網(wǎng)絡(luò)中存在大量關(guān)于相同數(shù)據(jù)內(nèi)容的請求,CS 的存在能讓后續(xù)請求相同內(nèi)容的節(jié)點得到快速及時的響應(yīng)。
2)待定興趣表(Pending Interest Table,PIT)。PIT記錄已經(jīng)轉(zhuǎn)發(fā)出去但沒有收到響應(yīng)的請求分組的內(nèi)容名稱及其到來的路由器接口[12],將經(jīng)過同一個路由器節(jié)點并請求相同內(nèi)容的請求分組匯聚在一個表項中,對同一內(nèi)容的請求,僅轉(zhuǎn)發(fā)一次對該內(nèi)容的請求分組,無需重復(fù)轉(zhuǎn)發(fā)。在數(shù)據(jù)分組回傳過程中,PIT 表中有該內(nèi)容名稱的路由器將該內(nèi)容緩存在CS 中[13],后續(xù)其他節(jié)點請求該內(nèi)容時直接由擁有該內(nèi)容的鄰近路由器返回即可,無需再次向內(nèi)容生產(chǎn)者請求。
3)轉(zhuǎn)發(fā)信息庫(Forwarding Information Base,F(xiàn)IB)。FIB 包含名稱前綴和接口列表2 個條目,其和TCP/IP網(wǎng)絡(luò)體系架構(gòu)中的路由表類似,依靠路由協(xié)議生成[14],記錄從當前路由器節(jié)點通往內(nèi)容生成者或內(nèi)容緩存節(jié)點的路徑上的下一跳接口。
然而,區(qū)塊鏈基于內(nèi)容擁有者主動推送的“推”模式與NDN 基于內(nèi)容請求者主動請求的“拉”模式互不兼容。文獻[7]在NDN 上啟動區(qū)塊鏈應(yīng)用程序,將交易包含在興趣包中支持交易的實時廣播,使用“訂閱-推送”來支持區(qū)塊的廣播,礦工執(zhí)行訂閱操作,區(qū)塊生成之后所有訂閱的礦工就會收到該區(qū)塊。文獻[8]通過“發(fā)布-訂閱”模式兼容區(qū)塊鏈,采用分層的命名空間實現(xiàn)流量隔離。文獻[9]引入分層命名機制并實現(xiàn)區(qū)塊的批量同步。以上方法解決了區(qū)塊鏈和NDN 的兼容問題,并針對數(shù)據(jù)同步等需求提出解決方案,但是沒有考慮到不同應(yīng)用場景差異化的QoS 需求。為滿足應(yīng)用場景的實時性要求,本文對傳統(tǒng)的命名空間進行改進,在NDN 中路由轉(zhuǎn)發(fā)時即可基于數(shù)據(jù)名稱中的實時性要求標識采用差異化的路由策略;通過為每種類型的數(shù)據(jù)創(chuàng)建專屬的數(shù)據(jù)傳播結(jié)構(gòu)來降低流量集中化程度,使得流量均勻地分布于網(wǎng)絡(luò)各處,提高網(wǎng)絡(luò)資源的利用率;采用差異化的路由機制對區(qū)塊鏈各類型數(shù)據(jù)分別進行路由轉(zhuǎn)發(fā),從而滿足不同應(yīng)用場景差異化的QoS 需求。
現(xiàn)有在NDN 上部署區(qū)塊鏈的方法僅利用NDN的一些特性對區(qū)塊鏈進行局部優(yōu)化(如重新設(shè)計命名空間),區(qū)塊鏈與NDN 的融合程度還有待提高。此外,差異化服務(wù)的思想在TCP/IP 體系下已經(jīng)非常成熟[15],且表現(xiàn)出較好的性能。隨著NDN 技術(shù)的發(fā)展,當區(qū)塊鏈建立在NDN 上時,也應(yīng)具備更加精細的差異化服務(wù),而這一方面目前較少有針對性的研究。因此,本文提出一種能夠提供差異化服務(wù)的解決方案,以完善區(qū)塊鏈業(yè)務(wù)。
針對不同應(yīng)用場景提供差異化的QoS 保障可以發(fā)揮以下作用:
1)優(yōu)化網(wǎng)絡(luò)資源分配。NDN 基礎(chǔ)設(shè)施通常帶寬有限[16],為區(qū)塊鏈建立專用的NDN 網(wǎng)絡(luò)并不能在實際中得到應(yīng)用,因此,有必要為其在網(wǎng)絡(luò)層面提供差異化服務(wù),從而緩解區(qū)塊鏈業(yè)務(wù)給NDN 設(shè)備帶來的處理壓力。
2)提高區(qū)塊鏈的性能。基于TCP 的區(qū)塊鏈難以提供對多播的內(nèi)置支持[17],導(dǎo)致在同質(zhì)節(jié)點之間建立連接需要較長的同步時間,而且交易的驗證、分發(fā)等會導(dǎo)致大量的數(shù)據(jù)開銷,極大地限制了區(qū)塊鏈的性能,而差異化服務(wù)可以在一定程度上打破這種限制。
3)提高安全性和可拓展性。區(qū)塊鏈業(yè)務(wù)通常對實時性有不同的要求[18],優(yōu)先保證部分時延較敏感的業(yè)務(wù)可以提升區(qū)塊鏈整體的安全性、穩(wěn)定性和可擴展性。
基于以上分析,本文提出一種基于NDN 的區(qū)塊鏈差異化QoS 保障機制,其結(jié)構(gòu)如圖1 所示。在網(wǎng)絡(luò)層為不同類別的流量創(chuàng)建數(shù)據(jù)傳播結(jié)構(gòu)使得流量均勻地分布于網(wǎng)絡(luò)各處[11],對支撐的業(yè)務(wù)進行更細粒度的劃分,主要從實時性要求角度將交易和區(qū)塊進行劃分,對這些交易和區(qū)塊采取排隊轉(zhuǎn)發(fā)的路由機制,以滿足不同應(yīng)用場景差異化的QoS 需求。
圖1 QoS 保障機制結(jié)構(gòu)示意圖Fig.1 Structure diagram of QoS assurance mechanism
本文差異化QoS 保障方法首先從實時性要求角度設(shè)計分層的命名空間;其次為不同類型的交易或者區(qū)塊創(chuàng)建數(shù)據(jù)傳播結(jié)構(gòu),使網(wǎng)絡(luò)中的流量盡可能分散在網(wǎng)絡(luò)各處;最后設(shè)計一種差異化的路由排隊機制以及兼容NDN 和區(qū)塊鏈不同模式的信息傳輸機制。
NDN 中基于內(nèi)容名稱進行數(shù)據(jù)內(nèi)容路由,本文在區(qū)塊鏈交易和區(qū)塊的命名中添加“差異化服務(wù)”字段來區(qū)分類別。數(shù)據(jù)在網(wǎng)絡(luò)中路由時基于各自的數(shù)據(jù)傳播結(jié)構(gòu),在檢索時基于交易名稱或者區(qū)塊名稱,同時路由器根據(jù)數(shù)據(jù)名稱識別服務(wù)類型。因此,為滿足路由、檢索和服務(wù)類型識別這3 個需求,數(shù)據(jù)的名稱需要包括以下3 個部分:
1)類別標識符(Category Identifier,CID)。CID
2)服務(wù)標識符(Service Identifier,SID)。本文主要從服務(wù)的實時性要求角度(即時延敏感角度)對QoS 需求進行劃分,因此,SID 的取值有時延較敏感(Delay Sensitive,DS)和時延較不敏感(Delay Less Sensitive,DLS)2 種。路由器根據(jù)數(shù)據(jù)內(nèi)容名稱中的SID 字段區(qū)分識別數(shù)據(jù)內(nèi)容的實時性要求,然后進行差異化的路由處理。
3)檢索標識符(Retrieval Identifier,RID)??紤]到在同一個數(shù)據(jù)傳播結(jié)構(gòu)上傳播的可能是交易也可能是區(qū)塊,因此,在命名中添加區(qū)分字段
因此,本文數(shù)據(jù)內(nèi)容按照
大多數(shù)區(qū)塊鏈網(wǎng)絡(luò)都是基于P2P 網(wǎng)絡(luò)的應(yīng)用層多播而實現(xiàn)的[19],即節(jié)點之間直接在邏輯拓撲上建立連接,缺乏對基礎(chǔ)網(wǎng)絡(luò)物理拓撲的考慮,導(dǎo)致上層流量與底層物理網(wǎng)絡(luò)拓撲之間不匹配[12]。此外,傳統(tǒng)的路由方式過多地依賴于志愿節(jié)點或性能較好的若干個節(jié)點[20],導(dǎo)致網(wǎng)絡(luò)中大量的流量集中在網(wǎng)絡(luò)中的少部分區(qū)域。為解決以上2 個問題,本文在網(wǎng)絡(luò)層創(chuàng)建分布式數(shù)據(jù)傳播樹(Distributed Data Propagation Tree,DDPT),使流量均勻分散在網(wǎng)絡(luò)中各處,降低對性能較好的若干個節(jié)點或者志愿節(jié)點的依賴程度,即降低中心化程度。DDPT 的創(chuàng)建流程如圖2 所示。
圖2 DDPT 的創(chuàng)建流程Fig.2 The creation procedure of DDPT
DDPT 創(chuàng)建具體步驟如下:
1)選擇根節(jié)點。假設(shè)高性能區(qū)塊鏈節(jié)點(High Performance Blockchain Node,HPBN)在網(wǎng)絡(luò)中近似均勻分布,在由所有HPBN 構(gòu)成的候選子集中,選擇與已有根節(jié)點(Root Node,RN)歐式距離最遠的HPBN 作為本次構(gòu)建的DDPT 的RN。
2)發(fā)送根節(jié)點ID。在選出RN 之后,由發(fā)起本次DDPT 構(gòu)建的區(qū)塊鏈節(jié)點(Blockchain Node,BN)向網(wǎng)絡(luò)中的其他節(jié)點發(fā)送RN 的ID。
3)請求加入DDPT。網(wǎng)絡(luò)中其他節(jié)點在收到RN 的ID 之后,向RN 發(fā) 起加入DDPT 的請求,RN 在收到節(jié)點的請求之后向節(jié)點返回確認消息,DDPT創(chuàng)建成功。
本文從實時性要求角度對交易進行分類,將其分為時延較敏感和時延較不敏感2 種類型。區(qū)塊鏈節(jié)點自行決定收集哪種類型的交易,對不同類型的交易進行處理可以獲得不同的獎勵[21]。節(jié)點收集時延較敏感交易形成時延較敏感區(qū)塊,收集時延較不敏感交易形成時延較不敏感區(qū)塊。NDN 路由器識別交易和區(qū)塊的名稱,根據(jù)名稱中的
差異化路由策略需要從2 個角度進行分組的區(qū)分判別:一是路由器節(jié)點區(qū)分收到的分組是區(qū)塊鏈分組還是常規(guī)NDN 分組;二是區(qū)分區(qū)塊鏈類型分組的實時性要求。如圖1 所示,交易或區(qū)塊由生成者生成命名之后發(fā)送到網(wǎng)絡(luò)中,路由器節(jié)點收到交易或區(qū)塊后,內(nèi)容分發(fā)器根據(jù)內(nèi)容名稱中SID 字段標識的實時性要求,將到達的區(qū)塊分為兩隊,一隊為時延較敏感交易/區(qū)塊,另一隊為時延較不敏感交易/區(qū)塊,在隊內(nèi)按照到達的先后次序排隊,NDN 常規(guī)的請求分組和數(shù)據(jù)分組不參與排隊。在轉(zhuǎn)發(fā)時根據(jù)不同應(yīng)用場景對實時性的不同需求設(shè)定不同的轉(zhuǎn)發(fā)隊列入隊比例,NDN 常規(guī)的請求分組和數(shù)據(jù)分組正常進入轉(zhuǎn)發(fā)隊列排隊等待轉(zhuǎn)發(fā)[3]。在每個路由器處都執(zhí)行差異化業(yè)務(wù)排隊機制,以滿足各類業(yè)務(wù)不同的QoS 需求。基于NDN 的區(qū)塊鏈差異化路由建立算法描述如算法1 所示。
算法1基于NDN 的區(qū)塊鏈差異化路由建立算法
為兼容NDN 與區(qū)塊鏈不同的通信模式,本文在NDN 基礎(chǔ)上增加訂閱推送表(Subscribe Forward Table,SFT),實時記錄“推送”類型服務(wù),即與區(qū)塊鏈相關(guān)的分組信息。SFT 包含的信息條目包括內(nèi)容名稱、數(shù)據(jù)分組轉(zhuǎn)發(fā)端口號、數(shù)據(jù)內(nèi)容序列號。為了適配區(qū)塊鏈基于內(nèi)容生成者主動向網(wǎng)絡(luò)中“推送”數(shù)據(jù)內(nèi)容的模式,NDN 網(wǎng)絡(luò)架構(gòu)中內(nèi)容生成者主動向網(wǎng)絡(luò)中發(fā)送一個對于自己所產(chǎn)生內(nèi)容的興趣請求。SFT 在“推送”類型請求分組分發(fā)的過程中將數(shù)據(jù)內(nèi)容名和回傳的數(shù)據(jù)分組經(jīng)過的端口號記錄在SFT 表相應(yīng)的條目中。信息傳輸流程如圖3 所示。
圖3 信息傳輸流程Fig.3 Information transmission procedure
信息傳輸具體步驟如下:
1)建立初始路由。所有區(qū)塊鏈節(jié)點定期向網(wǎng)絡(luò)中發(fā)送表達節(jié)點活躍狀態(tài)的請求分組,路由器節(jié)點在收到該分組后,如果節(jié)點表達自身為“活躍”狀態(tài),則在FIB 表中添加相關(guān)信息;如果節(jié)點表達自身為“退出”狀態(tài),則在FIB 表中刪除相關(guān)信息。路由器向其他路由器節(jié)點繼續(xù)轉(zhuǎn)發(fā)該請求分組,以完成初始路由的建立和狀態(tài)更新。
2)建立SFT 表項。數(shù)據(jù)內(nèi)容生成者主動向網(wǎng)絡(luò)中發(fā)送對自身所產(chǎn)生數(shù)據(jù)內(nèi)容的請求分組,路由器節(jié)點在收到該請求分組后,首先判斷CS 中是否有相關(guān)內(nèi)容,有則直接返回,沒有則判定請求分組類型:若判定是區(qū)塊鏈類型的“推送”請求分組,在SFT 中查詢是否有該內(nèi)容的名稱,若沒有則在表項中添加全部信息,若有則更新SFT 表中與該內(nèi)容相關(guān)的接口和內(nèi)容序列號信息;若判定是NDN 類型的請求分組,則交由PIT 表進行后續(xù)處理。
3)數(shù)據(jù)分組回傳。路由器節(jié)點在收到數(shù)據(jù)分組后,首先判斷數(shù)據(jù)分組類型,如果判定是區(qū)塊鏈“推送”類型數(shù)據(jù)分組[22],則交由SFT 表,若數(shù)據(jù)分組的內(nèi)容序列號大于等于SFT 中對應(yīng)條目記錄的內(nèi)容序列號,則在內(nèi)容序列號條目中添加新的序列號,按照SFT 中記錄的端口號轉(zhuǎn)發(fā),并且將內(nèi)容緩存在CS中,若數(shù)據(jù)分組的內(nèi)容序列號小于SFT 中對應(yīng)條目的序列號,則交由PIT 表進一步處理;若判定是NDN常規(guī)數(shù)據(jù)分組,則交由PIT 表進行進一步處理。
基于NDN 的區(qū)塊鏈分組通信算法描述如算法2所示。
算法2基于NDN 的區(qū)塊鏈分組通信算法
本文實驗選擇基于TCP 的區(qū)塊鏈[5]和基于NDN批量同步網(wǎng)絡(luò)內(nèi)區(qū)塊的BlockNDN[9],在仿真中將本文方法記為“BlockQoS”,實驗網(wǎng)絡(luò)由7 個區(qū)塊鏈節(jié)點和3 個路由器構(gòu)成,其中包含2 個邊緣節(jié)點。各項網(wǎng)絡(luò)參數(shù)設(shè)置如表1 所示。
表1 實驗參數(shù)設(shè)置Table 1 Experimental parameters setting
不同的區(qū)塊鏈應(yīng)用場景對時延敏感程度不同,針對性地設(shè)置轉(zhuǎn)發(fā)隊列入隊比例能夠更好地滿足不同應(yīng)用場景的QoS 需求。本文設(shè)置網(wǎng)絡(luò)中時延較敏感數(shù)據(jù)(包括交易和區(qū)塊)和時延較不敏感數(shù)據(jù)(包括交易和區(qū)塊)的數(shù)量比例為3∶1,設(shè)置不同的入隊比例a∶b,a代表時延較敏感類數(shù)據(jù)的入隊量,b代表時延較不敏感類數(shù)據(jù)的入隊量,以驗證排隊策略的性能。設(shè)置a∶b為1∶1 表示不采用排隊機制,設(shè)置a∶b為3∶1 驗證排隊策略對性能的提升作用。在一定時間Δt(6×103s)內(nèi),記錄在2 種不同的入隊比例下DDPT 上任意區(qū)塊鏈節(jié)點產(chǎn)生的所有交易和區(qū)塊被所有其他區(qū)塊鏈節(jié)點獲取到所花費的時間。實驗共進行100 次,結(jié)果取平均值。
圖4 所示為2 種不同的入隊比例下,在特定時間段內(nèi)網(wǎng)絡(luò)中所有節(jié)點產(chǎn)生的交易或者區(qū)塊被其他節(jié)點同步所耗費的時間。從圖4 可以看出:隨著區(qū)塊數(shù)量的增加,不采用排隊策略(即對網(wǎng)絡(luò)中所有交易和區(qū)塊進行統(tǒng)一轉(zhuǎn)發(fā))所消耗的時間明顯高于采用排隊策略所消耗的時間;采用和網(wǎng)絡(luò)中數(shù)據(jù)類型同樣比例進行排隊轉(zhuǎn)發(fā)的方法,其性能表現(xiàn)出明顯的優(yōu)勢,并且隨著實驗的進行,區(qū)塊數(shù)目越多,優(yōu)勢越明顯。
圖4 排隊策略對時延的影響Fig.4 Influence of queuing strategy on delay
設(shè)置一個區(qū)塊的生成時間為10~15 min 內(nèi)的隨機值,圖5 所示為在形成區(qū)塊鏈過程中不同網(wǎng)絡(luò)中的流量占比。從圖5 可以看出:傳統(tǒng)基于TCP/IP 的區(qū)塊鏈網(wǎng)絡(luò)內(nèi)存在大量冗余數(shù)據(jù)包,不同節(jié)點對同一個數(shù)據(jù)內(nèi)容的請求是獨立的,即網(wǎng)絡(luò)中存在大量對于同一個數(shù)據(jù)內(nèi)容的重復(fù)請求;BlockNDN 利用了NDN 網(wǎng)絡(luò)內(nèi)緩存的特性,采用批量同步的方式使得網(wǎng)絡(luò)中的節(jié)點可以快速同步交易和區(qū)塊,但網(wǎng)絡(luò)中的流量沒有被均勻分散到網(wǎng)絡(luò)各處,導(dǎo)致一些交易或者區(qū)塊在傳輸過程中因為網(wǎng)絡(luò)擁塞而發(fā)生丟包或者過期現(xiàn)象,數(shù)據(jù)的重傳帶來了額外的流量;本文利用NDN支持多播,并且為不同的數(shù)據(jù)類型創(chuàng)建DDPT,使流量盡可能地均勻分布,提高了網(wǎng)絡(luò)資源利用率,相比基于TCP 的區(qū)塊鏈網(wǎng)絡(luò),本文方法的網(wǎng)內(nèi)流量約降低24%。
圖5 形成區(qū)塊鏈過程中不同網(wǎng)絡(luò)中的流量占比Fig.5 Proportion of traffic in different networks during the formation of blockchain
圖6 所示為3 種不同網(wǎng)絡(luò)中所有區(qū)塊鏈節(jié)點生成的區(qū)塊全網(wǎng)同步所消耗的時間情況。為驗證本文排隊策略的性能優(yōu)勢,本次實驗仍設(shè)定網(wǎng)絡(luò)中時延較敏感數(shù)據(jù)(包括交易和區(qū)塊)和時延較不敏感數(shù)據(jù)(包括交易和區(qū)塊)的數(shù)量比例為3∶1,轉(zhuǎn)發(fā)入隊比例也為3∶1。從圖6 可以看出:當區(qū)塊數(shù)量較少時,網(wǎng)絡(luò)資源較為充足,鏈路擁塞可能性較小,在3 種網(wǎng)絡(luò)中同步區(qū)塊消耗的時間較為接近,DDPT 和比例入隊的性能優(yōu)勢沒有完全體現(xiàn)出來;隨著網(wǎng)絡(luò)中區(qū)塊數(shù)量的增多,3 種網(wǎng)絡(luò)所消耗的時間出現(xiàn)了較為明顯的差異,并且網(wǎng)絡(luò)中區(qū)塊數(shù)量越多,本文排隊策略的優(yōu)勢越明顯。
圖6 3 種網(wǎng)絡(luò)中全網(wǎng)同步所有區(qū)塊所消耗的時間情況Fig.6 Time consumed by the whole network to synchronize all blocks in the three networks
本文提出一種基于NDN 的區(qū)塊鏈差異化QoS保障方法,利用在TCP/IP 體系下較為成熟的差異化服務(wù)的思想,結(jié)合NDN 基于數(shù)據(jù)名稱路由和網(wǎng)絡(luò)內(nèi)緩存的優(yōu)勢,為區(qū)塊鏈應(yīng)用場景提供更加有針對性的差異化QoS 保障。實驗結(jié)果驗證了該方法的有效性。下一步將從帶寬、吞吐量、并發(fā)性等方面優(yōu)化區(qū)塊鏈網(wǎng)絡(luò)層的性能,從而為不同的應(yīng)用場景提供更加精細和多樣的服務(wù)。