王 鑫,張文森,覃 琴
(1.桂林電子科技大學(xué) 計算機(jī)與信息安全學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 海洋信息工程學(xué)院,廣西 北海 536000)
當(dāng)前水下無線傳感器網(wǎng)絡(luò)路由主要挑戰(zhàn)依舊是傳感器節(jié)點(diǎn)攜帶能量有限,且充能難度大。水下無線傳感器網(wǎng)絡(luò)部署在水環(huán)境中,采用水聲通信,聲波信號衰減快、通信時延高[1],節(jié)點(diǎn)在水下充能困難[2],給無線傳感器網(wǎng)絡(luò)的應(yīng)用帶來極大的挑戰(zhàn)。近年來,越來越多的機(jī)構(gòu)[3-5]和高校[6-10]研究者們致力于設(shè)計可靠、高效、負(fù)載均衡的節(jié)能路由協(xié)議[11]。文獻(xiàn)[12]提出經(jīng)典的DBR路由協(xié)議,節(jié)點(diǎn)通過深度信息轉(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]。為了延長DBR協(xié)議的網(wǎng)絡(luò)生存周期并平衡能量消耗,文獻(xiàn)[15]提出一種考慮剩余能量水平的能量有效路由協(xié)議EEDBR,在EEDBR協(xié)議中,通過比較節(jié)點(diǎn)深度信息和剩余能量的加權(quán)權(quán)重決定每個節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)的優(yōu)先級。當(dāng)節(jié)點(diǎn)接收到廣播的數(shù)據(jù)包后,考慮深度和能量計算自身的權(quán)重值。文獻(xiàn)[16]和文獻(xiàn)[17]基于分簇對路由進(jìn)行研究。文獻(xiàn)[18]將強(qiáng)化學(xué)習(xí)應(yīng)用到路由算法中,提出了一種基于深度的Q-Learning機(jī)會路由協(xié)議EDORQ。文獻(xiàn)[19]提出一種基于蟻群優(yōu)化算法的水下無線創(chuàng)拿起網(wǎng)絡(luò)分簇路由算法,通過蟻群算法提高尋找最優(yōu)路徑效果。
上述這些路由協(xié)議都是基于DBR思想進(jìn)行改進(jìn),在路由過程中,所有的數(shù)據(jù)包都是從深度較深的節(jié)點(diǎn)向上轉(zhuǎn)發(fā)給深度較淺的節(jié)點(diǎn),沿著匯聚節(jié)點(diǎn)的方向發(fā)送數(shù)據(jù),很容易導(dǎo)致負(fù)載不均衡和能量消耗不均衡。本章針對水下無線傳感器網(wǎng)絡(luò)能量消耗不均衡和路由過程中過多冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)增加能耗的問題,提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議(ESAFDBR, an energy-saving underwater opportunistic routing protocol with adjustable forwarding area)。該算法可以實現(xiàn)能量平衡和減少冗余節(jié)點(diǎn)轉(zhuǎn)發(fā)產(chǎn)生的能耗。在ESAFDBR中,通過劃分轉(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ù)計算加權(quán)值控制轉(zhuǎn)發(fā)節(jié)點(diǎn)的轉(zhuǎn)發(fā)優(yōu)先級。整體上實現(xiàn)負(fù)載均衡,均衡網(wǎng)絡(luò)節(jié)點(diǎn)能量消耗,從而提高整體網(wǎng)絡(luò)的生存周期。
ESAFDBR采用多匯聚節(jié)點(diǎn)(Sink)的水下無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)模型,如圖1所示。
圖1 水下無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)圖
水下無線傳感器網(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)器和無線電調(diào)制解調(diào)器。匯聚節(jié)點(diǎn)可以控制從水下節(jié)點(diǎn)收發(fā)聲學(xué)信息,也可以發(fā)射和接收遠(yuǎn)程射頻信號,以便與岸上基站進(jìn)行通信。匯聚節(jié)點(diǎn)是水下傳感器節(jié)點(diǎn)和陸地上基站中通信間的一個中繼節(jié)點(diǎn),收集到的數(shù)據(jù)可用于本地或者連接到另一個網(wǎng)絡(luò)用于某種特定目的[20]。由于信號在水中的衰減特性,在水下,聲學(xué)通信是最流行和使用最廣泛的通信介質(zhì)。匯聚節(jié)點(diǎn)可通過無線電等介質(zhì)與岸上基站通信?;就ㄟ^Internet或衛(wèi)星網(wǎng)絡(luò)將處理好的信息發(fā)送給終端用戶使用。假設(shè)錨定節(jié)點(diǎn)采集到數(shù)據(jù)后,向匯聚節(jié)點(diǎn)發(fā)送消息,只要消息順利到達(dá)匯聚節(jié)點(diǎn)后,都會成功傳送陸地基站。ESAFDBR只專注于將消息從錨定節(jié)點(diǎn)成功發(fā)送到匯聚節(jié)點(diǎn)的過程。
水下環(huán)境影響能量消耗和聲信號的傳播速度,本章節(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時表示淺水區(qū)的圓柱性擴(kuò)展,當(dāng)k=1.5時為實際擴(kuò)展,當(dāng)k=2時意味著深水區(qū)域的球形擴(kuò)展。f為信號頻率,α(f)表示水環(huán)境的吸收系數(shù),其與信號頻率f的關(guān)系可以表示為:
(2)
由公式(2)可以得出,吸收系數(shù)α(f)隨著信號頻率f增加而增加,也就是說,頻率越高將會造成信號的衰減越嚴(yán)重,這也是為什么水聲信號在水中可用的帶寬有限的原因。公式(2)適用于高頻信號,當(dāng)信號頻率是低頻信號時,吸收α(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)聲信號頻率為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ù),通過重定向水聽器來避免噪聲的節(jié)點(diǎn)質(zhì)量。除此外,聲音調(diào)制解調(diào)器也會對水聲通信有影響,因為它也是聲音通道中的組成部分。
傳統(tǒng)DBR路由協(xié)議路由過程中,所有的數(shù)據(jù)包都是從深度較深的節(jié)點(diǎn)向上轉(zhuǎn)發(fā)給深度較淺的節(jié)點(diǎn),沿著匯聚節(jié)點(diǎn)的方向發(fā)送數(shù)據(jù)。每個數(shù)據(jù)包都攜帶記錄發(fā)送該數(shù)據(jù)包節(jié)點(diǎn)的深度信息的字段,并且在每次發(fā)送信息的時候更新。接收節(jié)點(diǎn)計算與上一節(jié)點(diǎn)深度差,深度差越大該節(jié)點(diǎn)獲得的轉(zhuǎn)發(fā)權(quán)限優(yōu)先級越高。這很容易導(dǎo)致負(fù)載不均衡和能量消耗不均衡,因為處于較好位置的節(jié)點(diǎn)會被頻繁選為轉(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)會被頻繁選為轉(zhuǎn)發(fā)節(jié)點(diǎn)過度消耗能量。
圖2 傳統(tǒng)DBR路由策略
此外,在圖2中可以觀察到,當(dāng)A選做轉(zhuǎn)發(fā)節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包時,R1,R2,R3區(qū)域的節(jié)點(diǎn)都可以收到節(jié)點(diǎn)A的抑制作用,不會繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)包。而R4和R5區(qū)域內(nèi)的節(jié)點(diǎn)在等待時間結(jié)束后會繼續(xù)轉(zhuǎn)發(fā)接收到的數(shù)據(jù)包,因為它們并不在節(jié)點(diǎn)A的轉(zhuǎn)發(fā)范圍內(nèi),無法接收到節(jié)點(diǎn)A發(fā)送的抑制信號。這樣,造成冗余轉(zhuǎn)發(fā)而浪費(fèi)能量,若在節(jié)點(diǎn)分布稀疏區(qū)域,冗余轉(zhuǎn)發(fā)可以提高通信的可靠性,但是如果在密集區(qū)域內(nèi)就會造成多余的能量消耗。
本章提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議ESAFDBR,ESAFDBR不僅考慮了節(jié)點(diǎn)的深度信息和剩余能量信息,在傳輸過程中使網(wǎng)絡(luò)實現(xiàn)負(fù)載均衡。同時還考慮了兩跳節(jié)點(diǎn)鄰域信息,以此避免節(jié)點(diǎn)陷入局部最優(yōu)。為了減少冗余轉(zhuǎn)發(fā)增加能耗,ESAFDBR設(shè)計劃分轉(zhuǎn)發(fā)節(jié)點(diǎn)區(qū)域策略,將初始轉(zhuǎn)發(fā)區(qū)域劃分為Reuleaux三角形,利用Reuleaux三角形特性抑制冗余節(jié)點(diǎn),并且設(shè)計轉(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è)計。
ESAFDBR包含3種數(shù)據(jù)的消息,分別為鄰居請求消息(NEIGHBOR INVITE),應(yīng)答消息(ACK)以及數(shù)據(jù)信息消息(DATA),每種消息類型通過數(shù)據(jù)包攜帶的數(shù)據(jù)類型ID字段區(qū)分,分別為00,01,10。在同一個水下傳感器網(wǎng)絡(luò)中,每個傳感器節(jié)點(diǎn)都有自身獨(dú)立的ID編號,且不會有重復(fù)的ID編號。
鄰居請求信息用來查找鄰域信息,統(tǒng)計自身可用路由數(shù)量,其包括4個域,如圖3所示,數(shù)據(jù)類型ID為“00”,源節(jié)點(diǎn)ID表示發(fā)送鄰居請求消息的傳感器節(jié)點(diǎn)ID,該節(jié)點(diǎn)的深度和能量存放數(shù)據(jù)包節(jié)點(diǎn)深度和剩余能量字段中。包序號用來區(qū)別不同數(shù)據(jù)包,數(shù)據(jù)包的編號可由”數(shù)據(jù)類型ID+源節(jié)點(diǎn)ID+發(fā)送序號”組成。
圖3 鄰居請求和回應(yīng)數(shù)據(jù)包格式
應(yīng)答信息用來回應(yīng)鄰居請求信息。數(shù)據(jù)包格式與鄰居請求消息格式一樣,如圖3所示,其數(shù)據(jù)類型ID為“01”,源節(jié)點(diǎn)ID、節(jié)點(diǎn)深度和剩余能量字段的信息分別為自身節(jié)點(diǎn)ID、當(dāng)前深度和當(dāng)前剩余能量。包序號保留接收到請求的包序號,表示此消息是回應(yīng)鄰居請求的消息。
數(shù)據(jù)信息格式包括7個域,如圖4所示。其數(shù)據(jù)類型ID為“10”,源節(jié)點(diǎn)ID為轉(zhuǎn)發(fā)節(jié)點(diǎn)ID,包序號為錨定節(jié)點(diǎn)首次發(fā)送時組成的序號,中間轉(zhuǎn)發(fā)不能修改包序號,以免同一節(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三個值,當(dāng)為60值選擇使用Reuleaux三角形轉(zhuǎn)發(fā)區(qū)域,當(dāng)值為120時選擇使用張角為120度的錐形轉(zhuǎn)發(fā)區(qū)域,當(dāng)值為180時,與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是一個Reuleaux三角形形狀的區(qū)域。如圖5所示,假設(shè)水下無線傳感器節(jié)點(diǎn)的通信范圍半徑為R。
圖5 ESAFDBR轉(zhuǎn)發(fā)區(qū)域的劃分
S0區(qū)域是由3個半徑為R的圓環(huán)相交得到的Reuleaux三角形。根據(jù)Reuleaux三角形的性質(zhì)[22],所劃分出來的萊洛三角形內(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因為深度小于S的深度,判斷為沒有轉(zhuǎn)發(fā)權(quán)限丟棄數(shù)據(jù)包。C、F計算自身的位置并不在S0轉(zhuǎn)發(fā)區(qū)域內(nèi),不具備轉(zhuǎn)發(fā)節(jié)點(diǎn)的權(quán)限也丟棄數(shù)據(jù)包。A、B、G、H節(jié)點(diǎn)通過計算優(yōu)先級,節(jié)點(diǎn)A優(yōu)先級較高,最先發(fā)送轉(zhuǎn)發(fā)數(shù)據(jù)包,當(dāng)節(jié)點(diǎn)A轉(zhuǎn)發(fā)數(shù)據(jù)包時,B、G、H節(jié)點(diǎn)都能接收到數(shù)據(jù)包,因為A、B、G、H都位于同一個半徑為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個半徑為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),可以通過如下式子表示:
(7)
當(dāng)鄰域內(nèi)水下傳感器節(jié)點(diǎn)密度大的時候,以控制冗余轉(zhuǎn)發(fā)為主要目的,可以使用式(7)確定Reuleaux三角形區(qū)域選擇轉(zhuǎn)發(fā)節(jié)點(diǎn)。當(dāng)鄰域內(nèi)水下傳感器節(jié)點(diǎn)比較稀疏時,冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)數(shù)據(jù)有利于增強(qiáng)水下傳感器網(wǎng)絡(luò)的可靠性,此時,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°時,則是DBR路由協(xié)議的路由策略。
圖7 錐形轉(zhuǎn)發(fā)區(qū)域
通過以下式子確定節(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)同樣的計算方式,θ是存放在數(shù)據(jù)包中的數(shù)據(jù),通過鄰居信息收集時得到的鄰居節(jié)點(diǎn)數(shù)判斷鄰居節(jié)點(diǎn)的數(shù)量決定θ的值。當(dāng)θ=180時,其實就變成DBR路由協(xié)議。
(8)
為了更好地選擇轉(zhuǎn)發(fā)節(jié)點(diǎn),ESAFDBR路由協(xié)議中,既考慮了節(jié)點(diǎn)的能量效率,還將節(jié)點(diǎn)信息的計算擴(kuò)展到了兩跳鄰域。計算當(dāng)前節(jié)點(diǎn)的深度、剩余能量以及擁有下一跳潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)的數(shù)量,通過這樣既可以平均能量消耗,實現(xiàn)負(fù)載均衡,還能提前預(yù)測空洞,避免節(jié)點(diǎn)遇到空洞信息。數(shù)據(jù)包轉(zhuǎn)發(fā)優(yōu)先級通過計算轉(zhuǎn)發(fā)等待時間HT(holding time)來實現(xiàn),節(jié)點(diǎn)轉(zhuǎn)發(fā)時間HT越小則越先轉(zhuǎn)發(fā)數(shù)據(jù)包。每個節(jié)點(diǎn)接收到數(shù)據(jù)包后,要先計算自己轉(zhuǎn)發(fā)等待時間HT,計算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ā)出鄰居信息請求時,統(tǒng)計收到的回應(yīng)消息,選擇并統(tǒng)計合適的節(jié)點(diǎn)數(shù),并存放在節(jié)點(diǎn)存儲器中,保持實時更新。λ1、λ2、λ3分別為深度差加權(quán)系數(shù)、剩余能量加權(quán)系數(shù)和下一跳鄰域節(jié)點(diǎn)數(shù)量加權(quán)系數(shù)。δ隨具體環(huán)境變化需要取值,如果選擇較小的δ,數(shù)據(jù)包的HT會增長,參與轉(zhuǎn)發(fā)的數(shù)據(jù)包能夠得到更好的抑制,能耗也會減少,但是節(jié)點(diǎn)間端到端的延時則會增加。τ的計算(10),c為聲音在水中的傳播速度,約等于1 500 m/s。
ESAFDBR路由協(xié)議具體實現(xiàn)步驟如下,分為鄰居節(jié)點(diǎn)請求信息處理流程和節(jié)點(diǎn)收到數(shù)據(jù)信息時的處理流程。
鄰居請求消息處理流程:
Step1:水下傳感器節(jié)點(diǎn)定期向鄰居廣播鄰居請求消息,數(shù)據(jù)類型ID+源節(jié)點(diǎn)ID+發(fā)送序號”組成的包序號,以此區(qū)分?jǐn)?shù)據(jù)包。
Step2:收到鄰居請求消息的節(jié)點(diǎn),判斷數(shù)據(jù)包時鄰居請求類型數(shù)據(jù)包,然后對比自身深度如果小于數(shù)據(jù)包中深度,發(fā)送回應(yīng)消息,字段攜帶有原序列號。
Step3:發(fā)送節(jié)點(diǎn)收到回應(yīng)消息,更新鄰居潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)的個數(shù)。
節(jié)點(diǎn)收到數(shù)據(jù)包信息時處理流程如下:
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)的個數(shù),如果為0則不參與轉(zhuǎn)發(fā)并丟棄該數(shù)據(jù)包,通過這種方式可以避免下一跳遇到空洞,如果鄰居潛在轉(zhuǎn)發(fā)節(jié)點(diǎn)個數(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ù)等待下一個數(shù)據(jù)包。
Step3:如果節(jié)點(diǎn)位于轉(zhuǎn)發(fā)區(qū)域中,計算?;顣r間,然后等待發(fā)送。
Step4:等待期間內(nèi)如果收到該數(shù)據(jù)包的抑制信號,該節(jié)點(diǎn)將放棄轉(zhuǎn)發(fā)該數(shù)據(jù)包,否則,等待時間結(jié)束后,將繼續(xù)轉(zhuǎn)發(fā)該數(shù)據(jù)包。
本實驗將對ESAFDBR路由協(xié)議與現(xiàn)有路由協(xié)議DBR和EEDBR進(jìn)行性能比較和分析。
實驗的仿真使用Matlab建立水下無線傳感器網(wǎng)絡(luò)仿真平臺進(jìn)行路由仿真。在實驗仿真過程中,使用不同數(shù)量的傳感器節(jié)點(diǎn)(50~600個)進(jìn)行實驗仿真。每一次比較的網(wǎng)絡(luò)拓?fù)涠际请S機(jī)生布局的,3種路由策略作用于同樣拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)進(jìn)行仿真模擬。因為實驗可能會產(chǎn)生誤差,為了減少實驗結(jié)果收誤差的影響,實驗結(jié)果取30次仿真運(yùn)行的平均值。部分仿真參數(shù)如表1所示。
表1 實驗參數(shù)設(shè)置
4.2.1 網(wǎng)絡(luò)生命周期
實驗中定義的生命周期為第一個節(jié)點(diǎn)的能量消耗完時,源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的輪次。如圖8所示,由于DBR深度較小的節(jié)點(diǎn)經(jīng)常被用于轉(zhuǎn)發(fā)數(shù)據(jù)包,因此這些節(jié)點(diǎn)的能量會很快就被耗盡了。本文定義第一個節(jié)點(diǎn)的能量完全耗盡時,即在網(wǎng)絡(luò)中出現(xiàn)第一個節(jié)點(diǎn)死亡時,源節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的輪次數(shù)作為網(wǎng)絡(luò)的生命周期。如圖8所示,由于DBR選擇具有較小深度的節(jié)點(diǎn)來頻繁地傳輸數(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)將能更長時間保持活動狀態(tài)。此外,較低的冗余能耗是提高網(wǎng)絡(luò)壽命的另一個因素。DBR無法避免冗余的分組傳輸,具有相似深度的節(jié)點(diǎn)也具有相似的保持時間。因為轉(zhuǎn)發(fā)節(jié)點(diǎn)通信范圍外的節(jié)點(diǎn)無法接收到抑制消息,在DBR和EEDBR中這些相同的分組被相繼發(fā)送。在ESAFDBR中,能夠大量限制這類傳感器節(jié)點(diǎn)參與轉(zhuǎn)發(fā),因為轉(zhuǎn)發(fā)節(jié)點(diǎn)受到節(jié)點(diǎn)的深度和剩余能量限制外,通過轉(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ù)據(jù)包從源節(jié)點(diǎn)成功發(fā)送達(dá)到目標(biāo)節(jié)點(diǎn)期間,水下傳感器網(wǎng)路消耗的能量總量來估算。如前所述,DBR能量消耗比EEDBR和ESAFDBR更高,主要是因為在一輪成功轉(zhuǎn)發(fā)過程中,DBR有過多的冗余節(jié)點(diǎn)參與了轉(zhuǎn)發(fā),ESAFDBR通過制定轉(zhuǎn)發(fā)區(qū)域有更好的抑制冗余節(jié)點(diǎn)的作用,所以圖中ESAFDBR能耗比DBR和EEDBR更少。3種方案能耗都隨著節(jié)點(diǎn)網(wǎng)絡(luò)的增加而增加,這是因為隨著網(wǎng)絡(luò)節(jié)點(diǎn)的增加,更多處于相同深度,擁有相近?;顣r間的節(jié)點(diǎn)無法被抑制。相比之下,ESAFDBR通過設(shè)置轉(zhuǎn)發(fā)區(qū)域、深度和剩余能量加權(quán)、考慮兩跳節(jié)點(diǎn)避免空洞等方面更好地抑制冗余及轉(zhuǎn)發(fā)。如圖9所示,隨著網(wǎng)絡(luò)節(jié)點(diǎn)的增加,ESAFDBR能量消耗小于DBR和EEDBR的能量消耗。
圖9 能效消耗曲線
本文針對水下無線傳感器網(wǎng)絡(luò)能量消耗不均衡和路由過程中過多冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā)增加能耗的問題,提出提出一種可調(diào)節(jié)轉(zhuǎn)發(fā)區(qū)域的水下傳感器路由協(xié)議ESAFDBR。ESAFDBR不僅考慮了節(jié)點(diǎn)的深度信息和剩余能量信息,在傳輸過程中使網(wǎng)絡(luò)實現(xiàn)負(fù)載均衡。同時還考慮了下一跳可用鄰居節(jié)點(diǎn)數(shù),通過這樣避免節(jié)點(diǎn)陷入局部最優(yōu)。此外,為了在密集區(qū)域中減少冗余轉(zhuǎn)發(fā)減少能耗,ESAFDBR設(shè)計劃分轉(zhuǎn)發(fā)節(jié)點(diǎn)區(qū)域策略,將初始轉(zhuǎn)發(fā)區(qū)域劃分為Reuleaux三角形,利用Reuleaux三角形特性有效抑制冗余節(jié)點(diǎn),并且設(shè)計的轉(zhuǎn)發(fā)區(qū)域可根據(jù)節(jié)點(diǎn)鄰域內(nèi)的節(jié)點(diǎn)密集程度自適應(yīng)調(diào)整,增強(qiáng)網(wǎng)絡(luò)的魯棒性和自適應(yīng)性。通過仿真實驗可以驗證,ESAFDBR協(xié)議能夠有效地減少冗余節(jié)點(diǎn)參與轉(zhuǎn)發(fā),整體上提高網(wǎng)絡(luò)的生存周期。