P2P對(duì)等網(wǎng)絡(luò)路由模型及關(guān)鍵技術(shù)分析
P2P是近年來(lái)互聯(lián)網(wǎng)最熱門(mén)的技術(shù),在VOIP、下載、流媒體、協(xié)調(diào)計(jì)算等領(lǐng)域得到飛速發(fā)展。P2P是Peer to Peer的縮寫(xiě),即為對(duì)等計(jì)算或?qū)Φ染W(wǎng)絡(luò),可以簡(jiǎn)單的定義成通過(guò)直接交換,共享計(jì)算機(jī)資源和服務(wù)。P2P架構(gòu)是一種資源分布利用和共享的體系架構(gòu),與網(wǎng)絡(luò)中占據(jù)主導(dǎo)地位的客戶(hù)端/服務(wù)器(C/S)體系架構(gòu)相對(duì)應(yīng)。在P2P網(wǎng)絡(luò)模式中,每個(gè)節(jié)點(diǎn)的地位都是對(duì)等的,整個(gè)網(wǎng)絡(luò)一般不依賴(lài)于專(zhuān)用集中的服務(wù)器。每個(gè)節(jié)點(diǎn)同時(shí)承擔(dān)服務(wù)器和客戶(hù)端兩個(gè)角色,既提供資源和服務(wù),也享用其他節(jié)點(diǎn)的資源和服務(wù)。通常這些資源和服務(wù)包括:信息的共享與交換、存儲(chǔ)資源、磁盤(pán)空間和計(jì)算資源等的共享使用。
2 主流P2P網(wǎng)絡(luò)模型分析
2.1 集中目錄式P2P模型
集中目錄式P2P結(jié)構(gòu)是最早的P2P應(yīng)用模式,因其仍具有中心化的特點(diǎn)也被稱(chēng)為非純粹的P2P結(jié)構(gòu),Napster是這種模型的典型代表,如圖l所示。集中目錄式模型,是由一個(gè)中心服務(wù)器來(lái)負(fù)責(zé)記錄共享信息以及反饋對(duì)這些信息的查詢(xún),每一個(gè)對(duì)等實(shí)體要對(duì)它所需共享的信息以及進(jìn)行的通信負(fù)責(zé)。當(dāng)某節(jié)點(diǎn)希望搜索一個(gè)不知道位置的資源時(shí),該節(jié)點(diǎn)向目錄服務(wù)器發(fā)送請(qǐng)求,目錄服務(wù)器在數(shù)據(jù)庫(kù)中查詢(xún)到匹配的資源后將其定位信息返回該節(jié)點(diǎn),然后在兩個(gè)節(jié)點(diǎn)之間執(zhí)行交互。
與傳統(tǒng)的客戶(hù)朋艮務(wù)器模式不同,這種模式中客戶(hù)所需要的資料并非存儲(chǔ)在服務(wù)器上,而是存貯在P2P網(wǎng)絡(luò)內(nèi)的各個(gè)節(jié)點(diǎn)中,當(dāng)查詢(xún)節(jié)點(diǎn)收到節(jié)點(diǎn)地址信息列表后,會(huì)根據(jù)網(wǎng)絡(luò)流量和延遲等信息選擇合適的節(jié)點(diǎn)建立直接連接,其文件傳遞并不經(jīng)過(guò)中央目錄服務(wù)器,而是直接在節(jié)點(diǎn)之間通過(guò)TCP協(xié)議進(jìn)行。此外服務(wù)器與對(duì)等實(shí)體以及對(duì)等實(shí)體之間都互有交互能力。
集中目錄式P2P首先實(shí)現(xiàn)了文件查詢(xún)與文件傳輸?shù)姆蛛x,有效地節(jié)約了中央服務(wù)器的帶寬消耗,減少了系統(tǒng)的文件傳輸延時(shí)。但中央目錄服務(wù)器卻成為脆弱的瓶頸,如果該服務(wù)器失效,整個(gè)系統(tǒng)都會(huì)癱瘓。而且,不同等級(jí)的用戶(hù)連接速度也會(huì)使系統(tǒng)性能大大降低。在Napster之后的P2P系統(tǒng),都在這一點(diǎn)上進(jìn)行重點(diǎn)改進(jìn),系統(tǒng)基本上都采用無(wú)中心結(jié)構(gòu),準(zhǔn)確性和可擴(kuò)展性都得到極大提高。
2.2 分布式P2P模型
分布式P2P網(wǎng)絡(luò)采用隨機(jī)圖的組織方式,利用TTL(Time-to-Live),洪泛(Flooding),隨機(jī)漫步或有選擇轉(zhuǎn)發(fā)等方式搜索網(wǎng)絡(luò)資源。當(dāng)節(jié)點(diǎn)度數(shù)服從冪率(power—law)規(guī)律時(shí),該方式能夠較快發(fā)現(xiàn)目標(biāo)結(jié)點(diǎn),而且面對(duì)網(wǎng)絡(luò)的動(dòng)態(tài)變化體現(xiàn)了較好的容錯(cuò)能力。代表性網(wǎng)絡(luò)是Gnutella,如圖2所示。
在分布式P2P模式下,所有節(jié)點(diǎn)都參與服務(wù),控制流和數(shù)據(jù)流都在對(duì)等節(jié)點(diǎn)之間交互,解決了中心化的問(wèn)題,避免服務(wù)器瓶頸,部分節(jié)點(diǎn)出問(wèn)題也不會(huì)影響整個(gè)網(wǎng)絡(luò)的運(yùn)行,搜索結(jié)果更新比較及時(shí),時(shí)效性高;但是,采用flooding方式傳播搜索請(qǐng)求,造成網(wǎng)絡(luò)額外開(kāi)銷(xiāo)比較大,隨著P2P網(wǎng)絡(luò)規(guī)模的逐漸擴(kuò)大,網(wǎng)絡(luò)開(kāi)銷(xiāo)成指數(shù)級(jí)上升。因此準(zhǔn)確性和可擴(kuò)展性是非結(jié)構(gòu)化網(wǎng)絡(luò)面臨的兩個(gè)重要問(wèn)題。
2.3 結(jié)構(gòu)化P2P模型
結(jié)構(gòu)化P2P模式是一種采用純分布式的消息傳遞機(jī)制和根據(jù)關(guān)鍵字(KEY)的定位服務(wù),從根本上改變了P2P網(wǎng)絡(luò)無(wú)結(jié)構(gòu)的狀態(tài)。其中主流的方法就是采用分布式哈希表(Distributed Hash Table,DHT)技術(shù),是目前擴(kuò)展性最好的P2P路由方式之一。DHT首先為網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)分配虛擬地址(VID),同時(shí)用一個(gè)關(guān)鍵字(KEY)表示其可提供的共享內(nèi)容。通過(guò)一個(gè)特定的哈希函數(shù)(一般使用的是安全哈希函數(shù),如SHA一1等)將文件名(KEY)與節(jié)點(diǎn)信息(VID)運(yùn)算為一個(gè)哈希值H(KEY,VID),當(dāng)網(wǎng)絡(luò)上其它節(jié)點(diǎn)進(jìn)行資源定位的時(shí)候,可以容易地根據(jù)H(Key)值獲得文檔的精確存儲(chǔ)位置。由于DHT各節(jié)點(diǎn)并不需要維護(hù)整個(gè)網(wǎng)絡(luò)的信息,只在節(jié)點(diǎn)中存儲(chǔ)其臨近的后繼節(jié)點(diǎn)信息,因此較少的路由信息可有效地實(shí)現(xiàn)到目標(biāo)節(jié)點(diǎn),同時(shí)又取消了洪泛算法,該模型有效地減少了節(jié)點(diǎn)信息的發(fā)送數(shù)量,增強(qiáng)了P2P網(wǎng)絡(luò)的擴(kuò)展性。同時(shí),出于冗余度及延時(shí)的考慮,大部分DHT總是在節(jié)點(diǎn)的虛擬標(biāo)識(shí)與關(guān)鍵字最接近的K個(gè)節(jié)點(diǎn)上備份冗余信息,避免了單一節(jié)點(diǎn)失效的問(wèn)題。
基于DHT的路由方式是P2P系統(tǒng)研究的主流之一。所涉及的系統(tǒng)一般都假定節(jié)點(diǎn)的能力相當(dāng),這對(duì)于較小規(guī)模的系統(tǒng)非常有效,但這種假設(shè)并不適合大規(guī)模的Intemet部署。目前,成功應(yīng)用也比較少見(jiàn)。
2.4 混合式P2P模型
混合式P2P網(wǎng)絡(luò)結(jié)合了集中式結(jié)構(gòu)和分布式拓?fù)涞膬?yōu)點(diǎn),網(wǎng)絡(luò)中存在著中間服務(wù)器,文件目錄是分布的。在分布式模式的基礎(chǔ)上引入了超級(jí)節(jié)點(diǎn)(Super Node)概念,將用戶(hù)節(jié)點(diǎn)按能力(處理、存儲(chǔ)、帶寬等方面性能)分為搜索節(jié)點(diǎn)和普通節(jié)點(diǎn)兩類(lèi).搜索節(jié)點(diǎn)與其臨近的若干普通節(jié)點(diǎn)之間構(gòu)成一個(gè)自治的簇(Cluster),簇內(nèi)采用基于集中目錄式的P2P模式,而整個(gè)P2P網(wǎng)絡(luò)中存在著眾多這樣的簇,各個(gè)不同的簇之間再通過(guò)分布式P2P模式將搜索節(jié)點(diǎn)相連起來(lái),甚至可在各個(gè)搜索節(jié)點(diǎn)之間,再次選取性能最優(yōu)的節(jié)點(diǎn)或者另外引入一新的性能最優(yōu)的節(jié)點(diǎn)作為索引節(jié)點(diǎn),來(lái)保存整個(gè)網(wǎng)絡(luò)中可以利用的搜索節(jié)點(diǎn)信息,并且負(fù)責(zé)維護(hù)整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)?;旌鲜絇2P模型消除了分布式P2P結(jié)構(gòu)中使用Flooding算法帶來(lái)的網(wǎng)絡(luò)擁塞、搜索遲緩等不利影響,吸收了集中式拓?fù)涞囊坠芾硇耘c分布式拓?fù)涞目蓴U(kuò)展性,在異構(gòu)的P2P網(wǎng)絡(luò)環(huán)境下是一種較好的模式選擇。其中最典型的案例就是Fastrack,如圖3所示。
從上述分析知,這4種結(jié)構(gòu)各具優(yōu)缺點(diǎn),有的還存在著本身難以克服的缺陷,在目前P2P技術(shù)還未到成熟的階段,這4種結(jié)構(gòu)依然會(huì)共存,甚至出現(xiàn)相互借鑒結(jié)合的趨勢(shì)。
3 P2P網(wǎng)絡(luò)關(guān)鍵技術(shù)分析
3.1 資源定位
資源定位是節(jié)點(diǎn)通過(guò)一定方式找到資源在網(wǎng)絡(luò)中的存放位置,P2P方式的資源定位主要有以下3種算法。
(1)集中索引算法,代表系統(tǒng)為Napster在Napster系統(tǒng)中,用戶(hù)都與一個(gè)中央服務(wù)器相連接,中央服務(wù)器上保存了共享文件的索引,由中央服務(wù)器對(duì)收到的用戶(hù)請(qǐng)求進(jìn)行匹配查找,直到找到保存了所需文件的目的用戶(hù)。然后,由發(fā)起請(qǐng)求的用戶(hù)與目的用戶(hù)直接進(jìn)行文件交換。這種算法的不足在于依賴(lài)一個(gè)集中式的結(jié)構(gòu),將會(huì)影響系統(tǒng)的可擴(kuò)展性。
(2)洪泛消息算法,代表系統(tǒng)為Gnutella 每一個(gè)用戶(hù)消息都將被廣播給與該用戶(hù)直接相連的若干其他用戶(hù),這些用戶(hù)收到消息后,也同樣地將消息廣播給各自連接的用戶(hù),以此類(lèi)推,直到請(qǐng)求被應(yīng)答,消息的TTL值減少為0,或超過(guò)了最大的廣播次數(shù)(通常為5~9)。這種算法的不足在于占用的網(wǎng)絡(luò)帶寬較大,因此也會(huì)影響可擴(kuò)展性。
(3)文件路由算法,代表系統(tǒng)為Freenet算法的特點(diǎn)是采用基于哈希函數(shù)的映射。系統(tǒng)中的每一個(gè)用戶(hù)都有一個(gè)隨機(jī)的ID序列號(hào),系統(tǒng)中的每一個(gè)文件也有一個(gè)ID序列號(hào),該序列號(hào)是根據(jù)文件的內(nèi)容和它的名字,經(jīng)過(guò)哈希函數(shù)映射得來(lái)的。文件發(fā)布時(shí),每一個(gè)用戶(hù)都把文件轉(zhuǎn)發(fā)到擁有與文件的ID最相近ID值的用戶(hù),直到最接近文件ID的用戶(hù)就是該用戶(hù)本身。轉(zhuǎn)發(fā)過(guò)程中每經(jīng)過(guò)的一個(gè)用戶(hù)都將保持該文件的副本。索取文件時(shí),每個(gè)用戶(hù)都將請(qǐng)求消息轉(zhuǎn)發(fā)給一個(gè)擁有與所需文件ID最相近的ID用戶(hù),直到文件或文件的一個(gè)拷貝被發(fā)現(xiàn)為止。Tapestry,Pastry,Chord,CAN都是采用這種方法的P2P系統(tǒng)。這種算法的優(yōu)勢(shì)在于可擴(kuò)展性較好,不足在于可能導(dǎo)致整個(gè)網(wǎng)絡(luò)分裂成若干彼此不相連的子網(wǎng)絡(luò),形成所謂的孤島,其查詢(xún)也要比洪泛消息算法麻煩些。
3.2 多源傳輸
為了提高一些多用戶(hù)同時(shí)下載熱點(diǎn)文件的傳輸速率,P2P網(wǎng)絡(luò)普遍采用多源傳輸策略(MFTP協(xié)議)。該協(xié)議定義了一系列傳輸、壓縮和打包的標(biāo)準(zhǔn),甚至還定義了一套積分的標(biāo)準(zhǔn),上傳的數(shù)據(jù)量越大,積分越高,下載的速度也越快。MFTP協(xié)議允許用戶(hù)之間多點(diǎn)下載文件,多用戶(hù)同時(shí)下載一個(gè)文件時(shí),將該文件分段,每個(gè)用戶(hù)下載其中的一部分。P2P客戶(hù)端軟件在網(wǎng)絡(luò)上搜索下載同一個(gè)文件的用戶(hù),然后從這些用戶(hù)那里下載該文件不同的塊,用MD4算法檢查每一塊是否受到破壞,以保證傳輸?shù)恼_性,最后將所有的塊組合成原來(lái)的文件。MFTP充分利用下載用戶(hù)之間的帶寬傳輸數(shù)據(jù),從而減輕服務(wù)器負(fù)擔(dān),提高下載速度和系統(tǒng)的可擴(kuò)展性。多源傳輸機(jī)制的出現(xiàn)使得P2P技術(shù)在信息傳輸方面擁有網(wǎng)絡(luò)層傳輸無(wú)法比擬的優(yōu)勢(shì)。
3.3 網(wǎng)絡(luò)監(jiān)控與安全技術(shù)
面對(duì)大規(guī)模出現(xiàn)的P2P虛擬網(wǎng)絡(luò),由于缺乏必要有效的認(rèn)證機(jī)制,安全性這一問(wèn)題在P2P網(wǎng)絡(luò)中更為嚴(yán)重,這將直接決定P2P能否被大規(guī)模商用。如何有效的監(jiān)測(cè)與評(píng)估P2P網(wǎng)絡(luò)性能已經(jīng)變得越來(lái)越重要。由于缺乏集中式的監(jiān)控功能,當(dāng)前大多P2P系統(tǒng)無(wú)法提供網(wǎng)絡(luò)運(yùn)行狀況的信息,也無(wú)法為網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整優(yōu)化提供參考依據(jù),所以,將網(wǎng)絡(luò)監(jiān)測(cè)作為一個(gè)未來(lái)的研究重點(diǎn)是很有必要的。
此外,P2P中的安全問(wèn)題包括信息的加密、用戶(hù)身份的認(rèn)證、惡意節(jié)點(diǎn)的識(shí)別和應(yīng)對(duì)等,總的來(lái)說(shuō)可以歸納為服務(wù)可用性、文件授權(quán)、匿名和存取控制等方面,但是到目前還沒(méi)有一個(gè)公認(rèn)的模型和評(píng)價(jià)體系,可以用來(lái)P2P網(wǎng)絡(luò)系統(tǒng)的安全性進(jìn)行定性或者定量的研究,這也將是P2P網(wǎng)絡(luò)安全研究領(lǐng)域的一個(gè)重要課題。
4 P2P網(wǎng)絡(luò)的特性與問(wèn)題
作為一種新型的網(wǎng)絡(luò)應(yīng)用方式,P2P具有一些傳統(tǒng)C/S模式所不具備的優(yōu)勢(shì),主要表現(xiàn)在信息量的擴(kuò)大以及匿名服務(wù)的自由開(kāi)放性等。P2P最大的優(yōu)點(diǎn)在于能夠提供可靠、便捷的信息查詢(xún),但也由于P2P網(wǎng)絡(luò)這種缺乏中心監(jiān)管以及匿名服務(wù)的特性,P2P也存在著許多自身所無(wú)法克服的不足。
絕大多數(shù)的P2P服務(wù)都將不可避免地遇到知識(shí)產(chǎn)權(quán)問(wèn)題,同時(shí),惡意代碼的傳播將更快、更隱蔽,更難以控制等。
此外,P2P在技術(shù)層面也有較多的問(wèn)題難以解決。一般每個(gè)P2P網(wǎng)絡(luò)都是眾多參與者按照共同興趣組建起來(lái)的一個(gè)虛擬組織,對(duì)等節(jié)點(diǎn)之間存在著一種假定的相互信任關(guān)系,其中的P2P服務(wù)更是緊密依賴(lài)于節(jié)點(diǎn)之間彼此信任的協(xié)作模型。但是,隨著P2P網(wǎng)絡(luò)規(guī)模的擴(kuò)大,其中預(yù)先假設(shè)的信任機(jī)制實(shí)際上就會(huì)非常脆弱,這就直接導(dǎo)致了全局性信任的缺乏,影響了整個(gè)網(wǎng)絡(luò)的可靠性與穩(wěn)定性。
此外,安全問(wèn)題、內(nèi)容過(guò)濾、信息審查、帶寬問(wèn)題等都是隨著P2P網(wǎng)絡(luò)規(guī)模的擴(kuò)大必需要考慮的問(wèn)題。
5 結(jié)語(yǔ)
P2P并不是一個(gè)新概念,早在1969年ARPANET出現(xiàn)的時(shí)候,網(wǎng)絡(luò)應(yīng)用的模式就是P2P。如今,P2P又回到了人們視線(xiàn)。盡管P2P技術(shù)現(xiàn)在還不成熟,但為我們提供了前所未有的自由和便利。隨著P2P研究的進(jìn)一步深入,P2P技術(shù)將為信息社會(huì)帶來(lái)更多的機(jī)遇與挑戰(zhàn)。