凌 燕,藍善禎,徐 品,潘 麗
(中國傳媒大學信息工程學院,北京 100024)
近幾年來,與文件共享系統相比,流媒體系統的邊下載邊播放特點使其日益流行。早期的流媒體系統都采用客戶機/服務器模式(C/S模式),客戶機必須與源服務器連接,才能從源服務器下載自己想要的內容。客戶機數量的增加會提高對服務器上傳帶寬的要求,系統可擴展性無疑是很大的挑戰。CDN模式的出現在一定程度上解決了這個問題,其弱化了源服務器的功能并減輕負載,網絡的擴展性得到改善,然而,服務器數量的增加使得網絡可擴展性仍然不是很好。后來出現了對等網絡(P2P)共享系統,其主要思想是:節點之間相互平等,沒有服務器與客戶機之分,索取資源的同時也貢獻資源[1]。
P2P流媒體系統主要應用于視頻直播和視頻點播。目前P2P視頻直播有PPLive,PPStream,UUSee等,P2P視頻點播系統有WebPlayer,VeohTV等。
P2P流媒體技術在實際應用方面的優勢不可否認,但是,它也有許多問題需要進一步解決。在P2P里,每個節點都是平等的并且處于高度動態的環境中,選擇提供數據的節點、選擇傳輸數據的路由、充分利用節點帶寬、減小節點的加入與離開對系統的影響等都是P2P流媒體系統要考慮的關鍵技術問題[2]。
在P2P系統中,獲取擁有所需Chunk的節點列表、從列表中選擇合適節點這兩個問題同屬組建鄰居節點。而資源定位就是為了解決鄰居節點的組建問題。兩種不同資源索引方式的主要區別在于網絡拓撲與數據存在位置是否有比較強的關聯。同時,選擇合適的節點,有利于提高數據的傳輸效率及充分利用節點的上傳帶寬。
非結構化P2P系統被認為是第一代P2P系統,主要用于共享和存儲文件,系統中節點之間的邏輯連接是隨機建立的,由于分布式環境的異構性,非結構化索引一般采用泛洪(Flooding)的方式來搜索資源節點。非結構化索引主要有集中式、純P2P和混合P2P這3種。如圖1所示。

圖1 不同索引方式P2P系統
1)集中式
集中式索引是由中心目錄服務器(以下簡稱服務器)負責保存節點地址信息和資源信息,如圖1a所示,典型代表有Napster。所有節點與服務器交流,由服務器返回擁有資源的節點列表。集中式索引存在很多問題,中央服務器的存在容易導致整個網絡的崩潰,同時節點數越多,對服務器的性能要求越高。但對于小規模網絡而言,在中央服務器不損壞的情況下,它擁有快速查找資源的優勢,結構簡單,因而曾風靡一時。
2)純P2P
在純P2P系統中,沒有任何形式的服務器,所有節點都是平等的,這也是最初提出P2P思想的主要依據。如圖1b所示,典型代表有Gnutella 0.4和Freenet。由于沒有管理節點信息的服務器,節點之間只能通過相互交流(如相互之間交換各自的狀態信息)獲得覆蓋網的相關信息,得到節點列表。信息的查詢只能采用泛洪方式。
3)混合P2P
混合P2P非結構化索引將集中式和純P2P方式結合起來,充分利用了它們各自的優勢,如圖1c所示,典型代表有Gnutella 0.6和Skype。節點查詢時,選擇最近的目錄服務器。
結構化P2P系統被認為是第二代P2P系統。所謂結構化,就是系統的網絡拓撲與數據位置之間具有非常強的關聯關系,典型代表是基于DHT分布式哈希表的索引方式。
1)DHT
在不需要服務器的情況下,每個客戶端負責一個小范圍的路由,并負責存儲一小部分數據,從而實現整個DHT網絡的尋址和存儲,如 Tapstry,Pastry,CAN,它們都是基于DHT算法,只是具體路由策略不同而已。DHT僅支持精確查找,無法支持模糊查找。針對這個缺陷,Harren[3]提出了支持模糊查找的方法:將索引關鍵字分成多個域,每個域都進行DHT匹配,因而更靈活。Chord[4]則將節點ID和資源標識(Key)的哈希值按大小順時針首尾相連排列成Chord環,負載均衡和穩健性得到提高,但同時也存在繞路問題。
2)Skip List和Ring
除 DHT 索引之外,Dynamic Skip List[5]和 Ring[6]方式也屬于結構化索引。Skip List中,以節點的播放位置為Key,依照各個節點的播放位置相對距離,建立多層Skip List。每一層中相鄰節點之間建立鏈接,并且,每個節點隨機地與上層節點之間建立連接。節點能在與節點數量成對數關系的時間內,重新定位到擁有所需資源的節點。Ring中,以視頻播放位置為圓心,根據其他節點播放位置與圓心的距離遠近,建立一個冪律半徑的同心圓環(Ring),組成索引路由表,來維持遠近不同的鄰居節點,并且使用Gossip方式來更新路由表。這兩種方法主要用于P2P點播系統。
如何從索引得到的節點列表中選擇合適的節點組成鄰居節點是節點選擇考慮的問題。最早最簡單的方法是隨機選擇,即不考慮任何因素,隨機選擇一定數量的節點用于數據交換。雖然不能確保選到很好的節點,但是,它有利于網絡的均衡性。這種方法選擇的目標節點的物理位置往往與本節點相距很遠,導致數據的傳輸速率較低,同時可能造成跨不同運營商流量。因此,通過位置感知獲得節點間網絡距離,選擇離自己較近的節點是節點選擇里非常重要的方法。目前位置感知策略主要有基于往返時延(Round-Trip Time,RTT)和基于網絡拓撲。
基于往返時延位置感知主要根據兩節點間通信時延判斷出節點間的網絡距離,時延較短,說明兩者距離較近。網絡規模較大時,此種方法必定會增加網絡通信開銷,因此有學者提出采用節點的網絡坐標推算網絡距離,而無須直接通信,如 Vivaldi[7]。
基于網絡拓撲位置感知主要通過掌握網絡拓撲結構,得出節點位置信息。主要方法是基于網絡前綴匹配的拓撲感知、基于路由表信息的拓撲感知、基于TraceRout的拓撲感知和Ping方法。Ping方法對鄰居節點進行Ping操作,得出兩者之間經過多少網段,從而選出最近的節點,如系統 TopBT[8]。
除了物理位置,節點異構性也能決定節點的選擇。節點異構性主要表現為帶寬、存儲和信息處理能力不同。在節點選擇時,可以根據這些因素來適當選取目標節點,同時,系統應該匹配具有相似帶寬能力的節點互聯。基于物理位置和節點異構性的節點選擇方法使得選擇的節點物理位置更近,傳輸更快,得到的服務更好,但是,它提高了某些節點負載過重、某些節點被冷落的概率,因此,不利于網絡的負載均衡性。
為了獲得更好的用戶體驗及系統各項開銷最小化,資源定位解決了搜索最佳目標節點以獲得最佳內容服務的問題,而節點間視頻流的傳輸效率也是必不可少的因素。本節根據在傳輸過程中角色的不同,主要從傳輸路徑、傳輸方式和傳輸內容來分析傳輸對整個系統的影響。
節點與鄰居節點以什么方式組合起來才能高效傳輸數據,即傳輸拓撲要解決的問題。分兩種結構,即基于樹(Tree-based)結構和基于網狀(Mesh-based)結構。
1)基于樹結構(Tree-based)
典型系統有Overcast。如圖2所示,Chunk按順序傳輸,形成媒體流。節點間父子關系的確定,使得媒體流傳輸快、延遲小。但是,樹結構有明顯的缺點:當某一節點離開時,其子節點無處下載數據,因此樹的構建與維護將占用很多開銷,同時,節點上傳帶寬的限制使得每個節點只能有特定數量子節點,增加樹的深度值,然而樹越深,數據傳輸到葉子節點的時間就越長。因此,樹的寬度和深度是一個矛盾體。

圖2 單樹結構
圖2的單樹結構中,葉子節點的上傳帶寬沒有被充分利用。而圖3所示多樹結構解決了這個問題,節點3存在于兩棵樹中,既是葉子節點,也是中間節點,下載數據的同時也上傳數據。樹的這種直接從上到下的傳輸方式,正好滿足流媒體直播系統中所有節點的同步性。然而,流媒體點播系統具有節點異步性,針對利用樹結構來滿足VCR操作,很多學者提出不少解決方法,其中典型的有P2cast[9]和緩存覆蓋一定寬度數據的滑動窗口的Cacheand-Relay[10]方法。

圖3 多樹結構
2)基于網狀結構(Mesh-based)
典型系統有 CoolStreaming[11],Prime[12]等,根據資源和帶寬來動態建立、消除拓撲結構和鄰居關系。針對網絡的動態性,節點之間會定期交換Keep-Alive信息,以時刻恢復有效的網狀結構。節點的數據來源不是固定于某一個或幾個父節點,因此,穩健性是網狀結構最突出的特點。然而,動態的結構也使得流媒體數據傳輸效率難以預測。在樹結構里,數據傳輸有規定路線,在結構變化不大的情況下,流媒體能達到很高的連續性。在網狀結構里,不同Chunk經過不同路線到達目的節點,到達順序與播放順序的不一致將導致啟動延時長、回放不連續等現象。
數據調度研究以何種方式傳輸數據,目前,主要有推(Push)模式、拉(Pull)模式和混合(Push+Pull)模式。
1)推(Push)模式
這種方式主要用于樹結構,父節點直接將數據推給子節點,如TURINstream[13]。網狀結構的父子關系不確定性會導致兩個節點把同一Chunk推給同一個節點,浪費了節點的上傳帶寬,這就需要計劃好推Chunk策略。當節點加入或離開系統時,又需重新計劃策略,增加了系統的控制開銷。
2)拉(Pull)模式
耐密型玉米品種由于密度的增加,必然增加播種、施肥、收獲等勞動強度。由于農村勞動力轉移,農村只剩下老弱婦幼,推廣精量播種、機械化管理、機械化收割,有利于耐密型品種的推廣。
為了避免Push模式的弊端,自然的方法就是采用Pull模式,它主要用于網狀結構中,如 CoolStreaming,PPLive等。通過節點之間定期地相互交換Buffer Map來了解所有節點擁有的Chunk信息,繼而可以有選擇地發出請求信息,避免了Chunk傳輸時的冗余。然而,頻繁的交換Buffer Map信息和請求信息會增加系統的開銷,導致傳輸延遲。
3)混合(Push+Pull)模式
針對Push和Pull兩種模式各自的優點,Zhao等提出將兩種模式結合,如系統Gridmedia[14]中,時間被分為時間片,當有新節點加入或鄰居節點離開,下一個時間片采用Pull模式,其余時間片均采用Push模式。根據上述知識可知,網絡結構動態變化時,采用Pull模式,正是利用其以增加系統開銷為代價來消除Chunk冗余的特點。網絡結構不變的情況下,充分利用Push模式傳輸快、無需額外系統開銷的特點。
視頻點播系統中,各節點同一時間播放不同的Chunk,如何選擇Chunk確保其有效性及均衡性,是數據片選策略要解決的問題,主要有稀少優先策略[15]、播放順序策略和預取策略[16]。
稀少優先中,根據數據塊的密度,當擁有某數據塊的節點數最少時,優先下載此塊,減小因數據塊的離開而導致整個系統中無處下載此塊的危險性。播放順序策略主要根據離當前播放點的距離遠近,將數據分為高優先級和低優先級兩個集合,按照一定比例p在這兩個集合中選擇數據片段通過稀少優先的策略下載。Toast[17]結合上述兩種思想,將當前播放點之后的數據區域分為放棄(Giving up)區域、順序(In-order)選擇區域以及Beta隨機選擇區域,如圖4所示。放棄區域通過基于片段的長度、客戶端的下載速率以及視頻的碼率進行預估后無法下載完成,直接放棄下載;順序選擇區域中的片段是鄰近播放點的片段;Beta隨機選擇區域是在順序選擇區域已經填滿或者片段無法獲得時選擇這個區域內的片段。預取策略:在節點下載接收流媒體數據的同時,根據視頻服務器和網絡的空閑資源,預測節點將要訪問的后續資源,并預先下載媒體流緩存到代理服務器,從而解決節點播放視頻抖動問題。它有效利用存儲空間,降低用戶訪問延遲及確保用戶能持續獲得流媒體數據。

圖4 Toast數據片選擇策略
在P2P流媒體系統中,傳統視頻編碼將媒體編碼成單個碼流進行傳輸,當網絡動態性導致收不到碼流時,節點將無法播放相應視頻片段。后來學者提出將多描述性編碼(Multiple Description Coding,MDC)和可伸縮編碼(Scalable Video Coding,SVC)應用到P2P流媒體系統中。根據MDC和SVC編碼特性設計合適的數據調度策略,能在播放連續性、適應網絡靈活性等方面進一步提高系統性能。
采用MDC編碼時,系統將視頻編碼成多個同等重要、可獨立解碼的碼流(即描述),接收的描述數量越多,解碼后的視頻質量越好,典型系統有CoopNet。傳輸時,若某個描述存在丟包或延遲長等現象,描述之間的獨立解碼特點使得接收方仍可根據已收到的描述解碼出相應的視頻,只是播放質量降低,其主要以降低觀看質量為代價來提高播放的連續性。
在P2P系統中,有些節點只下載數據而不提供上傳服務,被稱為自私節點。設想如果系統中大量存在此類節點,系統性能必將受到嚴重影響。因此,合適的激勵機制對于P2P系統來說至關重要。比如Liu[18]采用MDC方式編碼,對于提供上傳帶寬越多的節點,使其收到的媒體描述越多,因而解碼后的視頻質量越好。
本文主要從資源搜索效率和結構穩健性闡述不同索引方式,從數據傳輸效率介紹數據傳輸技術。集中式索引主要用于小規模網絡,純P2P式用于要求可擴展性好、大規模的網絡。樹結構中,子節點只需向父節點獲取,不需索引,因此,這些索引方式主要針對動態的網狀結構。隨機節點選擇保證了網絡的負載均衡性。在局域網內,各節點間物理距離相差不大,隨機節點選擇就能獲得很好的傳輸服務,對于廣域網,節點的物理位置和性能相差很大,因此構建系統時,多考慮這些因素。確定的節點父子關系的樹狀數據拓撲結構,多運用于同步性應用,如視頻直播系統。同時也使得推模式成為其主要數據調度方式,而拉模式多用于網狀結構。Chunk的選擇策略主要針對點播系統而言。每種方式都有自己的優點和不足之處。在實際構建P2P系統時,應根據實際需求來選擇不同方法。
構建P2P系統,除了上述關鍵技術需要考慮之外,一些實際限制條件也有待解決。
1)知識產權問題
P2P最突出特點就是節點之間直接交換數據,無需服務器的參與,這是內容提供商不愿看到的。所以自從第一個P2P系統Napster誕生以來,出現許多內容提供商(如RIAA)與P2P公司之間的官司,因此與媒體發布者之間建立互利之道是未來的發展方向。
2)帶寬問題
對于用戶來說,P2P非常方便,這種便利急劇增大了P2P下載流量,占用大量網絡資源,減少了ISP的盈利。因此,管理網絡中流媒體阻塞以保持基礎設施的穩定是ISP要考慮的問題。
3)安全問題
由于沒有服務器的管理,節點之間直接交流使得一些反動、色情等不良信息波及更大范圍。因此P2P技術帶來了更多額外安全問題。
[1]劉健文.P2P應用在廣電寬帶網的運營探討[J].電視技術,2005,29(S1):26-28.
[2]詹曉濤.CDN與P2P相結合的流媒體系統設計[J].電視技術,2009,33(6):67-70.
[3]HARREN M,HELLERSTEIN J M,HUEBSCH R.Complex queries in DHT-based peer-to-peer networks[C]//Proc.Peer-to-Peer Systems:Lecture Notes in Computer Science.Berlin:Springer,2002:242-250.
[4]STOICA I,MORRIS R,KARGER D,et al.Chord:a scalable peer-topeer lookup service for internet applications[C]//Proc.ACM SIGOMM’01.[S.l.]:ACM Press,2001:149-160.
[5]WANG D,LIU J.A dynamic skip list based overlay network for on-demand media streaming with VCR interactions[J].IEEE Trans.Parallel and Distributed Systems,2008,19(4):503-514.
[6]CHENG Bin,JIN Hai,LIAO Xiaofei.RINDY:a ring based overlay network for peer-to-peer on-demand streaming[EB/OL].[2010-09-09].http://grid.hust.edu.cn/chengbin/document/UIC06.pdf.
[7]DABEK F,COX R,KAASHOEK F,et a1.Vivaldi:a decentralized network coordinate system[EB/OL].[2010-09-09].http://pdos.csail.mit.edu/papers/vivaldi:sigcomm/paper.pdf.
[8]REN Shansi,TAN Enhua,LUO Tian,et al.TopBT:a topology-aware and infrastructure-independent bit torrent client[EB/OL].[2010-09-09].http://www.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-10-1.pdf.
[9]GUO Y,SUH K,KUROSE J,et al.P2Cast:peer-to-peer patching scheme for VOD service[C]//Proc.12th World Wide Web Conference.[S.l.]:ACM Press,2003:301-309.
[10]DAN A,SITARAM D.A generalized interval caching policy for mixed interactive and long video enviroments[C]//Proc.SPIE Multimedia Computing and Networking Conference.[S.l.]:ACM Press,1996:699-706.
[11]ZHANG Xinyan,LIU Jiangchuan,LI Bo,et al.CoolStreaming/DONet:a data-driven overlay network for efficient live media streaming[C]//Proc.IEEE INFOCOM.[S.l.]:IEEE Press,2005:2102-2111.
[12]MAGHAREI N N,REJAIE R.PRIME:peer-to-peer receiver-driven mesh-based streaming[J].IEEE/ACM Transactions on Networking,2009,17(4):1052-1065.
[13]MAGNETTO A,GAETA R,GRANGETTO M.TURINstream:a totally push,rohust and efficient P2P video streaming architecture[J].IEEE Transactions on Mulitimedia,2010,12(8):901-914.
[14]ZHAO L,LUO J G,ZHANG M,et a1.Gridmedia:a practical peer-to-peer based live video streaming system[C]//Proc.IEEE 7th Workshop on Multimedia Signal Processing.[S.l.]:IEEE Press,2005:1-4.
[15]IZAL M,GUILLAUME U K,ERNST W B,et al.Dissecting bittorrent:five months in a torrent’s lifetime[J].Computer Science,2004,3015:1-11.
[16]WANG Qiang,DAUDJEE K,OZSU M T.Popularity-aware prefetch in P2P range caching[C]//Proc.P2P Computing Eighth International Conference.[S.l.]:IEEE Press,2008:53 –62.
[17]CHOE Y,SCHUFF D,DYABERI J,et al.Improving VOD Server efficiency with bittorrent[C]//Proc.15th International Conference on Multimedia.[S.l.]:IEEE Press,2007:117-126.
[18]LIU Z,SHEN Y,PANWAR S S,et al.P2P video live streaming with MDC:providing incentives for redistribution[C]//Proc.IEEE International Conference on Mulimedia and Expo.[S.l.]:IEEE Press,2007:48-51.