孫智博
摘 要:無線傳感網絡正在興起,它具備成本低廉、能量損耗低等特點。通常用延遲,數據包傳遞速率(PDR),能量消耗來衡量無線傳感器網絡的性能。按照分配信道的方法劃分協議,可將MAC層的協議劃分為競爭型訪問,預留型訪問和混合型的路由協議。MAC協議對于無線傳感器網絡來說,如果設計合適,可以提高無線傳感網絡的性能。
關鍵詞:無線傳感器網絡;MAC層協議
一、WSANs的MAC層協議簡介
按照分配信道的方法劃分協議,可將MAC層的協議劃分為以下三種:競爭型訪問協議,一般是所有節點共享一個信道,允許節點訪問介質的限制很少,并且可以結合其他協議來減少信道中碰撞次數,比如DCF協議。而預留型訪問協議通過明確地調度數據包來防止競爭。TDMA被認為是最適合的。混合型的路由協議是結合以上兩種方式。一些WSAN MAC協議是基于TDMA。
TDMA機制就是為每個無線傳感器網絡節點分配獨立的用于數據收發的時隙,而節點在其他空閑時隙內轉入睡眠節能狀態。相比隨機競爭接入機制,時分復用方式本身就更能節省能量,是實現信道分配的簡單成熟機制,因為無線電波的工作時間縮短,而且沒有任何競爭帶來的開銷和沖突。基于TDMA機制的MAC協議具有如下優點:
1)無競爭機制的沖突重傳問題。
2)數據傳輸不需額外的控制信息。
3)節點在空閑時隙能夠及時進入睡眠階段。
混合型協議可以獲得更好的性能,保持競爭期遠小于數據傳輸期,從而減少碰撞,延遲和能源浪費。ATMA算法優于傳統的SMAC, TMAC和ADV-MAC算法。
在許多協議中,將一個幀劃分為2個部分,Contention Window (CW)和Data Window。CW的大小決定了MAC算法的效率。已經很多人研究CW大小自適應問題,特別是在IEEE 802.11和IEEE 802.15.4協議中。
二、算法介紹
首先,參考文獻做出以下假設:
1)將節點隨機放置在一個矩形無障礙區域,節點間相互獨立且靜止。
2)節點能夠感知到信道以及分辨一個空閑信道,一個進展中的單包傳輸的信道和發生碰撞的信道(兩個或更多的同時傳輸的數據包) 之間的區別。
3)時間離散化且所有節點同步操作。
4)采用了兩個簡單的流量模型,一是隨機流量模型,每個節點在每段時間以概率p步生成一個數據包;二是突發流量模型,每個發射節點周期性的突發產生出一定量的數據包。然后,用延遲,數據包傳遞速率(PDR),能量消耗三個指標來評價算法。
(一)ATMA算法
ATMA將CW分為更小的微時隙,比ADV包的持續時間更小。每個節點若要發送數據包時,就選擇一個微時隙編號,并且開啟一個倒計時的計時器。當此計數器計數完畢,該節點開始發送ADV包,如果接收方接收這個數據包,立即發送ACK包。如果有沖突,或者網絡中的數據包損壞,那么不發送ACK包。如果,計數器凍結,那么意味著某些節點可能沒有機會在一幀中發射數據包,即使它選擇了一個有效的微時隙編號。如果發生這種情況,就認為該節點被凍結了。如果一個節點發生沖突碰撞或者是被凍結,那么它將在下一幀中重新發送ADV包。而AD-ATMA算法優于ATMA,它消耗更少的能量,更加精細地處理凍結節點。
(二)AD-ATMA算法
AD-ATMA算法將CW分為兩個部分,第一部分叫做Selection Window,和ATMA中的CW具有相同結構。第二部分叫做Surplus Window,它可以使凍結節點發送ADV包并且不發送除此以外的其他包。直觀地說,減少Selection Window增加了碰撞沖突的概率,增加Surplus Window增加凍結節點成功發送ADV數據包的概率。
當凍結節點發射ADV包帶來的好處大于碰撞引起的額外延遲(由于發送更多的數據包)時,擁有Surplus Window是個不錯的選擇。當發射節點數量很少時,只有很少量的凍結節點,所以只需要很少量的Surplus Window就足夠了。當發射節點數量很大時,Selection Window數量減少會增加碰撞沖突的概率,并且可能超出少量凍結節點所帶來的收益。當發射節點數量適中時,將CW割裂為兩部分有著不錯的效果。
假設每個節點每一幀內都有數據包要發送,并且有固定的幀數。隨機部署節點,并且每個節點都有固定數量的鄰域節點和固定大小的Selection Window。所有節點都運行Ad-ATMA算法,且在固定的幀內發送數據包。測量了發送單個ADV包的微時隙數量和碰撞沖突的微時隙數量。
Ad-ATMA在每個節點內以分布式運行。節點在每一幀中監聽整個CW。文獻提出的算法步驟如下:
1)在每個幀的開始,每個發射節點計算鄰域節點數量的期望值,在Selection Window中選擇一個隨機微時隙n,一個計數為n的計時器開始倒計時并且監聽整個信道。
2)只要一個節點檢測到一個微時隙正在使用,就凍結其計時器,直到通道不被占用。
3)當計時器計數完畢后,就發送一個ADV包。如果接收節點接收到了ADV包,就立即返回一個ACK包來確認收到。發射節點收到ACK包后就開始發射另一個ADV包,這樣單跳鄰域內的發射和接收節點就知道即將進行下一次數據傳輸。如果節點要發射第二個ADV包,開始第二個計數器即可。
4)如果計時器沒有計數完畢,但該幀結束了,或者當計數器計數完畢后,微時隙數量過少,節點就嘗試在下一幀發送ADV包。
5)成功預留數據時隙的節點就在數據時隙發送包。不發送或是接收數據包的節點在整個數據時隙期間都是保持睡眠狀態。
最后對這兩種算法分別在單跳和多跳網絡環境中進行模擬仿真,最后發現Ad-ATMA的三項性能明顯優于ATMA。
參考文獻:
Hossain M K,Datta S,Edmonds J.Ad-ATMA: An Efficient MAC protocol for Wireless Sensor and Ad Hoc Networks [J].Procedia Computer Science,2015,52(1):484-491.