盧玫欣+蘇勝君+施偉斌
摘要:為改善Z-MAC協(xié)議在不同網(wǎng)絡(luò)流量下的表現(xiàn),通過(guò)對(duì)Z-MAC協(xié)議的分析,在該協(xié)議原有退避算法基礎(chǔ)上,提出了一種基于流量的自適應(yīng)退避算法。相對(duì)于原有算法固定長(zhǎng)度的退避窗口,該算法可以根據(jù)網(wǎng)絡(luò)流量的變化動(dòng)態(tài)調(diào)整退避窗口的大小,從而提高了協(xié)議的靈活性。通過(guò)NS2.26軟件仿真分析,實(shí)驗(yàn)結(jié)果表明,該算法在吞吐量、丟包率、延遲等多個(gè)方面均優(yōu)于原有算法?;诹髁康淖赃m應(yīng)退避算法可有效改善Z-MAC協(xié)議的性能。
關(guān)鍵詞:
無(wú)線傳感器網(wǎng)絡(luò);Z-MAC;退避算法;NS2仿真
DOIDOI:10.11907/rjdk.172595
中圖分類(lèi)號(hào):TP312
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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é)點(diǎn)能量主要消耗在無(wú)線通信上[1]。在通信協(xié)議中,數(shù)據(jù)鏈路層中的介質(zhì)訪問(wèn)控制協(xié)議(Medium Access Control Protocol,MAC Protocol)[2]決定著無(wú)線信道的使用方式,控制著節(jié)點(diǎn)工作狀態(tài),對(duì)節(jié)點(diǎn)和網(wǎng)絡(luò)壽命起決定性作用。其中,Z-MAC協(xié)議是Injong Rhee等[3]根據(jù)無(wú)線傳感器網(wǎng)絡(luò)特點(diǎn)并結(jié)合CSMA和TDMA各自?xún)?yōu)點(diǎn)所提出的一種混合型MAC協(xié)議。本文在Z-MAC協(xié)議原基礎(chǔ)上進(jìn)行改進(jìn),使之能夠動(dòng)態(tài)適應(yīng)網(wǎng)絡(luò)流量的變化,從而在性能上有更好的表現(xiàn)。
1 Z-MAC協(xié)議及其退避算法
Z-MAC協(xié)議是一種混合型MAC協(xié)議,根據(jù)網(wǎng)絡(luò)流量的大小,在低競(jìng)爭(zhēng)狀態(tài)(LCL)下Z-MAC類(lèi)似CSMA,而在高競(jìng)爭(zhēng)狀態(tài)(HCL)下類(lèi)似TDMA,同時(shí)使用了更簡(jiǎn)單的時(shí)鐘同步對(duì)應(yīng)節(jié)點(diǎn)的拓?fù)渥兓痆4]。
Z-MAC協(xié)議的具體實(shí)現(xiàn)過(guò)程:首先所有節(jié)點(diǎn)進(jìn)行一個(gè)鄰居發(fā)現(xiàn)過(guò)程,即每秒廣播一個(gè)Ping消息,持續(xù)30s;在得到了兩跳鄰居表后利用DRAND算法進(jìn)行時(shí)隙分配(該算法確保了任何一個(gè)節(jié)點(diǎn)在和一跳鄰居節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸時(shí)不會(huì)被其兩跳鄰居所影響)[5];隨后Z-MAC利用Time Frame rule(TF rule)對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行時(shí)隙分配,每個(gè)節(jié)點(diǎn)將被分配到一個(gè)時(shí)隙。其中節(jié)點(diǎn)分為owner和non-owner,處于被分配時(shí)隙的節(jié)點(diǎn)為owner,owner具有更高的發(fā)送權(quán)限。Z-MAC協(xié)議退避算法的具體實(shí)現(xiàn):
步驟a:當(dāng)一個(gè)節(jié)點(diǎn)準(zhǔn)備傳輸數(shù)據(jù)時(shí),首先判斷是否為該時(shí)隙的owner。如果是,就進(jìn)行步驟b,如果不是,則步驟c。
步驟b:節(jié)點(diǎn)先經(jīng)過(guò)一個(gè)隨機(jī)的backoff[0,T0](退避時(shí)間窗口),然后進(jìn)行clear channel assessment(CCA)判斷信道是否空閑,如果信道空閑,就開(kāi)始傳輸數(shù)據(jù);如果信道忙,則等待至信道空閑,回到步驟a。
步驟c:判斷節(jié)點(diǎn)是否處于LCL狀態(tài)或者處于HCL狀態(tài),但是該節(jié)點(diǎn)兩跳的鄰居都不是該時(shí)隙的owner。如果是,就進(jìn)行步驟d;如果不是,則進(jìn)行步驟e。
步驟d:等待T0時(shí)間,再經(jīng)過(guò)一個(gè)隨機(jī)的backoff[T0,Tn0]后,進(jìn)行CCA判斷。如果信道空閑,就開(kāi)始傳輸數(shù)據(jù);如果信道忙,則等待至信道空閑,回到步驟a。
步驟e:節(jié)點(diǎn)開(kāi)始睡眠,直到滿(mǎn)足以下任意一個(gè)條件后醒來(lái):該節(jié)點(diǎn)兩跳內(nèi)的鄰居都不是該時(shí)隙的owner;該節(jié)點(diǎn)自己成為owner。節(jié)點(diǎn)醒來(lái)后進(jìn)行步驟a。
顯然Mac802_11::takeZMACBackoff()的功能是執(zhí)行Z-MAC協(xié)議的退避算法。對(duì)該函數(shù)進(jìn)一步分析可以發(fā)現(xiàn),在整個(gè)Z-MAC協(xié)議代碼中,Mac802_11::CHECK_BACKOFF_TIME(),Mac802_11::navHandler(),Mac802_11::send_timer(),Mac802_11::tdmasend()四個(gè)函數(shù)均調(diào)用了該函數(shù),也就是說(shuō)在NAV結(jié)束后、檢查節(jié)點(diǎn)發(fā)送狀態(tài)時(shí)、時(shí)隙分配結(jié)束后都會(huì)進(jìn)行該退避算法。在該函數(shù)內(nèi)部,isOwner_是判斷節(jié)點(diǎn)是否為owner的標(biāo)志位,當(dāng)isOwner_為1時(shí)該節(jié)點(diǎn)為owner;mhBackoff_.stop()調(diào)用了s.cancel(&intr)方法,目的是重置該定時(shí)器;mhBackoff_.start()用來(lái)啟動(dòng)新的backoff計(jì)時(shí),其中第一個(gè)入?yún)⒂脕?lái)計(jì)算backoff持續(xù)時(shí)間,第二個(gè)入?yún)⒈硎井?dāng)前信道狀態(tài),如果當(dāng)前信道不空閑則暫停backoff timer;如果節(jié)點(diǎn)為non-owner,就計(jì)算newRand的值,然后執(zhí)行mhBackoff_.start(),此時(shí)第一個(gè)入?yún)⒌闹禐門(mén)o_+ newRand。
其中T0=8 contention window slots(如果希望協(xié)議執(zhí)行效率更高可以將該值設(shè)為2),T-n0=32 contention window slots。其中為了避免在同一時(shí)隙存在多個(gè)owner,T0的值應(yīng)大于1,而Tn0的值則是參照IEEE 802.11協(xié)議中初始化競(jìng)爭(zhēng)窗口的大小來(lái)設(shè)定的[7]。從以上描述可以看出,Z-MAC協(xié)議的T0與Tn0僅僅是作者通過(guò)以往經(jīng)驗(yàn)和直覺(jué)設(shè)定的定值,并不會(huì)根據(jù)實(shí)際網(wǎng)絡(luò)情況進(jìn)行調(diào)整,不夠靈活的退避機(jī)制一定程度上會(huì)影響網(wǎng)絡(luò)性能,且仿真分析表明根據(jù)經(jīng)驗(yàn)確定的固定退避參數(shù)確實(shí)影響了網(wǎng)絡(luò)性能。針對(duì)這種情況,本文提出了一種基于網(wǎng)絡(luò)流量動(dòng)態(tài)調(diào)整退避時(shí)間的新型算法。
2 改進(jìn)的退避算法
新型退避算法的基本思路是根據(jù)網(wǎng)絡(luò)流量動(dòng)態(tài)調(diào)整退避窗口的大小,如何獲取網(wǎng)絡(luò)流量的大小以及通過(guò)何種參數(shù)定量地描述網(wǎng)絡(luò)流量大小是首先需要解決的問(wèn)題。通過(guò)查閱文獻(xiàn)并且結(jié)合Z-MAC協(xié)議的實(shí)際情況確定網(wǎng)絡(luò)流量,比較合適的方法分別為:根據(jù)丟包率間接確定和利用CCA直接判斷[8]。下面分析兩種方法的優(yōu)缺點(diǎn)。
利用CCA對(duì)網(wǎng)絡(luò)流量進(jìn)行判斷可以不消耗額外的能量,即不需要發(fā)送額外數(shù)據(jù)包獲得網(wǎng)絡(luò)流量信息。在數(shù)據(jù)傳輸開(kāi)始階段會(huì)進(jìn)行一次CCA判斷,如果得到的值大于預(yù)先設(shè)定的閾值,就認(rèn)為該節(jié)點(diǎn)處于HCL狀態(tài)。但是通過(guò)進(jìn)一步了解仿真軟件發(fā)現(xiàn)NS2并沒(méi)有提供實(shí)現(xiàn)CCA過(guò)程的函數(shù),該過(guò)程的實(shí)現(xiàn)只能在硬件上完成,因此本文采取第二種方法,即通過(guò)丟包率判斷網(wǎng)絡(luò)流量。
網(wǎng)絡(luò)流量增加的直接后果就是丟包率的上升,因此通過(guò)丟包率判斷網(wǎng)絡(luò)流量是可行,下面分析相關(guān)的Z-MAC協(xié)議代碼。
分析以上代碼,其中CurrentLoss_為節(jié)點(diǎn)當(dāng)前丟包率,由于仿真軟件本身的局限性,NS2并不能完全模擬真實(shí)WSN環(huán)境[9],從代碼中可以看出丟包率是根據(jù)接收到的ACK消息數(shù)量進(jìn)行計(jì)算得到,即便如此,變量CurrentLoss_也能大致反映節(jié)點(diǎn)的期望丟包情況。
顯然當(dāng)網(wǎng)絡(luò)流量增大時(shí)丟包率也會(huì)隨之上升,因此可以通過(guò)增加backoff時(shí)間改善這一狀況,即當(dāng)CurrentLoss_超過(guò)某一閾值時(shí),增加T0和Tn0的值;而當(dāng)丟包率衰減至正常水準(zhǔn)時(shí)減少T0和Tn0的值。
通過(guò)多次仿真實(shí)驗(yàn),最終確定了改進(jìn)的退避算法各項(xiàng)參數(shù),如表1所示。
3 算法仿真
仿真軟件NS2能夠模擬真實(shí)的WSN環(huán)境[10],本論文使用NS2.26平臺(tái)以及NAM(Network Animator)網(wǎng)絡(luò)運(yùn)行工具,對(duì)Z-MAC協(xié)議退避算法以及改進(jìn)的退避算法進(jìn)行了一系列仿真實(shí)驗(yàn)。具體參數(shù)如表2所示。
本文采用兩種不同的節(jié)點(diǎn)拓?fù)鋱D對(duì)原有的退避算法以及改進(jìn)的退避算法分別進(jìn)行了仿真(見(jiàn)圖1、圖2)。其中中間單獨(dú)的節(jié)點(diǎn)為網(wǎng)關(guān)節(jié)點(diǎn),其余節(jié)點(diǎn)為待定的源節(jié)點(diǎn)。
本文安排了兩次實(shí)驗(yàn),對(duì)應(yīng)兩個(gè)不同的網(wǎng)絡(luò)(分別為19節(jié)點(diǎn)和25節(jié)點(diǎn)),分析了原協(xié)議及改進(jìn)方案中流量變化對(duì)網(wǎng)絡(luò)的影響,并觀察吞吐量以及信道利用率等指標(biāo)。仿真結(jié)果如圖3至圖6所示。
從圖3-圖6可以看出,無(wú)論是在19節(jié)點(diǎn)的情況下還是在25節(jié)點(diǎn)的情況下,改進(jìn)后的流量自適應(yīng)退避算法在絕大部分情況下都表現(xiàn)出了優(yōu)于原有退避算法的性能。
4 結(jié)語(yǔ)
從仿真結(jié)果可以看出,本文提出的基于Z-MAC協(xié)議的新型退避算法通過(guò)網(wǎng)絡(luò)流量動(dòng)態(tài)調(diào)整backoff時(shí)間,無(wú)論在吞吐量或是信道利用率方面均優(yōu)于傳統(tǒng)Z-MAC協(xié)議退避算法,網(wǎng)絡(luò)性能有了一定的提高。
參考文獻(xiàn):
[1] 惠蕾放.無(wú)線網(wǎng)絡(luò)中的資源管理問(wèn)題研究[D].西安:西安電子科技大學(xué),2012.
[2] 方飛.寬帶無(wú)線局域網(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的長(zhǎng)距離無(wú)線鏈路性能分析[J].計(jì)算機(jī)科學(xué),2017, 44:110-113.
[8] 王春俠.TDMA系統(tǒng)中的時(shí)隙分配策略研究[D].西安:西安電子科技大學(xué),2014.
[9] 姜譽(yù),任健,周黎明. NS2中TCP連接建立模擬的改進(jìn)[J].通信學(xué)報(bào),2012,33:15-19.
[10] 李雅蓉.無(wú)線局域網(wǎng)新型MAC層接入機(jī)制仿真研究[D].成都:西南交通大學(xué),2017.
(責(zé)任編輯:何 麗)