郎 非,陳麗華,侯成寶
(南京郵電大學 江蘇省圖像處理與圖像通信重點實驗室,江蘇 南京 210003)
對等網絡(peer to peer,P2P)技術作為一種新型的網絡技術,改變了互聯網上以服務器為中心的傳輸模式,使網絡上的每一個終端同時具備服務器和客戶端的功能。當前基于P2P網絡的多媒體服務得到了廣泛應用,并不斷演進[1]。目前國內外對P2P流媒體的研究及商業應用已經獲得了初步成功,但仍面臨諸多問題。其中,如何有效地管理客戶機緩存中的節目資源是一個新的課題任務,同時也是當前研究的熱點問題[2]。
本文主要研究如何高效地實現對P2P網絡節點資源的管理,包括針對節點服務的動態特性、媒體流的動態特性等,對數據的播放有較為嚴格的時限和時序要求限制等,其中核心問題是對節目源的搜索查找問題。具體來說,在P2P流媒體中,由于請求節點一般需要從其他節點獲取流數據,因此當新節點請求加入時,根據其請求,首先在系統中搜索定位能為該節點提供數據服務的節點,而當提供服務的節點離開或失效后也同樣需要在系統中搜索定位新的服務節點。該節點的搜索定位對時間有嚴格要求,否則會影響終端的用戶體驗。所以P2P流媒體系統需要一個高效率的節點資源管理和定位系統。本文主要研究節點節目資源定義、管理和搜索,以及基于Pas?try路由[3]的域間節目資源管理。
P2P的資源架構的設定是資源管理的第一步,是P2P VOD系統實現所面臨的首要問題[4-6]。本文研究的P2P VOD系統采用二級P2P網絡管理架構,可用于大規模的電信城域網用戶,如圖1所示。域內級(Intra Do?main)由普通客戶端組成P2P域內結構,并由調度中心(Border)負責域內用戶的集中式管理。域間級(Inter Do?main)由調度中心組成不同域之間的P2P結構。由于強化了調度中心的功能作用,二層化分布式的網絡利于服務節點資源的快速定位,避免了泛洪式搜索的盲目性。

恰當的資源標識定義是實現資源高效搜索的前提。在P2P VOD系統中,每個節點接入調度中心查找為其服務的源節點。調度中心作為整個系統信令核心,負責對其BRAS服務器所管轄的域內節點所擁有的資源信息進行管理。當域內不含有所要查找的資源信息時,調度中心還要啟動域間查找功能為之服務。節點所擁有資源是指節點緩存中所存儲的節目媒體數據,為了方便調度中心對節點資源的查找,對節點所擁有的資源分成A類和B類。A類資源指節點緩存中存在“節目零時刻起始點”的媒體數據,而B類資源則不存在“節目零時刻起始點”的媒體數據。A類資源用于一般用戶使用,即用戶對媒體節目必須從頭看到尾。B類資源主要針對復雜的操作,如用戶對節目的拖拉,或因網絡故障使節目中斷而再接入等。A類資源是資源默認狀態,無需向調度中心發布,而B類資源的信息需要向調度中心主動發布。B類資源的設定豐富了用戶使用功能,是區別于傳統P2P流媒體應用的關鍵。
在對B類資源定義前,要清楚客戶端節點如何對媒體數據進行緩存??蛻舳斯濣c的接收緩存均采用環形隊列數據結構(見圖2)。起始數據指針指示節點緩存中起始接收的數據位置(僅用于標識A類資源零時刻位置),接收指針指示當前新接收的數據位置,發送數據指針指示發給其他節點的數據位置。當環形隊列數據未滿,源節點可為其他節點提供A類服務,當環形隊列被數據充滿,且零時刻點被覆蓋掉,此時源節點需要通過Put原語向調度中心發布B類資源信息,包括目前緩存起始媒體數據時間、緩存的媒體數據時間長度及節點能力大小等。
在P2P VOD系統中,除中心服務器外,每個節點既是客戶端,同時也是服務器。每個節點通過系統獲得多媒體點播服務,作為服務器的節點動態地緩存接收的媒體數據,為其他節點提供服務。節點接收緩存的媒體數據是隨著節目的播放或節點的點播行為而動態變化的,調度中心服務器的作用就是管理這種資源和準確定位可用資源。根據媒體資源定義,調度中心負責分別對A類和B類資源進行管理。

A類資源調度比較簡單,調度中心根據零時刻起始點點播的需要,專門維護了一張A類資源信息表(如圖3所示)。該表按照節目ID從小到大的順序向下一級鏈接為多張A類資源節點子表。子表中記錄著具有A類資源的節點ID。當一個節點點播請求時,根據節點請求的節目ID能夠快速定位到其A類資源子表,提供相應的節目ID。任一節點對A類資源信息的保存都有時效性,會受節目緩沖時間的限制。

緩存中不論接收的是哪類資源,其節目內容都是在變化的,但對于A類資源,其起始點位置(零時刻)始終存在,而對于B類資源,節目源數據起始時間不斷變化,調度中心發布的節點緩存相關信息是間歇性的(相隔一段時間發布一次),由此存在數據不一致性,這為節點上的B類資源管理帶來了難度。本文通過設置B類資源參考點的值來唯一標識節點緩存變化的數據信息。
由于節目是嚴格按照時間順序勻速播放,接收B類資源緩存中的節目起始指針也隨節目播放相應變化。因此調度中心可通過記錄節點加入時間(請求節目得到響應的時間)和媒體流傳輸速率來計算緩存中某時刻節點所存儲數據的節目時間區間,當一個節點正好請求該時間區間的內容時,該節點將為其提供服務。在服務節點和被服務節點正常觀看節目,且沒有任何前進、倒退等操作時,服務節點緩存的數據將一直能滿足被服務節點的需要。
1)組定位
為了進一步滿足B類資源快速搜索定位的要求,將節點的B類資源按照發布的緩存起始數據時間進行分組管理。當某個節點請求點播服務時,調度中心首先將節點的查詢請求快速定位到某個組,再在該組內查找節點的B類資源信息,定位可以提供指定節目服務的源節點。預先進行組定位,目的就是先將用戶快速定位到一個大致的區域內,從而減少搜索范圍,避免在全網搜索,降低系統開銷。具體過程如下:
(1)將長度為L的媒體節目以一定的時間粒度τ等分為ψ份(L=τψ),τ稱為一個時間區域。每個節目定義一個指針,即資源參考點RP,初始值為0,每經過一個τ時間,RP值加1。在節目的分組管理中,每一個組對應著節目的一個播放時間區間,該時間區間長度設為τ。
(2)以某一節目管理為例,調度中心從第1個節點開始點播該節目算起,經過τ時間,其間從節目源起始點開始點播的用戶都被歸為一組,其組號為RP的當前值。換種角度看,當點播時,通過當時的RP值來直接找到組號(RP與組號同值),即分組與搜索點播可一并完成。
(3)如果用戶沒有從媒體源起始點點播,采用如下式子來計算該用戶應該加入的組號

式中:O為用戶點播節目的時間點。查找點播過程,亦可通過上式帶入O,計算Group-ID。上述算法可簡單描述為:一個組內節目緩存的數據內容時刻在變,但是Group-ID是固定值,無法反應緩存中數據的變化,由此設置隨時間發生變化的指針RP,那么Group-ID值與當前RP的差值即可作為表示節目內容時間變化的量度。
2)組內定位
針對一個時間區間的Group-ID,雖然其區間內的數據的起始與終止時間是不斷變化的,但是由于Group-ID是固定值,這為資源管理帶來了方便。然而這種搜索查找的精度只能達到τ。進一步考慮,組內節點數據的起始時間也在時刻變化,通過一定的Hash運算計算出節點緩存起始數據時間的相對固定值,該值不隨緩存起始數據時間的變化而變化。
調度中心記錄節點緩存內容(組內)的起始時間T、節點緩存深度(節目時長Lmemsize)以及當前調度中心系統時間(Tsystime1)。
新用戶請求點播X時間的內容,此時調度中心的系統時間Tsystime2,檢查

式中:Td為緩存起始數據時間。上式同樣適用于節點請求點播節目時,計算點播時間點的相對值(查詢參考點),此時,Td為點播時間點的值。
在調度中心中,每組節點的B類資源信息表中記錄了節點的B類資源參考點、節點接收緩存大小及節點ID共3項。前兩項是調度中心對B類資源信息搜索查找服務源的關鍵值。當節點請求點播節目時,調度中心通過將節點點播時間點的相對值(查詢參考點)與B類資源信息表中各節點的B類資源參考點及緩存大小進行比較,得到可以提供服務的源節點。將上述對B類資源的定義與操作歸納為三級管理:第一級為節目號,第二級為組號,第三級為具體的B類資源信息(參考點和接收緩存尺度),如圖4所示。

當域內節目源信息不能滿足節點的服務要求,調度中心會啟動域間內容發現功能為其服務。域間內容發現方法在調度中心之間完成內容發現,從而使調度中心可獲取其他域的節點媒體信息。域間資源的管理主要涉及節目源信息的發布與查找。本文的P2P VOD系統結構分兩個層次,每個Border為其所管轄域內所有客戶端提供服務(見圖1)。當Border要進行域間查找時,先要與網絡中其他的Border進行通信,查詢可提供服務的源。Border間路由通信通過Pastry路由算法來實現(見圖5)。

為了搜索查找節目源時得到更快速的響應,尤其在域數量相當多時,采用單一服務源多域的發布策略??蛻舳嗽谠摬呗韵?,并非將節目信息向所有域發布,而是將節目信息發布到所有滿足節目時間區間的域,這需要對網絡中的調度中心按節目時間分配ID值。域間內容發現分為3個步驟:1)Pastry網絡鄰近域節點查;2)節點對鄰近域節點資源發布;3)鄰近域節點依照Pastry路由機制向網絡中所有滿足節目時間區間的域進行發布。在點播流的過程中,節點的緩存中的流片斷是動態變化的,當節點的緩存滿時,節點(客戶端)會向外發布其服務能力(B類資源),表明其可以作為服務者。
在P2P點播流媒體系統中,搜索能提供流服務的源的問題,復雜性主要在于每個節點的緩沖區中的流片斷是動態變化的。實際上,點播點間隔很近的節點,先播放的節點能從其本地的緩沖區中提供流給后播放的節點服務。采用資源相對值計算及查找服務原理(與B類資源參考點計算方法類似)和基于Pastry的實現策略。其中客戶端向其所在的Border發送查詢請求,Border在域內不能滿足需求時,進行域間查找。
測試環境為100 Mbit/s以太網,1個調度中心服務器,1個媒體服務器,40個客戶終端PC??蛻舳斯濣c通過原語與調度中心進行信令通信,表1與表2分別為操作原語和高級操作(VCR)原語的平均延時。

表1 域內P2P原語響應延時 ms

表2 VCR操作原語的響應延時 s
實驗環境是以太網連接的40臺配置相同的PC,用于模擬40個域間網絡節點(Border),其域間Pastry網絡平均路由跳數的測試結果為1.56。
針對當前電信網絡對P2P VOD系統中媒體資源的發布查找等功能進行設計與實現。主要圍繞3個方面:1)系統中所有客戶端上的資源采用二級架構管理——域內和域間,具體來說,域內所有客戶端的資源的調度由該域內的調度中心負責,而不同域之間的資源調度,由各個調度中心通過P2P分布網絡機制來進行資源調度管理;2)為了對媒體資源進行準確快速定位,調度中心按照客戶對點播節目不同時間點的需要,對節點發布的媒體資源信息分類管理;3)根據客戶端緩存數據的變化特性,提出資源值參考點的計算方法,使得域內、域間資源采用統一相對值形式表示,在此基礎上進行高效率域內快速搜索和域間Pastry路由。同時在網絡資源發布時,也基于此方法將客戶機緩存的數據進行區間劃分,使其能同時在多域發布,達到平衡整個網絡負載的目的。實驗結果表明,資源管理方法能夠滿足P2P VOD系統用戶點播延時需求。
[1]LIU Ran,YIN Hao,HUI Wen.PMSAI:A novel peer-to-peer multimedia streaming architecture over IMS[C]//Proc.IEEE 16th International Conference on Parallel and Distributed Systems.[S.l.]:IEEE Press,2010:724-729.
[2]陳俊,杜旭,程文青,等.對等網絡點播系統中一種分布式索引結構[J].華中科技大學學報:自然科學版,2011,39(3):66-70.
[3]ROWSTRON A,DRUSCHEL P.Pastry:scalable,distributed object location and routing for large-scale peer to peer systems[M].Berlin Heidelberg:Springer-Verlag,2001.
[4]沈時軍,李三立.一種適用于VoD/P2P的存儲調度策略[J].小型微型計算機系統,2011,32(2):203-207.
[5]劉志忠,王懷民.一種雙層P2P結構的語義服務發現模型[J].軟件學報,2007,18(8):1922-1932.
[6]朱曉輝,陳蘇蓉.基于流媒體的小型分布式視頻點播系統研究[J].微電子學與計算機,2010,27(10):69-78.