当前位置 - 股票行情交易網 - 金融財經 - 有關P2P技術問題

有關P2P技術問題

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]。

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所帶來的技術創新和應用創新還將繼續。