楊 旭,王春佳2,李 莉
(1.云南機(jī)電職業(yè)技術(shù)學(xué)院 工業(yè)信息技術(shù)系,昆明 650203;2.云南師范大學(xué) 基礎(chǔ)教育集團(tuán),昆明 650092)
無(wú)線傳感器網(wǎng)絡(luò)(WSN)由大量低成本、低功耗和智能傳感器節(jié)點(diǎn)以及一個(gè)或多個(gè)sink或基站(BS)組成[1-2],這些節(jié)點(diǎn)體積小,可以執(zhí)行許多重要功能,包括事件感知、信息處理和數(shù)據(jù)通信[3-4],WSN已經(jīng)廣泛應(yīng)用與軍事應(yīng)用和民用場(chǎng)景[5-6],由于易于部署,擴(kuò)展傳輸范圍和自組織等各種優(yōu)點(diǎn),WSN已經(jīng)取代了傳統(tǒng)網(wǎng)絡(luò)。
WSN中傳感器節(jié)點(diǎn)成本低且能量有限,由于這種能量約束,有效的路由協(xié)議可以使得傳感器節(jié)點(diǎn)感測(cè)環(huán)境并生成有用的數(shù)據(jù)[7]。當(dāng)用戶或sink想要數(shù)據(jù)時(shí),將查詢發(fā)送到具有相關(guān)數(shù)據(jù)的傳感器節(jié)點(diǎn),傳感器節(jié)點(diǎn)通過(guò)中間節(jié)點(diǎn)將生成的數(shù)據(jù)發(fā)送給用戶或sink。由于這些傳感器節(jié)點(diǎn)具有有限的功率,它們可以容易地耗盡其能量,因此為了增加網(wǎng)絡(luò)壽命并減少延遲,需要從源節(jié)點(diǎn)到sink數(shù)據(jù)的有效路由[8]。隨著WSN技術(shù)的深入,平衡網(wǎng)絡(luò)負(fù)載、延長(zhǎng)網(wǎng)絡(luò)壽命和均衡網(wǎng)絡(luò)能量消耗已經(jīng)成為WSN研究的重點(diǎn)。
WSN中的分層路由是一個(gè)非常重要的主題,在過(guò)去十年中一直吸引著研究者,典型的分層路由稱為簇的路由,其中網(wǎng)絡(luò)被分成多個(gè)簇,低功耗自適應(yīng)集簇分層協(xié)議(Low-Energy Adaptive Clustering Hierarchy, LEACH)是一種典型的分層協(xié)議[9],目前許多協(xié)議都是在LEACH協(xié)議上進(jìn)行改進(jìn)得到的[10],如文獻(xiàn)[11]中提出的基于非均勻分簇的無(wú)線傳感器網(wǎng)絡(luò)分層路由協(xié)議,該協(xié)議以LEACH的分簇思想為基礎(chǔ),通過(guò)分層機(jī)制及競(jìng)爭(zhēng)機(jī)制選取簇首,使簇首節(jié)點(diǎn)分布更加合理,有效均衡節(jié)點(diǎn)的能量消耗。和文獻(xiàn)[12]中基于簇首移動(dòng)的無(wú)線傳感器網(wǎng)絡(luò)路由算法,該協(xié)議創(chuàng)新點(diǎn)是將簇首設(shè)置為移動(dòng)節(jié)點(diǎn),通過(guò)一定規(guī)則確定簇首每輪所需移動(dòng)到的最佳位置,實(shí)現(xiàn)節(jié)點(diǎn)能耗均衡。
最近關(guān)于WSN的研究有一部分為非典型分層路由,包括基于鏈的路由協(xié)議、基于樹(shù)的路由協(xié)議、基于網(wǎng)格的路由協(xié)議和基于區(qū)域的路由協(xié)議[13]?;趨^(qū)域的拓?fù)涫且环N最新結(jié)構(gòu),其中一些傳感器節(jié)點(diǎn)在特定區(qū)域中指定并充當(dāng)高層節(jié)點(diǎn)。高層節(jié)點(diǎn)執(zhí)行從普通節(jié)點(diǎn)的數(shù)據(jù)收集和到數(shù)據(jù)的數(shù)據(jù)傳輸任務(wù),可以根據(jù)負(fù)載平衡要求調(diào)整區(qū)域的大小[14]。在基于區(qū)域的路由協(xié)議中,網(wǎng)絡(luò)在不同區(qū)域之間劃分,傳感器節(jié)點(diǎn)是由他們所屬的地區(qū)確定。LBDD是一種典型的基于區(qū)域的路由協(xié)議[15],拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單,通信方式也很簡(jiǎn)單,但是這種拓?fù)浜苋菀讓?dǎo)致能量消耗不平衡,此外,在大區(qū)域網(wǎng)絡(luò)中,線路或條帶上的泛濫將導(dǎo)致節(jié)點(diǎn)的大量能量消耗。與LBDD不同,Railroad協(xié)議和ring由協(xié)議[16]首先從會(huì)合區(qū)域獲取sink的位置信息,然后將數(shù)據(jù)發(fā)送到sink,但是兩種路由協(xié)議在大型網(wǎng)絡(luò)中導(dǎo)致過(guò)多的開(kāi)銷(xiāo),而預(yù)期數(shù)據(jù)傳輸延遲高于LBDD。
為了解決現(xiàn)有基于區(qū)域路由協(xié)議中能量不均衡、網(wǎng)絡(luò)壽命問(wèn)題,本文提出一種基于簇的交會(huì)路由協(xié)議CRRP。在該協(xié)議中,整個(gè)傳感器網(wǎng)絡(luò)被劃分為若干交會(huì)區(qū)域,并且根據(jù)所駐留的區(qū)域?qū)?jié)點(diǎn)進(jìn)行分類(lèi)。在本文中,簇在分區(qū)區(qū)域內(nèi)構(gòu)建,然后根據(jù)節(jié)點(diǎn)程度進(jìn)行簇頭選擇,簇頭具有sink位置的信息,只要sink的位置發(fā)生變化,sink就會(huì)通過(guò)網(wǎng)關(guān)節(jié)點(diǎn)將其更新的信息發(fā)送到最近的簇頭。為了找到sink的位置,常規(guī)節(jié)點(diǎn)將請(qǐng)求消息發(fā)送到其最近的骨干節(jié)點(diǎn),并且該骨干節(jié)點(diǎn)將請(qǐng)求發(fā)送到簇頭。通過(guò)這種方式,常規(guī)節(jié)點(diǎn)了解了sink的位置,然后直接將數(shù)據(jù)發(fā)送到sink,當(dāng)簇頭開(kāi)始耗盡其能量時(shí),重新進(jìn)行新簇形成。本文協(xié)議會(huì)合區(qū)域劃分整個(gè)網(wǎng)絡(luò)區(qū)域并在傳感器節(jié)點(diǎn)之間分配網(wǎng)絡(luò)負(fù)載,可以增加網(wǎng)絡(luò)壽命。
在所提路由協(xié)議中,網(wǎng)絡(luò)由若干傳感器節(jié)點(diǎn)組成,傳感器節(jié)點(diǎn)本質(zhì)上是靜態(tài)的。網(wǎng)絡(luò)由交叉區(qū)域劃分,并在其中構(gòu)建簇,sink將其更新的位置信息發(fā)送到交叉區(qū)域內(nèi)的節(jié)點(diǎn),并且源節(jié)點(diǎn)從它們獲取sink的當(dāng)前位置并將數(shù)據(jù)發(fā)送到sink。
如圖1所示,在網(wǎng)絡(luò)中間構(gòu)造一些水平和垂直寬度的虛擬區(qū)域,其中心位于任意位置(u,v)。該虛擬結(jié)構(gòu)將網(wǎng)絡(luò)劃分為四個(gè)部分:1)水平左hl;2)水平右hr;3)垂直向上vu;4)垂直底部vb。這個(gè)交叉區(qū)域充當(dāng)交會(huì)區(qū)域,位于該會(huì)合區(qū)域內(nèi)的傳感器節(jié)點(diǎn)被稱為骨干節(jié)點(diǎn)。在該交叉區(qū)域中,基于節(jié)點(diǎn)和最大公共鄰接節(jié)點(diǎn)來(lái)構(gòu)造簇,每個(gè)簇由一個(gè)簇頭組成。這些簇頭負(fù)責(zé)將sink的位置發(fā)送到源節(jié)點(diǎn),并根據(jù)sink的當(dāng)前位置更新sink位置。該協(xié)議包括發(fā)現(xiàn)鄰居、形成交叉區(qū)域、簇的形成和簇頭創(chuàng)建,發(fā)現(xiàn)傳感器節(jié)點(diǎn)區(qū)域和最終數(shù)據(jù)傳輸。
圖1 交會(huì)區(qū)域和骨干節(jié)點(diǎn)的初始視圖
首先對(duì)WSN網(wǎng)絡(luò)模型進(jìn)行假設(shè):
1)部署后,所有傳感器節(jié)點(diǎn)都是靜止的。
2)Sink將改變其位置,即sink是移動(dòng)的。
3)對(duì)于sink的計(jì)算能力,電池消耗和存儲(chǔ)器沒(méi)有限制。
4)傳感器節(jié)點(diǎn)的能量有限。
5)所有傳感器節(jié)點(diǎn)均勻。
6)為每個(gè)節(jié)點(diǎn)分配一個(gè)唯一的ID。
7)網(wǎng)絡(luò)拓?fù)湓诖匦纬蓵r(shí)不受影響。
本文協(xié)議的整體流程見(jiàn)圖2所示。
圖2 本文協(xié)議流程圖
在鄰居發(fā)現(xiàn)的第一階段,起始節(jié)點(diǎn)廣播鄰居發(fā)現(xiàn)(NBR_D)控制包,包含節(jié)點(diǎn)的ID,節(jié)點(diǎn)位置及其剩余能量水平。在接收到該包時(shí),該節(jié)點(diǎn)鄰居表包含發(fā)送方節(jié)點(diǎn)的節(jié)點(diǎn)ID,其位置和剩余能量。如果表中已經(jīng)存在發(fā)送方節(jié)點(diǎn)的條目,則接收方丟棄該包;如果先前沒(méi)有廣播,sink也廣播相同的包。在此階段結(jié)束時(shí),所有節(jié)點(diǎn)都具有關(guān)于其一跳鄰居的信息。
算法1:鄰居發(fā)現(xiàn)。
Nb(x)任何節(jié)點(diǎn)x的鄰居集合,初始化為φ
Nbtable(x):由節(jié)點(diǎn)x維持的鄰居表初始化為φ
Erx:節(jié)點(diǎn)x的能量
NBR_Dx:如果傳感器節(jié)點(diǎn)x發(fā)送數(shù)據(jù)包,則節(jié)點(diǎn)x的鄰居發(fā)現(xiàn)控制數(shù)據(jù)包設(shè)置為真,初始化為false
Locx:節(jié)點(diǎn)x的位置
NBR_D:
Nb(x)=Nb(x)∪y;
用
if(NBR_Dx==false)then
NBR_Dx←true
1_rb(NBR_Dx,idx,Erx,Locx);
?廣播NBR_D包
else 丟棄包
endif
else丟棄包
endif
對(duì)于交會(huì)區(qū)域的生成與構(gòu)建,將其視為(Xmax,Ymax),并將區(qū)域的寬度視為w。因此wx和wy可以確定條帶的水平和垂直范圍。
(1)
(2)
傳感器節(jié)點(diǎn)使用它們的位置信息坐標(biāo)(x,y)來(lái)確定它們所屬的區(qū)域。例如,駐留在第一分區(qū)和第八分區(qū)中的節(jié)點(diǎn)將從hr與目的地(x,v)通信。以相同的方式,第二和第三分區(qū)的傳感器節(jié)點(diǎn)可以從vu與目的地(u,y)等進(jìn)行通信,其中(u,v)是網(wǎng)絡(luò)的中心。
算法2:節(jié)點(diǎn)區(qū)域發(fā)現(xiàn)。
θ=0,α=0
(u,v):網(wǎng)絡(luò)的中心
(x,y):節(jié)點(diǎn)的位置
令π=180°;C←(u,v)
?C定義了網(wǎng)絡(luò)的中心。
計(jì)算節(jié)點(diǎn)x與位置的新坐標(biāo)(x-u,y-u)和(x,y)
(A,B)←(x-u,y-u)
if (A>0&&B>0)thenα←θ
具有位置(x,y)的節(jié)點(diǎn)屬于第1區(qū)域,可以從hr與目標(biāo)位置進(jìn)行通信(x,v)。
具有位置(x,y)的節(jié)點(diǎn)屬于第2區(qū)域,可以從vu與目標(biāo)通信位置(u,y)。
end if
end if
if (A<0&&B>0) thenα←π-θ
具有位置(x,y)的節(jié)點(diǎn)屬于第3區(qū)域,可以從vu與目標(biāo)位置通信(u,y)。
位置為(x,y)的節(jié)點(diǎn)屬于第4區(qū)域,可以從hl節(jié)點(diǎn)與目標(biāo)位置通信(x,v)。
end if
end if
if (A<0&&B<0) thenα←π+θ
位置為(x,y)的節(jié)點(diǎn)屬于第5區(qū)域,可以從hl節(jié)點(diǎn)與目標(biāo)位置通信(x,v)。
位置為(x,y)的節(jié)點(diǎn)屬于第6區(qū)域,可以通過(guò)vb與目標(biāo)通信位置(u,y)。
end if
end if
if (A>0&&B<0) thenα←2π-θ
位置為(x,y)的節(jié)點(diǎn)屬于第7區(qū)域,可以通過(guò)vb與目標(biāo)位置進(jìn)行通信(u,y)。
位置為(x,y)的節(jié)點(diǎn)屬于第8區(qū)域,可以從hr與目標(biāo)位置進(jìn)行通信(x,v)。
end if
end if
通過(guò)以下步驟在集合區(qū)內(nèi)建立簇:
1) 簇形成機(jī)制由具有最高節(jié)點(diǎn)度的節(jié)點(diǎn)i發(fā)起;
2)在初始節(jié)點(diǎn)的單跳鄰居中,找出節(jié)點(diǎn)p,具有最大的公共鄰接。如果有多個(gè)節(jié)點(diǎn),則考慮ID最低的節(jié)點(diǎn);
3)節(jié)點(diǎn)i和p的一個(gè)跳鄰居中常見(jiàn)的節(jié)點(diǎn)屬于包括i和p的一個(gè)簇,節(jié)點(diǎn)i將被視為簇頭(CH);
4)具有最節(jié)點(diǎn)度的剩余節(jié)點(diǎn)i(發(fā)起節(jié)點(diǎn))的一跳鄰居為簇的形成開(kāi)始相同的進(jìn)程,并聲明自己為CH。
簇生成偽代碼見(jiàn)算法3。
算法3:簇的生成:
N:網(wǎng)絡(luò)中節(jié)點(diǎn)的總數(shù)
(Vi,Ei):節(jié)點(diǎn)i的連通矩陣
?Vi包含節(jié)點(diǎn)i和它的單跳鄰中
?Ei包含Vi中節(jié)點(diǎn)之間的雙向邊
i:發(fā)起節(jié)點(diǎn)
S(i):節(jié)點(diǎn)i的鄰居集
L(i):L(i)包含節(jié)點(diǎn)i的一個(gè)跳過(guò)鄰居節(jié)點(diǎn)
C(i):簇中元素集合,最初為空
N_C(i):不在簇中的節(jié)點(diǎn)集
i=maxargjdegree(Nj) ?j是任意節(jié)點(diǎn)
S(i)={j,(i,j)∈Ei},C(i)={i}While (L(i)≠φ)
發(fā)現(xiàn)p∈L(i)與最大|l(i)∩l(p)|
C(i)←[Ci∪{p}∪{j,{j,p}}∈Ei]
N_Ci←[Vi?Ci]
Endwhile
i=maxargidegree(N_Ci)
CH←i
對(duì)節(jié)點(diǎn)i重復(fù)步驟2
簇形成過(guò)程如圖3所示,假設(shè)節(jié)點(diǎn)1具有最大的節(jié)點(diǎn)度,因此啟動(dòng)了簇的形成過(guò)程。節(jié)點(diǎn)(2, 3, 4, 5, 6)是相鄰的節(jié)點(diǎn)。根據(jù)算法3,節(jié)點(diǎn)3應(yīng)該是節(jié)點(diǎn)p,因?yàn)樗c節(jié)點(diǎn)1的公共鄰域最大。所以節(jié)點(diǎn)(1, 2, 3, 4, 5)必須在一個(gè)簇中,節(jié)點(diǎn)1應(yīng)該是CH。
圖3 簇形成技術(shù)
在本文協(xié)議中,簇頭重選與新的簇形成一起發(fā)生,步驟為:
1)當(dāng)任何簇頭節(jié)點(diǎn)i開(kāi)始耗盡其能量時(shí),按照算法1得到簇內(nèi)具有最大公共鄰接的節(jié)點(diǎn);
2)節(jié)點(diǎn)將聲明為新的簇頭,并按照算法3生成新的簇。
在協(xié)議匯聚節(jié)點(diǎn)的這個(gè)階段,節(jié)點(diǎn)通過(guò)網(wǎng)關(guān)節(jié)點(diǎn)將其位置通知給簇頭節(jié)點(diǎn),集合點(diǎn)區(qū)域內(nèi)的所有簇頭都有關(guān)于sink位置的信息。當(dāng)sink移動(dòng)時(shí),將Beacon包廣播到其鄰居之后,sink選擇其鄰居之一將其位置信息中繼到集合區(qū)域內(nèi)最近的簇頭之一。sink借助傳感器節(jié)點(diǎn)區(qū)域發(fā)現(xiàn)機(jī)制或借助位置因子(LF)轉(zhuǎn)發(fā)數(shù)據(jù)。
令節(jié)點(diǎn)i想要從鄰居節(jié)點(diǎn)Nb(i)中選擇其中一個(gè)鄰居節(jié)點(diǎn),Eri是其剩余能量,LF(i)定義節(jié)點(diǎn)i的每個(gè)相鄰節(jié)點(diǎn)的位置因子。具有坐標(biāo)(xk,yk)的k∈Nb(i)具有殘余能量Erk,并且節(jié)點(diǎn)k距離目的地的Eucledian距離是Dk。
(3)
那么kth鄰居的LF(k)可以計(jì)算為:
(4)
(5)
next_nodei=max(LF(i))
(6)
其中:next_nodei是由節(jié)點(diǎn)i選擇的相鄰節(jié)點(diǎn)。
算法4:移動(dòng)sink管理:
Loc_sinkx:任何節(jié)點(diǎn)x都存儲(chǔ)sink位置信息
B_x:如果任何標(biāo)記為主干節(jié)點(diǎn)的節(jié)點(diǎn)x為真,初始化為false
sink_loc:sink的位置
Beacon:
?將BeaconReply包單播到sink
使用主干節(jié)點(diǎn)作為算法2中的骨干節(jié)點(diǎn)發(fā)送位置sink,匯聚節(jié)點(diǎn)轉(zhuǎn)發(fā)位置使用位置因子將包發(fā)送到節(jié)點(diǎn)z;
l_rf(Location,idsink,sink_loc,next_nodez);
?位置包被單排到選定位置節(jié)點(diǎn)z。
節(jié)點(diǎn)y或sink向節(jié)點(diǎn)x發(fā)送以下數(shù)據(jù)包。
Lacation:
if (idx==next_nodey)then
if (Loc_sinkx≠sink_loc) then
Loc_sinkx←sink_loc
if (B_x==true) then
x將sink信息發(fā)送給它的CH。
else 選擇距離目標(biāo)最近的節(jié)點(diǎn)z。
endif
else
丟棄包;
end if
else
丟棄包;
end if
一旦到達(dá)骨干節(jié)點(diǎn)的sink位置信息,就發(fā)送到其簇頭,然后該簇頭以相同的方式將其發(fā)送到其相鄰的簇頭,現(xiàn)在所有簇頭具有關(guān)于sink的新位置的信息。
Sink的位置信息在簇頭的幫助下到達(dá)常規(guī)節(jié)點(diǎn),當(dāng)常規(guī)節(jié)點(diǎn)想要傳輸數(shù)據(jù)時(shí),它應(yīng)該知道從集合區(qū)域內(nèi)的簇頭獲得新sink的位置。它通過(guò)使用位置因子選擇相鄰節(jié)點(diǎn)來(lái)發(fā)送Locreq的包,并且該相鄰節(jié)點(diǎn)將請(qǐng)求包轉(zhuǎn)發(fā)到其最近的骨干節(jié)點(diǎn)。 一旦到達(dá)骨干節(jié)點(diǎn),骨干節(jié)點(diǎn)就會(huì)將其轉(zhuǎn)發(fā)到其簇頭,簇頭已經(jīng)有了新的sink的位置信息,因此簇頭將sink位置信息轉(zhuǎn)發(fā)到常規(guī)傳感器節(jié)點(diǎn),如算法5所示。
算法5:sink位置恢復(fù)。
CH:具有sink位置
CHid:簇頭的id
Bx:如果任何節(jié)點(diǎn)是骨干節(jié)點(diǎn),則為真
sink_Loc:Sink的位置
next_nodex:任何下一個(gè)節(jié)點(diǎn)都由任何節(jié)點(diǎn)x選擇轉(zhuǎn)發(fā)該數(shù)據(jù)包
reversex:簇頭x選擇節(jié)點(diǎn)將sink的位置發(fā)送到請(qǐng)求的節(jié)點(diǎn)
Locreq節(jié)點(diǎn)從節(jié)點(diǎn)y∈Nbr(x)接收數(shù)據(jù)包
Locreq:
reversex←idy;
if (Bx==true)
Bx將Locreq轉(zhuǎn)發(fā)給它的CH。
lr(Locreply,CHid,sink_locreversex);
?響應(yīng)請(qǐng)求的節(jié)點(diǎn)。
else
?節(jié)點(diǎn)x使用位置因子選擇next_nodex
lr(Locreq,idx,next_nodex);
endif
else
丟棄包
endif
最后進(jìn)行數(shù)據(jù)傳輸,在從骨干節(jié)點(diǎn)傳感器節(jié)點(diǎn)獲得有關(guān)sink位置的信息之后,借助于相鄰節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)到sink。傳感器節(jié)點(diǎn)借助于位置因子,基于剩余能量和距離sink的最小距離來(lái)選擇相鄰節(jié)點(diǎn)。在接收數(shù)據(jù)時(shí),相鄰節(jié)點(diǎn)使用相同的技術(shù)將其轉(zhuǎn)發(fā)到其鄰居,重復(fù)相同的過(guò)程直到數(shù)據(jù)到達(dá)sink。
為驗(yàn)證本文CRRP協(xié)議有效性,將本文算法與現(xiàn)有其他算法進(jìn)行比較,仿真實(shí)驗(yàn)環(huán)境為MATLAB R2013b,基于表1中所示的參數(shù)來(lái)執(zhí)行仿真實(shí)驗(yàn)。
表1 仿真實(shí)驗(yàn)參數(shù)
傳感器節(jié)點(diǎn)發(fā)送控制包以構(gòu)建會(huì)聚區(qū)域并管理匯聚移動(dòng)性,圖4中給出了不同協(xié)議的具有不同sink速度的控制包的平均能耗。將本文協(xié)議與現(xiàn)有其他協(xié)議進(jìn)行比較,包括Rendezvous路由協(xié)議[17],LBDD路由協(xié)議,Railroad路由協(xié)議和Ring路由協(xié)議。
圖4 控制數(shù)據(jù)包開(kāi)銷(xiāo)
如圖所示,與其他協(xié)議相比,本文協(xié)議的控制包開(kāi)銷(xiāo)非常少,少于其他協(xié)議,這是因?yàn)楸疚膮f(xié)議中,會(huì)合區(qū)域與源或sink之間的平均距離小于其他協(xié)議,且在本文協(xié)議中只有部分高層節(jié)點(diǎn)(即簇頭)參與到發(fā)送sink位置到源節(jié)點(diǎn)的主要任務(wù)中,而源節(jié)點(diǎn)通過(guò)建立有效的路由將數(shù)據(jù)發(fā)送到sink,這種方法將有助于降低能耗。而在LBDD中,內(nèi)聯(lián)節(jié)點(diǎn)存儲(chǔ)來(lái)自源節(jié)點(diǎn)的數(shù)據(jù),當(dāng)該內(nèi)聯(lián)節(jié)點(diǎn)收到查詢時(shí),它會(huì)將數(shù)據(jù)發(fā)送到sink,這會(huì)導(dǎo)致控制數(shù)據(jù)包開(kāi)銷(xiāo)增加。在RailRoad路由協(xié)議中,站點(diǎn)處的元數(shù)據(jù)存儲(chǔ)過(guò)程和從站點(diǎn)檢索sink位置的過(guò)程需要控制包交換。在Ring路由協(xié)議中,所有環(huán)節(jié)點(diǎn)都存儲(chǔ)sink的位置,隨著網(wǎng)絡(luò)操作的進(jìn)行,它需要交換控制包來(lái)修復(fù)環(huán),因此環(huán)長(zhǎng)度增加,導(dǎo)致更多的能量消耗。Rendezvous路由協(xié)議在交會(huì)區(qū)域內(nèi)保持樹(shù)來(lái)發(fā)送數(shù)據(jù),控制包需要根據(jù)sink位置來(lái)設(shè)置鏈路。隨著速度的增加,導(dǎo)致控制數(shù)據(jù)包開(kāi)銷(xiāo)增加。各種協(xié)議的每個(gè)節(jié)點(diǎn)的總能量消耗如圖5所示。
圖5 平均能耗
可以觀察到,由于更大的控制包開(kāi)銷(xiāo),LBDD的能量消耗最高,其存儲(chǔ)來(lái)自源節(jié)點(diǎn)的數(shù)據(jù),并在會(huì)合區(qū)域中淹沒(méi)sink的查詢,隨著sink速度的增加,LBDD的能量消耗近似線性增長(zhǎng)。Rendezvous協(xié)議不需要sink位置,但是平均路徑長(zhǎng)度高于RailRoad協(xié)議,Ring路由協(xié)議總能量根據(jù)sink速度而增加。本文協(xié)議中,源和sink之間的平均距離幾乎與RailRoad和Ring路由協(xié)議相同,由于較少的控制包開(kāi)銷(xiāo),使得本文所提協(xié)議能耗少于現(xiàn)有其他協(xié)議。
每個(gè)節(jié)點(diǎn)的能量消耗和傳感器節(jié)點(diǎn)之間的不平衡負(fù)載影響網(wǎng)絡(luò)壽命,在圖6中給出了不同協(xié)議之間的網(wǎng)絡(luò)壽命性能,可以看出本文協(xié)議的網(wǎng)絡(luò)壽命大于其他協(xié)議的網(wǎng)絡(luò)壽命,原因是本文協(xié)議消耗更少的控制包,平衡傳感器節(jié)點(diǎn)之間的負(fù)載,并遵循用于數(shù)據(jù)傳輸?shù)淖罴崖酚伞?/p>
圖6 網(wǎng)絡(luò)壽命
在本文中,提出了一種基于簇的會(huì)合路由協(xié)議CRRP,其中在會(huì)合區(qū)域內(nèi)構(gòu)建簇以實(shí)現(xiàn)可擴(kuò)展性并維持網(wǎng)絡(luò)負(fù)載,當(dāng)傳感器節(jié)點(diǎn)想要將數(shù)據(jù)傳輸?shù)絪ink時(shí),從該會(huì)合區(qū)域獲取sink的位置信息,然后將數(shù)據(jù)發(fā)送到sink。所有骨干節(jié)點(diǎn)都不參與sink位置檢測(cè),只有簇頭參與到發(fā)送sink位置到源節(jié)點(diǎn)的主要任務(wù)中,能夠使得WSN降低能耗和延長(zhǎng)網(wǎng)絡(luò)壽命。將本文協(xié)議與現(xiàn)有LBDD協(xié)議、Ring Routing協(xié)議、RailRoad和Rendezvous協(xié)議進(jìn)行比較,仿真實(shí)驗(yàn)表明,本文協(xié)議在能耗和網(wǎng)絡(luò)壽命性能方面優(yōu)于其他現(xiàn)有協(xié)議,表明本文方法的可行性與有效性。