王 鑫,張文森,覃 琴
(1.桂林電子科技大學(xué) 計(jì)算機(jī)與信息安全學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 海洋信息工程學(xué)院,廣西 北海 536000)
當(dāng)前水下無(wú)線傳感器網(wǎng)絡(luò)路由主要挑戰(zhàn)依舊是傳感器節(jié)點(diǎn)攜帶能量有限,且充能難度大。水下無(wú)線傳感器網(wǎng)絡(luò)部署在水環(huán)境中,采用水聲通信,聲波信號(hào)衰減快、通信時(shí)延高[1],節(jié)點(diǎn)在水下充能困難[2],給無(wú)線傳感器網(wǎng)絡(luò)的應(yīng)用帶來(lái)極大的挑戰(zhàn)。近年來(lái),越來(lái)越多的機(jī)構(gòu)[3-5]和高校[6-10]研究者們致力于設(shè)計(jì)可靠、高效、負(fù)載均衡的節(jié)能路由協(xié)議[11]。文獻(xiàn)[12]提出經(jīng)典的DBR路由協(xié)議,節(jié)點(diǎn)通過(guò)深度信息轉(zhuǎn)發(fā)數(shù)據(jù)。文獻(xiàn)[13]在DBR基礎(chǔ)上進(jìn)行改進(jìn),提出基于分層的路由協(xié)議Layered-DBR,節(jié)點(diǎn)進(jìn)行一次信息廣播后,只允許指定深度范圍內(nèi)的節(jié)點(diǎn)進(jìn)行信息接收,以達(dá)到控制網(wǎng)絡(luò)副本的目的[14]。為了延長(zhǎng)DBR協(xié)議的網(wǎng)絡(luò)生存周期并平衡能量消耗,文獻(xiàn)[15]提出一種考慮剩余能量水平的能量有效路由協(xié)議EEDBR,在EEDBR協(xié)議中,通過(guò)比較節(jié)點(diǎn)深度信息和剩余能量的加權(quán)權(quán)重決定每個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)的優(yōu)先級(jí)。當(dāng)節(jié)點(diǎn)接收到廣播的數(shù)據(jù)包后,考慮深度和能量計(jì)算自身的權(quán)重值。文獻(xiàn)[16]和文獻(xiàn)[17]基于分簇對(duì)路由進(jìn)行研究。文獻(xiàn)[18]將強(qiáng)化學(xué)習(xí)應(yīng)用到路由算法中,提出了一種基于深度的Q-Learning機(jī)會(huì)路由協(xié)議EDORQ。文獻(xiàn)[19]提出一種基于蟻群優(yōu)化算法的水下無(wú)線創(chuàng)拿起網(wǎng)絡(luò)分簇路由算法,通過(guò)蟻群算法提高尋找最優(yōu)路徑效果。
上述這些路由協(xié)議都是基于DBR思想進(jìn)行改進(jìn),在路由過(guò)程中,所有的數(shù)據(jù)包都是從深度較深的節(jié)點(diǎn)向上轉(zhuǎn)發(fā)給深度較淺的節(jié)點(diǎn),沿著匯聚節(jié)點(diǎn)的方向發(fā)送數(shù)據(jù),很容易導(dǎo)致負(fù)載不均衡和能量消耗不均衡。本章針對(duì)水下無(wú)線傳感器網(wǎng)絡(luò)能量消耗不均衡和路由過(guò)程中過(guò)多冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)增加能耗的問(wèn)題,提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議(ESAFDBR, an energy-saving underwater opportunistic routing protocol with adjustable forwarding area)。該算法可以實(shí)現(xiàn)能量平衡和減少冗余節(jié)點(diǎn)轉(zhuǎn)發(fā)產(chǎn)生的能耗。在ESAFDBR中,通過(guò)劃分轉(zhuǎn)發(fā)區(qū)域,并根據(jù)鄰居節(jié)點(diǎn)密集程度自適應(yīng)調(diào)整轉(zhuǎn)發(fā)區(qū)域,有效抑制冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)。其次,考慮節(jié)點(diǎn)的深度、剩余能量和節(jié)點(diǎn)兩跳鄰域內(nèi)節(jié)點(diǎn)數(shù)計(jì)算加權(quán)值控制轉(zhuǎn)發(fā)節(jié)點(diǎn)的轉(zhuǎn)發(fā)優(yōu)先級(jí)。整體上實(shí)現(xiàn)負(fù)載均衡,均衡網(wǎng)絡(luò)節(jié)點(diǎn)能量消耗,從而提高整體網(wǎng)絡(luò)的生存周期。
ESAFDBR采用多匯聚節(jié)點(diǎn)(Sink)的水下無(wú)線傳感器網(wǎng)絡(luò)結(jié)構(gòu)模型,如圖1所示。

圖1 水下無(wú)線傳感器網(wǎng)絡(luò)結(jié)構(gòu)圖
水下無(wú)線傳感器網(wǎng)絡(luò)由可部署在水面和水下的節(jié)點(diǎn)組成。部署在水下的節(jié)點(diǎn)可分為錨定節(jié)點(diǎn)和中繼節(jié)點(diǎn),其中錨定節(jié)點(diǎn)固定在海洋等水底部,位于網(wǎng)絡(luò)最底層的用于采集數(shù)據(jù)的節(jié)點(diǎn),錨定節(jié)點(diǎn)一般發(fā)送數(shù)據(jù)不接受數(shù)據(jù)。中繼節(jié)點(diǎn)隨機(jī)分布在水中不同位置,配置有聲學(xué)調(diào)制解調(diào)器,既可以發(fā)送數(shù)據(jù)也可以接收數(shù)據(jù),通常擔(dān)任源節(jié)點(diǎn)和目的節(jié)點(diǎn)間通信的中繼者身份。部署在水面的節(jié)點(diǎn)通常稱為匯聚節(jié)點(diǎn),配置有聲學(xué)調(diào)制解調(diào)器和無(wú)線電調(diào)制解調(diào)器。匯聚節(jié)點(diǎn)可以控制從水下節(jié)點(diǎn)收發(fā)聲學(xué)信息,也可以發(fā)射和接收遠(yuǎn)程射頻信號(hào),以便與岸上基站進(jìn)行通信。匯聚節(jié)點(diǎn)是水下傳感器節(jié)點(diǎn)和陸地上基站中通信間的一個(gè)中繼節(jié)點(diǎn),收集到的數(shù)據(jù)可用于本地或者連接到另一個(gè)網(wǎng)絡(luò)用于某種特定目的[20]。由于信號(hào)在水中的衰減特性,在水下,聲學(xué)通信是最流行和使用最廣泛的通信介質(zhì)。匯聚節(jié)點(diǎn)可通過(guò)無(wú)線電等介質(zhì)與岸上基站通信。基站通過(guò)Internet或衛(wèi)星網(wǎng)絡(luò)將處理好的信息發(fā)送給終端用戶使用。假設(shè)錨定節(jié)點(diǎn)采集到數(shù)據(jù)后,向匯聚節(jié)點(diǎn)發(fā)送消息,只要消息順利到達(dá)匯聚節(jié)點(diǎn)后,都會(huì)成功傳送陸地基站。ESAFDBR只專注于將消息從錨定節(jié)點(diǎn)成功發(fā)送到匯聚節(jié)點(diǎn)的過(guò)程。
水下環(huán)境影響能量消耗和聲信號(hào)的傳播速度,本章節(jié)采用的是Stojanovic提出的典型水下信道傳播模型[21]。水聲信道在水下傳感器網(wǎng)絡(luò)中衰減模型可以表示為:
10logA(d,f)=k×10logd+d×logα(f)
(1)
其中:k是擴(kuò)散系數(shù),k的值可能是1,1.5和2,當(dāng)k=1時(shí)表示淺水區(qū)的圓柱性擴(kuò)展,當(dāng)k=1.5時(shí)為實(shí)際擴(kuò)展,當(dāng)k=2時(shí)意味著深水區(qū)域的球形擴(kuò)展。f為信號(hào)頻率,α(f)表示水環(huán)境的吸收系數(shù),其與信號(hào)頻率f的關(guān)系可以表示為:
(2)
由公式(2)可以得出,吸收系數(shù)α(f)隨著信號(hào)頻率f增加而增加,也就是說(shuō),頻率越高將會(huì)造成信號(hào)的衰減越嚴(yán)重,這也是為什么水聲信號(hào)在水中可用的帶寬有限的原因。公式(2)適用于高頻信號(hào),當(dāng)信號(hào)頻率是低頻信號(hào)時(shí),吸收α(f)與f可以使用如下公式表示:
(3)
水下信道噪聲由各種噪聲疊加,在水環(huán)境中影響比較嚴(yán)重的噪聲有湍流噪聲Nt(f)、船舶航運(yùn)噪聲Ns(f)、海浪噪聲Nw(f)和熱噪聲Nth(f),可以表示為:
N(f)=Nt(f)+Ns(f)+Nw(f)+Nth(f)
(4)
在水聲信道中,當(dāng)聲信號(hào)頻率為f,傳播距離為d出的接收器處信噪比可表示為:
SNR(f,d)=P(f)-A(d,f)-N(f)+DI
(5)
其中:P(f)表示發(fā)射器頻率為f的發(fā)射功率,A(d,f)為衰減,N(f)為噪聲,DI是方向性指數(shù),通過(guò)重定向水聽(tīng)器來(lái)避免噪聲的節(jié)點(diǎn)質(zhì)量。除此外,聲音調(diào)制解調(diào)器也會(huì)對(duì)水聲通信有影響,因?yàn)樗彩锹曇敉ǖ乐械慕M成部分。
傳統(tǒng)DBR路由協(xié)議路由過(guò)程中,所有的數(shù)據(jù)包都是從深度較深的節(jié)點(diǎn)向上轉(zhuǎn)發(fā)給深度較淺的節(jié)點(diǎn),沿著匯聚節(jié)點(diǎn)的方向發(fā)送數(shù)據(jù)。每個(gè)數(shù)據(jù)包都攜帶記錄發(fā)送該數(shù)據(jù)包節(jié)點(diǎn)的深度信息的字段,并且在每次發(fā)送信息的時(shí)候更新。接收節(jié)點(diǎn)計(jì)算與上一節(jié)點(diǎn)深度差,深度差越大該節(jié)點(diǎn)獲得的轉(zhuǎn)發(fā)權(quán)限優(yōu)先級(jí)越高。這很容易導(dǎo)致負(fù)載不均衡和能量消耗不均衡,因?yàn)樘幱谳^好位置的節(jié)點(diǎn)會(huì)被頻繁選為轉(zhuǎn)發(fā)節(jié)點(diǎn),容易陷入局部最優(yōu)。如圖2所示,接收到節(jié)點(diǎn)S1和S2轉(zhuǎn)發(fā)數(shù)據(jù)的節(jié)點(diǎn)中,A點(diǎn)都處于最佳轉(zhuǎn)發(fā)節(jié)點(diǎn)的位置,因此A節(jié)點(diǎn)會(huì)被頻繁選為轉(zhuǎn)發(fā)節(jié)點(diǎn)過(guò)度消耗能量。

圖2 傳統(tǒng)DBR路由策略
此外,在圖2中可以觀察到,當(dāng)A選做轉(zhuǎn)發(fā)節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),R1,R2,R3區(qū)域的節(jié)點(diǎn)都可以收到節(jié)點(diǎn)A的抑制作用,不會(huì)繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)包。而R4和R5區(qū)域內(nèi)的節(jié)點(diǎn)在等待時(shí)間結(jié)束后會(huì)繼續(xù)轉(zhuǎn)發(fā)接收到的數(shù)據(jù)包,因?yàn)樗鼈儾⒉辉诠?jié)點(diǎn)A的轉(zhuǎn)發(fā)范圍內(nèi),無(wú)法接收到節(jié)點(diǎn)A發(fā)送的抑制信號(hào)。這樣,造成冗余轉(zhuǎn)發(fā)而浪費(fèi)能量,若在節(jié)點(diǎn)分布稀疏區(qū)域,冗余轉(zhuǎn)發(fā)可以提高通信的可靠性,但是如果在密集區(qū)域內(nèi)就會(huì)造成多余的能量消耗。
本章提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議ESAFDBR,ESAFDBR不僅考慮了節(jié)點(diǎn)的深度信息和剩余能量信息,在傳輸過(guò)程中使網(wǎng)絡(luò)實(shí)現(xiàn)負(fù)載均衡。同時(shí)還考慮了兩跳節(jié)點(diǎn)鄰域信息,以此避免節(jié)點(diǎn)陷入局部最優(yōu)。為了減少冗余轉(zhuǎn)發(fā)增加能耗,ESAFDBR設(shè)計(jì)劃分轉(zhuǎn)發(fā)節(jié)點(diǎn)區(qū)域策略,將初始轉(zhuǎn)發(fā)區(qū)域劃分為Reuleaux三角形,利用Reuleaux三角形特性抑制冗余節(jié)點(diǎn),并且設(shè)計(jì)轉(zhuǎn)發(fā)區(qū)域可根據(jù)節(jié)點(diǎn)鄰域內(nèi)的節(jié)點(diǎn)密集程度自適應(yīng)調(diào)整,增強(qiáng)網(wǎng)絡(luò)的魯棒性和自適應(yīng)性。以下結(jié)構(gòu)介紹ESAFDBR的設(shè)計(jì)。
ESAFDBR包含3種數(shù)據(jù)的消息,分別為鄰居請(qǐng)求消息(NEIGHBOR INVITE),應(yīng)答消息(ACK)以及數(shù)據(jù)信息消息(DATA),每種消息類型通過(guò)數(shù)據(jù)包攜帶的數(shù)據(jù)類型ID字段區(qū)分,分別為00,01,10。在同一個(gè)水下傳感器網(wǎng)絡(luò)中,每個(gè)傳感器節(jié)點(diǎn)都有自身獨(dú)立的ID編號(hào),且不會(huì)有重復(fù)的ID編號(hào)。
鄰居請(qǐng)求信息用來(lái)查找鄰域信息,統(tǒng)計(jì)自身可用路由數(shù)量,其包括4個(gè)域,如圖3所示,數(shù)據(jù)類型ID為“00”,源節(jié)點(diǎn)ID表示發(fā)送鄰居請(qǐng)求消息的傳感器節(jié)點(diǎn)ID,該節(jié)點(diǎn)的深度和能量存放數(shù)據(jù)包節(jié)點(diǎn)深度和剩余能量字段中。包序號(hào)用來(lái)區(qū)別不同數(shù)據(jù)包,數(shù)據(jù)包的編號(hào)可由”數(shù)據(jù)類型ID+源節(jié)點(diǎn)ID+發(fā)送序號(hào)”組成。

圖3 鄰居請(qǐng)求和回應(yīng)數(shù)據(jù)包格式
應(yīng)答信息用來(lái)回應(yīng)鄰居請(qǐng)求信息。數(shù)據(jù)包格式與鄰居請(qǐng)求消息格式一樣,如圖3所示,其數(shù)據(jù)類型ID為“01”,源節(jié)點(diǎn)ID、節(jié)點(diǎn)深度和剩余能量字段的信息分別為自身節(jié)點(diǎn)ID、當(dāng)前深度和當(dāng)前剩余能量。包序號(hào)保留接收到請(qǐng)求的包序號(hào),表示此消息是回應(yīng)鄰居請(qǐng)求的消息。
數(shù)據(jù)信息格式包括7個(gè)域,如圖4所示。其數(shù)據(jù)類型ID為“10”,源節(jié)點(diǎn)ID為轉(zhuǎn)發(fā)節(jié)點(diǎn)ID,包序號(hào)為錨定節(jié)點(diǎn)首次發(fā)送時(shí)組成的序號(hào),中間轉(zhuǎn)發(fā)不能修改包序號(hào),以免同一節(jié)點(diǎn)重復(fù)多次轉(zhuǎn)發(fā)相同的數(shù)據(jù)包。源節(jié)點(diǎn)ID、深度和能量分別為發(fā)送數(shù)據(jù)包節(jié)點(diǎn)的ID,當(dāng)前深度和當(dāng)前剩余能量。轉(zhuǎn)發(fā)角是控制劃分轉(zhuǎn)發(fā)區(qū)域,有60,120和180三個(gè)值,當(dāng)為60值選擇使用Reuleaux三角形轉(zhuǎn)發(fā)區(qū)域,當(dāng)值為120時(shí)選擇使用張角為120度的錐形轉(zhuǎn)發(fā)區(qū)域,當(dāng)值為180時(shí),與DBR路由協(xié)議一樣所有接收到數(shù)據(jù)的節(jié)點(diǎn)都是潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)。

圖4 數(shù)據(jù)信息格式
ESAFDBR劃分轉(zhuǎn)發(fā)區(qū)域是為了更好地抑制冗余節(jié)點(diǎn),ESAFDBR將轉(zhuǎn)發(fā)區(qū)域節(jié)點(diǎn)盡量限制在S0區(qū)域,區(qū)域S0是一個(gè)Reuleaux三角形形狀的區(qū)域。如圖5所示,假設(shè)水下無(wú)線傳感器節(jié)點(diǎn)的通信范圍半徑為R。

圖5 ESAFDBR轉(zhuǎn)發(fā)區(qū)域的劃分
S0區(qū)域是由3個(gè)半徑為R的圓環(huán)相交得到的Reuleaux三角形。根據(jù)Reuleaux三角形的性質(zhì)[22],所劃分出來(lái)的萊洛三角形內(nèi)任意兩點(diǎn)的距離最大為R。所以,在圖中當(dāng)節(jié)點(diǎn)S發(fā)送數(shù)據(jù)是,區(qū)域內(nèi)節(jié)點(diǎn)A、B、C、D、E、F、G、H都可以接收到數(shù)據(jù)包,D、E因?yàn)樯疃刃∮赟的深度,判斷為沒(méi)有轉(zhuǎn)發(fā)權(quán)限丟棄數(shù)據(jù)包。C、F計(jì)算自身的位置并不在S0轉(zhuǎn)發(fā)區(qū)域內(nèi),不具備轉(zhuǎn)發(fā)節(jié)點(diǎn)的權(quán)限也丟棄數(shù)據(jù)包。A、B、G、H節(jié)點(diǎn)通過(guò)計(jì)算優(yōu)先級(jí),節(jié)點(diǎn)A優(yōu)先級(jí)較高,最先發(fā)送轉(zhuǎn)發(fā)數(shù)據(jù)包,當(dāng)節(jié)點(diǎn)A轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),B、G、H節(jié)點(diǎn)都能接收到數(shù)據(jù)包,因?yàn)锳、B、G、H都位于同一個(gè)半徑為R的Reuleaux三角形中,在這區(qū)域中任何節(jié)點(diǎn)都能接收到節(jié)點(diǎn)A發(fā)送的數(shù)據(jù)信息,因此都能收到節(jié)點(diǎn)A的抑制作用,從而也達(dá)到了限制冗余節(jié)點(diǎn)轉(zhuǎn)發(fā)的效果。
如圖6所示,主轉(zhuǎn)發(fā)區(qū)域是由3個(gè)半徑為R的圓組成的Reuleaux三角形,L1,L2,L3三條弧線可以使用式(6)表示:

圖6 Reuleaux轉(zhuǎn)發(fā)區(qū)域的數(shù)學(xué)模型
(6)
轉(zhuǎn)發(fā)區(qū)域內(nèi)節(jié)點(diǎn)都在這3條弧線圍成的區(qū)域內(nèi),可以通過(guò)如下式子表示:

(7)
當(dāng)鄰域內(nèi)水下傳感器節(jié)點(diǎn)密度大的時(shí)候,以控制冗余轉(zhuǎn)發(fā)為主要目的,可以使用式(7)確定Reuleaux三角形區(qū)域選擇轉(zhuǎn)發(fā)節(jié)點(diǎn)。當(dāng)鄰域內(nèi)水下傳感器節(jié)點(diǎn)比較稀疏時(shí),冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)數(shù)據(jù)有利于增強(qiáng)水下傳感器網(wǎng)絡(luò)的可靠性,此時(shí),ESAFDBR自適應(yīng)調(diào)整夾角,擴(kuò)大轉(zhuǎn)發(fā)區(qū)域,轉(zhuǎn)換為錐形轉(zhuǎn)發(fā)區(qū)域,如圖7所示,依次擴(kuò)大轉(zhuǎn)發(fā)區(qū)域夾角,分別為120°和180°。當(dāng)夾角變?yōu)?80°時(shí),則是DBR路由協(xié)議的路由策略。

圖7 錐形轉(zhuǎn)發(fā)區(qū)域
通過(guò)以下式子確定節(jié)點(diǎn)是否屬于錐形轉(zhuǎn)發(fā)區(qū)域內(nèi)的節(jié)點(diǎn),設(shè)H節(jié)點(diǎn)位置為(Hx,Hy),S節(jié)點(diǎn)位置為(Sx,Sy),三維坐標(biāo)同樣的計(jì)算方式,θ是存放在數(shù)據(jù)包中的數(shù)據(jù),通過(guò)鄰居信息收集時(shí)得到的鄰居節(jié)點(diǎn)數(shù)判斷鄰居節(jié)點(diǎn)的數(shù)量決定θ的值。當(dāng)θ=180時(shí),其實(shí)就變成DBR路由協(xié)議。
(8)
為了更好地選擇轉(zhuǎn)發(fā)節(jié)點(diǎn),ESAFDBR路由協(xié)議中,既考慮了節(jié)點(diǎn)的能量效率,還將節(jié)點(diǎn)信息的計(jì)算擴(kuò)展到了兩跳鄰域。計(jì)算當(dāng)前節(jié)點(diǎn)的深度、剩余能量以及擁有下一跳潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)的數(shù)量,通過(guò)這樣既可以平均能量消耗,實(shí)現(xiàn)負(fù)載均衡,還能提前預(yù)測(cè)空洞,避免節(jié)點(diǎn)遇到空洞信息。數(shù)據(jù)包轉(zhuǎn)發(fā)優(yōu)先級(jí)通過(guò)計(jì)算轉(zhuǎn)發(fā)等待時(shí)間HT(holding time)來(lái)實(shí)現(xiàn),節(jié)點(diǎn)轉(zhuǎn)發(fā)時(shí)間HT越小則越先轉(zhuǎn)發(fā)數(shù)據(jù)包。每個(gè)節(jié)點(diǎn)接收到數(shù)據(jù)包后,要先計(jì)算自己轉(zhuǎn)發(fā)等待時(shí)間HT,計(jì)算HT可以使用以下公式:
(9)
(10)
R為水下傳感器節(jié)點(diǎn)的傳輸范圍,Δd為當(dāng)前節(jié)點(diǎn)與上一跳節(jié)點(diǎn)的深度差,Ecur和Einit分別表示節(jié)點(diǎn)當(dāng)前剩余能量和節(jié)點(diǎn)初始能量,b表示當(dāng)前節(jié)點(diǎn)存在下一跳的節(jié)點(diǎn)數(shù),該數(shù)據(jù)在發(fā)出鄰居信息請(qǐng)求時(shí),統(tǒng)計(jì)收到的回應(yīng)消息,選擇并統(tǒng)計(jì)合適的節(jié)點(diǎn)數(shù),并存放在節(jié)點(diǎn)存儲(chǔ)器中,保持實(shí)時(shí)更新。λ1、λ2、λ3分別為深度差加權(quán)系數(shù)、剩余能量加權(quán)系數(shù)和下一跳鄰域節(jié)點(diǎn)數(shù)量加權(quán)系數(shù)。δ隨具體環(huán)境變化需要取值,如果選擇較小的δ,數(shù)據(jù)包的HT會(huì)增長(zhǎng),參與轉(zhuǎn)發(fā)的數(shù)據(jù)包能夠得到更好的抑制,能耗也會(huì)減少,但是節(jié)點(diǎn)間端到端的延時(shí)則會(huì)增加。τ的計(jì)算(10),c為聲音在水中的傳播速度,約等于1 500 m/s。
ESAFDBR路由協(xié)議具體實(shí)現(xiàn)步驟如下,分為鄰居節(jié)點(diǎn)請(qǐng)求信息處理流程和節(jié)點(diǎn)收到數(shù)據(jù)信息時(shí)的處理流程。
鄰居請(qǐng)求消息處理流程:
Step1:水下傳感器節(jié)點(diǎn)定期向鄰居廣播鄰居請(qǐng)求消息,數(shù)據(jù)類型ID+源節(jié)點(diǎn)ID+發(fā)送序號(hào)”組成的包序號(hào),以此區(qū)分?jǐn)?shù)據(jù)包。
Step2:收到鄰居請(qǐng)求消息的節(jié)點(diǎn),判斷數(shù)據(jù)包時(shí)鄰居請(qǐng)求類型數(shù)據(jù)包,然后對(duì)比自身深度如果小于數(shù)據(jù)包中深度,發(fā)送回應(yīng)消息,字段攜帶有原序列號(hào)。
Step3:發(fā)送節(jié)點(diǎn)收到回應(yīng)消息,更新鄰居潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)的個(gè)數(shù)。
節(jié)點(diǎn)收到數(shù)據(jù)包信息時(shí)處理流程如下:
Step1:判斷接收到的數(shù)據(jù)包文類型是否是數(shù)據(jù)包類型“10”,判斷自身是否是潛在轉(zhuǎn)發(fā)節(jié)點(diǎn),如果不是潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)則不參與轉(zhuǎn)發(fā)并丟棄該數(shù)據(jù)包。如果是潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)則查看鄰居潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)的個(gè)數(shù),如果為0則不參與轉(zhuǎn)發(fā)并丟棄該數(shù)據(jù)包,通過(guò)這種方式可以避免下一跳遇到空洞,如果鄰居潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)個(gè)數(shù)不為0,則繼續(xù)下面步驟。
Step2:判斷節(jié)點(diǎn)是否在轉(zhuǎn)發(fā)區(qū)域內(nèi),如果節(jié)點(diǎn)不在轉(zhuǎn)發(fā)區(qū)域內(nèi),則不具備轉(zhuǎn)發(fā)權(quán)限并丟棄該數(shù)據(jù)包,繼續(xù)等待下一個(gè)數(shù)據(jù)包。
Step3:如果節(jié)點(diǎn)位于轉(zhuǎn)發(fā)區(qū)域中,計(jì)算保活時(shí)間,然后等待發(fā)送。
Step4:等待期間內(nèi)如果收到該數(shù)據(jù)包的抑制信號(hào),該節(jié)點(diǎn)將放棄轉(zhuǎn)發(fā)該數(shù)據(jù)包,否則,等待時(shí)間結(jié)束后,將繼續(xù)轉(zhuǎn)發(fā)該數(shù)據(jù)包。
本實(shí)驗(yàn)將對(duì)ESAFDBR路由協(xié)議與現(xiàn)有路由協(xié)議DBR和EEDBR進(jìn)行性能比較和分析。
實(shí)驗(yàn)的仿真使用Matlab建立水下無(wú)線傳感器網(wǎng)絡(luò)仿真平臺(tái)進(jìn)行路由仿真。在實(shí)驗(yàn)仿真過(guò)程中,使用不同數(shù)量的傳感器節(jié)點(diǎn)(50~600個(gè))進(jìn)行實(shí)驗(yàn)仿真。每一次比較的網(wǎng)絡(luò)拓?fù)涠际请S機(jī)生布局的,3種路由策略作用于同樣拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)進(jìn)行仿真模擬。因?yàn)閷?shí)驗(yàn)可能會(huì)產(chǎn)生誤差,為了減少實(shí)驗(yàn)結(jié)果收誤差的影響,實(shí)驗(yàn)結(jié)果取30次仿真運(yùn)行的平均值。部分仿真參數(shù)如表1所示。

表1 實(shí)驗(yàn)參數(shù)設(shè)置
4.2.1 網(wǎng)絡(luò)生命周期
實(shí)驗(yàn)中定義的生命周期為第一個(gè)節(jié)點(diǎn)的能量消耗完時(shí),源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的輪次。如圖8所示,由于DBR深度較小的節(jié)點(diǎn)經(jīng)常被用于轉(zhuǎn)發(fā)數(shù)據(jù)包,因此這些節(jié)點(diǎn)的能量會(huì)很快就被耗盡了。本文定義第一個(gè)節(jié)點(diǎn)的能量完全耗盡時(shí),即在網(wǎng)絡(luò)中出現(xiàn)第一個(gè)節(jié)點(diǎn)死亡時(shí),源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的輪次數(shù)作為網(wǎng)絡(luò)的生命周期。如圖8所示,由于DBR選擇具有較小深度的節(jié)點(diǎn)來(lái)頻繁地傳輸數(shù)據(jù),導(dǎo)致這些節(jié)點(diǎn)能量被迅速耗盡而死亡。EEDBR和ESAFDBR采用了深度和能量加權(quán)的方式,在深度與能量共同加權(quán)的策略下,傳感器節(jié)點(diǎn)能夠有效地平衡網(wǎng)絡(luò)節(jié)點(diǎn)的能量消耗。因此,在傳感器節(jié)點(diǎn)將能更長(zhǎng)時(shí)間保持活動(dòng)狀態(tài)。此外,較低的冗余能耗是提高網(wǎng)絡(luò)壽命的另一個(gè)因素。DBR無(wú)法避免冗余的分組傳輸,具有相似深度的節(jié)點(diǎn)也具有相似的保持時(shí)間。因?yàn)檗D(zhuǎn)發(fā)節(jié)點(diǎn)通信范圍外的節(jié)點(diǎn)無(wú)法接收到抑制消息,在DBR和EEDBR中這些相同的分組被相繼發(fā)送。在ESAFDBR中,能夠大量限制這類傳感器節(jié)點(diǎn)參與轉(zhuǎn)發(fā),因?yàn)檗D(zhuǎn)發(fā)節(jié)點(diǎn)受到節(jié)點(diǎn)的深度和剩余能量限制外,通過(guò)轉(zhuǎn)發(fā)區(qū)域的劃分,能夠避免轉(zhuǎn)發(fā)節(jié)點(diǎn)傳輸范圍之外的節(jié)點(diǎn)繼續(xù)發(fā)送,隨著節(jié)點(diǎn)數(shù)量的增多,抑制冗余節(jié)點(diǎn)的效果優(yōu)于EEDBR和DBR。ESAFDBR轉(zhuǎn)發(fā)區(qū)域可隨著節(jié)點(diǎn)密度自適應(yīng)調(diào)整,能增強(qiáng)網(wǎng)絡(luò)的魯棒性。ESAFDBR考慮了兩跳的節(jié)點(diǎn)信息,有效避免遇到空洞情況,因此,總體上ESAFDBR比DBR和EEDBR的性能更優(yōu)。

圖8 網(wǎng)絡(luò)生命周期
4.2.2 能量消耗
本實(shí)驗(yàn)定義能量消耗通過(guò)數(shù)據(jù)包從源節(jié)點(diǎn)成功發(fā)送達(dá)到目標(biāo)節(jié)點(diǎn)期間,水下傳感器網(wǎng)路消耗的能量總量來(lái)估算。如前所述,DBR能量消耗比EEDBR和ESAFDBR更高,主要是因?yàn)樵谝惠喅晒D(zhuǎn)發(fā)過(guò)程中,DBR有過(guò)多的冗余節(jié)點(diǎn)參與了轉(zhuǎn)發(fā),ESAFDBR通過(guò)制定轉(zhuǎn)發(fā)區(qū)域有更好的抑制冗余節(jié)點(diǎn)的作用,所以圖中ESAFDBR能耗比DBR和EEDBR更少。3種方案能耗都隨著節(jié)點(diǎn)網(wǎng)絡(luò)的增加而增加,這是因?yàn)殡S著網(wǎng)絡(luò)節(jié)點(diǎn)的增加,更多處于相同深度,擁有相近保活時(shí)間的節(jié)點(diǎn)無(wú)法被抑制。相比之下,ESAFDBR通過(guò)設(shè)置轉(zhuǎn)發(fā)區(qū)域、深度和剩余能量加權(quán)、考慮兩跳節(jié)點(diǎn)避免空洞等方面更好地抑制冗余及轉(zhuǎn)發(fā)。如圖9所示,隨著網(wǎng)絡(luò)節(jié)點(diǎn)的增加,ESAFDBR能量消耗小于DBR和EEDBR的能量消耗。

圖9 能效消耗曲線
本文針對(duì)水下無(wú)線傳感器網(wǎng)絡(luò)能量消耗不均衡和路由過(guò)程中過(guò)多冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)增加能耗的問(wèn)題,提出提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議ESAFDBR。ESAFDBR不僅考慮了節(jié)點(diǎn)的深度信息和剩余能量信息,在傳輸過(guò)程中使網(wǎng)絡(luò)實(shí)現(xiàn)負(fù)載均衡。同時(shí)還考慮了下一跳可用鄰居節(jié)點(diǎn)數(shù),通過(guò)這樣避免節(jié)點(diǎn)陷入局部最優(yōu)。此外,為了在密集區(qū)域中減少冗余轉(zhuǎn)發(fā)減少能耗,ESAFDBR設(shè)計(jì)劃分轉(zhuǎn)發(fā)節(jié)點(diǎn)區(qū)域策略,將初始轉(zhuǎn)發(fā)區(qū)域劃分為Reuleaux三角形,利用Reuleaux三角形特性有效抑制冗余節(jié)點(diǎn),并且設(shè)計(jì)的轉(zhuǎn)發(fā)區(qū)域可根據(jù)節(jié)點(diǎn)鄰域內(nèi)的節(jié)點(diǎn)密集程度自適應(yīng)調(diào)整,增強(qiáng)網(wǎng)絡(luò)的魯棒性和自適應(yīng)性。通過(guò)仿真實(shí)驗(yàn)可以驗(yàn)證,ESAFDBR協(xié)議能夠有效地減少冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā),整體上提高網(wǎng)絡(luò)的生存周期。