一種流媒體直播系統中控制流的樹形網絡組織方法
2023-09-18 14:51:25 2
專利名稱:一種流媒體直播系統中控制流的樹形網絡組織方法
技術領域:
本發明屬於對等流媒體領域,具體涉及到一種流媒體直播系統中控制流的樹形網絡組織方法。
背景技術:
近年來,傳統客戶機/伺服器模型、瀏覽器/伺服器模型隨著分布式技術和網絡技術的進一步發展以及網際網路用戶規模的日益龐大,伺服器逐漸成為系統性能的瓶頸。對等計算技術由於其自組織、非集中的特點,比較好地解決了上述模型的這些缺點。在對等計算網絡中,節點同時擔任客戶機和伺服器兩種角色,既為其他節點提供服務,也享用其他節點的服務,因而在資源共享、對等協作、內容分布、知識管理等領域得到了廣泛的應用。
在目前基於對等計算的流媒體直播系統中,一般採用樹形架構,DHT架構或網狀架構的拓撲。但無論採用何種拓撲結構,都要求儘可能的在少佔用網絡資源(如帶寬)的情況下,傳輸更多的媒體數據。因此客觀要求系統能夠較好的利用各個節點的網絡鄰近性,讓鄰近的節點之間更多的轉發數據。在研究網絡鄰近性方面主要集中在DHT的優化(Miguel Castro1,Peter Druschel2,Y.Charlie Hu3 and Antony Rowstronl,Proximityneighbor selection in tree-based structured peer-to-peer overlays,Technical Report,MSR-TR-2003-52)和網狀結構的文件共享優化(YunhaoLiu,Xiaomei Liu,Li Xiao,Lionel M Ni,and Xiaodong Zhang.Location-Aware topology matching in P2P systems.InProc.of theIEEE INFOCOM 2004.Hong Kong,2004.),第一類由於結構型太強,很難做到網絡鄰近的節點交換媒體數據。第二類其主要思想是各個節點之間不斷的交換RTT信息,進行動態的優化,但是這種方法並不適合流媒體直播,因為P2P流媒體直播系統中要求系統具有一定的穩定性,如果頻繁的人為的讓節點加入離開反而增加系統動蕩性和不穩定性,影響系統性能。另外由於P2P流媒體系統天然的要求基於網狀的構造方法(可以避免單點失效),因此大多數P2P流媒體系統的控制流也採用網狀結構,不適合用上文提到的第二種優化方法,因此難以解決節點聚類、消息冗餘等固有問題。
發明內容
本發明的目的在於提供一種流媒體直播系統中基於GUID的樹形網絡組織方法,本發明減少了網絡流量,同時提高了P2P直播流媒體系統的性能。
本發明提供的一種流媒體直播系統中控制流的樹形網絡組織方法,系統任一節點P均按以下步驟進行處理啟動守護進程,並行執行守護進程和主進程,其中,守護進程包括步驟(11)-(16),主進程包括步驟(21)-(29);(11)節點P從接受用戶請求;(12)節點P判斷所接收到的請求是否是加入請求,如果是,進入步驟(13);否則,進入步驟(14);(13)節點P主動加入;(14)節點P主動離開;(15)判斷節點P是否離開P2P網絡,如果是,結束守護進程;否則,回到步驟(11)繼續接受用戶請求;(16)節點P開始監聽規定的網絡埠,等待接收來自其他節點發送的請求包;(22)節點P判斷是否收到來自其他節點的請求包,如果是,進入步驟(23);否則,轉到步驟(27);(23)節點P判斷所接收到的請求包是否是加入請求包,如果是,進入步驟(24);否則,進入步驟(25);(24)節點P根據收到的加入請求包,按照下述過程對加入請求進行處理
(C1)判斷加入節點是否為外網節點,如是,轉步驟(C2),否則轉步驟(C15);(C2)計算加入節點的層次,如與本節點層次相同且L=MAX_LEVEL,轉步驟(C3),否則轉步驟(C10);(C3)檢查自己的孩子節點列表中是否存在一個與加入者GUID鄰近且層數與自己相同的外網孩子,如存在,轉步驟(C9),否則轉步驟(C4);(C4)檢查自己是否還有空餘孩子位置,如是,轉步驟(C5),否則轉步驟(C6);(C5)設置加入節點的層次為自己的層次L,把新加入者加入孩子節點列表中並發送Agree消息到新加入者,被加入流程結束,轉步驟(27);(C6)判斷加入節點是否是外網節點,如是,轉步驟(C7),否則轉步驟(C8);(C7)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子,被加入流程結束,轉步驟(27);(C8)拒絕加入者,被加入流程結束,轉步驟(27);(C9)重定向新加入者到這個孩子節點,被加入流程結束,轉步驟(27);(C10)查找孩子中層次比自己大1的節點,如存在轉步驟(C11),否則轉步驟(C14);(C11)若查到的孩子節點為外網節點,轉步驟(C12),否則轉步驟(C13);(C12)將加入者重定向到這個孩子,被加入流程結束,轉步驟(27);(C13)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子,被加入流程結束,轉步驟(27);(C14)將新加入者的層次設為當前層次加1,把新加入者加入孩子節點列表中並發送Agree消息到新加入者,被加入流程結束,轉步驟(27);(C15)是否存在一個與加入者GUID相同網關的內網孩子,如是,轉步驟(C16),否則轉步驟(C4);
(C16)重定向新加入者到這個孩子節點;被加入流程結束,轉步驟(27);(25)節點P判斷所接收到的請求包是否是離開請求包,如果是,進入步驟(26);否則,進入步驟(27);(26)節點P根據收到的離開請求包,對離開請求進行處理,刪除請求者,然後轉步驟(27);(28)判斷節點P是否離開P2P網絡,如果是,結束守護進程,同時停止監聽規定的網絡埠和收包工作,然後進入步驟(29);否則,回到步驟(22)繼續監聽;(29)結束。
本發明方法將控制流和數據流分開的雙層拓撲結構,由控制樹進行網絡鄰近節點的優化,網狀邏輯覆蓋網進行數據交換,較好的適應P2P在線流媒體需求。此外,控制樹的組織引入了基於GUID(Global UniqueIdentifier)的節點聚類方法。本發明根據各個節點在網絡中的位置,為其產生相應的GUID,最終根據此GUID,在邏輯層將鄰近的節點組織在一起。本發明方法可以用於組織一種高效的用於傳輸控制流的樹型網絡來為流媒體直播系統。具體而言,本發明方法具有以下優點和用途(1)高可擴展性控制樹只負責傳輸加入、離開、心跳等控制信息,並不負責媒體數據的傳輸,因此傳輸量很小,控制樹的分支可以很大,因此大大提高了系統的可擴展性。
(2)穩定性心跳模塊保證節點在父節點故障時會自動重新加入,而在子節點失效或正常退出時則會刪除子節點信息,使自己能穩定存在於控制樹中而不至於掉線,從而保證了系統的穩定性。
(3)覆蓋網與物理網絡相匹配控制樹通過地理位置信息GUID將節點組織成一棵按地理位置分層的樹,因此物理位置接近的節點在控制樹上也相對接近。流媒體直播系統可以通過控制樹在短時間內獲得有效、鄰近的服務節點並請求媒體數據,相比較傳統的夥伴選擇策略,能明顯提高夥伴的質量,降低客戶端播放響應延遲、提高流媒體服務質量。
圖1為本方法的總體流程圖;圖2為守護進程中加入節點的流程圖;圖3為守護進程中節點離開的流程圖;圖4為主進程中被加入節點的處理流程圖;圖5為主進程中被離開節點的處理流程圖;圖6為心跳流程圖;圖7為本發明方法的實例圖;圖8為GUID示意圖。
具體實施例方式
下面結合附圖和實例對本發明作進一步詳細的說明。
如圖1(A)所示,本發明方法的具體步驟為進入直播系統的任一節點P均按以下步驟組織對等網絡(1)節點P啟動守護進程。守護進程和主進程並行執行,用於接受用戶請求。主進程如圖1(A)所示,包括步驟(21)-(29)所示,守護進程如圖1(B)所示,其工作流程包括步驟(11)-(16),具體描述如下(11)節點P從接受用戶請求,用戶請求分為兩種加入請求和離開請求;(12)節點P判斷所接收到的請求是否是加入請求,如果是,進入步驟(13);否則,進入步驟(14);(13)節點P執行主動加入流程;主動加入的流程如圖2所示(A1)設置加入對象Obj為根節點;(A2)設置連續加入此節點次數Obj.n為0;(A3)如果Obj.n>3,轉步驟(A4),否則轉步驟(A5);
(A4)如果Obj是根節點,加入過程無法完成,進入步驟(15),否則,設置加入對象Obj為根節點,然後轉步驟(A5)。
(A5)將Obj.n修改為Obj.n+1,並發送加入消息給Obj,轉步驟(A6);(A6)判斷接收響應消息是否超時,如果接收超時,轉步驟(A3),否則,轉步驟(A7);(A7)判斷收到的響應消息是否為拒絕消息,如果是拒絕消息,轉步驟(A1),否則轉步驟(A8);(A8)判斷收到的響應消息是否為重定向消息,如果是,進入步驟(A9),否則轉步驟(A10);(A9)設重定向指向的節點為要加入的節點,轉步驟(A2);(A10)將此加入者作為父親節點,初始化孩子節點;加入過程結束,進入步驟(15)。
(14)節點P執行主動離開流程;主動離開的流程如圖3所示(B1)節點P向其父節點發送離開消息;(B2)節點P查詢所有的子節點信息,同時向其子節點發送離開消息;(B3)節點P將其所有子節點信息從其孩子列表中刪除,即清空孩子列表,同時中斷與孩子節點的網絡連接;(B4)節點P將其父節點和祖父節點信息置為空,同時停止接受和處理本頻道的任何網絡消息,離開流程結束,進入步驟(15)。
(15)判斷節點P是否離開P2P網絡,如果是,結束守護進程;否則,回到步驟(11)繼續接受用戶請求。
至此,流媒體直播系統的控制樹部分的守護進程流程論述完畢。
(21)節點P開始監聽規定的網絡埠,等待接收來自其他節點發送的請求包,請求包的類型分為三種加入請求包,離開請求包和心跳包;(22)節點P判斷是否收到來自其他節點的請求包,如果是,進入步驟(23);否則,轉到步驟(27);(23)節點P判斷所接收到的請求包是否是加入請求包,如果是,進入步驟(24);否則,進入步驟(25);(24)節點P根據收到的加入請求包,對加入請求進行處理,然後轉步驟(27)。處理其它節點加入的流程如圖3所示,其流程為(C1)判斷加入節點是否為外網節點,如是,轉步驟(C2),否則轉步驟(C15);(C2)計算加入節點的層次,如與本節點層次相同且L=MAX_LEVEL,轉步驟(C3),否則轉步驟(C10)。可以下述步驟計算層次(d1)節點的層次定義為0,其它節點的層次範圍為1和MAX_LEVEL之間,其中MAX_EVEL等於GUID中的欄位數減1;(d2)設被加入節點的層次為L,如果加入節點與被加入節點GUID的前L個欄位都相同,則定義其層次為被加入節點層次加1,否則定義其層次與被加入節點層次相同。
(C3)檢查自己的孩子節點列表中是否存在一個與加入者GUID鄰近且層數與自己相同的外網孩子,如存在,轉步驟(C9),否則轉步驟(C4);(C4)檢查自己是否還有空餘孩子位置,如是,轉步驟(C5),否則轉步驟(C6);(C5)設置加入節點的層次為自己的層次L,把新加入者加入孩子節點列表中並發送Agree消息到新加入者,被加入流程結束,轉步驟(27)。
(C6)判斷加入節點是否是外網節點,如是,轉步驟(C7),否則轉步驟(C8);(C7)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子。具體效果就是交換了選定孩子與新加入者在控制樹上的位置;被加入流程結束,轉步驟(27)。
(C8)拒絕加入者。此時一定滿足所有的孩子節點都是內網節點,加入者是不同的內網節點;被加入流程結束,轉步驟(27)。
(C9)重定向新加入者到這個孩子節點;被加入流程結束,轉步驟(27)。
(C10)查找孩子中層次比自己大1的節點,如存在轉步驟(C11),否則轉步驟(C14);(C11)若查到的孩子節點為外網節點,轉步驟(C12),否則轉步驟(C13);(C12)將加入者重定向到這個孩子;被加入流程結束,轉步驟(27)。
(C13)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子。具體效果就是交換了選定孩子與新加入者在控制樹上的位置;被加入流程結束,轉步驟(27)。
(C14)將新加入者的層次設為當前層次加1,把新加入者加入孩子節點列表中並發送Agree消息到新加入者;被加入流程結束,轉步驟(27)。
(C15)是否存在一個與加入者GUID相同網關的內網孩子,如是,轉步驟(C16),否則轉步驟(C4);(C16)重定向新加入者到這個孩子節點;被加入流程結束,轉步驟(27)。
(25)節點P判斷所接收到的請求包是否是離開請求包,如果是,進入步驟(26);否則,進入步驟(27);(26)節點P根據收到的離開請求包,對離開請求進行處理,然後轉步驟(27)。處理其它節點離開消息的具體步驟如圖5所示,其流程為(E1)節點判斷發送離開消息的節點的身份,如是自己的父親,轉步驟(E2),否則轉步驟(E4);(E2)由於父親節點離開,將祖父節點置為父節點;(E3)同父節點建立網絡連接,並向新的父節點發送加入請求信息,重新執行加入過程,處理離開流程結束,轉步驟(27);(E4)由於孩子節點離開,將發送者信息從其孩子列表中刪除,停止處理來自發送者的消息,處理離開流程結束,轉步驟(27)。
(27)節點P執行定期的心跳處理。節點的心跳流程如圖6所示,具體過程為(F1)獲取當前時間C,並初始化循環計數值K=1。
(F2)對孩子節點列表T中的節點T[K],計算當前時間C與最後一次收到該節點的心跳消息的時間的差值D。
(F3)判斷差值D是否大於設定閾值,如果是轉步驟(F4),否則轉步驟(F5);(F4)說明子節點T[K]很長時間沒有向自己發送心跳消息了,此時認為節點T[K]已經離開,系統將T[K]從孩子節點列表T中刪除。
(F5)K=K+1,(F6)判斷k小於列表大小?如果是轉(F7),否則轉(F2)。
(F5)檢查是否需要中止線程,如果是,流程結束,否則睡眠一段時間後,轉步驟(F1)。
(28)判斷節點P是否離開P2P網絡,如果是,結束守護進程,同時停止監聽規定的網絡埠和收包工作,然後進入步驟(29);否則,回到步驟(22)繼續監聽。
(29)結束。
實例在本方法中,每個節點都用一個GUID來唯一標識。GUID是當每個節點加入網絡時由系統根據節點的信息生成的一個16位元組共128位的值,它的結構如圖7所示。其中節點類型表示此節點屬於外網、內網、NAT和防火牆節點中的哪種類型;ISP表示節點所在的ISP(Internet Service Provider),城市表示節點所在的城市,郵編表示節點所在的郵政編碼,外網IP欄位和內網IP欄位,如果節點是內網節點,對應的外網IP是其網關IP,內網IP是其IP;如果節點是外網節點,對應的外網IP和內網IP都是其IP值。預留欄位目前尚未使用,留作日後擴充使用。
利用本發明所闡述的利用虛擬層次將GUID鄰近(其實是位置鄰近)的節點組織在一起的方法,為了敘述方便,GUID的各個組成部分被簡化為小的整數,如圖6-(a)所示。在新節點加入前,已經有許多的節點被組織在一顆層次樹中,如圖6-(b)所示。其中s為根節點,X為新加入節點。Hi(i=1,2,…11)為已加入節點。灰色的小矩形平面表示一棵子樹與它帶領的幾個孩子節點處於同一層次上,小矩形之間是通過兩個節點連接起來的,下一層的節點的層次是由上層加1。下一層表示相似度更高的節點進一步聚合。設置最大層次為4,每個節點可以接受5個孩子節點(實際上可以更多,因為這些連接並不傳輸媒體數據,只是傳輸控制數據)。
節點X(1,2,3)首先連接根節點S,發出加入覆蓋網請求,節點S(0,0,0)計算X的層次,由於S的層次為0,那麼應該比較加入者X的GUID的第0維與S的第0維是否相同,顯然,1≠0,X的層次與S應該在同一層。簡單起見,假設X為外網節點。S接著查找是否有GUID與X鄰近的外網節點,由於存在H1(1,0,0)滿足條件,X被重定向到H1。X收到重定向消息後,向H1發送加入消息。
H1的層次為0,在收到X的加入消息後,查找與X的GUID節點鄰近的孩子節點,由於H5的GUID為(1,0,0),第0維與X的第1維相同,因此X被重定向到H5。每個節點收到加入消息後,使用相同準入協議,加入節點在收到重定向消息發出加入消息到指定節點。循環整個過程,直到加入成功或者被拒絕或者重新加入。
權利要求
1.一種流媒體直播系統中控制流的樹形網絡組織方法,系統任一節點P均按以下步驟進行處理啟動守護進程,並行執行守護進程和主進程,其中,守護進程包括步驟(11)-(16),主進程包括步驟(21)-(29);(11)節點P從接受用戶請求;(12)節點P判斷所接收到的請求是否是加入請求,如果是,進入步驟(13);否則,進入步驟(14);(13)節點P主動加入;(14)節點P主動離開;(15)判斷節點P是否離開P2P網絡,如果是,結束守護進程;否則,回到步驟(11)繼續接受用戶請求;(16)節點P開始監聽規定的網絡埠,等待接收來自其他節點發送的請求包;(22)節點P判斷是否收到來自其他節點的請求包,如果是,進入步驟(23);否則,轉到步驟(27);(23)節點P判斷所接收到的請求包是否是加入請求包,如果是,進入步驟(24);否則,進入步驟(25);(24)節點P根據收到的加入請求包,按照下述過程對加入請求進行處理(C1)判斷加入節點是否為外網節點,如是,轉步驟(C2),否則轉步驟(C15);(C2)計算加入節點的層次,如與本節點層次相同且L=MAX_LEVEL,轉步驟(C3),否則轉步驟(C10);(C3)檢查自己的孩子節點列表中是否存在一個與加入者GUID鄰近且層數與自己相同的外網孩子,如存在,轉步驟(C9),否則轉步驟(C4);(C4)檢查自己是否還有空餘孩子位置,如是,轉步驟(C5),否則轉步驟(C6);(C5)設置加入節點的層次為自己的層次L,把新加入者加入孩子節點列表中並發送Agree消息到新加入者,被加入流程結束,轉步驟(27);(C6)判斷加入節點是否是外網節點,如是,轉步驟(C7),否則轉步驟(C8);(C7)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子,被加入流程結束,轉步驟(27);(C8)拒絕加入者,被加入流程結束,轉步驟(27);(C9)重定向新加入者到這個孩子節點,被加入流程結束,轉步驟(27);(C10)查找孩子中層次比自己大1的節點,如存在轉步驟(C11),否則轉步驟(C14);(C11)若查到的孩子節點為外網節點,轉步驟(C12),否則轉步驟(C13);(C12)將加入者重定向到這個孩子,被加入流程結束,轉步驟(27);(C13)選擇一個外網地址與被加入者GUID最近的孩子節點,發送重定向消息到選定的孩子並接收新加入者為自己的孩子,被加入流程結束,轉步驟(27);(C14)將新加入者的層次設為當前層次加1,把新加入者加入孩子節點列表中並發送Agree消息到新加入者,被加入流程結束,轉步驟(27);(C15)是否存在一個與加入者GUID相同網關的內網孩子,如是,轉步驟(C16),否則轉步驟(C4);(C16)重定向新加入者到這個孩子節點;被加入流程結束,轉步驟(27);(25)節點P判斷所接收到的請求包是否是離開請求包,如果是,進入步驟(26);否則,進入步驟(27);(26)節點P根據收到的離開請求包,對離開請求進行處理,刪除請求者,然後轉步驟(27);(28)判斷節點P是否離開P2P網絡,如果是,結束守護進程,同時停止監聽規定的網絡埠和收包工作,然後進入步驟(29);否則,回到步驟(22)繼續監聽;(29)結束。
2.根據權利要求1所述的方法,其特徵在於步驟(13)中節點P主動加入過程包括如下步驟(A1)設置加入對象Obj為根節點;(A2)設置連續加入此節點次數Obj.n為0;(A3)如果Obj.n>3,轉步驟(A4),否則轉步驟(A5);(A4)如果Obj是根節點,加入過程無法完成,進入步驟(15),否則,設置加入對象Obj為根節點,然後轉步驟(A5);(A5)將Obj.n修改為Obj.n+1,並發送加入消息給Obj,轉步驟(A6);(A6)判斷接收響應消息是否超時,如果接收超時,轉步驟(A3),否則,轉步驟(A7);(A7)判斷收到的響應消息是否為拒絕消息,如果是拒絕消息,轉步驟(A1),否則轉步驟(A8);(A8)判斷收到的響應消息是否為重定向消息,如果是,進入步驟(A9),否則轉步驟(A10);(A9)設重定向指向的節點為要加入的節點,轉步驟(A2);(A10)將此加入者作為父親節點,初始化孩子節點;加入過程結束,進入步驟(15);
3.根據權利要求1或2所述的方法,其特徵在於步驟(14)中節點P主動離開過程包括如下步驟(B1)節點P向其父節點發送離開消息;(B2)節點P查詢所有的子節點信息,同時向其子節點發送離開消息;(B3)節點P將其所有子節點信息從其孩子列表中刪除,同時中斷與孩子節點的網絡連接;(B4)節點P將其父節點和祖父節點信息置為空,同時停止接受和處理本頻道的任何網絡消息,離開流程結束,進入步驟(15)。
4.根據權利要求3所述的方法,其特徵在於步驟(26)中節點P按照下述過程對離開請求進行處理(E1)節點判斷發送離開消息的節點的身份,如是自己的父親,轉步驟(E2),否則轉步驟(E4);(E2)由於父親節點離開,將祖父節點置為父節點;(E3)同父節點建立網絡連接,並向新的父節點發送加入請求信息,重新執行加入過程,處理離開流程結束,轉步驟(27);(E4)由於孩子節點離開,將發送者信息從其孩子列表中刪除,停止處理來自發送者的消息,處理離開流程結束,轉步驟(27)。
5.根據權利要求4所述的方法,其特徵在於步驟(24)中的步驟(C2)按照下述步驟計算層次(d1)節點的層次定義為0,其它節點的層次範圍為1和MAX_LEVEL之間,其中MAX_LEVEL等於GUID中的欄位數減1;(d2)設被加入節點的層次為L,如果加入節點與被加入節點GUID的前L個欄位都相同,則定義其層次為被加入節點層次加1,否則定義其層次與被加入節點層次相同。
全文摘要
本發明公開了一種流媒體直播系統中控制流的樹形網絡組織方法,其步驟包括①啟動守護進程;②監聽規定的網絡埠,等待接收來自於其他節點的請求包;③判斷請求包的類型,根據包的類型,處理節點的加入,離開,重定向請求;④根據接收到的心跳包,更新本節點的子節點信息。本發明將控制流和數據流分開的雙層拓撲結構,由控制樹進行網絡鄰近節點的優化,網狀邏輯覆蓋網進行數據交換,適應P2P在線流媒體需求。控制樹組織引入了基於GUID的節點聚類方法。根據各節點在網絡中的位置產生GUID,並在邏輯層將鄰近的節點組織在一起。本發明通過把物理位置臨近的節點用樹型組織在一起,極大的節省了網絡流量,降低了網絡負載,提高了P2P流媒體服務的服務質量。
文檔編號H04L12/56GK1953413SQ200610124519
公開日2007年4月25日 申請日期2006年9月13日 優先權日2006年9月13日
發明者金海 , 廖小飛, 塗旭平, 劉科, 楊思睿, 張超, 袁泉 申請人:華中科技大學