PeerCast系統介紹
1 概述
PeerCast[1,2]是開源的P2P流媒體軟體,P2P流媒體與傳統的流媒體不同,沒有集中的中央流媒體伺服器,任一節點都可作為種子節點進行廣播,每個節點在作為Client從别的節點接收媒體資料進行播放的同時,也要作為Server向其它節點提供服務,其服務品質随着整個網絡節點數目的增加而提高,與傳統的流媒體伺服器相反。
目前PeerCast僅支援廣播,暫不支援VOD形式的點播。支援的流媒體格式:MP3、WMA、 AVS、WMV 和NSV等。
本文主要介紹PeerCast的系統結構、工作流程、P2P算法以及存在的問題。
2 系統簡介
2.1 系統結構
PeerCast系統結構
系統主要由流媒體伺服器(提供廣播源)、PeerCast(廣播/中轉)、播放器(播放PeerCast獲得的媒體資料)和Yellow Page(管理和顯示頻道資訊)組成。
Yellow Page包括PeerCast(不同與其他PeerCast,整個系統隻有一個,負責組織、管理PeerCast之間的頻道資訊通訊)和頻道Web頁面(顯示頻道資訊)兩部分。
頻道以廣播源節點為根組成一個樹狀結構。
2.2 網絡協定
PeerCast網絡協定
目前支援的流媒體協定有HTTP、MMS和RTSP,媒體源和廣播的PeerCast之間使用這些協定連接配接。另外在播放器和本地PeerCast之間也使用和媒體源相同的協定,從本地PeerCast擷取收到的資料、播放。
PeerCast之間使用PCP協定(自定義協定),資料和路由資訊均通過PCP協定傳遞,PCP協定是在TCP/UDP傳輸層之上的應用層協定,目前系統傳輸層使用的是TCP協定。
Yellow Page有2部分組成:PeerCast和Web頁面,PeerCast管理整個系統PeerCast之間的頻道資訊通訊,Web頁面從PeerCast的特定端口讀取以XML形式組織的頻道資訊,并将資訊解析為HTML,釋出在Web頁面。
2.3 頻道組織結構
PeerCast頻道組織結構
PeerCast頻道組織采用了樹狀結構,以頻道源為根節點組成了應用層多點傳播樹。頻道源通過Tracker實作對外路由資訊傳遞,頻道源将頻道資訊廣播到Tracker,Tracker将收到的資訊傳遞到YP,是以,YP有全部頻道的路由資訊。Tracker用于連接配接廣播源和Yellow Page,由網絡中相對比較穩定的節點(比如廣播源)組成。
3 工作流程
3.1 頻道廣播
頻道廣播
1. 建立頻道,生成一個唯一的用16個位元組表示的頻道ID,配置設定頻道緩沖區;
2. 與Media Server建立網絡連接配接并開始接收資料;
3. 連接配接到YP獲得Tracker;
4. 連接配接Tracker,釋出頻道資訊(ID和IP等);
5. Tracker将收到的頻道資訊廣播到YP;
6. Yellow Page的Web頁面通路PeerCast(Yellow Page)獲得頻道資訊,以HTML形式釋出。
3.2 頻道中繼
頻道中繼
1. 與上遊節點(流媒體伺服器或者别的PeerCast節點)建立網絡連接配接,并接收頻道的媒體資料包;
2. 将接收到的資料包放入該頻道的循環緩沖隊列;
3. 接收到下遊節點(别的PeerCast節點或者本節點的媒體播放器)的連接配接請求後,向其發送循環緩沖隊列中的資料包。
3.3 頻道播放
頻道廣播
1. 從YP的Web頁面看到某個頻道,點選播放,系統将播放參數傳遞給PeerCast,PeerCast向YP查詢頻道的位置;
2. YP根據路由表和路由選擇算法傳回多個頻道源(可能是Relay)給PeerCast;
3. 與上遊節點建立網絡連接配接,将接收資料包放入循環緩沖隊列;
4. PeerCast調用Player,将收到媒體資料映射為包含URL的媒體檔案,并将位址傳給Player,Player通過此位址連接配接PeerCast,擷取循環隊列中的資料。
4 算法原理
4.1 路由協定傳遞
路由協定傳遞
一個PeerCast維護4類對外的連接配接:CRelay(PeerCast所看頻道的上遊或通過該PeerCast看頻道的下遊)、COut(PeerCast相連的Tracker)和CIn(PeerCast作為其他節點的Tracker)。與某個頻道相關的路由資訊(例如某個頻道增加了觀看者,即多了一個資料源提供者)在CRelay之間傳遞。新廣播的頻道和新增Tracker(某個節點成為Tracker,廣播源節點有機會成為Tracker)的資訊在COut和CIn之間傳遞。
路由資訊通過頻道的資訊更新函數(broadcastTrackerUpdate)定時産生,使用與其相連的PeerCast向外傳播,頻道資訊更新函數是路由資訊傳遞的源動力。
4.2 查找算法
YP收到請求某個頻道的路由資訊時,查詢其路由表,根據最近最少使用和頻道源節點的帶寬容量,傳回多個頻道源位址。最近最少使用:距離上次通路時間差最長的節點。帶寬容量:節點目前提供服務的帶寬總和小于其設定帶寬。
如果YP本身有被查找頻道的資料,并且符合查找算法的要求, YP将為請求端服務,建立發送對象從該頻道的循環隊列讀資料發送給請求端。
查找算法流程圖
查找算法流程圖說明:
同一網絡:使用内網IP,在一個網關(NAT)内的節點,這些節點的特點是對外連接配接使用同一個IP。
NAT内節點:使用内網IP的節點,這些節點位于網關内,是以又稱為防火牆内的節點。
發送連接配接資訊到NAT内節點:由于使用内網IP的節點不能夠接受外部連接配接,是以當請求頻道的節點IP為外網IP,而頻道源節點為内網IP時,将通過與頻道源節點連接配接的Tracker給位于内網的頻道源節點發送消息,通知有外網節點需要其媒體資料,頻道源節點收到消息後主動向外網請求節點發起連接配接,傳輸媒體資料。這是穿越NAT的一種方法,由NAT内的節點主動發起連接配接。
4.3 離開/斷線處理
4.3.1 路由表
通過4.1提到的路由傳遞機制,本地儲存了與其相連的PeerCast發送的路由資訊。在需要查找路由資訊時,先查找本地路由表,如果沒有則求助YP。
4.3.2 斷線/離開
當檢測到連接配接節點斷線時,先查找本地路由表獲得路由資訊,連接配接新的接點;如果查找或連接配接失敗,則連接配接到YP獲得路由資訊。
對離開沒有進行單獨處理,節點離開相當于斷線。
5 問題和讨論
5.1 存在的問題
5.1.1 查找政策
目前的路由查找政策是最近最少使用和服務帶寬容量相結合,沒有考慮節點之間的延遲,根據延遲選擇最佳節點。
5.1.2 斷線/離開重連
斷線/離開時,節點所服務的子節點各自處理,子節點查找本地的路由表或連接配接到YP獲得頻道源,連接配接新的頻道源擷取資料。這種處理增大了子節點的媒體中斷時間,降低了收看的品質。
5.1.3 樹的平衡
算法在節點加入和離開時沒有平衡樹的結構,這将使樹結構不平衡、層次比較高,進而增加了節點之間的傳遞延遲。
5.1.4 樹型結構的缺點
樹型結構的特點是節點僅從一個上遊節點擷取頻道資料,不能很好的發揮P2P優勢。
5.2 未來計劃
PeerCast盡管有一些問題和不完善的方面,但提供了一套完整的P2P流媒體解決方案,有很多可以借鑒的地方,比如頻道釋出和Yellow Page管理等。
在今後的研究中,計劃在PeerCast基礎上重構一個P2P示範平台。
平台有以下幾個特點:
1. 系統架構松散,可擴充,能夠運作多種P2P算法,以便于對比分析和研究算法。
2. 能夠輸出完備的測試資訊,比如:媒體延遲、帶寬占用、流暢度和掉線影響度等,通過這些資訊可以量化P2P算法。
3. 基于DirectShow的播放器。目前對于标準的ASF和WMV等媒體源,使用Windows Media Player播放,對于基于RTSP的AVS頻道源,使用mpeg4ip中的播放器播放,該播放器效率和穩定性不高。是以需要設計基于DirectShow的AVS P2P播放器。另外,可以将播放緩沖和P2P的緩沖相結合,提高播放流暢度,降低延遲和抖動。
6 參考資料
[1] www.peercast.org
[2] H. Deshpande, M. Bawa and H. Garcia-Molina, “Streaming Live Media over a Peer-to-Peer Network”, Stanford database group technical report (2001-20), Aug. 2001.
本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/anqiongdy/archive/2006/10/24/1348635.aspx