孟凡淇
摘 要:P2P網絡被稱為對等網,每個節點的地位是對等的,既能充當網絡服務的請求者,又能對其他計算機的請求做出響應,提供資源和服務。P2P網絡結構是利用客戶端的處理能力,實現了通信與服務端的無關性。本文主要介紹P2P網絡的拓撲結構。
關鍵詞:P2P;拓撲結構;網絡
DOI:10.16640/j.cnki.37-1222/t.2016.24.129
計算機連接的方式叫做“網絡拓撲結構”(Topology)。網絡拓撲是指各種互連設備用傳輸媒體相連接的物理布局,主要是指計算機的分布位置和如何連接它們。在P2P系統中,所使用的節點構成了一個網絡拓撲的邏輯結構,這個網絡拓撲構的造過程中需要解決一系列的實際問題。這些問題包括如何標識節點、節點以何種方式進行組織、節點如何加入/退出網絡、如何高效查找節點和資源、系統容錯等。現在已經成熟的P2P網絡主要分為四類:集中式拓撲(Centralized Topology)、完全分布式結構化拓撲(Decentralized Unstructured Topology)、混合式拓撲(Decentralized Structured Topology)和完全分布式非結構化拓撲(Partially Decentralized Topology)。
1 集中式拓撲
集中式內容路由是提供路由查詢最直觀和簡單的方法。在P2P網絡中設置一個節點,稱為中心節點,所有其他節點和中心節點建立相應的連接關系,并把自身所擁有的資源索引信息都保存到中心節點上,從而使中心節點擁有全網的資源索引信息。當某個節點需要進行路由查詢時,向中心節點提交查詢關鍵字,中心節點遍歷資源索引表格,就可以很容易查詢全網是否擁有請求節點感興趣的資源。集中式只是針對路由查詢機制而言,在內容傳送上仍然是對等服務思想。也就是請求節點通過集中式的路由查詢機制定位出能夠提供內容服務的節點后,與這些節點分別建立傳輸通道實現并行傳送,而不是完全從中心服務器獲得內容。中心化拓撲結構的最大優點是維護容易、資源比較的發現效率較高且實現相對簡單。但是這種拓撲結構存在一些問題。集中式結構最明顯的缺點是中心節點連接其他節點過多時,需要存儲大量的資源索引信息,并且要保持資源索引信息的準確性和通信及時性,就必須不斷和其他節點保持信息的同步。當節點規模擴展時,中心節點很容易出現性能瓶頸。代表系統有Napster。
2 全分布式非結構化拓撲
打破集中式結構的最簡單辦法是在P2P節點之間建立隨機拓撲,也就是在一個新加入節點和P2P網絡中的某個節點間隨機建立連接通道,從而形成一個隨機拓撲結構。當一個節點需要進行內容路由時,節點向全網廣播查詢請求,每個節點收到查詢消息后搜索資源列表,查看自己是否有資源可以為請求節點提供服務。如果有,則向請求節點返回搜索結果,否則直接忽略請求。這種機制不需要中心節點存在,是一種純分布式的機制,但是網絡拓撲結構是隨機的,沒有典型的結構特征,因此這種機制稱為純分布式路由查詢技術。但是,隨著節點數目的不斷增多,網絡規模不斷擴大,無結構化的純分布網絡進行內容路由時,有很多致命的問題難以解決。特別是大規模節點消息響應風暴問題,在網絡規模過大時,當前沒有一個完善的機制可以解決,這也導致其超大規模應用面臨挑戰。采用這種拓撲結構最典型的案例有Gnutella。
3 全分布式結構化拓撲
全分布式結構化拓撲的基本思想是將所有節點按照某種結構(比如形成一種環狀網絡或樹狀網絡)進行有序組織,從而在路由消息的傳遞上避免廣播風暴,典型的算法有DHT和Chord。分布式散列表(Distributed Hash Table,簡稱DHT)是將一個關鍵值(key)的有限集合合理的分散到所有在分布式系統中的節點上,并且能夠將信息有效地轉送到唯一擁有查詢者提供具有關鍵值的節點。而Chord的組織結構式環網絡,該算法的核心思想是在資源空間和節點空間之間尋找一種匹配關系,使得請求節點能夠利用有序的網絡結構快速定位到相關索引所在的節點。由于P2P網絡中的節點較多,且具有不穩定性,這就要求DHT算法必須具有增量的維護能力。在面臨急劇的網絡膨脹和節點不穩定斷開時,節點的路由表能夠進行增量更新,節點的加入或離開不能讓網絡的路由表產生急劇的變化,而只需要維護少量的更新即可。
4 半分布式拓撲
半分布式拓撲結構,也稱作混雜模式(Hybrid Structure),它主要是吸取了全分布式非結構化拓撲結構和中心化結構的優點,其將主要節點分為為兩類。一類是所謂超級節點(Super Node,簡稱SN),另一類是普通節點(Ordinary Node,簡稱ON)。整個網絡可以看成是兩級結構,第一級是超級節點組成的一個類似隨機的拓撲網絡,每個SN下面由若干個普通節點組成,每個ON與SN建立鄰居關系,它們之間形成星型結構,但ON與ON之間沒有直接的鄰居關系。一個節點成功的加入P2P網絡,是作為SN還是ON,主要根據節點的CPU、內存、網絡帶寬等資源決定的。如果一個節點是普通節點,加入P2P網絡以后,會選擇一個SN進行通信,選中的SN節點隨后將推送包含多達SN的列表發給新加的節點,加入節點將會根據列表中SN的狀態決定選擇哪個具體的SN作為其父節點。采用這種結構的最典型的案例就是KaZaa。
5 總結
綜上所述,在P2P網絡拓撲結構中弱化了中心服務器的作用,使網絡中的每個節點能夠同時擔任信息的消費者和信息的提供者,并且具有同時信息通信方面的功能,因此,P2P網絡應用的實現擴展性很強,實現的方式靈活多樣,部署的成本低,給互聯網的發布和共享帶來了巨大的空間。
鹽城師范學院自然科學基金項目,編號14YCKL020