賀道德,徐 計(jì),黃正鵬
(貴州工程應(yīng)用技術(shù)學(xué)院信息工程學(xué)院,畢節(jié) 551700)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks, WSN)是由無線傳感器組成的一種自組織無線通信網(wǎng)絡(luò),一般用于物聯(lián)網(wǎng)中的底層數(shù)據(jù)采集,特別是將其置于如礦產(chǎn)開采安全、軍事情報(bào)收集等領(lǐng)域[1]。WSN首先將大量無線傳感器節(jié)點(diǎn)置于需采集數(shù)據(jù)的網(wǎng)絡(luò)區(qū)域,然后使用相關(guān)組網(wǎng)通信技術(shù)以形成一個(gè)網(wǎng)絡(luò)系統(tǒng),最后在網(wǎng)絡(luò)區(qū)域外圍置匯聚節(jié)點(diǎn)(Sink)來接收并處理數(shù)據(jù)[2]。由于無線傳感器網(wǎng)絡(luò)的任務(wù)及環(huán)境需求,無線傳感器一般為能量有限的一次性設(shè)備;因此,其網(wǎng)絡(luò)能耗的性能指標(biāo)是學(xué)者們研究的重要方向之一[3-4]。分層無線傳感器網(wǎng)絡(luò)因其節(jié)能備受學(xué)者關(guān)注;它將網(wǎng)絡(luò)分成若干個(gè)簇,簇由簇首和子節(jié)點(diǎn)組成;網(wǎng)絡(luò)中的子節(jié)點(diǎn)采集數(shù)據(jù)后通過簇首間相互轉(zhuǎn)發(fā)至Sink;從而優(yōu)化了網(wǎng)絡(luò)通信量而節(jié)省了網(wǎng)絡(luò)能耗[5-6]。但這類分層網(wǎng)絡(luò)具有網(wǎng)絡(luò)初始化時(shí),選舉簇首的開銷大;且離Sink越近,簇首的負(fù)載越重;并且還存在簇首單點(diǎn)失效的問題,以及在數(shù)據(jù)傳輸時(shí),子節(jié)點(diǎn)采集到數(shù)據(jù)后,需通過多級(jí)簇首路由而導(dǎo)致時(shí)延大等問題。
為解決上述分層無線傳感器網(wǎng)絡(luò)因簇首帶來的網(wǎng)絡(luò)問題,本文從均衡簇首負(fù)載的角度提出基于簇首負(fù)載均衡的WSN分層路由協(xié)議CHLBRP(cluster head load balancing routing protocol);將從匯聚節(jié)點(diǎn)作用域的劃分、網(wǎng)絡(luò)的梯度分簇、移動(dòng)節(jié)點(diǎn)收發(fā)數(shù)據(jù)等方面來分析和設(shè)計(jì)協(xié)議;從而均衡網(wǎng)絡(luò)簇首的負(fù)載,降低網(wǎng)絡(luò)能耗,減少路由時(shí)延,解決網(wǎng)絡(luò)單點(diǎn)失效等問題。
圍繞降低網(wǎng)絡(luò)能耗,提高無線傳感器網(wǎng)絡(luò)的生存周期,國內(nèi)外學(xué)者展開了大量研究。Heinzelman等[7]提出了最具代表的無線傳感器網(wǎng)絡(luò)協(xié)議LEACH(low-energy adaptive cluster hierarchy);它將網(wǎng)絡(luò)分為若干個(gè)簇,普通節(jié)點(diǎn)通過簇首直接與網(wǎng)絡(luò)外圍的Sink節(jié)點(diǎn)進(jìn)行通信;該協(xié)議為降低網(wǎng)絡(luò)能耗且控制單點(diǎn)失效,采用周期隨機(jī)輪換選舉節(jié)點(diǎn)為簇首;但因簇首選舉的隨機(jī)性使得簇首性能不夠好且分布不均勻;另外,簇首的頻繁選舉也會(huì)產(chǎn)生大量額外開銷;簇首單跳與Sink通信使得離Sink越遠(yuǎn)的節(jié)點(diǎn),對(duì)射頻功率的要求越高且能耗速度越快。文獻(xiàn)[8]提出的LEACH-C協(xié)議是LEACH的改進(jìn)協(xié)議,它由Sink節(jié)點(diǎn)挑選位置最佳且能量充足的節(jié)點(diǎn)擔(dān)任簇首,但最優(yōu)簇首的界定是一個(gè)NP完全問題。文獻(xiàn)[9]提出了PEGASIS(power-efficient gathering in sensor information system)協(xié)議,它采用多級(jí)分簇的方式將網(wǎng)絡(luò)中的節(jié)點(diǎn)形成一個(gè)簇鏈,但由于通信時(shí)采用簇間多級(jí)接力,使得離Sink越近的節(jié)點(diǎn),其能耗越大,且其單點(diǎn)失效產(chǎn)生的后果非常嚴(yán)重。從上述研究來看,簇首的性能以及分簇的算法決定著分層WSN的性能,基于此,文獻(xiàn)[10]使用人工蜂群算法來選擇最優(yōu)簇首,首要考慮能量效率,并權(quán)衡網(wǎng)絡(luò)鏈接質(zhì)量、擴(kuò)展性及吞吐量來建立網(wǎng)絡(luò)模型;但仍然采用多跳路由算法使得各簇首的負(fù)載不均衡。文獻(xiàn)[11]則采用非均勻分簇思想設(shè)計(jì)最優(yōu)簇?cái)?shù),使用改進(jìn)的凝聚嵌套算法來分簇,從而降低網(wǎng)絡(luò)能耗,提高網(wǎng)絡(luò)生存周期;但非均勻分簇的簇首不一定是網(wǎng)絡(luò)中的最優(yōu)節(jié)點(diǎn);且其數(shù)據(jù)融合技術(shù)只考簇內(nèi)數(shù)據(jù)融合,而不考慮簇間融合;因此,不能從根本上解決簇首不均衡的問題。
針對(duì)上述研究問題,本文在文獻(xiàn)[12]中提出基于單向多匯聚節(jié)點(diǎn)的路由算法OWMSRP(one-way and multi-sink routing protocol),采用多Sink節(jié)點(diǎn)將網(wǎng)絡(luò)劃分為若干區(qū)域,然后利用RSSI(received signal strength indication)將網(wǎng)絡(luò)中的節(jié)點(diǎn)分級(jí),并確定Sink的作用域;當(dāng)數(shù)據(jù)傳輸時(shí),各簇首單跳將數(shù)據(jù)傳遞給所屬Sink節(jié)點(diǎn);但因采用簇首單跳與所屬Sink傳遞數(shù)據(jù),使得網(wǎng)絡(luò)大小受限,且整個(gè)網(wǎng)絡(luò)能耗較大。為降低網(wǎng)絡(luò)能耗,文獻(xiàn)[13]中提出DMNRP(distance and mobile node routing protocol)協(xié)議,采用移動(dòng)節(jié)點(diǎn)在簇首與Sink間傳遞數(shù)據(jù)從而降低簇首負(fù)載;但網(wǎng)絡(luò)采用移動(dòng)節(jié)點(diǎn)傳遞數(shù)據(jù)勢必會(huì)增大網(wǎng)絡(luò)延遲,從而降低路由效率。
結(jié)合文獻(xiàn)[12-13]的優(yōu)缺點(diǎn),本文從簇首負(fù)載均衡出發(fā),在考慮網(wǎng)絡(luò)路由效率的基礎(chǔ)上提出CHLBRP路由協(xié)議;在網(wǎng)絡(luò)觀測區(qū)域外圍放置多個(gè)Sink節(jié)點(diǎn),并采用RSSI劃分各匯聚節(jié)點(diǎn)的作用域;在數(shù)據(jù)傳輸時(shí),運(yùn)用移動(dòng)節(jié)點(diǎn)在簇首與Sink間收發(fā)數(shù)據(jù),從而降低簇首負(fù)載,提高網(wǎng)絡(luò)生存時(shí)間。
為實(shí)現(xiàn)簇首負(fù)載均衡的WSN分層路由協(xié)議CHLBRP,基于如下網(wǎng)絡(luò)架構(gòu)條件。
(1) 為便于研究,本網(wǎng)絡(luò)局限考慮在平面結(jié)構(gòu)進(jìn)行,即觀測區(qū)域?yàn)槎S平面,且無線傳感器節(jié)點(diǎn)隨機(jī)分布在觀測區(qū)域。
(2) 在觀測區(qū)域外圍均勻分布適量的Sink(匯聚節(jié)點(diǎn)),以確保觀測區(qū)中的傳感器節(jié)點(diǎn)能有一個(gè)合理的接收信號(hào)強(qiáng)度指示(RSSI)梯度。
(3) Sink節(jié)點(diǎn)可依據(jù)實(shí)際情況更換電池,即不考慮其能耗問題。
(4) 無線傳感器節(jié)點(diǎn)的通信模塊的能耗遠(yuǎn)遠(yuǎn)大于其計(jì)算模塊的能耗,即在進(jìn)行測試時(shí),僅考慮通信能耗,以降低研究復(fù)雜性。
(5) 在網(wǎng)絡(luò)中配額一定數(shù)量的移動(dòng)節(jié)點(diǎn)用于在Sink節(jié)點(diǎn)與普通無線傳感器節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳輸,且其可更換電池,即其為永久生存節(jié)點(diǎn)。
提出的基于多Sink與RSSI的梯度分簇分為兩個(gè)過程:確定Sink節(jié)點(diǎn)作用域和RSSI梯度量化標(biāo)識(shí)與簇的建立。為完成上述過程,需給出下列定義。
定義1從屬移動(dòng)節(jié)點(diǎn)集MobileSet,由匯聚節(jié)點(diǎn)維護(hù),包含的內(nèi)容為匯聚節(jié)點(diǎn)的從屬移動(dòng)節(jié)點(diǎn)的標(biāo)識(shí)MobileId等信息。
定義2移動(dòng)節(jié)點(diǎn)的所屬Sink域MPreSink,由移動(dòng)節(jié)點(diǎn)維護(hù),包含的內(nèi)容為各移動(dòng)節(jié)點(diǎn)的所屬Sink節(jié)點(diǎn)的標(biāo)識(shí)SinkId等信息。
定義3從屬節(jié)點(diǎn)集SubNodeSet,由匯聚節(jié)點(diǎn)維護(hù),包括四個(gè)域,分別為從屬節(jié)點(diǎn)標(biāo)識(shí)NodeId,從屬節(jié)點(diǎn)的剩余能量值NodeEN,到該從屬節(jié)點(diǎn)的距離值Dista,以及該節(jié)點(diǎn)是否為簇首的標(biāo)志IsCHD等內(nèi)容。
定義4所屬Sink域PreSink,由傳感器節(jié)點(diǎn)維護(hù),包括所屬匯聚節(jié)點(diǎn)的標(biāo)識(shí)SinkId,到該所屬Sink節(jié)點(diǎn)的距離值Dista等內(nèi)容。
定義5簇成員域MemberTable,包括成員節(jié)點(diǎn)標(biāo)識(shí)NodeId,成員節(jié)點(diǎn)的剩余能量值NodeEN等內(nèi)容。
定義6簇首能量閾值ENhold,各傳感器節(jié)點(diǎn)的剩余能量值超過此值才能競選簇首,該值由Sink節(jié)點(diǎn)定期計(jì)算并發(fā)布到其作用域,用于初始構(gòu)建網(wǎng)絡(luò)或網(wǎng)絡(luò)維護(hù)。
定義7節(jié)點(diǎn)層級(jí)NdLevl,本協(xié)議采用多匯聚節(jié)點(diǎn)下的分層結(jié)構(gòu)來構(gòu)建網(wǎng)絡(luò),各節(jié)點(diǎn)依據(jù)到其所屬Sink節(jié)點(diǎn)的距離劃分層次。任意節(jié)點(diǎn)的層級(jí)值1≤n.NdLevl≤MaxNdLevl,其中MaxNdLevl為最大層級(jí)值,n為節(jié)點(diǎn)標(biāo)識(shí)。本協(xié)議的層級(jí)值計(jì)算方法:n.NdLevl=[n.PreSink.Dista/ΔDista],其中ΔDista為設(shè)定的量化距離寬度,且最大距離Rmax=ΔDista*MaxNdLevl,最小距離Rmin=ΔDista。
2.2.1 確定Sink節(jié)點(diǎn)的作用域
在CHLBRP網(wǎng)絡(luò)的外圍均勻布局一定數(shù)量Sink節(jié)點(diǎn),并給每個(gè)匯聚節(jié)點(diǎn)配置一定數(shù)量的移動(dòng)節(jié)點(diǎn),用以在其所屬Sink節(jié)點(diǎn)的作用域內(nèi)傳遞數(shù)據(jù),從而形成多匯聚-移動(dòng)節(jié)點(diǎn)的傳感網(wǎng)絡(luò),網(wǎng)絡(luò)初始結(jié)構(gòu)如圖1所示。

圖1 CHLBRP網(wǎng)絡(luò)初始架構(gòu)圖Fig.1 Initial architecture of CHLBRP network
在圖1中有一矩形無線傳感網(wǎng)觀測區(qū),在該區(qū)域內(nèi)隨機(jī)分布一定量的無線傳感器節(jié)點(diǎn),并在其外圍四個(gè)邊上各分配一個(gè)Sink節(jié)點(diǎn);另外,給每個(gè)Sink分配一定量的移動(dòng)節(jié)點(diǎn),以構(gòu)成基于多Sink-移動(dòng)節(jié)點(diǎn)的無線傳感網(wǎng)絡(luò)拓?fù)洹T趯?shí)際應(yīng)用場景下,本協(xié)議支撐二維平面的任意觀測區(qū)域結(jié)構(gòu),只需在觀測區(qū)域外圍均勻分布若干數(shù)量的匯聚節(jié)點(diǎn)即可;而Sink的數(shù)量則依據(jù)其觀測區(qū)域的規(guī)模而定。
在CHLBRP網(wǎng)絡(luò)初態(tài)確定后,采用接收信號(hào)強(qiáng)度指示(RSSI)測出各無線傳感節(jié)點(diǎn)與各Sink節(jié)點(diǎn)之間的距離,并根據(jù)此距離值來為各傳感節(jié)點(diǎn)確定其所屬Sink節(jié)點(diǎn),以實(shí)現(xiàn)確定各Sink的作用域。為確定各Sink的作用域,各Sink節(jié)點(diǎn)發(fā)射信號(hào)到觀測區(qū)域,其參數(shù)為其節(jié)點(diǎn)標(biāo)識(shí)SinkId。各傳感器節(jié)點(diǎn)通過到各Sink的RSSI確定它們之間的距離,選擇距離最近的Sink為其所屬Sink節(jié)點(diǎn),并根據(jù)其收到的信號(hào)維護(hù)所屬Sink域;然后反饋信息給所屬Sink節(jié)點(diǎn),其內(nèi)容包括節(jié)點(diǎn)標(biāo)識(shí)NodeId、剩余能量值NodeEN等信息。當(dāng)Sink節(jié)點(diǎn)收到其從屬節(jié)點(diǎn)的信息后,用其信息維護(hù)從屬節(jié)點(diǎn)集,最終完成作用域的確定,具體算法如下所示。
(1)S. SinkHello(S.SinkId) to all node;
/*任意Sink節(jié)點(diǎn)S發(fā)送廣播消息SinkHello給觀測區(qū)域中的傳感器節(jié)點(diǎn),參數(shù)為Sink的節(jié)點(diǎn)標(biāo)識(shí)*/
(2)for(nin all node){/*任意傳感器節(jié)點(diǎn)n收到SinkHello后執(zhí)行下列操作*/
(3)n.PreSink.SinkId=Null;
n.PreSink.Dista=infinity;
/*初始化任意傳感器節(jié)點(diǎn)n的所屬Sink節(jié)點(diǎn)域?yàn)榭?將距離設(shè)置為infinity無窮大*/
(4)設(shè)置確定作用域的時(shí)間值為t;
(5)for(j=0;j<=t;j++){/*在時(shí)間t內(nèi),各傳感器節(jié)點(diǎn)確定其所屬Sink節(jié)點(diǎn)*/
(6)任意傳感器節(jié)點(diǎn)n獲得任意Sink節(jié)點(diǎn)S的SinkHello消息;
(7)運(yùn)用RSSI值計(jì)算S.Dista;/*Dista為節(jié)點(diǎn)n到Sink節(jié)點(diǎn)S的距離*/
(8)if(S.Dista (9){/*更新n節(jié)點(diǎn)的所屬Sink節(jié)點(diǎn)域*/ (10)n.PreSink.SinkId=S.SinkId; n.PreSink.Dista=S.Dista; } } (11)SinkNodePs=new SinkNode(); Ps=n.PreSink.SinkId; (12)n. nodeReply(n.nodeId,n.NodeEN,n.Dista) toPs (13)/*任意傳感器節(jié)點(diǎn)n單向發(fā)回應(yīng)消息給其所屬Sink節(jié)點(diǎn)Ps*/} (14)for(Psin all Sink){/*任意Sink節(jié)點(diǎn)Ps依據(jù)其從屬節(jié)點(diǎn)信息確定作用域*/ (15)SubNodek=new SubNode();/*新建k節(jié)點(diǎn)來記錄n的相關(guān)數(shù)據(jù)*/ (16)k.NodeId=n.NodeId;k.NodeEN=n.NodeEN;k.Dista=n.Dista; /*k節(jié)點(diǎn)記錄n的節(jié)點(diǎn)標(biāo)識(shí)、能量值和距離值*/ (17)k.IsCHD=0;/*所屬子節(jié)點(diǎn)初始加入時(shí)均以非簇首標(biāo)志進(jìn)行初始化*/ (18)Ps. addSub(k) toSubNodeSet;/*匯聚節(jié)點(diǎn)Ps將其從屬節(jié)點(diǎn)n的信息寫入其從屬節(jié)點(diǎn)集*/} 通過上述算法確定了CHLBRP網(wǎng)絡(luò)中各匯聚節(jié)點(diǎn)的作用域,各個(gè)傳感器節(jié)點(diǎn)依據(jù)RSSI選擇距離最近的匯聚節(jié)點(diǎn)為其所屬Sink,最終確立好作用域的網(wǎng)絡(luò)拓?fù)鋱D如圖2所示。 圖2 劃分作用域后的CHLBRP拓?fù)鋱DFig.2 CHLBRP topology after scope partition 圖2為劃分好作用域后的網(wǎng)絡(luò)拓?fù)鋱D,半圓弧為各Sink節(jié)點(diǎn)的作用域,在一般情況下,各作用域交匯處分布有傳感器節(jié)點(diǎn),但這些節(jié)點(diǎn)只有一個(gè)所屬Sink節(jié)點(diǎn);這是因?yàn)樵谒惴ㄟ\(yùn)行時(shí),依據(jù)先后順序來比較距離遠(yuǎn)近來確定其匯聚節(jié)點(diǎn)。 2.2.2 基于多Sink多層級(jí)的網(wǎng)絡(luò)分簇 確定好各匯聚節(jié)點(diǎn)的作用域后,各Sink節(jié)點(diǎn)應(yīng)在其作用域內(nèi)多級(jí)梯度分簇。為完成此任務(wù),①各Sink節(jié)點(diǎn)依據(jù)其從屬節(jié)點(diǎn)的能量值計(jì)算出簇首能量閾值,以確定能量值超過此值的節(jié)點(diǎn)才能選舉簇首;②對(duì)各節(jié)點(diǎn)進(jìn)行多級(jí)量化分層標(biāo)識(shí),各節(jié)點(diǎn)依據(jù)到其所屬Sink節(jié)點(diǎn)距離值Dista進(jìn)行量化分層級(jí);③在各層級(jí)內(nèi),依據(jù)其所屬Sink節(jié)點(diǎn)計(jì)算好的能量閾值進(jìn)行簇首選舉;④在完成簇首選舉后,各傳感器節(jié)點(diǎn)在同一層級(jí)內(nèi)就近加入各簇以完成基于多Sink多層級(jí)梯度分簇的任務(wù),具體算法如下所示。 (1)for(S=1;S<=Num;S++){/*該算法遍歷網(wǎng)絡(luò)中所有Sink節(jié)點(diǎn),Num為網(wǎng)絡(luò)中Sink節(jié)點(diǎn)總數(shù)*/ (2)S.ENhold=0;/*在算法運(yùn)行初期,將任意Sink節(jié)點(diǎn)的能量閾值賦初始值為0*/ (3)S.ΔDista=infinity;/* infinity為無窮大,ΔDista為量化分級(jí)的距離寬度*/ (4)for(i=0;i (5){/*遍歷Sink節(jié)點(diǎn)S的從屬節(jié)點(diǎn)集,計(jì)算ENhold與ΔDista */ (6)S.ENhold=S.ENhold+S.SubNodeSet[i].NodeEN; (7)if(S.ΔDista>S.SubNodeSet[i].Dista)S.ΔDista=S.SubNodeSet[i].Dista;} (8)S.ENhold=S.ENhold/i; /*計(jì)算出能量閾值為各子節(jié)點(diǎn)的能量平均值*/ (9)S.pushCluPar(S.SinkId,S.ENhold,S.ΔDista) toS.SubNodeSet; /*匯聚節(jié)點(diǎn)S發(fā)布它的能量閾值和距離量化寬度等建簇參數(shù)給其從屬節(jié)點(diǎn)*/ (10)for(nin all node){/*任意傳感器節(jié)點(diǎn)n收到Sink節(jié)點(diǎn)的建簇參數(shù)后,執(zhí)行下列操作 (11)n.IsCHD=0;/*初始設(shè)置節(jié)點(diǎn)n的簇首標(biāo)志為0*/ (12)if(S.SinkId==n.PreSink.SinkId){ (13)n.NdLevl=[n.PreSink.Dista/S.ΔDista];/*計(jì)算出節(jié)點(diǎn)n的層級(jí)值*/ (14)if(n.nodeEN>S.ENhold){/*若節(jié)點(diǎn)n能量值大于能量閾值,發(fā)布簇首競爭消息*/ (15)n.ClusterHD(n.NodeId,n.PreSink.SinkId,n.NdLevl,n.nodeEN)}} (16)設(shè)置簇首選舉計(jì)時(shí)器t1; (17)while(t1){/*簇首選舉*/ (18)收到任意其他結(jié)點(diǎn)n1的簇首競爭消息; (19)if(n.PreSink.SinkId==n1.PreSink.SinkId&&n.NdLevl==n1.NdLevl) (20){/*同一所屬匯聚節(jié)點(diǎn)且同一層級(jí)*/ (21)if(n.NodeEN (22)n.IsCHD=1;/*節(jié)點(diǎn)n競選簇首成功,設(shè)置簇首標(biāo)志為1*/ (23)n.myIsCHD(n.NodeId) ton.PreSink.SinkId/*告知其所屬Sink其為簇首*/ (24)n節(jié)點(diǎn)的所屬Sink節(jié)點(diǎn)修改關(guān)于n節(jié)點(diǎn)的簇首信息; (25)n.myIsCHD(n.NodeId,n.PreSink.SinkId,n.NdLevl) to other;/*發(fā)布建簇消息*/ (26)設(shè)置最大成員數(shù)maxMEM; (27)設(shè)置建簇周期計(jì)時(shí)器t2; (28)while(t2&&maxMEM){/*建簇*/ (29)接收到任意節(jié)點(diǎn)n2的入簇消息; (30)if(n.PreSink.SinkId==n2.PreSink.SinkId&&n.NdLevl==n2.NdLevl) (31){將n2節(jié)點(diǎn)加入到n簇首的簇成員域MemberTable; (32)n. ACK(n.NodeId) ton2;/*n節(jié)點(diǎn)給n2節(jié)點(diǎn)入簇回應(yīng)*/ (33)maxMEM--;}} (34)retrun 1;/*量化分簇結(jié)束*/}} 通過上述算法,網(wǎng)絡(luò)在不同Sink節(jié)點(diǎn)的作用域下進(jìn)行梯度分層建簇;在分簇過程中,將能量值最高的節(jié)點(diǎn)選舉為簇首,從而確保簇首節(jié)點(diǎn)的健壯性好;基于多Sink多層級(jí)的網(wǎng)絡(luò)分簇后,在Sink1作用域下的部分網(wǎng)絡(luò)拓?fù)鋱D如圖3所示。 圖3 Sink1作用域內(nèi)部分網(wǎng)絡(luò)拓?fù)鋱DFig.3 Partial network topology in the scope of sink1 從圖3中可以看出,在該作用域內(nèi),網(wǎng)絡(luò)被分為多個(gè)層次,各個(gè)層次都分布一定數(shù)量的簇;這是因?yàn)楸緟f(xié)議采用梯度分層的方式來建簇,從而確保簇的均勻分布;另外,簇的選舉限制在各Sink節(jié)點(diǎn)的作用域和各層級(jí)之內(nèi),從而大幅減少網(wǎng)絡(luò)通信量,降低網(wǎng)絡(luò)能耗。 本協(xié)議為降低簇首負(fù)載,不采用簇鏈方式多級(jí)接力傳輸數(shù)據(jù),而是采用在網(wǎng)絡(luò)中給各Sink節(jié)點(diǎn)配備一定數(shù)量的移動(dòng)節(jié)點(diǎn)在匯聚節(jié)點(diǎn)與簇首間傳遞數(shù)據(jù)。各移動(dòng)節(jié)點(diǎn)以其所屬Sink節(jié)點(diǎn)為中心,在其作用域內(nèi)來回移動(dòng);因此,各Sink節(jié)點(diǎn)需根據(jù)其作用域確定移動(dòng)節(jié)點(diǎn)的移動(dòng)半徑,具體算法如下所示。 (1)for(S=1;S<=Num;S++){/*該算法遍歷網(wǎng)絡(luò)中所有Sink節(jié)點(diǎn),Num為網(wǎng)絡(luò)中Sink節(jié)點(diǎn)總數(shù)*/ (2)S.MovRd=0;/*移動(dòng)半徑MovRd賦初始值為0*/ (3)for(i=0;i (4){ /*遍歷Sink節(jié)點(diǎn)S的子節(jié)點(diǎn)集,求移動(dòng)半徑*/ (5)if(S.MovRd (6)S.MovRd=S.SubNodeSet[i].Dista;} (7)S.pushMovRd (S.SinkId,S.MovRd) toS.MobileSet; /*匯聚節(jié)點(diǎn)S發(fā)布移動(dòng)半徑給其從屬移動(dòng)節(jié)點(diǎn)*/ (8)for(min allmobileNode){ /*任意傳感器節(jié)點(diǎn)m收到Sink節(jié)點(diǎn)的移動(dòng)半徑后,設(shè)置其移動(dòng)半徑*/ (9)if(S.SinkId==m.MPreSink.SinkId) (10)m.MovRd=S.MovRd;} 通過上述算法,各移動(dòng)節(jié)點(diǎn)將其移動(dòng)半徑設(shè)置為其所屬Sink節(jié)點(diǎn)作用域覆蓋的最大距離值,以確保移動(dòng)節(jié)點(diǎn)能覆蓋到其所屬匯聚節(jié)點(diǎn)內(nèi)的每一個(gè)傳感節(jié)點(diǎn)。移動(dòng)節(jié)點(diǎn)在傳輸數(shù)據(jù)時(shí),通過匹配傳感器節(jié)點(diǎn)的簇首標(biāo)志、所屬Sink的節(jié)點(diǎn)標(biāo)識(shí)等來判定是否接收其數(shù)據(jù),圖4為在Sink1的作用域內(nèi),移動(dòng)節(jié)點(diǎn)傳輸數(shù)據(jù)的拓?fù)鋱D。 圖4 移動(dòng)節(jié)點(diǎn)傳輸數(shù)據(jù)拓?fù)鋱DFig.4 Data transmission topology of mobile nodes 在圖4中,普通傳感器節(jié)點(diǎn)N首先將數(shù)據(jù)傳輸給其簇首節(jié)點(diǎn),簇首節(jié)點(diǎn)運(yùn)用文獻(xiàn)[14]的移動(dòng)節(jié)點(diǎn)定位算法,定位到移動(dòng)節(jié)點(diǎn)Mob,并將數(shù)據(jù)傳遞給該移動(dòng)節(jié)點(diǎn),再由Mob將數(shù)據(jù)傳輸給Sink1。由于此路由過程不需要簇首進(jìn)行簇間轉(zhuǎn)發(fā),且數(shù)據(jù)傳輸局限在Sink1的作用域內(nèi);從而降低了簇首的負(fù)載與網(wǎng)絡(luò)傳輸通信量,提高了網(wǎng)絡(luò)性能。 為驗(yàn)證本文提出協(xié)議的有效性,采用MATLAB平臺(tái)設(shè)計(jì)了仿真實(shí)驗(yàn)來分別測試LEACH、CHLBRP以及其先期協(xié)議OWMSRP和DMNRP。在實(shí)驗(yàn)時(shí),確定無線傳感器觀測區(qū)的場地大小為1 200 m×1 000 m,在該區(qū)域內(nèi)部隨機(jī)分配500個(gè)傳感器節(jié)點(diǎn);在測試CHLBRP協(xié)議時(shí),在觀測區(qū)外圍均勻分布4個(gè)匯聚節(jié)點(diǎn),并為每個(gè)Sink節(jié)點(diǎn)配備6個(gè)移動(dòng)節(jié)點(diǎn),移動(dòng)節(jié)點(diǎn)以Sink節(jié)點(diǎn)為中心成30°角旋轉(zhuǎn)分布,分6個(gè)方向以2 m/s的速度來回移動(dòng)。 首先,網(wǎng)絡(luò)能耗是無線傳感器網(wǎng)絡(luò)的一項(xiàng)非常重要的性能指標(biāo),因此,仿真實(shí)驗(yàn)測試了傳統(tǒng)的LEACH協(xié)議以及本協(xié)議和其先期協(xié)議OWMSRP、DMNRP的網(wǎng)絡(luò)能耗隨時(shí)間變化的情況,具體如圖5所示。 圖5 不同協(xié)議能耗比較Fig.5 Energy consumption comparison of different protocols 圖5展示了LEACH、OWMSRP、DMNRP和CHLBRP協(xié)議隨時(shí)間變化的能耗情況,可以看出,后三種協(xié)議因采用了相應(yīng)優(yōu)化算法,使其能耗明顯低于LEACH協(xié)議;而CHLBRP協(xié)議因結(jié)合OWMSRP和DMNRP相關(guān)技術(shù)的優(yōu)點(diǎn)來構(gòu)建網(wǎng)絡(luò),從而使其能耗得以進(jìn)一步降低。 另外,生命周期是無線傳感器網(wǎng)絡(luò)的另一重要性能指標(biāo);因此,提出的路由協(xié)議以均衡簇首負(fù)載并提高網(wǎng)絡(luò)生命周期為目標(biāo)。為驗(yàn)證協(xié)議的有效性,仿真實(shí)驗(yàn)測試了上述不同協(xié)議的生命周期并進(jìn)行了比較,具體如圖6所示。 圖6 不同協(xié)議生存時(shí)間比較Fig.6 Lifetime comparison of different protocols 從圖6可以看出,本文協(xié)議及先期協(xié)議的生存時(shí)間較傳統(tǒng)的LEACH協(xié)議有大幅提高,并且本文協(xié)議因結(jié)合先期協(xié)議的優(yōu)點(diǎn)而構(gòu)建,使得簇首負(fù)載問題得到進(jìn)一步的改善,從而提高了網(wǎng)絡(luò)生存時(shí)間。 本文協(xié)議從簇首節(jié)點(diǎn)負(fù)載均衡的角度出發(fā),采用在無線傳感器網(wǎng)絡(luò)的觀測區(qū)外圍均勻分布多個(gè)Sink節(jié)點(diǎn)的方法來構(gòu)建網(wǎng)絡(luò);并使用RSSI進(jìn)行各Sink節(jié)點(diǎn)的作用域劃分與節(jié)點(diǎn)的梯度分簇;采用移動(dòng)節(jié)點(diǎn)在各簇首節(jié)點(diǎn)與Sink節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳輸;從而達(dá)到克服簇首節(jié)點(diǎn)負(fù)載過重的問題,減少了網(wǎng)絡(luò)通信量,均衡了網(wǎng)絡(luò)中各簇首節(jié)點(diǎn)的負(fù)載,從而提高了網(wǎng)絡(luò)生存時(shí)間。下一步將重點(diǎn)研究移動(dòng)節(jié)點(diǎn)的移動(dòng)算法及將本文協(xié)議應(yīng)用于更復(fù)雜的網(wǎng)絡(luò)環(huán)境。

2.3 基于移動(dòng)節(jié)點(diǎn)的數(shù)據(jù)傳輸

3 仿真與性能分析


4 結(jié)論