基于SMAC的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )MAC協(xié)議的分析與優(yōu)化
摘要:首先對MAC協(xié)議進(jìn)行了相關(guān)介紹。然后重點(diǎn)介紹了一種基于競爭的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )MAC層協(xié)議SMAC協(xié)議。其核心是提出了一種新的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的MAC協(xié)議設計方案。基于動(dòng)態(tài)調整占空比的思想,提出了ATC-SMAC協(xié)議。該協(xié)議在S-MAC協(xié)議的基礎上改進(jìn)了固定占空比的劣勢,根據每個(gè)節點(diǎn)上的數據包的平均延遲調整占空比。通過(guò)動(dòng)態(tài)地調整每個(gè)節點(diǎn)的占空比,使不同流量的節點(diǎn)擁有不同的工作時(shí)間,協(xié)議根據不同節點(diǎn)的流量情況自適應地對其占空比進(jìn)行調整。經(jīng)過(guò)仿真試驗,得到ATC-MAC在網(wǎng)絡(luò )端對端延遲、能量消耗以及吞吐量方面較S-MAC協(xié)議都有比較明顯的提高。
關(guān)鍵詞:無(wú)線(xiàn)傳感器網(wǎng)路;MAC協(xié)議;動(dòng)態(tài)占空比;ATC-SMAC協(xié)議
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )協(xié)議ATC-SMAC主要是提高基于競爭的S-MAC協(xié)議的能量使用率,同時(shí)減少S-MAC協(xié)議的網(wǎng)絡(luò )延遲。ATC-SMAC協(xié)議通過(guò)自適應地調整每一個(gè)節點(diǎn)的占空比,讓節點(diǎn)在不同的流量下使用不同的占空比工作,做到流量大時(shí)工作更長(cháng)的時(shí)間,流量小時(shí)工作更短的時(shí)間,沒(méi)有流量的時(shí)候就不工作。
1 S-MAC協(xié)議的分析和研究
S-MAC協(xié)議是一種基于競爭的控制協(xié)議,具有同步機制功能與無(wú)中心等特點(diǎn),不需要局部或全局中心主節點(diǎn)的調度傳感器節點(diǎn)自己發(fā)現鄰居節點(diǎn),并合理地安排占用信道的時(shí)間。
1.1 S-MAC協(xié)議
S-MAC協(xié)議時(shí)間分為若干個(gè)幀,幀長(cháng)度由應用程序來(lái)確定,幀內分為活動(dòng)與睡眠兩個(gè)部分。在睡覺(jué)時(shí)段,節點(diǎn)關(guān)閉發(fā)送器模塊,緩存在此時(shí)負責采集數據信息,數據在等待序列中,到活動(dòng)階段集中進(jìn)行發(fā)送。在活動(dòng)開(kāi)始時(shí),發(fā)送節點(diǎn)進(jìn)入同步機制決定幀長(cháng)度的確定方式,之后通過(guò)(RTS/CTS/DATA/ACK)機制發(fā)送數據信息,這個(gè)機制能夠避免因沖突產(chǎn)生的能耗。通過(guò)同步機制,局部的節點(diǎn)之間可以采用相同的時(shí)間周期,采用相同的工作休眠策略,它方便了無(wú)線(xiàn)傳感器網(wǎng)絡(luò )發(fā)現新節點(diǎn)。
1.2 S-MAC的節能機制分析
為了減少無(wú)線(xiàn)傳感器網(wǎng)絡(luò )消耗的能量,在IEEE 802.11基礎上提出了一種專(zhuān)門(mén)的傳感器網(wǎng)絡(luò )MAC協(xié)議S-MAc協(xié)議。無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的沖突重傳、接收到不是發(fā)送給自己的數據、控制信號、空閑偵聽(tīng)等造成傳感器網(wǎng)絡(luò )耗能的原因。它引入了節點(diǎn)間的SYNC機制,允許沒(méi)有數據發(fā)送和接收的節點(diǎn)進(jìn)入休眠狀態(tài)以節省耗能。但根據前文所討論的,睡眠的本身會(huì )引起數據的傳輸中斷,從而增加延時(shí)。下面將具體分析S-MAC協(xié)議是怎么節能的。
1.2.1 交替偵聽(tīng)/睡眠機制
S-MAC協(xié)議的工作是按照周期進(jìn)行的,在每個(gè)周期里,每一個(gè)基于S-MAC協(xié)議的節點(diǎn)都會(huì )工作一段時(shí)間、睡眠一段時(shí)間,通過(guò)減少節點(diǎn)的工作時(shí)間來(lái)節省能量。如圖1所示S-MAC協(xié)議的一個(gè)周期包含了睡眠和偵聽(tīng)兩個(gè)階段,偵聽(tīng)階段屬于工作階段,偵聽(tīng)階段如果收到數據包,則節點(diǎn)之間會(huì )建立通信。如果節點(diǎn)處于睡眠狀態(tài),則節點(diǎn)不能接收任何數據,發(fā)送給它的數據都會(huì )被阻塞。處于睡眠狀態(tài)的節點(diǎn)會(huì )在一定時(shí)間后醒來(lái)。在S-MAC協(xié)議中,相鄰的節點(diǎn)是盡量同時(shí)睡眠同時(shí)偵聽(tīng)的,為了保證時(shí)間上的一致,防止時(shí)鐘偏移,不同節點(diǎn)間需要定期廣播同步包來(lái)交換時(shí)間信息,從而進(jìn)行調整,做到同步。
1.2.2 “虛擬簇”機制
S-MAC協(xié)議使用了“虛擬簇”的機制,在“虛擬簇”機制下,節點(diǎn)之間的調度信息是通過(guò)節點(diǎn)廣播SYNC包來(lái)實(shí)現的。S-MAC協(xié)議使用調度表來(lái)保存調度信息,每一個(gè)節點(diǎn)會(huì )保存一個(gè)調度表。節點(diǎn)會(huì )在啟動(dòng)的初期監聽(tīng)一段時(shí)間,因為S-MAC協(xié)議是固定占空比的,所以這段時(shí)間是固定的。在監聽(tīng)的這段時(shí)間,如果節點(diǎn)能夠收到鄰居節點(diǎn)的調度信息,則它使用鄰居節點(diǎn)的調度周期更新自己的調度周期,并且它會(huì )在一段時(shí)間后廣播自己的調度信息。如果接收到的鄰居節點(diǎn)的調度方式與自己的調度方式相同,則調度方式不變;如果發(fā)現鄰居節點(diǎn)的調度方式與自己不同,而且還沒(méi)有收到與自己調度方式相同的節點(diǎn)消息,則使用新的調度方式進(jìn)行調度。
1.2.3 串音避免機制
基于競爭MAC協(xié)議能量消耗的一個(gè)重要原因就是串音。在S-MAC協(xié)議中,如果節點(diǎn)收到不是發(fā)送給自己的RTS數據包或CTS數據包,節點(diǎn)會(huì )直接進(jìn)入睡眠狀態(tài)。這樣,發(fā)送數據包的節點(diǎn)就不會(huì )把數據包和ACK報文發(fā)送到剛剛進(jìn)入睡眠的節點(diǎn),從而減少了節點(diǎn)處理這些數據包所消耗的能量。
1.2.4 沖突避免機制
競爭信道時(shí)產(chǎn)生的碰撞是每一個(gè)競爭類(lèi)協(xié)議都會(huì )碰到的問(wèn)題,S-MAC協(xié)議也對該問(wèn)題進(jìn)行了解決,盡量減少不必要的能量浪費。
1.2.5 消息分段機制
如果傳感器網(wǎng)絡(luò )傳遞比較長(cháng)的數據包,一個(gè)包出錯就會(huì )重傳,這就將耗費比較多的能量。S-MAC為了解決這個(gè)問(wèn)題采用了消息分段機制,將長(cháng)消息分成幾個(gè)小的消息發(fā)送出去。
評論