摘 要:首先對MAC協(xié)議進(jìn)行了相關(guān)介紹。然后重點(diǎn)介紹了一種基于競爭的無線傳感器網(wǎng)絡(luò)MAC層協(xié)議S-MAC協(xié)議。其核心是提出了一種新的無線傳感器網(wǎng)絡(luò)的MAC協(xié)議設(shè)計方案?;趧討B(tài)調(diào)整占空比的思想,提出了ATC-SMAC協(xié)議。該協(xié)議在S-MAC協(xié)議的基礎(chǔ)上改進(jìn)了固定占空比的劣勢,根據(jù)每個節(jié)點(diǎn)上的數(shù)據(jù)包的平均延遲調(diào)整占空比。通過動態(tài)地調(diào)整每個節(jié)點(diǎn)的占空比,使不同流量的節(jié)點(diǎn)擁有不同的工作時間,協(xié)議根據(jù)不同節(jié)點(diǎn)的流量情況自適應(yīng)地對其占空比進(jìn)行調(diào)整。經(jīng)過仿真試驗,得到ATC-MAC在網(wǎng)絡(luò)端對端延遲、能量消耗以及吞吐量方面較S-MAC協(xié)議都有比較明顯的提高。
關(guān)鍵詞:無線傳感器網(wǎng)路; MAC協(xié)議; 動態(tài)占空比; ATC-SMAC協(xié)議
中圖分類號:TN915-34文獻(xiàn)標(biāo)識碼:A文章編號:1004-373X(2011)19-0046-03
Analysis and Optimization of MAC Protocol of SMAC-based Wireless Sensor Network
ZHAO Xue-ying
(Gengdan Institute, Beijing University of Technology, Beijing 101301, China)
Abstract: The MAC protocol is introduced. A wireless sensor network MAC layer protocol based on competition named S-MAC protocol is analyzed. The core of this paper is the design scheme of MAC protocol of a new wireless sensor network, and the ATC-SMAC protocol based on the dynamic adjustment of duty cycle is proposed. This protocol improved the disadvantages of fixed duty cycle of S-MAC, and used the strategy of adjusting the duty cycle according to average packet delay on one node. Nodes with different traffic owned different work time according the duty cycle dynamic adjustment of each node. The protocol dynamically adjusted the duty cycle according to the traffic of each node. According to the simulation, the ATC-MAC is better than S-MAC in end to end delay, energy consumption and throughput.
Keywords: wireless sensor network; MAC protocol; dynamic duty-cycle; ATC-SMAC
收稿日期:2011-05-16 無線傳感器網(wǎng)絡(luò)[1]協(xié)議ATC-SMAC主要是提高基于競爭的S-MAC協(xié)議的能量使用率,同時減少S-MAC協(xié)議的網(wǎng)絡(luò)延遲。ATC-SMAC協(xié)議通過自適應(yīng)地調(diào)整每一個節(jié)點(diǎn)的占空比,讓節(jié)點(diǎn)在不同的流量下使用不同的占空比工作,做到流量大時工作更長的時間,流量小時工作更短的時間,沒有流量的時候就不工作。
1 S-MAC協(xié)議的分析和研究
S-MAC協(xié)議是一種基于競爭的控制協(xié)議[2],具有同步機(jī)制功能與無中心等特點(diǎn),不需要局部或全局中心主節(jié)點(diǎn)的調(diào)度傳感器節(jié)點(diǎn)自己發(fā)現(xiàn)鄰居節(jié)點(diǎn),并合理地安排占用信道的時間。
1.1 S-MAC協(xié)議
S-MAC協(xié)議時間分為若干個幀,幀長度由應(yīng)用程序來確定,幀內(nèi)分為活動與睡眠兩個部分。在睡覺時段,節(jié)點(diǎn)關(guān)閉發(fā)送器模塊,緩存在此時負(fù)責(zé)采集數(shù)據(jù)信息,數(shù)據(jù)在等待序列中,到活動階段集中進(jìn)行發(fā)送[3]。在活動開始時,發(fā)送節(jié)點(diǎn)進(jìn)入同步機(jī)制決定幀長度的確定方式,之后通過(RTS/CTS/DATA/ACK)機(jī)制發(fā)送數(shù)據(jù)信息,這個機(jī)制能夠避免因沖突產(chǎn)生的能耗。通過同步機(jī)制,局部的節(jié)點(diǎn)之間可以采用相同的時間周期,采用相同的工作休眠策略,它方便了無線傳感器網(wǎng)絡(luò)發(fā)現(xiàn)新節(jié)點(diǎn)。
1.2 S-MAC的節(jié)能機(jī)制分析
為了減少無線傳感器網(wǎng)絡(luò)消耗的能量,在IEEE 802.11基礎(chǔ)上提出了一種專門的傳感器網(wǎng)絡(luò)MAC協(xié)議S-MAC協(xié)議。無線傳感器網(wǎng)絡(luò)的沖突重傳、接收到不是發(fā)送給自己的數(shù)據(jù)、控制信號、空閑偵聽等造成傳感器網(wǎng)絡(luò)耗能的原因。它引入了節(jié)點(diǎn)間的SYNC機(jī)制,允許沒有數(shù)據(jù)發(fā)送和接收的節(jié)點(diǎn)進(jìn)入休眠狀態(tài)以節(jié)省耗能。但根據(jù)前文所討論的,睡眠的本身會引起數(shù)據(jù)的傳輸中斷,從而增加延時。下面將具體分析S-MAC協(xié)議是怎么節(jié)能的。
1.2.1 交替?zhèn)陕?睡眠機(jī)制
S-MAC協(xié)議的工作是按照周期進(jìn)行的,在每個周期里,每一個基于S-MAC協(xié)議的節(jié)點(diǎn)都會工作一段時間、睡眠一段時間,通過減少節(jié)點(diǎn)的工作時間來節(jié)省能量。如圖1所示S-MAC協(xié)議的一個周期包含了睡眠和偵聽兩個階段,偵聽階段屬于工作階段,偵聽階段如果收到數(shù)據(jù)包,則節(jié)點(diǎn)之間會建立通信。如果節(jié)點(diǎn)處于睡眠狀態(tài),則節(jié)點(diǎn)不能接收任何數(shù)據(jù),發(fā)送給它的數(shù)據(jù)都會被阻塞。處于睡眠狀態(tài)的節(jié)點(diǎn)會在一定時間后醒來。在S-MAC協(xié)議中,相鄰的節(jié)點(diǎn)是盡量同時睡眠同時偵聽的,為了保證時間上的一致,防止時鐘偏移,不同節(jié)點(diǎn)間需要定期廣播同步包來交換時間信息,從而進(jìn)行調(diào)整,做到同步。
圖1 S-MAC的周期性偵聽和睡眠1.2.2 “虛擬簇”機(jī)制
S-MAC協(xié)議使用了“虛擬簇”的機(jī)制,在“虛擬簇”機(jī)制下,節(jié)點(diǎn)之間的調(diào)度信息是通過節(jié)點(diǎn)廣播SYNC包來實現(xiàn)的。S-MAC協(xié)議使用調(diào)度表來保存調(diào)度信息,每一個節(jié)點(diǎn)會保存一個調(diào)度表。節(jié)點(diǎn)會在啟動的初期監(jiān)聽一段時間,因為S-MAC協(xié)議是固定占空比的,所以這段時間是固定的[4]。在監(jiān)聽的這段時間,如果節(jié)點(diǎn)能夠收到鄰居節(jié)點(diǎn)的調(diào)度信息,則它使用鄰居節(jié)點(diǎn)的調(diào)度周期更新自己的調(diào)度周期,并且它會在一段時間后廣播自己的調(diào)度信息。如果接收到的鄰居節(jié)點(diǎn)的調(diào)度方式與自己的調(diào)度方式相同,則調(diào)度方式不變;如果發(fā)現(xiàn)鄰居節(jié)點(diǎn)的調(diào)度方式與自己不同,而且還沒有收到與自己調(diào)度方式相同的節(jié)點(diǎn)消息,則使用新的調(diào)度方式進(jìn)行調(diào)度。
1.2.3 串音避免機(jī)制
基于競爭MAC協(xié)議能量消耗的一個重要原因就是串音。在S-MAC協(xié)議中,如果節(jié)點(diǎn)收到不是發(fā)送給自己的RTS數(shù)據(jù)包或CTS數(shù)據(jù)包,節(jié)點(diǎn)會直接進(jìn)入睡眠狀態(tài)。這樣,發(fā)送數(shù)據(jù)包的節(jié)點(diǎn)就不會把數(shù)據(jù)包和ACK報文發(fā)送到剛剛進(jìn)入睡眠的節(jié)點(diǎn),從而減少了節(jié)點(diǎn)處理這些數(shù)據(jù)包所消耗的能量[5]。
1.2.4 沖突避免機(jī)制
競爭信道時產(chǎn)生的碰撞是每一個競爭類協(xié)議都會碰到的問題,S-MAC協(xié)議也對該問題進(jìn)行了解決,盡量減少不必要的能量浪費(fèi)。
1.2.5 消息分段機(jī)制
如果傳感器網(wǎng)絡(luò)傳遞比較長的數(shù)據(jù)包,一個包出錯就會重傳,這就將耗費(fèi)比較多的能量。S-MAC為了解決這個問題采用了消息分段機(jī)制,將長消息分成幾個小的消息發(fā)送出去。
1.2.6 自適應(yīng)偵聽機(jī)制
自適應(yīng)偵聽機(jī)制的基本思想是:當(dāng)一個節(jié)點(diǎn)收到RTS或者CTS數(shù)據(jù)包,偵聽到鄰居節(jié)點(diǎn)有數(shù)據(jù)通信,就進(jìn)入睡眠,同時記錄它的通信時間。對通信時間的記錄幫助節(jié)點(diǎn)通信結(jié)束后能夠醒來,在一個較短的時間內(nèi)偵聽信道查看是否有數(shù)據(jù)包需要傳遞,這種偵聽同樣是通過是否接收RTS數(shù)據(jù)包和CTS數(shù)據(jù)包來實現(xiàn)的。通信結(jié)束后節(jié)點(diǎn)會醒來,這個時候節(jié)點(diǎn)進(jìn)入工作狀態(tài),偵聽是否有數(shù)據(jù)包到達(dá),如果有數(shù)據(jù)包到達(dá)則建立信道進(jìn)行通信,如果沒有數(shù)據(jù)包到達(dá),則結(jié)束偵聽,繼續(xù)進(jìn)入睡眠,按照既定調(diào)度方式工作。
2 改進(jìn)的MAC協(xié)議ATC-SMAC
如前面所述,S-MAC協(xié)議由于采用了固定的占空比,它不能根據(jù)網(wǎng)絡(luò)中數(shù)據(jù)流的延遲情況動態(tài)調(diào)整占空比大小,造成了兩個主要的問題。本節(jié)提出了一種新的無線傳感器網(wǎng)絡(luò)的MAC層協(xié)議——ATC-SMAC(Automation of Time Controlled-SMAC),該協(xié)議在S-MAC協(xié)議的基礎(chǔ)上改進(jìn)了固定占空比的劣勢,采用根據(jù)每個節(jié)點(diǎn)上的數(shù)據(jù)包的平均延遲調(diào)整占空比的策略。
2.1 ATC-SMAC協(xié)議的工作原理
ATC-SMAC協(xié)議支持傳感器網(wǎng)絡(luò)中的不同節(jié)點(diǎn)擁有不同的占空比。現(xiàn)在假設(shè)節(jié)點(diǎn)的初始化占空比為P,幀長為T,睡眠時間為Tsleep,工作時間為Tactive,顯然有,P= Tactive/T。設(shè)數(shù)據(jù)包在某節(jié)點(diǎn)的平均阻塞延遲為Tblock。
ATC-SMAC的節(jié)點(diǎn)占空比調(diào)整策略如下:如果Tblock的變化超過了Pctr,那么占空比也要調(diào)整相應(yīng)的比例;不論這種變化是增加還是減少,只要變化的范圍超過了Pctr,占空比都會調(diào)整;根據(jù)Tblock變化的幅度,占空比調(diào)整的幅度也會相應(yīng)地變化。本文中Pctr選為20%,經(jīng)過后面的仿真實驗驗證,Pctr為20%的ATC-SMAC協(xié)議要比自適應(yīng)的S-MAC協(xié)議更加優(yōu)秀。為了通過減少節(jié)點(diǎn)的計算量從而達(dá)到節(jié)省節(jié)點(diǎn)能量的目的,節(jié)點(diǎn)的數(shù)據(jù)包平均時延為兩個同步周期計算一次。節(jié)點(diǎn)統(tǒng)計在剛剛過去的兩個同步周期內(nèi)自己轉(zhuǎn)發(fā)的所有數(shù)據(jù)包的延遲。對于每一個數(shù)據(jù)包,在它進(jìn)入節(jié)點(diǎn)的緩沖隊列的時候,從數(shù)據(jù)包的報頭中可以看到上一個節(jié)點(diǎn)發(fā)送出該數(shù)據(jù)包的時刻Tin,忽略數(shù)據(jù)在物理介質(zhì)中傳播的時間,記錄該數(shù)據(jù)包從本節(jié)點(diǎn)上發(fā)送出去的時刻Tout,該節(jié)點(diǎn)的延遲Ti=Tout-Tin。對于該節(jié)點(diǎn)轉(zhuǎn)發(fā)的數(shù)據(jù)包1,2,…,n,統(tǒng)計得出它們的延遲T1,T2,…,Tn,得到該節(jié)點(diǎn)的平均延遲Teven為:Teven=(T1+T2+…+Tn)/n
(1) 節(jié)點(diǎn)除了計算剛剛過去的兩個同步周期內(nèi)的平均延遲外,還保存上兩個同步周期內(nèi)的平均延遲Tpast。
如果在剛剛過去的兩個同步周期內(nèi),節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的量比較大,延遲較高,Teven>Tpast,那么計算Teven高于Tpast的百分比P,如果P不到20%,那么該節(jié)點(diǎn)的占空比不做調(diào)整;如果P高于20%(包括20%)小于40%,那么該節(jié)點(diǎn)在下一個同步周期的時候?qū)⒆约旱恼伎毡壬险{(diào)20%;如果P高于40%(包括40%)小于60%,那么占空比往上調(diào)整40%;依次類推,如果P高于C%(包括C%,其中C為20的整數(shù)倍)而小于(C+20)%,那么占空比往上調(diào)整C%。
同理可得向下調(diào)整占空比的方式:如果在剛剛過去的兩個同步周期內(nèi),節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的量比較小,延遲較低,Teven 占空比向上調(diào)整過程的偽代碼表示如下: 2.2 ATC-SMAC的節(jié)能策略分析 PCTR為20%的基于ATC-SMAC協(xié)議的傳感器在吞吐量、端到端延時以及能量消耗上都要略優(yōu)于動態(tài)的S-MAC協(xié)議。與使用固定占空比的S-MAC協(xié)議相比,ATC-SMAC在吞吐量上平均要比S-MAC協(xié)議高大約1倍;在端到端延時這項上,ATC-SMAC的數(shù)據(jù)包平均時延大約為S-MAC協(xié)議的0.6倍;ATC-SMAC平均每字節(jié)消耗的能量大概為S-MAC協(xié)議的0.4倍。與動態(tài)調(diào)整的S-MAC協(xié)議相比,ATC-SMAC協(xié)議的平均端到端時間大概為動態(tài)S-MAC協(xié)議的70%,ATC-SMAC協(xié)議的平均吞吐量大概為動態(tài)S-MAC協(xié)議的1.2倍,ATC-SMAC平均傳輸每字節(jié)消耗的能量大概為動態(tài)S-MAC協(xié)議的75%。 3 結(jié) 語 ATC-SMAC協(xié)議在S-MAC協(xié)議的基礎(chǔ)上進(jìn)行了改進(jìn),使用了更加優(yōu)秀的動態(tài)調(diào)整占空比的算法。它可以讓節(jié)點(diǎn)根據(jù)自己流量的變化動態(tài)地調(diào)整自身的占空比。通過仿真結(jié)果,可以看出ATC-SMAC協(xié)議在端到端延遲、能量使用效率以及網(wǎng)絡(luò)吞吐量等方面較S-MAC協(xié)議(自適應(yīng)和非自適應(yīng)兩種)都有一定程度的提高。 參 考 文 獻(xiàn) [1] CULLAR D, ESTRIN D, STRVASTAVA M. Overview of sensor network [J] Computer, 2004, 37(8): 41-49. [2] 任豐原,黃海寧,林闖.無線傳感器網(wǎng)絡(luò)[J].軟件學(xué)報,2003,14(7):4-13. [3] CULLAR D, ESTRIN D, STRVASTAVA M. Overview of sensor network [J] Computer, 2004, 37(8): 41-49. [4] HOLGER K, ANDREAS W. A short survey of wireless sensor networks [J] Tech. Rep., 2003(3): 293-315. [5] 朱培棟,桂春梅,龔虎.無線傳感器網(wǎng)絡(luò)MAC協(xié)議研究進(jìn)展[J]軟件學(xué)報,2008,19(2):389-403. [6] 劉冰,張琳,張惠民.自適應(yīng)無線傳感器網(wǎng)絡(luò)MAC協(xié)議[J].北京郵電大學(xué)學(xué)報,2007,30(5):108-111.