韓多亮杜秀娟柳秀秀王麗娟張智學
(1.青海師范大學計算機學院,青海省物聯(lián)網(wǎng)重點實驗室,青海 西寧 810008;2.藏語智能信息處理及應用國家重點實驗室,青海 西寧 810008;3.高原科學與可持續(xù)發(fā)展研究院,青海 西寧 810008)
水聲網(wǎng)絡(underwater acoustic networks,UANs)作為人類研究海洋等水下環(huán)境的主要手段,成為了各高校和科研院所的研究熱點[1-5]。 UANs 應用的多樣性包括環(huán)境監(jiān)測、污染控制、自然災害的預測和反應、生態(tài)系統(tǒng)分析、防御應用監(jiān)測等。 目前,這些應用大多通過架設少量電纜或光纜提供網(wǎng)絡基礎設施服務并采用單跳傳輸?shù)臒o線通信技術。 水下鋪設電/光纜成本高昂,單跳無線傳輸難以提供靈活快捷部署和大范圍監(jiān)測,但是,UANs 能夠實現(xiàn)在水下快速、大范圍部署的自組多跳網(wǎng)絡應用。 此外,UANs固有的長傳播延遲、低帶寬、通信能耗大、多徑效應以及時空變化等特性給UANs 路由協(xié)議的設計帶來了很大的挑戰(zhàn),UANs 路由受鏈路變化的影響很大,比陸地無線電信號鏈路的變化更不可預測和管理[6-9]。 設計可靠的UANs 路由機制至關重要,基于連通的UANs 節(jié)點路由分層方案是UANs 可靠路由設計的關鍵,因此,本文提出了基于連通的節(jié)點路由分層方案。
UANs 路由協(xié)議通??苫赟ink 節(jié)點的數(shù)量、是否需要節(jié)點地理位置、是否分簇、按需或主動等進行分類。 UANs 具有定向通信特點,上行流量目的地為Sink 節(jié)點,下行流量源自Sink 節(jié)點,Sink 節(jié)點是UANs 的樞紐[10]。 那些靠近Sink 節(jié)點的水下節(jié)點,除了感知和產生數(shù)據(jù)之外,還負責中繼和轉發(fā)報文。 因此,Sink 節(jié)點及其附近的節(jié)點對整個UANs具有重要的影響。 為了表示節(jié)點的重要程度,提高數(shù)據(jù)交付率和傳輸可靠性,近年來UANs 逐漸出現(xiàn)了基于分層的路由機制。 因此,本文根據(jù)是否采用分層機制,將路由協(xié)議分為無層級路由協(xié)議和分層路由協(xié)議。
無層級路由協(xié)議是指通信過程中,所有節(jié)點均不配置層級,也不將層級作為節(jié)點的候選轉發(fā)資格的條件。 無層級的路由協(xié)議有Vector-Based Forwarding(VBF)[11]、Depth based Routing(DBR)[12]、Position based Forwarding ( PBF )[13]、 Annular Compass Routing(ACR)[14]等。 分層路由協(xié)議中,一般分為兩個階段:分層階段和數(shù)據(jù)轉發(fā)階段。 分層階段每個節(jié)點根據(jù)相應信息和分層算法配置自身的層級。 通常來說,越靠近Sink 節(jié)點的節(jié)點層級越小,數(shù)據(jù)報文由層級大的節(jié)點傳輸至層級小的節(jié)點,轉發(fā)節(jié)點在選擇下一跳接收節(jié)點時,會將層級作為指標,選擇層級比自身層級小1 的節(jié)點作為候選轉發(fā)節(jié)點,逐層將數(shù)據(jù)傳輸至Sink 節(jié)點。
近幾年提出的路由分層方案有基于超級節(jié)點配置的分層方案、基于距離或深度的分層方案、基于能量探測的分層方案等。
基于超級節(jié)點配置的分層方案:水面的超級節(jié)點以不同的發(fā)送功率廣播控制報文,其中包含與功率對應的層級信息、超級節(jié)點ID 等,直到發(fā)送功率(層級)達到最大,普通節(jié)點根據(jù)廣播包中的層級信息確定自身的層級[15]。 基于距離或深度的分層方案:通過計算Sink 節(jié)點與普通節(jié)點的距離(或節(jié)點深度)和層間距將網(wǎng)絡中的節(jié)點劃分為N 層[16]?;谀芰刻綔y的分層方案:通過廣播能量探測包將網(wǎng)絡劃分為L 層[17]。
基于轉發(fā)節(jié)點傳輸范圍的分層方案:根據(jù)網(wǎng)絡中轉發(fā)節(jié)點的傳輸范圍將傳輸區(qū)域分為三層[18]。
基于超級節(jié)點配置分層的方案和基于距離或深度的分層方案均要求Sink 節(jié)點或超級節(jié)點不斷調整發(fā)送功率發(fā)送控制報文。 這是因為根據(jù)水聲信號衰減模型,當控制信號的強度在距離較遠的接收節(jié)點處小于節(jié)點的最小接收功率時,節(jié)點無法正確接收該報文,此時Sink 節(jié)點或超級節(jié)點需要以更大的發(fā)送功率發(fā)送控制報文,從而擴大廣播包的傳輸范圍,但發(fā)送功率的不斷增大會增加額外的能耗。 基于超級節(jié)點配置分層的方案,水下節(jié)點只要收到超級節(jié)點發(fā)出的廣播信息,按照廣播包中的層級信息即可確定自身的層級。 基于距離或深度的分層方案中,節(jié)點根據(jù)自身到Sink 節(jié)點的距離和層間距計算并更新自身的層級信息。 基于能量探測的分層方案中節(jié)點根據(jù)接收到的廣播包中的能量信息更新自身的層級。 以上三種分層方案中,水下節(jié)點不必轉發(fā)收到的廣播報文,分層方案簡單,分層過程無需消耗普通節(jié)點的能量,但對Sink 節(jié)點或超級節(jié)點的發(fā)送功率要求較高,不適用大規(guī)模UANs 部署。 此外,從三種分層方案中可以看出,水下節(jié)點的層級配置與到超級節(jié)點的距離密切相關,凡超級節(jié)點(以大的發(fā)送功率)一跳傳輸范圍內的所有水下節(jié)點都能獲取自身的層級,但該層級與自節(jié)點自身到Sink 節(jié)點的數(shù)據(jù)傳輸方向的連通性和跳數(shù)無關,因此容易形成上行路由“通信空區(qū)”問題,降低了該分層方案的上行路由的數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
Yanhai 等提出了一種基于深度的路由協(xié)議DBR。 該協(xié)議是一種典型的多Sink 節(jié)點網(wǎng)絡體系結構的路由協(xié)議,節(jié)點不需要知道自身的全方位位置信息,只需獲取自己的深度信息[11]。 DBR 是UANs 中的典型路由協(xié)議,在此基礎上,出現(xiàn)了許多改進版本。 傳統(tǒng)分層路由協(xié)議與DBR 及其眾多改進版協(xié)議在候選轉發(fā)節(jié)點的選取方面采用類似的機制,因此我們以DBR 或傳統(tǒng)分層路由為例分析“通信空區(qū)”問題。
在DBR 協(xié)議(或傳統(tǒng)分層路由)中,當一個節(jié)點收到數(shù)據(jù)包時,將從數(shù)據(jù)包中查看上一跳節(jié)點的深度(或分層)信息,并與自己的深度(或分層)信息作對比,如果自身深度(或分層)小于上一跳節(jié)點的深度(或分層),則說明其可以作為轉發(fā)節(jié)點,否則,直接將數(shù)據(jù)包丟棄。 協(xié)議中根據(jù)深度(或分層)差選擇轉發(fā)節(jié)點,因此會出現(xiàn)多個轉發(fā)節(jié)點,即會有冗余數(shù)據(jù)包產生。
DBR(或傳統(tǒng)分層路由)協(xié)議根據(jù)深度(或分層)信息執(zhí)行路由轉發(fā),在網(wǎng)絡稀疏的情況下,會造成“通信空區(qū)”,如圖1 所示。 根據(jù)DBR 協(xié)議,源節(jié)點S 將數(shù)據(jù)發(fā)送出去后,節(jié)點F 和節(jié)點N1將會收到該數(shù)據(jù)包,但是N1的深度(或分層)大于S,不能作為候選轉發(fā)節(jié)點;只有節(jié)點F 會轉發(fā)數(shù)據(jù),但是在F的傳輸范圍內沒有比F 深度(或分層)更小的節(jié)點,所以本次數(shù)據(jù)將無法傳輸至Sink 節(jié)點,形成了“通信空區(qū)”,降低了包的交付率和傳輸可靠性。
圖1 “通信空區(qū)”與有效分層問題示意圖
在基于分層的路由機制中,數(shù)據(jù)的流向總是沿著從高層級節(jié)點向低層級節(jié)點傳輸,最終將數(shù)據(jù)傳輸至Sink 節(jié)點。 針對UANs 傳統(tǒng)(分層)路由協(xié)議的“通信空區(qū)”問題,如果我們能夠設計出有效的分層算法,給那些與Sink 節(jié)點連通的水下節(jié)點配置一個有限的層級,將會解決“通信空區(qū)”路由問題。 如圖1,假設源節(jié)點S 的層級為L,N1的層級為L-1,則節(jié)點S 可將N1作為下一跳接收節(jié)點,直接將數(shù)據(jù)發(fā)送給N1,數(shù)據(jù)將沿著N1-N2-N3-N4-N5傳輸至Sink 節(jié)點,而不會將數(shù)據(jù)傳輸至F,如此,即解決了“通信空區(qū)”問題。
為了解決傳統(tǒng)分層路由的“通信空區(qū)”問題,我們提出一種基于節(jié)點與Sink 節(jié)點連通的最小跳數(shù)的路由分層方案,即:將距離Sink 節(jié)點的最小跳數(shù)定義為節(jié)點的層級。 在基于最小跳數(shù)的分層算法中,Sink節(jié)點以與水下節(jié)點相同的發(fā)送功率定期向網(wǎng)絡泛洪包含其ID、層級(被Sink 節(jié)點初始化為0)和剩余能量等信息的Hello 報文,當水下節(jié)點第一次收到Hello報文時,提取報文頭部的層級信息,即上一跳節(jié)點的層級Lpre,將Lpre+1 作為自己的層級。 之后節(jié)點用自己的ID、層級、剩余能量等更新并繼續(xù)廣播更新后的Hello 報文。 經過一段時間,收到Hello 報文的水下節(jié)點都能獲取或更新自己的層級信息,獲取了層級的節(jié)點會繼續(xù)更新廣播Hello 報文。
當一個已經獲取了層級的接收節(jié)點收到Hello報文時,接收節(jié)點需要判斷是否更新層級,具體規(guī)則如下:當一個已經獲取自身層級且該層級信息老化時間未到期的水下傳感器節(jié)點接收到一個Hello 報文時,它將比較自身層級L_Rec 和報文中層級L_Snd 的大小。 若L_Rec>L_Snd+1 時,則更新自身層級為L_Rec=L_Snd+1,并用節(jié)點自身層級信息和節(jié)點ID 來替換Hello 報文中的層級和發(fā)送節(jié)點ID 字段信息后,進而廣播新的Hello 報文;否則丟棄該報文,將不會轉發(fā)該報文。 當一個已經獲取自身層級,但該層級信息老化時間已到期的水下傳感器節(jié)點接收到一個Hello報文時,將直接更新自身層級為L_Rec =L_Snd+1,重新建立該節(jié)點的連通性。 如果節(jié)點始終收不到控制報文,則該節(jié)點與Sink 節(jié)點未連通,該節(jié)點為孤立節(jié)點,不能用于轉發(fā)報文。 分層算法偽代碼如算法1。
算法1 基于最小跳數(shù)的分層算法
如圖2 所示,根據(jù)基于連通和最小跳數(shù)的路由分層方案,Sink 節(jié)點的層級為0,轉發(fā)節(jié)點F1、F2、F的層級均為1,F(xiàn) 收到F1、F2轉發(fā)的控制報文后也不再更新自身的層級,也即三個轉發(fā)節(jié)點均為Sink 節(jié)點的一跳鄰居。 通信時,數(shù)據(jù)由高層級節(jié)點往低層級自下往上傳輸。
圖2 基于連通和最小跳數(shù)分層方案
在基于連通和最小跳數(shù)的分層方案中,如果水下節(jié)點與Sink 節(jié)點連通,無論經過多少跳的轉發(fā),總能收到控制報文并確定自身的層級。
當水下節(jié)點向Sink 節(jié)點轉發(fā)數(shù)據(jù)報文時,根據(jù)基于連通和最小跳數(shù)的路由分層方案,在分層階段,由于節(jié)點層級的更新與上一跳節(jié)點的層級有關且每個節(jié)點均需轉發(fā)Hello 報文,因此在分層階段已經形成了到達Sink 節(jié)點的一條或者多條路徑,即水下節(jié)點在更新層級后已與Sink 節(jié)點連通。 只要數(shù)據(jù)的源節(jié)點有一個有效的層級,則數(shù)據(jù)在轉發(fā)的每一跳都會找到至少一個上層的鄰居節(jié)點,因此數(shù)據(jù)不會被路由到“通信空區(qū)”,進而不會出現(xiàn)路由“通信空區(qū)”問題。 如圖3 所示,圖中L1表示層級1,L2表示層級2,N8表示節(jié)點8,N8的層級與N12層級均為L5,源節(jié)點N19發(fā)出的數(shù)據(jù)傳輸至節(jié)點N12時,N12不會將數(shù)據(jù)傳輸至N8,數(shù)據(jù)將沿著N12→N10→N7→N4→N1→Sink 節(jié)點的路徑,成功將數(shù)據(jù)傳輸至Sink 節(jié)點。 因此采用基于連通和最小跳數(shù)的路由分層方案成功避免了傳統(tǒng)分層(路由)節(jié)點N8的路由“通信空區(qū)”問題。
圖3 路由“通信空區(qū)”避免
UANs 能量供應受限且通信能耗大,節(jié)能是UANs 設計的重要目標。 UANs 中除岸上基站中心外,普通節(jié)點處于水中且采用電池供電,一旦電量耗盡難以充電或更換。 UANs 通信中能量的消耗主要體現(xiàn)在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)等通信狀態(tài)。 2000 年Sozer 等人提出了UANs 中的能耗衰減模型[19]。
假設Pr(常量)是網(wǎng)絡中節(jié)點的接收功率,則網(wǎng)絡中節(jié)點的發(fā)送功率為PrA(d),A(d)為衰減因子。
式中:d為兩個節(jié)點間的通信距離,k是能量擴散因子,其取值由環(huán)境決定,圓柱體中取k=1,長方體中是k=1.5,球體中是k=2,從吸收系數(shù)α(f)中得到的相關項為?,
假設一次UANs 通信中,發(fā)送節(jié)點與下一跳接收節(jié)點之間的距離(由發(fā)送節(jié)點在轉發(fā)之前計算自身至下一跳接收節(jié)點的距離)為r,則一跳轉發(fā)中消耗的能量為:
式中:Ps為發(fā)送功率,Ps=PrA(r),Tp是源節(jié)點或轉發(fā)節(jié)點發(fā)送一個數(shù)據(jù)包的傳輸時延,Pr為接收功率。
根據(jù)上述能耗衰減模型,數(shù)據(jù)傳輸中的能量消耗與傳輸距離有關,長距離傳輸會導致能量損耗較大,因此采用2.1 節(jié)的分層機制轉發(fā)節(jié)點F 的能量損耗較快,其壽命會縮短,進而縮短了網(wǎng)絡的整體壽命。
在基于連通和最小跳數(shù)的路由分層方案中,Sink 節(jié)點的層級為0,轉發(fā)節(jié)點F1、F2、F 的層級均為1,F(xiàn) 收到F1、F2轉發(fā)的控制報文后也不再更新自身的層級,也即三個轉發(fā)節(jié)點均為Sink 節(jié)點的一跳鄰居。 當F 收到來自于第二層節(jié)點的數(shù)據(jù)后,會直接將數(shù)據(jù)傳輸至Sink 節(jié)點,根據(jù)節(jié)3 的能耗衰減模型,數(shù)據(jù)傳輸中的能量消耗與傳輸距離有關,長距離傳輸會導致能量損耗較大,因此轉發(fā)節(jié)點F 的能量損耗較快,其壽命會縮短,進而縮短了網(wǎng)絡的整體壽命。
為了減小能量消耗,延長網(wǎng)絡生存期,本節(jié)對2.1 節(jié)的分層方案進一步優(yōu)化,提出一種基于連通的節(jié)能路由分層方案。
Sink 節(jié)點定期向網(wǎng)絡泛洪包含其ID、層級(被Sink 節(jié)點初始化為0)和地理位置等信息的Hello 報文。 節(jié)點收到控制報文后,按以下步驟更新層級。
步驟1:提取報文頭部發(fā)送節(jié)點的層級字段L_Snd,判斷層級老化時間是否已到,若老化時間已到,則自身層級L_Rec 更新為L_Snd+1,并立即轉發(fā)更新后的控制報文;否則,執(zhí)行步驟2;
步驟2:判斷發(fā)送者層級L_Snd 是否大于L_Rec,若L_Snd>L_Rec,說明報文來自下游節(jié)點,L_Rec 保持不變;否則,執(zhí)行步驟3;
步驟3:判斷L_Rec 是否等于255,若是,則L_Rec =L_Snd+1;否則,執(zhí)行步驟4;
步驟4:判斷L_Rec 是否等于L_Snd,若不是,則執(zhí)行步驟6;否則,計算當前節(jié)點與當前發(fā)送節(jié)點和上一次更新層級時發(fā)送節(jié)點的距離Dc、Dp和夾角a,執(zhí)行步驟5;
步驟5:判斷a的大小、Dc和Dp的關系,若a<30°(a閾值的得出在第4 節(jié)中給出)且Dc<Dp,則L_Rec =L_Snd+1,否則,L_Rec 保持不變。
步驟6:判斷L_Snd 是否等于L_Rec-1,若是,則更新層級老化時間;否則,執(zhí)行步驟7;
步驟7:判斷L_Snd 是否等于L_Rec-2,若不是,則執(zhí)行步驟9;否則,計算當前節(jié)點與當前發(fā)送節(jié)點和上一次更新層級時發(fā)送節(jié)點的距離Dc、Dp和夾角a,執(zhí)行步驟8;
步驟8:判斷a的大小、Dc和Dp的關系,若a<30°且Dc>Dp,則L_Rec 保持不變;否則,L_Rec =L_Snd+1。
步驟9:判斷L_Snd 是否小于L_Rec-2,若是,L_Rec 保持不變;否則,層級保持不變。
如圖4 所示,網(wǎng)絡初始化完成后,Sink 節(jié)點周期性廣播Hello 報文后,轉發(fā)節(jié)點F1、F2、F 均將首次收到Hello 報文,提取Hello 報文頭部Sink 節(jié)點的層級0,將自身的層級更新為1,將Hello 報文進行更新并立即轉發(fā)。 轉發(fā)節(jié)點F 將會收到F1、F2轉發(fā)的Hello 報文(由于轉發(fā)節(jié)點F1、F2的層級均是1,下面將不再區(qū)分收到由轉發(fā)節(jié)點F1、F2轉發(fā)Hello 報文的先后順序),由于轉發(fā)節(jié)點F、F1和F2的層級均為1,發(fā)送節(jié)點的層級大于當前節(jié)點層級的條件不成立,因此,轉發(fā)節(jié)點F 將計算自身到Sink 節(jié)點的距離和自身到轉發(fā)節(jié)點F1、F2的距離并計算兩者之間的夾角a,從圖4 中可以看出,轉發(fā)節(jié)點F 到F1、F2的距離較近且夾角a較小,因此,轉發(fā)節(jié)點F 將提取Hello 報文頭部F1、F2的層級1,加1 后作為自身的層級。
圖4 基于連通的的節(jié)能分層方案拓撲
基于連通的節(jié)能路由分層方案繼承了基于最小跳數(shù)的路由分層方案的優(yōu)勢,通過Hello 報文在整個網(wǎng)絡的泛洪,形成水下節(jié)點到Sink 節(jié)點的有效路徑,在數(shù)據(jù)傳輸時,轉發(fā)節(jié)點總能找到有效的下一跳轉發(fā)節(jié)點,解決了“通信空區(qū)”問題。 基于連通的節(jié)能分層方案也有其自身的優(yōu)點,通信中,轉發(fā)節(jié)點F收到數(shù)據(jù)后,先將數(shù)據(jù)轉發(fā)至F1或F2,再轉發(fā)至Sink 節(jié)點,構成了兩跳傳輸,由于轉發(fā)節(jié)點F 到F1或F2的距離較近,轉發(fā)節(jié)點F 消耗的能量小于其直接將數(shù)據(jù)轉發(fā)至Sink 節(jié)點的能量,即使F1或F2有能量消耗,但在一定條件下,兩跳轉發(fā)消耗的能量仍然會小于直接將數(shù)據(jù)傳輸至Sink 節(jié)點消耗的能量。如果采用基于最小跳數(shù)的分層方案,轉發(fā)節(jié)點F 收到數(shù)據(jù)后,會直接將數(shù)據(jù)轉發(fā)至至Sink 節(jié)點,一跳傳輸消耗的能量可能大于兩跳傳輸消耗的能量。
節(jié)5 將利用能耗模型和MATLAB 仿真對基于最小跳數(shù)和基于連通節(jié)能的兩種路由分層方案的能量消耗進行分析。
本節(jié)以圖4 拓撲為例,利用能耗模型對基于最小跳數(shù)的路由分層方案與基于連通的節(jié)能路由分層方案進行對比分析。
假設轉發(fā)節(jié)點F 至Sink 節(jié)點的距離是d,轉發(fā)節(jié)點F 至F1、F1至Sink 節(jié)點的距離分別是d1、d2;數(shù)據(jù)由轉發(fā)節(jié)點F 直接轉發(fā)至Sink 節(jié)點消耗的能量為E,由轉發(fā)節(jié)點F 轉發(fā)至F1或F2再轉發(fā)至Sink 節(jié)點消耗的能量為E′,則根據(jù)式(4)得
式中:A(d)=dk?d,Ps=PrA(d),k=1.5。 由于傳輸時延Tp相同、所有節(jié)點的接收功率Pr均一致,因此,E和E′的計算公式如下:
假設d1與d之間的夾角是a,則根據(jù)余弦定理即得:
當a=0°時,則:
用MATLAB 仿真比較分析了E和E′的大小關系,將E和E′稱為相對能耗,仿真中,假設d的取值范圍是(0,5),單位:km,d1的取值在d的取值范圍內取值,取值分別為:d/20、d/10、d/5、d/4、d/3、d/2、2d/3、3d/4、4d/5、5d/6,a的角度在(0°,90°)范圍內變化,信道的中心頻率為10 kHz,仿真結果如圖5。
圖5 a=0°,d=10 時,d1 與相對能耗的關系
如圖5,當a=0°,d=10 時,從圖中可以看到,一跳傳輸至Sink 節(jié)點的相對能耗保持不變,但是,隨著d1的逐漸增大,兩跳傳輸至Sink 節(jié)點的相對能耗逐漸減小。 當d1=d2=d/2 時,兩跳傳輸至Sink節(jié)點的相對能耗達到最小值;由于a=0°,d=10 且d1的值一直小于d,一跳傳輸至Sink 節(jié)點的相對能耗總大于兩跳傳輸至Sink 節(jié)點的相對能耗。
如圖5~圖10,當a逐漸增大時,通過兩跳傳輸至Sink 節(jié)點的相對能耗逐漸大于通過一跳傳輸至Sink 節(jié)點的相對能耗。 當a=90°時,d1的長度大于d,因此,通過兩跳傳輸至Sink 節(jié)點的相對能耗完全大于通過一跳傳輸至Sink 節(jié)點的相對能耗。
圖6 a=0°,d、d1 與相對能耗的關系
圖7 a=30°,d、d1 與相對能耗的關系
圖8 a=45°,d、d1 與相對能耗的關系
圖9 a=60°,d、d1 與相對能耗的關系
圖10 a=90°,d、d1 與相對能耗的關系
綜合圖5 ~圖10,當d1>d時,通過兩跳傳輸至Sink 節(jié)點的相對能耗大于通過一跳傳輸至Sink 節(jié)點的相對能耗;當d1<d時,通過兩跳傳輸至Sink 節(jié)點的相對能耗小于通過一跳傳輸至Sink 節(jié)點的相對能耗;且當d1=d/2 時,通過兩跳傳輸至Sink 節(jié)點的相對能耗達到最小值。
綜合模型數(shù)學分析和MATLAB 仿真分析的結果,當d1<d且a<=30°時,通過兩跳傳輸至Sink 節(jié)點的相對能耗小于通過一跳傳輸至Sink 節(jié)點的相對能耗,因此,數(shù)據(jù)轉發(fā)時采用基于連通的節(jié)能路由分層方案傳輸,有效減小了節(jié)點的能量消耗,從而提高了整個網(wǎng)絡的壽命。
NS3 是一款由華盛頓大學設計開發(fā)的全新的網(wǎng)絡模擬器,廣泛汲取了NS2、GTNetS 等優(yōu)秀模擬器的成功技術和經驗,其性能更佳、擴展性更好,更加接近真實網(wǎng)絡[20]。 因此,本節(jié)將用NS-3 仿真工具對分層方案進行性能評估。 仿真中,利用文獻[6]中基于層級的自適應地理路由協(xié)議,分別采用基于最小跳數(shù)的路由分層方案和基于連通的節(jié)能路由分層方案進行路由傳輸仿真實驗,并從數(shù)據(jù)包交付率、端到端的平均延時和平均能耗三個方面進行了對比分析,此外,還增加了和基于分層的能量均衡的路由協(xié)議(layerbased and energy-efficient routing,LEER)[21]的對比實驗。 實驗場景設置如下:15 個~45 個傳感器節(jié)點隨機部署在6 000 m×6 000 m×3 000 m 的長方體中,將一個Sink 節(jié)點部署在水面(長方體上表面中心),一個源節(jié)點部署在水底(長方體下表面中心),實驗中的其他實驗仿真參數(shù)如表1 所示。
表1 仿真參數(shù)表
本文進行性能評估指標的定義如下:
包交付率(packet delivery ratio,PDR):是指Sink 節(jié)點成功接收的數(shù)據(jù)包數(shù)量與源節(jié)點發(fā)送的數(shù)據(jù)包數(shù)量之比,PDR 計算公式如下:
式中:n是仿真實驗的次數(shù),Psend是源節(jié)點產生發(fā)送的數(shù)據(jù)包的數(shù)量,Prece為Sink 節(jié)點成功接收的數(shù)據(jù)包的數(shù)量。
平均能耗(average energy consumption,AEC):是指一次仿真實驗中網(wǎng)絡的總能耗與Sink 節(jié)點成功接收的數(shù)據(jù)包數(shù)量之比,計算公式如下:
式中:Etotal表示網(wǎng)絡的總能耗;Psuccess表示Sink 節(jié)點成功接收的數(shù)據(jù)包的數(shù)量。
平均端到端的延時(average end-to-end delay,AEED):是指在一次仿真實驗中,Sink 節(jié)點成功接收數(shù)據(jù)包的時刻與源節(jié)點發(fā)送數(shù)據(jù)時刻的差的總和和傳輸數(shù)據(jù)包次數(shù)的比值,AEED 的計算公式如下:
式中:Ntrans是一次仿真實驗中傳輸數(shù)據(jù)包的次數(shù),TSink和Tsource分別是Sink 節(jié)點成功接收數(shù)據(jù)包的時刻和源節(jié)點發(fā)送數(shù)據(jù)的時刻。
實驗中,分別仿真測試了節(jié)點個數(shù)與數(shù)據(jù)包交付率、平均能耗和網(wǎng)絡的平均端到端延時的關系,數(shù)據(jù)關系圖分別如圖11~圖13 所示。
圖11 節(jié)點個數(shù)與交付率
圖13 節(jié)點個數(shù)與延時
如圖11 中,隨著節(jié)點數(shù)量的逐漸增多,兩種分層方案的數(shù)據(jù)包交付率均保持在90%以上。 基于連通的節(jié)能路由分層方案的數(shù)據(jù)包交付率略低于基于最小跳數(shù)的路由分層方案,但是,交付率差值均保持在1%~3%之間。 同時,LEER 協(xié)議屬于泛洪的路由協(xié)議,隨著節(jié)點數(shù)的增加,會提高數(shù)據(jù)包的交付率,但同時會造成沖突,所以,交付率低于利用了兩種路由分層方案的交付率。
如圖12 中,隨著部署的節(jié)點數(shù)量的增多,由于基于連通的節(jié)能路由分層方案實現(xiàn)了短距離多跳傳輸,因此,它的平均能耗明顯小于基于最小跳數(shù)的路由分層方案的平均能耗。 文獻[6]中的路由協(xié)議在數(shù)據(jù)轉發(fā)前已確定了最佳下一跳轉發(fā)節(jié)點,每一跳參與數(shù)據(jù)轉發(fā)的節(jié)點只有一個,且只有最佳下一跳轉發(fā)節(jié)點接收數(shù)據(jù)包;然而,LEER 協(xié)議屬于泛洪的路由協(xié)議,隨著節(jié)點數(shù)的增加,參與接收數(shù)據(jù)包的節(jié)點會增多,因此,提出的兩種路由分層方案的平均能耗低于LEER 協(xié)議。
圖12 節(jié)點個數(shù)和平均能耗
圖13 中,隨著部署的節(jié)點數(shù)量的增多,兩種路由分層方案的平均端到端的延時基本保持不變,然而,由于基于連通的節(jié)能路由分層方案中,傳輸跳數(shù)的增加,其平均端到端的延時稍大于基于最小跳數(shù)的路由分層方案的平均端到端的延時。 同時,從圖中可以看出,采用兩種路由分層方案的路由協(xié)議的端到端的平均延時低于LEER 協(xié)議。
基于連通的節(jié)能路由分層方案中,為了均衡Sink 節(jié)點附近的節(jié)點的能量消耗,其附近節(jié)點的層級大于Sink 節(jié)點,可以實現(xiàn)多跳傳輸且其單跳傳輸?shù)木嚯x較短,通信中,可以利用較小的發(fā)送功率,因此附近節(jié)點的能量會有效減少。 同時,水下其他節(jié)點根據(jù)距離確定層級,層與層之間的距離可以縮短,即可以實現(xiàn)短距離多跳傳輸。 綜合圖11 ~圖13,雖然基于連通的節(jié)能路由分層方案的延時稍有增加,但是其數(shù)據(jù)包交付率基本與基于最小跳數(shù)的路由分層方案的交付率保持一致且其能耗有效減少。 因此,基于連通的節(jié)能路由分層方案的性能優(yōu)于基于最小跳數(shù)的路由分層方案。
本文提出了兩種基于連通的水下節(jié)點路由分層方案:基于最小跳數(shù)的節(jié)點路由分層方案和基于連通的節(jié)能路由分層方案,實現(xiàn)了分層多跳傳輸,通過數(shù)學模型、MATLAB 分析了基于連通的節(jié)能路由分層方案傳輸?shù)膬?yōu)勢,并用NS3 仿真對比分析了兩種基于連通的路由分層方案,實驗結果表明:①基于連通的節(jié)能路由分層方案能夠有效節(jié)省能耗,從而能夠提高網(wǎng)絡的整體壽命;②兩種基于連通的路由分層方案可以有效解決“通信空區(qū)”問題;③本文提出的節(jié)點路由分層方案可以及時更新層級、實現(xiàn)短距離多跳傳輸,交付率較高且平均能耗低于LEER 協(xié)議。
UANs 的應用環(huán)境為水中,能量供應困難,因此設計合適的傳輸機制至關重要,基于連通的節(jié)能路由分層方案雖然在交付率和能耗方面有很大優(yōu)勢,但在減小延時方面仍然存在不足,本文下一步的工作將全面考慮,提出性能更加優(yōu)越的路由分層方案。