P2P技術原理及應用

P2P技術原理及應用
做 者:金海 廖小飛
摘要:對等網絡(P2P)有3種主要的組織結構:分佈式哈希表(DHT)結構、樹形結構、網狀結構。P2P技術已經延伸到幾乎全部的網絡應用領域,如分佈式科學計算、文件共享、流媒體直播與點播、語音通訊及在線遊戲支撐平臺等方面。如今人們已經開始將重心轉入到覆蓋層網絡的節點延時彙集研究、覆蓋網之間(Inter-Overlay)優化研究、P2P支撐平臺研究以及P2P安全研究等方面。
關鍵詞:對等網絡;分佈式哈希表;覆蓋層網絡
Abstract:ThePeer-to-peer(P2P)network has three main structures: Distributed Hash Table (DHT) structure, tree structure, and mesh structure. P2P technology has been extended to almost all areas of network applications, including distributed scientific computing, file sharing, streaming media on-demand and live broadcast, voice communications, and online gaming support platform. Now, study areas such as node latency aggregation for overlay network, Inter-Overlay optimization, P2P supporting platform, and P2P security are receiving more attention.
Keywords:P2P;distributedHash table; overlay network
1 P2P技術原理
什麼是對等網絡(P2P)技術?P2P技術屬於覆蓋層網絡(Overlay Network)的範疇,是相對於客戶機/服務器(C/S)模式來講的一種網絡信息交換方式。在C/S模式中,數據的分發採用專門的服務器,多個客戶端都今後服務器獲取數據。這種模式的優勢是:數據的一致性容易控制,系統也容易管理。可是此種模式的缺點是:由於服務器的個數只有一個(即使有多個也很是有限),系統容易出現單一失效點;單一服務器面對衆多的客戶端,因爲CPU能力、內存大小、網絡帶寬的限制,可同時服務的客戶端很是有限,可擴展性差。P2P技術正是爲了解決這些問題而提出來的一種對等網絡結構。在P2P網絡中,每一個節點既能夠從其餘節點獲得服務,也能夠向其餘節點提供服務。這樣,龐大的終端資源被利用起來,一舉解決了C/S模式中的兩個弊端。
P2P網絡有3種比較流行的組織結構,被應用在不一樣的P2P應用中。
(1)DHT結構
分佈式哈希表(DHT)[1]是一種功能強大的工具,它的提出引發了學術界一股研究DHT的熱潮。雖然DHT具備各類各樣的實現方式,可是具備共同的特徵,即都是一個環行拓撲結構,在這個結構裏每一個節點具備一個惟一的節點標識(ID),節點ID是一個128位的哈希值。每一個節點都在路由表裏保存了其餘前驅、後繼節點的ID。如圖1(a)所示。經過這些路由信息,能夠方便地找到其餘節點。這種結構多用於文件共享和做爲底層結構用於流媒體傳輸[2]。
(2)樹形結構
P2P網絡樹形結構如圖1(b)所示。在這種結構中,全部的節點都被組織在一棵樹中,樹根只有子節點,樹葉只有父節點,其餘節點既有子節點也有父節點。信息的流向沿着樹枝流動。最初的樹形結構多用於P2P流媒體直播[3-4]。
(3)網狀結構
網狀結構如圖1(c)所示,又叫無結構。顧名思義,這種結構中,全部的節點無規則地連在一塊兒,沒有穩定的關係,沒有父子關係。網狀結構[5]爲P2P提供了最大的容忍性、動態適應性,在流媒體直播和點播應用中取得了極大的成功。當網絡變得很大時,經常會引入超級節點的概念,超級節點能夠和任何一種以上結構結合起來組成新的結構,如KaZaA[6]。node


2 P2P技術應用現狀
因爲可以極大緩解傳統架構中服務器端的壓力過大、單一失效點等問題,又能充分利用終端的豐富資源,因此P2P技術被普遍應用於計算機網絡的各個應用領域,如分佈式科學計算、文件共享、流媒體直播與點播、語音通訊及在線遊戲支撐平臺等方面。
(1)分佈式科學計算
咱們知道,許多計算機的CPU資源並非時刻保持峯值運轉的,甚至不少時候計算機處於「空閒」狀態,好比使用者暫時離開等狀況。而P2P技術可使得衆多終端的CPU資源聯合起來,服務於一個共同的計算。這種計算通常是計算量巨大、數據極多、耗時很長的科學計算。在每次計算過程當中,任務(包括邏輯與數據等)被劃分紅多個片,被分配到參與科學計算的P2P節點機器上。在不影響原有計算機使用的前提下,人們利用分散的CPU資源完成計算任務,並將結果返回給一個或多個服務器,將衆多結果進行整合,以獲得最終結果。
世界最著名的P2P分佈式科學計算系統非「SETI@home」項目莫屬。SETI@home項目(簡稱爲S@H或SETI),由美國加利福尼亞大學伯克利分校在1999年發起,是至今最成功的分佈式計算項目。SETI@home經過分析從射電望遠鏡傳來的數據來搜尋地外文明,這在很多科幻迷甚至是不少普通大衆眼裏都是一個「很酷」的應用。SETI的早期版本截至2005年已經吸引了543萬用戶,分析了大量積壓數據。正如宇宙的浩瀚通常,須要計算的數據(即存在宇宙空間的無數無線電信號)也是海量的。能夠說,這幾百萬臺終端組成了一個目前最快的高性能計算機都可望不可即的「超級計算機」。
(2)文件共享
要問一百個網友目前中國最流行的文件下載方式,恐怕99個都會回答是「BT」。「BT」是BitTorrent[7]的簡稱,是一種依賴P2P方式將文件在大量互聯網用戶之間進行共享與傳輸的協議,對應的客戶端軟件有BitTorrent、BitComet和BitSpirit等。因爲其實現簡單、使用方便,在中國用戶之間被普遍使用。BitTorrent中的節點在共享一個文件時,首先將文件分片並將文件和分片信息保存在一個流(Torrent)類型文件中,這種節點被形象地稱做「種子」節點。其餘用戶在下載該文件時根據Torrent文件的信息,將文件的部分分片下載下來,而後在其餘下載該文件的節點之間共享本身已經下載的分片,互通有無,從而實現文件的快速分發。因爲每一個節點在下載文件的同時也在爲其餘用戶上傳該文件的分片,因此總體來看,不會隨着用戶數的增長而下降下載速度,反而下載的人越多,速度越快。
BitTorrent是一種無結構的網絡協議。除了BitTorrent以外,還有很多著名的無結構化的P2P文件共享協議,典型的有Gnutella[8]和KaZaA[6]。
Gnutella協議是一種最典型的徹底分佈式、無等級結構的P2P網絡模型。網絡中的節點隨機鏈接若干個其餘節點,稱之爲「鄰居」。這種結構可以很好地適應P2P網絡中節點頻繁加入與離開的動態特性,由於任意一個節點均可以被新加入的節點做爲「鄰居」而鏈接,任意一個「鄰居」也能夠隨意地離開網絡。同時,這種加入節點和離開節點的選擇是節點間的獨立行爲,隨機分佈於網絡之中。因此說Gnutella的網絡具備健壯性、實時性、可靠性、負載平衡等優點。
在Gnutella網絡中存在如下問題:
冗餘消息多,對帶寬的消耗存在必定的浪費。Gnutella網絡協議採用泛洪式(Flooding)消息傳播機制,這種消息傳播機制產生了呈指數級增加的冗餘消息。據統計,P2P軟件白天佔Internet上運行帶寬的40%~70%,晚上有時能達到80%。
搜索效率低,可擴展性差。Gnutella網絡的搜索協議將全部資源與節點統一對待,沒有考慮節點的性能差別,也沒有利用查詢成功的歷史經驗,使得搜索效率低下。
KaZaA協議中節點大致上也是無結構鏈接的。可是在KaZaA協議中存在一種「超級節點」。這種「超級節點」實際上是來源於各個普通的客戶端節點,但它們通常具備計算能力強、接入帶寬大、在線時間穩定等特色。在KaZaA協議中,超級節點承擔着部分服務器的任務,如管理部分普通節點,負責搜索消息的轉發等。每個節點上線後會尋找一個超級節點掛靠,並和原先掛靠在該超級節點下的其餘普通節點隨機相連,組成一個小的無結構網絡。普通節點的共享文件索引彙報給所掛靠的超級節點。於是,KaZaA網絡大致上能夠看做是兩層的無結構網絡,上層是超級節點組成的無結構網絡;下層是普通節點組成的多個無結構網絡,按所掛靠的超級節點分紅多個簇。當普通節點發起文件搜索請求時,將請求消息發給所掛靠的超級節點,超級節點從本身存儲的共享文件索引信息中查找區域內符合條件的文件,同時將搜索請求轉發給若干個其餘超級節點,由它們返回其區域內搜索結果。若是須要,這個轉發過程能夠執行多步以得到更大範圍內的搜索結果。這樣的混合式結構對異構的終端節點「分而治之」,能夠充分利用一些能力較強的終端節點來擔任「小」服務器的角色,可謂是「人盡其才,物盡其用」。
除了這些無結構的P2P文件共享協議以外,幾乎全部的DHT網絡均可以並已經用來實現文件共享的應用,如Chord、Pastry、KAD、CAN等應用。
(3)流媒體直播
曾經人們覺得P2P作文件共享最合適,但如今你們發現P2P模式是如此適合於流媒體直播,以致於研究熱點在很短的時間內迅速轉移到P2P的流媒體上來。中國最先的P2P流媒體直播軟件應該算香港科技大學計算機系研究的Coolstreaming[5]、華中科技大學集羣與網格計算湖北省實驗室研究的AnySee[9]以及清華大學的Gridmedia等系統。
Coolstreaming是一款基於網狀無結構網絡拓撲的流媒體直播軟件,中文名叫作「酷流」。在Coolstreaming中,每一個節點經過登陸服務器(BS)進入網絡,並獲得一些鄰居列表。每一個節點和鄰居之間共享媒體數據。Coolstreaming中節點共享媒體數據是基於一種稱做「數據驅動」的機制。首先,對於節點緩衝區內所擁有的數據,使用一種「緩衝映射表」(Buffer Map)來進行標記:對於每一秒的媒體內容,若是節點已經從節目源或鄰居處獲取,則標記該秒數據爲「1」,不然標記爲「0」。這樣,一個80秒長度的緩衝區就對應一個80位長度的緩衝映射表。其次,節點之間以「心跳」(Heartbeat)方式按期交換各自的緩衝映射表,經過比對獲得本身沒有而鄰居擁有的數據位,而後根據數據調度算法,選擇合適的鄰居,請求獲得相應的數據。Coolstreaming採起全網狀結構組織網絡中的節點,每一個節點鏈接20個左右的鄰居,在按期交換緩衝映射表的同時,還要交換本身的鄰居列表。這樣,在一個鄰居離開時,能夠從它最近提供的鄰居列表中選擇一個鏈接數沒有達到上限的鄰居做爲「替補」鄰居進行鏈接。最先期的Coolstreaming是採起隨機選取鄰居的策略,即從BS上隨機返回一些當前在線的節點列表,而後隨機從中選擇一些節點進行鏈接,在選擇「替補」鄰居時也是隨機的。這樣作同時又能夠達到必定程度的負載平衡效果,由於每一個節點鏈接的鄰居數基本是均勻的。可是這樣作的缺點也是明顯的,兩個距離很遠、鏈接不好的節點也可能被調度成爲鄰居,大大影響的系統的服務質量。
華中科技大學集羣與網格計算湖北省重點實驗室是中國最先研究P2P流媒體直播的小組之一,它所研發的AnySee軟件指望可以使得用戶在網上任什麼時候候任何地點都能觀看多媒體直播節目。
AnySee的第一個版本基於樹狀結構:節目源是一個多播樹的根節點,以後的節點被調度爲其「兒子」或子樹。每一個節點向其父節點索要數據,並將數據提供給多個子節點。這樣的結構可使得節點快速加入到網絡中,而且能夠根據IP鄰近原則構建起一棵IP多播樹,使得節點加入位置都是和本身IP鄰近的節點,從而優化服務質量。以後AnySee推出第二個版本,結合了原有的樹狀結構和流行的網狀結構,使得「控制數據走樹,媒體數據走網」,既能幫助節點快速定位到加入點,又能實現必定程度的負載均衡,並緩解了原有純樹狀結構中底層節點和頂層節點之間播放時差較大的問題。最近的AnySee版本已經取消了樹的結構,演化成了優化的網狀結構(如圖2所示),即每一個節點維護必定數量的鄰居成員,並從中選出最合適的「夥伴」節點與之交換數據。夥伴的數量既有上限又有下限,在不知足下限時,節點會不斷尋找新的合適節點加入夥伴列表;在達到下限時,節點中止主動尋找夥伴的過程,但能夠接受其餘節點將其加入夥伴列表的請求;在達到上限時,節點再也不和新的節點創建夥伴關係。
除了學術界對P2P流媒體直播的研究外,中國還涌現了不少成功的P2P流媒體直播商業產品,如PPLive、PPStream、沸點和TVAnts等,其中以PPLive最爲有名。PPLive目前擁有數百個頻道,在2006年「超級女聲」決賽期間,頻道觀看人數達到十萬人,能夠說是把P2P發揮到了極限。此外,國外也有很多對P2P流媒體直播的研究,如SplitStream[10]等。算法


(4)流媒體點播
因爲觀看直播節目時用戶不能選擇觀看指定片斷,因此在人們熱烈研究P2P流媒體直播時,已有人開始將目光轉向P2P流媒體點播服務。目前成功推出P2P流媒體點播的機構還很少,典型的有GridCast[11]系統、PPStream點播系統。GridCast也是一款由華中科技大學集羣與網格計算湖北省重點實驗室於2005年12月份成功研發並投入使用的對等視頻點播系統,具備支持多人共享點播片斷、跟蹤(Tracker)服務器用戶引導、環狀結構內容組織等特色。因爲一個點播頻道的人數每每不會太多,因此在用戶進行視頻錄放(VCR)操做時(即先後拖動播放點、暫停/繼續播放等操做),可否快速將用戶定位到觀看該點節目的其餘用戶處就成了P2P點播技術的關鍵。爲了實現快速定位,GridCast中採起了一種同心圓環的媒體內容組織結構。在每個節目頻道里,媒體內容按指數遞增的區間進行劃分,例如一個一個半小時的電影節目,可劃分紅[0, 5]、(5, 15]、(15, 35]、(35, 75]和(75, END=90]幾段,其單位爲分鐘。每一個節點記錄幾個正在觀看各個段之間內容的節點。這樣,在和AnySee相似的網狀結構中,能夠按期交換這種分段記錄,從而,在某個用戶拖動觀看點時,能夠快速定位到相應段的記錄節點處,並從這些節點當時所觀看的區間內獲得大量備用記錄以請求該區間媒體數據。此外,GridCast還根據用戶習慣對數據調度策略進行優化。
(5)IP層語音通訊
IP層語音通訊(VoIP)是一種全新的網絡電話通訊業務,它和傳統的PSTN電話業務相比有着擴展性好、部署方便、價格低廉等明顯的優勢。在全球範圍內的VoIP應用中,因爲通訊各方可能處於不一樣的網絡情況下,因此採起少數幾個服務器來進行話音包中轉不只存在壓力過大的問題,還可能沒法爲指定通訊雙方提供滿意的通話質量保證。因此採起P2P技術動態自適應地根據通訊雙方網絡進行鏈路控制與消息轉發是可行的解決方案。
目前風靡全球的Skype[12]便是一款典型的P2P VoIP軟件。Skype因爲可以提供清晰的語音質量和免費的服務,使用起來又方便快捷,因此吸引了全球數千萬的用戶,天天在線用戶達500萬人,而且註冊用戶數天天增長15萬。基本上,Skype採起相似KaZaA的拓撲結構,在網絡中選取一些超級節點。在通訊雙方直連效果很差時,一些合適的超級節點則擔當起其中轉節點的角色,爲通訊雙方建立中轉鏈接,並轉發相應的語音通訊包。
(6)網絡遊戲平臺
大型網絡在線遊戲和網絡對戰遊戲是很多「網蟲」的至愛。但因爲服務器能力有限,大型網絡在線遊戲每每須要限制場景人數或者不斷增長服務器,而網絡對戰遊戲也必須侷限在局域網內進行或者依賴獨立的服務器端程序及機器實現Internet上的電子競技。目前,已有研究人員將P2P技術引入網絡遊戲和網絡遊戲支撐平臺中。
目前較爲成功的P2P遊戲平臺是華中科技大學集羣與網格計算湖北省重點實驗室推出的PKTown[13]系統。PKTown系統是一個支持多種網絡對戰遊戲的P2P平臺。P2P網絡對戰遊戲平臺的難點在於將嚴格延時約束的節點彙集在一塊兒,這由對戰遊戲自己要求所決定:延時是影響對戰遊戲用戶體驗的關鍵因素。在衆多在線用戶中,如何將新加入用戶調度到周圍都是延時鄰近的環境中去呢?PKTown也是採起GridCast中出現過的指數增加的同心圓環方式,很好地解決了這個問題。
PKTown不須要改變遊戲自己的代碼,而是將用戶和Internet鄰居組建成一個虛擬局域網,將遊戲發出的通訊包截獲後負載上虛擬局域網的地址,轉發出去,遊戲進程接收到以後認爲是來自同一局域網的遊戲包,則能夠正常進行遊戲。目前PKTown支持魔獸爭霸、星際爭霸和反恐精英幾款遊戲,已經在高校範圍內進行公測,併成功舉辦華中科技大學第三屆Race War遊戲大賽,用戶反應良好。
3 結束語
自P2P技術從1999年出現以後,如今已經發展繁榮起來。前文中提到的不少技術都已經趨近成熟,如拓撲構建和內容分發等相關技術。因爲P2P架構靈活,適用面廣闊,因此將P2P應用到新領域的現象層出不窮,P2P的軟件產品也如雨後春筍通常爆炸性增加。
經過本文的描述能夠看出,P2P蹬基本原理是容易實現的,人們的研究方向也由基礎架構的構建和維護及優化算法等桎梏中擺脫出來,開始深刻到P2P技術的根本性問題中去。最新的研究成果代表,很多研究人員已經開始將重心轉入到覆蓋層網絡的節點延時彙集研究、覆蓋網之間(Inter-Overlay)優化研究、P2P支撐平臺研究以及P2P安全方面的研究等方面。相信隨着對P2P技術研究的不斷深刻,人們可以對P2P計算有一個更深刻的認識並解決目前P2P領域中大部分科學問題。能夠預見,P2P所帶來的技術創新和應用創新還將繼續。
做者簡介:
金海,華中科技大學特聘教授、博士生導師,華中科技大學計算機學院院長。長期從事計算系統虛擬化、網格計算、對等計算、集羣計算等相關領域的研究。獲國家發明專利14項。已發表學術論文300餘篇,被SCI、EI索引收錄160餘篇次。廖小飛,博士,華中科技大學副教授。從事對等計算、流媒體服務等領域的研究。已發表論文30餘篇,其中被SCI、EI等索引引用10餘篇次。安全

相關文章
相關標籤/搜索