999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2022-04-08 03:41:10丁博文徐躍東
關(guān)鍵詞:測量

丁博文,徐躍東,王 亮

復(fù)旦大學(xué) 信息科學(xué)與工程學(xué)院 電子工程系,上海 200433

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

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

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

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

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

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

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

1 研究背景

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

1.1 節(jié)點(diǎn)身份

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

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

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

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

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

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

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

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

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

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

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

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

算法1查找CID對應(yīng)的提供者

輸入:對象CID cid

輸出:提供者列表P

過程:

1.初始化:P←?

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

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

4.P←P?Pdht?Plocal

5.返回P

算法2通過DHT查找CID對應(yīng)的提供者

輸入:對象CIDcid

輸出:提供者列表P

過程:

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

2.forn∈Ndo:

3. ifd cid,n=1 then:

4.P←P?{n}

5. else:

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

7.N←N?N n

8. end if

9.end for

10.返回P

1.4 IPFS的DHT

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

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

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

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

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

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

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

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

1.5 IPFS的Bitswap

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

1.6 相關(guān)研究

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

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

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

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

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

2 測量方法

2.1 實(shí)驗(yàn)環(huán)境

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

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

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

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

2.3 性能測量方法

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

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

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

3 測量結(jié)果

3.1 內(nèi)容測量

3.1.1 文件大小

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

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

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

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

IPFS允許按文件和目錄的形式組織存儲的數(shù)據(jù),如同一般的文件系統(tǒng)。如果將每個(gè)文件或目錄視作網(wǎng)絡(luò)中的節(jié)點(diǎn),目錄對子目錄、目錄對文件的包含關(guān)系視作節(jié)點(diǎn)間的連邊,可以建立一個(gè)網(wǎng)絡(luò)。正式的定義如下:網(wǎng)絡(luò)G=(V,E)由節(jié)點(diǎn)的集合V和節(jié)點(diǎn)間有向邊的集合E構(gòu)成;V中的節(jié)點(diǎn)是所有文件和目錄;對于V中的目錄節(jié)點(diǎn)j和任意一個(gè)節(jié)點(diǎn)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萬個(gè)目錄和文件節(jié)點(diǎn)??梢钥吹?,在對數(shù)坐標(biāo)下,網(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ù)坐標(biāo)下的截距,是與隨機(jī)變量的下節(jié)xmin相關(guān)的參數(shù),k是冪律分布的標(biāo)度參數(shù)(scaling factor),通常有k∈[2,3][18]。這表明IPFS中內(nèi)容的組織滿足冪律分布:絕大多數(shù)節(jié)點(diǎn)都是文件,入度為1,出度為0;多數(shù)目錄節(jié)點(diǎn)的入度較小,而極少數(shù)目錄節(jié)點(diǎn)有很大的入度,構(gòu)成網(wǎng)絡(luò)中連接密集的中心。文獻(xiàn)[17]出度分布的情況與之相似,大多數(shù)目錄節(jié)點(diǎn)的出度較小,只有少量節(jié)點(diǎn)具有較大的出度,但帶有一個(gè)較不規(guī)則的“長尾”,不符合冪律分布。

3.2 性能測量

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

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

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

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

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

3.2.2 節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)?/p>

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

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

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

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

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

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

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

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

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

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

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

3.2.4 影響DHT解析時(shí)間的因素

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

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

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

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

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

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

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

4 結(jié)束語

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

猜你喜歡
測量
測量重量,測量長度……
把握四個(gè)“三” 測量變簡單
滑動摩擦力的測量和計(jì)算
滑動摩擦力的測量與計(jì)算
測量的樂趣
二十四節(jié)氣簡易測量
日出日落的觀察與測量
滑動摩擦力的測量與計(jì)算
測量
測量水的多少……
主站蜘蛛池模板: 国产成a人片在线播放| 91色在线观看| 欧美不卡视频一区发布| 91丨九色丨首页在线播放| 亚洲男人天堂网址| 福利国产微拍广场一区视频在线| 国产成人夜色91| 欧美成a人片在线观看| 亚洲第一精品福利| 午夜精品区| 毛片大全免费观看| 尤物视频一区| 国产精选小视频在线观看| 欧美一区二区精品久久久| 国内精自视频品线一二区| 久久视精品| 26uuu国产精品视频| 国产免费久久精品44| 欧美精品成人| 国产屁屁影院| 黄色国产在线| 国产亚洲男人的天堂在线观看 | 国产成人做受免费视频| 91青青草视频在线观看的| 亚洲第一色网站| 欧美精品伊人久久| 亚洲天堂日韩av电影| 国产91麻豆免费观看| 婷婷伊人五月| 亚洲v日韩v欧美在线观看| 国内精品伊人久久久久7777人| 高清国产va日韩亚洲免费午夜电影| 国产99在线观看| 国产成人综合久久| 伊人激情综合网| 911亚洲精品| 欧美亚洲香蕉| 国产免费久久精品99re不卡| 亚洲AV无码乱码在线观看代蜜桃 | 国产91蝌蚪窝| 日本不卡免费高清视频| 亚洲va在线∨a天堂va欧美va| 亚洲欧美成人综合| 在线一级毛片| 色香蕉影院| 亚洲精品视频免费| 狠狠躁天天躁夜夜躁婷婷| 久久国产毛片| 九九视频免费在线观看| 欧美精品伊人久久| 91亚瑟视频| 精品久久人人爽人人玩人人妻| 亚洲中久无码永久在线观看软件 | 亚洲精品综合一二三区在线| 欧美亚洲一区二区三区在线| 九色综合伊人久久富二代| 亚洲一级色| 欧美国产在线一区| 成人av专区精品无码国产| 国产人成乱码视频免费观看| 91精品久久久久久无码人妻| 无码区日韩专区免费系列| 久久黄色免费电影| 亚洲精品福利视频| 欧美精品成人一区二区在线观看| 午夜限制老子影院888| 97亚洲色综久久精品| 久久96热在精品国产高清| 97亚洲色综久久精品| 一级一级特黄女人精品毛片| 欧美成人一级| 国产十八禁在线观看免费| 国产精品部在线观看| 久久永久视频| 色综合日本| 亚洲成人网在线观看| 亚洲Va中文字幕久久一区| 亚洲人成网7777777国产| 嫩草在线视频| 日韩麻豆小视频| 粗大猛烈进出高潮视频无码| 亚洲码在线中文在线观看|