本發(fā)明屬于無線傳感網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種基于ipv6的低功耗無線個(gè)域網(wǎng)絡(luò)樹狀路由方法。
背景技術(shù):
無線網(wǎng)絡(luò)技術(shù)發(fā)展至今,已成為人們?nèi)粘I钪斜夭豢缮俚慕涣魇侄?,從?dāng)年簡單易用的傳呼機(jī),到如今功能日益強(qiáng)大的手機(jī),都是無線通信技術(shù)的代表產(chǎn)品。隨著人與機(jī)器、機(jī)器與機(jī)器之間的通信需求的增大,為滿足新興應(yīng)用在成本、功耗、靈活性方面的要求,無線傳感器網(wǎng)絡(luò)也就應(yīng)運(yùn)而生了。無線傳感器網(wǎng)絡(luò)(wirelesssensornetwork,wsn)是一種由大量低功耗小型傳感器節(jié)點(diǎn)組成,由無線通信方式組成的自組織網(wǎng)絡(luò)系統(tǒng)。其物理層以及數(shù)據(jù)鏈路層使用ieee802.15.4標(biāo)準(zhǔn),我們把這樣的網(wǎng)絡(luò)稱為低功耗的無線個(gè)域網(wǎng)(lowpowerwirelesspersonalareanetwork,lowpan)。
ipv6提供了海量的ip地址,使得每一個(gè)設(shè)備都可以分配到唯一的地址,這滿足了lowpan網(wǎng)絡(luò)設(shè)備大規(guī)模,高密度的部署需求,使得端到端通信變得容易實(shí)現(xiàn)。而lowpan網(wǎng)絡(luò)的ip化,也將克服與互聯(lián)網(wǎng)的互聯(lián)互通等難題。因此,將lowpan技術(shù)與ipv6協(xié)議相結(jié)合,是無線低功耗個(gè)域網(wǎng)絡(luò)發(fā)展的必然選擇。
但是6lowpan網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)簡單,規(guī)模較小,節(jié)點(diǎn)資源有限且長期處于睡眠模式,故其節(jié)點(diǎn)面臨著生存周期的問題。這些節(jié)點(diǎn)通常都使用兩節(jié)干電池進(jìn)行供電,電池能量十分有限,同時(shí),許多節(jié)點(diǎn)的部署環(huán)境惡劣或者人類到達(dá)困難,所以經(jīng)常進(jìn)行人為地更換電池延長節(jié)點(diǎn)壽命并不是一個(gè)可行的方案。路由方法是6lowpan網(wǎng)絡(luò)的關(guān)鍵技術(shù),同時(shí)也是其正確高效運(yùn)行的保障,故如何設(shè)計(jì)出高效節(jié)能的路由方法使節(jié)點(diǎn)能量能夠支撐更長的網(wǎng)絡(luò)生存周期便成為6lowpan技術(shù)發(fā)展的一個(gè)重要研究方向。
現(xiàn)有基于ipv6的低功耗無線個(gè)域網(wǎng)絡(luò)樹狀路由方法還存在以下三個(gè)問題:
1.在選擇父節(jié)點(diǎn)的過程中,如附圖1所示,候選父節(jié)點(diǎn)將自身的剩余能量、當(dāng)前子節(jié)點(diǎn)個(gè)數(shù)、節(jié)點(diǎn)地址等信息打包存放在“入網(wǎng)確認(rèn)”消息中發(fā)送給入網(wǎng)請求節(jié)點(diǎn),由入網(wǎng)請求節(jié)點(diǎn)根據(jù)權(quán)重公式依次計(jì)算各個(gè)候選父節(jié)點(diǎn)的權(quán)重值,并根據(jù)選擇標(biāo)準(zhǔn)選取父節(jié)點(diǎn)。該過程產(chǎn)生了控制消息冗余,也增加了選取父節(jié)點(diǎn)的時(shí)間。與此同時(shí)若存在多個(gè)候選父節(jié)點(diǎn)的剩余能量、當(dāng)前子節(jié)點(diǎn)個(gè)數(shù)和深度值一樣的話,還是無法選出父節(jié)點(diǎn)。
2.在選擇父節(jié)點(diǎn)的過程中考慮到了平均剩余能量這一度量,如果平均剩余能量小于閾值lpe(leastprocessenergy),則表明該節(jié)點(diǎn)不適合作為父節(jié)點(diǎn),但其在計(jì)算平均剩余能量時(shí)只考慮了當(dāng)前子節(jié)點(diǎn)個(gè)數(shù),即只考慮了下行傳輸,而在實(shí)際的數(shù)據(jù)傳輸過程中將涉及到雙向傳輸,這樣將使平均剩余能量計(jì)算不準(zhǔn)確,從而導(dǎo)致父節(jié)點(diǎn)選取不合理。
3.在路徑修復(fù)過程中,并未解決下行路徑修復(fù)問題以及在上行傳輸過程中失效節(jié)點(diǎn)的其他子孫節(jié)點(diǎn)修復(fù)等問題。因?yàn)樵跀?shù)據(jù)轉(zhuǎn)發(fā)過程中一個(gè)節(jié)點(diǎn)只能與其父節(jié)點(diǎn)或子節(jié)點(diǎn)進(jìn)行通信,故在下行路徑傳輸過程中當(dāng)某一個(gè)節(jié)點(diǎn)發(fā)現(xiàn)與其子節(jié)點(diǎn)無法通信時(shí),如果失效節(jié)點(diǎn)的子孫節(jié)點(diǎn)不修復(fù),將會(huì)影響其他節(jié)點(diǎn)間的通信。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提出了一種基于ipv6的低功耗無線個(gè)域網(wǎng)絡(luò)樹狀路由方法,采用基于負(fù)載均衡的最優(yōu)父節(jié)點(diǎn)選取機(jī)制和自適應(yīng)路徑預(yù)判修復(fù)機(jī)制,解決上述父節(jié)點(diǎn)的選取不合理、控制消息中存在冗余開銷以及路徑修復(fù)的問題。
本發(fā)明采取的技術(shù)方案是:
一種基于ipv6的低功耗無線個(gè)域網(wǎng)絡(luò)樹狀路由方法,其特征在于,包括節(jié)點(diǎn)組網(wǎng)(nodenetworking,nn)、數(shù)據(jù)傳輸(datatransmission,dt)和路徑修復(fù)(pathrecovery,pr)三個(gè)階段,各個(gè)階段的操作如下:
p1:節(jié)點(diǎn)組網(wǎng)階段包括:
首先檢測待加入設(shè)備的通訊范圍內(nèi)是否已有無線個(gè)域網(wǎng)絡(luò),若沒有,則為自己分配短地址0并成為新6lowpan網(wǎng)絡(luò)的協(xié)調(diào)節(jié)點(diǎn);否則將通過父節(jié)點(diǎn)選取機(jī)制選取父節(jié)點(diǎn),并與父節(jié)點(diǎn)進(jìn)行mac層關(guān)聯(lián),若關(guān)聯(lián)成功則從父節(jié)點(diǎn)收到—個(gè)16位短地址,父節(jié)點(diǎn)通過地址分配公式fc=mc*ap+n(0<n<=mc)來計(jì)算子節(jié)點(diǎn)地址,其中mc為父節(jié)點(diǎn)最大子節(jié)點(diǎn)個(gè)數(shù),ap是父節(jié)點(diǎn)的地址,新加入子節(jié)點(diǎn)是父節(jié)點(diǎn)的第n個(gè)子節(jié)點(diǎn),計(jì)算得出的fc即為待配置子節(jié)點(diǎn)的地址。
p2:數(shù)據(jù)傳輸階段包括:
在進(jìn)行數(shù)據(jù)傳輸時(shí),所有節(jié)點(diǎn)都知道自己的網(wǎng)絡(luò)深度,當(dāng)節(jié)點(diǎn)收到ipv6數(shù)據(jù)包時(shí)首先確定自己是目的節(jié)點(diǎn)的祖先節(jié)點(diǎn)還是后代節(jié)點(diǎn)。假設(shè)當(dāng)前節(jié)點(diǎn)a的地址為c,深度為d,目的節(jié)點(diǎn)地址為d,節(jié)點(diǎn)a的父節(jié)點(diǎn)b的地址pc可由公式
1)若a為b的祖先節(jié)點(diǎn),則下一跳地址為aa(d+1,b);
2)若a為b的后代節(jié)點(diǎn),則下一跳地址為aa(d-1,a);
3)其他情況,下一跳地址為aa(d-1,a)。
p3:路徑修復(fù)階段包括:
在數(shù)據(jù)傳輸過程中,當(dāng)某一個(gè)節(jié)點(diǎn)發(fā)現(xiàn)下一跳節(jié)點(diǎn)失效時(shí),將通過路徑修復(fù)機(jī)制使失效節(jié)點(diǎn)的子孫節(jié)點(diǎn)重新選取繼父節(jié)點(diǎn),從而重新加入網(wǎng)絡(luò)并繼續(xù)進(jìn)行數(shù)據(jù)的傳輸。
具體的,在節(jié)點(diǎn)組網(wǎng)階段的父節(jié)點(diǎn)選取過程中,采用基于負(fù)載均衡的最優(yōu)父節(jié)點(diǎn)選取機(jī)制,由候選父節(jié)點(diǎn)計(jì)算自身的權(quán)重值,并將權(quán)重值發(fā)送給請求節(jié)點(diǎn),由請求節(jié)點(diǎn)選取權(quán)重值最大的為最優(yōu)父節(jié)點(diǎn)若滿足要求的候選父節(jié)點(diǎn)個(gè)數(shù)為兩個(gè)或兩個(gè)以上,則比較其到達(dá)的先后順序,選取順序值較小的節(jié)點(diǎn)作為最優(yōu)父節(jié)點(diǎn)。
具體的,在節(jié)點(diǎn)組網(wǎng)階段的父節(jié)點(diǎn)選取過程的操作中,考慮到潛在子節(jié)點(diǎn)(即請求節(jié)點(diǎn))的加入以及雙向傳輸?shù)目赡苄?,在?jì)算平均剩余能量時(shí)應(yīng)當(dāng)用剩余能量pi/(當(dāng)前子節(jié)點(diǎn)數(shù)+父節(jié)點(diǎn)數(shù)(繼父節(jié)點(diǎn))+潛在子節(jié)點(diǎn)數(shù)),即pi/(mi+1+1)。
具體的,在路徑修復(fù)階段的操作過程中,采用自適應(yīng)路徑預(yù)判修復(fù)機(jī)制,通過首先判斷失效節(jié)點(diǎn)與其上一跳節(jié)點(diǎn)的關(guān)系,從而確定是上行路徑修復(fù)還是下行路徑修復(fù)。若失效節(jié)點(diǎn)為父節(jié)點(diǎn),則表明是上行路徑修復(fù);若失效節(jié)點(diǎn)為子節(jié)點(diǎn),則表明是下行路徑修復(fù)。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:采用基于負(fù)載均衡的最優(yōu)父節(jié)點(diǎn)選取機(jī)制和自適應(yīng)路徑預(yù)判修復(fù)機(jī)制,在父節(jié)點(diǎn)選取過程中通過減少控制消息的冗余以及增加選擇的參數(shù),執(zhí)行自適應(yīng)修復(fù),從而保持網(wǎng)絡(luò)的負(fù)載平衡,解決下行傳輸以及上行傳輸過程中失效節(jié)點(diǎn)的子孫節(jié)點(diǎn)修復(fù)問題。本發(fā)明解決了父節(jié)點(diǎn)的選取不合理、控制消息中存在冗余開銷以及路徑修復(fù)的問題;可以提高節(jié)點(diǎn)存活率,提高網(wǎng)絡(luò)的生存時(shí)間并減少了平均端到端時(shí)延,可以更好地提升數(shù)據(jù)傳輸成功率等性能。自適應(yīng)路徑預(yù)判修復(fù)機(jī)制操作流程圖如附圖2所示。
附圖說明
附圖1為父節(jié)點(diǎn)選取示意圖。
附圖2為自適應(yīng)路徑預(yù)判修復(fù)機(jī)制操作流程圖。
附圖3為請求消息格式示意圖。
附圖4為確認(rèn)消息格式示意圖。
具體實(shí)施方式
以下結(jié)合附圖和具體實(shí)例對本發(fā)明的具體實(shí)施方式做詳細(xì)介紹。
本發(fā)明提出基于ipv6的低功耗無線個(gè)域網(wǎng)絡(luò)樹狀路由方法包括三個(gè)主要階段:節(jié)點(diǎn)組網(wǎng)階段、數(shù)據(jù)傳輸階段、路徑修復(fù)階段。具體實(shí)施方式如下:
1.節(jié)點(diǎn)組網(wǎng)階段
步驟1:當(dāng)—個(gè)新節(jié)點(diǎn)想要加入6lowpan網(wǎng)絡(luò)時(shí),首先通過掃描程序檢測其通訊范圍內(nèi)是否已有一個(gè)6lowpan網(wǎng)絡(luò):若沒有,則為自己分配短地址0并成為新6lowpan網(wǎng)絡(luò)協(xié)調(diào)節(jié)點(diǎn);若恰好檢測到1個(gè)節(jié)點(diǎn),將j(join)、r(recovery)、m(multi)置為1、0、0,并向該節(jié)點(diǎn)發(fā)送“入網(wǎng)請求”進(jìn)行關(guān)聯(lián);若檢測到多個(gè)有效節(jié)點(diǎn),將j、r、m位分別置為1、0、1,并向所有節(jié)點(diǎn)廣播發(fā)送“入網(wǎng)請求”進(jìn)行關(guān)聯(lián),請求消息格式如附圖3所示。然后執(zhí)行步驟2;
步驟2:當(dāng)協(xié)調(diào)節(jié)點(diǎn)i收到“入網(wǎng)請求”消息后,主要操作如下:
a)首先判斷自己的子節(jié)點(diǎn)個(gè)數(shù),如果子節(jié)點(diǎn)個(gè)數(shù)等于mc(mc為當(dāng)前節(jié)點(diǎn)的最大子節(jié)點(diǎn)個(gè)數(shù)),則表明節(jié)點(diǎn)i的子節(jié)點(diǎn)個(gè)數(shù)已達(dá)到上線,將不再接受其他節(jié)點(diǎn)作為自己的子節(jié)點(diǎn),故不再處理該請求消息,否則執(zhí)行b;
b)若子節(jié)點(diǎn)個(gè)數(shù)小于mc,則表明節(jié)點(diǎn)i的子節(jié)點(diǎn)個(gè)數(shù)未達(dá)到上線,故繼續(xù)判斷m標(biāo)志位,若m標(biāo)志位為0,則表明沒有其他的候選父節(jié)點(diǎn),故根據(jù)地址分配公式fc=mc*ap+n(0<n<=mc)計(jì)算出該請求節(jié)點(diǎn)的16位短地址,并與其關(guān)聯(lián)成功;若m的標(biāo)志位為1,則表明有多個(gè)候選父節(jié)點(diǎn),節(jié)點(diǎn)i將檢測自己的剩余能量pi、子節(jié)點(diǎn)個(gè)數(shù)mi以及深度值di,若pi/(mi+2)小于閾值lpe,將不再處理該請求消息,否則執(zhí)行c;
c)根據(jù)公式
步驟3:假設(shè)入網(wǎng)請求節(jié)點(diǎn)收到了n個(gè)侯選父節(jié)點(diǎn)發(fā)來的“入網(wǎng)確認(rèn)”消息,記錄收到各個(gè)侯選父節(jié)點(diǎn)i的先后順序,標(biāo)記為oi,并提取其權(quán)重wi,選取權(quán)重值最大的節(jié)點(diǎn)作其最優(yōu)父節(jié)點(diǎn)nmax,選擇公式為
2.數(shù)據(jù)傳輸階段
在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,所有節(jié)點(diǎn)都知道自己的網(wǎng)絡(luò)深度,當(dāng)節(jié)點(diǎn)收到ipv6數(shù)據(jù)包時(shí)首先確定自己是目的節(jié)點(diǎn)的祖先節(jié)點(diǎn)還是后代節(jié)點(diǎn)。假設(shè)當(dāng)前節(jié)點(diǎn)a的地址為c,深度為d,目的節(jié)點(diǎn)地址為d,節(jié)點(diǎn)a的父節(jié)點(diǎn)b的地址pc可由公式
1)若a為b的祖先節(jié)點(diǎn),則下一跳地址為aa(d+1,b);
2)若a為b的后代節(jié)點(diǎn),則下一跳地址為aa(d-1,a);
3)其他情況,下一跳地址為aa(d-1,a)。
3.路徑修復(fù)階段
步驟1:在數(shù)據(jù)傳輸過程中,當(dāng)節(jié)點(diǎn)j發(fā)現(xiàn)下一跳節(jié)點(diǎn)失效時(shí),將首先判斷失效節(jié)點(diǎn)與自己的關(guān)系,從而確定是上行路徑修復(fù)還是下行路徑修復(fù)。若失效節(jié)點(diǎn)為父節(jié)點(diǎn),則表明是上行路徑修復(fù),節(jié)點(diǎn)j需要修復(fù),故將j、r、m位分別標(biāo)識為0、1、1;若失效節(jié)點(diǎn)為子節(jié)點(diǎn),則表明是下行路徑修復(fù),節(jié)點(diǎn)j并不需要修復(fù),故將j、r、m位標(biāo)識為1、1、1。并向其鄰居節(jié)點(diǎn)廣播帶有失效節(jié)點(diǎn)地址的“修復(fù)請求”消息,然后執(zhí)行步驟2;
步驟2:當(dāng)協(xié)調(diào)節(jié)點(diǎn)i收到“修復(fù)請求”消息后,主要操作如下:
a)首先判斷失效節(jié)點(diǎn)與自己的關(guān)系,若失效節(jié)點(diǎn)為自己的父節(jié)點(diǎn),則執(zhí)行b;若失效節(jié)點(diǎn)是自己的子節(jié)點(diǎn),則執(zhí)行c;若失效節(jié)點(diǎn)既不是自己的父節(jié)點(diǎn)也不是自己的子節(jié)點(diǎn),則執(zhí)行d;
b)失效節(jié)點(diǎn)為該節(jié)點(diǎn)的父節(jié)點(diǎn),故斷開與失效節(jié)點(diǎn)的關(guān)聯(lián),并將自己設(shè)置成修復(fù)請求節(jié)點(diǎn),向其鄰居節(jié)點(diǎn)廣播帶有失效節(jié)點(diǎn)地址的“修復(fù)請求”消息:j、r、m置為0、1、1,然后執(zhí)行步驟2;
c)斷開與失效節(jié)點(diǎn)的關(guān)聯(lián),并判斷當(dāng)前子節(jié)點(diǎn)個(gè)數(shù),如果子節(jié)點(diǎn)個(gè)數(shù)等于mc,則表明子節(jié)點(diǎn)個(gè)數(shù)已達(dá)到上線,將不再處理該請求消息,否則執(zhí)行e;
d)檢查j、r標(biāo)志位,若j為1且r為1,則表明節(jié)點(diǎn)j不需要修復(fù),即無需選取繼父節(jié)點(diǎn),故將該請求消息丟棄不處理;若j為0且r為1,則表明節(jié)點(diǎn)j需要修復(fù),故節(jié)點(diǎn)i將繼續(xù)判斷當(dāng)前子節(jié)點(diǎn)個(gè)數(shù),如果子節(jié)點(diǎn)個(gè)數(shù)等于mc,則表明子節(jié)點(diǎn)個(gè)數(shù)已達(dá)到上線,將不再處理該請求消息,否則執(zhí)行e;
e)若子節(jié)點(diǎn)個(gè)數(shù)小于mc,則表明節(jié)點(diǎn)i的子節(jié)點(diǎn)個(gè)數(shù)未達(dá)到上線,故節(jié)點(diǎn)i將繼續(xù)檢測自己的剩余能量pi、子節(jié)點(diǎn)個(gè)數(shù)mi以及深度值di,若pi/(mi+2)小于閾值lpe,將不在處理該請求消息;否則,將根據(jù)公式
步驟3:假設(shè)修復(fù)節(jié)點(diǎn)收到n個(gè)候選繼父節(jié)點(diǎn)發(fā)來的“修復(fù)確認(rèn)”消息,記錄收到各個(gè)侯選繼父節(jié)點(diǎn)i的先后順序,標(biāo)記為oi,并提取其權(quán)重wi,根據(jù)公式
本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。