亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于擁塞控制的無線多跳網(wǎng)多播方法

文檔序號(hào):7553472閱讀:142來源:國(guó)知局
專利名稱:基于擁塞控制的無線多跳網(wǎng)多播方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于擁塞控制的無線多跳網(wǎng)多播方法,屬于無線網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù)
無線多跳網(wǎng)是近年來興起的一種新型網(wǎng)絡(luò)結(jié)構(gòu),處于這種網(wǎng)絡(luò)中的節(jié)點(diǎn)除了具有數(shù)據(jù)包的發(fā)送和接收功能外還負(fù)責(zé)網(wǎng)絡(luò)的組織、維護(hù)以及網(wǎng)絡(luò)中數(shù)據(jù)包的路由。典型的無線多跳網(wǎng)絡(luò)包括無線傳感網(wǎng)、無線自組網(wǎng)等。由于多跳以及無線信道的固有特性,無線多跳網(wǎng)中節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)始終處于動(dòng)態(tài)變化中,尤其在移動(dòng)場(chǎng)景中(如移動(dòng)自組網(wǎng)),這種動(dòng)態(tài)變化的拓?fù)浣o數(shù)據(jù)包的多播帶來了很大挑戰(zhàn),如何在無線多跳網(wǎng)中實(shí)現(xiàn)數(shù)據(jù)包的多播分發(fā)已經(jīng)成為近年來的研究熱點(diǎn)。一般而言,利用構(gòu)造多播樹的方法可以實(shí)現(xiàn)有效的多播,如MA0DV,但是,由于構(gòu)造以及維護(hù)多播樹需要耗費(fèi)的大量的網(wǎng)絡(luò)資源,尤其在無線環(huán)境中,這種資源的耗費(fèi)在很大程度上抑制了網(wǎng)絡(luò)整體性能的提升,甚至降低網(wǎng)絡(luò)性能。特別是在多個(gè)多播組共存的情況下,這種性能下降趨勢(shì)尤為明顯。基于網(wǎng)格(mesh)結(jié)構(gòu)的無線多跳網(wǎng)多播路由協(xié)議雖然規(guī)避了復(fù)雜的網(wǎng)絡(luò)維護(hù)機(jī)制,典型的如PUMA,但是其在數(shù)據(jù)分組投遞時(shí)的盲目性,使網(wǎng)絡(luò)的總體開銷大大增加,同時(shí)節(jié)點(diǎn)的能耗也隨之增大。這兩種多播路由機(jī)制都無法達(dá)到或者逼近最大流最小割定理所確定的網(wǎng)絡(luò)最大傳輸容量。2000, R.Alshwede提出的網(wǎng)絡(luò)編碼理論,推翻了傳統(tǒng)路由機(jī)制所采用的數(shù)據(jù)分組存儲(chǔ)轉(zhuǎn)發(fā)模式。通過允許中間節(jié)點(diǎn)對(duì)數(shù)據(jù)分組進(jìn)行編碼操作,網(wǎng)絡(luò)編碼大大提高了網(wǎng)絡(luò)的吞吐量,并能達(dá)到理論的最大傳輸容量。但是,由于網(wǎng)絡(luò)拓?fù)涞膭?dòng)態(tài)變化,確定編碼參數(shù)的網(wǎng)絡(luò)編碼并不能很好的適應(yīng)當(dāng)前網(wǎng)絡(luò)狀況,反而會(huì)使網(wǎng)絡(luò)中的數(shù)據(jù)包傳輸性能顯著惡化。除此以外,如果發(fā)送節(jié)點(diǎn)缺少對(duì)編碼包發(fā)送速率的控制機(jī)制,在惡化的網(wǎng)絡(luò)性能情況下,始終保持恒定的發(fā)送速率會(huì)使網(wǎng)絡(luò)中的數(shù)據(jù)包沖突顯著增多,從而出現(xiàn)惡性循環(huán)。相對(duì)于無編碼操作的多播機(jī)制,傳統(tǒng)的網(wǎng)絡(luò)編碼還帶來了額外的緩存數(shù)據(jù)分組的延時(shí),限制了它在對(duì)實(shí)時(shí)性有一定要求的業(yè)務(wù)中的應(yīng)用。基于以上討論,我們需要一種能夠根據(jù)當(dāng)前網(wǎng)絡(luò)狀況,自適應(yīng)選擇發(fā)送節(jié)點(diǎn)數(shù)據(jù)包發(fā)送速率即編碼參數(shù)的機(jī)制,用以適應(yīng)動(dòng)態(tài)的網(wǎng)絡(luò)環(huán)境。同時(shí)這種網(wǎng)絡(luò)應(yīng)該能夠滿足業(yè)務(wù)對(duì)可靠性、吞吐量以及實(shí)時(shí)性的要求。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種能夠自適應(yīng)選擇發(fā)送參數(shù)、協(xié)調(diào)發(fā)送速率,盡可能緩解由于無線環(huán)境下的多播所產(chǎn)生的數(shù)據(jù)包沖突,提高網(wǎng)絡(luò)的整體可靠性與吞吐量的基于擁塞控制的無線多跳網(wǎng)多播方法。本發(fā)明采用下列技術(shù)方案解決上述技術(shù)問題:本發(fā)明設(shè)計(jì)了一種基于擁塞控制的無線多跳網(wǎng)多播方法,包括如下具體步驟:步驟(I):構(gòu)建數(shù)據(jù)分發(fā)所需的mesh型網(wǎng)絡(luò),所述mesh型網(wǎng)絡(luò)中包括發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)、中間節(jié)點(diǎn)和核心節(jié)點(diǎn),并對(duì)構(gòu)建的mesh型網(wǎng)絡(luò)進(jìn)行功能性維護(hù);步驟(2):在步驟(I)構(gòu)建的mesh型網(wǎng)絡(luò)中,發(fā)送節(jié)點(diǎn)周期性發(fā)送網(wǎng)絡(luò)狀態(tài)探測(cè)包來獲取mesh網(wǎng)絡(luò)的各項(xiàng)狀況信息,并對(duì)獲取的各項(xiàng)狀況信息進(jìn)行評(píng)估,并將評(píng)估結(jié)果轉(zhuǎn)換為參數(shù)的形式;步驟(3):發(fā)送節(jié)點(diǎn)根據(jù)接收到的評(píng)估結(jié)果自適應(yīng)選擇網(wǎng)絡(luò)編碼的編碼參數(shù),并動(dòng)態(tài)調(diào)整編碼參數(shù),同時(shí),發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)所提供網(wǎng)絡(luò)沖突情況改變發(fā)送窗口大小,并將處于發(fā)送窗口中的數(shù)據(jù)包編碼后傳輸至中間節(jié)點(diǎn);步驟(4):所述中間節(jié)點(diǎn)對(duì)接收到的編碼包進(jìn)行二次編碼操作,并將二次編碼操作后的編碼包發(fā)送至接收節(jié)點(diǎn),接收節(jié)點(diǎn)在接收到足夠多的編碼包時(shí),通過編碼的逆操作恢復(fù)出原始數(shù)據(jù)包。作為本發(fā)明的一種優(yōu)化方法:所述步驟(I)包括如下具體處理:步驟(11):在網(wǎng)絡(luò)初始狀態(tài)下,將最先申明加入多播組的接收節(jié)點(diǎn)將自己標(biāo)記為核心節(jié)點(diǎn);步驟(12):核心節(jié)點(diǎn)構(gòu)造MA控制包,核心節(jié)點(diǎn)按照自身信息填充MA控制包各字段的控制信息,從而構(gòu)造一個(gè)MA控制包,初始狀態(tài)下,核心節(jié)點(diǎn)構(gòu)造的MA控制包具有如下內(nèi)容:MA序號(hào)為0,核心節(jié)點(diǎn)ID即為本身節(jié)點(diǎn)號(hào),到核心節(jié)點(diǎn)跳數(shù)為0,父節(jié)點(diǎn)ID為本身節(jié)點(diǎn)號(hào),mesh節(jié)點(diǎn)標(biāo)志為True,節(jié)點(diǎn)位置坐標(biāo)為本身坐標(biāo),核心節(jié)點(diǎn)將構(gòu)造完成的MA控制包廣播至網(wǎng)絡(luò)中,核心節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)將收到該MA控制包,其中,MA序號(hào)定義為全局性序號(hào);步驟(13):鄰居節(jié)點(diǎn)作為接收節(jié)點(diǎn)接收到MA控制包后解析其中所包含的控制信息,若該接收節(jié)點(diǎn)是第一次收到MA控制包,則按照該MA控制包所包含的控制信息構(gòu)建鄰居節(jié)點(diǎn)信息表,鄰居節(jié)點(diǎn)信息表記錄了該接收節(jié)點(diǎn)所有鄰居節(jié)點(diǎn)的ID、核心節(jié)點(diǎn)節(jié)點(diǎn)號(hào)、該接收節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)、所有鄰居節(jié)點(diǎn)的mesh節(jié)點(diǎn)標(biāo)志是否為True和所有鄰居節(jié)點(diǎn)的位置坐標(biāo),并轉(zhuǎn)而執(zhí)行步驟(16);若該接收節(jié)點(diǎn)不是第一次收到MA控制包,繼續(xù)執(zhí)行步驟(14);步驟(14):判斷收到的MA控制包是否有效:通過該MA控制包所包含的MA序號(hào)判斷該MA控制包是否過時(shí),對(duì)于同一鄰居節(jié)點(diǎn)發(fā)送過來的MA控制包,擁有最大MA序號(hào)的認(rèn)為是有效的,并繼續(xù)執(zhí)行步驟(15);否則,直接丟棄該MA控制包并轉(zhuǎn)而執(zhí)行步驟(13);步驟(15):利用本次所收到的MA控制包中的控制信息更新現(xiàn)存的鄰居節(jié)點(diǎn)信息表,即用本次接收到的MA控制包中的控制字段覆蓋現(xiàn)存的鄰居節(jié)點(diǎn)信息表中的對(duì)應(yīng)內(nèi)容;步驟(16):步驟(13)中的接收節(jié)點(diǎn)從自己的鄰居節(jié)點(diǎn)信息表中選擇距離核心節(jié)點(diǎn)跳數(shù)最少的一個(gè)鄰居節(jié)點(diǎn)作為自己的父節(jié)點(diǎn),若出現(xiàn)跳數(shù)相同情況,則以坐標(biāo)位置計(jì)算出的離自身物理距離較近的鄰居節(jié)點(diǎn)作為父節(jié)點(diǎn),該節(jié)點(diǎn)本身距離核心節(jié)點(diǎn)的跳數(shù)為所選擇父節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)值加1,若該節(jié)點(diǎn)也準(zhǔn)備加入多播組,則置mesh節(jié)點(diǎn)標(biāo)志位為True,否則,檢索整個(gè)鄰居節(jié)點(diǎn)信息表,尋找是否出現(xiàn)以該節(jié)點(diǎn)作為父節(jié)點(diǎn),mesh節(jié)點(diǎn)標(biāo)志為True并且距離核心節(jié)點(diǎn)跳數(shù)大于該節(jié)點(diǎn)的鄰居節(jié)點(diǎn),若在鄰居節(jié)點(diǎn)信息表中發(fā)現(xiàn)同時(shí)符合該三個(gè)條件的節(jié)點(diǎn),則認(rèn)為該節(jié)點(diǎn)有一個(gè)子mesh節(jié)點(diǎn),此時(shí)該節(jié)點(diǎn)作為子mesh節(jié)點(diǎn)的父節(jié)點(diǎn),也將自己標(biāo)記為mesh節(jié)點(diǎn),否則,mesh節(jié)點(diǎn)標(biāo)志為False,在這里我們將非接收節(jié)點(diǎn)的mesh節(jié)點(diǎn)稱為mesh網(wǎng)絡(luò)中的中間節(jié)點(diǎn),最后依據(jù)以上討論獲得的信息,該節(jié)點(diǎn)構(gòu)造出一個(gè)新的MA控制包,并廣播給自己的鄰居節(jié)點(diǎn),各鄰居節(jié)點(diǎn)按照步驟(11)至步驟(16)的方法進(jìn)行處理,從而完成了 mesh型網(wǎng)絡(luò)的功能性維護(hù)。作為本發(fā)明的一種優(yōu)化方法:所述步驟(2)包括如下具體步驟:步驟(21):發(fā)送節(jié)點(diǎn)緩存的狀態(tài)信息擁有一個(gè)時(shí)戳,記錄了上一次獲取網(wǎng)絡(luò)狀態(tài)信息的時(shí)間點(diǎn),發(fā)送節(jié)點(diǎn)在本地緩存中檢查上一次獲得的網(wǎng)絡(luò)狀態(tài)信息上的時(shí)戳,如果時(shí)戳所記錄的時(shí)間點(diǎn)與當(dāng)前時(shí)間間隔超過T。,則轉(zhuǎn)向步驟(22);否則,直接將所檢查到的網(wǎng)絡(luò)狀態(tài)信息輸出,其中,T0定義為發(fā)送節(jié)點(diǎn)所緩存的網(wǎng)絡(luò)狀態(tài)信息的過時(shí)時(shí)間;步驟(22):發(fā)送節(jié)點(diǎn)發(fā)送狀態(tài)請(qǐng)求控制包Squwy到步驟(I)中構(gòu)建的mesh網(wǎng)絡(luò)中去,以請(qǐng)求其反饋發(fā)送節(jié)點(diǎn)所需的網(wǎng)絡(luò)狀態(tài)信息,Squwy包含一個(gè)時(shí)戳字段,記錄發(fā)送節(jié)點(diǎn)發(fā)送該控制包時(shí)的時(shí)間點(diǎn),mesh網(wǎng)絡(luò)中的所有中間節(jié)點(diǎn)對(duì)該控制包進(jìn)行轉(zhuǎn)發(fā),而接收節(jié)點(diǎn)對(duì)該控制包Squea7進(jìn)行響應(yīng),具體包括如下處理:步驟(221):接收節(jié)點(diǎn)收到控制包Squwy后,首先判定自己是否是核心節(jié)點(diǎn),如果不是核心節(jié)點(diǎn)則轉(zhuǎn)至步驟(222);否則,轉(zhuǎn)至步驟(223);步驟(222):接收節(jié)點(diǎn)根據(jù)控制包Squwy中的時(shí)戳信息計(jì)算接收到該控制包時(shí)的延時(shí)ti;同時(shí)將該延時(shí)信息ti通過S_OTt控制消息發(fā)送至核心節(jié)點(diǎn),Sreport控制消息包含上述延時(shí)信息ti外還擁有一個(gè)標(biāo)記接收節(jié)點(diǎn)序號(hào)的字段,用以區(qū)分不同的接收節(jié)點(diǎn)狀態(tài)信息;步驟(223):核心節(jié)點(diǎn)從本地緩存中檢索接收節(jié)點(diǎn)狀態(tài)信息,如果該核心節(jié)點(diǎn)所維護(hù)的網(wǎng)絡(luò)中的所有接收節(jié)點(diǎn)均通過S_OTt反饋了其節(jié)點(diǎn)狀態(tài)信息,即mesh網(wǎng)絡(luò)中的接收節(jié)點(diǎn)數(shù)目與收到的不同節(jié)點(diǎn)序號(hào)的S_OTt控制信息的個(gè)數(shù)相同,則轉(zhuǎn)至步驟(225);否則,順序執(zhí)行步驟(224);步驟(224):核心節(jié)進(jìn)入等待狀態(tài),等待一段時(shí)間后轉(zhuǎn)至步驟(212),其中,等待時(shí)間為發(fā)送節(jié)點(diǎn)連續(xù)發(fā)送兩個(gè)編 碼包的時(shí)間間隔;步驟(225):核心節(jié)點(diǎn)通過所獲取的各接收節(jié)點(diǎn)的狀態(tài)i e M,通過如下處理選取一個(gè)反饋參考點(diǎn):a:核心節(jié)點(diǎn)通過所獲取的信息計(jì)算各接收節(jié)點(diǎn)收到發(fā)送節(jié)點(diǎn)發(fā)送的Squwy控制信息的平均延時(shí),S卩E(ti;i e Μ);b:以該平均值為起點(diǎn),向\增大或者減小的方向進(jìn)行搜索,第一次遇到的值即作為反饋參考延時(shí),其所對(duì)應(yīng)的節(jié)點(diǎn)r即選為反饋參考點(diǎn);c:核心節(jié)點(diǎn)通過發(fā)送一個(gè)簡(jiǎn)單通知信息至所選擇的反饋參考點(diǎn),以通知其被選擇成為反饋參考點(diǎn);步驟(23):將核心節(jié)點(diǎn)所確定的反饋參考延時(shí)信息tK,通過Supdate控制包反饋到發(fā)送節(jié)點(diǎn),Supdate控制包除了包含參考延時(shí)信息&外,還包含mesh網(wǎng)絡(luò)的接收節(jié)點(diǎn)的平均鄰
居節(jié)點(diǎn)個(gè)數(shù)$其計(jì)算公式為: =|x;ri s2,由于核心節(jié)點(diǎn)維護(hù)著整個(gè)mesh網(wǎng)絡(luò),通過其
丄N η,S
擁有的各接收節(jié)點(diǎn)的位置信息(Xi,yi) ;i e M,計(jì)算獲得S的值,最終,核心節(jié)點(diǎn)反饋給核心節(jié)點(diǎn)的信息包括參考延時(shí)信息tK和mesh網(wǎng)絡(luò)的接收節(jié)點(diǎn)的平均鄰居節(jié)點(diǎn)個(gè)數(shù)兄,其中,S定義為覆蓋所有接收節(jié)點(diǎn)的最小面積。作為本發(fā)明的一種優(yōu)化方法:所述步驟(3)包括如下具體處理:
步驟(301):通過參數(shù)乂來確定最佳編碼長(zhǎng)度L ;步驟(302):發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)反饋的mesh網(wǎng)絡(luò)狀態(tài)調(diào)整發(fā)送窗口大小,并通過mesh網(wǎng)絡(luò)反饋?zhàn)陨硇畔⒐┌l(fā)送節(jié)點(diǎn)調(diào)整發(fā)送速率,具體包括如下處理:步驟(3021):發(fā)送節(jié)點(diǎn)初始狀態(tài)下設(shè)置發(fā)送窗口 W大小為4,并對(duì)處于窗口內(nèi)的數(shù)據(jù)包進(jìn)行編碼發(fā)送;步驟(3022):由步驟(225)所選擇的反饋參考點(diǎn)在成功恢復(fù)出某一數(shù)據(jù)塊的所有原始數(shù)據(jù)包后,計(jì)算出從發(fā)送節(jié)點(diǎn)發(fā)出這些數(shù)據(jù)包到反饋參考點(diǎn)恢復(fù)出這些數(shù)據(jù)包的延時(shí),即用成功恢復(fù)出原始數(shù)據(jù)包時(shí)的時(shí)間減去收到關(guān)于這個(gè)數(shù)據(jù)塊的第一個(gè)編碼包的時(shí)間;步驟(3023):構(gòu)造Smrort控制包,將計(jì)算出的延時(shí)通過該控制包匯報(bào)給核心節(jié)點(diǎn),通過該最優(yōu)路徑將SMpOTt控制包投遞至核心節(jié)點(diǎn);步驟(3024):核心節(jié)點(diǎn)接收到反饋參考點(diǎn)發(fā)送過來的Smrort控制包后,將該控制包通過發(fā)送節(jié)點(diǎn)到達(dá)核心節(jié)點(diǎn)的最優(yōu)路徑的反向路徑反饋給發(fā)送節(jié)點(diǎn);步驟(3025):發(fā)送節(jié)點(diǎn)接收到核心節(jié)點(diǎn)發(fā)送過來的S_OTt控制包后重新計(jì)算發(fā)送窗口 W的大小,具體計(jì)算過程如下:A:將Sreport控制包從核心節(jié)點(diǎn)到達(dá)發(fā)送節(jié)點(diǎn)的延時(shí)加上Smrort控制包中記錄的參考反饋點(diǎn)成功解碼一個(gè)數(shù)據(jù)塊的延時(shí)在本發(fā)明定義為mesh網(wǎng)絡(luò)中的往返時(shí)間,記作RTT ;
W WB:令Z//其中ΚΤΤι_為發(fā)送節(jié)點(diǎn)按照步驟Α)計(jì)算hase
出來的歷史最小RTT,初始狀態(tài)下RTTbase等于發(fā)送節(jié)點(diǎn)收到的第一個(gè)反饋時(shí)所計(jì)算出來的RTT,因此,發(fā)送節(jié)點(diǎn)在第一次收到反饋時(shí)無需重新計(jì)算發(fā)送窗口 W的大??;C:若 diff ( O,則 RTTbase=RTT ;若 diff〈l,則令 W=W++ ;若 diff>3,則令 W=W-;其余情況下W保持不變;步驟(3026):利用步驟(3025)計(jì)算出的W值調(diào)整發(fā)送窗口的大小,此外,發(fā)送窗口的調(diào)整過程將被周期性地觸發(fā)以實(shí)現(xiàn)窗口能夠根據(jù)網(wǎng)絡(luò)狀況實(shí)時(shí)調(diào)整;步驟(303):發(fā)送參數(shù)以及發(fā)送窗口選擇完畢后,發(fā)送節(jié)點(diǎn)將利用所選參數(shù)組織數(shù)據(jù)包的編碼發(fā)送,具體包括如下處理:步驟(3031):讀取待發(fā)送數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分組打包,依次賦予每個(gè)數(shù)據(jù)包一個(gè)序號(hào)和其所屬的數(shù)據(jù)塊編號(hào),數(shù)據(jù)塊編號(hào)通過數(shù)據(jù)包序號(hào)模編碼長(zhǎng)度L獲得,將所獲得的數(shù)據(jù)塊編號(hào)和數(shù)據(jù)包序號(hào)放入包頭,令I(lǐng)Dmt等于當(dāng)前處理的數(shù)據(jù)包所屬的數(shù)據(jù)塊的編號(hào);步驟(3032):將獲得數(shù)據(jù)包存入發(fā)送節(jié)點(diǎn)本地的待編碼隊(duì)列;步驟(304):對(duì)步驟(303)構(gòu)造的待編碼隊(duì)列中的數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)編碼操作,具體步驟如下:步驟(3041):檢索本地待發(fā)送隊(duì)列,查找是否有數(shù)據(jù)塊編號(hào)等于IDeunent的編碼包,若不存在繼續(xù)執(zhí)行步驟3042),反之轉(zhuǎn)至步驟3043);步驟(3042):隨機(jī) 生成一個(gè)有限域中的數(shù)%,設(shè)Ptl為當(dāng)前數(shù)據(jù)包,則編碼包
Ql-e0.Po ;步驟(3043):假設(shè)本地待編碼隊(duì)列中存在η個(gè)數(shù)據(jù)塊編號(hào)為IDmt的編碼包:
PT= {Po, Pi, P2, - - - , pj隨機(jī)生成一個(gè)有限域中的η維隨機(jī)向量E=Ietl, θ1; e2,..., en},用隨機(jī)向量與數(shù)據(jù)包進(jìn)行線性組合即可得到編碼包C=E.P ;步驟(3044):參與編碼的隨機(jī)向量稱為編碼向量,將編碼向量加入到所得的編碼包的包頭;步驟(305):判斷發(fā)送窗口是否就緒,具體判斷過程如下:步驟(3051):計(jì)算IDuppe,=W+IDaek,初始狀態(tài)下IDaek的值為_1,意味著尚未收到任何數(shù)據(jù)塊的反饋消息;步驟(3052):當(dāng)IDeunent ( IDupper時(shí),說明發(fā)送節(jié)點(diǎn)存在可供數(shù)據(jù)塊IDeunent發(fā)送使用的窗口,即發(fā)送窗口就緒;若發(fā)送窗口尚未就緒,將步驟(304)獲得的編碼包存入待發(fā)送隊(duì)列,然后回到步驟(303)繼續(xù)讀取待發(fā)送數(shù)據(jù),待編碼隊(duì)列有一個(gè)最大長(zhǎng)度限制,當(dāng)發(fā)送窗口長(zhǎng)時(shí)間不能就緒,待編碼隊(duì)列達(dá)到最大長(zhǎng)度限制時(shí),發(fā)送節(jié)點(diǎn)將不再讀取待發(fā)送數(shù)據(jù),而是進(jìn)入等待發(fā)送窗口就緒狀態(tài);步驟(306):將步驟(304)所獲得的編碼包以及待發(fā)送隊(duì)列中的所有編碼包發(fā)送到mesh網(wǎng)絡(luò)中去,同時(shí)刪除待發(fā)送隊(duì)列和待編碼隊(duì)列中的對(duì)應(yīng)編碼包和數(shù)據(jù)包。作為本發(fā)明的一種優(yōu)化方法:所述步驟(4)包括如下具體處理:步驟(400):接收節(jié)點(diǎn)檢查收到的步驟(306)中的編碼包的編碼向量,確定編碼長(zhǎng)度L,L為I時(shí)轉(zhuǎn)至步驟(404);否則,繼續(xù)執(zhí)行步驟(401);步驟(401):該節(jié)點(diǎn)從本地緩存中找出數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包的編碼向量,若所收到編碼包的編碼向量與找出的本地緩存中的所有相關(guān)編碼向量線性無關(guān),則認(rèn)為該收到的編碼包包含新信息,并繼續(xù)執(zhí)行步驟(402);若檢查結(jié)果表明新收到的編碼包不包含任何新信息,則直接丟棄,等待接收下一個(gè)編碼包,重復(fù)執(zhí)行本步驟;步驟(402):將該編碼包存入接收節(jié)點(diǎn)的本地緩存中;步驟(403):判斷接收到的編碼包的序號(hào)是否為偶數(shù),若為偶數(shù)繼續(xù)執(zhí)行步驟(404);否則直接結(jié)束,等待接收下一個(gè)編碼包,重復(fù)執(zhí)行本步驟;步驟(404):將本地緩存中數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包進(jìn)行二次編碼,用一組對(duì)應(yīng)維度的有限域中的隨機(jī)向量將每個(gè)編碼包進(jìn)行線性組合并將參與編碼的隨機(jī)向量加入到該編碼包的包頭中;步驟(405):將編碼包發(fā)送到mesh網(wǎng)絡(luò)中去,mesh網(wǎng)絡(luò)中的接收節(jié)點(diǎn)接收該編碼包;步驟(406):若該節(jié)點(diǎn)不是接收節(jié)點(diǎn),則直接結(jié)束操作;如果該節(jié)點(diǎn)是接收節(jié)點(diǎn)則繼續(xù)執(zhí)行步驟(407);步驟(407):找出上述接收節(jié)點(diǎn)的本地緩存中數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包,連同所收到的編碼包,將他們的編碼向量組成編碼矩陣;步驟(408):在這些編碼包中找出原始數(shù)據(jù)包信息量最大的一個(gè),定義一個(gè)編碼包的原始數(shù)據(jù)包信息量為參與該編碼包編碼過程的原始數(shù)據(jù)包個(gè)數(shù);步驟(409):若步驟(407)確定的編碼矩陣的秩大于步驟(408)獲得的最大原始數(shù)據(jù)報(bào)信息量,則確定出現(xiàn)解碼機(jī)會(huì),并繼續(xù)執(zhí)行步驟(410);否則該接收節(jié)點(diǎn)繼續(xù)等待接收下一個(gè)編碼包并轉(zhuǎn)而執(zhí)行步驟(407);
步驟(410):通過高斯消元法和公式P=K1 *C從編碼包中恢復(fù)出原始數(shù)據(jù)包,其中,C定義為參與解碼過程的編碼包所組成的向量,E定義為這些編碼包包頭中所包含的編碼向量組成的編碼矩陣,P即為恢復(fù)出的原始數(shù)據(jù)包。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):1.本發(fā)明能夠根據(jù)當(dāng)前網(wǎng)絡(luò)對(duì)于發(fā)送節(jié)點(diǎn)所分發(fā)的數(shù)據(jù)包的接收狀況,動(dòng)態(tài)調(diào)整發(fā)送窗口的大小,減小了無線環(huán)境下多播分發(fā)數(shù)據(jù)包所產(chǎn)生沖突,從而提高了數(shù)據(jù)包分發(fā)的成功率;2.本發(fā)明在網(wǎng)絡(luò)狀態(tài)不足以支撐的場(chǎng)景下,這種退化可以避免盲目采用網(wǎng)絡(luò)編碼帶來的性能惡化;3.本發(fā)明采用部分網(wǎng)絡(luò)編碼技術(shù),在提高吞吐量的同時(shí)將延時(shí)及解碼復(fù)雜度限制在一個(gè)可以接受的范圍內(nèi)。


圖1為Mesh網(wǎng)絡(luò)構(gòu)建過程;圖2為網(wǎng)絡(luò)狀態(tài)信息查詢過程;圖3為網(wǎng)絡(luò)狀態(tài)信息收集及反饋過程;圖4為核心節(jié)點(diǎn)與發(fā)送端的互動(dòng)處理過程;圖5為發(fā)送端處理過程;圖6為中間及接收節(jié)點(diǎn)處理過程。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的具體說明:本發(fā)明設(shè)計(jì)了一種基于擁塞控制的無線多跳網(wǎng)多播方法,包括如下具體步驟:步驟(I):構(gòu)建數(shù)據(jù)分發(fā)所需的mesh型網(wǎng)絡(luò),所述mesh型網(wǎng)絡(luò)中包括發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)、中間節(jié)點(diǎn)和核心節(jié)點(diǎn),并對(duì)構(gòu)建的mesh型網(wǎng)絡(luò)進(jìn)行功能性維護(hù);步驟(2):在步驟(I)構(gòu)建的mesh型網(wǎng)絡(luò)中,發(fā)送節(jié)點(diǎn)周期性發(fā)送網(wǎng)絡(luò)狀態(tài)探測(cè)包來獲取mesh網(wǎng)絡(luò)的各項(xiàng)狀況信息,并對(duì)獲取的各項(xiàng)狀況信息進(jìn)行評(píng)估,并將評(píng)估結(jié)果轉(zhuǎn)換為參數(shù)的形式;步驟(3):發(fā)送節(jié)點(diǎn)根據(jù)接收到的評(píng)估結(jié)果自適應(yīng)選擇網(wǎng)絡(luò)編碼的編碼參數(shù),并動(dòng)態(tài)調(diào)整編碼參數(shù),同時(shí),發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)所提供網(wǎng)絡(luò)沖突情況改變發(fā)送窗口大小,并將處于發(fā)送窗口中的數(shù)據(jù)包編碼后傳輸至中間節(jié)點(diǎn);步驟(4):所述中間節(jié)點(diǎn)對(duì)接收到的編碼包進(jìn)行二次編碼操作,并將二次編碼操作后的編碼包發(fā)送至接收端,接收端在接收到足夠多的編碼包時(shí),通過編碼的逆操作恢復(fù)出原始數(shù)據(jù)包。作為本發(fā)明的一種優(yōu)化方法:如圖1所示,所述步驟(I)包括如下具體處理:步驟(11):在網(wǎng)絡(luò)初始狀態(tài)下,將最先申明加入多播組的接收節(jié)點(diǎn)將自己標(biāo)記為核心節(jié)點(diǎn);步驟(12):核心節(jié)點(diǎn)構(gòu)造MA控制包,核心節(jié)點(diǎn)按照自身信息填充MA控制包各字段的控制信息,從而構(gòu)造一個(gè)MA控制包,初始狀態(tài)下,核心節(jié)點(diǎn)構(gòu)造的MA控制包具有如下內(nèi)容:MA序號(hào)為O,核心節(jié)點(diǎn)ID即為本身節(jié)點(diǎn)號(hào),到核心節(jié)點(diǎn)跳數(shù)為O,父節(jié)點(diǎn)ID為本身節(jié)點(diǎn)號(hào),mesh節(jié)點(diǎn)標(biāo)志為True,節(jié)點(diǎn)位置坐標(biāo)為本身坐標(biāo),核心節(jié)點(diǎn)將構(gòu)造完成的MA控制包廣播至網(wǎng)絡(luò)中,核心節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)將收到該MA控制包,其中,MA序號(hào)定義為全局性序號(hào);步驟(13):鄰居節(jié)點(diǎn)作為接收節(jié)點(diǎn)接收到MA控制包后解析其中所包含的控制信息,若該接收節(jié)點(diǎn)是第一次收到MA控制包,則按照該MA控制包所包含的控制信息構(gòu)建鄰居節(jié)點(diǎn)信息表,鄰居節(jié)點(diǎn)信息表記錄了該接收節(jié)點(diǎn)所有鄰居節(jié)點(diǎn)的ID、核心節(jié)點(diǎn)節(jié)點(diǎn)號(hào)、該接收節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)、所有鄰居節(jié)點(diǎn)的mesh節(jié)點(diǎn)標(biāo)志是否為True和所有鄰居節(jié)點(diǎn)的位置坐標(biāo),并轉(zhuǎn)而執(zhí)行步驟(16);若該接收節(jié)點(diǎn)不是第一次收到MA控制包,繼續(xù)執(zhí)行步驟(14);步驟(14):判斷收到的MA控制包是否有效:通過該MA控制包所包含的MA序號(hào)判斷該MA控制包是否過時(shí),對(duì)于同一鄰居節(jié)點(diǎn)發(fā)送過來的MA控制包,擁有最大MA序號(hào)的認(rèn)為是有效的,并繼續(xù)執(zhí)行步驟(15);否則,直接丟棄該MA控制包并轉(zhuǎn)而執(zhí)行步驟(13);步驟(15):利用本次所收到的MA控制包中的控制信息更新現(xiàn)存的鄰居節(jié)點(diǎn)信息表,即用本次接收到的MA控制包中的控制字段覆蓋現(xiàn)存的鄰居節(jié)點(diǎn)信息表中的對(duì)應(yīng)內(nèi)容;步驟(16):步驟(13)中的接收節(jié)點(diǎn)從自己的鄰居節(jié)點(diǎn)信息表中選擇距離核心節(jié)點(diǎn)跳數(shù)最少的一個(gè)鄰居節(jié)點(diǎn)作為自己的父節(jié)點(diǎn),若出現(xiàn)跳數(shù)相同情況,則以坐標(biāo)位置計(jì)算出的離自身物理距離較近的鄰居節(jié)點(diǎn)作為父節(jié)點(diǎn),該節(jié)點(diǎn)本身距離核心節(jié)點(diǎn)的跳數(shù)為所選擇父節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)值加1,若該節(jié)點(diǎn)也準(zhǔn)備加入多播組,則置mesh節(jié)點(diǎn)標(biāo)志位為True,否則,檢索整個(gè)鄰居節(jié)點(diǎn)信息表,尋找是否出現(xiàn)以該節(jié)點(diǎn)作為父節(jié)點(diǎn),mesh節(jié)點(diǎn)標(biāo)志為True并且距離核心節(jié)點(diǎn)跳數(shù)大于該節(jié)點(diǎn)的鄰居節(jié)點(diǎn),若在鄰居節(jié)點(diǎn)信息表中發(fā)現(xiàn)同時(shí)符合該三個(gè)條件的節(jié)點(diǎn),則認(rèn)為該節(jié)點(diǎn)有一個(gè)子me sh節(jié)點(diǎn),此時(shí)該節(jié)點(diǎn)作為子me sh節(jié)點(diǎn)的父節(jié)點(diǎn),也將自己標(biāo)記為mesh節(jié)點(diǎn),否則,mesh節(jié)點(diǎn)標(biāo)志為False,在這里我們將非接收節(jié)點(diǎn)的mesh節(jié)點(diǎn)稱為mesh網(wǎng)絡(luò)中的中間節(jié)點(diǎn),最后依據(jù)以上討論獲得的信息,該節(jié)點(diǎn)構(gòu)造出一個(gè)新的MA控制包,并廣播給自己的鄰居節(jié)點(diǎn),各鄰居節(jié)點(diǎn)按照步驟(11)至步驟(16)的方法進(jìn)行處理,從而完成了 mesh型網(wǎng)絡(luò)的功能性維護(hù)。作為本發(fā)明的一種優(yōu)化方法:如圖2所示,所述步驟(2)包括如下具體步驟:步驟(21):發(fā)送節(jié)點(diǎn)緩存的狀態(tài)信息擁有一個(gè)時(shí)戳,記錄了上一次獲取網(wǎng)絡(luò)狀態(tài)信息的時(shí)間點(diǎn),發(fā)送節(jié)點(diǎn)在本地緩存中檢查上一次獲得的網(wǎng)絡(luò)狀態(tài)信息上的時(shí)戳,如果時(shí)戳所記錄的時(shí)間點(diǎn)與當(dāng)前時(shí)間間隔超過T。,則轉(zhuǎn)向步驟(22);否則,直接將所檢查到的網(wǎng)絡(luò)狀態(tài)信息輸出,其中,T0定義為發(fā)送節(jié)點(diǎn)所緩存的網(wǎng)絡(luò)狀態(tài)信息的過時(shí)時(shí)間;步驟(22):發(fā)送節(jié)點(diǎn)發(fā)送狀態(tài)請(qǐng)求控制包Squwy到步驟(I)中構(gòu)建的mesh網(wǎng)絡(luò)中去,以請(qǐng)求其反饋發(fā)送節(jié)點(diǎn)所需的網(wǎng)絡(luò)狀態(tài)信息,Squwy包含一個(gè)時(shí)戳字段,記錄發(fā)送節(jié)點(diǎn)發(fā)送該控制包時(shí)的時(shí)間點(diǎn),mesh網(wǎng)絡(luò)中的所有中間節(jié)點(diǎn)對(duì)該控制包進(jìn)行轉(zhuǎn)發(fā),而接收節(jié)點(diǎn)對(duì)該控制包Squea7進(jìn)行響應(yīng),如圖3所示,具體包括如下處理:步驟(221):接收節(jié)點(diǎn)收到控制包Squwy后,首先判定自己是否是核心節(jié)點(diǎn),如果不是核心節(jié)點(diǎn)則轉(zhuǎn)至步驟(222);否則,轉(zhuǎn)至步驟(223);步驟(222):接收節(jié)點(diǎn)根據(jù)控制包Squwy中的時(shí)戳信息計(jì)算接收到該控制包時(shí)的延時(shí)ti;同時(shí)將該延時(shí)信息ti通過S_OTt控制消息發(fā)送至核心節(jié)點(diǎn),Sreport控制消息包含上述延時(shí)信息ti外還擁有一個(gè)標(biāo)記接收節(jié)點(diǎn)序號(hào)的字段,用以區(qū)分不同的接收節(jié)點(diǎn)狀態(tài)信息;步驟(223):核心節(jié)點(diǎn)從本地緩存中檢索接收節(jié)點(diǎn)狀態(tài)信息,如果該核心節(jié)點(diǎn)所維護(hù)的網(wǎng)絡(luò)中的所有接收節(jié)點(diǎn)均通過S_OTt反饋了其節(jié)點(diǎn)狀態(tài)信息,即mesh網(wǎng)絡(luò)中的接收節(jié)點(diǎn)數(shù)目與收到的不同節(jié)點(diǎn)序號(hào)的S_OTt控制信息的個(gè)數(shù)相同,則轉(zhuǎn)至步驟(225);否則,順序執(zhí)行步驟(224);步驟(224):核心節(jié)進(jìn)入等待狀態(tài),等待一段時(shí)間后轉(zhuǎn)至步驟(212),其中,等待時(shí)間為發(fā)送節(jié)點(diǎn)連續(xù)發(fā)送兩個(gè)編碼包的時(shí)間間隔;步驟(225):核心節(jié)點(diǎn)通過所獲取的各接收節(jié)點(diǎn)的狀態(tài)i e M,通過如下處理選取一個(gè)反饋參考點(diǎn):a:核心節(jié)點(diǎn)通過所獲取的信息計(jì)算各接收節(jié)點(diǎn)收到發(fā)送節(jié)點(diǎn)發(fā)送的Squwy控制信息的平均延時(shí),S卩E(ti;i e Μ);b:以該平均值為起點(diǎn),向ti增大或者減小的方向進(jìn)行搜索,第一次遇到的值即作為反饋參考延時(shí),其所對(duì)應(yīng)的節(jié)點(diǎn)r即選為反饋參考點(diǎn);c:核心節(jié)點(diǎn)通過發(fā)送一個(gè)簡(jiǎn)單通知信息至所選擇的反饋參考點(diǎn),以通知其被選擇成為反饋參考點(diǎn);步驟(23):將核心節(jié)點(diǎn)所確定的反饋參考延時(shí)信息tK,通過Supdate控制包反饋到發(fā)送節(jié)點(diǎn),Supdate控制包除了包含參考延時(shí)信息&外,還包含mesh網(wǎng)絡(luò)的接收節(jié)點(diǎn)的平均鄰
居節(jié)點(diǎn)個(gè)數(shù)&其計(jì)算公式為:瓦由于核心節(jié)點(diǎn)維護(hù)著整個(gè)mesh網(wǎng)絡(luò),通過其
η,ο
擁有的各接收節(jié)點(diǎn)的位置信息(Xi,yi) ;i e M,計(jì)算獲得S的值,最終,核心節(jié)點(diǎn)反饋給核心節(jié)點(diǎn)的信息包括參考延時(shí)信息tK和mesh網(wǎng)絡(luò)的接收節(jié)點(diǎn)的平均鄰居節(jié)點(diǎn)個(gè)數(shù)瓦,其中,S定義為覆蓋所有接收節(jié)點(diǎn)的最小面積。作為本發(fā)明的一種優(yōu)化方法:所述步驟(3)包括如下具體處理:步驟(301):通過參數(shù)V未確定最佳編碼長(zhǎng)度L ;步驟(302):發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)反饋的mesh網(wǎng)絡(luò)狀態(tài)調(diào)整發(fā)送窗口大小,并通過mesh網(wǎng)絡(luò)反饋?zhàn)陨硇畔⒐┌l(fā)送節(jié)點(diǎn)調(diào)整發(fā)送速率,具體包括如下處理:步驟(3021):發(fā)送節(jié)點(diǎn)初始狀態(tài)下設(shè)置發(fā)送窗口 W大小為4,并對(duì)處于窗口內(nèi)的數(shù)據(jù)包進(jìn)行編碼發(fā)送;步驟(3022):由步驟(225)所選擇的反饋參考點(diǎn)在成功恢復(fù)出某一數(shù)據(jù)塊的所有原始數(shù)據(jù)包后,計(jì)算出從發(fā)送節(jié)點(diǎn)發(fā)出這些數(shù)據(jù)包到反饋參考點(diǎn)恢復(fù)出這些數(shù)據(jù)包的延時(shí),即用成功恢復(fù)出原始數(shù)據(jù)包時(shí)的時(shí)間減去收到關(guān)于這個(gè)數(shù)據(jù)塊的第一個(gè)編碼包的時(shí)間;步驟(3023):構(gòu)造Smrort控制包,將計(jì)算出的延時(shí)通過該控制包匯報(bào)給核心節(jié)點(diǎn),通過該最優(yōu)路徑將SMpOTt控制包投遞至核心節(jié)點(diǎn);步驟(3024):核心節(jié)點(diǎn)接收到反饋參考點(diǎn)發(fā)送過來的Smrort控制包后,將該控制包通過發(fā)送節(jié)點(diǎn)到達(dá)核心節(jié)點(diǎn)的最優(yōu)路徑的反向路徑反饋給發(fā)送節(jié)點(diǎn);步驟(3025):發(fā)送節(jié)點(diǎn)接收到核心節(jié)點(diǎn)發(fā)送過來的S_OTt控制包后重新計(jì)算發(fā)送窗口 W的大小,具體計(jì)算過程如下:
A:將Sreport控制包從核心節(jié)點(diǎn)到達(dá)發(fā)送節(jié)點(diǎn)的延時(shí)加上S,epOTt控制包中記錄的參考反饋點(diǎn)成功解碼一個(gè)數(shù)據(jù)塊的延時(shí)在本發(fā)明定義為mesh網(wǎng)絡(luò)中的往返時(shí)間,記作RTT ;
B:令
權(quán)利要求
1.一種基于擁塞控制的無線多跳網(wǎng)多播方法,其特征在于,包括如下具體步驟: 步驟(I):構(gòu)建數(shù)據(jù)分發(fā)所需的mesh型網(wǎng)絡(luò),所述mesh型網(wǎng)絡(luò)中包括發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)、中間節(jié)點(diǎn)和核心節(jié)點(diǎn),并對(duì)構(gòu)建的mesh型網(wǎng)絡(luò)進(jìn)行功能性維護(hù); 步驟(2):在步驟(I)構(gòu)建的mesh型網(wǎng)絡(luò)中,發(fā)送節(jié)點(diǎn)周期性發(fā)送網(wǎng)絡(luò)狀態(tài)探測(cè)包來獲取mesh網(wǎng)絡(luò)的各項(xiàng)狀況信息,并對(duì)獲取的各項(xiàng)狀況信息進(jìn)行評(píng)估,并將評(píng)估結(jié)果轉(zhuǎn)換為參數(shù)的形式; 步驟(3):發(fā)送節(jié)點(diǎn)根據(jù)接收到的評(píng)估結(jié)果自適應(yīng)選擇網(wǎng)絡(luò)編碼的編碼參數(shù),并動(dòng)態(tài)調(diào)整編碼參數(shù),同時(shí),發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)所提供網(wǎng)絡(luò)沖突情況改變發(fā)送窗口大小,并將處于發(fā)送窗口中的數(shù)據(jù)包編碼后傳輸至中間節(jié)點(diǎn); 步驟(4):所述中間節(jié)點(diǎn)對(duì)接收到的編碼包進(jìn)行二次編碼操作,并將二次編碼操作后的編碼包發(fā)送至接收節(jié) 點(diǎn),接收節(jié)點(diǎn)在接收到足夠多的編碼包時(shí),通過編碼的逆操作恢復(fù)出原始數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的一種基于擁塞控制的無線多跳網(wǎng)多播方法,其特征在于,所述步驟(I)包括如下具體處理: 步驟(11):在網(wǎng)絡(luò)初始狀態(tài)下,將最先申明加入多播組的接收節(jié)點(diǎn)將自己標(biāo)記為核心節(jié)點(diǎn); 步驟(12):核心節(jié)點(diǎn)構(gòu)造MA控制包,核心節(jié)點(diǎn)按照自身信息填充MA控制包各字段的控制信息,從而構(gòu)造一個(gè)MA控制包,初始狀態(tài)下,核心節(jié)點(diǎn)構(gòu)造的MA控制包具有如下內(nèi)容:MA序號(hào)為O,核心節(jié)點(diǎn)ID即為本身節(jié)點(diǎn)號(hào),到核心節(jié)點(diǎn)跳數(shù)為O,父節(jié)點(diǎn)ID為本身節(jié)點(diǎn)號(hào),mesh節(jié)點(diǎn)標(biāo)志為True,節(jié)點(diǎn)位置坐標(biāo)為本身坐標(biāo),核心節(jié)點(diǎn)將構(gòu)造完成的MA控制包廣播至網(wǎng)絡(luò)中,核心節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)將收到該MA控制包,其中,MA序號(hào)定義為全局性序號(hào); 步驟(13):鄰居節(jié)點(diǎn)作為接收節(jié)點(diǎn)接收到MA控制包后解析其中所包含的控制信息,若該接收節(jié)點(diǎn)是第一次收到MA控制包,則按照該MA控制包所包含的控制信息構(gòu)建鄰居節(jié)點(diǎn)信息表,鄰居節(jié)點(diǎn)信息表記錄了該接收節(jié)點(diǎn)所有鄰居節(jié)點(diǎn)的ID、核心節(jié)點(diǎn)節(jié)點(diǎn)號(hào)、該接收節(jié)點(diǎn)的所有鄰居節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)、所有鄰居節(jié)點(diǎn)的mesh節(jié)點(diǎn)標(biāo)志是否為True和所有鄰居節(jié)點(diǎn)的位置坐標(biāo),并轉(zhuǎn)而執(zhí)行步驟(16);若該接收節(jié)點(diǎn)不是第一次收到MA控制包,繼續(xù)執(zhí)行步驟(14); 步驟(14):判斷收到的MA控制包是否有效:通過該MA控制包所包含的MA序號(hào)判斷該MA控制包是否過時(shí),對(duì)于同一鄰居節(jié)點(diǎn)發(fā)送過來的MA控制包,擁有最大MA序號(hào)的認(rèn)為是有效的,并繼續(xù)執(zhí)行步驟(15);否則,直接丟棄該MA控制包并轉(zhuǎn)而執(zhí)行步驟(13); 步驟(15):利用本次所收到的MA控制包中的控制信息更新現(xiàn)存的鄰居節(jié)點(diǎn)信息表,SP用本次接收到的MA控制包中的控制字段覆蓋現(xiàn)存的鄰居節(jié)點(diǎn)信息表中的對(duì)應(yīng)內(nèi)容; 步驟(16):步驟(13)中的接收節(jié)點(diǎn)從自己的鄰居節(jié)點(diǎn)信息表中選擇距離核心節(jié)點(diǎn)跳數(shù)最少的一個(gè)鄰居節(jié)點(diǎn)作為自己的父節(jié)點(diǎn),若出現(xiàn)跳數(shù)相同情況,則以坐標(biāo)位置計(jì)算出的離自身物理距離較近的鄰居節(jié)點(diǎn)作為父節(jié)點(diǎn),該節(jié)點(diǎn)本身距離核心節(jié)點(diǎn)的跳數(shù)為所選擇父節(jié)點(diǎn)距離核心節(jié)點(diǎn)跳數(shù)值加1,若該節(jié)點(diǎn)也準(zhǔn)備加入多播組,則置mesh節(jié)點(diǎn)標(biāo)志位為True,否貝1J,檢索整個(gè)鄰居節(jié)點(diǎn)信息表,尋找是否出現(xiàn)以該節(jié)點(diǎn)作為父節(jié)點(diǎn),mesh節(jié)點(diǎn)標(biāo)志為True并且距離核心節(jié)點(diǎn)跳數(shù)大于該節(jié)點(diǎn)的鄰居節(jié)點(diǎn),若在鄰居節(jié)點(diǎn)信息表中發(fā)現(xiàn)同時(shí)符合該三個(gè)條件的節(jié)點(diǎn),則認(rèn)為該節(jié)點(diǎn)有一個(gè)子mesh節(jié)點(diǎn),此時(shí)該節(jié)點(diǎn)作為子mesh節(jié)點(diǎn)的父節(jié)點(diǎn),也將自己標(biāo)記為mesh節(jié)點(diǎn),否則,mesh節(jié)點(diǎn)標(biāo)志為False,在這里我們將非接收節(jié)點(diǎn)的mesh節(jié)點(diǎn)稱為mesh網(wǎng)絡(luò)中的中間節(jié)點(diǎn),最后依據(jù)以上討論獲得的信息,該節(jié)點(diǎn)構(gòu)造出一個(gè)新的MA控制包,并廣播給自己的鄰居節(jié)點(diǎn),各鄰居節(jié)點(diǎn)按照步驟(11)至步驟(16 )的方法進(jìn)行處理,從而完成了 mesh型網(wǎng)絡(luò)的功能性維護(hù)。
3.根據(jù)權(quán)利要求2所述的一種基于擁塞控制的無線多跳網(wǎng)多播方法,其特征在于,所述步驟(2)包括如下具體步驟: 步驟(21):發(fā)送節(jié)點(diǎn)緩存的狀態(tài)信息擁有一個(gè)時(shí)戳,記錄了上一次獲取網(wǎng)絡(luò)狀態(tài)信息的時(shí)間點(diǎn),發(fā)送節(jié)點(diǎn)在本地緩存中檢查上一次獲得的網(wǎng)絡(luò)狀態(tài)信息上的時(shí)戳,如果時(shí)戳所記錄的時(shí)間點(diǎn)與當(dāng)前時(shí)間間隔超過T。,則轉(zhuǎn)向步驟(22);否則,直接將所檢查到的網(wǎng)絡(luò)狀態(tài)信息輸出,其中,T0定義為發(fā)送節(jié)點(diǎn)所緩存的網(wǎng)絡(luò)狀態(tài)信息的過時(shí)時(shí)間; 步驟(22):發(fā)送節(jié)點(diǎn)發(fā)送狀態(tài)請(qǐng)求控制包Squwy到步驟(I)中構(gòu)建的mesh網(wǎng)絡(luò)中去,以請(qǐng)求其反饋發(fā)送節(jié)點(diǎn)所需的網(wǎng)絡(luò)狀態(tài)信息,Squery包含一個(gè)時(shí)戳字段,記錄發(fā)送節(jié)點(diǎn)發(fā)送該控制包時(shí)的時(shí)間點(diǎn),mesh網(wǎng)絡(luò)中的所有中間節(jié)點(diǎn)對(duì)該控制包進(jìn)行轉(zhuǎn)發(fā),而接收節(jié)點(diǎn)對(duì)該控制包Squea7進(jìn)行響應(yīng),具體包括如下處理: 步驟(221):接收節(jié)點(diǎn)收到控制包Squwy后,首先判定自己是否是核心節(jié)點(diǎn),如果不是核心節(jié)點(diǎn)則轉(zhuǎn)至步驟(222);否則,轉(zhuǎn)至步驟(223); 步驟(222):接收節(jié)點(diǎn)根據(jù)控制包Squwy中的時(shí)戳信息計(jì)算接收到該控制包時(shí)的延時(shí)ti;同時(shí)將該延時(shí)信息\通過S_OTt控制消息發(fā)送至核心節(jié)點(diǎn),S_OTt控制消息包含上述延時(shí)信息\外還擁有一個(gè)標(biāo)記接收節(jié)點(diǎn)序號(hào)的字段,用以區(qū)分不同的接收節(jié)點(diǎn)狀態(tài)信息; 步驟(223):核心節(jié)點(diǎn)從本地緩存中檢索接收節(jié)點(diǎn)狀態(tài)信息,如果該核心節(jié)點(diǎn)所維護(hù)的網(wǎng)絡(luò)中的所有接收節(jié)點(diǎn)均通過S_OTt反饋了其節(jié)點(diǎn)狀態(tài)信息,即mesh網(wǎng)絡(luò)中的接收節(jié)點(diǎn)數(shù)目與收到的不同節(jié)點(diǎn)序號(hào)的S_OTt控制信息的個(gè)數(shù)相同,則轉(zhuǎn)至步驟(225);否則,順序執(zhí)行步驟(224); 步驟(224):核心節(jié)進(jìn)入等待狀態(tài),等待一段時(shí)間后轉(zhuǎn)至步驟(212),其中,等待時(shí)間為發(fā)送節(jié)點(diǎn)連續(xù)發(fā)送兩個(gè)編碼包的時(shí)間間隔; 步驟(225):核心節(jié)點(diǎn)通過所獲取的各接收節(jié)點(diǎn)的狀態(tài)i e M,通過如下處理選取一個(gè)反饋參考點(diǎn): a:核心節(jié)點(diǎn)通過所獲取的信息計(jì)算各接收節(jié)點(diǎn)收到發(fā)送節(jié)點(diǎn)發(fā)送的Squwy控制信息的平均延時(shí),即E(ti;i e M); b:以該平均值為起點(diǎn),向\增大或者減小的方向進(jìn)行搜索,第一次遇到的值即作為反饋參考延時(shí),其所對(duì)應(yīng)的節(jié)點(diǎn)r即選為反饋參考點(diǎn); c:核心節(jié)點(diǎn)通過發(fā)送一個(gè)簡(jiǎn)單通知信息至所選擇的反饋參考點(diǎn),以通知其被選擇成為反饋參考點(diǎn); 步驟(23):將核心節(jié)點(diǎn)所確定的反饋參考延時(shí)信息tK,通過Supdate控制包反饋到發(fā)送節(jié)點(diǎn),Supdate控制包除了包含參考延時(shí)信息tK外,還包含mesh網(wǎng)絡(luò)的接收節(jié)點(diǎn)的平均鄰居節(jié)點(diǎn)個(gè)數(shù)&其計(jì)算公式為
4.根據(jù)權(quán)利要求3所述的一種基于擁塞控制的無線多跳網(wǎng)多播方法,其特征在于,所述步驟(3)包括如下具體處理: 步驟(301):通過參數(shù)瓦來確定最佳編碼長(zhǎng)度L ; 步驟(302):發(fā)送節(jié)點(diǎn)根據(jù)核心節(jié)點(diǎn)反饋的mesh網(wǎng)絡(luò)狀態(tài)調(diào)整發(fā)送窗口大小,并通過mesh網(wǎng)絡(luò)反饋?zhàn)陨硇畔⒐┌l(fā)送節(jié)點(diǎn)調(diào)整發(fā)送速率,具體包括如下處理: 步驟(3021):發(fā)送節(jié)點(diǎn)初始狀態(tài)下設(shè)置發(fā)送窗口 W大小為4,并對(duì)處于窗口內(nèi)的數(shù)據(jù)包進(jìn)行編碼發(fā)送; 步驟(3022):由步驟(225)所選擇的反饋參考點(diǎn)在成功恢復(fù)出某一數(shù)據(jù)塊的所有原始數(shù)據(jù)包后,計(jì)算出從發(fā)送節(jié)點(diǎn)發(fā)出這些數(shù)據(jù)包到反饋參考點(diǎn)恢復(fù)出這些數(shù)據(jù)包的延時(shí),即用成功恢復(fù)出原始數(shù)據(jù)包時(shí)的時(shí)間減去收到關(guān)于這個(gè)數(shù)據(jù)塊的第一個(gè)編碼包的時(shí)間; 步驟(3023):構(gòu)造Smrort控制包,將計(jì)算出的延時(shí)通過該控制包匯報(bào)給核心節(jié)點(diǎn),通過該最優(yōu)路徑將S_OTt控制包投遞至核心節(jié)點(diǎn); 步驟(3024):核心節(jié)點(diǎn)接收到反饋參考點(diǎn)發(fā)送過來的Smrort控制包后,將該控制包通過發(fā)送節(jié)點(diǎn)到達(dá)核心節(jié)點(diǎn)的最優(yōu)路徑的反向路徑反饋給發(fā)送節(jié)點(diǎn); 步驟(3025):發(fā)送節(jié)點(diǎn)接收到核心節(jié)點(diǎn)發(fā)送過來的Smrort控制包后重新計(jì)算發(fā)送窗口W的大小,具體計(jì)算過程如下: A:將SMpOTt控制包從核心節(jié)點(diǎn)到達(dá)發(fā)送節(jié)點(diǎn)的延時(shí)加上Smrort控制包中記錄的參考反饋點(diǎn)成功解碼一個(gè)數(shù)據(jù)塊的延時(shí)在本發(fā)明定義為mesh網(wǎng)絡(luò)中的往返時(shí)間,記作RTT ; B 令
5.根據(jù)權(quán)利要求4所述的一種基于擁塞控制的無線多跳網(wǎng)多播方法,其特征在于,所述步驟(4)包括如下具體處理: 步驟(400):接收節(jié)點(diǎn)檢查收到的步驟(306)中的編碼包的編碼向量,確定編碼長(zhǎng)度L,L為I時(shí)轉(zhuǎn)至步驟(404);否則,繼續(xù)執(zhí)行步驟(401); 步驟(401):接收節(jié)點(diǎn)從本地緩存中找出數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包的編碼向量,若所收到編碼包的編碼向量與找出的本地緩存中的所有相關(guān)編碼向量線性無關(guān),則認(rèn)為該收到的編碼包包含新信息,并繼續(xù)執(zhí)行步驟(402);若檢查結(jié)果表明新收到的編碼包不包含任何新信息,則直接丟棄,等待接收下一個(gè)編碼包,重復(fù)執(zhí)行本步驟;步驟(402):將該編碼包存入接收節(jié)點(diǎn)的本地緩存中; 步驟(403):判斷接收到的編碼包的序號(hào)是否為偶數(shù),若為偶數(shù)繼續(xù)執(zhí)行步驟(404);否則直接結(jié)束,等待接收下一個(gè)編碼包,重復(fù)執(zhí)行本步驟; 步驟(404):將本地緩存中數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包進(jìn)行二次編碼,用一組對(duì)應(yīng)維度的有限域中的隨機(jī)向量將每個(gè)編碼包進(jìn)行線性組合并將參與編碼的隨機(jī)向量加入到該編碼包的包頭中; 步驟(405):將編碼包發(fā)送到mesh網(wǎng)絡(luò)中去,mesh網(wǎng)絡(luò)中的接收節(jié)點(diǎn)接收該編碼包;步驟(406):若該節(jié)點(diǎn)不是接收節(jié)點(diǎn),則直接結(jié)束操作;如果該節(jié)點(diǎn)是接收節(jié)點(diǎn)則繼續(xù)執(zhí)行步驟(407); 步驟(407):找出上述接收節(jié)點(diǎn)的本地緩存中數(shù)據(jù)塊編號(hào)和所收到的編碼包一致的所有編碼包,連同所收到的編碼包,將他們的編碼向量組成編碼矩陣; 步驟(408):在這些編碼包中找出原始數(shù)據(jù)包信息量最大的一個(gè),定義一個(gè)編碼包的原始數(shù)據(jù)包信息量為參與該編碼包編碼過程的原始數(shù)據(jù)包個(gè)數(shù); 步驟(409):若步驟(407)確定的編碼矩陣的秩大于步驟(408)獲得的最大原始數(shù)據(jù)報(bào)信息量,則確定出現(xiàn)解碼機(jī)會(huì),并繼續(xù)執(zhí)行步驟(410);否則該接收節(jié)點(diǎn)繼續(xù)等待接收下一個(gè)編碼包并轉(zhuǎn)而執(zhí)行步驟(407);步驟(410):通過高斯消元法和公式P=E-1.C從編碼包中恢復(fù)出原始數(shù)據(jù)包,其中,C定義為參與解碼過程的編碼包所組成的向量,E定義為這些編碼包包頭中所包含的編碼向量組成的編碼矩陣,P即為恢復(fù)出的原 始數(shù)據(jù)包。
全文摘要
本發(fā)明公開了一種基于擁塞控制的無線多跳網(wǎng)多播方法,包括mesh網(wǎng)絡(luò)的構(gòu)建及維護(hù)、網(wǎng)絡(luò)狀態(tài)的獲取及更新方法、核心節(jié)點(diǎn)與發(fā)送端之間的協(xié)調(diào)和中間節(jié)點(diǎn)及接收端的處理等步驟;本發(fā)明所設(shè)計(jì)的基于擁塞控制的無線多跳網(wǎng)多播方法能夠自適應(yīng)選擇發(fā)送參數(shù)、協(xié)調(diào)發(fā)送速率,盡可能緩解由于無線環(huán)境下的多播所產(chǎn)生的數(shù)據(jù)包沖突,提高網(wǎng)絡(luò)的整體可靠性與吞吐量。
文檔編號(hào)H04W28/04GK103209435SQ20131008397
公開日2013年7月17日 申請(qǐng)日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者譚國(guó)平, 彭新華, 倪新洋, 譚林風(fēng), 劉修泉 申請(qǐng)人:河海大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1