專利名稱::一種混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及一種混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法WiAM(WirelessMulticastAgentMechanism),該方法特別適合于網(wǎng)絡(luò)帶寬和客戶端計(jì)算能力有限的無線環(huán)境。
背景技術(shù):
:近年來,無線通信技術(shù)的快速發(fā)展使得基于高速2.5G/2.75G/3G網(wǎng)絡(luò)或者地面數(shù)字電視廣播方式的移動電視和手機(jī)電視的熱門應(yīng)用方興未艾,手機(jī)電視和移動電視是通過廣播方式向移動終端傳輸電視節(jié)目,主要依托的是移動通信網(wǎng)絡(luò)或者廣電網(wǎng)絡(luò),依靠的是復(fù)雜的網(wǎng)絡(luò)和繁多的中繼設(shè)備完成覆蓋移動用戶和提供可靠的服務(wù)質(zhì)量。雖然實(shí)施和部署系統(tǒng)的難度很大,且與現(xiàn)有的互聯(lián)網(wǎng)缺少互動,屬于專網(wǎng)內(nèi)的應(yīng)用,同時(shí)在用戶交互和控制管理方面也存在一定的缺陷,但是這種無線電視業(yè)務(wù)也已經(jīng)得到了快速發(fā)展,而且具有很大的發(fā)展前景?,F(xiàn)在已經(jīng)有一些移動直播系統(tǒng)了。GGTV采用基于自有知識產(chǎn)權(quán)的視頻壓縮與傳輸技術(shù),通過2.5G及3G網(wǎng)絡(luò),為移動終端用戶提供移動流媒體服務(wù)。Funinhand試運(yùn)營的系統(tǒng)支持CDMAlX和GPRS網(wǎng)絡(luò),支持在線直播和點(diǎn)播等不同應(yīng)用。MobiTV在美國運(yùn)營商SprintPCS和Idetic的1900MHz蜂窩網(wǎng)絡(luò)上實(shí)現(xiàn)了實(shí)時(shí)影像發(fā)送服務(wù),并在最近宣布對多播技術(shù)和WiMAX技術(shù)的支持,將使用這些技術(shù)部署新網(wǎng)絡(luò)。而相比以話音業(yè)務(wù)為主的移動通信網(wǎng)絡(luò),IEEE標(biāo)準(zhǔn)802.11x協(xié)議族無線局域網(wǎng)(WirelessLAN,WLAN)主要面向數(shù)據(jù)業(yè)務(wù),依托無線局域網(wǎng)的移動直播點(diǎn)播應(yīng)用前景廣闊。目前無線局域網(wǎng)技術(shù)(特別是802.11b協(xié)議即WiFi)雖然在積極推廣之中,無線熱點(diǎn)和無線網(wǎng)卡的數(shù)量大大增加,但是由于帶寬和移動性等問題,無線局域網(wǎng)中部署移動流媒體直播或者移動電視的系統(tǒng)并不多見,還局限于一些較基本的應(yīng)用,如Web,Email等等。WiFi的衍生技術(shù)WiMAX更是以更高的帶寬和更遠(yuǎn)的中繼距離成為無線通信4G國際標(biāo)準(zhǔn)的強(qiáng)有力競爭者。因此,這種無線網(wǎng)絡(luò)也是一種適合于負(fù)載無線網(wǎng)絡(luò)直播的一種很好的載體。同時(shí),在無線網(wǎng)絡(luò)和移動電視高速發(fā)展的同時(shí),在互聯(lián)網(wǎng)內(nèi)隨著Peer-to-PeerNetwork和OverlayNetwork等技術(shù)的提出,出現(xiàn)了應(yīng)用層組播(ALM,ApplicationLayerMulticast)這一概念。它的主要思想是保持Internet原有的"單播,盡力發(fā)送"模型,盡量不改變原來網(wǎng)絡(luò)的體系結(jié)構(gòu),而主要通過增加端系統(tǒng)的功能來實(shí)現(xiàn)組播的功能。由于對原有網(wǎng)絡(luò)的改變很少,應(yīng)用層組播具有很好的靈活性。當(dāng)然應(yīng)用層組播中很多技術(shù)細(xì)節(jié)還在研究當(dāng)中。這些問題的存在也為應(yīng)用層組播的研究提供了廣闊的空間。媒體編碼技術(shù),Peer-to-Peer(P2P)和OverlayNetwork等技術(shù)的發(fā)展對應(yīng)用層組播的研究也有很大的促進(jìn)作用?,F(xiàn)在國內(nèi)外也已經(jīng)研究出部分應(yīng)用層組播技術(shù)和相關(guān)的P2P流媒體直播系統(tǒng)。以ESM和ALMI算法為代表的小規(guī)模多源組播方案,他們將組播組的成員組織成一個(gè)網(wǎng)或者樹,再以每個(gè)數(shù)據(jù)源為根各構(gòu)造一個(gè)生成樹。以NICE和ZigZag為代表的大規(guī)模單源組播方案,他們?yōu)榱私鉀Q如何在只有一個(gè)組播源的情況下構(gòu)造大規(guī)模的組播樹的問題,使用了分層和分群的思路。以CoopNet和SplitStream為代表的基于多樹的應(yīng)用層組播方案,它們的主要思路是,在組成員之間同時(shí)維護(hù)多個(gè)組播樹,利用MDC算法把媒體編碼成N個(gè)媒體流,同時(shí)沿多個(gè)組播樹傳播。以Yoid和HostMulticast為代表的應(yīng)用層組播和IP組播結(jié)合的方案,主要思想是在局部,小規(guī)模并且支持IP組播的網(wǎng)絡(luò)中使用IP組播,而在IP組播構(gòu)成的"小島"或者沒有IP組播支持的主機(jī)之間使用應(yīng)用層的方式連接。PeerCast則通過限定每個(gè)節(jié)點(diǎn)所能服務(wù)節(jié)點(diǎn)的個(gè)數(shù)來優(yōu)化節(jié)點(diǎn)間的傳輸延遲,為了減少拓?fù)浣Y(jié)構(gòu)的動態(tài)變化對播放質(zhì)量的影響,它采用了冗余連接的方式。Coolstreaming和DONet是近年來所提出的基于網(wǎng)狀結(jié)構(gòu)應(yīng)用層多播的典型例子,該方法的主要思想是利用輕量級的Gossip協(xié)議來構(gòu)建一個(gè)應(yīng)用層的覆蓋多播網(wǎng),每個(gè)節(jié)點(diǎn)既是數(shù)據(jù)的接收者,也是數(shù)據(jù)的提供者。但是,具體來說,在無線局域網(wǎng)中部署流媒體直播系統(tǒng)主要存在兩個(gè)問題網(wǎng)絡(luò)帶寬和節(jié)點(diǎn)移動性。首先,無線局域網(wǎng)802.11b/g的理論帶寬僅為11M/54Mbps,考慮到無線網(wǎng)絡(luò)易受干擾,帶寬不穩(wěn)定且網(wǎng)絡(luò)傳輸出錯(cuò)的可能性遠(yuǎn)大于有線網(wǎng)絡(luò)等特點(diǎn),如果采用原有的P2P網(wǎng)絡(luò)架構(gòu),節(jié)點(diǎn)之間通過可靠傳輸TCP連接來交換數(shù)據(jù),即使是播放較小碼流的媒體文件(〈-300kbps),當(dāng)有多個(gè)節(jié)點(diǎn)同時(shí)在線時(shí),在同一局域網(wǎng)內(nèi)也最多只能同時(shí)觀看一兩個(gè)頻道。帶寬消耗在節(jié)點(diǎn)之間請求數(shù)據(jù)時(shí)出錯(cuò)重傳的代價(jià)和多個(gè)節(jié)點(diǎn)觀看同一頻道的多個(gè)冗余數(shù)據(jù)流。而帶寬是網(wǎng)絡(luò)最寶貴的資源,應(yīng)該盡量減少不必要的帶寬消耗。重復(fù)的數(shù)據(jù)連接不但造成帶寬的極大浪費(fèi),而且容易造成網(wǎng)絡(luò)的擁塞,消耗有限的無線網(wǎng)絡(luò)資源,流媒體服務(wù)的使用環(huán)境進(jìn)一步惡化。其次,無線節(jié)點(diǎn)的移動性可以保證節(jié)點(diǎn)自由的在各個(gè)網(wǎng)絡(luò)中漫游切換,特別是出現(xiàn)節(jié)點(diǎn)在多個(gè)無線網(wǎng)絡(luò)信號范圍之內(nèi),信號強(qiáng)弱的些許變化導(dǎo)致節(jié)點(diǎn)在不同的網(wǎng)絡(luò)中切換。節(jié)點(diǎn)頻繁加入和退出某一網(wǎng)絡(luò),會給網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)帶來比較頻繁的變化,造成網(wǎng)絡(luò)的不穩(wěn)定性,同時(shí)影響了無線節(jié)點(diǎn)間的數(shù)據(jù)交互。針對以上兩個(gè)問題,提出無線組播代理機(jī)制可以很好地實(shí)現(xiàn)在無線局域網(wǎng)部署直播系統(tǒng)的任務(wù),使系統(tǒng)能夠穩(wěn)定高效地工作在有線與無線并存的混合網(wǎng)絡(luò)下,提供高質(zhì)量的流媒體服務(wù)。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法,該方法可以解決無線局域網(wǎng)中流媒體直播系統(tǒng)的網(wǎng)絡(luò)帶寬和節(jié)點(diǎn)移動性問題。本發(fā)明提供的混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法,包括以下步驟(1)無線節(jié)點(diǎn)加入到頻道對應(yīng)的組播地址,然后通過基于節(jié)點(diǎn)信號強(qiáng)弱的競爭,競爭成功的無線節(jié)點(diǎn)初始化為無線組播代理節(jié)點(diǎn),轉(zhuǎn)入步驟(3);競爭失敗的無線節(jié)點(diǎn)初始化為一般無線節(jié)點(diǎn),進(jìn)入步驟(2);(2)—般無線節(jié)點(diǎn)根據(jù)無線組播代理節(jié)點(diǎn)定期發(fā)出的心跳包初始化自己的緩沖區(qū),接收無線組播代理節(jié)點(diǎn)組播的媒體數(shù)據(jù),并根據(jù)自己的緩沖區(qū)填充情況,向無線組播代理節(jié)點(diǎn)請求數(shù)據(jù);同時(shí)一般無線節(jié)點(diǎn)維護(hù)無線組播代理節(jié)點(diǎn)在P2P網(wǎng)絡(luò)中的鄰居節(jié)點(diǎn)列表;如果某個(gè)時(shí)刻節(jié)點(diǎn)離開舊的無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(4);(3)無線組播代理節(jié)點(diǎn)負(fù)責(zé)幫助新加入組播的一般無線節(jié)點(diǎn)完成緩沖區(qū)的初始化,還負(fù)責(zé)將從廣播源和其它有線節(jié)點(diǎn)中獲取的數(shù)據(jù)在組播地址中組播,響應(yīng)一般無線節(jié)點(diǎn)的獨(dú)立的請求,在組播地址內(nèi)進(jìn)行分發(fā)數(shù)據(jù)的調(diào)度;在這過程中如果無線組播代理節(jié)點(diǎn)離開原無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(5);(4)一般無線節(jié)點(diǎn)在移動過程中如果漫游出原先所在的網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò)中,此時(shí)如果新的網(wǎng)絡(luò)中存在無線組播代理節(jié)點(diǎn),則仍可以接受服務(wù),回到步驟(2);如果新的網(wǎng)絡(luò)中不存在無線組播代理節(jié)點(diǎn),則自身轉(zhuǎn)換為無線組播代理節(jié)點(diǎn),轉(zhuǎn)到步驟(3);(5)無線組播代理節(jié)點(diǎn)漫游出原先網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò);在原先網(wǎng)絡(luò)中,所有的一般無線節(jié)點(diǎn)開始相互發(fā)送競爭權(quán)值數(shù)據(jù)包,通過競爭選出原無線網(wǎng)絡(luò)的新的無線組播代理節(jié)點(diǎn);在新的網(wǎng)絡(luò)中,如果存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)與其他無線節(jié)點(diǎn)進(jìn)行競爭,競爭成功則依然作為無線組播代理節(jié)點(diǎn),進(jìn)入步驟(3),否則變?yōu)橐话銦o線節(jié)點(diǎn),進(jìn)入步驟(2);在新的網(wǎng)絡(luò)中,如果不存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)保持原有狀態(tài),仍然作為無線組播代理節(jié)點(diǎn),等待新的無線節(jié)點(diǎn)加入,進(jìn)入步驟(3)。本發(fā)明混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法具有以下特點(diǎn)-(1)采用推拉結(jié)合的雙重?cái)?shù)據(jù)組播策略兼顧無線節(jié)點(diǎn)的快速初始化和緩沖穩(wěn)定后的連續(xù)播放,提高緩沖的效率和速度。(2)基于緊急區(qū)域優(yōu)先調(diào)度這樣一般無線節(jié)點(diǎn)按照自己的緩沖區(qū)緊急區(qū)域劃分,先調(diào)度緊急數(shù)據(jù),然后調(diào)度非緊急數(shù)據(jù)。(3)基于截止時(shí)間和節(jié)點(diǎn)請求數(shù)的優(yōu)先調(diào)度這個(gè)策略與優(yōu)先調(diào)度策略相結(jié)合,一般無線節(jié)點(diǎn)優(yōu)先請求緊急數(shù)據(jù),無線組播代理節(jié)點(diǎn)優(yōu)先響應(yīng)截止時(shí)間即將到期、請求節(jié)點(diǎn)較多的數(shù)據(jù),保證有限的帶寬用于傳輸最需要的數(shù)據(jù)。(4)防止過度請求和控制重發(fā)次數(shù)的機(jī)制同時(shí)設(shè)置請求和響應(yīng)周期的最大數(shù)據(jù)量,調(diào)度標(biāo)志以及超時(shí)重發(fā)隊(duì)列,減少數(shù)據(jù)重復(fù)請求和響應(yīng),減小網(wǎng)絡(luò)負(fù)載,降低造成網(wǎng)絡(luò)擁塞的可能性,保證系統(tǒng)的穩(wěn)定連續(xù)的緩沖與播放。(5)代理心跳機(jī)制無線組播代理節(jié)點(diǎn)定期組播心跳包,幫助新加入組播的無線節(jié)點(diǎn)快速初始化緩沖區(qū),同時(shí)可以幫助無線節(jié)點(diǎn)發(fā)現(xiàn)無線組播代理節(jié)點(diǎn),在無線組播代理節(jié)點(diǎn)突然離開網(wǎng)絡(luò)的時(shí)候也可以保證無線節(jié)點(diǎn)快速進(jìn)入代理競爭過程選出新的無線組播代理節(jié)點(diǎn)。圖1為本發(fā)明方法的主流程框圖;圖2為一般無線節(jié)點(diǎn)加入組播時(shí)緩沖管理調(diào)度示意圖;圖3為一般無線節(jié)點(diǎn)緩沖區(qū)示意圖;圖4為一般無線節(jié)點(diǎn)緩沖維護(hù)的管理調(diào)度示意圖;圖5為無線組播代理節(jié)點(diǎn)緩沖管理調(diào)度與調(diào)度功能示意圖;圖6為推拉結(jié)合的雙重?cái)?shù)據(jù)組播示意圖;圖7為組播補(bǔ)丁方式MulticastPull調(diào)度流程圖;圖8為組播和非組播方式下無線節(jié)點(diǎn)帶寬占用示意圖。具體實(shí)施方式本發(fā)明根據(jù)有線環(huán)境下流媒體系統(tǒng)的機(jī)制進(jìn)行改進(jìn),移植到無線環(huán)境下,成為一種代理組播的方法,從而達(dá)到減少帶寬消耗和降低客戶端開銷的目的,從而更好的適應(yīng)無線環(huán)境下網(wǎng)絡(luò)帶寬和節(jié)點(diǎn)移動性的特點(diǎn)。下面結(jié)合附圖和實(shí)例對本發(fā)明作詳細(xì)的說明。如圖1所示,本發(fā)明混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法包括以下步驟(1)無線節(jié)點(diǎn)加入到頻道對應(yīng)的組播地址,然后通過基于節(jié)點(diǎn)信號強(qiáng)弱的競爭,競爭成功的無線節(jié)點(diǎn)初始化為無線組播代理節(jié)點(diǎn),轉(zhuǎn)入步驟(3);競爭失敗的無線節(jié)點(diǎn)初始化為一般無線節(jié)點(diǎn),進(jìn)入步驟(2)。具體步驟如下(1.1)無線節(jié)點(diǎn)從服務(wù)器獲得的頻道列表中任意選擇一個(gè)頻道,加入這個(gè)頻道對應(yīng)的組播地址,并監(jiān)聽無線組播代理節(jié)點(diǎn)定期發(fā)出的心跳包。(1.2)如果沒有收到心跳包,說明該無線節(jié)點(diǎn)所在網(wǎng)絡(luò)中不存在無線組播代理節(jié)點(diǎn),該無線節(jié)點(diǎn)自身就初始化為無線組播代理節(jié)點(diǎn),然后就轉(zhuǎn)到步驟(3);(1.3)如果收到了心跳包,說明該無線網(wǎng)絡(luò)中己經(jīng)存在無線組播代理節(jié)點(diǎn),然后就發(fā)送競爭權(quán)值包,競爭權(quán)值包的內(nèi)容包括了四項(xiàng)信息該節(jié)點(diǎn)的全局唯一標(biāo)識GUID,該節(jié)點(diǎn)自身的能力權(quán)值W,該節(jié)點(diǎn)當(dāng)前緩沖區(qū)起始槽位FSN和自身是否為無線組播代理節(jié)點(diǎn)的標(biāo)志位IsAgent。其中的競爭權(quán)值是根據(jù)節(jié)點(diǎn)自身接收的信號強(qiáng)度和網(wǎng)絡(luò)狀況來確定的。然后通過競爭的算法來決定新的無線組播代理節(jié)點(diǎn),該競爭算法是節(jié)點(diǎn)將其自身的競爭權(quán)值W與其他節(jié)點(diǎn)的競爭權(quán)值W進(jìn)行多輪的比較;比較后權(quán)值最大的無線節(jié)點(diǎn)就初始化為無線組播代理節(jié)點(diǎn),然后轉(zhuǎn)到步驟(3);其余無線節(jié)點(diǎn)就初始化為一般無線節(jié)點(diǎn),然后轉(zhuǎn)到步驟(2)。(2)—般無線節(jié)點(diǎn)根據(jù)無線組播代理節(jié)點(diǎn)定期發(fā)出的心跳包初始化自己的緩沖區(qū),接收無線組播代理節(jié)點(diǎn)組播的媒體數(shù)據(jù),并根據(jù)自己的緩沖區(qū)填充情況,向無線組播代理節(jié)點(diǎn)請求數(shù)據(jù);同時(shí)一般無線節(jié)點(diǎn)還將維護(hù)無線組播代理節(jié)點(diǎn)在P2P網(wǎng)絡(luò)中的鄰居節(jié)點(diǎn)列表(PartnerList),以備在重新競爭成為無線組播代理節(jié)點(diǎn)后能夠快速地建立與有線外網(wǎng)的連接,盡早交互和傳輸數(shù)據(jù),減少切換和緩沖等待的時(shí)間。如果某個(gè)時(shí)刻節(jié)點(diǎn)離開舊的無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(4)。如圖2所示,具體步驟如下(2.1)當(dāng)一般無線節(jié)點(diǎn)剛加入組播時(shí),開始還不能播放,根據(jù)無線組播代理節(jié)點(diǎn)的心跳包將緩沖區(qū)進(jìn)行初始化操作,初始化數(shù)據(jù)請求。然而實(shí)際上此時(shí)緩沖區(qū)仍全部處于空白的待請求狀態(tài),這時(shí)節(jié)點(diǎn)請求的數(shù)據(jù)范圍是從起始槽位開始依次到長度為緩沖初始化請求長度(RequestInitBufferLength)的這部分?jǐn)?shù)據(jù);該長度的大小要略大于初次播放所需的最大連續(xù)緩沖塊大小,因?yàn)闊o線組播代理節(jié)點(diǎn)的緩沖區(qū)隨時(shí)間滾動刪除最早數(shù)據(jù),若請求初始化緩沖小于或等于最大連續(xù)緩沖塊大小,可能會使節(jié)點(diǎn)接收不到足以開始播放的連續(xù)緩沖。(2.2)—般無線節(jié)點(diǎn)根據(jù)自己的緩沖區(qū)空缺情況來進(jìn)行調(diào)度,向本無線網(wǎng)絡(luò)中的無線組播代理節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求。圖3給出了無線節(jié)點(diǎn)緩沖區(qū)內(nèi)部結(jié)構(gòu)示意圖。在刪除指針和播放指針之間是播放過的舊數(shù)據(jù),這些舊數(shù)據(jù)僅在一般無線節(jié)點(diǎn)轉(zhuǎn)變?yōu)闊o線組播代理節(jié)點(diǎn)時(shí),為其它無線節(jié)點(diǎn)分發(fā)數(shù)據(jù);在播放指針和調(diào)度指針之間是準(zhǔn)備播放的數(shù)據(jù),是本次緩沖維護(hù)周期內(nèi)要播放的數(shù)據(jù);在調(diào)度指針之前的這兩塊數(shù)據(jù)都不再請求。在調(diào)度指針之后有一段緊急數(shù)據(jù)區(qū),它是下一個(gè)緩沖區(qū)維護(hù)周期將要送去播放的緩沖數(shù)據(jù),這一段數(shù)據(jù)是無線節(jié)點(diǎn)最急需的數(shù)據(jù),因此優(yōu)先級是最高的。另外一方面,為了防止出現(xiàn)多個(gè)無線節(jié)點(diǎn)在一段時(shí)間間隔內(nèi)反復(fù)請求相同的時(shí)間槽造成無線組播代理節(jié)點(diǎn)過度重發(fā),增加網(wǎng)絡(luò)負(fù)荷,在一般無線節(jié)點(diǎn)中設(shè)置請求周期與最大數(shù)量。一般無線節(jié)點(diǎn)請求數(shù)據(jù)后將對應(yīng)請求的時(shí)間槽的調(diào)度標(biāo)志置位,在請求超時(shí)之前不再請求該時(shí)間槽,保證盡可能少發(fā)同樣的請求數(shù)據(jù),以免無線組播代理節(jié)點(diǎn)重復(fù)響應(yīng)相同的數(shù)據(jù),加重?zé)o線組播代理節(jié)點(diǎn)的負(fù)擔(dān)和無線網(wǎng)絡(luò)通信量。具體來說分來兩個(gè)小步驟-(2.2.1)—般無線節(jié)點(diǎn)從緩沖區(qū)的調(diào)度指針?biāo)傅牡胤介_始,選取N個(gè)沒有充滿的時(shí)間槽,N為一個(gè)固定值,可以根據(jù)無線組播代理節(jié)點(diǎn)的能力來設(shè)定,一般設(shè)定為40至50,然后將要請求的時(shí)間槽號按照緊急程度依次加入請求列表中,這樣保證在有限的數(shù)據(jù)請求中能夠優(yōu)先調(diào)度最緊急的數(shù)據(jù)??偟膩碚f,就是按照節(jié)點(diǎn)自身的緩沖區(qū)緊急區(qū)域劃分,先調(diào)度緊急數(shù)據(jù),然后調(diào)度非緊急數(shù)據(jù)。(2.2.2)將本次調(diào)度的時(shí)間槽做上相應(yīng)的標(biāo)記,即使下次沒有收到這個(gè)時(shí)間槽的數(shù)據(jù),在請求超時(shí)之前也不會再次請求。(2.3)—般無線節(jié)點(diǎn)在無線網(wǎng)絡(luò)中接收組播數(shù)據(jù),根據(jù)自己的緩沖區(qū)空缺情況向自己的緩沖區(qū)填充相應(yīng)的數(shù)據(jù)包,如果收到的數(shù)據(jù)包是自己緩沖區(qū)沒有的,就填入緩沖區(qū)中,如果收到的數(shù)據(jù)包在緩沖區(qū)中已經(jīng)存在,就丟棄該數(shù)據(jù)包。(2.4)檢査是否超過最大初始化緩沖等待時(shí)間(MaxInitBuffer13Timeout),這個(gè)時(shí)間可以根據(jù)緩沖區(qū)長度滾動完所需要的時(shí)間來設(shè)定,這個(gè)時(shí)間一般可以設(shè)置為25秒左右。若超時(shí)仍未接收到初始化所需要的數(shù)據(jù),再根據(jù)當(dāng)前無線組播代理節(jié)點(diǎn)的心跳包中的緩沖區(qū)第一個(gè)時(shí)間槽號FSN(FirstSlotNum)所表示的時(shí)間,刪除自己緩沖區(qū)內(nèi)比該時(shí)間更早的時(shí)間槽,然后返回步驟(2)執(zhí)行,重新初始化。若沒有超時(shí)則繼續(xù)執(zhí)行。(2.5)判斷是否緩沖到足夠的數(shù)據(jù)可以進(jìn)行播放。如果緩沖不足夠則繼續(xù)循環(huán)執(zhí)行步驟(2.2)(2.5),繼續(xù)緩沖;如果緩沖到足夠的數(shù)據(jù),則進(jìn)入步驟(2.6)。(2.6)緩沖區(qū)開始滾動,送數(shù)據(jù)到播放器進(jìn)行播放,并不斷維護(hù)緩沖區(qū)。如圖4所示,一般無線節(jié)點(diǎn)緩沖維護(hù)分(2.6.1)和(2.6.2)兩個(gè)步驟同時(shí)執(zhí)行,這相當(dāng)時(shí)兩個(gè)線程同時(shí)執(zhí)行。(2.6.1)這是一個(gè)不斷接收數(shù)據(jù)的過程,具體步驟如下所示。①從無線網(wǎng)絡(luò)中接收無線組播代理節(jié)點(diǎn)發(fā)送的組播數(shù)據(jù)。②判斷該組播數(shù)據(jù)在自身的緩沖區(qū)中是否已經(jīng)存在,是的話返回上一步①,否則繼續(xù)執(zhí)行步驟③。③將數(shù)據(jù)包加入到數(shù)據(jù)包隊(duì)列里面。④將數(shù)據(jù)包隊(duì)列里面的數(shù)據(jù)包添加到自身的緩沖區(qū)里面,然后回去步驟①執(zhí)行。(2.6.2)這是一個(gè)定時(shí)請求數(shù)據(jù)的過程,具體步驟如下所示。(i)等待一個(gè)請求周期再繼續(xù)執(zhí)行,這個(gè)周期一般設(shè)為4秒左右。在這里,設(shè)置組播補(bǔ)丁請求周期,是保證無線組播代理節(jié)點(diǎn)盡可能為每個(gè)一般無線節(jié)點(diǎn)提供可靠的服務(wù),而不至于把有限的能力服務(wù)少數(shù)的幾個(gè)節(jié)點(diǎn)。在保證網(wǎng)絡(luò)中每個(gè)一般無線節(jié)點(diǎn)可以收到足夠播放的緩沖數(shù)據(jù)的前提下,控制每個(gè)請求周期的數(shù)據(jù)量,使負(fù)載在時(shí)間上均勻地分布,而不至于出現(xiàn)突發(fā)的請求過度導(dǎo)致網(wǎng)絡(luò)擁塞或者無線組播代理節(jié)點(diǎn)忙于響應(yīng)少數(shù)請求,忽略了其它節(jié)點(diǎn)造成緩沖耗盡停止播放的情況。(ii)緩沖區(qū)向前滾動,刪除過期的數(shù)據(jù)包。(iii)從緊急區(qū)域開始最多選取M個(gè)時(shí)間槽,選取的時(shí)間槽最多以緩沖區(qū)結(jié)束為止,M可以和步驟(2.2.1)的N取值相同,選取的時(shí)間槽組成組播補(bǔ)丁請求數(shù)據(jù)包發(fā)送,并對相應(yīng)時(shí)間槽號設(shè)置標(biāo)志位。然后回去步驟(i)執(zhí)行。一般無線節(jié)點(diǎn)并不能貪婪的向無線組播代理節(jié)點(diǎn)請求過多的數(shù)據(jù)。為了平衡緩沖數(shù)據(jù)請求量和網(wǎng)絡(luò)負(fù)荷之間的矛盾,為一般無線節(jié)點(diǎn)設(shè)置一個(gè)時(shí)間槽請求數(shù)量的最大值(MaxMobileRequestLength),這個(gè)長度略大于緊急調(diào)度數(shù)據(jù)區(qū)域的長度。在總請求時(shí)間槽數(shù)不超過最大值的前提下,節(jié)點(diǎn)從調(diào)度指針?biāo)肝恢瞄_始檢查時(shí)間槽是否為空,一旦發(fā)現(xiàn)有空的時(shí)間槽,立即檢査自身保存的無線組播代理節(jié)點(diǎn)的心跳包中所存的緩沖區(qū)快照,如果無線組播代理節(jié)點(diǎn)對應(yīng)的時(shí)間槽也為空,則取消請求;如果無線組播代理節(jié)點(diǎn)有該數(shù)據(jù),則記錄下時(shí)間槽號,最后打包成請求數(shù)據(jù)包,發(fā)送到組播地址上。一般無線節(jié)點(diǎn)在請求數(shù)據(jù)后,對所請求數(shù)據(jù)對應(yīng)的時(shí)間槽的已請求調(diào)度的這項(xiàng)標(biāo)志位設(shè)置為已請求,在調(diào)度超時(shí)之前不得再次請求,這樣可以減少多次請求重復(fù)數(shù)據(jù),同時(shí)方便無線組播代理節(jié)點(diǎn)計(jì)算每個(gè)時(shí)間槽的節(jié)點(diǎn)請求數(shù),以避免重復(fù)計(jì)算。(3)無線組播代理節(jié)點(diǎn)負(fù)責(zé)幫助新加入組播的一般無線節(jié)點(diǎn)完成緩沖區(qū)的初始化,還負(fù)責(zé)將從廣播源和其它有線節(jié)點(diǎn)中獲取的數(shù)據(jù)在組播地址中組播,響應(yīng)一般無線節(jié)點(diǎn)的獨(dú)立的請求,在組播地址內(nèi)進(jìn)行分發(fā)數(shù)據(jù)的調(diào)度。在這過程中如果無線組播代理節(jié)點(diǎn)離開原無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(5)。如圖5所示,無線組播代理節(jié)點(diǎn)在無線網(wǎng)絡(luò)中的主要工作由以下3個(gè)線程來完成,其中線程1是負(fù)責(zé)幫助新加入組播的一般無線節(jié)點(diǎn)完成緩沖區(qū)的初始化。線程2就是和有線節(jié)點(diǎn)在直播系統(tǒng)構(gòu)造的對等網(wǎng)絡(luò)中交互緩沖和控制信息,此外還負(fù)責(zé)將從廣播源和其它有線節(jié)點(diǎn)中獲取的數(shù)據(jù)在組播地址中組播。線程3負(fù)責(zé)響應(yīng)一般無線節(jié)點(diǎn)的獨(dú)立的請求,在組播地址內(nèi)進(jìn)行分發(fā)數(shù)據(jù)的調(diào)度。線程l、2和3同時(shí)執(zhí)行,分別對應(yīng)下述(A)、(B)和(C)三個(gè)步驟(A)無線組播代理節(jié)點(diǎn)在無線網(wǎng)絡(luò)中定時(shí)組播心跳包,這個(gè)心跳包含自身的緩沖區(qū)第一個(gè)時(shí)間槽號FSN和自身的緩沖區(qū)快照,用于一般無線節(jié)點(diǎn)初始化。這種代理心跳機(jī)制是為了幫助新加入組播的無線節(jié)點(diǎn)快速初始化緩沖區(qū),以盡快開始請求緩沖數(shù)據(jù)。同時(shí),代理心跳機(jī)制可以幫助無線節(jié)點(diǎn)發(fā)現(xiàn)代理節(jié)點(diǎn),在無線組播代理節(jié)點(diǎn)突然離開網(wǎng)絡(luò)的時(shí)候,代理心跳機(jī)制可以保證無線節(jié)點(diǎn)快速進(jìn)入代理競爭過程,選出新的無線組播代理節(jié)點(diǎn),保證系統(tǒng)的正常運(yùn)行。(B)維護(hù)緩沖區(qū)數(shù)據(jù),定期滾動緩沖區(qū)刪除舊數(shù)據(jù),完成P2P媒體交互以獲得媒體數(shù)據(jù),并組播推送收到的數(shù)據(jù)。具體的步驟如下(Bl)剛啟動時(shí),向節(jié)目源或者有線網(wǎng)絡(luò)中的有線節(jié)點(diǎn)請求初始化信息,根據(jù)返回的初始化信息將緩沖區(qū)進(jìn)行初始化操作。(B2)根據(jù)自身的緩沖區(qū)空缺情況來進(jìn)行調(diào)度,向P2P網(wǎng)絡(luò)中的有線節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求,這個(gè)步驟與(2.2)基本一樣,就是最后的請求目標(biāo)不一樣,一般無線節(jié)點(diǎn)是向無線組播代理節(jié)點(diǎn)請求,而無線組播代理節(jié)點(diǎn)則是向P2P網(wǎng)絡(luò)中的有線節(jié)點(diǎn)請求。具體分為以下兩步(B21)按照自身的緩沖區(qū)緊急區(qū)域劃分,先調(diào)度緊急數(shù)據(jù),然后調(diào)度非緊急數(shù)據(jù),向有線P2P網(wǎng)絡(luò)發(fā)送數(shù)據(jù)請求。(B22)本次調(diào)度數(shù)據(jù)的時(shí)間槽要做上相應(yīng)的標(biāo)記,即使下次沒有收到這個(gè)時(shí)間槽的數(shù)據(jù),在請求超時(shí)之前也不會再次請求。(B3)無線組播代理節(jié)點(diǎn)在網(wǎng)絡(luò)中接收數(shù)據(jù),根據(jù)自身的緩沖區(qū)情況向緩沖區(qū)填充相應(yīng)的數(shù)據(jù)包。(B4)檢查是否超過最大初始化緩沖等待時(shí)間,若超時(shí)仍未接收到初始化所需要的數(shù)據(jù),則返回步驟(Bl)執(zhí)行,重新初始化;若沒有超時(shí)則繼續(xù)執(zhí)行。(B5)判斷是否緩沖到足夠的數(shù)據(jù)可以進(jìn)行播放。如果緩沖不足夠則返回步驟(B2)執(zhí)行,繼續(xù)緩沖;如果緩沖到足夠的數(shù)據(jù),則進(jìn)入步驟(B6)。(B6)然后緩沖區(qū)開始滾動,送數(shù)據(jù)到播放器進(jìn)行播放,并且不斷維護(hù)緩沖區(qū)。該步驟具體分(B61)和(B62)兩個(gè)子步驟同時(shí)執(zhí)行(B61)這是一個(gè)不斷接收數(shù)據(jù)的過程,具體步驟如下所示。(a)從廣播源或有線節(jié)點(diǎn)接收緩沖數(shù)據(jù)。(b)判斷該數(shù)據(jù)在自身的緩沖區(qū)中是否己經(jīng)存在,是的話返回上一步(b),否則繼續(xù)執(zhí)行步驟(C)。(C)將數(shù)據(jù)包加入到數(shù)據(jù)包隊(duì)列里面。(d)將數(shù)據(jù)包隊(duì)列里面的數(shù)據(jù)包添加到自身的緩沖區(qū)里面,然后回去步驟(a)執(zhí)行。(B62)這是一個(gè)定時(shí)請求數(shù)據(jù)的過程,具體步驟如下所示。(I)等待一個(gè)請求周期再繼續(xù)執(zhí)行,這個(gè)周期一般設(shè)為4秒左右。(II)緩沖區(qū)向前滾動,刪除過期的數(shù)據(jù)包。(III)從緊急區(qū)域開始最多選取P個(gè)時(shí)間槽,選取的時(shí)間槽最多以緩沖區(qū)結(jié)束為止,P可以和步驟(2.2.1)的N取值相同,選取的時(shí)間槽組成組播補(bǔ)丁請求數(shù)據(jù)包發(fā)送,并對相應(yīng)時(shí)間槽號設(shè)置標(biāo)志位。然后回去步驟(I)執(zhí)行c(C)響應(yīng)一般無線節(jié)點(diǎn)的組播補(bǔ)丁數(shù)據(jù)請求,按照截止時(shí)間和節(jié)點(diǎn)請求數(shù)調(diào)度并發(fā)送數(shù)據(jù)。在此無線組播代理方法中,無線節(jié)點(diǎn)的緩沖調(diào)度策略主要關(guān)系到整個(gè)無線網(wǎng)絡(luò)的直播系統(tǒng)的性能,因此為此方法的關(guān)鍵,本發(fā)明最主要的特點(diǎn)就是采用了一種推拉結(jié)合的雙重?cái)?shù)據(jù)組播的方式,以提高無線網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)傳輸效率。組播推送和組播補(bǔ)丁方式的數(shù)據(jù)緩沖過程如圖6所示。采用"推""拉"結(jié)合的雙重?cái)?shù)據(jù)組播策略,以組播推送(MulticastPush)方式為主,以組播補(bǔ)丁(MulticastPatch)方式為輔。組播推送方式主要在穩(wěn)定播放時(shí)為無線節(jié)點(diǎn)提供主要的數(shù)據(jù)來源,而組播補(bǔ)丁方式在無線節(jié)點(diǎn)初始化過程中起著主要作用,同時(shí)為無線節(jié)點(diǎn)丟包數(shù)據(jù)提供可靠的重發(fā)保障。在無線節(jié)點(diǎn)加入直播時(shí),初始化緩沖區(qū)后立即收到無線組播代理節(jié)點(diǎn)組播推送的數(shù)據(jù),這部分?jǐn)?shù)據(jù)主要位于無線組播代理節(jié)點(diǎn)緩沖區(qū)的尾部,同樣也是一般無線節(jié)點(diǎn)緩沖區(qū)中靠后的部分。而一般無線節(jié)點(diǎn)從初始槽號開始向無線組播代理節(jié)點(diǎn)請求組播補(bǔ)丁數(shù)據(jù)。這樣組播補(bǔ)丁和組播推送方式一前一后填充一般無線節(jié)點(diǎn)的緩沖區(qū)。等到一般無線節(jié)點(diǎn)緩沖足夠播放的媒體數(shù)據(jù)開始播放,節(jié)點(diǎn)仍繼續(xù)請求組播補(bǔ)丁數(shù)據(jù),直到組播補(bǔ)丁請求到達(dá)組播推送數(shù)據(jù)的頂部。此時(shí)緩沖區(qū)基本緩沖穩(wěn)定,主要靠組播推送方式提供緩沖區(qū)滾動后需要填充的空缺時(shí)間槽,而組播補(bǔ)丁方式負(fù)責(zé)補(bǔ)充推送方式中出現(xiàn)丟包的個(gè)別媒體數(shù)據(jù)。如圖7所示,這里分(Cl)和(C2)兩個(gè)步驟同時(shí)執(zhí)行,這相當(dāng)時(shí)兩個(gè)線程同時(shí)執(zhí)行。(Cl)這是一個(gè)不斷接收數(shù)據(jù)請求和發(fā)送數(shù)據(jù)的過程,具體包括如下步驟。(C11)在無線網(wǎng)絡(luò)中收取一般無線節(jié)點(diǎn)的組播補(bǔ)丁數(shù)據(jù)請求包,并從中提取請求的時(shí)間槽列表。(C12)將請求添加到數(shù)據(jù)請求列表,將對應(yīng)時(shí)間槽的節(jié)點(diǎn)請求數(shù)加1,并更新其截止時(shí)間。(C13)等待時(shí)間間隔,即等待組播補(bǔ)丁發(fā)送周期,這個(gè)時(shí)間周期一般設(shè)為1秒。在這里,設(shè)置一個(gè)組播補(bǔ)丁發(fā)送隊(duì)列,它的作用是無線組播代理節(jié)點(diǎn)發(fā)送組播補(bǔ)丁數(shù)據(jù)后將發(fā)送的數(shù)據(jù)包信息記錄到組播補(bǔ)丁發(fā)送隊(duì)列,在重發(fā)超時(shí)之前不再發(fā)送該數(shù)據(jù)包。并定期清除里面超時(shí)的數(shù)據(jù)包,使一般無線節(jié)點(diǎn)可以重新請求該數(shù)據(jù)包。(C14)檢查組播補(bǔ)丁發(fā)送隊(duì)列中每個(gè)時(shí)間槽的發(fā)送時(shí)間,設(shè)置一個(gè)無線組播代理節(jié)點(diǎn)的服務(wù)周期,倘若當(dāng)前時(shí)間與發(fā)送時(shí)間之差大于這個(gè)周期,則調(diào)度超時(shí),刪除調(diào)度超時(shí)的數(shù)據(jù),這樣可以允許因丟包等原因沒有收到該時(shí)間槽數(shù)據(jù)的一般無線節(jié)點(diǎn)再次請求。然后回步驟(Cll)。(C2)這是一個(gè)定時(shí)分析請求的過程,具體包括如下步驟。(C21)等待一個(gè)時(shí)間間隔,即無線組播代理節(jié)點(diǎn)服務(wù)周期,由于要負(fù)責(zé)無線網(wǎng)絡(luò)中所有一般無線節(jié)點(diǎn)的請求,所以這個(gè)時(shí)間一般設(shè)為一秒。(C22)根據(jù)數(shù)據(jù)請求列表分析待請求的時(shí)間槽號。(C23)根據(jù)截止時(shí)間和節(jié)點(diǎn)請求數(shù)來決定是否響應(yīng)請求,并且在最大響應(yīng)數(shù)量限制之內(nèi),得出要響應(yīng)的時(shí)間槽。無線組播代理節(jié)點(diǎn)處理一般無線節(jié)點(diǎn)的請求時(shí)間槽列表,記錄了該節(jié)點(diǎn)的起始槽位FSN和所請求的時(shí)間槽號,然后更新該時(shí)間槽的節(jié)點(diǎn)請求數(shù)。如果該時(shí)間槽已經(jīng)有其他節(jié)點(diǎn)請求過,則比較截止時(shí)間的大小,記錄更短的截止時(shí)間。然后通過基于截止時(shí)間和節(jié)點(diǎn)請求數(shù)的優(yōu)先調(diào)度,截止時(shí)間在緊急區(qū)域之內(nèi)的按照截止時(shí)間升序排序,截止時(shí)間在緊急區(qū)域之外的按照節(jié)點(diǎn)請求數(shù)降序排序,生成需要組播補(bǔ)丁的時(shí)間槽列表。這里的調(diào)度策略是,先按照截止時(shí)間長短升序排列,對于截止時(shí)間小于緊急調(diào)度周期的優(yōu)先調(diào)度;大于緊急調(diào)度周期的再按照節(jié)點(diǎn)請求數(shù)升序排列,請求數(shù)越多的優(yōu)先調(diào)度。從而有效的節(jié)約有限的帶寬來傳輸較為緊急和稀缺的數(shù)據(jù)。(C24)分析組播補(bǔ)丁發(fā)送列表,判斷將要響應(yīng)的槽是否己經(jīng)在發(fā)送列表里面。如果不在,則組播媒體數(shù)據(jù)包,并將槽號加到發(fā)送隊(duì)列的尾部。然后返回步驟(C21)。(4)一般無線節(jié)點(diǎn)在移動過程中漫游出原先所在的網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò)中,此時(shí)如果新的網(wǎng)絡(luò)中存在組播代理,則仍可以接受服務(wù),回到步驟(2);如果新的網(wǎng)絡(luò)中不存在無線組播代理節(jié)點(diǎn),則自身轉(zhuǎn)換為無線組播代理節(jié)點(diǎn),轉(zhuǎn)到步驟(3)。(5)無線組播代理節(jié)點(diǎn)漫游出原先網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò)。在原先網(wǎng)絡(luò)中,所有的一般無線節(jié)點(diǎn)開始相互發(fā)送競爭權(quán)值數(shù)據(jù)包,通過競爭選出原無線網(wǎng)絡(luò)的新的無線組播代理節(jié)點(diǎn)。在新的網(wǎng)絡(luò)中,如果存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)與其他無線節(jié)點(diǎn)進(jìn)行競爭,競爭成功則依然作為無線組播代理節(jié)點(diǎn),進(jìn)入步驟(3);否則變?yōu)橐话銦o線節(jié)點(diǎn),進(jìn)入步驟(2)。在新的網(wǎng)絡(luò)中,如果不存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)保持原有狀態(tài),仍然作為無線組播代理節(jié)點(diǎn),等待新的無線節(jié)點(diǎn)加入,進(jìn)入步驟(3)。實(shí)例-整個(gè)系統(tǒng)的配置如表1所示。表1測試實(shí)例硬件配置<table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table>采用了三種不同碼流的節(jié)目源,分別如表2所示。表2三個(gè)不同的流媒體<table>tableseeoriginaldocumentpage20</column></row><table>在直播中占用的無線網(wǎng)絡(luò)帶寬使用率可以反映直播系統(tǒng)的穩(wěn)定性和可擴(kuò)展性。占用的無線帶寬越低,直播發(fā)生網(wǎng)絡(luò)擁塞影響服務(wù)質(zhì)量的可能性會大大降低,可以擴(kuò)展的規(guī)模會遠(yuǎn)大于占用帶寬高的系統(tǒng)。如圖8(a)所示,為在非組播方式下觀看"功夫"這個(gè)節(jié)目的無線帶寬占用示意圖,5個(gè)無線節(jié)點(diǎn)都按照普通的P2P方式去獲取媒體數(shù)據(jù)。此時(shí)網(wǎng)絡(luò)中每秒數(shù)據(jù)接收發(fā)送的峰值在4000Kbps左右,帶寬占用平均為1300Kbps。而這里采用的802.11b無線局域網(wǎng)的理論帶寬為11Mbps,而實(shí)際的有效帶寬大概為5Mbps。所以,當(dāng)占用的帶寬接近5Mbps的時(shí)候,無線局域網(wǎng)的效率就會明顯降低,丟包率會上升。也就是說,當(dāng)再加入一個(gè)無線節(jié)點(diǎn)觀看這個(gè)節(jié)目的話,這個(gè)頻道的質(zhì)量就會大大的下降。因此,在非組播方式下面緊緊支持約5個(gè)無線節(jié)點(diǎn)同時(shí)觀看同一個(gè)節(jié)目。而如圖8(b)所示,則為在組播方式下觀看"功夫"這個(gè)節(jié)目的無線帶寬占用示意圖,這個(gè)時(shí)候的帶寬占用平均值僅僅為280Kbps,而峰值占用也僅為720Kbps??梢钥闯觯捎媒M播機(jī)制之后的無線帶寬占用值是大大低于非組播方式的。在節(jié)點(diǎn)的初始化階段,由于需要同時(shí)采用組播的推(MulticastPull)、拉(MulticastPatch)方式來填充節(jié)點(diǎn)的緩沖區(qū),因此此時(shí)的帶寬消耗相對較高;但是當(dāng)節(jié)點(diǎn)的緩沖區(qū)達(dá)到了比較穩(wěn)定的狀態(tài)時(shí),則基本只需要采用組播推送(MulticastPull)的方式來進(jìn)行數(shù)據(jù)緩沖,只有很少一部分?jǐn)?shù)據(jù)是通過組播補(bǔ)丁(MulticastPatch)的方式來獲得的,因此這個(gè)時(shí)候的帶寬就會相對較低了。所以說,采用組播機(jī)制之后,在無線網(wǎng)絡(luò)下能夠支持更多的節(jié)點(diǎn)同時(shí)觀看。特別的,在這種機(jī)制下,當(dāng)新增加一個(gè)節(jié)點(diǎn)加入同一個(gè)頻道的時(shí)候,無線帶寬的占用并不會顯著的提高。其他兩個(gè)節(jié)目的帶寬占用也是類似這樣的情況,在采用無線組播代理機(jī)制之后,可以看出,的確能夠明顯提高這個(gè)流媒體網(wǎng)絡(luò)直播系統(tǒng)的性能。具體的數(shù)據(jù)如表3所示。表3三種節(jié)目在不同方式下的無線帶寬占用情況<table>tableseeoriginaldocumentpage21</column></row><table>綜合上述結(jié)果,表明了這種無線組播代理機(jī)制能夠降低無線網(wǎng)絡(luò)傳輸數(shù)據(jù)的帶寬和開銷,提高混合網(wǎng)絡(luò)直播系統(tǒng)的性能。權(quán)利要求1、一種混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法,包括以下步驟(1)無線節(jié)點(diǎn)加入到頻道對應(yīng)的組播地址,然后通過基于節(jié)點(diǎn)信號強(qiáng)弱的競爭,競爭成功的無線節(jié)點(diǎn)初始化為無線組播代理節(jié)點(diǎn),轉(zhuǎn)入步驟(3);競爭失敗的無線節(jié)點(diǎn)初始化為一般無線節(jié)點(diǎn),進(jìn)入步驟(2);(2)一般無線節(jié)點(diǎn)根據(jù)無線組播代理節(jié)點(diǎn)定期發(fā)出的心跳包初始化自己的緩沖區(qū),接收無線組播代理節(jié)點(diǎn)組播的媒體數(shù)據(jù),并根據(jù)自己的緩沖區(qū)填充情況,向無線組播代理節(jié)點(diǎn)請求數(shù)據(jù);同時(shí)一般無線節(jié)點(diǎn)維護(hù)無線組播代理節(jié)點(diǎn)在P2P網(wǎng)絡(luò)中的鄰居節(jié)點(diǎn)列表;如果某個(gè)時(shí)刻節(jié)點(diǎn)離開舊的無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(4);(3)無線組播代理節(jié)點(diǎn)負(fù)責(zé)幫助新加入組播的一般無線節(jié)點(diǎn)完成緩沖區(qū)的初始化,還負(fù)責(zé)將從廣播源和其它有線節(jié)點(diǎn)中獲取的數(shù)據(jù)在組播地址中組播,響應(yīng)一般無線節(jié)點(diǎn)的獨(dú)立的請求,在組播地址內(nèi)進(jìn)行分發(fā)數(shù)據(jù)的調(diào)度;在這過程中如果無線組播代理節(jié)點(diǎn)離開原無線網(wǎng)絡(luò),移動到新的無線網(wǎng)絡(luò)中,則轉(zhuǎn)入步驟(5);(4)一般無線節(jié)點(diǎn)在移動過程中如果漫游出原先所在的網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò)中,此時(shí)如果新的網(wǎng)絡(luò)中存在無線組播代理節(jié)點(diǎn),則仍可以接受服務(wù),回到步驟(2);如果新的網(wǎng)絡(luò)中不存在無線組播代理節(jié)點(diǎn),則自身轉(zhuǎn)換為無線組播代理節(jié)點(diǎn),轉(zhuǎn)到步驟(3);(5)無線組播代理節(jié)點(diǎn)漫游出原先網(wǎng)絡(luò),進(jìn)入新的網(wǎng)絡(luò);在原先網(wǎng)絡(luò)中,所有的一般無線節(jié)點(diǎn)開始相互發(fā)送競爭權(quán)值數(shù)據(jù)包,通過競爭選出原無線網(wǎng)絡(luò)的新的無線組播代理節(jié)點(diǎn);在新的網(wǎng)絡(luò)中,如果存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)與其他無線節(jié)點(diǎn)進(jìn)行競爭,競爭成功則依然作為無線組播代理節(jié)點(diǎn),進(jìn)入步驟(3),否則變?yōu)橐话銦o線節(jié)點(diǎn),進(jìn)入步驟(2);在新的網(wǎng)絡(luò)中,如果不存在無線組播代理節(jié)點(diǎn),則該節(jié)點(diǎn)保持原有狀態(tài),仍然作為無線組播代理節(jié)點(diǎn),等待新的無線節(jié)點(diǎn)加入,進(jìn)入步驟(3)。2、根據(jù)權(quán)利要求1所述的無線組播代理方法,其特征在于,步驟(1)包括以下過程(1.1)無線節(jié)點(diǎn)從服務(wù)器獲得的頻道列表中任意選擇一個(gè)頻道,加入這個(gè)頻道對應(yīng)的組播地址,并監(jiān)聽無線組播代理節(jié)點(diǎn)定期發(fā)出的心跳包;(1.2)如果沒有收到心跳包,說明該無線節(jié)點(diǎn)所在網(wǎng)絡(luò)中不存在無線組播代理節(jié)點(diǎn),該無線節(jié)點(diǎn)自身就初始化為無線組播代理節(jié)點(diǎn),然后就轉(zhuǎn)到步驟(3);(1.3)如果收到心跳包,則發(fā)送競爭權(quán)值包,然后節(jié)點(diǎn)將其自身的競爭權(quán)值與其他節(jié)點(diǎn)的競爭權(quán)值進(jìn)行多輪的比較;比較后權(quán)值最大的無線節(jié)點(diǎn)就初始化為無線組播代理節(jié)點(diǎn),然后轉(zhuǎn)到步驟(3);其余無線節(jié)點(diǎn)初始化為一般無線節(jié)點(diǎn),然后轉(zhuǎn)到步驟(2)。3、根據(jù)權(quán)利要求1或2所述的無線組播代理方法,其特征在于,步驟(2)包括以下過程(2.1)當(dāng)一般無線節(jié)點(diǎn)剛加入組播時(shí),根據(jù)無線組播代理節(jié)點(diǎn)的心跳包將緩沖區(qū)進(jìn)行初始化操作,初始化數(shù)據(jù)請求;(2.2)—般無線節(jié)點(diǎn)根據(jù)自己的緩沖區(qū)空缺情況來進(jìn)行調(diào)度,向本無線網(wǎng)絡(luò)中的無線組播代理節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求;(2.3)—般無線節(jié)點(diǎn)在無線網(wǎng)絡(luò)中接收組播數(shù)據(jù),根據(jù)自己的緩沖區(qū)空缺情況向自己的緩沖區(qū)填充相應(yīng)的數(shù)據(jù)包,如果收到的數(shù)據(jù)包是自己緩沖區(qū)沒有的,就填入緩沖區(qū)中,如果收到的數(shù)據(jù)包在緩沖區(qū)中已經(jīng)存在,就丟棄該數(shù)據(jù)包;(2.4)檢查是否超過最大初始化緩沖等待時(shí)間,若超時(shí)仍未接收到初始化所需要的數(shù)據(jù),再根據(jù)當(dāng)前無線組播代理節(jié)點(diǎn)的心跳包中的緩沖區(qū)第一個(gè)時(shí)間槽所表示的時(shí)間,刪除自己緩沖區(qū)內(nèi)比該時(shí)間更早的時(shí)間槽,然后返回步驟(2),重新初始化;若沒有超時(shí)則進(jìn)入步驟(2.5);(2.5)判斷是否緩沖到足夠的數(shù)據(jù)可以進(jìn)行播放;如果緩沖不足夠則繼續(xù)循環(huán)執(zhí)行步驟(2.2)(2.5),繼續(xù)緩沖;如果緩沖到足夠的數(shù)據(jù),則進(jìn)入步驟(2.6);(2.6)緩沖區(qū)開始滾動,送數(shù)據(jù)到播放器進(jìn)行播放,并不斷維護(hù)緩沖區(qū)。4、根據(jù)權(quán)利要求3所述的無線組播代理方法,其特征在于,步驟(2.2)按照下述過程進(jìn)行進(jìn)行調(diào)度(2.2.1)—般無線節(jié)點(diǎn)從緩沖區(qū)的調(diào)度指針?biāo)傅牡胤介_始,選取若干個(gè)沒有充滿的時(shí)間槽,然后將要請求的時(shí)間槽號按照緊急程度依次加入到請求列表中;(2.2.2)將本次調(diào)度的時(shí)間槽做上相應(yīng)的標(biāo)記,即使下次沒有收到這個(gè)時(shí)間槽的數(shù)據(jù),在請求超時(shí)之前也不會再次請求。5、根據(jù)權(quán)利要求3所述的無線組播代理方法,其特征在于,步驟(2.6)中,一般無線節(jié)點(diǎn)同時(shí)進(jìn)行下述步驟(2.6.1)和(2.6.2),對緩沖區(qū)進(jìn)行維護(hù)(2.6.1)按照下述過程不斷接收數(shù)據(jù)①從無線網(wǎng)絡(luò)中接收無線組播代理節(jié)點(diǎn)發(fā)送的組播數(shù)據(jù);②判斷該組播數(shù)據(jù)在自身的緩沖區(qū)中是否已經(jīng)存在,是的話返回上一步①,否則繼續(xù)執(zhí)行步驟③;③將數(shù)據(jù)包加入到數(shù)據(jù)包隊(duì)列里面;④將數(shù)據(jù)包隊(duì)列里面的數(shù)據(jù)包添加到自身的緩沖區(qū)里面,然后回去步驟①執(zhí)行;(2.6.2)按照下述過程定時(shí)請求數(shù)據(jù)-(i)等待一個(gè)請求周期再繼續(xù)執(zhí)行;(ii)緩沖區(qū)向前滾動,刪除過期的數(shù)據(jù)包;(iii)從緊急區(qū)域開始選取若干個(gè)時(shí)間槽,選取的時(shí)間槽組成組播補(bǔ)丁請求數(shù)據(jù)包發(fā)送,并對相應(yīng)時(shí)間槽號設(shè)置標(biāo)志位;然后回去步驟(i)執(zhí)行。6、根據(jù)權(quán)利要求1或2所述的無線組播代理方法,其特征在于,步驟(3)包括下述同時(shí)進(jìn)行步驟(A)、(B)和(C):(A)無線組播代理節(jié)點(diǎn)在無線網(wǎng)絡(luò)中定時(shí)組播心跳包,該心跳包含自身的緩沖區(qū)第一個(gè)時(shí)間槽號和自身的緩沖區(qū)快照,用于一般無線節(jié)點(diǎn)初始化;(B)維護(hù)緩沖區(qū)數(shù)據(jù),定期滾動緩沖區(qū)刪除舊數(shù)據(jù),完成P2P媒體交互以獲得媒體數(shù)據(jù),并組播推送收到的數(shù)據(jù);具體的步驟如下(Bl)剛啟動時(shí),向節(jié)目源或者有線網(wǎng)絡(luò)中的有線節(jié)點(diǎn)請求初始化信息,根據(jù)返回的初始化信息將緩沖區(qū)進(jìn)行初始化操作;(B2)根據(jù)自身的緩沖區(qū)情況來進(jìn)行調(diào)度,向P2P網(wǎng)絡(luò)中的有線節(jié)點(diǎn)發(fā)送數(shù)據(jù)請求,具體分為以下兩步(B21)按照自身的緩沖區(qū)緊急區(qū)域劃分,先調(diào)度緊急數(shù)據(jù),然后調(diào)度非緊急數(shù)據(jù),向有線P2P網(wǎng)絡(luò)發(fā)送數(shù)據(jù)請求;(B22)本次調(diào)度數(shù)據(jù)的時(shí)間槽要做上相應(yīng)的標(biāo)記,即使下次沒有收到這個(gè)時(shí)間槽的數(shù)據(jù),在請求超時(shí)之前也不再次請求;(B3)無線組播代理節(jié)點(diǎn)在網(wǎng)絡(luò)中接收數(shù)據(jù),根據(jù)自身的緩沖區(qū)情況向緩沖區(qū)填充相應(yīng)的數(shù)據(jù)包;(B4)檢查是否超過最大初始化緩沖等待時(shí)間,若超時(shí)仍未接收到初始化所需要的數(shù)據(jù),則返回步驟(Bl)執(zhí)行,重新初始化;若沒有超時(shí)則繼續(xù)執(zhí)行;(B5)判斷是否緩沖到足夠的數(shù)據(jù)可以進(jìn)行播放;如果緩沖不足夠則返回步驟(B2)執(zhí)行,繼續(xù)緩沖;如果緩沖到足夠的數(shù)據(jù),則進(jìn)入步驟(B6);(B6)然后緩沖區(qū)開始滾動,送數(shù)據(jù)到播放器進(jìn)行播放,并且不斷維護(hù)緩沖區(qū);(C)響應(yīng)一般無線節(jié)點(diǎn)的組播補(bǔ)丁數(shù)據(jù)請求,按照截止時(shí)間和節(jié)點(diǎn)請求數(shù)調(diào)度并發(fā)送數(shù)據(jù)。7、根據(jù)權(quán)利要求6所述的無線組播代理方法,其特征在于,步驟(C)包括下述同時(shí)執(zhí)行的步驟(Cl)和(C2):(Cl)按照下述過程不斷接收數(shù)據(jù)請求和發(fā)送數(shù)據(jù);(C11)在無線網(wǎng)絡(luò)中收取一般無線節(jié)點(diǎn)的組播補(bǔ)丁數(shù)據(jù)請求包,并從中提取請求的時(shí)間槽列表;(C12)將請求添加到數(shù)據(jù)請求列表,將對應(yīng)時(shí)間槽的節(jié)點(diǎn)請求數(shù)加1,并更新其截止時(shí)間;(C13)等待時(shí)間間隔,即等待組播補(bǔ)丁發(fā)送周期;(C14)檢査組播補(bǔ)丁發(fā)送隊(duì)列中每個(gè)時(shí)間槽的發(fā)送時(shí)間,設(shè)置一個(gè)無線組播代理節(jié)點(diǎn)的服務(wù)周期,倘若當(dāng)前時(shí)間與發(fā)送時(shí)間之差大于這個(gè)周期,則調(diào)度超時(shí),刪除調(diào)度超時(shí)的數(shù)據(jù);然后返回步驟(Cll);(C2)按照下述過程進(jìn)行定時(shí)分析請求(C21)等待一個(gè)無線組播代理節(jié)點(diǎn)服務(wù)周期;(C22)根據(jù)數(shù)據(jù)請求列表分析待請求的時(shí)間槽號;(C23)根據(jù)截止時(shí)間和節(jié)點(diǎn)請求數(shù)來決定是否響應(yīng)請求,并且在最大響應(yīng)數(shù)量限制之內(nèi),得出要響應(yīng)的時(shí)間槽;(C24)分析組播補(bǔ)丁發(fā)送列表,判斷將要響應(yīng)的槽是否已經(jīng)在發(fā)送列表里面;如果不在,則組播媒體數(shù)據(jù)包,并將槽號加到發(fā)送隊(duì)列的尾部;然后返回步驟(C21)循環(huán)執(zhí)行。8、根據(jù)權(quán)利要求6所述的無線組播代理方法,其特征在于,步驟(B6)包括下述同時(shí)執(zhí)行的步驟(B61)和(B62):(B61)按照下述過程不斷接收數(shù)據(jù)(a)從廣播源或有線節(jié)點(diǎn)接收緩沖數(shù)據(jù);(b)判斷該數(shù)據(jù)在自身的緩沖區(qū)中是否已經(jīng)存在,如果存在,返回步驟(b),否則進(jìn)入步驟(c);(c)將數(shù)據(jù)包加入到數(shù)據(jù)包隊(duì)列中;(d)將數(shù)據(jù)包隊(duì)列里面的數(shù)據(jù)包添加到自身的緩沖區(qū)里面,然后返回步驟(a);(B62)按照下述過程定時(shí)請求數(shù)據(jù)(I)等待一個(gè)請求周期再繼續(xù)執(zhí)行;(II)緩沖區(qū)向前滾動,刪除過期的數(shù)據(jù)包;(III)從緊急區(qū)域開始選取若干個(gè)時(shí)間槽,選取的時(shí)間槽組成組播補(bǔ)丁請求數(shù)據(jù)包發(fā)送,并對相應(yīng)時(shí)間槽號設(shè)置標(biāo)志位,然后回去步驟(I)執(zhí)行。全文摘要本發(fā)明公開了一種混合網(wǎng)絡(luò)直播系統(tǒng)中無線組播代理方法,步驟為①節(jié)點(diǎn)加入到頻道的組播地址,若沒收到無線組播代理的心跳包就初始化為組播代理,否則競爭決定新的組播代理。②無線組播代理與廣播源及有線節(jié)點(diǎn)交互傳輸,將收到的緩沖數(shù)據(jù)組播給本無線網(wǎng)絡(luò)中的一般無線節(jié)點(diǎn),響應(yīng)其數(shù)據(jù)請求;③一般無線節(jié)點(diǎn)根據(jù)組播代理發(fā)出的心跳包初始化緩沖區(qū),并根據(jù)緩沖區(qū)填充情況向代理請求數(shù)據(jù)。④一般無線節(jié)點(diǎn)如果漫游進(jìn)入新網(wǎng)絡(luò),若新網(wǎng)絡(luò)中存在組播代理則仍可接受服務(wù),否則自身轉(zhuǎn)為組播代理。⑤如果無線組播代理漫游出原網(wǎng)絡(luò),則原網(wǎng)絡(luò)所有一般無線節(jié)點(diǎn)競爭選出新的組播代理,新網(wǎng)絡(luò)若存在組播代理,則競爭確定新的組播代理,否則保持作為組播代理。文檔編號H04Q7/22GK101247197SQ20081004697公開日2008年8月20日申請日期2008年2月29日優(yōu)先權(quán)日2008年2月29日發(fā)明者廖光賢,廖小飛,帆張,李海翔,潘正秋,蔣文斌,志袁,海金申請人:華中科技大學(xué)