一種單跳網(wǎng)絡(luò)下基于反饋信息的網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法
【專(zhuān)利摘要】一種單跳網(wǎng)絡(luò)下基于反饋信息的網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法,所述網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)包括報(bào)文發(fā)送模塊、報(bào)文接收模塊和鄰居發(fā)現(xiàn)主模塊,其中所述報(bào)文發(fā)送模塊用于不同報(bào)文的組裝,報(bào)文分為DISCOCERY報(bào)文和SUCCESS報(bào)文;所述報(bào)文接收模塊用于接收?qǐng)?bào)文;所述鄰居發(fā)現(xiàn)主模塊分為時(shí)間片管理模塊、鄰居信息模塊、節(jié)點(diǎn)信息模塊。在網(wǎng)絡(luò)節(jié)點(diǎn)間時(shí)間片同步時(shí),對(duì)于網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)n已知的情形,設(shè)置節(jié)點(diǎn)發(fā)送概率為1/(n-b),b為已經(jīng)發(fā)現(xiàn)的鄰居節(jié)點(diǎn)個(gè)數(shù)。經(jīng)過(guò)本發(fā)明方案的處理,可以使得上述鄰居發(fā)現(xiàn)方法的運(yùn)行復(fù)雜度為Θ(n)。
【專(zhuān)利說(shuō)明】一種單跳網(wǎng)絡(luò)下基于反饋信息的網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無(wú)線通信【技術(shù)領(lǐng)域】,尤其涉及一種單跳網(wǎng)絡(luò)下基于反饋信息的網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法。
【背景技術(shù)】
[0002]無(wú)線自組織網(wǎng)絡(luò)(Wireless ad hoc networks)是由大量的靜止或移動(dòng)的節(jié)點(diǎn)以自組織單跳或者多跳方式構(gòu)成的無(wú)線網(wǎng)絡(luò),它不需要固定通信設(shè)備的支持,各節(jié)點(diǎn)之間自行組網(wǎng)。例如,立即部署時(shí),節(jié)點(diǎn)不知道它的通信范圍內(nèi)有哪些節(jié)點(diǎn),需要先發(fā)現(xiàn)鄰居節(jié)點(diǎn),然后才能和被發(fā)現(xiàn)的節(jié)點(diǎn)進(jìn)行通信。鄰居發(fā)現(xiàn)是無(wú)線自組織網(wǎng)絡(luò)初始化中不可缺少的第一步,MAC (media access control),路由協(xié)議以及拓?fù)淇刂扑惴ǘ夹枰类従有畔?才能有效工作。
[0003]鄰居發(fā)現(xiàn)方法可分為兩類(lèi):隨機(jī)鄰居發(fā)現(xiàn)和確定鄰居發(fā)現(xiàn)。在隨機(jī)鄰居發(fā)現(xiàn)中,每個(gè)節(jié)點(diǎn)傳輸?shù)拇螖?shù)是隨機(jī)的,并在一定時(shí)間內(nèi)以極大概率發(fā)現(xiàn)所有鄰居。在確定鄰居發(fā)現(xiàn)中,每個(gè)節(jié)點(diǎn)按照事先確定的策略進(jìn)行傳輸,并在一定時(shí)間內(nèi)以概率I發(fā)現(xiàn)所有鄰居。然而,在分布式環(huán)境下,確定性往往是以增加運(yùn)行時(shí)間為代價(jià)的,由于確定鄰居發(fā)現(xiàn)存在上述缺點(diǎn)和不足,我們選擇隨機(jī)鄰居發(fā)現(xiàn)作為參考提出我們的方法。
[0004]目前,鄰居發(fā)現(xiàn)方法面臨著如下問(wèn)題:
[0005](I)鄰居發(fā)現(xiàn)需要處理沖突,也就是既要保證沖突的可能性降到最低同時(shí)也要保證用的時(shí)間是最少;
[0006](2)在許多實(shí)際情況下,由于網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)未知,進(jìn)一步加大了算法處理沖突的難度;
[0007](3)當(dāng)全局時(shí)鐘未知的情況下,要求節(jié)點(diǎn)能夠異步工作同時(shí)能有效的發(fā)現(xiàn)所有鄰居;
[0008](4)在異步條件下,節(jié)點(diǎn)可能在不同時(shí)間開(kāi)始鄰居發(fā)現(xiàn),可能會(huì)錯(cuò)過(guò)其它節(jié)點(diǎn)傳輸數(shù)據(jù);
[0009](5)當(dāng)鄰居個(gè)數(shù)未知時(shí),節(jié)點(diǎn)不知何時(shí)終止鄰居發(fā)現(xiàn)。
[0010]由于傳統(tǒng)的鄰居發(fā)現(xiàn)方法面臨著上述5個(gè)問(wèn)題,需要提出一個(gè)能有效解決這些問(wèn)題的鄰居發(fā)現(xiàn)方法。
[0011]在當(dāng)前申請(qǐng)的方案中考慮如下的網(wǎng)絡(luò)模型:
[0012]用G= (V,E)表示一個(gè)單跳無(wú)線網(wǎng)絡(luò),其中V是η個(gè)節(jié)點(diǎn)的集合,五c F2是G中無(wú)向邊的集合。節(jié)點(diǎn)i和節(jié)點(diǎn)j之間存在一條邊是指節(jié)點(diǎn)j和節(jié)點(diǎn)i相互在對(duì)方的傳輸范圍內(nèi)。節(jié)點(diǎn)i和節(jié)點(diǎn)j存在一條邊,節(jié)點(diǎn)j和節(jié)點(diǎn)i也存在一條邊,即如果(i,j) e E,則(j,i) e E,并且(i,j)和(j,i)表示同一條邊。
[0013]對(duì)單跳無(wú)線網(wǎng)絡(luò)G,作如下假設(shè):
[0014](I)節(jié)點(diǎn)ID是唯一的,即任意兩個(gè)節(jié)點(diǎn)的ID不相同,ID可以設(shè)置為節(jié)點(diǎn)的MAC地址或者節(jié)點(diǎn)的位置;
[0015](2)半雙工收發(fā)器模型,每個(gè)節(jié)點(diǎn)都有一個(gè)接收器和發(fā)送器,節(jié)點(diǎn)可以發(fā)送或接收?qǐng)?bào)文,但不能同時(shí)工作;
[0016](3)沖突模型,當(dāng)兩個(gè)或者更多節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文的時(shí)候會(huì)產(chǎn)生沖突,節(jié)點(diǎn)能夠偵聽(tīng)沖突。
[0017](4)不考慮報(bào)文丟失的情況,即如果沒(méi)有沖突發(fā)生,那么一個(gè)節(jié)點(diǎn)發(fā)送的報(bào)文一定被另外的節(jié)點(diǎn)接收。
[0018]η個(gè)節(jié)點(diǎn)部署在一個(gè)區(qū)域中且不知道網(wǎng)絡(luò)G的信息,定義節(jié)點(diǎn)i在時(shí)間t內(nèi)從節(jié)點(diǎn)j收到一條或多條信息,則稱(chēng)節(jié)點(diǎn)i在時(shí)間t內(nèi)發(fā)現(xiàn)節(jié)點(diǎn)j。
[0019]我們將在上述網(wǎng)絡(luò)模型和條件下闡述本發(fā)明的技術(shù)方案。
【發(fā)明內(nèi)容】
[0020]本發(fā)明設(shè)計(jì)了一種基于反饋信息運(yùn)行時(shí)間是θ (η)的單跳網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法,適用于無(wú)線自組織網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行鄰居發(fā)現(xiàn)。網(wǎng)絡(luò)節(jié)點(diǎn)能夠偵聽(tīng)沖突,即能夠區(qū)分一個(gè)空閑的時(shí)間片和一個(gè)有沖突的時(shí)間片。本方法解決了標(biāo)準(zhǔn)沖突信道模型下鄰居發(fā)現(xiàn)面臨的上述問(wèn)題。
[0021]無(wú)線自組織網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)包括報(bào)文發(fā)送模塊、報(bào)文接收模塊和鄰居發(fā)現(xiàn)主模塊。報(bào)文發(fā)送模塊用于不同報(bào)文的組裝,報(bào)文分為DISCOVERY報(bào)文和SUCCESS報(bào)文。報(bào)文接收模塊用于接收?qǐng)?bào)文。鄰居發(fā)現(xiàn)主模塊分為時(shí)間片管理模塊、鄰居信息模塊、節(jié)點(diǎn)信息模塊,其中,時(shí)間片管理模塊用于把鄰居發(fā)現(xiàn)過(guò)程的分為若干個(gè)時(shí)間片,在某個(gè)具體的時(shí)間片中,由鄰居發(fā)現(xiàn)主模塊協(xié)調(diào)報(bào)文發(fā)送模塊和報(bào)文接收模塊處理報(bào)文;鄰居信息模塊維護(hù)鄰居節(jié)點(diǎn)列表和已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù),其中鄰居節(jié)點(diǎn)列表包括已發(fā)現(xiàn)鄰居節(jié)點(diǎn)地址和被發(fā)現(xiàn)標(biāo)識(shí)兩個(gè)字段;節(jié)點(diǎn)信息模塊維護(hù)自身信息,包括是否已被所有鄰居發(fā)現(xiàn)的標(biāo)志flag和節(jié)點(diǎn)自身地址。
[0022]基于反饋信息運(yùn)行時(shí)間是θ (η)的單跳網(wǎng)絡(luò)鄰居發(fā)現(xiàn)方法分為兩種:基本鄰居發(fā)現(xiàn)方法適用于節(jié)點(diǎn)間時(shí)間片是同步的情況,而異步的鄰居發(fā)現(xiàn)方法適用于節(jié)點(diǎn)間時(shí)間片異步的情況。
[0023]一種單跳網(wǎng)絡(luò)下基于反饋信息運(yùn)行時(shí)間是θ (η)的基本鄰居發(fā)現(xiàn)方法,網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η是已知的,而且節(jié)點(diǎn)時(shí)間片是同步的,包括以下步驟:
[0024](I)網(wǎng)絡(luò)節(jié)點(diǎn)鄰居發(fā)現(xiàn)主模塊把每個(gè)時(shí)間片分為兩個(gè)部分;在第一個(gè)子時(shí)間片內(nèi),未被鄰居發(fā)現(xiàn)節(jié)點(diǎn)(即flag標(biāo)志為O)通過(guò)報(bào)文發(fā)送模塊以概率l/(n-b)隨機(jī)發(fā)送DISCOVERY報(bào)文,η是網(wǎng)絡(luò)中節(jié)點(diǎn)總數(shù),b是已經(jīng)發(fā)現(xiàn)的鄰居節(jié)點(diǎn)個(gè)數(shù),b由鄰居信息模塊獲得;隨著已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b的增加,未被鄰居發(fā)現(xiàn)節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文的概率逐漸增大,以此提高未被鄰居發(fā)現(xiàn)節(jié)點(diǎn)被發(fā)現(xiàn)的概率。
[0025](2)在每個(gè)時(shí)間片的第一個(gè)子時(shí)間片內(nèi),如果當(dāng)前節(jié)點(diǎn)報(bào)文接收模塊成功接收到DISCOVERY報(bào)文(在同一個(gè)子時(shí)間片內(nèi)當(dāng)前節(jié)點(diǎn)只能成功接收一條DISCOVERY報(bào)文),則當(dāng)前節(jié)點(diǎn)向DISCOVERY報(bào)文的源節(jié)點(diǎn)發(fā)送SUCCESS報(bào)文,說(shuō)明當(dāng)前節(jié)點(diǎn)成功發(fā)現(xiàn)源節(jié)點(diǎn)。
[0026](3)在每個(gè)時(shí)間片的第二個(gè)子時(shí)間片內(nèi),如果當(dāng)前節(jié)點(diǎn)的報(bào)文接收模塊不空閑(成功接收到一條SUCCESS報(bào)文或者偵聽(tīng)到有沖突發(fā)生),則說(shuō)明當(dāng)前節(jié)點(diǎn)成功被鄰居節(jié)點(diǎn)發(fā)現(xiàn)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0027]圖1示出了單跳網(wǎng)絡(luò)下鄰居發(fā)現(xiàn)系統(tǒng)示意圖;
[0028]圖2-1示出了節(jié)點(diǎn)間時(shí)間片是同步的情況下,網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η已知時(shí)單跳網(wǎng)絡(luò)下基于反饋信息的基本鄰居發(fā)現(xiàn)方法流程圖;
[0029]圖2-2示出了節(jié)點(diǎn)間時(shí)間片是同步的情況下,網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η未知時(shí)單跳網(wǎng)絡(luò)下基于反饋信息的基本鄰居發(fā)現(xiàn)方法流程圖;
[0030]圖3示出了 DISCOVERY報(bào)文和SUCCESS報(bào)文的具體格式。
【具體實(shí)施方式】
[0031]下面結(jié)合實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說(shuō)明。
[0032]鄰居發(fā)現(xiàn)方法是針對(duì)整個(gè)網(wǎng)絡(luò)中的全部節(jié)點(diǎn)部署實(shí)施的方案,即所有節(jié)點(diǎn)運(yùn)行同樣的程序,包括同步鄰居發(fā)現(xiàn)方法及異步鄰居發(fā)現(xiàn)方法,對(duì)于同步鄰居發(fā)現(xiàn)方法又分為網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)已知和未知兩種情形,下面將分別進(jìn)行描述。
[0033]1、網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η已知的同步鄰居發(fā)現(xiàn)方法
[0034]如圖2-1所示,為單跳網(wǎng)絡(luò)下基于反饋信息運(yùn)行時(shí)間是θ (η)的基本鄰居發(fā)現(xiàn)方法(網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η已知),包括以下幾個(gè)步驟:
[0035]步驟101:在鄰居信息模塊中初始化已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = 0,初始化鄰居節(jié)點(diǎn)列表NbrList,在節(jié)點(diǎn)信息模塊中設(shè)置標(biāo)志flag = O。
[0036]步驟102:判斷flag = I并且b = n_l是否為真,如果是則結(jié)束鄰居發(fā)現(xiàn)過(guò)程,否則跳轉(zhuǎn)到步驟103。flag = I代表當(dāng)前節(jié)點(diǎn)已經(jīng)被鄰居節(jié)點(diǎn)發(fā)現(xiàn),b = n-Ι代表當(dāng)前節(jié)點(diǎn)已經(jīng)成功發(fā)現(xiàn)所有鄰居節(jié)點(diǎn)。
[0037]步驟103:設(shè)置節(jié)點(diǎn)報(bào)文發(fā)送模塊發(fā)送概率是I/ (n-b)。
[0038]步驟104:判斷當(dāng)前節(jié)點(diǎn)的標(biāo)志flag是否等于零,等于零表示當(dāng)前節(jié)點(diǎn)未被鄰居節(jié)點(diǎn)發(fā)現(xiàn),不等于零表示該節(jié)點(diǎn)已被鄰居節(jié)點(diǎn)發(fā)現(xiàn),如果節(jié)點(diǎn)未被鄰居發(fā)現(xiàn)則跳轉(zhuǎn)到步驟105,否則跳轉(zhuǎn)到步驟108。
[0039]如果當(dāng)前節(jié)點(diǎn)未被鄰居節(jié)點(diǎn)發(fā)現(xiàn),則當(dāng)前節(jié)點(diǎn)才會(huì)進(jìn)入發(fā)送DISCOVERY報(bào)文的步驟(步驟105);否則,當(dāng)前節(jié)點(diǎn)進(jìn)入接收來(lái)自鄰居節(jié)點(diǎn)DISCOVERY報(bào)文的步驟(步驟108)。
[0040]步驟105:當(dāng)前節(jié)點(diǎn)時(shí)間片管理模塊把當(dāng)前時(shí)間片分為兩個(gè)子時(shí)間片,并且控制報(bào)文發(fā)送模塊在第一個(gè)子時(shí)間片內(nèi)按照l(shuí)/(n_b)的概率發(fā)送DISCOVERY報(bào)文,如果DISCOVERY報(bào)文發(fā)送成功則跳轉(zhuǎn)步驟106,否則跳轉(zhuǎn)步驟108 ;
[0041 ] DISCOVERY報(bào)文發(fā)送成功意味著當(dāng)前時(shí)間片的第一個(gè)子時(shí)間片內(nèi)只有當(dāng)前節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文,其它鄰居節(jié)點(diǎn)接收DISCOVERY報(bào)文,當(dāng)前節(jié)點(diǎn)進(jìn)入等待鄰居節(jié)點(diǎn)發(fā)送反饋SUCCESS報(bào)文的步驟(步驟106) ;DISC0VERY報(bào)文發(fā)送不成功代表兩種情況--第一,由于概率的作用,當(dāng)前節(jié)點(diǎn)沒(méi)有發(fā)送DISC0VERY報(bào)文,此時(shí)當(dāng)前節(jié)點(diǎn)進(jìn)入接收鄰居節(jié)點(diǎn)DISCOVERY報(bào)文的步驟(步驟108);第二,當(dāng)前節(jié)點(diǎn)與鄰居節(jié)點(diǎn)同時(shí)發(fā)送DISCOVERY報(bào)文,造成沖突發(fā)生,此時(shí)當(dāng)前節(jié)點(diǎn)和鄰居節(jié)點(diǎn)同時(shí)進(jìn)入接收DISCOVERY報(bào)文的步驟(步驟108)。
[0042]步驟106:判斷當(dāng)前節(jié)點(diǎn)報(bào)文接收模塊在當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)信道是否空閑,如果是空閑的,即跳轉(zhuǎn)到步驟102,否則意味著當(dāng)前節(jié)點(diǎn)成功接收到一個(gè)鄰居節(jié)點(diǎn)的SUCCESS報(bào)文或者多個(gè)鄰居節(jié)點(diǎn)的SUCCESS報(bào)文產(chǎn)生了沖突,即當(dāng)前節(jié)點(diǎn)被一個(gè)或者多個(gè)鄰居節(jié)點(diǎn)發(fā)現(xiàn),跳轉(zhuǎn)到步驟107。
[0043]步驟107:當(dāng)前節(jié)點(diǎn)已被鄰居發(fā)現(xiàn),不再發(fā)送DISCOVERY報(bào)文,設(shè)置節(jié)點(diǎn)信息模塊中的標(biāo)志flag = I,跳轉(zhuǎn)到步驟102。
[0044]步驟108:判斷當(dāng)前節(jié)點(diǎn)是否成功收到其它鄰居節(jié)點(diǎn)在當(dāng)前時(shí)間片的第一個(gè)子時(shí)間片內(nèi)發(fā)送的DISCOVERY報(bào)文,如果成功接收了 DISCOVERY報(bào)文,則跳轉(zhuǎn)到步驟109,否則跳轉(zhuǎn)到步驟102判斷是否繼續(xù)進(jìn)行鄰居發(fā)現(xiàn)過(guò)程。當(dāng)前節(jié)點(diǎn)沒(méi)有成功接收DISCOVERY報(bào)文代表兩種情況:第一,沒(méi)有任何節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文;第二,兩個(gè)或者兩個(gè)以上鄰居節(jié)點(diǎn)同時(shí)發(fā)送DISCOVERY報(bào)文導(dǎo)致沖突發(fā)生。
[0045]步驟109:在當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)當(dāng)前節(jié)點(diǎn)通過(guò)報(bào)文發(fā)送模塊發(fā)送反饋SUCCESS報(bào)文,同時(shí)將已接收到DISCOVERY報(bào)文的源節(jié)點(diǎn)MAC地址加入到鄰居節(jié)點(diǎn)列表NbrList中,設(shè)置已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = b+Ι,并返回到步驟102判斷是否繼續(xù)進(jìn)行鄰居發(fā)現(xiàn)過(guò)程。
[0046]2、網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η未知的同步鄰居發(fā)現(xiàn)方法
[0047]如圖2-2所示,為單跳網(wǎng)絡(luò)下基于反饋信息運(yùn)行時(shí)間是θ (η)的基本鄰居發(fā)現(xiàn)方法(網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η未知),包括以下幾個(gè)步驟:
[0048]步驟201:在鄰居信息模塊中初始化已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = 0,初始化節(jié)點(diǎn)鄰居列表NbrList,在節(jié)點(diǎn)信息模塊中設(shè)置標(biāo)志flag = O。
[0049]步驟202:當(dāng)前節(jié)點(diǎn)的時(shí)間片管理模塊把運(yùn)行時(shí)間分為多個(gè)階段,其中第r個(gè)階段持續(xù)2"\個(gè)時(shí)間片,設(shè)置r的初值為I。
[0050]步驟203:判斷當(dāng)前節(jié)點(diǎn)是否已經(jīng)被鄰居節(jié)點(diǎn)發(fā)現(xiàn)(flag = I代表當(dāng)前節(jié)點(diǎn)已經(jīng)被鄰居節(jié)點(diǎn)發(fā)現(xiàn))同時(shí)已經(jīng)成功發(fā)現(xiàn)所有鄰居節(jié)點(diǎn),如果是則結(jié)束鄰居發(fā)現(xiàn)過(guò)程,否則跳轉(zhuǎn)到步驟204。
[0051]判斷當(dāng)前節(jié)點(diǎn)是否已經(jīng)成功發(fā)現(xiàn)所有鄰居節(jié)點(diǎn)的方法是:在一個(gè)給定的時(shí)間段內(nèi),當(dāng)前節(jié)點(diǎn)的報(bào)文發(fā)現(xiàn)模塊沒(méi)有收到任何DISCOVERY報(bào)文,則說(shuō)明當(dāng)前節(jié)點(diǎn)已經(jīng)成功發(fā)現(xiàn)所有鄰居節(jié)點(diǎn)。所述“給定的時(shí)間段”可以定義為:如果節(jié)點(diǎn)的報(bào)文發(fā)送時(shí)間為t,則給定的時(shí)間段可以是at(a = 2,3,...,η)。
[0052]利用“給定時(shí)間段”判斷的機(jī)理為,同步情況下當(dāng)前節(jié)點(diǎn)的η-1個(gè)鄰居節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文的概率分別為pl,p2,…,pn_l,那么給定at時(shí)間內(nèi)所有鄰居節(jié)點(diǎn)都沒(méi)有發(fā)送DISCOVERY報(bào)文的概率是P = (1-ρ1) * (1_ρ2) *…* (l-pn-l),也就是如果保證at時(shí)間段內(nèi)P極小,那就是說(shuō)在at時(shí)間段內(nèi),所有鄰居節(jié)點(diǎn)同時(shí)不發(fā)報(bào)文的事件是小概率事件,那么如果出現(xiàn)所有鄰居節(jié)點(diǎn)都沒(méi)有發(fā)送報(bào)文的情況,說(shuō)明鄰居節(jié)點(diǎn)確實(shí)沒(méi)有發(fā)送Discovery報(bào)文(鄰居節(jié)點(diǎn)都已經(jīng)被發(fā)現(xiàn)了)。
[0053]步驟204:判斷第r個(gè)階段是否結(jié)束,即判斷第個(gè)r階段持續(xù)的2rte個(gè)時(shí)間片是否結(jié)束,如果結(jié)束,跳轉(zhuǎn)到步驟212,否則跳轉(zhuǎn)到步驟205。
[0054]步驟205:設(shè)置節(jié)點(diǎn)報(bào)文發(fā)送模塊發(fā)送概率是I/ (2r-b)。
[0055]步驟206:判斷當(dāng)前節(jié)點(diǎn)的標(biāo)志flag是否等于零,等于零表示當(dāng)前節(jié)點(diǎn)未被鄰居節(jié)點(diǎn)發(fā)現(xiàn),不等于零表示該節(jié)點(diǎn)已被鄰居節(jié)點(diǎn)發(fā)現(xiàn),如果節(jié)點(diǎn)未被鄰居發(fā)現(xiàn)并且則跳轉(zhuǎn)到步驟207,否則跳轉(zhuǎn)到步驟208。
[0056]如果當(dāng)前節(jié)點(diǎn)未被鄰居發(fā)現(xiàn),我們要按照概率發(fā)送報(bào)文,否則,節(jié)點(diǎn)的報(bào)文接收模塊接收來(lái)自其它節(jié)點(diǎn)的報(bào)文。
[0057]步驟207:當(dāng)前節(jié)點(diǎn)時(shí)間片管理模塊把當(dāng)前階段當(dāng)前時(shí)間片分為兩個(gè)子時(shí)間片,并且控制報(bào)文發(fā)送模塊在第一個(gè)子時(shí)間片內(nèi)以概率l/(1-b)發(fā)送DISCOVERY報(bào)文用來(lái)進(jìn)行鄰居發(fā)現(xiàn),如果成功發(fā)送DISCOVERY報(bào)文則跳轉(zhuǎn)步驟210,否則跳轉(zhuǎn)步驟208。
[0058]DISCOVERY報(bào)文發(fā)送成功意味著當(dāng)前階段當(dāng)前時(shí)間片的第一個(gè)子時(shí)間片內(nèi)只有當(dāng)前節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文,其它鄰居節(jié)點(diǎn)接收DISCOVERY報(bào)文,當(dāng)前節(jié)點(diǎn)進(jìn)入等待鄰居節(jié)點(diǎn)發(fā)送反饋SUCCESS報(bào)文的步驟(步驟210) ;DISC0VERY報(bào)文發(fā)送不成功代表兩種情況:第一,由于概率的作用,當(dāng)前節(jié)點(diǎn)沒(méi)有發(fā)送DISCOVERY報(bào)文,此時(shí)當(dāng)前節(jié)點(diǎn)進(jìn)入接收鄰居節(jié)點(diǎn)DISCOVERY報(bào)文的步驟(步驟210);第二,當(dāng)前節(jié)點(diǎn)與鄰居節(jié)點(diǎn)同時(shí)發(fā)送DISCOVERY報(bào)文,造成沖突發(fā)生,此時(shí)當(dāng)前節(jié)點(diǎn)和鄰居節(jié)點(diǎn)同時(shí)進(jìn)入接收DISCOVERY報(bào)文的步驟(步驟208)。
[0059]步驟210:報(bào)文接收模塊在當(dāng)前階段當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)信道是否空閑,如果是空閑的,則跳轉(zhuǎn)到步驟204,否則意味著當(dāng)前節(jié)點(diǎn)成功接收到了一個(gè)鄰居節(jié)點(diǎn)發(fā)送的SUCCESS報(bào)文或者多個(gè)鄰居節(jié)點(diǎn)發(fā)送的SUCCESS報(bào)文產(chǎn)生了沖突,即當(dāng)前節(jié)點(diǎn)被一個(gè)或者多個(gè)鄰居節(jié)點(diǎn)發(fā)現(xiàn),跳轉(zhuǎn)到步驟211。
[0060]步驟211:當(dāng)前節(jié)點(diǎn)已被鄰居節(jié)點(diǎn)發(fā)現(xiàn),不再發(fā)送DISCOVERY報(bào)文,設(shè)置節(jié)點(diǎn)信息模塊中的標(biāo)志flag = I,跳轉(zhuǎn)到步驟204。
[0061]步驟208:判斷當(dāng)前節(jié)點(diǎn)是否成功收到其它鄰居節(jié)點(diǎn)在當(dāng)前階段當(dāng)前時(shí)間片的第一個(gè)子時(shí)間片內(nèi)發(fā)送的DISCOVERY報(bào)文,如果成功接收了 DISCOVERY報(bào)文,則跳轉(zhuǎn)到步驟209,否則跳轉(zhuǎn)到步驟204繼續(xù)判斷r階段是否結(jié)束。當(dāng)前節(jié)點(diǎn)沒(méi)有成功接收DISCOVERY報(bào)文代表兩種情況:第一,沒(méi)有任何節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文;第二,兩個(gè)或者兩個(gè)以上鄰居節(jié)點(diǎn)同時(shí)發(fā)送DISCOVERY報(bào)文導(dǎo)致沖突發(fā)生。
[0062]步驟209:在當(dāng)前階段當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)當(dāng)前節(jié)點(diǎn)通過(guò)報(bào)文發(fā)送模塊發(fā)送反饋報(bào)文SUCCESS,同時(shí)將已接收到DISCOVERY報(bào)文的源節(jié)點(diǎn)MAC地址加入到鄰居節(jié)點(diǎn)列表NbrList中,設(shè)置已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = b+Ι,并返回到步驟204。
[0063]步驟212:設(shè)置階段r = r+Ι,跳轉(zhuǎn)步驟203再次進(jìn)行鄰居發(fā)現(xiàn)是否完畢的判斷及其后續(xù)各步驟。
[0064]從以上步驟中可以看出我們的鄰居發(fā)現(xiàn)方法的核心思想是:把每個(gè)時(shí)間片分為兩個(gè)子時(shí)間片,在第一個(gè)子時(shí)間片內(nèi)節(jié)點(diǎn)(假設(shè)節(jié)點(diǎn)i)按概率發(fā)送報(bào)文DISCOVERY,然后在第二個(gè)子時(shí)間片節(jié)點(diǎn)i接收鄰居節(jié)點(diǎn)發(fā)送的反饋SUCCESS報(bào)文,這時(shí)可能會(huì)產(chǎn)生沖突,節(jié)點(diǎn)i的接收模塊根據(jù)信道是否空閑來(lái)判斷它是否被鄰居發(fā)現(xiàn):如果信道是非空閑的則說(shuō)明節(jié)點(diǎn)i成功接收一個(gè)鄰居節(jié)點(diǎn)發(fā)送的反饋SUCCESS報(bào)文,或者多個(gè)鄰居節(jié)點(diǎn)的反饋SUCCESS報(bào)文造成了沖突,即節(jié)點(diǎn)i在第一個(gè)子時(shí)間片內(nèi)發(fā)送的DISCOVERY報(bào)文成功被鄰居節(jié)點(diǎn)接收,SP節(jié)點(diǎn)i被鄰居節(jié)點(diǎn)發(fā)現(xiàn)了。然后逐漸增大網(wǎng)絡(luò)中其它未發(fā)現(xiàn)的節(jié)點(diǎn)發(fā)送報(bào)文的概率,繼續(xù)鄰居發(fā)現(xiàn)過(guò)程,直至每個(gè)節(jié)點(diǎn)發(fā)現(xiàn)所有鄰居(每個(gè)節(jié)點(diǎn)被所有鄰居發(fā)現(xiàn))。
[0065]為了說(shuō)明我們的基本鄰居發(fā)現(xiàn)方法更加高效,下面分別證明了在網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η已知和未知的情況下,在此提及的基本鄰居發(fā)現(xiàn)方法的運(yùn)行復(fù)雜度為? (η) ο
[0066]I)網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)η已知:
[0067]為了方便描述,我們用W表示每個(gè)節(jié)點(diǎn)發(fā)現(xiàn)它所有n-Ι鄰居的時(shí)間。我們把鄰居發(fā)現(xiàn)分成多個(gè)階段,其中第m個(gè)階段的持續(xù)時(shí)間為Wm,O < m < n-1,Wm從第m個(gè)鄰居被發(fā)現(xiàn)開(kāi)始,到第m+1鄰居被發(fā)現(xiàn)結(jié)束。因此『+ 1,因?yàn)樵诘趎-1個(gè)階段,只有一個(gè)鄰居沒(méi)被發(fā)現(xiàn),這時(shí)只包括一個(gè)時(shí)間片。一般地,在第m個(gè)階段,有n-m個(gè)節(jié)點(diǎn)未被發(fā)現(xiàn),每個(gè)節(jié)點(diǎn)發(fā)送報(bào)文的概率為I/(n-m)。該階段報(bào)文被成功接收的概率pm為:
【權(quán)利要求】
1.一種單跳網(wǎng)絡(luò)下基于反饋信息的運(yùn)行時(shí)間是θ (η)的鄰居發(fā)現(xiàn)方法,所述網(wǎng)絡(luò)中節(jié)點(diǎn)總數(shù)η已知,節(jié)點(diǎn)間時(shí)間片為同步,其中每個(gè)節(jié)點(diǎn)包括報(bào)文發(fā)送模塊、報(bào)文接收模塊和鄰居發(fā)現(xiàn)主模塊,其中所述報(bào)文發(fā)送模塊用于不同報(bào)文的組裝,報(bào)文分為DISCOVERY報(bào)文和SUCCESS報(bào)文;所述報(bào)文接收模塊用于接收?qǐng)?bào)文;所述鄰居發(fā)現(xiàn)主模塊分為時(shí)間片管理模塊、鄰居信息模塊、節(jié)點(diǎn)信息模塊。所述方法包括: 步驟101:在鄰居信息模塊中初始化已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = 0,初始化鄰居節(jié)點(diǎn)列表NbrList,在節(jié)點(diǎn)信息模塊中設(shè)置標(biāo)志flag = 0,執(zhí)行步驟102 ; 步驟102:判斷flag = I并且b = n-1是否為真,如果是則結(jié)束鄰居發(fā)現(xiàn)過(guò)程,否則跳轉(zhuǎn)到步驟103 ; 步驟103:設(shè)置當(dāng)前節(jié)點(diǎn)報(bào)文發(fā)送模塊發(fā)送概率是l/(n-b),執(zhí)行步驟104 ; 步驟104:判斷當(dāng)前節(jié)點(diǎn)的標(biāo)志flag是否等于零,等于零表示當(dāng)前節(jié)點(diǎn)未被鄰居節(jié)點(diǎn)發(fā)現(xiàn),不等于零表示該節(jié)點(diǎn)已被鄰居節(jié)點(diǎn)發(fā)現(xiàn),如果當(dāng)前節(jié)點(diǎn)未被鄰居節(jié)點(diǎn)發(fā)現(xiàn)則跳轉(zhuǎn)到步驟105,否則跳轉(zhuǎn)到步驟108 ; 步驟105:當(dāng)前節(jié)點(diǎn)時(shí)間片管理模塊把當(dāng)前時(shí)間片分為兩個(gè)子時(shí)間片,并且控制報(bào)文發(fā)送模塊在第一個(gè)子時(shí)間片內(nèi)按照l(shuí)/(n-b)的概率發(fā)送DISCOVERY報(bào)文,如果DISCOVERY報(bào)文發(fā)送成功則跳轉(zhuǎn)步驟106,否則跳轉(zhuǎn)步驟108 ; 步驟106:判斷當(dāng)前節(jié)點(diǎn)報(bào)文接收模塊在當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)信道是否空閑,如果是空閑的,即跳轉(zhuǎn)到步驟102,否則跳轉(zhuǎn)到步驟107 ; 步驟107:當(dāng)前節(jié)點(diǎn)已被鄰居發(fā)現(xiàn),不再發(fā)送DISCOVERY報(bào)文,設(shè)置節(jié)點(diǎn)信息模塊中的標(biāo)志flag = I,跳轉(zhuǎn)到步驟102 ; ο 步驟108:判斷當(dāng)前節(jié)點(diǎn)是否成功收到其它鄰居節(jié)點(diǎn)在當(dāng)前時(shí)間片的第一個(gè)子時(shí)間片內(nèi)發(fā)送的DISC0VERY報(bào)文,如果成功接收了 DISCOVERY報(bào)文,則跳轉(zhuǎn)到步驟109,否則跳轉(zhuǎn)到步驟102 ; 步驟109:在當(dāng)前時(shí)間片的第二個(gè)子時(shí)間片內(nèi)當(dāng)前節(jié)點(diǎn)通過(guò)報(bào)文發(fā)送模塊發(fā)送反饋SUCCESS報(bào)文,同時(shí)將已接收到DISC0VERY報(bào)文的源節(jié)點(diǎn)MAC地址加入到鄰居節(jié)點(diǎn)列表NbrList中,設(shè)置已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù)b = b+Ι,并返回到步驟102。
2.如權(quán)利要求1所述的方法,其特征在于,其中所述所述時(shí)間片管理模塊用于把鄰居發(fā)現(xiàn)過(guò)程的分為若干個(gè)時(shí)間片,在某個(gè)具體的時(shí)間片,由鄰居發(fā)現(xiàn)主模塊協(xié)調(diào)報(bào)文發(fā)送模塊和報(bào)文接收模塊處理報(bào)文;鄰居信息模塊維護(hù)鄰居節(jié)點(diǎn)列表和已發(fā)現(xiàn)鄰居節(jié)點(diǎn)個(gè)數(shù),鄰居節(jié)點(diǎn)列表包括已發(fā)現(xiàn)鄰居節(jié)點(diǎn)MAC地址一個(gè)字段;節(jié)點(diǎn)信息模塊維護(hù)自身信息,包括是否已被鄰居節(jié)點(diǎn)發(fā)現(xiàn)的標(biāo)志flag和節(jié)點(diǎn)自身地址。
3.如權(quán)利要求1所述的方法,其特征在于,其中步驟108中,所述當(dāng)前節(jié)點(diǎn)沒(méi)有成功接收DISCOVERY報(bào)文時(shí),表明沒(méi)有任何節(jié)點(diǎn)發(fā)送DISCOVERY報(bào)文?;騼蓚€(gè)或者兩個(gè)以上鄰居節(jié)點(diǎn)同時(shí)發(fā)送DISCOVERY報(bào)文導(dǎo)致沖突發(fā)生。
【文檔編號(hào)】H04W40/24GK104202792SQ201410454116
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年9月5日 優(yōu)先權(quán)日:2014年9月5日
【發(fā)明者】朱沿旭, 尚國(guó)強(qiáng), 左超, 王堅(jiān), 李超, 王黎明, 曹廷友, 賈佳, 顧建 申請(qǐng)人:總裝備部工程設(shè)計(jì)研究總院