盧玫欣+蘇勝君+施偉斌
摘要:為改善Z-MAC協(xié)議在不同網(wǎng)絡(luò)流量下的表現(xiàn),通過對Z-MAC協(xié)議的分析,在該協(xié)議原有退避算法基礎(chǔ)上,提出了一種基于流量的自適應(yīng)退避算法。相對于原有算法固定長度的退避窗口,該算法可以根據(jù)網(wǎng)絡(luò)流量的變化動態(tài)調(diào)整退避窗口的大小,從而提高了協(xié)議的靈活性。通過NS2.26軟件仿真分析,實驗結(jié)果表明,該算法在吞吐量、丟包率、延遲等多個方面均優(yōu)于原有算法。基于流量的自適應(yīng)退避算法可有效改善Z-MAC協(xié)議的性能。
關(guān)鍵詞:
無線傳感器網(wǎng)絡(luò);Z-MAC;退避算法;NS2仿真
DOIDOI:10.11907/rjdk.172595
中圖分類號:TP312
文獻標識碼:A 文章編號:1672-7800(2017)012-0078-03
Abstract:In order to improve the performance of Z-MAC protocol, this paper analyzes a hybrid MAC protocol called Z-MAC, and based on its backoff algorithm we present a new backoff algorithm according to the contention of the network. Compared with the constant backoff window in original algorithm, this algorithm can adjust its backoff window dynamically due to the network traffic. Then analyzed through the NS2.26, the results showed that it is better than using a constant backoff window of Z-MAC protocol in the network delay, energy consumption and throughput. The adjust algorithm can improve the performance of Z-MAC.
Key Words:wireless sensor network;Z-MAC;backoff algorithm;NS2 simulation
0 引言
WSN中,節(jié)點能量主要消耗在無線通信上[1]。在通信協(xié)議中,數(shù)據(jù)鏈路層中的介質(zhì)訪問控制協(xié)議(Medium Access Control Protocol,MAC Protocol)[2]決定著無線信道的使用方式,控制著節(jié)點工作狀態(tài),對節(jié)點和網(wǎng)絡(luò)壽命起決定性作用。其中,Z-MAC協(xié)議是Injong Rhee等[3]根據(jù)無線傳感器網(wǎng)絡(luò)特點并結(jié)合CSMA和TDMA各自優(yōu)點所提出的一種混合型MAC協(xié)議。本文在Z-MAC協(xié)議原基礎(chǔ)上進行改進,使之能夠動態(tài)適應(yīng)網(wǎng)絡(luò)流量的變化,從而在性能上有更好的表現(xiàn)。
1 Z-MAC協(xié)議及其退避算法
Z-MAC協(xié)議是一種混合型MAC協(xié)議,根據(jù)網(wǎng)絡(luò)流量的大小,在低競爭狀態(tài)(LCL)下Z-MAC類似CSMA,而在高競爭狀態(tài)(HCL)下類似TDMA,同時使用了更簡單的時鐘同步對應(yīng)節(jié)點的拓撲變化[4]。
Z-MAC協(xié)議的具體實現(xiàn)過程:首先所有節(jié)點進行一個鄰居發(fā)現(xiàn)過程,即每秒廣播一個Ping消息,持續(xù)30s;在得到了兩跳鄰居表后利用DRAND算法進行時隙分配(該算法確保了任何一個節(jié)點在和一跳鄰居節(jié)點進行數(shù)據(jù)傳輸時不會被其兩跳鄰居所影響)[5];隨后Z-MAC利用Time Frame rule(TF rule)對每個節(jié)點進行時隙分配,每個節(jié)點將被分配到一個時隙。其中節(jié)點分為owner和non-owner,處于被分配時隙的節(jié)點為owner,owner具有更高的發(fā)送權(quán)限。Z-MAC協(xié)議退避算法的具體實現(xiàn):
步驟a:當(dāng)一個節(jié)點準備傳輸數(shù)據(jù)時,首先判斷是否為該時隙的owner。如果是,就進行步驟b,如果不是,則步驟c。
步驟b:節(jié)點先經(jīng)過一個隨機的backoff[0,T0](退避時間窗口),然后進行clear channel assessment(CCA)判斷信道是否空閑,如果信道空閑,就開始傳輸數(shù)據(jù);如果信道忙,則等待至信道空閑,回到步驟a。
步驟c:判斷節(jié)點是否處于LCL狀態(tài)或者處于HCL狀態(tài),但是該節(jié)點兩跳的鄰居都不是該時隙的owner。如果是,就進行步驟d;如果不是,則進行步驟e。
步驟d:等待T0時間,再經(jīng)過一個隨機的backoff[T0,Tn0]后,進行CCA判斷。如果信道空閑,就開始傳輸數(shù)據(jù);如果信道忙,則等待至信道空閑,回到步驟a。
步驟e:節(jié)點開始睡眠,直到滿足以下任意一個條件后醒來:該節(jié)點兩跳內(nèi)的鄰居都不是該時隙的owner;該節(jié)點自己成為owner。節(jié)點醒來后進行步驟a。
顯然Mac802_11::takeZMACBackoff()的功能是執(zhí)行Z-MAC協(xié)議的退避算法。對該函數(shù)進一步分析可以發(fā)現(xiàn),在整個Z-MAC協(xié)議代碼中,Mac802_11::CHECK_BACKOFF_TIME(),Mac802_11::navHandler(),Mac802_11::send_timer(),Mac802_11::tdmasend()四個函數(shù)均調(diào)用了該函數(shù),也就是說在NAV結(jié)束后、檢查節(jié)點發(fā)送狀態(tài)時、時隙分配結(jié)束后都會進行該退避算法。在該函數(shù)內(nèi)部,isOwner_是判斷節(jié)點是否為owner的標志位,當(dāng)isOwner_為1時該節(jié)點為owner;mhBackoff_.stop()調(diào)用了s.cancel(&intr)方法,目的是重置該定時器;mhBackoff_.start()用來啟動新的backoff計時,其中第一個入?yún)⒂脕碛嬎鉨ackoff持續(xù)時間,第二個入?yún)⒈硎井?dāng)前信道狀態(tài),如果當(dāng)前信道不空閑則暫停backoff timer;如果節(jié)點為non-owner,就計算newRand的值,然后執(zhí)行mhBackoff_.start(),此時第一個入?yún)⒌闹禐門o_+ newRand。
其中T0=8 contention window slots(如果希望協(xié)議執(zhí)行效率更高可以將該值設(shè)為2),T-n0=32 contention window slots。其中為了避免在同一時隙存在多個owner,T0的值應(yīng)大于1,而Tn0的值則是參照IEEE 802.11協(xié)議中初始化競爭窗口的大小來設(shè)定的[7]。從以上描述可以看出,Z-MAC協(xié)議的T0與Tn0僅僅是作者通過以往經(jīng)驗和直覺設(shè)定的定值,并不會根據(jù)實際網(wǎng)絡(luò)情況進行調(diào)整,不夠靈活的退避機制一定程度上會影響網(wǎng)絡(luò)性能,且仿真分析表明根據(jù)經(jīng)驗確定的固定退避參數(shù)確實影響了網(wǎng)絡(luò)性能。針對這種情況,本文提出了一種基于網(wǎng)絡(luò)流量動態(tài)調(diào)整退避時間的新型算法。
2 改進的退避算法
新型退避算法的基本思路是根據(jù)網(wǎng)絡(luò)流量動態(tài)調(diào)整退避窗口的大小,如何獲取網(wǎng)絡(luò)流量的大小以及通過何種參數(shù)定量地描述網(wǎng)絡(luò)流量大小是首先需要解決的問題。通過查閱文獻并且結(jié)合Z-MAC協(xié)議的實際情況確定網(wǎng)絡(luò)流量,比較合適的方法分別為:根據(jù)丟包率間接確定和利用CCA直接判斷[8]。下面分析兩種方法的優(yōu)缺點。
利用CCA對網(wǎng)絡(luò)流量進行判斷可以不消耗額外的能量,即不需要發(fā)送額外數(shù)據(jù)包獲得網(wǎng)絡(luò)流量信息。在數(shù)據(jù)傳輸開始階段會進行一次CCA判斷,如果得到的值大于預(yù)先設(shè)定的閾值,就認為該節(jié)點處于HCL狀態(tài)。但是通過進一步了解仿真軟件發(fā)現(xiàn)NS2并沒有提供實現(xiàn)CCA過程的函數(shù),該過程的實現(xiàn)只能在硬件上完成,因此本文采取第二種方法,即通過丟包率判斷網(wǎng)絡(luò)流量。
網(wǎng)絡(luò)流量增加的直接后果就是丟包率的上升,因此通過丟包率判斷網(wǎng)絡(luò)流量是可行,下面分析相關(guān)的Z-MAC協(xié)議代碼。
分析以上代碼,其中CurrentLoss_為節(jié)點當(dāng)前丟包率,由于仿真軟件本身的局限性,NS2并不能完全模擬真實WSN環(huán)境[9],從代碼中可以看出丟包率是根據(jù)接收到的ACK消息數(shù)量進行計算得到,即便如此,變量CurrentLoss_也能大致反映節(jié)點的期望丟包情況。
顯然當(dāng)網(wǎng)絡(luò)流量增大時丟包率也會隨之上升,因此可以通過增加backoff時間改善這一狀況,即當(dāng)CurrentLoss_超過某一閾值時,增加T0和Tn0的值;而當(dāng)丟包率衰減至正常水準時減少T0和Tn0的值。
通過多次仿真實驗,最終確定了改進的退避算法各項參數(shù),如表1所示。
3 算法仿真
仿真軟件NS2能夠模擬真實的WSN環(huán)境[10],本論文使用NS2.26平臺以及NAM(Network Animator)網(wǎng)絡(luò)運行工具,對Z-MAC協(xié)議退避算法以及改進的退避算法進行了一系列仿真實驗。具體參數(shù)如表2所示。
本文采用兩種不同的節(jié)點拓撲圖對原有的退避算法以及改進的退避算法分別進行了仿真(見圖1、圖2)。其中中間單獨的節(jié)點為網(wǎng)關(guān)節(jié)點,其余節(jié)點為待定的源節(jié)點。
本文安排了兩次實驗,對應(yīng)兩個不同的網(wǎng)絡(luò)(分別為19節(jié)點和25節(jié)點),分析了原協(xié)議及改進方案中流量變化對網(wǎng)絡(luò)的影響,并觀察吞吐量以及信道利用率等指標。仿真結(jié)果如圖3至圖6所示。
從圖3-圖6可以看出,無論是在19節(jié)點的情況下還是在25節(jié)點的情況下,改進后的流量自適應(yīng)退避算法在絕大部分情況下都表現(xiàn)出了優(yōu)于原有退避算法的性能。
4 結(jié)語
從仿真結(jié)果可以看出,本文提出的基于Z-MAC協(xié)議的新型退避算法通過網(wǎng)絡(luò)流量動態(tài)調(diào)整backoff時間,無論在吞吐量或是信道利用率方面均優(yōu)于傳統(tǒng)Z-MAC協(xié)議退避算法,網(wǎng)絡(luò)性能有了一定的提高。
參考文獻:
[1] 惠蕾放.無線網(wǎng)絡(luò)中的資源管理問題研究[D].西安:西安電子科技大學(xué),2012.
[2] 方飛.寬帶無線局域網(wǎng)MAC協(xié)議研究[D].成都:電子科技大學(xué),2014.
[3] INJONG RHEE, AJIT WARRIER, MAHESH AIA, et al. ZMAC:a Hybrid MAC for wireless sensor networks[C]. Dept. of Computer Science, North Carolina State University Raleigh, NC 27695.
[4] SHOIEB ARSHAD, AZZAT AL-SADI, ABDULAZIZ BARNAWI. Z-MAC: performance evaluation and enhancements[J]. Procedia Computer Science, 2013,21:485-490.
[5] INJONG RHEE, AJIT ARWRIER, LISONG XU. Randomized dining philosophers to TDMA scheduling in wireless sensor networks[C].Dept of Comp. Sci. and Eng. University of Nebraska Lincoln,2005.
[6] 徐雷鳴,龐博,趙耀.NS與網(wǎng)絡(luò)模擬[M].北京:人民郵電出版社,2003.
[7] 黃惠芳,李寧,王發(fā)鵬,等.基于IEEE802.11n的長距離無線鏈路性能分析[J].計算機科學(xué),2017, 44:110-113.
[8] 王春俠.TDMA系統(tǒng)中的時隙分配策略研究[D].西安:西安電子科技大學(xué),2014.
[9] 姜譽,任健,周黎明. NS2中TCP連接建立模擬的改進[J].通信學(xué)報,2012,33:15-19.
[10] 李雅蓉.無線局域網(wǎng)新型MAC層接入機制仿真研究[D].成都:西南交通大學(xué),2017.
(責(zé)任編輯:何 麗)