專利名稱:一種自修剪式的樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,涉及一種自修剪式的樹型結(jié)構(gòu)網(wǎng)絡(luò)地址 分配方法,更具體的說,本發(fā)明涉及一種無(wú)線傳感器網(wǎng)絡(luò)的自修剪式的樹 型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法,該方法在網(wǎng)絡(luò)擁有空閑網(wǎng)絡(luò)地址,節(jié)點(diǎn)分布密 度不均勻時(shí),節(jié)點(diǎn)可以在密度高的區(qū)域內(nèi)成功加入網(wǎng)絡(luò)。
技術(shù)背景一種公知的無(wú)線傳感器網(wǎng)絡(luò)領(lǐng)域的地址分配機(jī)制是樹型結(jié)構(gòu)網(wǎng)絡(luò)地 址分配機(jī)制。該分布式地址分配機(jī)制根據(jù)其定義的地址計(jì)算及分配算法, 將無(wú)線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn)類型分成3種網(wǎng)絡(luò)協(xié)調(diào)器、路由器和終端設(shè) 備。網(wǎng)絡(luò)協(xié)調(diào)器是整個(gè)無(wú)線傳感器網(wǎng)絡(luò)的網(wǎng)關(guān),可對(duì)子節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)地址 分配;路由器也是一個(gè)可為子節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)地址分配的網(wǎng)絡(luò)節(jié)點(diǎn);終端設(shè) 備接收父親節(jié)點(diǎn)的地址分配,自身沒有為其他節(jié)點(diǎn)分配網(wǎng)絡(luò)地址的能力。當(dāng)無(wú)線傳感器網(wǎng)絡(luò)中心協(xié)調(diào)器完成初始化之后,它確定了樹型結(jié)構(gòu)的 最大網(wǎng)絡(luò)深度,每個(gè)路由器節(jié)點(diǎn)的最大子節(jié)點(diǎn)個(gè)數(shù)和最大子路由器個(gè)數(shù)。 隨著網(wǎng)絡(luò)不斷擴(kuò)大,路由器和終端節(jié)點(diǎn)不斷加入到網(wǎng)絡(luò)中。每個(gè)路由器根 據(jù)其最大網(wǎng)絡(luò)深度、每個(gè)節(jié)點(diǎn)最大路由器個(gè)數(shù)和最大子節(jié)點(diǎn)個(gè)數(shù),計(jì)算得 到路由器預(yù)留給其子孫節(jié)點(diǎn)的網(wǎng)絡(luò)地址范圍,而最大網(wǎng)絡(luò)深度、最大路由 器個(gè)數(shù)和最大子節(jié)點(diǎn)個(gè)數(shù)在網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)的階段確定,在網(wǎng)絡(luò)分布實(shí)施過 程中不能對(duì)其進(jìn)行改變。該算法在整個(gè)網(wǎng)絡(luò)中使用一個(gè)全局統(tǒng)一的網(wǎng)絡(luò)地 址分配算法,將地址分配的計(jì)算過程分散到網(wǎng)絡(luò)中的分布的各個(gè)節(jié)點(diǎn)上, 地址分配過程無(wú)需傳輸數(shù)據(jù)至其他節(jié)點(diǎn), 一定程度上降低了的節(jié)點(diǎn)能耗。由于每個(gè)路由器都只擁有一定數(shù)量的預(yù)留網(wǎng)絡(luò)地址,當(dāng)其附近網(wǎng)絡(luò)節(jié) 點(diǎn)密度較大時(shí),路由器用完了所有預(yù)留的網(wǎng)絡(luò)地址仍不能滿足其地址分配 的需求,而網(wǎng)絡(luò)節(jié)點(diǎn)密度較小區(qū)域的路由器節(jié)點(diǎn)可能只使用了預(yù)留網(wǎng)絡(luò)地 址的一部分。這種情況下,在節(jié)點(diǎn)密度高的區(qū)域,因?yàn)轭A(yù)留的網(wǎng)絡(luò)地址有 限,而導(dǎo)致節(jié)點(diǎn)不能順利加入網(wǎng)絡(luò);而在節(jié)點(diǎn)密度低的區(qū)域,因?yàn)轭A(yù)留的 網(wǎng)絡(luò)地址未完全分配,導(dǎo)致了網(wǎng)絡(luò)地址的浪費(fèi)。在這種節(jié)點(diǎn)密度不均勻的 情況下,樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配機(jī)制存在網(wǎng)絡(luò)地址利用率不高和網(wǎng)絡(luò)節(jié)點(diǎn) 密度高的區(qū)域部分節(jié)點(diǎn)不能成功加入網(wǎng)絡(luò)的缺點(diǎn)。因此有必要發(fā)展一種可以在網(wǎng)絡(luò)節(jié)點(diǎn)密度不均勻的情況下,在節(jié)點(diǎn)密 度高的區(qū)域中節(jié)點(diǎn)仍然能夠成功加入網(wǎng)絡(luò)的方法,解決由于網(wǎng)絡(luò)節(jié)點(diǎn)密度 不均勻而造成的網(wǎng)絡(luò)地址利用率低和節(jié)點(diǎn)不能成功加入網(wǎng)絡(luò)的問題。 發(fā)明內(nèi)容本發(fā)明的目的就是針對(duì)上述目前無(wú)線傳感器網(wǎng)絡(luò)地址分配中存在的 問題,提供一種更合理更優(yōu)化的網(wǎng)絡(luò)地址分配方法,以實(shí)現(xiàn)更高效的網(wǎng)絡(luò)地址分配,尤其是在網(wǎng)絡(luò)節(jié)點(diǎn)密度不均勻的情況下,提高網(wǎng)絡(luò)實(shí)際節(jié)點(diǎn)容 納數(shù)量。有效地解決了無(wú)線傳感器網(wǎng)絡(luò)中節(jié)點(diǎn)分布不均勻的情況下,新節(jié) 點(diǎn)不能成功加入網(wǎng)絡(luò)的問題。本發(fā)明提出一種自修剪式樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配的方法,該方法包 括當(dāng)一個(gè)新的節(jié)點(diǎn)準(zhǔn)備加入網(wǎng)絡(luò)時(shí),新節(jié)點(diǎn)探測(cè)周圍環(huán)境中的路由器節(jié) 點(diǎn),并選擇其中一個(gè)路由器,向該路由器發(fā)送加入網(wǎng)絡(luò)申請(qǐng)。如果該路由 器節(jié)點(diǎn)有空閑的網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn),則選擇一個(gè)地址分配給新節(jié)點(diǎn), 并將路由信息加入到路由表中,那么新節(jié)點(diǎn)得到網(wǎng)絡(luò)地址,成功加入網(wǎng)絡(luò); 如果該路由器節(jié)點(diǎn)已經(jīng)沒有空閑地址可以提供給新節(jié)點(diǎn),則該路由器節(jié)點(diǎn) 作為源路由器向網(wǎng)絡(luò)中的其他路由器借用網(wǎng)絡(luò)地址。借用網(wǎng)絡(luò)地址步驟是(1)選取借用目標(biāo)網(wǎng)絡(luò)地址 源路由器根據(jù)計(jì)算目標(biāo)地址算法生成借用目標(biāo)地址,具有借用目標(biāo)網(wǎng) 絡(luò)地址的路由器節(jié)點(diǎn)為目標(biāo)路由器,計(jì)算目標(biāo)地址算法為S[C^p(/).ra"《+l],若新節(jié)點(diǎn)類型為路由器 ^cW廠=乂 '=。2 [C^z》(0,"《+1],若新節(jié)點(diǎn)類型為終端設(shè)備、'=0其中」gWt表示計(jì)算得到的目標(biāo)地址,Z歷表示樹型結(jié)構(gòu)網(wǎng)絡(luò)最大深度,7;377c/表示生成隨機(jī)數(shù),6^h'p計(jì)算公式如下'l+Cw-(丄附-fl -l), 如果i m = l1+Cm _ 7 m _ Cm i mim—"其他其中0Z7表示最大子節(jié)點(diǎn)個(gè)數(shù),Afe表示最大子路由器節(jié)點(diǎn)個(gè)數(shù),^為 路由器節(jié)點(diǎn)當(dāng)前深度。(2) 組織借用數(shù)據(jù)包源路由器計(jì)算得到借用目標(biāo)地址后,源路由器組織借用數(shù)據(jù)包,借用 數(shù)據(jù)包為一個(gè)包含借用序號(hào)、借用目標(biāo)地址、新節(jié)點(diǎn)設(shè)備類型的三元組, 其中借用序號(hào)為由源路由器生成每次自增l的值,該值初始化為0,當(dāng)組 織借用數(shù)據(jù)包時(shí),將該值加1作為該次借用數(shù)據(jù)包的借用序號(hào);借用目標(biāo) 地址為步驟(1)計(jì)算得到的地址;新節(jié)點(diǎn)設(shè)備類型根據(jù)步驟(1)中新節(jié)點(diǎn)的 類型,取值為路由器類型或終端設(shè)備類型。(3) 發(fā)送借用數(shù)據(jù)包當(dāng)組織借用數(shù)據(jù)包完成之后,源路由器維護(hù)一個(gè)借用地址臨時(shí)表,該 表中每條記錄表示一次網(wǎng)絡(luò)地址借用記錄,源路由器將步驟(2)生成的三 元組信息插入到該臨時(shí)表中,然后向目標(biāo)路由器發(fā)出該借用數(shù)據(jù)包。(4) 接收借用數(shù)據(jù)包當(dāng)目標(biāo)路由器接收到源路由器發(fā)出的借用請(qǐng)求數(shù)據(jù)包后,判斷自身是否擁有空閑地址,如果存在未使用的空閑地址,則選擇一個(gè)地址作為被借 用地址;如果沒有未使用的空閑地址存在,則目標(biāo)路由器并不能出借地址給源路由器。(5) 組織出借地址應(yīng)答數(shù)據(jù)包出借地址應(yīng)答數(shù)據(jù)包為一個(gè)包含出借序號(hào),借用序號(hào),被借用地址的 三元組,其中出借序號(hào)為一個(gè)每次自增l的值,該值初始化為0,當(dāng)組織 出借應(yīng)答數(shù)據(jù)包時(shí),將該值加1作為該次出借數(shù)據(jù)包的出借序號(hào);借用序 號(hào)為步驟(4)中,目標(biāo)路由器接收到的借用請(qǐng)求數(shù)據(jù)包中的借用序號(hào),被 借用目標(biāo)地址為步驟(4)選擇的被借用地址;被借用地址為步驟(4)選擇的 被借用地址,如果目標(biāo)路由器沒有未使用的空閑地址存在,則被借用地址 選擇一個(gè)不存在的網(wǎng)絡(luò)地址X,用以表示沒有空閑網(wǎng)絡(luò)地址可以出借。(6) 返回借用應(yīng)答數(shù)據(jù)包目標(biāo)路由器完成步驟(5)后,如果目標(biāo)路由器有未使用的空閑地址出 借,則維護(hù)一個(gè)出借地址表,該表中每條記錄表示一次網(wǎng)絡(luò)地址出借記錄, 目標(biāo)路由器將步驟(5)生成的借用應(yīng)答數(shù)據(jù)包插入出借地址表中;如果目 標(biāo)路由器沒有未使用的空閑地址,則不維護(hù)出借地址表;目標(biāo)路由器再將 步驟(5)生成的三元組返回給源路由器。(7) 接收借用應(yīng)答數(shù)據(jù)包源路由器在完成步驟(3)發(fā)出借用數(shù)據(jù)包申請(qǐng)后,進(jìn)入等待接收借用 應(yīng)答數(shù)據(jù)包的過程;如果源路由器接收到借用應(yīng)答數(shù)據(jù)包,該借用應(yīng)答數(shù)據(jù)包中的被借用 地址為不存在的網(wǎng)絡(luò)地址X時(shí),表示地址借用失敗,源路由器根據(jù)借用序 號(hào),找到借用地址臨時(shí)表中的相應(yīng)記錄,刪除該記錄,重新進(jìn)入步驟(l); 該借用應(yīng)答數(shù)據(jù)包中的被借用地址為存在的網(wǎng)絡(luò)地址時(shí),表示地址借用成 功,進(jìn)入步驟(8);如果源路由器沒有接收到借用應(yīng)答數(shù)據(jù)包,則表示目標(biāo)路由器并不存 在,則地址借用失敗,源路由器根據(jù)借用序號(hào),找到借用地址臨時(shí)表中的 相應(yīng)記錄,刪除該記錄,然后重新進(jìn)入步驟(l); (8)分配借用地址源路由器維護(hù)一個(gè)借用地址表,表中每條記錄表示一次網(wǎng)絡(luò)地址借用 成功的記錄。表中維護(hù)一個(gè)包含借用目標(biāo)路由器地址和被借用地址的二元 組,其中目標(biāo)路由器地址即借用目標(biāo)地址,被借用地址即步驟(7)接收 到的借用應(yīng)答數(shù)據(jù)包中的被借用地址,將二元組插入借用地址表中。根據(jù)借用應(yīng)答數(shù)據(jù)包中的借用序號(hào),找到借用地址臨時(shí)表中對(duì)應(yīng)的記 錄,刪除該記錄,并且將被借用地址分配給新節(jié)點(diǎn),新節(jié)點(diǎn)地址分配完成, 節(jié)點(diǎn)加入網(wǎng)絡(luò)成功。本發(fā)明中如果路由器節(jié)點(diǎn)有空閑的網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn),則選擇一 個(gè)地址分配給新節(jié)點(diǎn),分配方法采用成熟的現(xiàn)有技術(shù),具體是IX+Csfe》(丄丄(M-1) + 1,如果新節(jié)點(diǎn)類型為路由器 ,。、14c+C^^(丄》./ m + w, 如果新節(jié)點(diǎn)類型為終端設(shè)備其中A表示選擇得到的網(wǎng)絡(luò)地址,A表示父親路由器節(jié)點(diǎn)的網(wǎng)絡(luò)地 址,乙表示父親路由器節(jié)點(diǎn)的深度,"表示對(duì)應(yīng)設(shè)備類型是父親路由器的第/7個(gè)子節(jié)點(diǎn)。本發(fā)明中的樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方式通過網(wǎng)絡(luò)節(jié)點(diǎn)分布式的分配方 式,有效的減少了無(wú)線傳感器網(wǎng)絡(luò)中因?yàn)榈刂贩峙溥^程而產(chǎn)生的數(shù)據(jù)包傳輸?shù)膯栴},并且該方法中,路由器無(wú)需存儲(chǔ)地址分配表,無(wú)需類似于DHCP 服務(wù)器的集中式地址分配服務(wù)器等特點(diǎn),有效的節(jié)約了無(wú)線傳感器網(wǎng)絡(luò)節(jié) 點(diǎn)的存儲(chǔ)空間。本發(fā)明方法通過選擇借用、出借和分配網(wǎng)絡(luò)地址,產(chǎn)生一系列動(dòng)作。 通過8個(gè)動(dòng)作定義,節(jié)點(diǎn)即可在密度過高區(qū)域成功加入到網(wǎng)絡(luò)中。整個(gè)過 程中只有一些簡(jiǎn)單的計(jì)算和點(diǎn)對(duì)點(diǎn)的單播通信,節(jié)點(diǎn)開銷很低,整個(gè)過程 簡(jiǎn)單和高效,不僅增加了網(wǎng)絡(luò)實(shí)際容量,網(wǎng)絡(luò)結(jié)構(gòu)的自適應(yīng)性,而且提高 了網(wǎng)絡(luò)部署的靈活性,在實(shí)際應(yīng)用中極大方便了用戶對(duì)網(wǎng)絡(luò)的部署和配 置。這種網(wǎng)絡(luò)地址分配方式帶來的好處1、 網(wǎng)絡(luò)節(jié)點(diǎn)密度較高的情況下,超出了局部容納量,該網(wǎng)絡(luò)地址分配 方法可以使節(jié)點(diǎn)成功的加入網(wǎng)絡(luò)。2、 使用較小的通信代價(jià),使網(wǎng)絡(luò)地址得到了充分的利用,利用閑置的網(wǎng)絡(luò)地址,分配給網(wǎng)絡(luò)地址需求更多的區(qū)域,增加網(wǎng)絡(luò)的實(shí)際節(jié)點(diǎn)容納
圖l為本發(fā)明方法的流程圖;圖2為實(shí)施例中的一個(gè)發(fā)生6次借用的借用地址臨時(shí)表的內(nèi)容和結(jié)構(gòu)。圖3為實(shí)施例中的一個(gè)總共被借用5次被借用地址表的內(nèi)容和結(jié)構(gòu)。
具體實(shí)施方式
在結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明之前,首先對(duì)樹 型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方式作一詳細(xì)說明樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方式的一般形式為網(wǎng)絡(luò)中心協(xié)調(diào)器啟動(dòng)網(wǎng)絡(luò)后,確定樹形結(jié)構(gòu)最大深度丄"、路由器節(jié)點(diǎn)的最大子節(jié)點(diǎn)個(gè)數(shù)C/B和路由 器最大子路由器節(jié)點(diǎn)個(gè)數(shù)Ate。當(dāng)新節(jié)點(diǎn)申請(qǐng)加入網(wǎng)絡(luò)時(shí),新節(jié)點(diǎn)選擇其 信號(hào)覆蓋范圍內(nèi),樹型結(jié)構(gòu)深度最小的路由器節(jié)點(diǎn)作為其加入的父親節(jié) 點(diǎn),并且向選定的父路由器節(jié)點(diǎn)發(fā)送加入網(wǎng)絡(luò)申請(qǐng)。父路由器接收到加入 網(wǎng)絡(luò)申請(qǐng)后,根據(jù)自身所處樹型結(jié)構(gòu)的深度,以及子節(jié)點(diǎn)個(gè)數(shù),新節(jié)點(diǎn)設(shè)備類型,計(jì)算得到新節(jié)點(diǎn)的網(wǎng)絡(luò)地址,計(jì)算公式如下^ — jX+C鄉(xiāng)(".("—1) + 1, z/新節(jié)點(diǎn)為路由器節(jié)點(diǎn) ① "—+ Cs^p(丄,).i m + ", ^新節(jié)點(diǎn)為終端節(jié)點(diǎn)其中A表示父親路由器地址,/7表示第n個(gè)同設(shè)備類型的節(jié)點(diǎn)。父路由器計(jì)算完成網(wǎng)絡(luò)地址后,如果新節(jié)點(diǎn)的設(shè)備類型為路由器,則將網(wǎng)絡(luò)地址、當(dāng)前網(wǎng)絡(luò)深度、Zy/ 、 6fe和Afe返回給新節(jié)點(diǎn)。新節(jié)點(diǎn)收到返 回?cái)?shù)據(jù)后將父路由器的網(wǎng)絡(luò)深度加1作為自身的網(wǎng)絡(luò)深度,新節(jié)點(diǎn)被成功 的分配網(wǎng)絡(luò)地址,并且保存其所處樹型結(jié)構(gòu)的深度,以及子節(jié)點(diǎn)個(gè)數(shù);如 果新節(jié)點(diǎn)的設(shè)備類型為終端節(jié)點(diǎn),則父路由器返回網(wǎng)絡(luò)地址給新節(jié)點(diǎn),新 節(jié)點(diǎn)被成功分配網(wǎng)絡(luò)地址,加入網(wǎng)絡(luò)成功。以ZigBee技術(shù)的樹型結(jié)構(gòu)地址分配方式為例,對(duì)于ZigBee的中心協(xié) 調(diào)器開啟網(wǎng)絡(luò)之后,其確定了網(wǎng)絡(luò)的最大深度^/,最大子節(jié)點(diǎn)個(gè)數(shù)&和 最大路由器節(jié)點(diǎn)個(gè)數(shù)/to。確定這3個(gè)值之后,可以確定整個(gè)樹型結(jié)構(gòu)。 每個(gè)路由器的兒子節(jié)點(diǎn)的網(wǎng)絡(luò)地址將根據(jù)一定的規(guī)則計(jì)算得到,路由器節(jié) 點(diǎn)將計(jì)算得到的網(wǎng)絡(luò)地址,返回給兒子節(jié)點(diǎn),兒子節(jié)點(diǎn)就順利的完成了網(wǎng) 絡(luò)地址分配的過程。下面結(jié)合附圖和實(shí)施方法對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明為了以下描述的方便,定義幾個(gè)術(shù)語(yǔ)。申請(qǐng)加入網(wǎng)絡(luò)的新節(jié)點(diǎn),稱為新節(jié)點(diǎn)。接收到路由器節(jié)點(diǎn)發(fā)出的借用請(qǐng)求消息的路由器節(jié)點(diǎn),稱為借用目標(biāo) 路由器節(jié)點(diǎn)。借用目標(biāo)路由器節(jié)點(diǎn)被路由器節(jié)點(diǎn)借用的網(wǎng)絡(luò)地址,稱為借用地址值。參照?qǐng)D1,圖1描述了本發(fā)明的優(yōu)選實(shí)施例自修剪樹型結(jié)構(gòu)網(wǎng)絡(luò)地址 分配方法步驟的流程首先在步驟11和步驟12,路由器A (源路由器)接收到新節(jié)點(diǎn)X加入網(wǎng)絡(luò)后,根據(jù)樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法,判斷在其兒子節(jié)點(diǎn)上是否還 有節(jié)點(diǎn)可以按照樹形結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法進(jìn)行地址分配,若可以,則進(jìn)入步驟24直接選擇網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn)X。若無(wú)未使用的地址可供分 配,則路由器進(jìn)行樹型結(jié)構(gòu)的自修剪過程。進(jìn)入步驟13,路由器根據(jù)公式(2)計(jì)算得到借用目標(biāo)地址。將路由器 存儲(chǔ)的借用序號(hào)加l后,生成三元組(借用序號(hào),借用目標(biāo)地址,新節(jié)點(diǎn) 設(shè)備類型)。其中借用序號(hào)取路由器原借用序號(hào),將該值加l后作為該次借用序號(hào),借用序號(hào)初始化為0;借用目標(biāo)地址為計(jì)算得到的目標(biāo)地址;新節(jié)點(diǎn)設(shè)備類型分別為路由器和終端設(shè)備兩種,采用l個(gè)字符表示,R表 示路由器,E表示終端設(shè)備。每個(gè)三元組占總共用5字節(jié)的存儲(chǔ)空間,其 中借用序號(hào)占2字節(jié),借用目標(biāo)地址占2字節(jié),新節(jié)點(diǎn)設(shè)備類型占1字節(jié)。Z 'ra"《+l],若新節(jié)點(diǎn)類型為路由器二 (2)乞[c^;ko.陋^+i],若新節(jié)點(diǎn)類型為終端設(shè)備其中A^r表示計(jì)算得到的目標(biāo)地址,Z/z7表示樹型結(jié)構(gòu)網(wǎng)絡(luò)最大深度,2^/^表示生成隨機(jī)數(shù),6^h》計(jì)算公式如下'l + Cm.(Zw-d-l), 如果7& = 1C^(<H1 + Cm—麻—C附.^丄"-i (3)-5其他1—i m其中C/Z7表示最大子節(jié)點(diǎn)個(gè)數(shù),^7表示最大子路由器節(jié)點(diǎn)個(gè)數(shù),t/為 路由器節(jié)點(diǎn)當(dāng)前深度。進(jìn)入步驟14,將三元組信息插入借用地址臨時(shí)表中,借用地址臨時(shí) 表的內(nèi)存,采用動(dòng)態(tài)申請(qǐng)的方式,即當(dāng)有網(wǎng)絡(luò)地址借用發(fā)生時(shí),申請(qǐng)對(duì)應(yīng)的存儲(chǔ)空間存儲(chǔ)三元組信息。當(dāng)然每個(gè)三元組的存儲(chǔ)空間不局限于5字 節(jié),如IPv4的單個(gè)網(wǎng)絡(luò)地址長(zhǎng)度為4個(gè)字節(jié),則三元組所占用的存儲(chǔ)空 間將為7字節(jié)。同時(shí),注意到當(dāng)借用發(fā)生越多時(shí),借用地址臨時(shí)表消耗的 內(nèi)存也就越多。下文將參照?qǐng)D2,來說明借用地址臨時(shí)表的具體內(nèi)容和結(jié) 構(gòu)進(jìn)行詳細(xì)描述。圖2中總共有6個(gè)地址借用的記錄,該表中的記錄表示 該路由器總共發(fā)起了 6次的地址借用過程,并且6次借用過程都未完成。 表中每條記錄代表一次地址借用的申請(qǐng)過程,表中內(nèi)容根據(jù)借用序號(hào)作為 表的唯一字段進(jìn)行檢索。參照?qǐng)Dl,進(jìn)入步驟15,路由器A向路由器B發(fā)送借用請(qǐng)求消息,借 用請(qǐng)求消息通過網(wǎng)絡(luò)路由算法,消息被路由至搶占目標(biāo)路由器B。本發(fā)明 中不討論具體路由算法和路由過程。進(jìn)入步驟16,路由器B接收到借用地址請(qǐng)求消息,解析得到數(shù)據(jù)包 三元組消息的內(nèi)容。取得三元組(借用序號(hào),借用目標(biāo)地址,新節(jié)點(diǎn)設(shè)備 類型)各字段的值。進(jìn)入步驟17,根據(jù)借用地址請(qǐng)求消息中的新節(jié)點(diǎn)設(shè)備類型,判斷路 由器是否有對(duì)應(yīng)的未使用的空閑網(wǎng)絡(luò)地址,如新節(jié)點(diǎn)設(shè)備類型為路由器, 則判斷借用目標(biāo)路由器節(jié)點(diǎn)的子路由器節(jié)點(diǎn)個(gè)數(shù)是否達(dá)到幽。若有,則 進(jìn)入步驟18,選擇根據(jù)借用地址請(qǐng)求消息中的新節(jié)點(diǎn)設(shè)備類型等,選擇 出借地址,具體選擇過程由公式(1)示出。若無(wú)空閑網(wǎng)絡(luò)地址,則進(jìn)入 步驟19,路由器選擇一個(gè)不存在的網(wǎng)絡(luò)地址-l作為出借網(wǎng)絡(luò)地址,用以 表示沒有空閑網(wǎng)絡(luò)地址可以出借。進(jìn)入步驟20,進(jìn)行出借地址應(yīng)答消息組包過程。出借地址應(yīng)答數(shù)據(jù) 包為一個(gè)三元組(出借序號(hào),借用序號(hào),被借用地址),其中出借序號(hào)根 據(jù)原出借序號(hào)加1后作為該次出借序號(hào);借用序號(hào)為從借用地址請(qǐng)求數(shù)據(jù) 包中接收到的借用序號(hào);被借用地址為步驟18或步驟19得到的被借用地址。若被借用地址不為-1,則需路由器維護(hù)出借地址表,將三元組信息插入到該出借地址表中。參照?qǐng)D3,來說明出借地址表的具體內(nèi)容和結(jié)構(gòu)。 圖3中總共有5個(gè)地址借用的記錄,該表中的記錄表示該路由器總共被借 用5個(gè)網(wǎng)絡(luò)地址。表中內(nèi)容根據(jù)出借序號(hào)作為表的唯一字段進(jìn)行檢索。參照?qǐng)D1,進(jìn)入步驟21,判斷路由器是否接收到了返回消息。若接收 到了返回消息,進(jìn)入步驟22,路由器接收返回消息,并且根據(jù)借用目標(biāo) 路由器節(jié)點(diǎn)返回的被借用地址判斷借用是否成功。若被借用地址是-1,即 不存在的網(wǎng)絡(luò)地址,則表示借用目標(biāo)路由器節(jié)點(diǎn)無(wú)空閑地址可以出借;否 則借用網(wǎng)絡(luò)地址過程成功,進(jìn)入步驟23。進(jìn)入步驟23,路由器根據(jù)借用序號(hào),找到借用地址臨時(shí)表中對(duì)應(yīng)借 用臨時(shí)記錄,刪除該記錄。維護(hù)借用地址表,將借用目標(biāo)路由器地址和被 借用地址作為一條記錄,插入地址到借用地址表中。進(jìn)入步驟24,路由器將借用到的網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn),新節(jié)點(diǎn)加 入網(wǎng)絡(luò)成功。若沒有接收到返回消息,表示借用目標(biāo)路由器節(jié)點(diǎn)在網(wǎng)絡(luò)中不存在, 則進(jìn)入步驟25。路由器根據(jù)借用序號(hào),找到地址借用臨時(shí)表中對(duì)應(yīng)的記 錄,刪除該記錄。進(jìn)入步驟26,判斷地址自修剪過程是否已經(jīng)重復(fù)達(dá)到5次。若沒有 則,將重復(fù)次數(shù)加l,重新進(jìn)入步驟13;若已經(jīng)達(dá)到5次,則新節(jié)點(diǎn)加入 網(wǎng)絡(luò)失敗,返回加入網(wǎng)絡(luò)失敗的消息給新節(jié)點(diǎn)。
權(quán)利要求
1、一種自修剪式的樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法,當(dāng)一個(gè)新的節(jié)點(diǎn)準(zhǔn)備加入網(wǎng)絡(luò)時(shí),新節(jié)點(diǎn)探測(cè)周圍環(huán)境中的路由器節(jié)點(diǎn),并選擇其中一個(gè)路由器,向該路由器發(fā)送加入網(wǎng)絡(luò)申請(qǐng);如果該路由器節(jié)點(diǎn)有空閑的網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn),則選擇一個(gè)地址分配給新節(jié)點(diǎn),并將路由信息加入到路由表中,那么新節(jié)點(diǎn)得到網(wǎng)絡(luò)地址,成功加入網(wǎng)絡(luò);如果該路由器節(jié)點(diǎn)已經(jīng)沒有空閑地址可以提供給新節(jié)點(diǎn),則該路由器節(jié)點(diǎn)作為源路由器向網(wǎng)絡(luò)中的其他路由器借用網(wǎng)絡(luò)地址;其特征在于借用網(wǎng)絡(luò)地址的具體方法是(1)選取借用目標(biāo)網(wǎng)絡(luò)地址源路由器根據(jù)計(jì)算目標(biāo)地址算法生成借用目標(biāo)地址,具有借用目標(biāo)網(wǎng)絡(luò)地址的路由器節(jié)點(diǎn)為目標(biāo)路由器,計(jì)算目標(biāo)地址算法為其中Addr表示計(jì)算得到的目標(biāo)地址,Lm表示樹型結(jié)構(gòu)網(wǎng)絡(luò)最大深度,rand表示生成隨機(jī)數(shù),Cskip計(jì)算公式如下其中Cm表示最大子節(jié)點(diǎn)個(gè)數(shù),Rm表示最大子路由器節(jié)點(diǎn)個(gè)數(shù),d為路由器節(jié)點(diǎn)當(dāng)前深度;(2)組織借用數(shù)據(jù)包源路由器計(jì)算得到借用目標(biāo)地址后,源路由器組織借用數(shù)據(jù)包,借用數(shù)據(jù)包為一個(gè)包含借用序號(hào)、借用目標(biāo)地址、新節(jié)點(diǎn)設(shè)備類型的三元組,其中借用序號(hào)為由源路由器生成每次自增1的值,該值初始化為0,當(dāng)組織借用數(shù)據(jù)包時(shí),將該值加1作為該次借用數(shù)據(jù)包的借用序號(hào);借用目標(biāo)地址為步驟(1)計(jì)算得到的地址;新節(jié)點(diǎn)設(shè)備類型根據(jù)步驟(1)中新節(jié)點(diǎn)的類型,取值為路由器類型或終端設(shè)備類型;(3)發(fā)送借用數(shù)據(jù)包當(dāng)組織借用數(shù)據(jù)包完成之后,源路由器維護(hù)一個(gè)借用地址臨時(shí)表,該表中每條記錄表示一次網(wǎng)絡(luò)地址借用記錄,源路由器將步驟(2)生成的三元組信息插入到該臨時(shí)表中,然后向目標(biāo)路由器發(fā)出該借用數(shù)據(jù)包;(4)接收借用數(shù)據(jù)包當(dāng)目標(biāo)路由器接收到源路由器發(fā)出的借用請(qǐng)求數(shù)據(jù)包后,判斷自身是否擁有空閑地址,如果存在未使用的空閑地址,則選擇一個(gè)地址作為被借用地址;如果沒有未使用的空閑地址存在,則目標(biāo)路由器并不能出借地址給源路由器;(5)組織出借地址應(yīng)答數(shù)據(jù)包出借地址應(yīng)答數(shù)據(jù)包為一個(gè)包含出借序號(hào),借用序號(hào),被借用地址的三元組,其中出借序號(hào)為一個(gè)每次自增1的值,該值初始化為0,當(dāng)組織出借應(yīng)答數(shù)據(jù)包時(shí),將該值加1作為該次出借數(shù)據(jù)包的出借序號(hào);借用序號(hào)為步驟(4)中,目標(biāo)路由器接收到的借用請(qǐng)求數(shù)據(jù)包中的借用序號(hào),被借用目標(biāo)地址為步驟(4)選擇的被借用地址;被借用地址為步驟(4)選擇的被借用地址,如果目標(biāo)路由器沒有未使用的空閑地址存在,則被借用地址選擇一個(gè)不存在的網(wǎng)絡(luò)地址X,用以表示沒有空閑網(wǎng)絡(luò)地址可以出借;(6)返回借用應(yīng)答數(shù)據(jù)包目標(biāo)路由器完成步驟(5)后,如果目標(biāo)路由器有未使用的空閑地址出借,則維護(hù)一個(gè)出借地址表,該表中每條記錄表示一次網(wǎng)絡(luò)地址出借記錄,目標(biāo)路由器將步驟(5)生成的借用應(yīng)答數(shù)據(jù)包插入出借地址表中;如果目標(biāo)路由器沒有未使用的空閑地址,則不維護(hù)出借地址表;目標(biāo)路由器再將步驟(5)生成的三元組返回給源路由器;(7)接收借用應(yīng)答數(shù)據(jù)包源路由器在完成步驟(3)發(fā)出借用數(shù)據(jù)包申請(qǐng)后,進(jìn)入等待接收借用應(yīng)答數(shù)據(jù)包的過程;如果源路由器接收到借用應(yīng)答數(shù)據(jù)包,該借用應(yīng)答數(shù)據(jù)包中的被借用地址為不存在的網(wǎng)絡(luò)地址X時(shí),表示地址借用失敗,源路由器根據(jù)借用序號(hào),找到借用地址臨時(shí)表中的相應(yīng)記錄,刪除該記錄,重新進(jìn)入步驟(1);該借用應(yīng)答數(shù)據(jù)包中的被借用地址為存在的網(wǎng)絡(luò)地址時(shí),表示地址借用成功,進(jìn)入步驟(8);如果源路由器沒有接收到借用應(yīng)答數(shù)據(jù)包,則表示目標(biāo)路由器并不存在,則地址借用失敗,源路由器根據(jù)借用序號(hào),找到借用地址臨時(shí)表中的相應(yīng)記錄,刪除該記錄,然后重新進(jìn)入步驟(1);(8)分配借用地址源路由器維護(hù)一個(gè)借用地址表,表中每條記錄表示一次網(wǎng)絡(luò)地址借用成功的記錄;表中維護(hù)一個(gè)包含借用目標(biāo)路由器地址和被借用地址的二元組,其中目標(biāo)路由器地址即借用目標(biāo)地址,被借用地址即步驟(7)接收到的借用應(yīng)答數(shù)據(jù)包中的被借用地址,將二元組插入借用地址表中;根據(jù)借用應(yīng)答數(shù)據(jù)包中的借用序號(hào),找到借用地址臨時(shí)表中對(duì)應(yīng)的記錄,刪除該記錄,并且將被借用地址分配給新節(jié)點(diǎn),新節(jié)點(diǎn)地址分配完成,節(jié)點(diǎn)加入網(wǎng)絡(luò)成功。
全文摘要
本發(fā)明涉及一種自修剪式的樹型結(jié)構(gòu)網(wǎng)絡(luò)地址分配方法。本發(fā)明方法中如果被申請(qǐng)路由器節(jié)點(diǎn)有空閑的網(wǎng)絡(luò)地址分配給新節(jié)點(diǎn),那么新節(jié)點(diǎn)得到網(wǎng)絡(luò)地址,成功加入網(wǎng)絡(luò);如果沒有空閑地址可以提供給新節(jié)點(diǎn),則該路由器節(jié)點(diǎn)作為源路由器向網(wǎng)絡(luò)中的其他路由器借用網(wǎng)絡(luò)地址。具體借用網(wǎng)絡(luò)地址步驟是選取借用目標(biāo)網(wǎng)絡(luò)地址、組織借用數(shù)據(jù)包、發(fā)送借用數(shù)據(jù)包、接收借用數(shù)據(jù)包、組織出借地址應(yīng)答數(shù)據(jù)包、返回借用應(yīng)答數(shù)據(jù)包、接收借用應(yīng)答數(shù)據(jù)包和分配借用地址。本發(fā)明方法使用較小的通信代價(jià),使網(wǎng)絡(luò)地址得到了充分的利用,利用閑置的網(wǎng)絡(luò)地址,分配給網(wǎng)絡(luò)地址需求更多的區(qū)域,增加網(wǎng)絡(luò)的實(shí)際節(jié)點(diǎn)容納量。
文檔編號(hào)H04L12/56GK101330529SQ20081006326
公開日2008年12月24日 申請(qǐng)日期2008年7月29日 優(yōu)先權(quán)日2008年7月29日
發(fā)明者健 萬(wàn), 彪 周, 徐向華, 方淼奇 申請(qǐng)人:杭州電子科技大學(xué)