摘 要:本文分析了現有P2P模型結合到網絡教學直播中的不足之處,并以此提出一個改進型的P2P流媒體直播的模型,該模型融合了C/S和P2P技術各自的優勢,通過C/S的方式組織節點而通過P2P的方式分發數據,這使得此系統易于實現,并且有較強的健壯性、擴展性以及帶寬適應性。該模型并不是用來取代目前網絡教學直播系統的采用的C/S結構,而是作為C/S結構的一種輔助和補充,是對現有網絡教學直播系統效率和功能上的一種完善和提高。
關鍵詞:P2P 網絡教學 直播
網絡教育是一種基于互聯網的傳播手段進行學習與教育的一種新型的教育培訓方式。計算機技術、多媒體技術和互聯網技術的發展和普及為網絡教育提供了豐富的教育手段和教育資源,網絡教育的自主性、開放性等特點導致了龐大的網絡教育用戶群體[1]。
然而我國的網絡教育總體仍處于起步階段,這些網絡教育系統都是基于C/S或者B/S結構,教育資源位于中央服務器上,學員通過客戶端(或瀏覽器)學習。如果學員之間想互相交流,消息必須經過服務器的轉發。這種形式的優點是可以容易地實現用戶管理和安全控制等功能,系統可維護性好;缺點是這些系統普遍存在著交互性差、個性化差、實時性差、服務器負載大等問題,未能充分利用互聯網帶來的溝通方便和資源豐富等特點,尤其在網絡上的教學直播質量更會受到這種傳統模式的很大限制。
1.P2P技術
P2P技術是近年來興起的一種網絡技術,它是一種用于不同PC用戶之間、不經過中繼設備直接交換數據或服務的技術。P2P技術模式弱化了服務器的作用,甚至取消服務器。所有接入P2P網絡的設備都作為一個對等點而組成一個對等網,各對等點既可作為信息的提供者(服務方),也可作為信息的消費者(客戶方)。各對等點之間可任意通信而不需通過服務器的中轉。每個人可以直接連接到其他用戶的計算機,并進行文件的交換,而不需要連接到服務器上再進行瀏覽與下載。
目前,在我國網絡教學直播系統中,基本都是采用了C/S或B/S的架構來實現教學的直播服務,而基于單播的C/S架構的模型并不適合流媒體大規模數據的分發,當連接上服務器的用戶過多的時候就會影響直播的服務質量,造成服務器的擁塞。為了提高網絡教學中流媒體應用的QoS,基于P2P應用的P2P流媒體技術被提了出來,它把P2P技術應用到流媒體的傳輸上,每個流媒體用戶也是一個P2P中的一個節點。在目前的網絡教學直播系統中用戶之間是沒有任何聯系的,但是采用P2P技術后,用戶可以根據他們的網絡狀態和設備能力與一個或幾個用戶建立連接來分享數據,這種連接能減少服務器的負擔和提高每個用戶的視頻質量。P2P技術在流媒體應用中特別適用于一些熱門事件,即使是大量的用戶同時訪問流媒體服務器,也不會造成服務器因負載過重而癱瘓。此外,對于多人的多媒體實時通信,P2P技術也會對網絡狀況和視頻質量帶來很大改進。
作為應用于教學直播的平臺,連接的用戶數量必然沒有大規模直播時(例如國內國際重要新聞,重大賽事直播以及娛樂直播)所連接的用戶多,教學直播基本上用戶數量維持在幾十至數百上千的范圍內,節點的數量制約了教學直播中完全采用P2P網絡傳輸的質量,所以在這個規模下,本文設計的改進型P2P流媒體模型功能在于輔助提升原始C/S模式的傳輸質量。
2.典型P2P模型概述
目前P2P流媒體模型主要可以分為兩大類:基于樹狀拓撲協議及擴展的模型和基于Gossip協議的模型(Gossip-based protocol)[2]。
最初基于樹狀拓撲協議及擴展的模型把參與P2P流媒體的節點組織成一棵組播樹,樹的父節點負責為子節點傳送數據。目前,典型的模型是基于Gossip協議的模型(DONet)。
所有樹狀拓撲協議及擴展的模型都顯式地定義了節點與節點之間的關系,而在基于Gossip協議的系統模型中,節點之間不需要構造復雜的拓撲關系。基于Gossip的算法是目前流行的在P2P系統中分發消息的算法,一個典型的Gossip算法中,節點隨機地給系統中的部分節點發送消息,每個接收到消息的節點繼續向其它節點發送消息,重復這個過程,直到消息被發送給系統中的所有節點。基于Gossip協議的P2P流媒體系統并不顯式的構造節點之間的拓撲結構,而是通過Gossip協議,每個節點維護系統中部分其他節點的視圖,每個節點動態的和其它節點交換緩存信息,并根據緩存信息交換節點之間的媒體數據。在這種系統中,通常需要比較大的緩存,系統的啟動延遲相對比較大。但是,因為每個節點的數據來源并不依賴于某個特定的父節點,所以系統有更強的健壯性。典型的基于Gossip協議的模型為DONet。
3.改進的P2P流媒體模型
C/S模式具有安全性好、易于管理的特點,但是傳輸的負載過于集中,網絡效率低并且難以擴展。而P2P模式把上載分布到所有的節點,網絡效率高,擴展性好,但是節點間的組織與通訊比較復雜,需要額外的成本。本文提出一個融合C/S模式特點和P2P模式特點的模型:改進型P2P流媒體。
改進型P2P流媒體模型是基于Gossip協議的實時流媒體數據分發模型,并且類似eMule[3]、BitTorrent[4]的架構設計,采用融合了傳統C/S架構和P2P技術的混合式框架來實現的。
在模型設計之初,改進型P2P流媒體模型借鑒了DoNet模型中客戶端的架構思想來實現Gossip機制。比較起來,改進型P2P流媒體模型關鍵的改進點在于:在改進型P2P流媒體模型中將媒體源和節點管理功能進行了分離,改進型P2P流媒體模型的服務器只負責維護并管理系統中的節點信息,而把媒體源分離出來,作為一個特殊的客戶端參與系統的數據分發。
3.1系統模型
在改進型P2P流媒體中,P2P并不是用來取代C/S模式,而是作為一種補充,每個用戶節點都有兩種方式獲取媒體數據:從服務器直接獲取或者通過其它節點獲取。
改進型P2P流媒體的每個節點維護一個伙伴列表,節點可以從服務器或者伙伴節點獲取媒體數據。其實,服務器作為一個特殊的節點是所有節點的伙伴。節點和伙伴節點不斷地交換各自的緩存信息,然后根據伙伴的緩存信息,通過一定的數據調度算法從伙伴節點獲取媒體數據。如下圖所示,虛線代表控制消息的傳輸,實線代表媒體數據的傳輸。在圖中,Peer2,Peer3,Peer4和服務器都是Peerl的伙伴節點,Peerl從這些節點獲取媒體數據。節點的伙伴列表并不是固定的,節點在運行過程中會不斷的優化伙伴列表。

從系統的整體模型結構上來看,總體框架分為兩層結構:1)一層是由服務器與系統中的所有客戶端組成的C/S架構,所有客戶端均與服務器建立一條長連接;2)另一層是由包括媒體直播源在內的所有客戶端構成的一個無結構化的網狀節點群,節點之間借由Gossip機制并根據一定的選擇策略建立起連接。
3.2 改進型P2P流媒體服務器
改進型P2P流媒體服務器主要包括兩個模塊:節點管理模塊和數據服務模塊。
節點管理模塊的功能為響應節點請求并更新PeerList,并且為節點隨機選擇伙伴節點。負責維護系統中所有節點的信息,同時協助客戶端實現簡單Gossip協議。
數據服務模塊的功能為接收并管理其他節點的請求,并發送相應的媒體數據。
改進型P2P流媒體的服務器不參與系統的數據分發,作為整個系統的中央控制服務器,負責管理網絡中所有節點,維護所有節點的列表PeerList。在協助節點實現Gossip協議、節點信息管理等方面起到了重要的作用。其功能定位為節點信息的管理與維護。
3.3 節點信息的管理與維護
在此直播系統設計中只存在一個媒體源,媒體源也總是系統中第一個登陸進來的客戶端。其他客戶端節點加入網絡后,首先從服務器獲取初始的成員列表,記為MemberList。在程序運行過程當中,MemberList會被動態地更新,但新的節點信息并不是從服務器上獲取的,而是由節點向自己的伙伴節點請求它們的伙伴列表信息,并將返回的節點添加到自己的成員列表中。
服務器為每一個媒體源直播源維護一個保存所有節點信息的列表PeerList。為了實時地保證PeerList總是反映真實的P2P覆蓋網絡,服務器通過客戶端不斷發送消息來監控所有節點的動態情況。每個客戶端通過周期性地發送消息來向服務器證明其存在,如果服務端在預定的時間內未收到客戶的消息,則認為該客戶端已經下線。
由于引入了C/S的架構,并且在服務器端記錄了系統中包含所有節點信息的PeerList,利用服務器本文設計了一個簡單Gossip協議:在簡單Gossip協議中,節點的局部視圖仍然遵循SCAMP[5]協議的設計,但節點并不是通過與本地局部視圖中節點的Gossip交互來感知整個網絡的規模大小,而是由服務器在檢測到系統節點總數發生一定規模的變化時,將網絡規模變化通知給所有的節點。這樣,不用遵循概率約束,覆蓋網的所有節點也可以準確地知道網絡的大小,以調整自己局部視圖的大小。
3.4 改進型P2P流媒體客戶端
客戶端在設計上主要參考DoNet模型的客戶端架構思想,并借助服務器的協助實現了Gossip協議。在實際運行過程中,客戶端作為一個獨立的實體參與系統的數據分發,遵循Gossip協議與系統中的其它節點進行交互,通過不斷地優化伙伴節點以及設計良好的數據調度策略,達到提高本地媒體傳輸質量的最終目的。
客戶端節點的架構主要包含兩大模塊:數據接收模塊和節點服務模塊。
數據接收模塊負責從其他節點接收媒體數據,主要功能包括:
1) 伙伴節點管理和緩沖區的更新:動態地維護一個伙伴列表,并不斷地更新伙伴的緩沖區。
2) 數據調度算法,根據伙伴的緩沖區為每個數據片斷尋找一個最優的提供者。
3) 數據接收,根據調度結果同時從多個節點接收數據。
節點服務模塊負責媒體數據的分發,主要功能為接收并管理其他節點的請求,并發送媒體數據。
另外還有一個網絡監視和QoS控制模塊,主要功能為監測目前的網絡狀況,用于QoS控制。
3.5 伙伴的管理與優化
節點加入網絡后,首先從服務器獲取初始的伙伴列表,記為PartnerList,在程序運行中,PartnerList會被動態地更新,節點會不斷從服務器中選擇新的節點作為新的伙伴,這樣做主要有兩個原因:
1) 網絡中節點的不穩定性。網絡中的任何一個節點都有可能在任何時候離開,為了維護數量相對穩定的伙伴數目,一旦檢測到有伙伴離開,需要從服務器獲取新的節點加入到伙伴列表PartnerList。
2) 優化節點的伙伴。好的伙伴應該有比較大的輸出帶寬,并且物理連接上應該盡可能地近。為了選擇更好的伙伴節點,每個節點會為它當前的每個伙伴計算一個分數,在每一輪的調度后,節點會從伙伴列表中刪除分數最低的伙伴節點,并從服務器獲取一個新的節點作為伙伴節點。
3.6 數據的調度策略
調度的目的就是根據節點和伙伴的BM信息,如何盡快地從伙伴節點獲取媒體數據,不同的調度算法對整個系統的數據分發的性能有很大的影響。數據調度的主要約束有兩個:1)在播放時間的約束下,媒體數據必須在播放時間到達之前獲得,否則就沒有任何意義。2)分層可擴展編碼中,高層數據對低層數據的依賴,如果在播放時間到達之前沒有獲得基本層的數據,則所有獲得的增強層的數據都無法解碼,同樣沒有任何意義[6]。改進型P2P流媒體中的調度算法采用以下的原則:
·低層數據優先:改進型P2P流媒體調度算法的第一個原則就是優先傳輸低層的數據,因為在分層可擴展性編碼中,高層數據的解碼依賴于低層的數據。
·稀少數據優先:在系統中,如果某個片斷的提供者越少,就越難滿足播放時間Deadline的要求,因此,在改進型P2P流媒體中,節點首先獲取只有一個提供者的數據片斷,然后獲取有2個提供者的片斷,依次類推。在獲取多個提供者的片斷時,在可以保證Deadline的情況下,選擇帶寬最大的提供者。
·隨機選擇第一個數據塊:稀少數據優先的一個例外就是節點剛加入時選擇下載的第一個數據塊。從整個系統看,數據的總下載量等于數據的總上載量。在節點剛加入時,沒有任何數據可以提供上載服務,所以需要盡快獲取一塊數據,在獲得一塊完整的數據之后,節點才開始提供數據分發服務。然而下載稀少的數據往往比較慢,所以在選擇第一個數據塊時采取隨機的方式,在完成第一個數據塊的下載后,調度策略轉為前兩個策略。
4.總結
本文提出了一個新的改進型P2P流媒體模型,該模型融合了P2P技術和C/S技術的優點,可以在網絡帶寬效率、延時和可靠性三者之間做出更好的權衡。作為應用于教學直播的平臺,連接的用戶數量必然沒有大規模直播時(例如國內國際重要新聞,重大賽事直播以及娛樂直播)所連接的用戶多,教學直播基本上用戶數量維持在幾十至數百上千的范圍內,節點的數量制約了教學直播中完全采用P2P網絡傳輸的質量,所以在這個規模下,改進型P2P流媒體模型的設計在于輔助提升原始C/S模式的傳輸質量。
改進型P2P流媒體通過C/S的方式組織節點而通過P2P的方式分發數據,其主要特點為:1)易于實現,節點通過服務器集中管理,無需構造和維護復雜的組播樹,也不需要部署復雜的P2P組通訊協議。2)健壯性(robust),節點除了依賴于節目源節點,不依賴于任何其它特定的節點。3)擴展性(scalability),通過P2P的方式分發數據,用戶越多,分發越快。4)帶寬適應性(heterogeneity adaptive),用戶可以根據帶寬情況控制自己的QoS。
參考文獻:
[1]徐宏喆. 現代遠程教育平臺的研究與實現. 計算機工程與應用,2002,(4):217-220.
[2]陳洪,劉雙與,楊玉華. P2P技術發展與應用. 計算機工程,2003,29(19):127-130.
[3]Yoram Kulbak and Danny Bickso,“The eMule Protocol Specification”, DANSS Lab,Department of Computer Science and Engineering, The Hebrew University of Jerusalem, Israel, Jan 20,2005.
[4]Karl-Andre Skevik,Vera Goebel,Thomas Plagemann, “Analysis of BitTorrent and its use for the Design of P2P based Streaming Protocol for a Hybrid CDN”, Department of Informatics University of Osl.
[5]吳國勇,邱學剛,萬燕仔.網絡視頻流媒體技術與應用.北京:郵電大學出版社.
[6]劉寶旭等.對等網技術及應用概述.計算機工程與應用,2003,18:1.