一種無線傳感網(wǎng)路由的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種實(shí)現(xiàn)方法,尤其涉及的是一種無線傳感網(wǎng)路由的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002] 無線網(wǎng)絡(luò)作為一種新型通信網(wǎng)絡(luò),能夠?qū)崿F(xiàn)節(jié)點(diǎn)與節(jié)點(diǎn)之間的多跳無線通信。隨 著無線網(wǎng)絡(luò)技術(shù)的不斷發(fā)展以及各種新應(yīng)用的不斷涌現(xiàn),迫切需要無線網(wǎng)絡(luò)能夠接入互聯(lián) 網(wǎng)以滿足用戶急劇增長的應(yīng)用需求。
[0003] 無線網(wǎng)絡(luò)作為一種特殊類型的移動(dòng)自組網(wǎng),具有移動(dòng)速度快、節(jié)點(diǎn)數(shù)量多、覆蓋面 積大等特點(diǎn)。基于IPv6的互聯(lián)網(wǎng)(以下簡稱IPv6網(wǎng)絡(luò))具有移動(dòng)性支持、地址資源豐富 以及擴(kuò)展性強(qiáng)等優(yōu)點(diǎn)。因此,無線網(wǎng)絡(luò)接入IPv6網(wǎng)絡(luò)成為滿足用戶應(yīng)用需求的理想解決方 案。
[0004] 目前的研究人員提出了無線網(wǎng)絡(luò)通過接入基于IPv6的互聯(lián)網(wǎng)獲取網(wǎng)絡(luò)服務(wù)的模 式并定義了相應(yīng)的協(xié)議棧,但是由于無線網(wǎng)絡(luò)網(wǎng)的體系結(jié)構(gòu)與IPv6網(wǎng)絡(luò)不通,現(xiàn)有的接入 方法具有一些局限性。因此需要提出一種無線網(wǎng)絡(luò)的通信實(shí)現(xiàn)方法,從而降低數(shù)據(jù)丟失率, 提尚服務(wù)質(zhì)量。
【發(fā)明內(nèi)容】
[0005] 發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種無線傳 感網(wǎng)路由的實(shí)現(xiàn)方法。
[0006] 技術(shù)方案:本發(fā)明公開了一種無線傳感網(wǎng)路由的實(shí)現(xiàn)方法,所述無線傳感網(wǎng)包含 兩種節(jié)點(diǎn):全功能節(jié)點(diǎn)和部分功能節(jié)點(diǎn);全功能節(jié)點(diǎn)具有路由轉(zhuǎn)發(fā)功能,部分功能節(jié)點(diǎn)不 具有路由轉(zhuǎn)發(fā)功能,部分功能節(jié)點(diǎn)用于感知環(huán)境參數(shù);所述無線傳感網(wǎng)通過接入路由器連 接到下一代互聯(lián)網(wǎng),接入路由器和所述無線傳感網(wǎng)中的所有全功能節(jié)點(diǎn)構(gòu)建成一個(gè)樹狀結(jié) 構(gòu),稱為地址樹,地址樹的根節(jié)點(diǎn)為接入路由器;部分功能節(jié)點(diǎn)通過地址樹與其他節(jié)點(diǎn)進(jìn)行 通信,地址樹中與部分功能節(jié)點(diǎn)直接通信的全功能節(jié)點(diǎn)稱為部分功能節(jié)點(diǎn)的關(guān)聯(lián)節(jié)點(diǎn);
[0007] 所述無線傳感網(wǎng)節(jié)點(diǎn)的IPv6地址由四部分構(gòu)成,第一部分為樹ID,它唯一標(biāo)識(shí)一 個(gè)無線傳感網(wǎng),一個(gè)無線傳感網(wǎng)中所有傳感器節(jié)點(diǎn)的樹ID都相同,其值等于相同無線傳感 網(wǎng)內(nèi)的接入路由器的樹ID;第二部分為1比特的類型域,該域表示一個(gè)傳感器節(jié)點(diǎn)的類型, 當(dāng)類型域?yàn)?時(shí),表示該節(jié)點(diǎn)為全功能節(jié)點(diǎn),當(dāng)類型域?yàn)椹枙r(shí),表示該節(jié)點(diǎn)為部分功能節(jié)點(diǎn); 第三部分為i比特的樹枝ID,它唯一標(biāo)識(shí)一個(gè)全功能節(jié)點(diǎn),第四部分為j比特的節(jié)點(diǎn)ID,它 唯一標(biāo)識(shí)一個(gè)部分功能節(jié)點(diǎn);接入路由器的IPv6地址的類型域值為1,樹枝ID為0,節(jié)點(diǎn)ID 為非零自然數(shù);接入路由器的樹ID預(yù)先設(shè)置;
[0008] 類型域,樹枝ID和節(jié)點(diǎn)ID構(gòu)成鏈路地址,其長度為16比特或者64比特;
[0009] -個(gè)全功能節(jié)點(diǎn)的樹枝ID的有效長度L與該節(jié)點(diǎn)所在地址樹的深度d成正比, L彡i,如公式(1)所示,
[0010] L=d?c公式(1),
[0011] 其中,C是衡量一個(gè)全功能節(jié)點(diǎn)擁有的最大子節(jié)點(diǎn)數(shù)量的變量,即f-1是一個(gè)全功 能節(jié)點(diǎn)擁有的最大子節(jié)點(diǎn)數(shù),C一般取值范圍為2-6 ;
[0012] 全功能節(jié)點(diǎn)獲取IPv6地址后定期廣播信標(biāo)幀,信標(biāo)幀負(fù)載包括樹ID,可供分配的 樹枝ID數(shù)量和節(jié)點(diǎn)ID數(shù)量;地址樹中每個(gè)節(jié)點(diǎn)保存一個(gè)樹枝ID表,具有f-1個(gè)表項(xiàng),每 個(gè)表項(xiàng)包含三個(gè)域:樹枝ID域,分配狀態(tài)和生命周期,其中分配狀態(tài)具有兩個(gè)值,已分配和 未分配,如果分配狀態(tài)值為已分配,那么生命周期域值隨著時(shí)鐘遞減,如果在生命周期內(nèi)收 到對(duì)應(yīng)該樹枝ID的全功能節(jié)點(diǎn)廣播的信標(biāo)幀,那么將生命周期域值設(shè)置為最大值;生命周 期一般設(shè)置為信標(biāo)幀廣播周期的整數(shù)倍,例如1分鐘;如果生命周期衰減為〇,那么將該樹 枝ID的分配狀態(tài)改為未分配;
[0013] 全功能節(jié)點(diǎn)啟動(dòng)后,用自己的硬件ID作為臨時(shí)鏈路地址(例如MAC地址)并偵聽 鄰居接入路由器或者全功能節(jié)點(diǎn)廣播的信標(biāo)幀,獲取樹ID,然后選擇距離接入路由器最近 且可供分配樹枝ID最大的鄰居接入路由器或者全功能節(jié)點(diǎn)獲取地址,包括以下步驟:
[0014] 步驟101:開始;
[0015] 步驟102:全功能節(jié)點(diǎn)向鄰居接入路由器或者全功能節(jié)點(diǎn)發(fā)送樹枝ID請(qǐng)求命令 幀,源鏈路地址為全功能節(jié)點(diǎn)的臨時(shí)鏈路地址;
[0016] 步驟103:鄰居接入路由器或者全功能節(jié)點(diǎn)收到樹枝ID請(qǐng)求命令幀后,查看樹枝 ID表,選擇最小未分配的樹枝ID,向全功能節(jié)點(diǎn)返回樹枝ID響應(yīng)命令幀,樹枝ID響應(yīng)命令 幀負(fù)載為分配的樹枝ID,同時(shí)將該樹枝ID的分配狀態(tài)設(shè)置為已分配,生命周期設(shè)置為最大 值;
[0017] 步驟104:全功能節(jié)點(diǎn)收到樹枝ID響應(yīng)命令幀后,將自己的樹枝ID設(shè)置為鄰居接 入路由器或者全功能節(jié)點(diǎn)的樹枝ID,然后將自己的樹枝ID擴(kuò)展c比特,并將擴(kuò)展的c比特 值設(shè)置為樹枝ID響應(yīng)命令幀中分配的樹枝ID值,然后將樹ID與自己的樹枝ID相結(jié)合構(gòu) 建成IPv6地址,其中,類型域?yàn)?,節(jié)點(diǎn)ID為0 ;
[0018] 步驟105:結(jié)束;
[0019] 通過上述過程,全功能節(jié)點(diǎn)獲取了地址并可以進(jìn)行通信;
[0020] 樹中每個(gè)節(jié)點(diǎn)保存一個(gè)節(jié)點(diǎn)ID表,具有2j_l個(gè)表項(xiàng),i取值為4或者8 ;每個(gè)表項(xiàng) 包含三個(gè)域:節(jié)點(diǎn)ID,分配狀態(tài)和生命周期,其中,分配狀態(tài)具有兩個(gè)值,已分配狀態(tài)和未 分配狀態(tài);如果分配狀態(tài)值為已分配,那么生命周期域值隨著時(shí)鐘遞減,如果在生命周期內(nèi) 收到該節(jié)點(diǎn)ID的部分功能節(jié)點(diǎn)廣播的信標(biāo)幀,那么將生命周期域值設(shè)置為最大值;生命周 期設(shè)置為信標(biāo)幀廣播周期的整數(shù)倍,例如1分鐘;如果生命周期衰減為〇,那么將該節(jié)點(diǎn)ID 的分配狀態(tài)改為未分配;
[0021] 部分功能節(jié)點(diǎn)啟動(dòng)后,用自己的硬件ID(例如MAC地址)作為臨時(shí)鏈路地址,并偵 聽全功能節(jié)點(diǎn)廣播的信標(biāo)幀,獲取樹ID,然后選擇距離接入路由器最近且可供分配節(jié)點(diǎn)ID 數(shù)量最大的全功能節(jié)點(diǎn)獲取地址,包括以下步驟:
[0022] 步驟201:開始;
[0023] 步驟202:部分功能節(jié)點(diǎn)向全功能節(jié)點(diǎn)發(fā)送節(jié)點(diǎn)ID請(qǐng)求命令幀,源地址為部分功 能節(jié)點(diǎn)臨時(shí)鏈路地址;
[0024] 步驟203:全功能節(jié)點(diǎn)收到節(jié)點(diǎn)ID請(qǐng)求命令幀后,查看節(jié)點(diǎn)ID表,選擇最小未分 配的節(jié)點(diǎn)ID,向部分功能節(jié)點(diǎn)返回節(jié)點(diǎn)ID響應(yīng)命令幀,節(jié)點(diǎn)ID響應(yīng)命令幀負(fù)載為分配的節(jié) 點(diǎn)ID,同時(shí)將該節(jié)點(diǎn)ID的分配狀態(tài)設(shè)置為已分配狀態(tài),生命周期設(shè)置為最大值;
[0025] 步驟204:部分功能節(jié)點(diǎn)收到節(jié)點(diǎn)ID響應(yīng)命令幀后,將自己的樹枝ID設(shè)置為全功 能節(jié)點(diǎn)的樹枝ID,將節(jié)點(diǎn)ID設(shè)置為節(jié)點(diǎn)ID響應(yīng)命令幀中的節(jié)點(diǎn)ID值,然后將樹ID,樹枝 ID以及節(jié)點(diǎn)ID相結(jié)合構(gòu)建成IPv6地址,其中,類型域值為0;
[0026] 步驟205結(jié)束。
[0027] 通過上述過程,部分功能節(jié)點(diǎn)可以獲取地址,并進(jìn)行正確通信;
[0028] 本發(fā)明所述方法中,全功能節(jié)點(diǎn)獲取IPv6地址后,構(gòu)建一跳鄰居表和兩跳鄰居 表,一跳鄰居表用于記錄一跳范圍內(nèi)的全功能節(jié)點(diǎn),每個(gè)表項(xiàng)包含兩個(gè)域:鄰居節(jié)點(diǎn)的鏈路 地址和生命周期;二跳鄰居表用于記錄兩跳范圍內(nèi)的全功能節(jié)點(diǎn),每個(gè)表項(xiàng)包括三個(gè)域: 兩跳鄰居節(jié)點(diǎn)的鏈路地址,一跳鄰居節(jié)點(diǎn)的鏈路地址,以及生命周期,其中一跳鄰居節(jié)點(diǎn)的 鏈路地址為到達(dá)該兩跳鄰居節(jié)點(diǎn)所經(jīng)過的一跳鄰居節(jié)點(diǎn)的鏈路地址;
[0029] 全功能節(jié)點(diǎn)配置地址后,廣播的信標(biāo)幀包括樹ID,可供分配的樹枝ID數(shù)量和節(jié)點(diǎn) ID數(shù)量,以及一跳鄰居表和兩跳鄰居表;
[0030] 全功能節(jié)點(diǎn)根據(jù)下述過程建立一跳鄰居表和二跳鄰居表:
[0031] 步驟301:開始;
[0032] 步驟302:全功能節(jié)點(diǎn)收到鄰居全功能節(jié)點(diǎn)的信標(biāo)幀后,判斷該鄰居全功能節(jié)點(diǎn) 是否在自己的一跳鄰居表內(nèi),如果是進(jìn)行步驟303,否則進(jìn)行步驟304:
[0033] 步驟303:全功能節(jié)點(diǎn)將該鄰居全功能節(jié)點(diǎn)加入到一跳鄰居列表中,生命周期設(shè) 置為最大值;
[0034] 步驟304:全功能節(jié)點(diǎn)查看信標(biāo)幀中一跳鄰居表的每個(gè)表項(xiàng),判斷該表項(xiàng)標(biāo)識(shí)的 全功能節(jié)點(diǎn)是否為自己的一跳鄰居全功能節(jié)點(diǎn),如果是,進(jìn)行步驟306,否則進(jìn)行步驟305;
[0035] 步驟305:全功能節(jié)點(diǎn)將該表項(xiàng)標(biāo)識(shí)的全功能節(jié)點(diǎn)加入到二跳鄰居表中,其中,二 跳鄰居節(jié)點(diǎn)的鏈路地址為該表項(xiàng)標(biāo)識(shí)的全功能節(jié)點(diǎn)的鏈路地址,一跳鄰居節(jié)點(diǎn)的鏈路地址 為該信標(biāo)幀的源鏈路地址,生命周期設(shè)置為最大值;
[0036] 步驟306:全功能節(jié)點(diǎn)判斷是否執(zhí)行了步驟303或者步驟305,如果是,進(jìn)行步驟 307,否則執(zhí)行步驟308;
[0037] 步驟307:全功能節(jié)點(diǎn)重復(fù)步驟302~步驟306;
[0038] 步驟308:結(jié)束。
[0039] 本發(fā)明所述方法中,如果全功能節(jié)點(diǎn)Y1是全功能節(jié)點(diǎn)Y2的祖先節(jié)點(diǎn),全功能節(jié)點(diǎn) Y1的樹枝ID的有效長度為L1,全功能節(jié)點(diǎn)Y2的樹枝ID的有效長度為L2,那么全功能節(jié) 點(diǎn)Y2到達(dá)全功能節(jié)點(diǎn)Y1的距離h如公式⑵所示:
[0040]
[0041] 如果一個(gè)數(shù)據(jù)幀的目的鏈路地址的樹枝ID與全功能節(jié)點(diǎn)X的樹枝ID相同,那么 該數(shù)據(jù)幀路由到全功能節(jié)點(diǎn)X的過程如下所示:
[0042] 步驟401:開始;
[0043] 步驟402:收到該數(shù)據(jù)幀的當(dāng)前全功能節(jié)點(diǎn)查看一跳鄰居節(jié)點(diǎn)表和二跳鄰居節(jié)點(diǎn) 表,并判斷全功能節(jié)點(diǎn)X是否為自己的一跳鄰居節(jié)點(diǎn),如果是,進(jìn)行步驟403,否則進(jìn)行步驟 404;
[0044] 步驟403:當(dāng)前全功能節(jié)點(diǎn)將該數(shù)據(jù)幀發(fā)動(dòng)到全功能節(jié)點(diǎn)X,進(jìn)行步驟410;
[0045] 步驟404:當(dāng)前全功能節(jié)點(diǎn)判斷全功能節(jié)點(diǎn)X是否為自己二跳鄰居節(jié)點(diǎn)表中一個(gè) 表項(xiàng)中的二跳鄰居節(jié)點(diǎn),如果是,進(jìn)行步驟405,否則進(jìn)行步驟406;
[0046] 步驟405:當(dāng)前全功能節(jié)點(diǎn)將該數(shù)據(jù)幀轉(zhuǎn)發(fā)給全功能節(jié)點(diǎn)X對(duì)應(yīng)表項(xiàng)的一跳鄰居 節(jié)點(diǎn)域?qū)?yīng)的全功能節(jié)點(diǎn),進(jìn)行步驟402;
[0047] 步驟406:如果當(dāng)前全功能節(jié)點(diǎn)的一跳鄰居節(jié)點(diǎn)表T1存在n個(gè)表項(xiàng),每個(gè)表項(xiàng)所 標(biāo)識(shí)的鄰居全功能節(jié)點(diǎn)為Yk,1 <k<n,二跳鄰居節(jié)點(diǎn)表T2存在m個(gè)表項(xiàng),每個(gè)表項(xiàng)所標(biāo) 識(shí)的二跳鄰居全功能節(jié)點(diǎn)為Zb,1 <b<m,全功能節(jié)點(diǎn)Yk與全功能節(jié)點(diǎn)X的共同祖先為Ak, 全功能節(jié)點(diǎn)Yk到達(dá)全功能節(jié)點(diǎn)Ak的距離與全功能節(jié)點(diǎn)X到達(dá)全功能節(jié)點(diǎn)Ak的距離之和為 hk,全功能節(jié)點(diǎn)Zb與全功能節(jié)點(diǎn)X的共同祖先為全功能節(jié)點(diǎn)Ab,全功能節(jié)點(diǎn)Zb到達(dá)全功能 節(jié)點(diǎn)Ab的距離與全功能節(jié)點(diǎn)X到達(dá)全功能節(jié)點(diǎn)Ab的距離之和為hb,當(dāng)前全功能節(jié)點(diǎn)判斷其 一跳鄰居節(jié)點(diǎn)表T1中是否存在滿足公式(3)的全功能節(jié)點(diǎn),如果是,執(zhí)行步驟407,否則執(zhí) 行步驟408;
[0048]
[0049] 公式(3)中,在一跳鄰居表中存在一個(gè)表項(xiàng),該表項(xiàng)標(biāo)識(shí)的全功能節(jié)點(diǎn)Yp,全功能 節(jié)點(diǎn)Yp與全功能節(jié)點(diǎn)X的共同祖先為Ap,全功能節(jié)點(diǎn)Yp到達(dá)全功能節(jié)點(diǎn)Ap的距離與全功 能節(jié)點(diǎn)X到達(dá)全功能節(jié)點(diǎn)Ap的距離之和為hp,h/j、于或者等于hk并且h/J、于或者等于hb 加1 ;
[0050] 步驟407:當(dāng)前全功能節(jié)點(diǎn)將數(shù)據(jù)幀轉(zhuǎn)發(fā)給滿足公式(3)的一跳全功能節(jié)點(diǎn),執(zhí)行 步驟402;
[0051] 步驟408:當(dāng)前全功能節(jié)點(diǎn)從自己的二跳鄰居節(jié)點(diǎn)表T2中選擇滿足公式(4)的全 功能節(jié)點(diǎn);
[0052]
[0053] 公式(4)中,在二跳鄰居表中存在一個(gè)表項(xiàng),該表項(xiàng)標(biāo)識(shí)的全功能節(jié)點(diǎn)Yq,全功能 節(jié)點(diǎn)Yq與全功能節(jié)點(diǎn)X的共同祖先為Aq,全功能節(jié)點(diǎn)Yq到達(dá)全功