亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        IPFS網(wǎng)絡(luò)內(nèi)容和性能測量

        2022-04-08 03:41:10丁博文徐躍東
        計算機工程與應用 2022年7期
        關(guān)鍵詞:測量

        丁博文,徐躍東,王 亮

        復旦大學 信息科學與工程學院 電子工程系,上海 200433

        區(qū)塊鏈技術(shù)因為其去中心化、安全保障和公開透明的特點,近來受到重視和廣泛研究和應用,特別是在加密貨幣領(lǐng)域。除了最初以比特幣為代表的加密貨幣外,以以太坊為代表,基于區(qū)塊鏈實現(xiàn)的智能合約系統(tǒng)向我們展示了與各領(lǐng)域的系統(tǒng)和應用結(jié)合更加豐富的可能性。不過,出于區(qū)塊鏈的安全性考慮,塊的大小不能無限制地增長[1],這帶來了一個直接的缺陷:基于區(qū)塊鏈的系統(tǒng)無法存儲和處理大量的數(shù)據(jù)。這限制了在大數(shù)據(jù)等領(lǐng)域應用區(qū)塊鏈技術(shù)。

        星際文件系統(tǒng)(interplanetary filesystem,IPFS)[2]是一個P2P、去中心化的文件系統(tǒng),因為其去中心化的特點以及在安全性、隱私和可靠性方面的優(yōu)點,許多區(qū)塊鏈系統(tǒng)應用將其作為數(shù)據(jù)存儲的解決方案。IPFS將數(shù)據(jù)存儲在互相連結(jié)的數(shù)據(jù)對象中,每個數(shù)據(jù)對象都由自身的密碼散列值唯一確定,稱為對象的“內(nèi)容標識符(content identifier,CID)”。數(shù)據(jù)對象間的聯(lián)系形式豐富多樣,可以形成文件、目錄、超鏈接圖等多種數(shù)據(jù)結(jié)構(gòu),以滿足不同應用領(lǐng)域數(shù)據(jù)形式的多樣性需求。通過IPFS存儲和獲取數(shù)據(jù)的過程類似于BitTorrent,許多運行著IPFS的節(jié)點構(gòu)成IPFS網(wǎng)絡(luò),任何一個需要獲取數(shù)據(jù)的用戶,根據(jù)所需數(shù)據(jù)的標識符,向網(wǎng)絡(luò)中存儲了這塊數(shù)據(jù)的節(jié)點發(fā)起請求,從而獲取數(shù)據(jù)。這樣的特性實現(xiàn)了去中心化的數(shù)據(jù)存取,使得基于區(qū)塊鏈等技術(shù)的去中心化應用可以將數(shù)據(jù)存取的任務(wù)通過IPFS實現(xiàn),從而解決了區(qū)塊鏈本身不能直接存放大量數(shù)據(jù)的問題。IPFS在物聯(lián)網(wǎng)[3]、云計算[4]、文獻和資料共享[5-6]等領(lǐng)域都提供了分布式數(shù)據(jù)存儲的解決方案。

        盡管IPFS已經(jīng)在許多領(lǐng)域得到應用,關(guān)于IPFS和IPFS網(wǎng)絡(luò)本身仍有許多尚待回答的問題。知道這些問題的答案在決定IPFS是否適合于某個應用目標,以及如何高效地利用IPFS時,可以提供有效的決策依據(jù),例如:作為P2P網(wǎng)絡(luò),IPFS的網(wǎng)絡(luò)規(guī)模、性質(zhì)、結(jié)構(gòu)如何;IPFS存儲了怎樣的內(nèi)容,被用于什么類型的應用和目的;在實際中使用IPFS時,哪些因素是影響性能的關(guān)鍵因素等。

        為了回答這些問題,從IPFS網(wǎng)絡(luò)中存放的內(nèi)容和通過IPFS存取內(nèi)容的性能兩大方面出發(fā),對IPFS展開測量研究。本文的主要貢獻有:

        (1)就大家所知,首次對存儲在IPFS網(wǎng)絡(luò)上的數(shù)據(jù)內(nèi)容作了測量分析,包括文件類型和大小分布,文件和目錄網(wǎng)絡(luò)的圖特征。

        (2)測量了IPFS網(wǎng)絡(luò)的性質(zhì),包括網(wǎng)絡(luò)的規(guī)模,以及節(jié)點之間互相連接的圖的結(jié)構(gòu)等。

        (3)考察了影響通過IPFS進行數(shù)據(jù)存取的性能的因素,例如數(shù)據(jù)分片大小、工作的網(wǎng)絡(luò)模式和提供者數(shù)量等。

        1 研究背景

        IPFS是一套P2P網(wǎng)絡(luò)協(xié)議,協(xié)議涉及到節(jié)點身份、內(nèi)容標記、網(wǎng)絡(luò)路由、對等交換等眾多方面。IPFS[2]這個名稱既可以指這一套協(xié)議,也可以指實現(xiàn)了這套協(xié)議的客戶端軟件,又可以指一個由眾多運行了IPFS軟件的對等節(jié)點(peer)組成的網(wǎng)絡(luò)。本章介紹構(gòu)成IPFS的基本概念,以及影響其網(wǎng)絡(luò)性能的重要概念和設(shè)計要點;最后介紹了類似的P2P文件系統(tǒng)及其相關(guān)的測量工作。

        1.1 節(jié)點身份

        IPFS是一個開放而動態(tài)的網(wǎng)絡(luò),任何人都可以運行IPFS,從而加入IPFS網(wǎng)絡(luò),成為網(wǎng)絡(luò)中的一個節(jié)點。每個節(jié)點需要用一個唯一的標識符(identity,ID)在網(wǎng)絡(luò)中標記自己,即節(jié)點的身份。通過使用不對稱密碼算法生成一對公私鑰,節(jié)點的身份即其公鑰的摘要。通常情況下不對稱密碼算法使用RSA2048,而摘要算法使用SHA256。為了未來的可拓展性,IPFS使用稱為“Multi-Hash”的一種格式記錄節(jié)點的身份,將使用何種密鑰算法和摘要算法作為元信息,加上摘要本身,編碼為一串字符,形如“QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN”。

        為了防止女巫攻擊(攻擊者通過生成大量不同的身份從而造成P2P網(wǎng)絡(luò)中的多數(shù)節(jié)點均由一個人控制),IPFS加入S/Kademlia[7]中提出的限制措施,即要求生成的公鑰摘要滿足一定條件,從而使得生成身份的操作需要消耗一定的時間,來增加攻擊者發(fā)起攻擊的時間成本,達到防御攻擊的目的。

        1.2 內(nèi)容標記與數(shù)據(jù)結(jié)構(gòu)

        IPFS將每一塊數(shù)據(jù)的哈希指紋作為其標識符,稱為“內(nèi)容標識符(CID)”。這么做有三個好處:(1)保證了每一塊數(shù)據(jù)有唯一的標識符,不會發(fā)生重名的問題;(2)在傳輸中的可以輕易校驗數(shù)據(jù)的完整性;(3)可以實現(xiàn)去重,即相同的數(shù)據(jù)塊擁有相同的標識符,在系統(tǒng)中被當成同一對象處理。

        IPFS使用名為MerkelTree[8]的數(shù)據(jù)結(jié)構(gòu)來存放復雜的數(shù)據(jù)對象。一棵典型的MerkelTree中,葉子節(jié)點存放了真正的數(shù)據(jù);而數(shù)量眾多的葉子節(jié)點由若干父節(jié)點組織起來,父節(jié)點中記錄了其下葉子節(jié)點的CID;這樣的過程一直重復,直到形成一個根節(jié)點,這樣這個根節(jié)點的CID就可以用來表示存儲的這個復雜對象。CID的唯一性對簡單的數(shù)據(jù)塊成立,對由此構(gòu)成的MerkelTree也成立,而且只要驗證根節(jié)點的CID是否與其內(nèi)容匹配,即可驗證整個MerkelTree的數(shù)據(jù)完整性。

        可以看出,內(nèi)容標識符在MerkelTree中扮演了指針的作用。在此基礎(chǔ)上,IPFS發(fā)展了不同類型的節(jié)點,包括只包含數(shù)據(jù)的簡單節(jié)點,和包含指向其他節(jié)點的“鏈接”的復雜節(jié)點??梢韵騃PFS中的對象添加指向其他對象鏈接,這就使得兩個MerkelTree可以發(fā)生聯(lián)系,形成更為復雜的圖結(jié)構(gòu)(MerkelDAG),可以用于如文件和目錄、超鏈接和版本鏈等復雜的應用場景,為IPFS作為文件系統(tǒng)提供了基礎(chǔ)。

        1.3 網(wǎng)絡(luò)路由與內(nèi)容存取

        在IPFS中,同一個數(shù)據(jù)對象可以在多個網(wǎng)絡(luò)節(jié)點處存在,每一個擁有這個對象的節(jié)點是這個對象的“提供者(provider)”,當有其他節(jié)點需要這個數(shù)據(jù)對象而發(fā)來請求時,提供者就會將其傳送至請求的節(jié)點。當一個全新的數(shù)據(jù)對象出現(xiàn)在IPFS上時,只有上傳這個對象的節(jié)點一個提供者;當其他節(jié)點獲得這個對象后,它們就會成為新的提供者。

        當一個節(jié)點沒有某個對象而需要獲取它時,這個節(jié)點會發(fā)起定位對象的請求:通過對象的CID,從IPFS網(wǎng)絡(luò)中得知這個對象的提供者,從而向提供者發(fā)起獲取數(shù)據(jù)的請求。定位請求由兩種方式實現(xiàn):

        (1)在IPFS的分布式哈希表(distributed Hash table,DHT)中根據(jù)對象的CID查找對應的提供者。

        (2)通過Bitswap協(xié)議,直接向當前連接的所有節(jié)點詢問是否是所需對象的提供者。

        算法1描述了通過對象CID獲取對應的提供者的流程。

        算法1查找CID對應的提供者

        輸入:對象CID cid

        輸出:提供者列表P

        過程:

        1.初始化:P←?

        2.調(diào)用算法2,從DHT中查詢cid的提供者Pdht

        3.從已連接的節(jié)點中查詢cid的提供者Plocal

        4.P←P?Pdht?Plocal

        5.返回P

        算法2通過DHT查找CID對應的提供者

        輸入:對象CIDcid

        輸出:提供者列表P

        過程:

        1.初始化:P←?;起始節(jié)點集N←已連接的節(jié)點

        2.forn∈Ndo:

        3. ifd cid,n=1 then:

        4.P←P?{n}

        5. else:

        6. 向節(jié)點n發(fā)送請求,從其d cid,n號k-桶中獲得更接近的節(jié)點集Nn

        7.N←N?N n

        8. end if

        9.end for

        10.返回P

        1.4 IPFS的DHT

        可以想象,IPFS中存在數(shù)量龐大的對象和節(jié)點,為了存放這些對象和節(jié)點之間的對應關(guān)系(即哪些節(jié)點是哪些對象的提供者),需要分布式哈希表(DHT)。IPFS的DHT基于Kademlia DHT[9],存放了用于定位數(shù)據(jù)對象和節(jié)點的重要信息。IPFS的DHT中存放了三類記錄,都是以鍵值對的形式存放,分別是:

        (1)數(shù)據(jù)對象到其提供者的映射;

        (2)節(jié)點到其網(wǎng)絡(luò)地址的映射;

        (3)節(jié)點到其IPNS路徑的映射。

        (1)類記錄可以使需要獲取對象的節(jié)點得知擁有它的提供者;(2)類記錄可以使節(jié)點得知某個節(jié)點的實際網(wǎng)絡(luò)地址,從而可以發(fā)起通信;(3)類記錄則是用于可變數(shù)據(jù)的更新。

        DHT中的鍵就是數(shù)據(jù)對象或節(jié)點的ID,由于都是使用SHA256算法作哈希摘要,鍵通常是一個256位的整數(shù)。某條記錄存放在哪個節(jié)點處,取決于其鍵和節(jié)點的ID之間的“距離”。根據(jù)Kademlia DHT的設(shè)計,兩個ID之間的距離等于其異或的結(jié)果,即d x,y=x⊕y。對于一個節(jié)點x而言,它對于每一個距離值d x,y∈[1,256]保存k個節(jié)點,稱為“k桶”,共有256個k桶。在IPFS中,k=20。

        當在DHT中查詢一個IDv時,發(fā)起查詢的節(jié)點會迭代地向使距離d n,v減小的節(jié)點n發(fā)起請求,直到遇到使d n,v=1的節(jié)點,也即提供者節(jié)點。算法2描述了從DHT中查找對象提供者的過程。

        與傳統(tǒng)Kademlia DHT不同的是,當有新的節(jié)點可以加入一個桶時,IPFS的DHT不會檢查桶中已有節(jié)點的連通性,剔除無法連通的節(jié)點,而是直接拒絕那個新節(jié)點的加入。只有當和某個節(jié)點的連接中斷時,它才會被從桶中剔除。

        1.5 IPFS的Bitswap

        Bitswap是IPFS中處理節(jié)點之間交換數(shù)據(jù)的子協(xié)議。Bitswap受到BitTorrent的啟發(fā),但與BT不同的是,Bitswap處理的對象不是包含多個文件的“種子”,而是擁有自己ID的數(shù)據(jù)塊。每個節(jié)點對其他發(fā)生過數(shù)據(jù)交換的節(jié)點維護一個“賬本”,記錄與之交換過的數(shù)據(jù)量:向其發(fā)送的數(shù)據(jù)記作“負債”,從其接受的數(shù)據(jù)記作“收入”,這樣節(jié)點可以根據(jù)對方節(jié)點的“余額”決定是否與之交換數(shù)據(jù)。這樣的測量可以阻止一部分只從他人處獲取數(shù)據(jù)而不愿意為他人提供服務(wù)的節(jié)點,從而保持整個網(wǎng)絡(luò)環(huán)境的健康。

        1.6 相關(guān)研究

        已有許多基于IPFS的應用被提出和發(fā)展。Big-ChainDB[10]是基于區(qū)塊鏈的數(shù)據(jù)庫系統(tǒng),使用IPFS作為其存儲。Alam等人[11]將IPFS用于存檔互聯(lián)網(wǎng)內(nèi)容。文獻[5]和[6]借助區(qū)塊鏈和IPFS實現(xiàn)去中心化文檔的版本控制和訪問控制。

        BitTorrent作為比較流行的P2P下載工具,其網(wǎng)絡(luò)特性吸引了許多研究者開展測量工作。Pouwelse等人[12]測量了BitTorrent網(wǎng)絡(luò)的用戶規(guī)模和在線時長,種子的可用時長以及熱度變化,和下載速率與用戶數(shù)量的關(guān)系。Guo等人[13]分析了BitTorrent中節(jié)點的到達離開速率以及公平性,提出了基于圖的模型,為跨種子間合作創(chuàng)造了可能。Yu等人[14]通過爬蟲測量了KAD網(wǎng)絡(luò)的路由表,發(fā)現(xiàn)用戶ID重復會影響路由表的效率,以及較低的路由表可用性影響網(wǎng)絡(luò)的性能。

        針對IPFS的測量工作較為有限。Shen等人[15]在多個地理位置處布設(shè)節(jié)點建立私有集群,在集群中測量IPFS的性能,分別考察了IPFS在內(nèi)容解析和實際傳輸階段的性能,并與HTTP作對比。測量還評估了不同請求大小與應用訪問的模式對IPFS性能的影響。

        Henningsen等人[16]從網(wǎng)絡(luò)結(jié)構(gòu)的角度測量并分析了IPFS的DHT網(wǎng)絡(luò)的特點。他們在IPFS的DHT網(wǎng)絡(luò)中部署了爬蟲程序,周期性地爬取DHT中的節(jié)點信息,包括節(jié)點數(shù)量,在線時長,地理位置和網(wǎng)絡(luò)可達性。他們建立了節(jié)點間的相鄰關(guān)系圖,發(fā)現(xiàn)圖節(jié)點的度分布滿足冪律分布,證實IPFS的DHT網(wǎng)絡(luò)結(jié)構(gòu)與其他Kademlia系統(tǒng)一致。

        現(xiàn)有的測量工作都主要集中于IPFS的網(wǎng)絡(luò)和性能方面,未有重視其作為一個P2P文件系統(tǒng)相較于傳統(tǒng)的P2P文件分享系統(tǒng)的重要不同,存儲于IPFS上的文件內(nèi)容也是影響IPFS網(wǎng)絡(luò)和性能的重要因素。本研究著眼于現(xiàn)存在IPFS上的內(nèi)容特點,以及IPFS在分發(fā)內(nèi)容時的網(wǎng)絡(luò)特性,同時兼顧性能方面的影響因素。

        2 測量方法

        2.1 實驗環(huán)境

        實驗使用云服務(wù)器搭建了測量用的集群環(huán)境,在其中設(shè)置IPFS集群。集群由6臺地理位置分散的服務(wù)器組成,分別位于東京、洛杉磯、紐約、新加坡、悉尼和倫敦。集群中服務(wù)器的軟硬件配置如表1所示。

        表1 實驗環(huán)境配置Table 1 Configuration of experimental environment

        2.2 內(nèi)容測量方法

        為了獲取IPFS中存儲的內(nèi)容信息,使用一個節(jié)點連接公開IPFS網(wǎng)絡(luò),在其上部署監(jiān)聽程序(crawler)。監(jiān)聽程序的工作原理是,每當網(wǎng)絡(luò)中某一個節(jié)點向IPFS中添加新的數(shù)據(jù)對象時,會向其連接的節(jié)點發(fā)送廣播,通知這些節(jié)點添加的對象的CID;這些節(jié)點會將這個節(jié)點標記為這個CID的提供者。監(jiān)聽程序收到這樣的廣播時,會請求這個CID,從網(wǎng)絡(luò)中獲得一份拷貝,從中取得這個數(shù)據(jù)對象的特征信息,包括:對象的類型(例如,是文件還是目錄)、文件大小、目錄大小、文件類型等。對于目錄類型的對象,監(jiān)聽程序會遞歸地檢查目錄中的子目錄和文件。獲得的測量結(jié)果數(shù)據(jù)集的時間跨度為2018年1月1日至2020年9月1日,包含約3 500萬條文件的信息。

        2.3 性能測量方法

        網(wǎng)絡(luò)節(jié)點特性的測量:通過在東京節(jié)點部署了DHT爬蟲程序,爬取了IPFS的DHT中的節(jié)點信息。首先,程序隨機生成一個初始CID,通過DHT查詢這個CID的提供者。雖然隨機生成的CID很可能不指向任何數(shù)據(jù)對象,因此也不存在任何提供者,但在查詢的過程中,會逐步獲得距離這個CID更接近的節(jié)點ID。爬蟲程序記錄遇到的這些節(jié)點,并通過節(jié)點的ID查找它的IP地址和連接到的節(jié)點。重復這個過程,從不同的初始CID出發(fā)爬取DHT,直到一次完整的爬取中,所有遇到的節(jié)點都是已經(jīng)記錄的節(jié)點,就標志著已經(jīng)遍歷了DHT中所有的節(jié)點。

        數(shù)據(jù)傳輸性能的測量:測量在東京和洛杉磯的兩臺服務(wù)器之間傳輸測試文件的時間。使用的測試文件均為隨機生成,且只存在于測試環(huán)境中的節(jié)點處,即這些節(jié)點不連接到IPFS公共網(wǎng)絡(luò),這保證了數(shù)據(jù)的提供者只有生成數(shù)據(jù)的一個節(jié)點,不存在從多個節(jié)點同時傳輸?shù)那闆r。只要適合,同一組條件下的測量重復進行10次。

        DHT解析性能的測量:測量從東京節(jié)點發(fā)起DHT查詢開始,到獲得任意一個提供者為止的時間。預先隨機生成一個測試文件,使集群中一個或多個節(jié)點獲取這個測試文件,成為其提供者;然后從東京節(jié)點查詢這個文件的提供者。測量了在私有網(wǎng)絡(luò)下和公開網(wǎng)絡(luò)中兩種不同情況下的DHT解析性能。

        3 測量結(jié)果

        3.1 內(nèi)容測量

        3.1.1 文件大小

        圖1中展示了存儲在IPFS中的完整文件的大小分布。實驗數(shù)據(jù)集包含了約3 500萬個IPFS上的文件,可以看到,絕大多數(shù)(>80%)的文件大小在1 MB以內(nèi),尤其是1 KB以內(nèi)的文件占據(jù)了57%的數(shù)量。這部分小文件多是文本文件,特別是JSON文件,記錄了供應用使用的少量數(shù)據(jù)。

        圖1 IPFS中存儲的文件大小累積分布Fig.1 Cumulative distribution of sizes of files stored in IPFS

        圖2展示了IPFS中文件類型的分布情況,分別是不同類型的文件的個數(shù)占比和大小占比。圖中可見,JSON文件(application/json)占到了文件總數(shù)的一半以上,而視頻文件數(shù)量雖然只占0.3%,但占到了文件總大小的17.2%。大量的由各種應用使用的二進制文件(application/octet-stream),占到了總數(shù)的22.2%,更是占到了所有文件大小的62.5%;在文本文件(text)分類中,也存在大量HTML和CSS等以文本形式存在的源文件,為網(wǎng)頁應用程序所使用。各種類型的文件,不同的大小和用途,顯示了IPFS作為去中心化的HTTP和通用的文件系統(tǒng),正在被各種不同的應用使用,為其提供去中心化的存儲。

        圖2 IPFS中存儲的文件類型占比Fig.2 Percentage of different file types in IPFS

        IPFS允許按文件和目錄的形式組織存儲的數(shù)據(jù),如同一般的文件系統(tǒng)。如果將每個文件或目錄視作網(wǎng)絡(luò)中的節(jié)點,目錄對子目錄、目錄對文件的包含關(guān)系視作節(jié)點間的連邊,可以建立一個網(wǎng)絡(luò)。正式的定義如下:網(wǎng)絡(luò)G=(V,E)由節(jié)點的集合V和節(jié)點間有向邊的集合E構(gòu)成;V中的節(jié)點是所有文件和目錄;對于V中的目錄節(jié)點j和任意一個節(jié)點i,如果目錄j包含了文件或子目錄i,則存在一條從i指向j的有向邊e ij=<i,j>,E={e ij},i,j∈V。

        3.1.2 文件與目錄的網(wǎng)絡(luò)性質(zhì)

        圖3中展示了IPFS中目錄與文件構(gòu)成的網(wǎng)絡(luò)的度分布。該網(wǎng)絡(luò)是對原始數(shù)據(jù)集作5%均勻抽樣所得的,包含了約310萬個目錄和文件節(jié)點??梢钥吹?,在對數(shù)坐標下,網(wǎng)絡(luò)的入度分布曲線接近線性,對線性段作擬合后的分布函數(shù)為:

        圖3 文件與目錄構(gòu)成的圖的入度及出度分布Fig.3 Distribution of in-degree and out-degree of graph formed by files and directories

        其中a是對數(shù)坐標下的截距,是與隨機變量的下節(jié)xmin相關(guān)的參數(shù),k是冪律分布的標度參數(shù)(scaling factor),通常有k∈[2,3][18]。這表明IPFS中內(nèi)容的組織滿足冪律分布:絕大多數(shù)節(jié)點都是文件,入度為1,出度為0;多數(shù)目錄節(jié)點的入度較小,而極少數(shù)目錄節(jié)點有很大的入度,構(gòu)成網(wǎng)絡(luò)中連接密集的中心。文獻[17]出度分布的情況與之相似,大多數(shù)目錄節(jié)點的出度較小,只有少量節(jié)點具有較大的出度,但帶有一個較不規(guī)則的“長尾”,不符合冪律分布。

        3.2 性能測量

        3.2.1 節(jié)點的地理位置與網(wǎng)絡(luò)協(xié)議

        圖4展示了IPFS網(wǎng)絡(luò)中節(jié)點的地理位置分布,選取了前10個節(jié)點數(shù)量最多的國家和地區(qū)。需要注意的是一個節(jié)點可能會有多個網(wǎng)絡(luò)地址,在圖中會被多次計算。網(wǎng)絡(luò)中大多數(shù)節(jié)點沒有公開可達的IP地址,使得數(shù)量最多的是局域網(wǎng)IP,這是因為這些節(jié)點位于防火墻后,通過NAT訪問互聯(lián)網(wǎng)。在具有公開網(wǎng)絡(luò)地址的和排名中,數(shù)量最多的是中國大陸,其次是美國和香港地區(qū)等。中國的節(jié)點數(shù)量較其他地區(qū)高出了一個數(shù)量級,這顯示了國內(nèi)對于IPFS非常熱切的關(guān)注和大量的使用。本文的結(jié)果與文獻[16]的結(jié)果相比,位于中國的IPFS節(jié)點數(shù)量均為最多;其次較多的為美國,分別位于第二位和第三位。中國香港地區(qū)、德國和法國等均出現(xiàn)在前十位的名單中,但相對排名不同。排名結(jié)果的差異主要是由爬蟲節(jié)點本身所處的地理位置不同導致的,文獻[16]的爬蟲位于德國,因此在結(jié)果中德國和臨近的法國的節(jié)點數(shù)量僅次于中國和美國之后。

        圖4 節(jié)點的地理位置分布Fig.4 Number of nodes by geolocation

        圖5顯示的是IPFS網(wǎng)絡(luò)中節(jié)點所使用的網(wǎng)絡(luò)協(xié)議的分布。在所有地址(包括私有地址)中IPv4占了大多數(shù),而IPv6也有相當數(shù)量的節(jié)點已經(jīng)支持。有少數(shù)節(jié)點支持“p2p-circuit”這種網(wǎng)絡(luò)連接方式,這是IPFS在沒有公開可達IP地址的節(jié)點上使用的一種連接方式,即通過其他有公開可達地址的節(jié)點作中繼,形成多跳的P2P回路。由于P2P回路通常速度低且不可靠,多數(shù)節(jié)點在連接到網(wǎng)絡(luò)后會使用自己的IP地址作為連接方式,而棄用P2P回路,因此這個連接方式屬于“瞬時”的連接,在所有節(jié)點中數(shù)量很少。“dns4”“dns6”和“dnsaddr”是IPFS支持的通過DNS域名表示的網(wǎng)絡(luò)地址,這些節(jié)點通過在擁有的DNS域名中添加一條特殊的記錄,將DNS域名與其IPFS的ID關(guān)聯(lián)起來,可以使得其他節(jié)點通過DNS域名來訪問IPFS上的這個節(jié)點。目前少有節(jié)點使用了這項功能。與文獻[16]的結(jié)果相比,IPv4和IPv6均是絕大多數(shù)節(jié)點使用的協(xié)議,但本研究測量結(jié)果中支持IPv6的節(jié)點數(shù)量相對IPv4節(jié)點的數(shù)量較文獻[16]少,這可能是由于本研究中較多節(jié)點位于國內(nèi),而國內(nèi)IPv6網(wǎng)絡(luò)建設(shè)尚在進行,各種網(wǎng)絡(luò)基礎(chǔ)設(shè)施尚未完全支持IPv6網(wǎng)絡(luò)導致。

        圖5 節(jié)點的網(wǎng)絡(luò)協(xié)議分布Fig.5 Number of nodes by network protocol

        3.2.2 節(jié)點網(wǎng)絡(luò)拓撲

        通過爬取IPFS的DHT,可以獲得網(wǎng)絡(luò)節(jié)點之間的連接關(guān)系,從而獲得IPFS網(wǎng)絡(luò)的拓撲結(jié)構(gòu)。類似于3.1.2小節(jié)中的文件目錄網(wǎng)絡(luò),可以定義IPFS網(wǎng)絡(luò)節(jié)點的連接關(guān)系圖:如果某個節(jié)點vi的DHT表中記錄了另一個節(jié)點v j,則視作存在一條連接這兩個節(jié)點的有向邊eij=<v i,v j>;由所有節(jié)點和邊構(gòu)成IPFS的網(wǎng)絡(luò)拓撲圖G=(V,E)。圖6顯示了圖G中節(jié)點的入度和出度分布。

        在圖6中可見,在雙對數(shù)坐標下節(jié)點的入度分布近似一條直線,意味著大多數(shù)節(jié)點的入度較小而少量節(jié)點有極大的入度,這是滿足冪律分布的,擬合的概率密度函數(shù)為:

        圖6 IPFS網(wǎng)絡(luò)拓撲圖的度分布Fig.6 Degree distributions in graph of IPFS nodes

        相較于入度分布,出度分布顯示出完全不同的特點。在全部約15 000個節(jié)點中,僅約550個節(jié)點的出度不為0,而這些節(jié)點的出度均分布在100至200之間。這可能是由于在爬取DHT網(wǎng)絡(luò)的過程中,這些節(jié)點成為主要的爬取對象,在需要其余節(jié)點的信息之前就完成了全部網(wǎng)絡(luò)節(jié)點的爬取,因此沒有向這些節(jié)點請求信息,導致多數(shù)節(jié)點的出度為0,發(fā)現(xiàn)與文獻[16]的結(jié)果一致。

        3.2.3 文件與分片大小對性能的影響

        IPFS會對上傳至其上的文件自動分片,形成包含文件片段的列表,并將列表對象的CID作為該文件的CID。請求者在請求列表的CID時,會遞歸地解析列表中的文件片段的CID,從DHT中獲得每個片段的提供者,然后逐個從提供者處下載獲得片段,最后當獲取到所有片段后,將片段組織成原始的文件。分片的好處是,將大文件分成多個獨立的片段,使得這些片段可以并行地、獨立地傳輸和校驗,而且可以根據(jù)片段的CID作去重。分片的過程包含在IPFS的上傳命令中,通常使用256 KB的均勻的分片大小,也可以通過顯式地指定分片大小來覆蓋默認的大小。

        不同的分片大小直接影響了文件在IPFS上的存儲形式,因此對請求文件的性能產(chǎn)生了影響。IPFS首先需要解析所有分片的提供者,從而知道去何處獲得這些分片。這個過程是通過查找DHT網(wǎng)絡(luò)實現(xiàn)的,因此不同的分片越多,需要解析的DHT目標就越多,所需的時長也就越大。隨機生成不同大小的隨機內(nèi)容的文件,按不同分片大小將文件分片后,從一臺節(jié)點上傳至IPFS,然后從另一臺IPFS節(jié)點請求這個文件,并測量從請求開始到完整取得整個文件的時長,來探究不同分片大小和不同文件大小對請求時長的影響。

        首先,考察了相同分片大小的情況下,不同文件大小所需的下載時長。圖7展示相同分片大?。? KB、64 KB)不同總文件大小(4 KB至4 MB,64 KB至64 MB)的若干文件從IPFS上下載的時間。圖7(及后續(xù)類似的其他圖)為箱線圖,箱形的上下邊分別為75%和25%分位數(shù),箱中的橫線為中位數(shù),箱上下的橫線為最大最小值。從圖中可見,下載時長與文件大小接近線性關(guān)系,這符合對一般的網(wǎng)絡(luò)傳輸過程的預期。但是對比圖7(a)和7(b),相同文件總大小,但不同的分片大小和數(shù)量組合卻有十分不同的下載時間。例如,同為256 KB總大小,4 KB×64和64 KB×4的組合相差了一倍以上。這表明IPFS的傳輸過程不僅與文件本身的大小有關(guān),還與文件分片的大小有關(guān)。文獻[15]對相同分片大小條件下的傳輸性能做了類似的測量,本文的測量結(jié)果與文獻[15]的發(fā)現(xiàn)一致。

        接著考察了在文件大小相同的情況下不同分片大小對性能的影響。圖8中展示了相同大小的文件按1 KB至1 MB范圍內(nèi)的6個不同的分片大小分片,從IPFS上下載所需要的時間??梢?,文件的下載時間隨著分片大小的減小而增加,并也近似成線性關(guān)系。相同的文件大小意味著IPFS花費在傳輸上的時間應當是相同的,而出現(xiàn)下載時間隨分片大小變化的情況是因為分片數(shù)量不同,這說明除了單純的傳輸時間外,IPFS需要解析分片的提供者和提供者的網(wǎng)絡(luò)地址,在這一部分工作上也需要花費可觀的時間,并且花費的時間與分片數(shù)量成正比。

        需要注意的是,改變分片大小對分片數(shù)量的影響可能不是線性的。圖9展示兩個大小相同的文件,按不同的分片大小劃分后在IPFS中儲存的情況。圖中,A和B是相同大小的文件的在不同塊大小下的兩種可能的數(shù)據(jù)結(jié)構(gòu)。A所使用的塊大小可以容納相當于4個CID大小的數(shù)據(jù),B的塊大小是A的一半。文件A由一個索引塊和4個數(shù)據(jù)塊組成,使用的分片大小是文件B的兩倍,但文件B由8個一半大小的數(shù)據(jù)塊和7個索引塊構(gòu)成,分片數(shù)量比文件A的兩倍還多了5個,是文件A的1.5倍。導致這種情況的原因是IPFS將分片的CID記錄在索引塊中,CID本身也需要一定的空間(取決于所使用的摘要和編碼算法),當數(shù)據(jù)塊數(shù)量較多時,所需的存儲CID的大小可能超出單個分片的容量,因此需要多個索引塊來存放。在實際中,通常采用多層樹狀的結(jié)構(gòu),根節(jié)點記錄第一層索引塊的CID,隨后每一層的索引塊記錄下一層的CID,樹的葉子節(jié)點中存放實際的數(shù)據(jù)。這樣的數(shù)據(jù)結(jié)構(gòu)充分利用了IPFS CID作為數(shù)據(jù)鏈接的作用,但也導致在分片大小較小時,索引分片數(shù)量膨脹,相對于真正有意義的數(shù)據(jù)分片而言,有更多的空間用于了維護數(shù)據(jù)結(jié)構(gòu)的額外開銷,使得空間利用率下降,而且在請求文件時性能下降。實際上,IPFS使用SHA256作為生成CID的哈希算法,其大小為256位或32字節(jié),在一個1 KB的塊中只能容納不到32個CID(除了CID外塊中還需要記錄有額外的信息),對于16 MB的文件,有50多萬個CID需要記錄,額外需要的索引塊的數(shù)量十分龐大。

        圖9 IPFS中文件分塊的示意圖Fig.9 Schematic diagrarn of files split in IPFS

        3.2.4 影響DHT解析時間的因素

        為了進一步探究IPFS在解析分片時的性能表現(xiàn),考察了影響DHT解析時間的若干因素。

        圖10展示不同大小的單個分片所需要的DHT解析時間。從圖中可見,不同大小的分片對DHT解析時間是幾乎沒有影響的,由于并不實際下載分片,而僅僅是從DHT表中查找到分片的提供者及其地址信息,所需時間不和分片大小有關(guān)。

        圖10 不同大小的單個分片的DHT解析時間Fig.10 DHT resolution time of single chunk of different sizes

        圖11展示不同數(shù)量4 KB大小的分片的解析時間與分片數(shù)量的關(guān)系。這里的結(jié)果與圖7(a)的結(jié)果相似,DHT解析時間隨著分片數(shù)量的增加而近似線性地增加。在16個分片前后,曲線的斜率有所改變,即小于16個分片時,DHT解析時間隨分片數(shù)量增加而增長得較慢,而大于16個分片時,增長的速率增加了。這顯示了IPFS存在并行DHT查詢的能力,當分片數(shù)量較少時,這些分片可以同時被解析,只有少量的維護請求隊列的開銷,使得消耗的時間增加較慢;并行請求的上限在16個分片左右,當超出這個數(shù)量時,有些請求就需要排隊,因此導致請求的花費的時間顯著增加。

        圖11 由不同數(shù)量4 KB的分片構(gòu)成的文件的DHT解析時間Fig.11 DHT resolution time of file consisting of different number of 4 KB chunks

        IPFS工作在哪種網(wǎng)絡(luò)模式下也會對DHT解析性能有影響。圖12(a)展示私有網(wǎng)絡(luò)集群中不同提供者數(shù)量對同一個分片的解析時間的影響。1個提供者的情況下,需要約0.2秒完成解析;大于等于3個提供者時只需要幾十毫秒即可完成解析。這與圖12(b)公共網(wǎng)絡(luò)中的情況形成了巨大差異。這是由于IPFS除了通過DHT作解析外,還可以通過向直接連接的節(jié)點發(fā)送廣播的方式作查詢。由于這些節(jié)點已經(jīng)連接到發(fā)起查詢的節(jié)點,如果它們是提供者,它們就會直接返回響應。在私有集群中,節(jié)點數(shù)量有限,廣播查詢可以很快就獲得回應,并且同一個分片的提供者數(shù)量越多,廣播回應者也就越多,因此查詢的時間取決于最快的節(jié)點。在圖中可以看到,解析時間隨著提供者數(shù)量快速下降,當提供者數(shù)量大于3個時,解析時間實際上只取決于集群中到發(fā)起者延時最小的那個節(jié)點。

        圖12 不同提供者數(shù)量對DHT解析時間的影響Fig.12 Impact of different numbers of providers on DHT resolution time

        圖12(b)展示公共網(wǎng)絡(luò)上構(gòu)建的集群中上述實驗的結(jié)果,注意縱坐標使用了對數(shù)坐標。相比圖12(a)中的情況,解析時間高出了1個數(shù)量級,而且波動極大。在公共網(wǎng)絡(luò)上,相比私有集群的情況,最大的不同是節(jié)點之間不再是已經(jīng)互相連接的,因此查詢往往需要通過查詢DHT,逐跳接近目標,最后查詢得到提供者節(jié)點。由于P2P網(wǎng)絡(luò)內(nèi)在的動態(tài)性,DHT查詢的路徑是隨機的,這導致查詢時延具有很大的方差。總體而言,提供者節(jié)點數(shù)量越多,在DHT表中查到其中任意一個節(jié)點的路徑就越多,平均延時也就越短,這在圖中1至3個提供者節(jié)點的情形中得到印證。多于3個提供者節(jié)點時,平均延時變化不大,也與私有集群中的情況類似。需要指出的是,在公開網(wǎng)絡(luò)中進行DHT查詢的時延方差極大,甚至可能超時而失敗,是目前影響IPFS性能的主要因素。在IPFS 0.5版本中,針對這一問題做過改進,主要包括在DHT表中去除因為NAT等問題無法對DHT請求做出響應的節(jié)點等。

        4 結(jié)束語

        針對IPFS進行了內(nèi)容和性能兩方面的測量。內(nèi)容方面,通過在IPFS網(wǎng)絡(luò)中部署爬蟲,收集了存儲在IPFS中的文件信息,獲得其類型、大小分布,分析了文件與目錄構(gòu)成的網(wǎng)絡(luò)的特性,發(fā)現(xiàn)其度分布近似滿足冪律分布。性能方面,通過爬蟲爬取了IPFS網(wǎng)絡(luò)上的節(jié)點,從節(jié)點數(shù)量、地理位置、使用的協(xié)議等方面獲得了IPFS網(wǎng)絡(luò)的概況。進一步,分析了這個網(wǎng)絡(luò)的圖結(jié)構(gòu),圖的入度滿足冪律分布,顯示網(wǎng)絡(luò)中存在被許多節(jié)點連接的“核心”節(jié)點,和很少被連接的邊緣節(jié)點。最后,詳細分析了在實際使用中影響IPFS性能的因素,發(fā)現(xiàn)分片的大小和數(shù)量是主要影響IPFS下載性能的因素,并且在私有集群和公開網(wǎng)絡(luò)中,提供者的數(shù)量會影響DHT查詢的性能。我們的測量結(jié)果對于分析和理解IPFS的網(wǎng)絡(luò)和行為特點提供了重要的參考依據(jù)。

        猜你喜歡
        測量
        測量重量,測量長度……
        把握四個“三” 測量變簡單
        滑動摩擦力的測量和計算
        滑動摩擦力的測量與計算
        測量的樂趣
        二十四節(jié)氣簡易測量
        日出日落的觀察與測量
        滑動摩擦力的測量與計算
        測量
        測量水的多少……
        亚洲欧美日韩精品香蕉| 色橹橹欧美在线观看视频高清| 最好看的最新高清中文视频| 亚洲最大无码AV网站观看| 国产精品第一二三区久久蜜芽 | 婷婷久久av综合一区二区三区| 白浆国产精品一区二区| 久久无码专区国产精品| 在线看亚洲十八禁网站| 蜜桃在线观看免费高清完整版| 国产三区二区一区久久| 男人边做边吃奶头视频| 玩弄放荡人妻一区二区三区| 久久精品国产成人午夜福利| 一级老熟女免费黄色片| 色狠狠色噜噜av天堂一区| 成人无码午夜在线观看| 国产三级国产精品国产专区| 一区二区三区激情免费视频| 孕妇特级毛片ww无码内射| 少妇AV射精精品蜜桃专区| 日韩乱码精品中文字幕不卡| 白嫩人妻少妇偷人精品| 亚洲国产美女精品久久久 | 亚洲中文字幕久久精品一区| 精品国产一二三产品区别在哪| 亚洲视频天堂| 国产精品高清一区二区三区人妖| 蜜芽亚洲av无码精品色午夜| 国产精品久久久久久久免费看 | 国产在线 | 中文| 国产精品偷伦视频免费手机播放| 一区二区三区在线日本| 欧美性色欧美a在线播放| 欧美性狂猛xxxxx深喉| 大胸美女吃奶爽死视频| 亚洲国产精品久久无人区| 国产 高潮 抽搐 正在播放 | 新婚人妻不戴套国产精品| 免费观看又污又黄的网站| 国产V亚洲V天堂A无码|