基于SMAC的無線傳感器網(wǎng)絡(luò)MAC協(xié)議的分析與優(yōu)化
摘要:首先對MAC協(xié)議進(jìn)行了相關(guān)介紹。然后重點(diǎn)介紹了一種基于競爭的無線傳感器網(wǎng)絡(luò)MAC層協(xié)議SMAC協(xié)議。其核心是提出了一種新的無線傳感器網(wǎng)絡(luò)的MAC協(xié)議設(shè)計(jì)方案。基于動態(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)過仿真試驗(yàn),得到ATC-MAC在網(wǎng)絡(luò)端對端延遲、能量消耗以及吞吐量方面較S-MAC協(xié)議都有比較明顯的提高。
關(guān)鍵詞:無線傳感器網(wǎng)路;MAC協(xié)議;動態(tài)占空比;ATC-SMAC協(xié)議
無線傳感器網(wǎng)絡(luò)協(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é)議,具有同步機(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ā)送。在活動開始時,發(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)陕牐邫C(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.2.2 “虛擬簇”機(jī)制
S-MAC協(xié)議使用了“虛擬簇”的機(jī)制,在“虛擬簇”機(jī)制下,節(jié)點(diǎn)之間的調(diào)度信息是通過節(jié)點(diǎn)廣播SYNC包來實(shí)現(xiàn)的。S-MAC協(xié)議使用調(diào)度表來保存調(diào)度信息,每一個節(jié)點(diǎn)會保存一個調(diào)度表。節(jié)點(diǎn)會在啟動的初期監(jiān)聽一段時間,因?yàn)镾-MAC協(xié)議是固定占空比的,所以這段時間是固定的。在監(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報(bào)文發(fā)送到剛剛進(jìn)入睡眠的節(jié)點(diǎn),從而減少了節(jié)點(diǎn)處理這些數(shù)據(jù)包所消耗的能量。
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ā)送出去。
評論