(江蘇科技大學電子信息學院 鎮(zhèn)江 212003)
水聲通信網(wǎng)絡是一種由計算、通信等不同功能節(jié)點組成的水下無線傳感器網(wǎng)絡,它在海洋環(huán)境監(jiān)測、資源勘探與開發(fā)、海洋災難預警以及援助導航等方面有著廣泛的應用[1]。由于水聲通信網(wǎng)絡的組網(wǎng)形式特殊,同時水下通信面臨長延時、衰落快以及能量有限等問題,所以它的MAC層協(xié)議的設計要求與陸地無線網(wǎng)有所區(qū)別。在水聲通信網(wǎng)絡中,在兼顧吞吐量、時延的情況下,節(jié)約能量成了水聲通信網(wǎng)絡需要解決的主要問題[2]。
為了降低能耗,人們提出了基于MAC層的S-MAC協(xié)議。S-MAC協(xié)議在繼承MAC協(xié)議基本功能的基礎上,采用了周期性睡眠機制,其工作原理是讓沒有發(fā)送或接收任務的節(jié)點進入到睡眠狀態(tài),節(jié)點空閑偵聽時間的減少可以有效降低系統(tǒng)的能量消耗[3]。在數(shù)據(jù)的接收或發(fā)送過程中,為了降低數(shù)據(jù)沖突造成的能耗,協(xié)議采取退避機制來競爭信道;S-MAC協(xié)議采用RTS/CTS握手機制,單播信息在發(fā)送者和接收者之間按照RTS/CTS/DATA/ACK的順序進行通信,這樣進一步避免了串音偵聽;S-MAC協(xié)議的周期性睡眠機制如圖1所示。
圖1 S-MAC協(xié)議的周期性睡眠機制
S-MAC協(xié)議是以節(jié)能為需求設計的一種MAC協(xié)議,該協(xié)議目前還存在一些不足,比如其周期內節(jié)點的偵聽活動時間是固定不變的。此外,當網(wǎng)絡中活躍的節(jié)點較多時,數(shù)據(jù)包之間的碰撞概率會隨之增大,進而導致網(wǎng)絡系統(tǒng)的吞吐量下降[4]。針對S-MAC協(xié)議的缺點和不足,本文提出了一種自適應 動 態(tài) ES-MAC協(xié) 議(Energy Sensor-MAC,ES-MAC協(xié)議),該協(xié)議首先對S-MAC協(xié)議固定占空比進行了改進,改進的方法是增加動態(tài)偵聽活動時間。此外,ES-MAC協(xié)議在S-MAC協(xié)議原有的退避算法基礎上也進行了優(yōu)化調整,引入閾值作為競爭窗口分層調整的判斷依據(jù)[5]。改進后的協(xié)議可以根據(jù)信道中流量的變化情況動態(tài)的調整偵聽活動時間以及爭用窗口CW的值。
S-MAC協(xié)議采用周期性偵聽/睡眠占空比的工作機制,當信道中沒有數(shù)據(jù)發(fā)送時,節(jié)點進入睡眠狀態(tài)。雖然該機制在一定程度上減少了能耗,但是因為其采用固定的占空比,所以周期內節(jié)點偵聽與睡眠的時間是固定不變的,這樣當信道無數(shù)據(jù)發(fā)送時,節(jié)點長時間處于偵聽狀態(tài)會帶來無謂的能耗[6]?;赟-MAC協(xié)議的主要原理,針對其存在的問題提出了ES-MAC協(xié)議。與S-MAC協(xié)議采用固定的占空比不同,改進后的協(xié)議在周期內節(jié)點偵聽時間是動態(tài)變化的[7],如果信道沒有數(shù)據(jù)發(fā)送、接收時,偵聽時段只保留DT(Dynamic Time,DT)部分,如果在給定時間內沒有活動事件請求,那么活動結束,其主要的工作原理如下:
1)當節(jié)點i的隊列中沒有數(shù)據(jù)發(fā)送時,設置給定時間DT=ΔT,這是DT的一個下限;
2)每個周期的空閑偵聽時間長度與△T有關,其中△T應滿足:ΔT>C+R+T(其中C為競爭信道時間,R為發(fā)送RTS分組的時間,T為RTS分組結束到發(fā)出CTS分組開始的時間);
3)當節(jié)點i的隊列中分組數(shù)大于0時,DT的值按指數(shù)倍數(shù)增大,即 DT=2αNi×ΔT(α表示增加幅度,與隊列中分組數(shù)有關)。
改進后的協(xié)議可以更好地適應網(wǎng)絡流量的變化。當網(wǎng)絡活躍節(jié)點較多時,DT的值開始增大;當網(wǎng)絡中活躍節(jié)點較少時,DT的值會逐漸減小[8]。改進前與改進后的周期性睡眠機制對比如圖2所示。從圖中可以看出,與S-MAC協(xié)議相比,改進后的ES-MAC協(xié)議增加了動態(tài)偵聽時間DT部分,當網(wǎng)絡中無數(shù)據(jù)發(fā)送或較少數(shù)據(jù)發(fā)送時,可以有效減少處于活動狀態(tài)的時間。
圖2 S-MAC協(xié)議與改進后協(xié)議基本機制的對比
雖然S-MAC協(xié)議采取了數(shù)據(jù)包發(fā)送過程中進行通信握手機制以及節(jié)點載波監(jiān)聽等機制,但在通信過程中依然存在數(shù)據(jù)包沖突的問題[9]。S-MAC協(xié)議采用的是二進制指數(shù)退避算法[10],為了避免數(shù)據(jù)間的沖突,在傳輸過程中會選擇一段隨機的時間進行退避,退避算法將使用一個隨機退避時間作為計數(shù)器,計數(shù)器將在(0,CW)之間選取一個數(shù),其中CW的值被稱為競爭窗口。如果數(shù)據(jù)發(fā)送失敗,則增大退避窗口CW的值;如果數(shù)據(jù)發(fā)送成功,則減小退避窗口CW的值[11]。雖然BEB退避算法在一定程度上減少了節(jié)點競爭信道的沖突次數(shù),但當網(wǎng)絡活躍結點數(shù)較多時,碰撞概率開始增大,網(wǎng)絡的吞吐率明顯降低。
為了減少數(shù)據(jù)傳輸過程中的碰撞,提高網(wǎng)絡節(jié)點接受、發(fā)送數(shù)據(jù)的效率,引入E[CW]作為信道競爭程度閾值(E[CW]的值與網(wǎng)絡節(jié)點數(shù)有關),退避算法競爭窗口的調整方法如下,
l)當CW<E[CW]時,在數(shù)據(jù)發(fā)送成功后,減少競爭窗口CW的值減并與CWmin比較,CW的值計算公式為式(2);如果數(shù)據(jù)發(fā)送失敗,則采用乘性線性增加的方法增大競爭窗口CW的值,以便競爭窗口盡量快速增大,達到CWmax時乘性增加結束,此時CW計算公式為式(1)。
2)當 CW ≥E[CW]時,認為當前網(wǎng)絡負載較大,在數(shù)據(jù)發(fā)生沖突前,增大競爭窗口CW的值,CW的值計算公式為式(3);成功發(fā)送后,競爭窗口CW開始減小,此時CW計算公式為式(4):
改進的退避算法流程圖如圖3所示。
圖3 改進的退避算法流程圖
為了驗證ES-MAC協(xié)議在網(wǎng)絡仿真環(huán)境中的效果,需要對ES-MAC協(xié)議進行仿真驗證,實驗仿真將在NS2平臺[12]上進行。本次仿真實驗選取能量消耗、吞吐量以及網(wǎng)絡時延三個性能指標來評估ES-MAC協(xié)議的性能。本文實驗仿真參數(shù)與參數(shù)值見表l。
表1 仿真參數(shù)及參數(shù)值
能耗問題直接影響水聲通信網(wǎng)絡的生命周期。仿真實驗中選取數(shù)據(jù)分組間隔作為橫坐標的變化量,分組間隔越小說明網(wǎng)絡負載流量越大[13]??v坐標選取平均能耗,平均能耗為每傳輸一個字節(jié)所消耗的能量大小[14],網(wǎng)絡平均能量消耗計算公式(5)為
從圖4中可以看出,在網(wǎng)絡初始階段ES-MAC協(xié)議平均能耗比S-MAC協(xié)議的平均能耗低一些,但是兩者相差不大。當分組間隔減少3s~8s時,網(wǎng)絡流量逐漸增大,由于S-MAC協(xié)議采用的爭用窗口機制是在數(shù)據(jù)碰撞發(fā)生后進行調整的,此時能量已經(jīng)消耗,再加上流量增大的情況下會帶來潛在碰撞概率的增加,導致重傳次數(shù)增多,所以其能耗增大明顯。改進后的ES-MAC協(xié)議采用的是動態(tài)爭用窗口機制[15],當網(wǎng)絡信道中流量增大時,在發(fā)送數(shù)據(jù)前爭用窗口會根據(jù)網(wǎng)絡流量情況自行地進行調整,動態(tài)的爭用窗口機制對網(wǎng)絡的適應性更強。因此,ES-MAC協(xié)議在這段時間內的能耗雖然有所增加,但是整體的變化不會太大。從仿真實驗結果可以看出,整個仿真過程中,在平均能耗方面,ES-MAC協(xié)議一直低于S-MAC協(xié)議。
圖4 平均能耗仿真圖
網(wǎng)絡數(shù)據(jù)流的吞吐量是指目的節(jié)點在整個工作時間內成功接收到的數(shù)據(jù)包的總數(shù)量。本文仿真的是端到端的平均吞吐量[16],其單位為kbps。網(wǎng)絡平均吞吐量計算公式(6)為
從圖5可以看出,當分組間隔減小時,意味著網(wǎng)絡負載的增大,由于S-MAC協(xié)議采用的BEB退避算法不能根據(jù)網(wǎng)絡負載動態(tài)的調整競爭窗口[17],當網(wǎng)絡活躍節(jié)點較多時,發(fā)送數(shù)據(jù)間的碰撞概率增大,同時S-MAC協(xié)議采用固定的占空比機制,源節(jié)點在進行數(shù)據(jù)分組發(fā)送時,需要等待目的節(jié)點從睡眠狀態(tài)中醒來,這樣會導致網(wǎng)絡中節(jié)點競爭的加劇以及大量的數(shù)據(jù)分組丟失,所以網(wǎng)絡吞吐量一直較低[18]。改進后的ES-MAC協(xié)議能根據(jù)網(wǎng)絡的流量變化情況提前調整競爭窗口的值,更好的網(wǎng)絡適應性可以有效降低數(shù)據(jù)之間的碰撞。同時協(xié)議增加了動態(tài)活動的時間,有效減少了網(wǎng)絡擁擠帶來的潛在碰撞,降低了在傳輸中數(shù)據(jù)分組的丟失以及重傳次數(shù)。整個仿真階段,在網(wǎng)絡吞吐量性能上,ES-MAC協(xié)議始終高于S-MAC協(xié)議。
圖5 吞吐量仿真圖
時延是指在網(wǎng)絡中從首個數(shù)據(jù)分組發(fā)送開始計時,到最后一個數(shù)據(jù)分組被接收到截至的時間,平均時延[19]是總時間除以分組的數(shù)目。本文的性能指標采用的是平均時延,網(wǎng)絡平均時延計算公式(7)為
圖6 平均時延仿真圖
從圖6可以看出,在分組間隔10s~8s范圍內,由于網(wǎng)絡處在低負載的狀態(tài),ES-MAC協(xié)議與S-MAC協(xié)議在時延上沒有明顯區(qū)別。隨著分組間隔逐漸減少,S-MAC協(xié)議固定不變的爭用窗口會導致數(shù)據(jù)間碰撞概率的增加[20],數(shù)據(jù)發(fā)送失敗后的重傳直接增大了網(wǎng)絡的時延。尤其是當分組間隔減少3s后,其時延變現(xiàn)更為明顯。ES-MAC協(xié)議引入了動態(tài)占空比機制,同時改進了退避算法,在網(wǎng)絡在時延方面有著更好的表現(xiàn)。當網(wǎng)絡負載變大時,引入閾值判斷的退避算法可以根據(jù)當前網(wǎng)絡情況及時調整競爭窗口的大小,即使網(wǎng)絡處于擁擠狀態(tài),依然可以有效減少數(shù)據(jù)間碰撞帶來的網(wǎng)絡時延[21]。在整個仿真過程中,在平均時延性能方面,ES-MAC協(xié)議的基本上一直小于S-MAC協(xié)議。
本文對S-MAC協(xié)議進行了理論分析,針對其節(jié)點空閑偵聽時間過長以及固定的爭用窗口不能很好地適應網(wǎng)絡流量變化的情況,提出了自適應動態(tài)ES-MAC協(xié)議。該協(xié)議通過增加動態(tài)偵聽活動時間部分,當網(wǎng)絡無數(shù)據(jù)發(fā)送或較少數(shù)據(jù)發(fā)送時,節(jié)點可以有效降低對信道空閑偵聽的活動時間,同時改進后的協(xié)議使用動態(tài)可爭用窗口來適應網(wǎng)絡流量的變化。仿真實驗結果驗證了ES-MAC協(xié)議的可行性與有效性,同時與S-MAC協(xié)議相比,該協(xié)議在節(jié)能、吞吐量以及時延方面均具有更好的性能。