P2P(Peer-to-Peer)計(jì)算是指不同系統(tǒng)之間通過直接交換,實(shí)現(xiàn)計(jì)算機(jī)資源和服務(wù)共享、進(jìn)行信息處理的過程,這里,資源可以是處理器、緩存和磁盤空間等,服務(wù)包括信息交換、數(shù)據(jù)計(jì)算等。P2P模式與傳統(tǒng)客戶/服務(wù)器模式的關(guān)鍵區(qū)別在于Peer與Peer在通信過程中,可以完全摒棄服務(wù)器的角色,完成一種直接通信,來獲得共享資源或服務(wù)。
從P2P的發(fā)展史來看,Internet的快速發(fā)展是P2P系統(tǒng)崛起的催化劑,在Internet上進(jìn)行客戶/服務(wù)器模式的訪問,使得信息源分布過于集中,邊緣網(wǎng)絡(luò)的資源被閑置和浪費(fèi),而P2P技術(shù)的引入,使得網(wǎng)絡(luò)中任何一個(gè)與網(wǎng)絡(luò)相關(guān)的設(shè)備都可能為網(wǎng)絡(luò)中的其他設(shè)備提供有效的內(nèi)容服務(wù)。
一般的P2P系統(tǒng)都有強(qiáng)烈的應(yīng)用背景,系統(tǒng)實(shí)現(xiàn)也與應(yīng)用類型緊密相關(guān)。為了深入分析P2P系統(tǒng)的關(guān)鍵技術(shù),我們將P2P系統(tǒng)劃分為P2P平臺層和應(yīng)用層,P2P平臺包含支撐P2P應(yīng)用所需的基礎(chǔ)組件,例如,發(fā)現(xiàn)機(jī)制、通信、安全、資源集成等組件。P2P應(yīng)用層利用P2P平臺提供的功能,向用戶提供專門的服務(wù)。這種區(qū)分可界定P2P的關(guān)鍵技術(shù),幫助我們設(shè)計(jì)和實(shí)現(xiàn)更多種類的P2P應(yīng)用.
本文主要討論P(yáng)2P平臺的關(guān)鍵技術(shù),全文按如下方式組織:第1節(jié)描述了P2P系統(tǒng)的特點(diǎn),第2節(jié)概括了Peer通信的各種技術(shù),第3節(jié)敘述了P2P平臺的安全措施,第4節(jié)討論了P2P平臺的性能問題,最后是全文小結(jié)。
1.P2P系統(tǒng)特點(diǎn)
在P2P系統(tǒng)中,每一個(gè)Peer都是平等的參與者,承擔(dān)服務(wù)
使用者和
服務(wù)提供者兩個(gè)角色。資源的所有權(quán)和控制權(quán)被分散到網(wǎng)絡(luò)的每一個(gè)節(jié)點(diǎn)中。服務(wù)使用者和服務(wù)提供者之間進(jìn)行直接通信,可充分利用網(wǎng)絡(luò)帶寬,減少網(wǎng)絡(luò)的擁塞狀況,使得資源的有效利用率大大提高(包括各種計(jì)算資源和存儲(chǔ)資源)。同時(shí)由于沒有中央節(jié)點(diǎn)的集中控制,系統(tǒng)的伸縮性較強(qiáng),也能避免單點(diǎn)故障,提高系統(tǒng)的容錯(cuò)性能。
但由于P2P網(wǎng)絡(luò)的分散性、自治性、動(dòng)態(tài)性等特點(diǎn),造成了某些情況下Peer的訪問結(jié)果是不可預(yù)見的。例如,一個(gè)請求可能得不到任何應(yīng)答消息的反饋。P2P系統(tǒng)的匿名性等特點(diǎn)可能會(huì)帶來系統(tǒng)的安全漏洞。
P2P系統(tǒng)的這些特點(diǎn)也決定了P2P 應(yīng)用主要包括資源共享和協(xié)作。資源共享主要是文件共享系統(tǒng)、文件分發(fā)系統(tǒng)(File Distribution System)。通過P2P網(wǎng)絡(luò)實(shí)現(xiàn)文件共享和文件分發(fā),能夠應(yīng)付爆發(fā)式訪問,系統(tǒng)的可伸縮性好,可靠性好。
此類典型系統(tǒng)有Napster[1],Gnutella[2],F(xiàn)reeNet[3],Chord-based System,BitTorrent[4]。
P2P協(xié)作應(yīng)用的種類很多,包括即時(shí)消息系統(tǒng)、在線游戲、共享企業(yè)應(yīng)用(在提供即時(shí)消息之外,還可共享內(nèi)容和進(jìn)行共同的活動(dòng)如組內(nèi)共同開發(fā)和編輯)、文件搜索、pub/sub系統(tǒng)等。
其中,
即時(shí)消息系統(tǒng)[5]有AOL AIM、Yahoo Messenger、MSN Messenger、Jabber[6,7]等;
在線游戲有星際爭霸、Net-Z和DOOM;
共享企業(yè)應(yīng)用有Groove[8]、Magi[9];
文件搜索有YouSearch[10], OpenCola等;
pub/sub系統(tǒng)有Scribe、Herms等;
還有基于P2P網(wǎng)絡(luò)構(gòu)造的
email系統(tǒng)。
而從P2P系統(tǒng)的典型特點(diǎn)來分析,常常被引證為P2P應(yīng)用的科學(xué)計(jì)算系統(tǒng)
Seti@Home[11]應(yīng)該屬于P2P的非典型應(yīng)用。各種P2P系統(tǒng)由于應(yīng)用背景的差異,彼此互不兼容,導(dǎo)致不同的P2P網(wǎng)絡(luò)無法通信,難以有效地利用網(wǎng)絡(luò)資源提供服務(wù)。Sun公司組織開發(fā)的JXTA[12]項(xiàng)目,希望通過提供一個(gè)簡單通用的P2P平臺來解決這個(gè)問題。從上述應(yīng)用可以看出,P2P系統(tǒng)并不能替代客戶/服務(wù)器系統(tǒng),它們兩者是相輔相成的關(guān)系。
從P2P系統(tǒng)的基本特點(diǎn)和應(yīng)用情況分析,我們認(rèn)為P2P平臺中的Peer的通信、平臺的安全和平臺的性能優(yōu)化這三項(xiàng)技術(shù)是P2P系統(tǒng)的成功與否的關(guān)鍵所在。
2 P2P通信
P2P通信時(shí)需要解決的最基本的問題即是
如何連接其它的終端獲得信息、資源和服務(wù)。該問題可細(xì)分為以下一些問題:
1、P2P網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和Peer節(jié)點(diǎn)的功能角色劃分;
?? 2、資源和服務(wù)如何標(biāo)識;
?? 3、進(jìn)行資源查找時(shí)如何進(jìn)行Peer定位;
?? 4、P2P網(wǎng)絡(luò)中Peer節(jié)點(diǎn)的動(dòng)態(tài)變化的處理;
?? 5、如何穿越NAT(Network Address Translation)和防火墻進(jìn)行Peer節(jié)點(diǎn)之間的直接通信。
P2P網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和Peer節(jié)點(diǎn)的角色劃分
在P2P網(wǎng)絡(luò)中,有兩種典型的拓?fù)浣Y(jié)構(gòu),即純P2P網(wǎng)絡(luò)和混雜的P2P網(wǎng)絡(luò)[13]。
在純P2P網(wǎng)絡(luò)中,每個(gè)Peer都具有同等的責(zé)任和地位,不存在中間節(jié)點(diǎn)的協(xié)調(diào)。FreeNet、Gnutella都屬于純P2P網(wǎng)絡(luò)。而在混雜的P2P網(wǎng)絡(luò)中,存在著充當(dāng)服務(wù)器角色的Peer節(jié)點(diǎn)或提供特殊功能的Super-Peer節(jié)點(diǎn),這些節(jié)點(diǎn)保存其它Peer節(jié)點(diǎn)的基本狀態(tài)和存儲(chǔ)內(nèi)容源信息,協(xié)助完成對其它節(jié)點(diǎn)的記錄、查詢等工作。Napster, Groove, Magi等系統(tǒng)均是典型的混雜型P2P系統(tǒng)。
每一個(gè)Peer根據(jù)其提供的角色功能可以劃分為三種類型,即簡單類型Peer節(jié)點(diǎn),super-peer節(jié)點(diǎn)和服務(wù)器型的peer節(jié)點(diǎn)。簡單類型Peer節(jié)點(diǎn)僅僅是一個(gè)簡單的終端用戶,它可以請求獲得服務(wù)并為網(wǎng)絡(luò)中的其它Peer提供服務(wù)。Super-peer節(jié)點(diǎn)除了具有和簡單Peer節(jié)點(diǎn)類似的功能外,還提供某些特殊功能。如JXTA系統(tǒng)中就存在路由器Peer節(jié)點(diǎn)和會(huì)聚點(diǎn)Peer節(jié)點(diǎn)[12],前者作為一個(gè)橋梁,使得被防火墻或NAT隔離的Peer可以相互通信;后者為簡單節(jié)點(diǎn)提供查詢定位信息的功能。服務(wù)器型的Peer節(jié)點(diǎn)主要提供類似與客戶/服務(wù)器模型下的服務(wù)器功能,如提供一個(gè)全局統(tǒng)一的目錄查詢。在Napster這種混雜型的P2P系統(tǒng)中,有若干個(gè)簡單Peer節(jié)點(diǎn)相互提供文件下載功能的服務(wù),還有一個(gè)目錄服務(wù)器節(jié)點(diǎn)提供文件條目的注冊管理。Groove和Magi系統(tǒng)中也均存在這樣的服務(wù)器型節(jié)點(diǎn)。而在純P2P網(wǎng)絡(luò)中,每一個(gè)Peer節(jié)點(diǎn)均充當(dāng)了上述的三種角色。
資源的標(biāo)識
為了在P2P網(wǎng)絡(luò)中準(zhǔn)確地查找資源進(jìn)行Peer定位,還需要確定Peer中存貯資源的標(biāo)識(這里我們將在P2P網(wǎng)絡(luò)中需要進(jìn)行查找的對象統(tǒng)稱為資源)。不同的應(yīng)用場景均有適合自身特點(diǎn)的資源標(biāo)識方式。
在以文件共享為主的應(yīng)用中,資源主要以文件的名稱、關(guān)鍵字、源數(shù)據(jù)等進(jìn)行標(biāo)識。而即時(shí)消息通訊系統(tǒng)往往采用類似于電子郵件的命名方式,如在Jabber系統(tǒng)中,Jabber的用戶ID以[node@]domain/[resource]的形式進(jìn)行地址標(biāo)識[7],提供一個(gè)全局統(tǒng)一的地址空間。其中,Domain是主要的ID標(biāo)識,是與多個(gè)用戶連接進(jìn)行消息轉(zhuǎn)發(fā)的Jabber Server;Node為用戶姓名或昵稱,Resource屬于一個(gè)Node,標(biāo)識屬于一個(gè)用戶的多個(gè)資源。一個(gè)用戶可以同時(shí)與同一服務(wù)器建立多次連接。
以用戶之間協(xié)作為主的P2P應(yīng)用如Groove系統(tǒng)和Magi系統(tǒng),由于在協(xié)作中對即時(shí)消息通訊和文件共享的要求兼而有之,用戶一般以用戶名進(jìn)行標(biāo)識,而文件則以源數(shù)據(jù)標(biāo)識[14]。
JXTA作為一個(gè)解決不同P2P應(yīng)用彼此不兼容的底層平臺,提出了一個(gè)統(tǒng)一的資源標(biāo)識定義,即廣告[12]
(advertisement)。廣告是一個(gè)XML結(jié)構(gòu)的文檔,由Peer或相互協(xié)作共同完成一種應(yīng)用Peer 組進(jìn)行發(fā)布,用來描述現(xiàn)有的資源、服務(wù)或?qū)嶓wPeer。Peer節(jié)點(diǎn)通過查詢廣告以獲得各種資源的消息,進(jìn)行Peer定位。
Peer的定位方式在查找資源的過程中,可采用直接或間接方式定位Peer。直接定位Peer的方式比較簡單,即利用廣播或多播的形式發(fā)出查詢請求,符合查詢要求的Peer節(jié)點(diǎn)進(jìn)行應(yīng)答,然后建立直接的通信連接。由于這種方式只能在局域網(wǎng)中使用,所以應(yīng)用范圍有限。當(dāng)然這種方式可以和其它的定位方式結(jié)合使用以獲得良好的查詢效率。
間接方式包括三種模型:服務(wù)器模型、洪流模型、和路由模型。
服務(wù)器模型:該模型是基于混雜型的P2P拓?fù)浣Y(jié)構(gòu)。充當(dāng)服務(wù)器的peer節(jié)點(diǎn)提供資源查詢。peer將請求發(fā)送至服務(wù)器獲得查詢結(jié)果,隨后,直接與目標(biāo)節(jié)點(diǎn)通信獲取所需服務(wù)。但這種方式存在單點(diǎn)失敗問題,同時(shí),也存在伸縮性問題。但因?yàn)閜eer節(jié)點(diǎn)僅在啟動(dòng)、停止及查詢的時(shí)候才與服務(wù)器交互,所以此時(shí)的伸縮性還是強(qiáng)于客戶/服務(wù)器模式。典型系統(tǒng)有Napster,Magi,Groove和Jabber。Napster系統(tǒng)采用一個(gè)目錄服務(wù)器記錄資源索引,Groove系統(tǒng)和Magi系統(tǒng)均是采用動(dòng)態(tài)DNS查找用戶的IP地址[14]。Jabber系統(tǒng)由于其資源標(biāo)識類似于Email地址,所以,利用DNS的MX記錄進(jìn)行IP地址的查詢[7]。
洪流模型:該模型基于純P2P拓?fù)浣Y(jié)構(gòu)。Peer節(jié)點(diǎn)采用洪流法將查詢請求不斷地轉(zhuǎn)發(fā)至鄰居節(jié)點(diǎn),直到到達(dá)目標(biāo)節(jié)點(diǎn),獲得查詢結(jié)果。同時(shí)為了避免消息無限制的轉(zhuǎn)發(fā),查詢請求中設(shè)定有TTL(Time to Live)或HTL(Hops to Live)進(jìn)行轉(zhuǎn)發(fā)控制。Gnutella是采用此類模型的典型系統(tǒng)。
路由模型:該模型也是基于純P2P網(wǎng)絡(luò)結(jié)構(gòu)。首先為網(wǎng)絡(luò)中的每一個(gè)peer賦予一個(gè)ID,同時(shí),每個(gè)Peer存儲(chǔ)的資源和服務(wù)也有類似的ID。Peer節(jié)點(diǎn)的路由表中登記一定數(shù)量的鄰居節(jié)點(diǎn)。Peer的請求被轉(zhuǎn)發(fā)至與所請求的資源或服務(wù)的ID 最接近的Peer,直到發(fā)現(xiàn)這個(gè)資源或服務(wù)[15]。插入一個(gè)新資源/服務(wù)的過程與查詢過程類似,也是通過查找該資源/服務(wù)ID來確定存儲(chǔ)的正確位置。此類模型主要用在文件共享系統(tǒng)中,如FreeNet,Chord[16],CAN[17],Tapestry,Pastry等。
路由模型又可細(xì)分為非結(jié)構(gòu)化路由模型和結(jié)構(gòu)化路由模型。FreeNet系統(tǒng)屬于典型的非結(jié)構(gòu)化路由模型。在查找到所需資源后,為了提高搜索性能,系統(tǒng)沿搜索路徑復(fù)制資源。這樣,由于資源的存儲(chǔ)位置不固定,其行為不易觀察,不確定因素較大。所以相對于結(jié)構(gòu)化路由模型來說,其資源分布的規(guī)律性不強(qiáng),難以從全局上把握整個(gè)系統(tǒng)的資源分布狀況。而結(jié)構(gòu)化路由模型如Chord, CAN, Tapestry, Pastry均采用了DHT(Distributed Hash Table)作為主要的存儲(chǔ)算法。DHT的主要思想是將資源定位用的索引(索引結(jié)構(gòu)通常是兩元組(文件名,實(shí)際的存儲(chǔ)位置))分散存儲(chǔ)到整個(gè)P2P網(wǎng)絡(luò)上,這樣,哈希表的存儲(chǔ)和查詢操作就會(huì)涉及到P2P網(wǎng)絡(luò)中的多個(gè)節(jié)點(diǎn)。
以DHT思想進(jìn)行路由模型的設(shè)計(jì)時(shí),首先需要確定通過Hash函數(shù)進(jìn)行虛擬地址空間映射的規(guī)則。虛擬地址空間的設(shè)計(jì)有多種方式, Chord采用的虛擬地址空間為m-位的循環(huán)地址空間[16],CAN系統(tǒng)采用的是多維的地址空間[17]。Peer節(jié)點(diǎn)的IP地址和端口號經(jīng)過哈希函數(shù)映射到地址空間,再將映射空間進(jìn)行劃分,每個(gè)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)屬于自己空間的值對(key,value)。其次需要確定路由表項(xiàng)的存儲(chǔ)內(nèi)容,即鄰居節(jié)點(diǎn)的規(guī)模,以適應(yīng)于不同的網(wǎng)絡(luò)需求。這里需要對路由表項(xiàng)的規(guī)模與網(wǎng)絡(luò)搜索跳轉(zhuǎn)數(shù)進(jìn)行綜合考慮。在動(dòng)態(tài)性較強(qiáng)的網(wǎng)絡(luò)中,節(jié)點(diǎn)頻繁加入和退出網(wǎng)絡(luò)會(huì)使得規(guī)模較大的路由表更新頻率過高,操作費(fèi)時(shí)。但規(guī)模較小的路由表在進(jìn)行資源定位時(shí),又使得查找時(shí)間過長。再次是確定在接收到一個(gè)資源的查詢請求時(shí),從路由表中選擇轉(zhuǎn)發(fā)的鄰居節(jié)點(diǎn)的規(guī)則。最后要確定新節(jié)點(diǎn)的插入和刪除操作后,虛擬的地址空間如何進(jìn)行分裂和合并。
P2P網(wǎng)絡(luò)中節(jié)點(diǎn)的登錄和退出在服務(wù)器模型的P2P網(wǎng)絡(luò)中,由于Peer節(jié)點(diǎn)的狀態(tài)信息和管理的資源信息直接記錄在服務(wù)器中,Peer節(jié)點(diǎn)的登錄和退出僅需和服務(wù)器進(jìn)行交互,由服務(wù)器進(jìn)行協(xié)調(diào)處理。如在Napster系統(tǒng)中,Peer節(jié)點(diǎn)登錄系統(tǒng)后,向服務(wù)器發(fā)送當(dāng)前的網(wǎng)絡(luò)狀態(tài)和所有的文件列表信息,由服務(wù)器更新目錄索引。在Jabber等即時(shí)消息通訊系統(tǒng)中,Peer節(jié)點(diǎn)往往是與用戶綁定的。服務(wù)器接收到用戶的登錄消息或退出消息后,通知訂閱
該用戶在線狀態(tài)的所有在線用戶。
非結(jié)構(gòu)化路由模型FreeNet中,新節(jié)點(diǎn)首先需要獲知網(wǎng)絡(luò)中的若干可連接節(jié)點(diǎn)的信息,通過執(zhí)行搜索操作向整個(gè)網(wǎng)絡(luò)宣布自己的存在。在結(jié)構(gòu)化路由模型的P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)的登錄和退出,將導(dǎo)致虛擬地址空間的分裂和合并。Peer節(jié)點(diǎn)登錄網(wǎng)絡(luò)的操作,類似于一個(gè)資源的查找過程。Peer節(jié)點(diǎn)定位到所屬的地址空間后,將地址空間以一定規(guī)則進(jìn)行分裂。負(fù)責(zé)管理該地址空間資源的原節(jié)點(diǎn)將所屬資源按分裂的規(guī)則,部分轉(zhuǎn)移到新節(jié)點(diǎn)。同時(shí)兩個(gè)節(jié)點(diǎn)的路由表項(xiàng)和其它相關(guān)節(jié)點(diǎn)的路由表項(xiàng)均要進(jìn)行修改。而Peer節(jié)點(diǎn)退出網(wǎng)絡(luò)的過程,則是登錄網(wǎng)絡(luò)的逆過程,資源需要轉(zhuǎn)移合并,相關(guān)節(jié)點(diǎn)的路由表項(xiàng)同樣需要更新。
防火墻和NAT的穿越在實(shí)際的網(wǎng)絡(luò)通信中,Peer節(jié)點(diǎn)往往是一個(gè)私有網(wǎng)絡(luò)中的節(jié)點(diǎn),位于防火墻之后。這樣,Peer與Peer之間直接通信需要解決的一個(gè)關(guān)鍵問題是穿越防火墻和NAT。由于防火墻會(huì)對IP進(jìn)行過濾,限制了墻內(nèi)外的連接,而NAT技術(shù)雖然可以使得內(nèi)部網(wǎng)絡(luò)地址映射到外部網(wǎng)絡(luò)地址,但要求內(nèi)部網(wǎng)絡(luò)首先發(fā)起對外連接,否則外部網(wǎng)絡(luò)機(jī)器無法達(dá)到內(nèi)部網(wǎng)絡(luò)[12]。穿越防火墻和NAT的策略有兩個(gè)基本點(diǎn):
(1) 需要使用在一般情況下可以通過防火墻的協(xié)議,如基于請求/應(yīng)答方式的HTTP協(xié)議。
(2) Peer之間進(jìn)行通信時(shí),必須由內(nèi)部網(wǎng)絡(luò)的機(jī)器首先發(fā)起連接請求,如果通信雙方均處于防火墻之后,則需要有防火墻外的轉(zhuǎn)發(fā)節(jié)點(diǎn)進(jìn)行消息轉(zhuǎn)發(fā)。
在Napster系統(tǒng)中當(dāng)Peer節(jié)點(diǎn)請求下載的資源位于一個(gè)防火墻之后的節(jié)點(diǎn)上,請求節(jié)點(diǎn)向服務(wù)器端發(fā)送需要進(jìn)行轉(zhuǎn)換下載的請求 (Alternate download request),由服務(wù)器通知被請求節(jié)點(diǎn)首先發(fā)起文件下載的連接請求。而Gnutella是在將查詢的詳細(xì)信息返回給請求者的同時(shí)發(fā)送資源文件,以此方式解決文件提供者位于防火墻之后的情況。
JXTA平臺中,其super-peer節(jié)點(diǎn)中的路由節(jié)點(diǎn)是提供防火墻和NAT穿越功能的特殊節(jié)點(diǎn)。若通信一方在防火墻之后,那么單向穿越的過程由試圖與防火墻后的peer A連接的peer節(jié)點(diǎn)B發(fā)起,節(jié)點(diǎn)B首先與路由Peer連接,同時(shí)peer A周期性地連接路由 Peer,由于路由 Peer對Peer A是可見的,且不在防火墻后,連接請求消息可作為http的應(yīng)答內(nèi)容返回至peer A。若通信的雙方都在防火墻之后,那么需要兩個(gè)路由 peer。Peer1 通過路由節(jié)點(diǎn)1 轉(zhuǎn)發(fā)消息,路由節(jié)點(diǎn)1將消息轉(zhuǎn)發(fā)至路由節(jié)點(diǎn) 2,Peer2周期性地向路由節(jié)點(diǎn)2發(fā)送http請求,獲得消息后斷開連接。JXTA平臺中路由節(jié)點(diǎn)的使用不僅可以穿越防火墻,還可以解決瓶頸問題,解決網(wǎng)絡(luò)傳輸?shù)牟患嫒菪訹12]。
3.P2P平臺的安全機(jī)制與安全有緊密關(guān)系的是P2P平臺提供的匿名性。
為了進(jìn)行自由的交互,避免引起不必要的法律糾紛,所以,P2P系統(tǒng)允許匿名方式的信息交換[15]。匿名性可分為以下三種類型:
?? 發(fā)布者匿名:發(fā)布者匿名地發(fā)布服務(wù)或資源
?? 請求者匿名:請求方匿名地請求服務(wù)或資源
?? 服務(wù)提供者匿名:P2P網(wǎng)絡(luò)中的資源擁有者匿名地提供資源或服務(wù)
提供匿名性的基本方法有六種:
?? 組播:采用IP組播方法進(jìn)行資源發(fā)送可以達(dá)到請求者匿名的目的。但是這種方法需要底層網(wǎng)絡(luò)如以太網(wǎng)的支持。
?? 地址欺騙:使用面向無連接協(xié)議如UDP,可以更改地址,達(dá)到地址欺騙的目的。
?? 身份欺騙:網(wǎng)絡(luò)中的文件可能擁有多個(gè)備份,所以應(yīng)答者往往并不是文件的提供者,如FreeNet就使用了這種方法提供匿名性。
?? 隱藏路徑:Peer之間并不是進(jìn)行直接的消息通信,而是通過若干的中間節(jié)點(diǎn),這樣可以達(dá)到發(fā)送者匿名的要求。
?? 別名:每一個(gè)Peer在網(wǎng)絡(luò)中均有一個(gè)別名,Peer之間通過別名進(jìn)行消息傳遞,這種方法需要一
個(gè)Proxy Server保存所有的Peer實(shí)體與別名的對應(yīng)關(guān)系。
?? 強(qiáng)制存放:一個(gè)文件存放的位置是由文件本身確定的,發(fā)布者無法選擇,從而實(shí)現(xiàn)發(fā)布者匿名,如基于Chord的系統(tǒng)。
上述方法可以組合應(yīng)用,例如,F(xiàn)reeNet采用純P2P網(wǎng)絡(luò)中的非結(jié)構(gòu)化文檔路由模型,同時(shí)在發(fā)布文件和查找文件的過程中,沿搜索路徑復(fù)制文件。通過隱藏路徑和身份欺騙的方法達(dá)到服務(wù)提供者匿名的目的,通過隱藏路徑的方法形成請求者匿名,同時(shí)由于文件的發(fā)布是一個(gè)根據(jù)文件名強(qiáng)制存放的過程,所以也完成了發(fā)布者匿名的功能。
P2P平臺所具有的上述特性可能會(huì)帶來下列安全隱患:?? 拒絕服務(wù)攻擊:P2P應(yīng)用會(huì)消耗網(wǎng)絡(luò)帶寬,占用磁盤空間,使得系統(tǒng)性能降低甚至完全癱瘓。如果被大量惡意地使用,就會(huì)出現(xiàn)正常服務(wù)請求得不到服務(wù)的現(xiàn)象。處理這種攻擊的難點(diǎn)在于如何將惡意節(jié)點(diǎn)和真正負(fù)載過重的節(jié)點(diǎn)區(qū)分開。從根本上說,限制網(wǎng)絡(luò)服務(wù)請求的數(shù)量是解決拒絕服務(wù)攻擊的根本方法。合理選擇網(wǎng)絡(luò)底層的拓?fù)浣Y(jié)構(gòu),均衡系統(tǒng)中的負(fù)載和資源,加入流量控制策略,這三種措施綜合使用可使惡意節(jié)點(diǎn)根本無法占用過多的資源,降低其對系統(tǒng)的影響。
?? 惡意軟件分發(fā):P2P無中央服務(wù)器控制,允許匿名分發(fā)資源,對軟件的分發(fā)缺乏控制,如果P2P系統(tǒng)被惡意使用,會(huì)給系統(tǒng)用戶帶來安全隱患。通常的名譽(yù)評估系統(tǒng)可以用來跟蹤和處理Peer的狀態(tài),并根據(jù)得到的信息選擇資源的提供者。但是這種方法比較消耗網(wǎng)絡(luò)資源。
?? 信息泄露和篡改:例如,有些P2P系統(tǒng)在路由表中保存了一批網(wǎng)絡(luò)地址,這些信息可能會(huì)被泄露和篡改;有些P2P系統(tǒng)例如Napster、Gnutella允許直接訪問用戶硬盤,惡意用戶可利用這個(gè)特性察看和篡改磁盤信息。這些都需要有相應(yīng)的策略加以解決,例如,設(shè)計(jì)安全路由策略,可解決路由表信息泄露問題。
4.P2P平臺的性能改善技術(shù)P2P平臺的性能指標(biāo)包括請求響應(yīng)時(shí)間、公平性等。
請求響應(yīng)時(shí)間與P2P平臺的拓?fù)浣Y(jié)構(gòu)有很大關(guān)系。對于有中央服務(wù)器的P2P系統(tǒng)如Napster系統(tǒng)和
Seti@Home系統(tǒng),Peer之間由服務(wù)器進(jìn)行協(xié)調(diào),服務(wù)器變成了系統(tǒng)的瓶頸,影響系統(tǒng)性能。為了改善性能,可采用層次性的混雜式結(jié)構(gòu),由每一個(gè)協(xié)調(diào)者負(fù)責(zé)一個(gè)Peer組,形成一個(gè)層次的管理結(jié)構(gòu)。在非集中式的P2P網(wǎng)絡(luò)中,主要通過消息轉(zhuǎn)發(fā)來獲取和查詢數(shù)據(jù),消息轉(zhuǎn)發(fā)的次數(shù)影響帶寬的消耗,因此要盡量減少消息的轉(zhuǎn)發(fā)次數(shù)[15]。采用復(fù)制的方法可提供多個(gè)資源備份,提高容錯(cuò)性,也減少了請求節(jié)點(diǎn)到服務(wù)節(jié)點(diǎn)的距離,減少了請求響應(yīng)時(shí)間。但復(fù)制會(huì)帶來數(shù)據(jù)一致性的問題;另一種減少消息轉(zhuǎn)發(fā)次數(shù)的方法是建立智能路由和網(wǎng)絡(luò)組織,尋找目標(biāo)文件到請求節(jié)點(diǎn)的最小路徑。該類方法包括:在基于DHT的結(jié)構(gòu)化路由模型中設(shè)計(jì)合乎應(yīng)用背景要求的路由表存儲(chǔ)結(jié)構(gòu),以減少網(wǎng)絡(luò)中的消息跳轉(zhuǎn)數(shù);采用一些反饋機(jī)制,智能地選擇曾經(jīng)命中過的Peer節(jié)點(diǎn)進(jìn)行消息轉(zhuǎn)發(fā);監(jiān)測網(wǎng)絡(luò)中的運(yùn)行狀態(tài),繞過一些負(fù)載較重的Peer節(jié)點(diǎn)。這些方法都可以根據(jù)不同的使用背景獲得較好的性能提升。
除了通過復(fù)制改善系統(tǒng)的響應(yīng)時(shí)間之外,緩存的替換策略對響應(yīng)時(shí)間改善也有很大影響。SmallWorld模型刻畫了網(wǎng)絡(luò)通信中的一個(gè)有趣的特征:在規(guī)則網(wǎng)絡(luò)中隨機(jī)地添加少量通路,能很好減短通信距離,減少請求的響應(yīng)時(shí)間,它被用來改進(jìn)FreeNet中的緩存替換策略,也獲得了較好的性能改善[18]。
P2P體系結(jié)構(gòu)使得P2P系統(tǒng)中會(huì)出現(xiàn)“無政府主義”行為,例如,過量下載或有意讓下載的文件中包含廣告等,這些行為導(dǎo)致P2P信息交換的不公平性。在P2P網(wǎng)絡(luò)中,為避免每一個(gè)Peer享受服務(wù)而不提供服務(wù)的現(xiàn)象,需要實(shí)行一定的管理機(jī)制。在P2P網(wǎng)絡(luò)中引入經(jīng)濟(jì)學(xué)中買賣交易的原理,可以促進(jìn)資源的共享和交互。Stanford大學(xué)的P2P研究小組提出了RTR(right-to-respond)協(xié)議[19],用以解決在洪流模型中,中間節(jié)點(diǎn)不愿消耗資源轉(zhuǎn)發(fā)請求的問題。RTR是指對查詢請求的響應(yīng)權(quán),Peer節(jié)點(diǎn)可以購買和出售系統(tǒng)中每個(gè)查詢請求的RTR。當(dāng)某一Peer節(jié)點(diǎn)轉(zhuǎn)發(fā)請求時(shí),其它Peer節(jié)點(diǎn)可以向其購買RTR。購買了RTR的Peer節(jié)點(diǎn)可以執(zhí)行兩個(gè)操作,一是響應(yīng)該請求,如果被請求的發(fā)出者選中,就可以為其提供服務(wù)并收取費(fèi)用;二是再將RTR售出給其它節(jié)點(diǎn)。通過這種方法,Peer節(jié)點(diǎn)在經(jīng)濟(jì)利益的驅(qū)使下會(huì)不斷轉(zhuǎn)發(fā)請求,擴(kuò)大搜索范圍。同時(shí)可
以促進(jìn)擁有類似資源或服務(wù)的Peer節(jié)點(diǎn)頻繁聯(lián)系,形成Peer Group,提高搜索效率。
另一個(gè)利用經(jīng)濟(jì)學(xué)原理的實(shí)例是數(shù)據(jù)交易(data trading)方法的引入[20]。P2P系統(tǒng)經(jīng)常采用數(shù)據(jù)備份的機(jī)制來增強(qiáng)資源可用性,提高系統(tǒng)性能。而用戶往往不愿無償提供存儲(chǔ)資源備份其它數(shù)據(jù)。這時(shí)利用數(shù)據(jù)交易的方法提供相互備份,即獲得對方存儲(chǔ)空間或數(shù)據(jù)資源是以向?qū)Ψ教峁┐鎯?chǔ)空間為前提的。系統(tǒng)中Peer節(jié)點(diǎn)之間建立了良好的相互備份關(guān)系,將會(huì)減少搜索和訪問的開銷。以上這些實(shí)例均表明,采用經(jīng)濟(jì)學(xué)中以交易為基礎(chǔ)的資源管理機(jī)制,可以提高P2P系統(tǒng)的資源使用率。
5.小結(jié)
P2P計(jì)算,作為分布式計(jì)算的一個(gè)分支,目前不論是從技術(shù)研究還是產(chǎn)品開發(fā)來看,都已成為了一個(gè)重要的領(lǐng)域。P2P的算法、平臺和應(yīng)用都將有進(jìn)一步的發(fā)展空間。P2P的思想也被廣泛地應(yīng)用在很多其他的研究領(lǐng)域。本文著重介紹了P2P的發(fā)展背景、P2P系統(tǒng)的特點(diǎn),在P2P平臺層識別出若干P2P平臺的關(guān)鍵技術(shù),包括Peer的通信技術(shù)、P2P平臺的安全機(jī)制和P2P平臺的性能改善技術(shù),這些技術(shù)的總結(jié)和分析能對設(shè)計(jì)和實(shí)現(xiàn)P2P平臺和應(yīng)用起到一定的借鑒和指導(dǎo)作用。
參考文獻(xiàn):
[1] Napster Inc.http://www.naspter.com
[2] Gnutella,http://www.gnutelliums.com
[3] Freenet,http://freenetproject.org/lang/en
[4] BitTorrent,
http://bitconjurer.org/BitTorrent/[5] Sixto Ortiz Jr., "Instant Messaging: No Longer Just Chat", IEEE Computer,March 2001
[6] Jeremie Miller, "Jabber, Peer-to-Peer:Harnessing the Power Of Disruptive Technologies,” O'Reilly, March 2001
[7] Peter Saint-Andre, “Jabber Technology Overview”
[8] Preeti Mehra,Groove,16th November,2001,ECE-579
[9] Gregory Alan Bolcer,Michael Gorlick,”Peer-to-Peer Architectures and the Magi Open-Source Infrastructure”, Endeavors Technology ,2000
[10] Mayank Bawa,Roberto J.Bayardo Jr.,Sridhar Rajagopalan,Eugene J.Shekita, “Make it Fresh,Make it Quick-Searching a Network of Personal Webservers”
[11]
Seti@Home,
http://setiathome.ssl.berkeley.edu/[12] Jxta Book,http://www.brendonwilson.com/projects/jxta
[13] Siu Man Lui, Sai Ho Kwok, “Interoperablility of Peer-To-Peer File Sharing Protocols”,ACM SIGecom Exchanges,Vol.2,No.2,August 2002
[14] Dana Moore,John Hebeler, 蘇忠,戰(zhàn)曉雷等譯, 《對等網(wǎng)》,清華大學(xué)出版社,2003.2
[15] Dejan S.Milojicic,Vana Kalogeraki Rajan Lukose,Kiran Nagaraja,Jim Pruyne,Bruno Richard,Sami Rollins,Zhichen Xu,HP Laboratories Palo Alto,” Peer-to-Peer Computing”,University of California
[16] Ion Stoica,Robert Morris,Divid Liben-Nowell,David R.Karger,M.Grans Kaashoek,Frank Dabek,Hari Balakrishnan. ”Chord: A scalable Peer-to-peer Lookup Protocol for Internet Applications”
[17] S.Ratnasamy,P,Francis, M. Handley, R.Karp,and S.Shenker,”A Scalable Content-Addressable Network”,ACM SIGCOMM ’01,San Diego,CA,USA,2001
[18] Hui Zhang, Ashish Goel and Ramesh Govindan. Using the Small-World Model to Improve Freenet Performance. IEEE Infocom, 2002.
[19] B.Yang,S.Kamvar,and H.Garcia-Molina Addressing the non-cooperation problem in competitive P2P systems.Stanford University Database Group Technical Report,2003
[20] Mayank Bawa,Brian F.Cooper,Arturo Crespo. Peer-to-Peer Research at Stanford,Stanford