專利名稱:集中式與分布式相結(jié)合的應(yīng)用層組播方法
技術(shù)領(lǐng)域:
本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及網(wǎng)絡(luò)組播技術(shù)和應(yīng)用層技術(shù)。
背景技術(shù):
近年來隨著網(wǎng)絡(luò)的普及,及帶寬的提升,為通過網(wǎng)絡(luò)提供視頻、音頻這種高帶寬需求的多媒體應(yīng)用提供了可能。現(xiàn)行通常的做法就是為每一個(gè)用戶提供一個(gè)專用的信息通路。區(qū)別于這種傳統(tǒng)的單播方式的信息傳播,國(guó)際上提出了應(yīng)用層組播的思想以降低成本、提高擴(kuò)展性。然而對(duì)于應(yīng)用層組播,端系統(tǒng)穩(wěn)定性和性能不如路由器,這就造成了應(yīng)用層組播在穩(wěn)定性和效率上不如網(wǎng)絡(luò)層組播。如何提高應(yīng)用層組播的穩(wěn)定性及擴(kuò)展性成為了學(xué)術(shù)界的熱點(diǎn)問題。
應(yīng)用層組播的協(xié)議有很多。從不同角度可以進(jìn)行不同分類。如按照數(shù)據(jù)轉(zhuǎn)發(fā)樹的計(jì)算是集中于一點(diǎn)還是由各個(gè)節(jié)點(diǎn)分布計(jì)算,可以分為集中式和分布式兩種。集中式的優(yōu)點(diǎn)是設(shè)計(jì)簡(jiǎn)單,收斂速度快,但形成了單一故障點(diǎn),可以通過冗余來提高容錯(cuò)性。這種方式的代表是ALMI。ALMI適用于小規(guī)模組播應(yīng)用,組播由控制節(jié)點(diǎn)和成員節(jié)點(diǎn)組成??刂乒?jié)點(diǎn)集中管理成員的加入、離開和組播樹的計(jì)算。而組播樹的計(jì)算有賴于各個(gè)成員節(jié)點(diǎn)將感知的網(wǎng)絡(luò)拓?fù)渲芷诟咚倏刂乒?jié)點(diǎn)。而分布式的代表有Narada,NICE,Yoid等。如Narada,它得到若干個(gè)成員節(jié)點(diǎn)后,形成到它們的連接,周期檢測(cè)它們以刪除無用連接。周期探測(cè)一些新節(jié)點(diǎn),來增加新連接。形成Mesh網(wǎng)絡(luò)后通過節(jié)點(diǎn)間運(yùn)行路由協(xié)議生成組播樹。
按照是否完全對(duì)等可以分為代理式和對(duì)等式。代理式是指將一些服務(wù)器安置在某些策略相關(guān)的位置,一般一個(gè)域中有一個(gè)多幾個(gè)代理節(jié)點(diǎn),基于它們形成組播樹,其優(yōu)點(diǎn)是穩(wěn)定性好,性能高,但靈活性降低,而且容易成為系統(tǒng)瓶頸,該方案的代表有Overcast,ScatterCast。Overcast設(shè)計(jì)用來提供帶寬敏感的組播應(yīng)用,并且提高帶寬利用率。ScatterCast則主要針對(duì)如何為大規(guī)模,異質(zhì)的用戶提供組播服務(wù)。
按照是否引入分層和分群來提高可擴(kuò)展性可以分為層次化和非層次化。層次化的方案有NICE,ZIGZAG。大部分組成員位于分層結(jié)構(gòu)的底層,只和少量固定數(shù)目的節(jié)點(diǎn)存在聯(lián)系,這樣就大大降低了大部分組播成員的處理開銷。NICE和Zigzag的主要區(qū)別是在一個(gè)簇內(nèi)部,在ZigZag中簇管理和數(shù)據(jù)分發(fā)是由不同節(jié)點(diǎn)完成的,而在NICE中這兩個(gè)功能統(tǒng)一在一個(gè)節(jié)點(diǎn)上。
按照先建樹還是先建Mesh網(wǎng)可以分為樹優(yōu)先和Mesh優(yōu)先。樹優(yōu)先是指先構(gòu)件數(shù)據(jù)轉(zhuǎn)發(fā)樹,并為了容錯(cuò)的考慮再與不是父節(jié)點(diǎn)的節(jié)點(diǎn)保持控制連接,形成控制結(jié)構(gòu)?;谶@種方式的有Yoid,Overcast,SwitchTree等。Mesh優(yōu)先是先形成Mesh網(wǎng)并在此基礎(chǔ)上形成數(shù)據(jù)轉(zhuǎn)發(fā)樹,如Narada。一般樹優(yōu)先的方案延遲要大于Mesh優(yōu)先的方案,并且Mesh優(yōu)先方案在容錯(cuò)性上要強(qiáng)于樹優(yōu)先方案。但Mesh結(jié)構(gòu)一般可擴(kuò)展性不好。
本發(fā)明提出了一種多層次的,穩(wěn)定的應(yīng)用層方案CBroadcast。本方案是適用于單源準(zhǔn)實(shí)時(shí)應(yīng)用的應(yīng)用層組播方案,將集中控制與分布式相結(jié)合、應(yīng)用層組播與網(wǎng)絡(luò)層組播相結(jié)合,提高了可擴(kuò)展性,最大化提高網(wǎng)絡(luò)可支持的用戶數(shù)量,降低了成本,解決了網(wǎng)絡(luò)電視對(duì)穩(wěn)定性要求高和應(yīng)用層網(wǎng)絡(luò)動(dòng)態(tài)變化大之間的矛盾,是穩(wěn)定應(yīng)用層組播的重要技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種多層次的,穩(wěn)定的應(yīng)用層組播方案CBroadcast。
本發(fā)明所提出的方法的思路在于采用層次化的管理策略,結(jié)合多種組播技術(shù)達(dá)到穩(wěn)定和準(zhǔn)實(shí)時(shí)地要求,具體分為以下四點(diǎn)1、采用集中式與分布式相結(jié)合,選取超節(jié)點(diǎn)集中負(fù)責(zé)下層組播樹的建造和維護(hù),下層應(yīng)用層拓?fù)洳捎梅植际降淖越M織協(xié)議以提高組播樹的能力及穩(wěn)定性;2、采用層次和分群的思想為提高用戶數(shù)量,降低成本;3、采用Mesh優(yōu)先方案,先構(gòu)造Mesh網(wǎng),在此基礎(chǔ)上生成數(shù)據(jù)轉(zhuǎn)發(fā)樹以滿足準(zhǔn)實(shí)時(shí)應(yīng)用;4、將應(yīng)用層組播和網(wǎng)絡(luò)層組播結(jié)合在一起,能盡量發(fā)揮網(wǎng)絡(luò)層組播優(yōu)勢(shì)。
本發(fā)明的特征在于該方法是在下述網(wǎng)絡(luò)層次結(jié)構(gòu)中實(shí)現(xiàn)的,所屬網(wǎng)絡(luò)層次結(jié)構(gòu)由以下3個(gè)層次組成超節(jié)點(diǎn)網(wǎng)絡(luò)是由超節(jié)點(diǎn)之間通過點(diǎn)對(duì)點(diǎn)的單播方式形成的星形網(wǎng)絡(luò),距離發(fā)布源最近的超節(jié)點(diǎn)是這個(gè)網(wǎng)絡(luò)的中心節(jié)點(diǎn),它的拓?fù)湫畔⒋嬗谠垂?jié)點(diǎn)中;簇網(wǎng)絡(luò)是由10至20個(gè)IP組播島節(jié)點(diǎn)自組織形成的一個(gè)應(yīng)用層網(wǎng)絡(luò),這些IP組播島之間構(gòu)建一棵應(yīng)用層組播轉(zhuǎn)發(fā)樹,該樹的根節(jié)點(diǎn)就是由一個(gè)簇內(nèi)的IP組播島公推的簇代表節(jié)點(diǎn),該代表節(jié)點(diǎn)從所屬超節(jié)點(diǎn)獲取數(shù)據(jù),并轉(zhuǎn)發(fā)簇內(nèi)其它IP組播島節(jié)點(diǎn),組成Mesh結(jié)構(gòu);IP組播島即用戶群,它是支持組播的任意大小的網(wǎng)絡(luò),每個(gè)IP組播島公推一個(gè)用戶成為組播島的代表節(jié)點(diǎn),該節(jié)點(diǎn)使用IP組播接受和發(fā)送數(shù)據(jù);上述3個(gè)層次組成了一棵以節(jié)目源為樹根的應(yīng)用層轉(zhuǎn)發(fā)樹;所述節(jié)目源與超節(jié)點(diǎn)、茶節(jié)點(diǎn)與醋代表節(jié)點(diǎn)之間都使用傳統(tǒng)的客戶機(jī)/服務(wù)器模型,所述簇網(wǎng)絡(luò)中的一條鏈路代表了兩個(gè)IP組播島之間的一條采用UDP協(xié)議的單薄連接鏈路的全重為其兩個(gè)節(jié)點(diǎn)之間包含延遲或可用帶寬在內(nèi)的單播的鏈路度量;每一個(gè)簇還包含一個(gè)由一個(gè)程序?qū)嶓w構(gòu)成的簇控制器,該實(shí)體運(yùn)行在簇所在屬的超節(jié)點(diǎn)上,該控制器維護(hù)著加入簇成員間包括所有促成員標(biāo)識(shí)在內(nèi)的全局Mesh網(wǎng)信息,并負(fù)責(zé)以簇代表節(jié)點(diǎn)為根,再給Mesh網(wǎng)的成員之間構(gòu)造一棵最短路徑樹,從而使會(huì)話數(shù)據(jù)沿著組播轉(zhuǎn)發(fā)樹分發(fā),而控制信息則通過該控制器和簇內(nèi)各成員之間經(jīng)過簇代表節(jié)點(diǎn)實(shí)現(xiàn)的單播連接進(jìn)行傳輸;
本發(fā)明所述的應(yīng)用層組播方法在上述集中式控制與分布式轉(zhuǎn)發(fā)相結(jié)合的網(wǎng)絡(luò)層次結(jié)構(gòu)依次按照以下步驟實(shí)現(xiàn)1.向各超節(jié)點(diǎn)控制器輸入節(jié)目源節(jié)點(diǎn)ip地址;2.如果節(jié)點(diǎn)A向控制器發(fā)送加入消息則執(zhí)行3,如果是離開消息則執(zhí)行步驟8;3.如果節(jié)點(diǎn)A所在組播島已加入簇組播樹,則直接加入該組播島;否則繼續(xù)往下執(zhí)行;4.節(jié)點(diǎn)A先向源節(jié)點(diǎn)發(fā)請(qǐng)求,得到超節(jié)點(diǎn)列表,選擇延遲最小的超節(jié)點(diǎn)及該超節(jié)點(diǎn)下連接下的簇;5.節(jié)點(diǎn)A加入簇的Mesh網(wǎng)絡(luò);a)節(jié)點(diǎn)A向控制器發(fā)出加入Mesh網(wǎng)絡(luò)消息,請(qǐng)求加入控制器維護(hù)的Mesh網(wǎng);b)控制器通過加入回應(yīng)消息返回當(dāng)前Mesh網(wǎng)中所有節(jié)點(diǎn)的IP地址列表,并向其他節(jié)點(diǎn)發(fā)送組成員更新消息;c)節(jié)點(diǎn)A根據(jù)獲得的IP地址列表,測(cè)量到其他節(jié)點(diǎn)的單播延遲,并將測(cè)量結(jié)果封裝在刷新消息中發(fā)送給控制器;d)控制器收到刷新消息后,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,更新后的Mesh信息以單播的形式發(fā)送給Mesh網(wǎng)中的其他節(jié)點(diǎn);6.控制器計(jì)算出父節(jié)點(diǎn)后,所述節(jié)點(diǎn)A加入組播樹;a)節(jié)點(diǎn)A向控制器發(fā)送加入組播樹的請(qǐng)求加入樹消息消息中包括S的IP地址;b)控制器計(jì)算出的節(jié)點(diǎn)A在組播樹中的父節(jié)點(diǎn)和子節(jié)點(diǎn),封裝在加入樹回應(yīng)消息中發(fā)送給節(jié)點(diǎn)A,同時(shí)樹形拓?fù)涞淖兓ㄟ^更新樹消息通知所屬簇內(nèi)的相關(guān)節(jié)點(diǎn);c)節(jié)點(diǎn)A的父親節(jié)點(diǎn)收到更新樹消息后,將節(jié)點(diǎn)A加入到自己的兒子節(jié)點(diǎn)列表中。節(jié)點(diǎn)A的子節(jié)點(diǎn)收到更新樹消息后,將節(jié)點(diǎn)A加入到自己的父親節(jié)點(diǎn)列表中,同時(shí)向節(jié)點(diǎn)A發(fā)送加入父節(jié)點(diǎn)消息;d)節(jié)點(diǎn)A點(diǎn)收到加入父節(jié)點(diǎn)消息后,表示自己加入組播樹成功。
7.超時(shí)限制內(nèi)如果沒有選出父節(jié)點(diǎn),則直接選擇超節(jié)點(diǎn)作為父節(jié)點(diǎn),則此時(shí)節(jié)點(diǎn)A成為簇代表節(jié)點(diǎn),加入過程結(jié)束;8.節(jié)點(diǎn)A主動(dòng)離開某棵組播樹;a)節(jié)點(diǎn)A向控制器發(fā)送離開樹消息;b)控制器通知節(jié)點(diǎn)A的父親節(jié)點(diǎn),從其兒子節(jié)點(diǎn)列表中刪除節(jié)點(diǎn)A的標(biāo)識(shí),如果是簇代表節(jié)點(diǎn)離開,控制器在簇網(wǎng)絡(luò)中重新選取簇代表節(jié)點(diǎn);c)根節(jié)點(diǎn)向節(jié)點(diǎn)A發(fā)送離開樹回應(yīng)消息。
9.通知控制器離開Mesh網(wǎng)絡(luò)。
a)節(jié)點(diǎn)A向控制器發(fā)送離開MESH網(wǎng)消息通知,并啟動(dòng)一個(gè)計(jì)時(shí)器;
b)控制器更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除節(jié)點(diǎn)A對(duì)應(yīng)的節(jié)點(diǎn)以及節(jié)點(diǎn)A連接的鏈路,并將A離開的消息廣播給Mesh網(wǎng)的其他節(jié)點(diǎn),向節(jié)點(diǎn)A發(fā)送確認(rèn)該節(jié)點(diǎn)A離開MESH網(wǎng)的回應(yīng)消息;c)如果計(jì)時(shí)器超時(shí)后還沒有收到離開MESH網(wǎng)回應(yīng)消息,則節(jié)點(diǎn)A重復(fù)向控制器發(fā)送離開MESH網(wǎng)消息,直到收到離開MESH網(wǎng)回應(yīng)消息為止。
實(shí)驗(yàn)?zāi)M與結(jié)果分析CBroadcast協(xié)議模擬的主要目的是驗(yàn)證CBroadcast協(xié)議是否能完成設(shè)計(jì)目標(biāo)。本文通過模擬器myns在模擬實(shí)驗(yàn)中比較CBroadcast協(xié)議和Narada協(xié)議。實(shí)驗(yàn)使用1000個(gè)節(jié)點(diǎn)的隨機(jī)圖,節(jié)點(diǎn)的平均度數(shù)為5。從圖中節(jié)點(diǎn)隨機(jī)的挑選出一部分節(jié)點(diǎn)構(gòu)建應(yīng)用層組播樹,并對(duì)100張圖的模擬結(jié)果取平均值,獲得圖4到圖6的結(jié)論。
一個(gè)好的應(yīng)用層組播方案應(yīng)該能保證數(shù)據(jù)路徑的質(zhì)量。應(yīng)用層組播數(shù)據(jù)路徑的質(zhì)量通常采用下面兩個(gè)參數(shù)來衡量強(qiáng)度和伸展度。圖4研究就是CBroadcast的傳輸延,其中X軸表示應(yīng)用層組播組的成員序號(hào)。從圖中節(jié)點(diǎn)隨機(jī)的挑選出500個(gè)節(jié)點(diǎn)構(gòu)建應(yīng)用層組播樹,比較了兩種方案的延時(shí)CBroadcast和Narada。從圖4可以看出,CBroadcast在節(jié)點(diǎn)的傳輸延時(shí)性能上與Narada類似,參考Narada的結(jié)論,CBroadcast也能獲得與網(wǎng)絡(luò)層組播可比較的性能。
用戶加入和離開CBroadcast的時(shí)間也是評(píng)價(jià)組播系統(tǒng)地一個(gè)重要因素。加入延時(shí)定義為用戶加入應(yīng)用層組播組到獲得數(shù)據(jù)的時(shí)間。加入延時(shí)是應(yīng)用層組播設(shè)計(jì)中一個(gè)重要的參數(shù),一種應(yīng)用層組播獲得廣泛的應(yīng)用之前,它的加入延時(shí)必須足夠的低。低加入延時(shí)能在很大程度上提高應(yīng)用層組播方案的用戶體驗(yàn),同時(shí)降低上游節(jié)點(diǎn)失敗對(duì)下游節(jié)點(diǎn)的影響。圖5表示對(duì)CBroadcast的加入延的研究,其中X軸表示應(yīng)用層組播組的成員序號(hào)。從圖中節(jié)點(diǎn)隨機(jī)的挑選出200個(gè)節(jié)點(diǎn)形成應(yīng)用層組播組,比較了兩種方案的加入延時(shí)。從圖中可以觀察到,CBroadcast的加入延時(shí)遠(yuǎn)遠(yuǎn)低于Narada。圖6研究CBroadcast的離開延時(shí)的情況,其中X軸表示應(yīng)用層組播組的成員序號(hào)。從圖中節(jié)點(diǎn)隨機(jī)的挑選出200個(gè)節(jié)點(diǎn)形成應(yīng)用層組播組,比較了CBroadcast與Narada的離開延時(shí)。實(shí)驗(yàn)表明CBroadcast在節(jié)點(diǎn)的節(jié)點(diǎn)離開延時(shí)與Narada類似。
在PlanetLab實(shí)驗(yàn)網(wǎng)上實(shí)現(xiàn)了CBroadcast的原型系統(tǒng),原型系統(tǒng)包括了PlanetLab實(shí)驗(yàn)網(wǎng)中幾乎所有的活躍節(jié)點(diǎn),主要用來研究CBroadcast在真實(shí)網(wǎng)絡(luò)中的穩(wěn)定性和協(xié)議開銷。實(shí)驗(yàn)環(huán)境配置如下所有的節(jié)點(diǎn)在初始100秒內(nèi)隨機(jī)加入CBroadcast組播組,然后在120分鐘之內(nèi)隨機(jī)的離開。數(shù)據(jù)源默認(rèn)的發(fā)送速率為300Kbps。
CBroadcast中大部分控制消息是節(jié)點(diǎn)間交換的狀態(tài)信息,這類信息主要發(fā)生在Cluster內(nèi)部,因此Cluster的節(jié)點(diǎn)數(shù)量可能成為影響協(xié)議開銷的一個(gè)重要因素。圖7給出了平均協(xié)議開銷相對(duì)于平均Cluster節(jié)點(diǎn)數(shù)量的變化函數(shù)。基本上,隨著Cluster的規(guī)模的增加,協(xié)議開銷隨之增加,但是相對(duì)于數(shù)據(jù)流量,協(xié)議開銷是非常低的。
維持?jǐn)?shù)據(jù)穩(wěn)定性是CBroadcast的一個(gè)主要目標(biāo),為了評(píng)價(jià)CBroadcast的數(shù)據(jù)穩(wěn)定性,我們定義一個(gè)連續(xù)性因子CI,CI是用戶接收到的數(shù)據(jù)和發(fā)送端發(fā)送數(shù)據(jù)的一個(gè)比值。圖8給出了節(jié)點(diǎn)平均的連續(xù)性因子相對(duì)于平均Cluster節(jié)點(diǎn)數(shù)量的變化函數(shù)。從圖8可以看出,連續(xù)性隨著Cluster規(guī)模的提高而提高,因?yàn)槊總€(gè)用戶節(jié)點(diǎn)有更多的父節(jié)點(diǎn)可供選擇。
圖1.CBroadcast網(wǎng)絡(luò)結(jié)構(gòu) 節(jié)目源超節(jié)點(diǎn) Cluster IP組播島圖2.CBroadcast中的IP組播網(wǎng)絡(luò) 組播路由器 組播島代表節(jié)點(diǎn) 其他CBroadcast用戶 非CBroadcast用戶圖3CBroadcast方案工作流程;圖4CBroadcast和Narada的節(jié)點(diǎn)傳輸延時(shí);圖5CBroadcast和Narada的節(jié)點(diǎn)加入延時(shí);圖6CBroadcast和Narada的節(jié)點(diǎn)離開延時(shí);圖7CBroadcast的協(xié)議開銷□10個(gè)節(jié)點(diǎn)■20個(gè)節(jié)點(diǎn) 50個(gè)節(jié)點(diǎn) 100個(gè)節(jié)點(diǎn) 150個(gè)節(jié)點(diǎn) 200個(gè)節(jié)點(diǎn)圖8CBroadcast的數(shù)據(jù)連續(xù)性□l0個(gè)節(jié)點(diǎn)■20個(gè)節(jié)點(diǎn) 50個(gè)節(jié)點(diǎn) 100個(gè)節(jié)點(diǎn) 150個(gè)節(jié)點(diǎn) 200個(gè)節(jié)點(diǎn)在CBroadcast中,網(wǎng)絡(luò)拓?fù)浔粍澐譃?個(gè)層次超節(jié)點(diǎn)網(wǎng)絡(luò)、簇網(wǎng)絡(luò)、組播島。超節(jié)點(diǎn)網(wǎng)絡(luò)是超節(jié)點(diǎn)之間通過點(diǎn)對(duì)點(diǎn)的單播方式形成星形網(wǎng)絡(luò),距離發(fā)布源最近的超節(jié)點(diǎn)是這個(gè)網(wǎng)絡(luò)的中心節(jié)點(diǎn)。簇是10-20個(gè)組播島節(jié)點(diǎn)(定義見后)自組織形成一個(gè)應(yīng)用層網(wǎng)絡(luò),稱為簇。這些用戶之間構(gòu)建一棵應(yīng)用層組播轉(zhuǎn)發(fā)樹。一個(gè)簇選舉出一個(gè)簇代表節(jié)點(diǎn),簇代表節(jié)點(diǎn)從超節(jié)點(diǎn)獲取數(shù)據(jù),再轉(zhuǎn)發(fā)給簇內(nèi)的其他用戶。簇代表節(jié)點(diǎn)就是簇網(wǎng)絡(luò)內(nèi)應(yīng)用層組播轉(zhuǎn)發(fā)樹的樹根。IP組播島是支持IP組播的任意大小的網(wǎng)絡(luò),它可以是一臺(tái)主機(jī),一個(gè)以太網(wǎng),一個(gè)校園網(wǎng)等等。假設(shè)現(xiàn)在的主機(jī)都支持IP組播(對(duì)Windows操作系統(tǒng)都是成立的)。在一個(gè)IP組播島中,主機(jī)使用IP組播接收/發(fā)送數(shù)據(jù)。在一次CBroadcast直播過程中,每個(gè)IP組播島會(huì)挑選一個(gè)用戶成為組播島代表節(jié)點(diǎn)。CBroadcast的網(wǎng)絡(luò)結(jié)構(gòu)圖如附圖1所示從附圖1可以看出,CBroadcast是一種層次化的、基于樹的應(yīng)用層組播協(xié)議。它建立一棵以節(jié)目源為樹根的應(yīng)用層轉(zhuǎn)發(fā)樹,轉(zhuǎn)發(fā)樹的第一層是超節(jié)點(diǎn)網(wǎng)絡(luò),超節(jié)點(diǎn)與節(jié)目源采用單播連接。轉(zhuǎn)發(fā)樹的第二層是簇網(wǎng)絡(luò),簇由10~20個(gè)組播島組成,每個(gè)簇選舉出一個(gè)代表節(jié)點(diǎn)簇代表節(jié)點(diǎn),簇代表節(jié)點(diǎn)從某臺(tái)超節(jié)點(diǎn)獲取數(shù)據(jù),轉(zhuǎn)發(fā)給簇內(nèi)的其他組播島。
組播島結(jié)構(gòu)圖如附圖2所示。不同的組播島之間通過組播島代表節(jié)點(diǎn)組播島代表節(jié)點(diǎn)之間的UDP通道連接。數(shù)據(jù)被封裝進(jìn)UDP包中,從一個(gè)組播島的代表節(jié)點(diǎn)發(fā)送到另一個(gè)島的代表節(jié)點(diǎn)。一旦組播島接收到UDP數(shù)據(jù),代表節(jié)點(diǎn)將UDP數(shù)據(jù)解封裝,然后通過IP組播發(fā)送給島內(nèi)的其他用戶節(jié)點(diǎn)。組播島內(nèi)的網(wǎng)絡(luò)結(jié)構(gòu)圖見附圖2。
在CBroadcast的系統(tǒng)框架中,發(fā)布源與超節(jié)點(diǎn)、超節(jié)點(diǎn)與簇代表節(jié)點(diǎn)之間都使用傳統(tǒng)的C/S模型,因此,在每個(gè)簇內(nèi)部選舉出一個(gè)好的代表節(jié)點(diǎn),并構(gòu)建一棵小型的、高效的應(yīng)用層組播網(wǎng)絡(luò)成為成功的關(guān)鍵。每個(gè)簇有一個(gè)控制器,集中管理簇成員的加入、離開和簇拓?fù)涞木S護(hù),并計(jì)算以簇代表節(jié)點(diǎn)為根的應(yīng)用層組播樹。每個(gè)簇成員加入、離開都要通知控制器。每個(gè)簇成員間全連通的構(gòu)成Mesh結(jié)構(gòu),周期將到其他節(jié)點(diǎn)的鏈路狀態(tài)告知控制器。
下面簡(jiǎn)單介紹CBroadcast怎樣處理組成員的加入、離開及失效檢測(cè)的。
節(jié)點(diǎn)加入遵循如下步驟如果該節(jié)點(diǎn)所在組播島已加入CBroadcast,則直接加入該組播島,否則該節(jié)點(diǎn)作為組播島代表節(jié)點(diǎn)加入CBroadcast。它先向公開節(jié)點(diǎn)發(fā)請(qǐng)求,得到超節(jié)點(diǎn)列表,選擇超節(jié)點(diǎn),再選擇該超節(jié)點(diǎn)下連接的若干個(gè)簇,加入簇。加入簇的過程遵循簇協(xié)議。也就是先加入該簇的Mesh網(wǎng),在通過控制器計(jì)算出父節(jié)點(diǎn)后,加入組播樹。超時(shí)限制內(nèi)如果沒有選出父節(jié)點(diǎn),則直接選擇超節(jié)點(diǎn)作為父節(jié)點(diǎn),則此時(shí)該節(jié)點(diǎn)成為簇代表節(jié)點(diǎn)。
節(jié)點(diǎn)離開的過程是,首先離開組播樹,再離開Mesh網(wǎng)絡(luò)。節(jié)點(diǎn)的失效是控制器長(zhǎng)期沒有收到來自節(jié)點(diǎn)的刷新消息檢測(cè)到。
簇代表節(jié)點(diǎn)和超節(jié)點(diǎn)間不斷交換狀態(tài)信息,包括簇代表節(jié)點(diǎn)是否在線,簇代表節(jié)點(diǎn)所在的資源系數(shù)等。資源系數(shù)是衡量簇負(fù)載的指標(biāo),定義為簇內(nèi)節(jié)點(diǎn)可提供的帶寬資源和當(dāng)前簇使用的帶寬資源的比值。簇內(nèi)部的各節(jié)點(diǎn)維護(hù)到簇其他節(jié)點(diǎn)的狀態(tài)信息,本設(shè)計(jì)中主要考慮延遲。
每個(gè)簇有兩個(gè)組成部分一個(gè)簇控制器和多個(gè)簇組成員。簇控制器是一個(gè)程序?qū)嶓w,它運(yùn)行在所有成員都能訪問到的位置。在當(dāng)前的設(shè)計(jì)版本中,它運(yùn)行在簇所屬的超節(jié)點(diǎn)上。控制器首先在組成員之間構(gòu)建一個(gè)全連通的應(yīng)用層網(wǎng)絡(luò)-Mesh網(wǎng)絡(luò),Mesh網(wǎng)絡(luò)中的一條鏈路代表兩個(gè)成員之間的一條單播連接,鏈路的權(quán)重為其兩端節(jié)點(diǎn)之間單播路徑的度量(如延遲、可用帶寬等),處于設(shè)計(jì)簡(jiǎn)單的考慮,目前只使用延遲作為度量方式。
簇控制器維護(hù)加入簇成員間的全局Mesh網(wǎng)信息,并負(fù)責(zé)以簇代表節(jié)點(diǎn)為根,在Mesh網(wǎng)絡(luò)的成員之間構(gòu)造一棵最短路徑樹。使用Mesh網(wǎng)能非常方便的進(jìn)行最短樹的構(gòu)造,同時(shí)提高組播樹的可靠性,使組播樹性能優(yōu)化成為可能。另外,這種構(gòu)建最短組播樹的方式,能比較好的滿足廣播應(yīng)用延時(shí)比較低的需求。會(huì)話數(shù)據(jù)沿著組播樹進(jìn)行分發(fā),而控制信息則通過控制器和各個(gè)成員之間的單播連接進(jìn)行傳輸。這種集中式控制與分布式轉(zhuǎn)發(fā)融合的方案更有利于系統(tǒng)的穩(wěn)定性。
由于基于源的最短路徑樹完全在Mesh網(wǎng)的基礎(chǔ)上構(gòu)造,所以需要構(gòu)造一個(gè)高效的Mesh網(wǎng)。CBroadcast與Narada的Mesh網(wǎng)設(shè)計(jì)不同,它為每個(gè)簇維護(hù)一個(gè)全連通的Mesh網(wǎng)來實(shí)現(xiàn)組播功能。CBroadcast中的簇的節(jié)點(diǎn)數(shù)很少,一般在10-20個(gè),這使得構(gòu)造一棵全連通的Mesh網(wǎng)絡(luò)成為可能,在每個(gè)成員中都保存組中其他所有成員的信息也不會(huì)帶來太大的開銷。另外,CBroadcast在超節(jié)點(diǎn)存儲(chǔ)當(dāng)前Mesh中的所有成員的標(biāo)識(shí)(如IP地址)。超節(jié)點(diǎn)的IP地址是眾所周知的,用于新加入組播組的成員得到目前組播組成員的信息。用戶可以通過離線方式得到超節(jié)點(diǎn)的信息(例如通過網(wǎng)頁(yè)鏈接)。CBroadcast為每個(gè)簇使用集中式控制策略來維護(hù)組播樹的連續(xù)性和效率。這是出于多方面的考慮的提高系統(tǒng)可靠性和降低復(fù)雜性(組成員變化和結(jié)點(diǎn)失效恢復(fù)引起)。另一方面,超節(jié)點(diǎn)僅僅在控制平面上進(jìn)行操作,不會(huì)影響到結(jié)點(diǎn)間的高速率數(shù)據(jù)傳輸。
簇控制器所在超節(jié)點(diǎn)的IP地址是眾所周知的,它負(fù)責(zé)整個(gè)Mesh網(wǎng)拓?fù)湫畔⒌氖占?、維護(hù),同時(shí)為每個(gè)簇節(jié)點(diǎn)維護(hù)一棵組播樹。它在Mesh網(wǎng)中的主要作用有以下幾點(diǎn)處理用戶的加入Mesh網(wǎng)請(qǐng)求新加入Mesh網(wǎng)的第n個(gè)節(jié)點(diǎn)In向控制器發(fā)送加入MESH網(wǎng)消息,控制器通過加入MESH網(wǎng)回應(yīng)消息向In返回Mesh網(wǎng)中已存在的節(jié)點(diǎn)的IP地址列表(I1,Λ,In-1)。獲得該IP地址列表后,新加入的節(jié)點(diǎn)In測(cè)量到其他所有節(jié)點(diǎn)I1,Λ,In-1的單播延遲,并將測(cè)量結(jié)果封裝在刷新消息中發(fā)送給控制器??刂破魇盏剿⑿孪⒑?,更新本地維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,向Mesh網(wǎng)中加入節(jié)點(diǎn)In及In到其它節(jié)點(diǎn)的鏈路信息。
周期性更新Mesh網(wǎng)的信息Mesh網(wǎng)中的每個(gè)成員節(jié)點(diǎn)Ik周期性的測(cè)量到其他節(jié)點(diǎn)Ii的延遲,即在Mesh網(wǎng)中兩點(diǎn)間鏈路Lki的權(quán)重,并將測(cè)量結(jié)果封裝在刷新消息中發(fā)送給簇控制器??刂破髟谑盏剿⑿孪⒑?,更新本地維護(hù)的Mesh網(wǎng)拓?fù)湫畔ⅰ?br>
處理用戶的離開Mesh網(wǎng)請(qǐng)求當(dāng)某個(gè)成員節(jié)點(diǎn)Ik主動(dòng)離開Mesh網(wǎng)時(shí),向控制器發(fā)送離開MESH網(wǎng)消息??刂破魇盏絀k發(fā)送的離開MESH網(wǎng)消息后,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除A對(duì)應(yīng)的節(jié)點(diǎn)以及A所連接的鏈路,并向Mesh網(wǎng)的除Ik以外的所有成員節(jié)點(diǎn)發(fā)送更新后的用戶列表信息。同時(shí)向A發(fā)送應(yīng)答消息離開MESH網(wǎng)回應(yīng)。
處理用戶的失效如果控制器在一段時(shí)間Tm內(nèi)沒有收到某個(gè)節(jié)點(diǎn)Ik發(fā)送的刷新消息,則認(rèn)為Ik可能失效。于是控制器向Ik連續(xù)發(fā)送一定數(shù)量的探測(cè)(探測(cè))消息。如果這些探測(cè)消息均沒有回復(fù),則控制器斷定Ik失效。此時(shí)控制器將維護(hù)的Ik的信息標(biāo)志為失效,但不能刪除此成員節(jié)點(diǎn)的信息,以防在收到關(guān)于此成員的過時(shí)的刷新信息后,誤將此成員認(rèn)為是新加入組播組的成員??刂破鞲卤镜厮S護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除Ik對(duì)應(yīng)的節(jié)點(diǎn)以及Ik所連接的鏈路,并將Ik失效的信息通知給Mesh網(wǎng)中與Ik有組播樹的節(jié)點(diǎn)(Ik在組播樹中的父節(jié)點(diǎn)和子節(jié)點(diǎn))。一段時(shí)間后,失效成員的信息Ik就可以被控制器刪除了。
由上面說明中可以看出在四種情況下需要控制器更新自己所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,并向Mesh網(wǎng)的每個(gè)節(jié)點(diǎn)發(fā)送通知控制器收到某個(gè)節(jié)點(diǎn)的請(qǐng)求加入Mesh網(wǎng)的加入MESH網(wǎng)消息;控制器收到某個(gè)成員節(jié)點(diǎn)發(fā)送來的刷新消息;收到某個(gè)成員節(jié)點(diǎn)請(qǐng)求離開Mesh網(wǎng)的離開MESH網(wǎng)消息;在一段時(shí)間內(nèi)沒有收到某成員的刷新消息,控制器認(rèn)為該成員失效。
其中后兩種情況對(duì)組播樹建立和數(shù)據(jù)轉(zhuǎn)發(fā)的正確性有直接的影響,因此控制器在這兩種情況下需要馬上將相關(guān)的信息通知給Mesh網(wǎng)中的所有成員節(jié)點(diǎn)。對(duì)于第二種情況,由于只涉及鏈路質(zhì)量的變化,只會(huì)影響數(shù)據(jù)轉(zhuǎn)發(fā)的效率。為了降低這種情況下由于向節(jié)點(diǎn)發(fā)送更新信息而給網(wǎng)絡(luò)帶來的額外開銷,以及組播樹的拓?fù)淝袚Q開銷,本文采用延時(shí)發(fā)送的方式控制器在收到某個(gè)節(jié)點(diǎn)發(fā)送來的刷新消息后,更新本地維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,但在更新過程中統(tǒng)計(jì)鏈路度量的相對(duì)變化量之和,如果此次更新過程鏈路度量的相對(duì)變化量之和沒有超過“更新閾值”,則不會(huì)向Mesh網(wǎng)中的節(jié)點(diǎn)發(fā)送更新后的信息,直到收到某些節(jié)點(diǎn)發(fā)送來的刷新消息,使得鏈路度量的相對(duì)變化量之和超過了更新閾值,才會(huì)觸發(fā)更新的拓?fù)湫畔⒌陌l(fā)送。
簇成員的執(zhí)行的任務(wù)包括定位控制器,數(shù)據(jù)轉(zhuǎn)發(fā),監(jiān)控其他節(jié)點(diǎn),樹形切換。
控制器在組播樹中相鄰的節(jié)點(diǎn)間建立起一種父—子關(guān)系,組成員利用這種關(guān)系來監(jiān)控組播樹的性能和連接。例如,當(dāng)子節(jié)點(diǎn)檢測(cè)到父節(jié)點(diǎn)的連接失敗,他會(huì)切換到其他的節(jié)點(diǎn)。樹形切換的原因有兩種控制器計(jì)算出更優(yōu)化的組播樹;組成員發(fā)現(xiàn)父節(jié)點(diǎn)失敗或離開組播樹。這兩種情況下,控制器都會(huì)為該節(jié)點(diǎn)找到一個(gè)新的父節(jié)點(diǎn)。
控制器為每個(gè)節(jié)點(diǎn)i維護(hù)一個(gè)表項(xiàng),包括以下內(nèi)容i的IP地址;最近一次從i收到的刷新消息的序列號(hào)si;上一次收到序列號(hào)為si的刷新消息的本地時(shí)間;成員i到其他節(jié)點(diǎn)k的路徑向量信息列表。當(dāng)控制器收到節(jié)點(diǎn)i發(fā)來的刷新消息時(shí),遍歷本地維護(hù)的節(jié)點(diǎn)信息表項(xiàng),并進(jìn)行如下的處理如果i為新加入的成員時(shí),在本地所維護(hù)的Mesh網(wǎng)信息中加入此成員節(jié)點(diǎn)的信息。否則,如果刷新消息中的序列號(hào)大于本地為i維護(hù)序列號(hào)si,更新本地信息。否則,控制器認(rèn)為收到的刷新消息已經(jīng)過時(shí),不作任何處理。如果在規(guī)定時(shí)間內(nèi)(Tm)控制器沒有從節(jié)點(diǎn)i收到新的刷新消息,控制器認(rèn)為節(jié)點(diǎn)i失效。
控制器維護(hù)整個(gè)Mesh網(wǎng)的拓?fù)湫畔?包括所有成員的信息),當(dāng)一個(gè)新的成員加入或者一個(gè)已存在的老節(jié)點(diǎn)離開都會(huì)觸發(fā)Mesh網(wǎng)的更新。Mesh網(wǎng)中的每個(gè)節(jié)點(diǎn)周期性的測(cè)量到Mesh中其它節(jié)點(diǎn)的應(yīng)用層單播延遲,并將這些信息封裝在刷新消息中發(fā)送給控制器。控制器在獲得由Mesh網(wǎng)成員發(fā)送來的Mesh網(wǎng)拓?fù)湫畔⒑?,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔ⅰesh網(wǎng)中每一個(gè)節(jié)點(diǎn)i周期性的產(chǎn)生刷新消息,此消息由單增的序號(hào)(SequenceNumber)標(biāo)識(shí)??刂破鲝某蓡Ti接收到的刷新信息包括以下幾項(xiàng)內(nèi)容i的IP地址;刷新消息的序列號(hào)si;成員i到其他節(jié)點(diǎn)的路徑向量信息列表。
這里,本地到其它成員的路徑向量信息通過距離向量算法計(jì)算得到。首先Mesh網(wǎng)中的每個(gè)成員周期性的得到它在Mesh網(wǎng)中所連接的各條邊的度量(如對(duì)于邊的延遲的測(cè)量,可以通過向鄰居節(jié)點(diǎn)發(fā)送ping包來實(shí)現(xiàn));然后通過和鄰居節(jié)點(diǎn)交互這些信息并通過距離向量算法計(jì)算得到路徑向量信息。路徑向量信息除了包括本地到其他所有成員的路徑的度量之外,還包括這些路徑所經(jīng)過的成員鏈表。
新節(jié)點(diǎn)A想加入Mesh網(wǎng)時(shí),按照如下的步驟完成加入過程A向控制器發(fā)出加入MESH網(wǎng)消息,請(qǐng)求加入控制器維護(hù)的Mesh網(wǎng);控制器通過加入MESH網(wǎng)回應(yīng)返回當(dāng)前Mesh網(wǎng)中所有節(jié)點(diǎn)的IP地址列表,并向其他節(jié)點(diǎn)發(fā)送組成員更新消息更新。A根據(jù)獲得的IP地址列表,測(cè)量到其他節(jié)點(diǎn)的單播延遲,并將測(cè)量結(jié)果封裝在刷新消息中發(fā)送給控制器??刂破鲝氖盏降乃⑿孪⒅薪馕龀鯝到其他節(jié)點(diǎn)的延遲信息,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,在Mesh網(wǎng)成員列表中加入A,同時(shí)還加入A到其它節(jié)點(diǎn)的鏈路狀態(tài)信息,更新后的Mesh信息以單播的形式發(fā)送給Mesh網(wǎng)中的其他節(jié)點(diǎn)。此時(shí)A已經(jīng)成功的加入了Mesh網(wǎng)。如果A希望接收數(shù)據(jù),只需要加入以簇代表節(jié)點(diǎn)為根的組播樹。加入組播樹的過程詳見后節(jié)描述。
如果某個(gè)節(jié)點(diǎn)A希望離開Mesh網(wǎng),它依照以下的步驟完成離開流程首先,A向控制器發(fā)送離開消息離開樹,離開組播樹的過程詳見下節(jié)描述。在此階段,A繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù),減少由于A離開而造成的子節(jié)點(diǎn)的數(shù)據(jù)分組的丟失。在A完成離開組播樹操作后,A不再接收其他節(jié)點(diǎn)的數(shù)據(jù),也不再向其他節(jié)點(diǎn)發(fā)送數(shù)據(jù)。此時(shí)A向控制器發(fā)送離開MESH網(wǎng)消息通知,并啟動(dòng)一個(gè)計(jì)時(shí)器。控制器收到A發(fā)送的離開MESH網(wǎng)消息后,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除A對(duì)應(yīng)的節(jié)點(diǎn)以及A連接的鏈路,并將A離開的消息廣播給Mesh網(wǎng)的其他節(jié)點(diǎn)。同時(shí)向A發(fā)送確認(rèn)消息離開MESH網(wǎng)回應(yīng)。A收到離開MESH網(wǎng)回應(yīng)消息后,表示成功離開Mesh網(wǎng)。如果計(jì)時(shí)器超時(shí)后還沒有收到離開MESH網(wǎng)回應(yīng)消息,則重復(fù)向控制器發(fā)送離開MESH網(wǎng)消息,直到收到離開MESH網(wǎng)回應(yīng)消息為止。
Mesh網(wǎng)中的節(jié)點(diǎn)A突然失效(可能由于節(jié)點(diǎn)崩潰或者節(jié)點(diǎn)附近的網(wǎng)絡(luò)失效),A無法主動(dòng)的通知控制器。這樣就需要控制器檢測(cè)節(jié)點(diǎn)的失效。如果控制器在一段時(shí)間內(nèi)沒有收到節(jié)點(diǎn)A發(fā)送的刷新消息,控制器認(rèn)為A可能失效。于是控制器連續(xù)向A發(fā)送一定數(shù)量的探測(cè)消息。如果這些探測(cè)消息均沒有回復(fù),則控制器認(rèn)為A失效??刂破麟S后更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔ⅲ瑥腗esh網(wǎng)絡(luò)中刪除A對(duì)應(yīng)的節(jié)點(diǎn)以及與A相關(guān)的鏈路,并將A失效的消息通過更新MESH網(wǎng)消息發(fā)送給Mesh網(wǎng)的每個(gè)節(jié)點(diǎn)。
控制器負(fù)責(zé)計(jì)算出一棵連接所有簇成員的最短路徑樹,并將計(jì)算結(jié)果傳遞給所有組成員。鏈路開銷可以由用戶自己選擇,包括延時(shí)、帶寬等度量參數(shù)。對(duì)于視頻直播這種實(shí)時(shí)應(yīng)用,延時(shí)可能是最敏感的度量參數(shù)。
如果某個(gè)父節(jié)點(diǎn)失效,它的下游節(jié)點(diǎn)的數(shù)據(jù)會(huì)發(fā)生丟失,如果不及時(shí)為子節(jié)點(diǎn)選擇一條合適的新路徑,失效會(huì)蔓延到所有的下游子節(jié)點(diǎn)。CBroadcast提供了失敗檢測(cè)機(jī)制和鏈路備份機(jī)制,使子節(jié)點(diǎn)能有效的檢測(cè)到父節(jié)點(diǎn)的失敗,并迅速切換到備份父節(jié)點(diǎn)。
CBroadcast在Mesh之上運(yùn)行距離向量路由協(xié)議。為了避免出現(xiàn)距離向量路由協(xié)議中的計(jì)數(shù)到無窮問題,采用類似于BGP協(xié)議[rfc1771]的策略。每個(gè)成員不僅維護(hù)到其他成員的路由的代價(jià),而且需要維護(hù)相應(yīng)的路徑。另外,鄰居結(jié)點(diǎn)間進(jìn)行路由更新時(shí)不僅包括到目的地址的路由的代價(jià),而且包括相應(yīng)的路徑。構(gòu)造數(shù)據(jù)轉(zhuǎn)發(fā)路徑時(shí)采用了DVMRP協(xié)議[rfc1812]中采用的反向最短路徑機(jī)制。也就是說,只有當(dāng)N是從M到S的最短路徑中的M的下一跳結(jié)點(diǎn)時(shí),M才接收從源S經(jīng)過N轉(zhuǎn)發(fā)來的分組。而且,M也只把分組轉(zhuǎn)發(fā)給到S的最短路徑的下一跳結(jié)點(diǎn)的鄰居結(jié)點(diǎn)。
節(jié)點(diǎn)A加入簇的組播樹之前,首先加入Mesh網(wǎng)(參考上節(jié)),成為Mesh網(wǎng)絡(luò)的節(jié)點(diǎn)。然后按照下面的步驟加入以簇代表節(jié)點(diǎn)簇代表節(jié)點(diǎn)為根的應(yīng)用層組播樹。節(jié)點(diǎn)A向控制器發(fā)送加入組播樹的請(qǐng)求消息加入樹消息中包括S的IP地址。
由于在控制器上維護(hù)有當(dāng)前Mesh中的每個(gè)成員沿組播樹到S的路徑及此路徑的度量,于是控制器可以計(jì)算出一棵以簇代表節(jié)點(diǎn)為根的、包括節(jié)點(diǎn)A的度受限的最短路徑樹,除了考慮最短路徑,控制器在生成組播轉(zhuǎn)發(fā)樹時(shí)還需要考慮盡量減少對(duì)原有組播樹的改變;只要從簇代表節(jié)點(diǎn)到任意一個(gè)節(jié)點(diǎn)的延時(shí)不超過一個(gè)閾值(默認(rèn)為600毫秒)??刂破饔?jì)算出的A在組播樹中的父節(jié)點(diǎn)和子節(jié)點(diǎn),封裝在加入樹回應(yīng)消息中發(fā)送給A,同時(shí)樹形拓?fù)涞淖兓ㄟ^更新樹消息通知相關(guān)節(jié)點(diǎn)。
A的父親節(jié)點(diǎn)收到更新樹消息后,將A加入到自己的兒子節(jié)點(diǎn)列表中。此后,每當(dāng)收到簇代表節(jié)點(diǎn)發(fā)送來的數(shù)據(jù)后,都要向自己兒子列表中的成員(包括A)轉(zhuǎn)發(fā)此數(shù)據(jù)。A的子節(jié)點(diǎn)收到更新樹消息后,將A加入到自己的父親節(jié)點(diǎn)列表中,同時(shí)向A發(fā)送加入父節(jié)點(diǎn)消息。A節(jié)點(diǎn)收到加入父節(jié)點(diǎn)消息后,表示自己加入組播樹成功。(A也要發(fā)送加入父節(jié)點(diǎn)給其父節(jié)點(diǎn))當(dāng)節(jié)點(diǎn)A主動(dòng)離開某棵組播樹時(shí),執(zhí)行下面的過程向控制器發(fā)送離開樹消息??刂破魇盏侥硞€(gè)成員發(fā)來的離開樹消息后,執(zhí)行如下的操作根據(jù)當(dāng)前Mesh網(wǎng)計(jì)算新的組播樹,通知因組播樹改變而收到影響的節(jié)點(diǎn);通知A的父親節(jié)點(diǎn),從其兒子節(jié)點(diǎn)列表中刪除A的標(biāo)識(shí);根節(jié)點(diǎn)向A發(fā)送離開樹回應(yīng)消息。
控制器可以通過Mesh網(wǎng)獲得某個(gè)成員節(jié)點(diǎn)的失效信息,并通知給所有節(jié)點(diǎn);另外,收到鄰居發(fā)送來的通知某個(gè)成員失效的信息后,控制器將維護(hù)的該成員的信息標(biāo)志為失效,但不刪除該成員的信息,以防控制器在收到關(guān)于此成員的過時(shí)的刷新信息后,誤將此成員認(rèn)為是新加入組播組的成員。一段時(shí)間后,當(dāng)失效信息通知到了Mesh網(wǎng)中的每個(gè)成員,這個(gè)失效成員的信息就可以被刪除了。
組播樹的根以某一種順序(目前采用隨機(jī)的順序)遍歷此組播組中的所有節(jié)點(diǎn),從加入組播樹的第2步開始為每個(gè)節(jié)點(diǎn)重新選擇父親節(jié)點(diǎn)。
需要注意兩點(diǎn)(1)在節(jié)點(diǎn)離開組播樹的階段,A繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù),減少由于A離開而造成的子節(jié)點(diǎn)的數(shù)據(jù)分組的丟失。在A完成離開組播樹操作后,A不再接收其他節(jié)點(diǎn)的數(shù)據(jù),也不再向其他節(jié)點(diǎn)發(fā)送數(shù)據(jù);(2)控制器可以通過Mesh網(wǎng)獲得某個(gè)成員節(jié)點(diǎn)的失效信息,并通知給所有節(jié)點(diǎn);另外,收到鄰居發(fā)送來的通知某個(gè)成員失效的信息后,控制器將維護(hù)的該成員的信息標(biāo)志為失效,但不刪除該成員的信息,以防控制器在收到關(guān)于此成員的過時(shí)的刷新信息后,誤將此成員認(rèn)為是新加入組播組的成員。一段時(shí)間后,當(dāng)失效信息通知到了Mesh網(wǎng)中的每個(gè)成員,這個(gè)失效成員的信息就可以被刪除了。
在本發(fā)明中簇控制器維護(hù)加入簇成員間的全局Mesh網(wǎng)信息,并負(fù)責(zé)以簇代表節(jié)點(diǎn)為根,在Mesh網(wǎng)絡(luò)的成員之間構(gòu)造一棵最短路徑樹(SPT)。使用Mesh網(wǎng)能非常方便的進(jìn)行最短樹的構(gòu)造,同時(shí)提高組播樹的可靠性,使組播樹性能優(yōu)化成為可能。另外,這種構(gòu)建最短組播樹的方式,能比較好的滿足廣播應(yīng)用延時(shí)比較低的需求。會(huì)話數(shù)據(jù)沿著組播樹進(jìn)行分發(fā),而控制信息則通過控制器和各個(gè)成員之間的單播連接進(jìn)行傳輸。這種集中式控制與分布式轉(zhuǎn)發(fā)融合的方案更有利于系統(tǒng)的穩(wěn)定性。
權(quán)利要求
1.集中式與分布式的結(jié)合的應(yīng)用層組播方法,其特征在于,該方法是在下述網(wǎng)絡(luò)層次結(jié)構(gòu)中實(shí)現(xiàn)的,所屬網(wǎng)絡(luò)層次結(jié)構(gòu)由以下3個(gè)層次組成超節(jié)點(diǎn)網(wǎng)絡(luò)是由超節(jié)點(diǎn)之間通過點(diǎn)對(duì)點(diǎn)的單播方式形成的星形網(wǎng)絡(luò),距離發(fā)布源最近的超節(jié)點(diǎn)是這個(gè)網(wǎng)絡(luò)的中心節(jié)點(diǎn),它的拓?fù)湫畔⒋嬗谠垂?jié)點(diǎn)中;簇網(wǎng)絡(luò)是由10至20個(gè)IP組播島節(jié)點(diǎn)自組織形成的一個(gè)應(yīng)用層網(wǎng)絡(luò),這些IP組播島之間構(gòu)建一棵應(yīng)用層組播轉(zhuǎn)發(fā)樹,該樹的根節(jié)點(diǎn)就是由一個(gè)簇內(nèi)的IP組播島公推的簇代表節(jié)點(diǎn),該代表節(jié)點(diǎn)從所屬超節(jié)點(diǎn)獲取數(shù)據(jù),并轉(zhuǎn)發(fā)簇內(nèi)其它IP組播島節(jié)點(diǎn),組成Mesh結(jié)構(gòu);IP組播島即用戶群,它是支持組播的任意大小的網(wǎng)絡(luò),每個(gè)IP組播島公推一個(gè)用戶成為組播島的代表節(jié)點(diǎn),該節(jié)點(diǎn)使用IP組播接受和發(fā)送數(shù)據(jù);上述3個(gè)層次組成了一棵以節(jié)目源為樹根的應(yīng)用層轉(zhuǎn)發(fā)樹;所述節(jié)目源與超節(jié)點(diǎn)、茶節(jié)點(diǎn)與簇代表節(jié)點(diǎn)之間都使用傳統(tǒng)的客戶機(jī)/服務(wù)器模型,所述簇網(wǎng)絡(luò)中的一條鏈路代表了兩個(gè)IP組播島之間的一條采用UDP協(xié)議的單薄連接鏈路的全重為其兩個(gè)節(jié)點(diǎn)之間包含延遲或可用帶寬在內(nèi)的單播的鏈路度量。每一個(gè)簇還包含一個(gè)由一個(gè)程序?qū)嶓w構(gòu)成的簇控制器,該實(shí)體運(yùn)行在簇所在屬的超節(jié)點(diǎn)上,該控制器維護(hù)著加入簇成員間包括所有促成員標(biāo)識(shí)在內(nèi)的全局Mesh網(wǎng)信息,并負(fù)責(zé)以簇代表節(jié)點(diǎn)為根,再給Mesh網(wǎng)的成員之間構(gòu)造一棵最短路徑樹,從而使會(huì)話數(shù)據(jù)沿著組播轉(zhuǎn)發(fā)樹分發(fā),而控制信息則通過該控制器和簇內(nèi)各成員之間經(jīng)過簇代表節(jié)點(diǎn)實(shí)現(xiàn)的單播連接進(jìn)行傳輸;本發(fā)明所述的應(yīng)用層組播方法在上述集中式控制與分布式轉(zhuǎn)發(fā)相結(jié)合的網(wǎng)絡(luò)層次結(jié)構(gòu)依次按照以下步驟實(shí)現(xiàn)步驟1.向各超節(jié)點(diǎn)控制器輸入節(jié)目源節(jié)點(diǎn)ip地址;步驟2.如果節(jié)點(diǎn)A向控制器發(fā)送加入消息則執(zhí)行3,如果是離開消息則執(zhí)行步驟8;步驟3.如果節(jié)點(diǎn)A所在組播島已加入簇組播樹,則直接加入該組播島;否則繼續(xù)往下執(zhí)行;步驟4.節(jié)點(diǎn)A先向源節(jié)點(diǎn)發(fā)請(qǐng)求,得到超節(jié)點(diǎn)列表,選擇延遲最小的超節(jié)點(diǎn)及該超節(jié)點(diǎn)下連接下的簇;步驟5.節(jié)點(diǎn)A加入簇的Mesh網(wǎng)絡(luò);a)節(jié)點(diǎn)A向控制器發(fā)出加入Mesh網(wǎng)絡(luò)消息,請(qǐng)求加入控制器維護(hù)的Mesh網(wǎng);b)控制器通過加入回應(yīng)消息返回當(dāng)前Mesh網(wǎng)中所有節(jié)點(diǎn)的IP地址列表,并向其他節(jié)點(diǎn)發(fā)送組成員更新消息;c)節(jié)點(diǎn)A根據(jù)獲得的IP地址列表,測(cè)量到其他節(jié)點(diǎn)的單播延遲,并將測(cè)量結(jié)果封裝在刷新消息中發(fā)送給控制器;d)控制器收到刷新消息后,更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,更新后的Mesh信息以單播的形式發(fā)送給Mesh網(wǎng)中的其他節(jié)點(diǎn);步驟6.控制器計(jì)算出父節(jié)點(diǎn)后,所述節(jié)點(diǎn)A加入組播樹;a)節(jié)點(diǎn)A向控制器發(fā)送加入組播樹的請(qǐng)求加入樹消息消息中包括S的IP地址;b)控制器計(jì)算出的節(jié)點(diǎn)A在組播樹中的父節(jié)點(diǎn)和子節(jié)點(diǎn),封裝在加入樹回應(yīng)消息中發(fā)送給節(jié)點(diǎn)A,同時(shí)樹形拓?fù)涞淖兓ㄟ^更新樹消息通知所屬簇內(nèi)的相關(guān)節(jié)點(diǎn);c)節(jié)點(diǎn)A的父親節(jié)點(diǎn)收到更新樹消息后,將節(jié)點(diǎn)A加入到自己的兒子節(jié)點(diǎn)列表中。節(jié)點(diǎn)A的子節(jié)點(diǎn)收到更新樹消息后,將節(jié)點(diǎn)A加入到自己的父親節(jié)點(diǎn)列表中,同時(shí)向節(jié)點(diǎn)A發(fā)送加入父節(jié)點(diǎn)消息;d)節(jié)點(diǎn)A節(jié)點(diǎn)收到加入父節(jié)點(diǎn)消息后,表示自己加入組播樹成功。步驟7.超時(shí)限制內(nèi)如果沒有選出父節(jié)點(diǎn),則直接選擇超節(jié)點(diǎn)作為父節(jié)點(diǎn),則此時(shí)節(jié)點(diǎn)A成為簇代表節(jié)點(diǎn),加入過程結(jié)束;步驟8.節(jié)點(diǎn)A主動(dòng)離開某棵組播樹;a)節(jié)點(diǎn)A向控制器發(fā)送離開樹消息;b)控制器通知節(jié)點(diǎn)A的父親節(jié)點(diǎn),從其兒子節(jié)點(diǎn)列表中刪除節(jié)點(diǎn)A的標(biāo)識(shí),如果是簇代表節(jié)點(diǎn)離開,控制器在簇網(wǎng)絡(luò)中重新選取簇代表節(jié)點(diǎn);c)根節(jié)點(diǎn)向節(jié)點(diǎn)A發(fā)送離開樹回應(yīng)消息。步驟9.通知控制器離開Mesh網(wǎng)絡(luò)。a)節(jié)點(diǎn)A向控制器發(fā)送離開MESH網(wǎng)消息通知,并啟動(dòng)一個(gè)計(jì)時(shí)器;b)控制器更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除節(jié)點(diǎn)A對(duì)應(yīng)的節(jié)點(diǎn)以及節(jié)點(diǎn)A連接的鏈路,并將A離開的消息廣播給Mesh網(wǎng)的其他節(jié)點(diǎn),向節(jié)點(diǎn)A發(fā)送確認(rèn)該節(jié)點(diǎn)A離開MESH網(wǎng)的回應(yīng)消息;c)如果計(jì)時(shí)器超時(shí)后還沒有收到離開MESH網(wǎng)回應(yīng)消息,則節(jié)點(diǎn)A重復(fù)向控制器發(fā)送離開MESH網(wǎng)消息,直到收到離開MESH網(wǎng)回應(yīng)消息為止。
2.根據(jù)權(quán)利要求1所述的集中式與分布式相結(jié)合的應(yīng)用層組播放筏,其特征在于該方法還包括Mesh網(wǎng)中每個(gè)成員周期性地測(cè)量到其他節(jié)點(diǎn)的延遲,并把測(cè)量結(jié)果通過刷新小型送給簇控制器,再由控制器來更新本地維護(hù)的Mesh網(wǎng)拓?fù)湫畔ⅰ?br>
3.根據(jù)權(quán)利要求1所述的集中式與分布式相結(jié)合的應(yīng)用層組播方法,其特征表示該方法還包括若控制器在一段時(shí)間內(nèi)為收到其成員發(fā)送的刷新消息,則認(rèn)為該節(jié)點(diǎn)可能失效,所述控制器便向該節(jié)點(diǎn)發(fā)送一系列探測(cè)消息,若均沒有回復(fù),則控制器斷定該節(jié)點(diǎn)失效便更新本地所維護(hù)的Mesh網(wǎng)拓?fù)湫畔?,刪除與該節(jié)點(diǎn)及于其連接的鏈路,并通知Mesh網(wǎng)絡(luò)中與該節(jié)點(diǎn)有組播樹連接的節(jié)點(diǎn),經(jīng)過一段設(shè)定的時(shí)間,該節(jié)點(diǎn)便被控制器刪除。
4.根據(jù)權(quán)利要求1所述的集中式與分布式相結(jié)合的應(yīng)用層組播方法,其特征在于控制器所維護(hù)的全局Mesh網(wǎng)信息包括節(jié)點(diǎn)的IP地址、最近一次從節(jié)點(diǎn)受到的刷新消息的序列號(hào)si、上一次收到的序列號(hào)為si-I的刷新消息的本地時(shí)間、該節(jié)點(diǎn)到其它節(jié)點(diǎn)的路徑向量列表。
5.根據(jù)權(quán)利要求1所述的集中式與分布式相結(jié)合的應(yīng)用層組播方法,其特征在于所述Mesh網(wǎng)中每個(gè)成員周期性地產(chǎn)生的刷新消息包括各成員的IP地址、刷新消息的序列號(hào)、每個(gè)成員與其它節(jié)點(diǎn)的路徑向量信息列表,所述刷新消息用遞增的序號(hào)標(biāo)識(shí)。
全文摘要
本發(fā)明設(shè)計(jì)互聯(lián)網(wǎng)應(yīng)用層組播技術(shù)組成,其特征在于采用超節(jié)點(diǎn)網(wǎng)絡(luò)、簇網(wǎng)絡(luò)和IP組播構(gòu)成的三級(jí)網(wǎng)絡(luò)結(jié)構(gòu),在超節(jié)點(diǎn)中設(shè)置控制器軟件,通過簇網(wǎng)絡(luò)代表節(jié)點(diǎn)控制各IP組播島同時(shí)又通過簇網(wǎng)絡(luò)代表節(jié)點(diǎn)在簇網(wǎng)絡(luò)內(nèi)構(gòu)建最短路徑樹,快速發(fā)布會(huì)話數(shù)據(jù),從而形成集中式與分布式相結(jié)合的應(yīng)用層組播網(wǎng)絡(luò),在各簇網(wǎng)絡(luò)中采用Mesh優(yōu)先方案,超節(jié)點(diǎn)先構(gòu)造Mesh網(wǎng),在此基礎(chǔ)上構(gòu)建數(shù)據(jù)轉(zhuǎn)發(fā)的最短路徑樹,以滿足準(zhǔn)實(shí)時(shí)應(yīng)用。本發(fā)明具有延遲相對(duì)較小,組播能力強(qiáng)以及穩(wěn)定性較高的優(yōu)點(diǎn),硬件開銷也相對(duì)較小。
文檔編號(hào)H04L29/06GK1747446SQ200510086680
公開日2006年3月15日 申請(qǐng)日期2005年10月21日 優(yōu)先權(quán)日2005年10月21日
發(fā)明者徐恪, 崔勇 申請(qǐng)人:清華大學(xué)