基于SMAC的無(wú)線傳感器網(wǎng)絡(luò)MAC協(xié)議的分析與優(yōu)化
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:首先對(duì)MAC協(xié)議進(jìn)行了相關(guān)介紹。然后重點(diǎn)介紹了一種基于競(jìng)爭(zhēng)的無(wú)線傳感器網(wǎng)絡(luò)MAC層協(xié)議SMAC協(xié)議。其核心是提出了一種新的無(wú)線傳感器網(wǎng)絡(luò)的MAC協(xié)議設(shè)計(jì)方案?;趧?dòng)態(tài)調(diào)整占空比的思想,提出了ATC-SMAC協(xié)議。該協(xié)議在S-MAC協(xié)議的基礎(chǔ)上改進(jìn)了固定占空比的劣勢(shì),根據(jù)每個(gè)節(jié)點(diǎn)上的數(shù)據(jù)包的平均延遲調(diào)整占空比。通過(guò)動(dòng)態(tài)地調(diào)整每個(gè)節(jié)點(diǎn)的占空比,使不同流量的節(jié)點(diǎn)擁有不同的工作時(shí)間,協(xié)議根據(jù)不同節(jié)點(diǎn)的流量情況自適應(yīng)地對(duì)其占空比進(jìn)行調(diào)整。經(jīng)過(guò)仿真試驗(yàn),得到ATC-MAC在網(wǎng)絡(luò)端對(duì)端延遲、能量消耗以及吞吐量方面較S-MAC協(xié)議都有比較明顯的提高。
關(guān)鍵詞:無(wú)線傳感器網(wǎng)路;MAC協(xié)議;動(dòng)態(tài)占空比;ATC-SMAC協(xié)議
無(wú)線傳感器網(wǎng)絡(luò)協(xié)議ATC-SMAC主要是提高基于競(jìng)爭(zhēng)的S-MAC協(xié)議的能量使用率,同時(shí)減少S-MAC協(xié)議的網(wǎng)絡(luò)延遲。ATC-SMAC協(xié)議通過(guò)自適應(yīng)地調(diào)整每一個(gè)節(jié)點(diǎn)的占空比,讓節(jié)點(diǎn)在不同的流量下使用不同的占空比工作,做到流量大時(shí)工作更長(zhǎng)的時(shí)間,流量小時(shí)工作更短的時(shí)間,沒(méi)有流量的時(shí)候就不工作。
1 S-MAC協(xié)議的分析和研究
S-MAC協(xié)議是一種基于競(jìng)爭(zhēng)的控制協(xié)議,具有同步機(jī)制功能與無(wú)中心等特點(diǎn),不需要局部或全局中心主節(jié)點(diǎn)的調(diào)度傳感器節(jié)點(diǎn)自己發(fā)現(xiàn)鄰居節(jié)點(diǎn),并合理地安排占用信道的時(shí)間。
1.1 S-MAC協(xié)議
S-MAC協(xié)議時(shí)間分為若干個(gè)幀,幀長(zhǎng)度由應(yīng)用程序來(lái)確定,幀內(nèi)分為活動(dòng)與睡眠兩個(gè)部分。在睡覺(jué)時(shí)段,節(jié)點(diǎn)關(guān)閉發(fā)送器模塊,緩存在此時(shí)負(fù)責(zé)采集數(shù)據(jù)信息,數(shù)據(jù)在等待序列中,到活動(dòng)階段集中進(jìn)行發(fā)送。在活動(dòng)開(kāi)始時(shí),發(fā)送節(jié)點(diǎn)進(jìn)入同步機(jī)制決定幀長(zhǎng)度的確定方式,之后通過(guò)(RTS/CTS/DATA/ACK)機(jī)制發(fā)送數(shù)據(jù)信息,這個(gè)機(jī)制能夠避免因沖突產(chǎn)生的能耗。通過(guò)同步機(jī)制,局部的節(jié)點(diǎn)之間可以采用相同的時(shí)間周期,采用相同的工作休眠策略,它方便了無(wú)線傳感器網(wǎng)絡(luò)發(fā)現(xiàn)新節(jié)點(diǎn)。
1.2 S-MAC的節(jié)能機(jī)制分析
為了減少無(wú)線傳感器網(wǎng)絡(luò)消耗的能量,在IEEE 802.11基礎(chǔ)上提出了一種專門的傳感器網(wǎng)絡(luò)MAC協(xié)議S-MAc協(xié)議。無(wú)線傳感器網(wǎng)絡(luò)的沖突重傳、接收到不是發(fā)送給自己的數(shù)據(jù)、控制信號(hào)、空閑偵聽(tīng)等造成傳感器網(wǎng)絡(luò)耗能的原因。它引入了節(jié)點(diǎn)間的SYNC機(jī)制,允許沒(méi)有數(shù)據(jù)發(fā)送和接收的節(jié)點(diǎn)進(jìn)入休眠狀態(tài)以節(jié)省耗能。但根據(jù)前文所討論的,睡眠的本身會(huì)引起數(shù)據(jù)的傳輸中斷,從而增加延時(shí)。下面將具體分析S-MAC協(xié)議是怎么節(jié)能的。
1.2.1 交替?zhèn)陕?tīng)/睡眠機(jī)制
S-MAC協(xié)議的工作是按照周期進(jìn)行的,在每個(gè)周期里,每一個(gè)基于S-MAC協(xié)議的節(jié)點(diǎn)都會(huì)工作一段時(shí)間、睡眠一段時(shí)間,通過(guò)減少節(jié)點(diǎn)的工作時(shí)間來(lái)節(jié)省能量。如圖1所示S-MAC協(xié)議的一個(gè)周期包含了睡眠和偵聽(tīng)兩個(gè)階段,偵聽(tīng)階段屬于工作階段,偵聽(tīng)階段如果收到數(shù)據(jù)包,則節(jié)點(diǎn)之間會(huì)建立通信。如果節(jié)點(diǎn)處于睡眠狀態(tài),則節(jié)點(diǎn)不能接收任何數(shù)據(jù),發(fā)送給它的數(shù)據(jù)都會(huì)被阻塞。處于睡眠狀態(tài)的節(jié)點(diǎn)會(huì)在一定時(shí)間后醒來(lái)。在S-MAC協(xié)議中,相鄰的節(jié)點(diǎn)是盡量同時(shí)睡眠同時(shí)偵聽(tīng)的,為了保證時(shí)間上的一致,防止時(shí)鐘偏移,不同節(jié)點(diǎn)間需要定期廣播同步包來(lái)交換時(shí)間信息,從而進(jìn)行調(diào)整,做到同步。
1.2.2 “虛擬簇”機(jī)制
S-MAC協(xié)議使用了“虛擬簇”的機(jī)制,在“虛擬簇”機(jī)制下,節(jié)點(diǎn)之間的調(diào)度信息是通過(guò)節(jié)點(diǎn)廣播SYNC包來(lái)實(shí)現(xiàn)的。S-MAC協(xié)議使用調(diào)度表來(lái)保存調(diào)度信息,每一個(gè)節(jié)點(diǎn)會(huì)保存一個(gè)調(diào)度表。節(jié)點(diǎn)會(huì)在啟動(dòng)的初期監(jiān)聽(tīng)一段時(shí)間,因?yàn)镾-MAC協(xié)議是固定占空比的,所以這段時(shí)間是固定的。在監(jiān)聽(tīng)的這段時(shí)間,如果節(jié)點(diǎn)能夠收到鄰居節(jié)點(diǎn)的調(diào)度信息,則它使用鄰居節(jié)點(diǎn)的調(diào)度周期更新自己的調(diào)度周期,并且它會(huì)在一段時(shí)間后廣播自己的調(diào)度信息。如果接收到的鄰居節(jié)點(diǎn)的調(diào)度方式與自己的調(diào)度方式相同,則調(diào)度方式不變;如果發(fā)現(xiàn)鄰居節(jié)點(diǎn)的調(diào)度方式與自己不同,而且還沒(méi)有收到與自己調(diào)度方式相同的節(jié)點(diǎn)消息,則使用新的調(diào)度方式進(jìn)行調(diào)度。
1.2.3 串音避免機(jī)制
基于競(jìng)爭(zhēng)MAC協(xié)議能量消耗的一個(gè)重要原因就是串音。在S-MAC協(xié)議中,如果節(jié)點(diǎn)收到不是發(fā)送給自己的RTS數(shù)據(jù)包或CTS數(shù)據(jù)包,節(jié)點(diǎn)會(huì)直接進(jìn)入睡眠狀態(tài)。這樣,發(fā)送數(shù)據(jù)包的節(jié)點(diǎn)就不會(huì)把數(shù)據(jù)包和ACK報(bào)文發(fā)送到剛剛進(jìn)入睡眠的節(jié)點(diǎn),從而減少了節(jié)點(diǎn)處理這些數(shù)據(jù)包所消耗的能量。
1.2.4 沖突避免機(jī)制
競(jìng)爭(zhēng)信道時(shí)產(chǎn)生的碰撞是每一個(gè)競(jìng)爭(zhēng)類協(xié)議都會(huì)碰到的問(wèn)題,S-MAC協(xié)議也對(duì)該問(wèn)題進(jìn)行了解決,盡量減少不必要的能量浪費(fèi)。
1.2.5 消息分段機(jī)制
如果傳感器網(wǎng)絡(luò)傳遞比較長(zhǎng)的數(shù)據(jù)包,一個(gè)包出錯(cuò)就會(huì)重傳,這就將耗費(fèi)比較多的能量。S-MAC為了解決這個(gè)問(wèn)題采用了消息分段機(jī)制,將長(zhǎng)消息分成幾個(gè)小的消息發(fā)送出去。
1.2.6 自適應(yīng)偵聽(tīng)機(jī)制
自適應(yīng)偵聽(tīng)機(jī)制的基本思想是:當(dāng)一個(gè)節(jié)點(diǎn)收到RTS或者CTS數(shù)據(jù)包,偵聽(tīng)到鄰居節(jié)點(diǎn)有數(shù)據(jù)通信,就進(jìn)入睡眠,同時(shí)記錄它的通信時(shí)間。對(duì)通信時(shí)間的記錄幫助節(jié)點(diǎn)通信結(jié)束后能夠醒來(lái),在一個(gè)較短的時(shí)間內(nèi)偵聽(tīng)信道查看是否有數(shù)據(jù)包需要傳遞,這種偵聽(tīng)同樣是通過(guò)是否接收RTS數(shù)據(jù)包和CTS數(shù)據(jù)包來(lái)實(shí)現(xiàn)的。通信結(jié)束后節(jié)點(diǎn)會(huì)醒來(lái),這個(gè)時(shí)候節(jié)點(diǎn)進(jìn)入工作狀態(tài),偵聽(tīng)是否有數(shù)據(jù)包到達(dá),如果有數(shù)據(jù)包到達(dá)則建立信道進(jìn)行通信,如果沒(méi)有數(shù)據(jù)包到達(dá),則結(jié)束偵聽(tīng),繼續(xù)進(jìn)入睡眠,按照既定調(diào)度方式工作。
2 改進(jìn)的MAC協(xié)議ATC-SMAC
如前面所述,S-MAC協(xié)議由于采用了固定的占空比,它不能根據(jù)網(wǎng)絡(luò)中數(shù)據(jù)流的延遲情況動(dòng)態(tài)調(diào)整占空比大小,造成了兩個(gè)主要的問(wèn)題。本節(jié)提出了一種新的無(wú)線傳感器網(wǎng)絡(luò)的MAC層協(xié)議——ATC-SMAC(Automation of Time Controlled-SMAC),該協(xié)議在S-MAC協(xié)議的基礎(chǔ)上改進(jìn)了固定占空比的劣勢(shì),采用根據(jù)每個(gè)節(jié)點(diǎn)上的數(shù)據(jù)包的平均延遲調(diào)整占空比的策略。
2.1 ATC-SMAC協(xié)議的工作原理
ATC-SMAC協(xié)議支持傳感器網(wǎng)絡(luò)中的不同節(jié)點(diǎn)擁有不同的占空比?,F(xiàn)在假設(shè)節(jié)點(diǎn)的初始化占空比為P,幀長(zhǎng)為T,睡眠時(shí)間為Tsleep,工作時(shí)間為Tactive,顯然有,P=Tactive/T。設(shè)數(shù)據(jù)包在某節(jié)點(diǎn)的平均阻塞延遲為Tblock。
ATC-SMAC的節(jié)點(diǎn)占空比調(diào)整策略如下:如果Tblock的變化超過(guò)了Pctr,那么占空比也要調(diào)整相應(yīng)的比例;不論這種變化是增加還是減少,只要變化的范圍超過(guò)了Pctr,占空比都會(huì)調(diào)整;根據(jù)Tblock變化的幅度,占空比調(diào)整的幅度也會(huì)相應(yīng)地變化。本文中Pctr選為20%,經(jīng)過(guò)后面的仿真實(shí)驗(yàn)驗(yàn)證,Pctr為20%的ATC-SMAC協(xié)議要比自適應(yīng)的S-MAC協(xié)議更加優(yōu)秀。為了通過(guò)減少節(jié)點(diǎn)的計(jì)算量從而達(dá)到節(jié)省節(jié)點(diǎn)能量的目的,節(jié)點(diǎn)的數(shù)據(jù)包平均時(shí)延為兩個(gè)同步周期計(jì)算一次。節(jié)點(diǎn)統(tǒng)計(jì)在剛剛過(guò)去的兩個(gè)同步周期內(nèi)自己轉(zhuǎn)發(fā)的所有數(shù)據(jù)包的延遲。對(duì)于每一個(gè)數(shù)據(jù)包,在它進(jìn)入節(jié)點(diǎn)的緩沖隊(duì)列的時(shí)候,從數(shù)據(jù)包的報(bào)頭中可以看到上一個(gè)節(jié)點(diǎn)發(fā)送出該數(shù)據(jù)包的時(shí)刻Tin,忽略數(shù)據(jù)在物理介質(zhì)中傳播的時(shí)間,記錄該數(shù)據(jù)包從本節(jié)點(diǎn)上發(fā)送出去的時(shí)刻Tout,該節(jié)點(diǎn)的延遲Ti=Tout-Tin。對(duì)于該節(jié)點(diǎn)轉(zhuǎn)發(fā)的數(shù)據(jù)包1,2,…,n,統(tǒng)計(jì)得出它們的延遲T1,T2,…,Tn,得到該節(jié)點(diǎn)的平均延遲Teven為:
Teven=(T1+T2+…+Tn)/n (1)
節(jié)點(diǎn)除了計(jì)算剛剛過(guò)去的兩個(gè)同步周期內(nèi)的平均延遲外,還保存上兩個(gè)同步周期內(nèi)的平均延遲Tpast。
如果在剛剛過(guò)去的兩個(gè)同步周期內(nèi),節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的量比較大,延遲較高,Teven>Tpast,那么計(jì)算Teven高于Tpast的百分比P,如果P不到20%,那么該節(jié)點(diǎn)的占空比不做調(diào)整;如果P高于20%(包括20%)小于40%,那么該節(jié)點(diǎn)在下一個(gè)同步周期的時(shí)候?qū)⒆约旱恼伎毡壬险{(diào)20%;如果P高于40%(包括40%)小于60%,那么占空比往上調(diào)整40%;依次類推,如果P高于C%(包括C%,其中C為20的整數(shù)倍)而小于(C+20)%,那么占空比往上調(diào)整C%。
同理可得向下調(diào)整占空比的方式:如果在剛剛過(guò)去的兩個(gè)同步周期內(nèi),節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的量比較小,延遲較低,Teven<Tpast,那么計(jì)算Teven低于Tpast的百分比P,如果P不到20%,那么該節(jié)點(diǎn)的占空比不做調(diào)整;如果P高于20%(包括20%)小于40%,那么該節(jié)點(diǎn)在進(jìn)入下一個(gè)同步周期的時(shí)候?qū)⒆约旱恼伎毡认抡{(diào)20%;如果P高于40%(包括40%)小于60%,那么占空比往下調(diào)整40%;依次類推,如果P高于C%(包括C%,其中C為20的整數(shù)倍)而小于(C+20)%,那么占空比往下調(diào)整C%。
占空比向上調(diào)整過(guò)程的偽代碼表示如下:
2.2 ATC-SMAC的節(jié)能策略分析
Pctr為20%的基于ATC-SMAC協(xié)議的傳感器在吞吐量、端到端延時(shí)以及能量消耗上都要略優(yōu)于動(dòng)態(tài)的S-MAC協(xié)議。與使用固定占空比的S-MAC協(xié)議相比,ATC-SMAC在吞吐量上平均要比S-MAC協(xié)議高大約1倍;在端到端延時(shí)這項(xiàng)上,ATC-SMAC的數(shù)據(jù)包平均時(shí)延大約為S-MAC協(xié)議的0.6倍;ATC-SMAC平均每字節(jié)消耗的能量大概為S-MAC協(xié)議的0.4倍。與動(dòng)態(tài)調(diào)整的S-MAC協(xié)議相比,ATC-SMAC協(xié)議的平均端到端時(shí)間大概為動(dòng)態(tài)S-MAC協(xié)議的70%,ATC-SMAC協(xié)議的平均吞吐量大概為動(dòng)態(tài)S-MAC協(xié)議的1.2倍,ATC-SMAC平均傳輸每字節(jié)消耗的能量大概為動(dòng)態(tài)S-MAC協(xié)議的75%。
3 結(jié)語(yǔ)
ATC-SMAC協(xié)議在SMAC協(xié)議的基礎(chǔ)上進(jìn)行了改進(jìn),使用了更加優(yōu)秀的動(dòng)態(tài)調(diào)整占空比的算法。它可以讓節(jié)點(diǎn)根據(jù)自己流量的變化動(dòng)態(tài)地調(diào)整自身的占空比。通過(guò)仿真結(jié)果,可以看出ATC-SMAC協(xié)議在端到端延遲、能量使用效率以及網(wǎng)絡(luò)吞吐量等方面較S-MAC協(xié)議(自適應(yīng)和非自適應(yīng)兩種)都有一定程度的提高。