1.P2P網路模型
P2P網路是一種具有較高擴充性的分布式系統結構,其對等概念是指網路中的物理節點在邏輯上具有相同的地位,而並非處理能力的對等。以Napster軟體為代表的P2P技術其實質在於將互連網的集中管理員模式引向分散管理員模式,將內容從中央單一節點引向網路的邊緣,從而充分利用互連網中眾多終端節點所蘊涵的處理能力和潛在資源。相對於傳統的集中式客戶/伺服器(C/S)模型,P2P弱化了伺服器的概念,系統中的各個節點不再區分伺服器和用戶端的角色關係,每個節點既可請求服務,也可提供服務,節點之間可以直接交換資源和服務而不必通過伺服器。
P2P系統最大的特點就是使用者之間直接共用資源,其核心技術就是分布式對象的定位機制,這也是提高網路可擴充性、解決網路頻寬被吞噬的關鍵所在。迄今為止,P2P網路已經曆了三代不同網路模型,各種模型各有優缺點,有的還存在著本身難以克服的缺陷,因此在目前P2P技術還遠未成熟的階段,各種網路結構依然能夠共存,甚至呈現相互借鑒的形式。
1.1 集中目錄式結構
集中目錄式P2P結構是最早出現的P2P應用模式,因為仍然具有中心化的特點也被稱為非純粹的P2P結構。用於共用MP3音樂檔案的Napster是其中最典型的代表(見圖1),其使用者註冊與檔案檢索過程類似於傳統的C/S模式,區別在於所有資料並非儲存在伺服器上,而是存貯在各個節點中。查詢節點根據網路流量和延遲等資訊選擇合適的節點建立直接連接,而不必經過中央伺服器進行。這種網路結構非常簡單,但是它顯示了P2P系統資訊量巨大的優勢和吸引力,同時也揭示了P2P系統本質上所不可避免的兩個問題:法律著作權和資源浪費的問題。
1.2 純P2P網路模型
純P2P模式也被稱作廣播式的P2P模型。它取消了集中的中央伺服器,每個使用者隨機接入網路,並與自己相鄰的一組鄰居節點通過端到端串連構成一個邏輯覆蓋的網路。對等節點之間的內容查詢和內容共用都是直接通過相鄰節點廣播接力傳遞,同時每個節點還會記錄搜尋軌跡,以防止搜尋環路的產生。
Gnutella模型是現在應用最廣泛的純P2P非結構化拓撲結構(見圖2),它解決了網路結構中心化的問題,擴充性和容錯性較好,但是Gnutella網路中的搜尋演算法以泛洪的方式進行,控制資訊的泛濫消耗了大量頻寬並很快造成網路擁塞甚至網路的不穩定。同時,局部效能較差的節點可能會導致Gnutella網路被分區,從而導致整個網路的可用性較差,另外這類系統更容易受到垃圾資訊,甚至是病毒的惡意攻擊。
1.3 混合式網路模型
Kazaa模型是P2P混合模型的典型代表(見圖3),它在純P2P分布式模型基礎上引入了超級節點的概念,綜合了集中式P2P快速尋找和純P2P去中心化的優勢。Kazaa模型將節點按能力不同(計算能力、記憶體大小、串連頻寬、網路滯留時間等)區分為普通節點和搜尋節點兩類(也有的進一步分為三類節點,其思想本質相同)。其中搜尋節點與其臨近的若干普通節點之間構成一個自治的簇,簇內採用基於集中目錄式的P2P模式,而整個P2P網路中各個不同的簇之間再通過純P2P的模式將搜尋節點相連起來,甚至也可以在各個搜尋節點之間再次選取效能最優的節點,或者另外引入一新的效能最優的節點作為索引節點來儲存整個網路中可以利用的搜尋節點資訊,並且負責維護整個網路的結構。
由於普通節點的檔案搜尋先在本地所屬的簇內進行,只有查詢結果不充分的時候,再通過搜尋節點之間進行有限的泛洪。這樣就極為有效地消除純P2P結構中使用泛洪演算法帶來的網路擁塞、搜尋遲緩等不利影響。同時,由於每個簇中的搜尋節點監控著所有普通節點的行為,這也能確保一些惡意的攻擊行為能在網路局部得到控制,並且超級節點的存在也能在一定程度上提高整個網路的Server Load Balancer。
總的來說,基於超級節點的混合式P2P網路結構比以往有較大程度的改進。
然而,由於超級節點本身的脆弱性也可能導致其簇內的結點處於孤立狀態,因此這種局部索引的方法仍然存在一定的局限性。這導致了結構化的P2P網路模型的出現。
1.4 結構化網路模型
所謂結構化與非結構化模型的根本區別在於每個節點所維護的鄰居是否能夠按照某種全域方式組織起來以利於快速尋找。結構化P2P模式是一種採用純分布式的訊息傳遞機制和根據關鍵字進行尋找的定位服務,目前的主流方法是採用分布式雜湊表(DHT)技術,這也是目前擴充性最好的P2P路由方式之一。由於DHT各節點並不需要維護整個網路的資訊,只在節點中儲存其臨近的後繼節點資訊,因此較少的路由資訊就可以有效地實現到達目標節點,同時又取消了泛洪演算法。該模型有效地減少了節點資訊的發送數量,從而增強了P2P網路的擴充性。同時,出於冗餘度以及延時的考慮,大部分DHT總是在節點的虛擬標識與關鍵字最接近的節點上複本備份冗餘資訊,這樣也避免了單一節點失效的問題。
目前基於DHT的代表性的研究項目主要包括加州大學伯克利分校的CAN項目和Tapestry項目,麻省理工學院的Chord項目、IRIS項目,以及微軟研究院的Pastry項目等。這些系統一般都假定節點具有相同的能力,這對於規模較小的系統較為有效。但這種假設並不適合大規模的Internet部署。同時基於DHT的拓撲維護和修複演算法也比Gnutella模型和Kazaa模型等無結構的系統要複雜得多,甚至在Chord項目中產生了“繞路”的問題。事實上,目前大量實際應用還大都是基於無結構的拓撲和泛洪廣播機制,現在大多採用DHT方式的P2P系統缺乏在Internet中大規模真實部署的執行個體,成功應用還比較少見。
2.P2P網路應用模式
Internet最初產生和發展的一個主動力就是資源共用,也正是檔案交換的需求直接導致了P2P技術的興起,這是P2P最初也是最成功的應用之一,也正是針對這類應用的Napster使得人們在客戶/伺服器模式下開始重新認識P2P思想對人們使用網路習慣的影響。
隨著人們對P2P思想的理解和技術的發展,作為一種軟體架構,P2P還可以被開發出種類繁多的應用模式,除了最初的檔案交換之外,還出現了一些分布式儲存、深度搜尋、分散式運算、個人即時通訊和協同工作等新穎應用。其中最著名的例子是基於分散式運算的搜尋外星文明SETI@home科學實驗,每個志願參與者只需下載並運行類似螢幕保護裝置的方式,就可以貢獻自己閑置的計算能力,參與分析Arecibo射電望遠鏡的無線電磁波資料並回送計算資料,截至2004年12月,已有528萬志願者參加進來,獲得了相當於216萬年的CPU時間,僅一天的綜合計算就相當於67.46Tflops運算。另外,隨著SUN公司將其JXTA協議擴充到諸如個人數位助理(PDA)和行動電話等手持終端上,並允許人們屏蔽具體的物理平台進行資料共用和檔案交換等,P2P技術在移動通訊和智能網領域也開始呈現出較大應用前景。
3.P2P網路存在的問題
P2P最大的優點在於能夠提供可靠的資訊查詢,但從社會和法律意義來說,絕大多數的P2P服務都將不可避免地遇到智慧財產權衝突,也可能成為一些非法內容傳播的平台。同時由於缺乏中心監管以及自由平等的動態特性,自組織的P2P網路在技術層面也有許多難以解決的問題。
從某種意義上來說,P2P網路和人際網路具有一定的相似性。一般來說,每個P2P網路都是眾多參與者按照共同興趣組建起來的一個虛擬組織,節點之間存在著一種假定的相互信任關係,但隨著P2P網路規模的擴大,這些P2P節點本質所特有的平等自由的動態特性往往與網路服務所需要的信任協作模型之間產生矛盾。激勵作用的缺失使節點間更多表現出“貪婪”、“抱怨”和“欺詐”的自私行為,因此P2P中預先假設的信任機制實際上非常脆弱,同時這種信任也難以在節點之間進行推理,導致了全域性信任的缺乏,這直接影響了整個網路的穩定性與可用性。此外,相對於傳統客戶/伺服器模式的伺服器可以做主動和被動的防禦,由於P2P節點安全防護手段的匱乏以及P2P協議缺乏必要的認證機制和電腦作業系統的安全性漏洞,安全問題在P2P網路中更為嚴重,這將直接影響P2P的大規模商用。另外,P2P網路中的節點本身往往是計算能力相差較大的異構節點,每一個節點都被賦予了相同的職責而沒有考慮其計算能力和網路頻寬,局部效能較差的點將會導致整體網路效能的惡化,在這種異構節點的環境中難以實現最佳化的資源管理和Server Load Balancer。同時,由於使用者加入離開P2P網路的隨意性使得使用者獲得目標檔案具有不確定性,導致許多並非必要的檔案下載,而造成大量頻寬資源的濫用。特別是大多數P2P使用者更喜歡傳送音頻、視頻這些較大的媒體檔案,這將使得頻寬浪費問題更為突出,尤其在中國大量的使用者還是撥號使用者,較窄的頻寬也成為P2P應用難以逾越的障礙。