無線感測網路的MAC協定的S-MAC協定概述
感測網路由多個節點組成,利用短距離多跳通信來保存能量,大部分通信都發生在對等節點之間。網內處 理對網路生存期很重要,也就是暗示數據將作為整個訊息以存儲轉發的方式進行處理。最後,我們假設套用 將具有很長一段空閒時間,並且能夠容忍網路傳遞時間順序的延遲。
1.周期性偵聽和休眠
如上所述,在多數感測網路套用中,如果沒有感測到事件發生,節點將長期空閒。我們假設這樣一個事實 ,在該段時期內數據速率非常低,因此沒有必要使節點一直保持偵聽。S-MAC通過讓節點處於周期休眠狀態 來降低偵聽時間,每個節點休眠一段時間,然後喚醒並偵聽是否有其他節點想和它通信。在休眠期間,節點 關閉無線裝置,並設定定時器,隨後來喚醒自己。
偵聽和休眠的一個完整周期被稱為一幀。偵聽間隔通常是固定的,根據物理層和MAC層的參數來決定,比 如無線頻寬和競爭視窗大小。占空比指偵聽間隔與整個幀長度之比。休眠間隔可能根據不同的套用需求而改 變,它實際上改變占空比。簡單而言,這些值對所有的節點都是一樣的,所有節點都可以自由選擇它們各自 的偵聽/休眠時間表。然而,為了降低控制開銷,我們更希望鄰居節點保持同步,也就是說它們同時偵聽和 同時進入休眠。值得注意的是,在多跳網路中不是所有的鄰居節點都能夠保持同步。如果節點A和節點B必須 分別與不同的節點C和節點D同步,那么節點A和節點B可能具有不同的時間表,鄰居節點A和B具有不同的時間表,它們分別與節點C和節點D保持同步。
節點通過周期地向它們的直接鄰居廣播SYNC包來交換它們的時間表。一個節點在預定偵聽時間與它的鄰居 節點通信,以確保所有鄰居節點能夠通信,即使它們具有不同的時間表。比如,如果節點A想與 節點B通信,節點A必須等待直到節點B在偵聽c一個節點傳送一個SYNC包的時間稱為同步時間。S-MAC的一個 特徵是它將節點形成一個平面型的對等拓撲結構,不像簇協定,SMAC不需要通過簇頭協作。相反,節點在公 用時間表形成虛擬簇,與對等節點之間直接通信。該方法的一個優點是在拓撲發生變化時,它比基於簇方法 健壯。該機制的不足是由於周期休眠增加了延遲,而且,延遲有可能在每跳積聚。
2.衝突避免
如果多個鄰居節點同時想與一個節點通信,它們將試圖在該節點開始偵聽時傳送訊息,在該情況下,它們需要競爭媒體。在競爭協定中,IEEE 802.II在衝突避免這方面做得很好。S-MAC遵循類似的流程,包括虛擬載波偵聽和物理載波偵聽,解決隱藏終端問題的RTS/CTS(請求傳送/清除傳送)交換。每個傳輸包中都有一個持續時間域來標識該包要傳輸多長時間,如果一個節點收到一個傳輸給另外一個節點的包,該節點就能從持續時間域知道在多長時間內不能傳送數據。節點以變數形式記錄該值,被稱為網路分配矢量(NAV),NAV可以被看成一個計時器,每次計時器開始計時,節點遞減它的NAV,直到減少到0。在傳輸之前,節點首先檢查它的NAV,如果它的值不為0,節點就認為媒體忙,這被稱為虛擬載波偵聽。物理載波偵聽在物理層執行,通過偵聽信道進行可能的傳輸。載波偵聽時間是競爭視窗內的一個隨機值,以避免衝突和飢餓現象。如果虛擬載波偵聽和物理載波偵聽都標識媒體空閒,那么媒體就是空閒的。
在開始傳輸前,所有傳送者都執行載波偵聽。如果一個節點沒有獲得媒體,它將進入休眠,當接收機空閒和再一次偵聽時喚醒。廣播分組的傳送不需要RTS/CTS,單播分組在傳送者和接收者之間遵循RTS/CTS/DATA/ACK序列。RTS和CTS成功交換後,兩個節點將利用它們的休眠時間進行數據分組傳輸,直到它們完成傳輸後才遵循它們的休眠時間表。在每個偵聽間隔內,由於占空比操作和競爭機制,S-MAC有效地標識由於偵聽和碰撞產生的能量消耗。
4.S-MAC協定實現的關鍵技術如下。
(1)數據包的嵌套結構
在S-MAC協定中,上一層數據包包含了下一層數據包的內容。數據包傳送到哪一層,那一層只需要處理屬於它的部分。
(2)堆疊結構和功能
在S-MAC協定堆疊內,當MAC層接收到上層傳送過來的數據包後,它就開始載波偵聽。如果結果顯示MAC層空閒,它就會把數據傳到物理層;如果MAC層忙,它將會進入睡眠狀態,直到下一個可用時間的到來,再重新傳送。當MAC層在收到物理層傳送過來的數據包後,先通過循環冗餘校驗(CRC)表示沒有錯誤,MAC層就會將數據包傳向上層。
(3)選擇和維護調度表
在開始周期性偵聽和睡眠之前,每個節點都需要選擇睡眠調度機制並與鄰居節點一致。如何選擇和保持調度機制分為以下3種情況。
①節點在偵聽時間內,如果它沒有偵聽到其他節點的睡眠調度機制,則立即選擇一個睡眠調度機制。
②當節點在選擇和宣布自己的調度機制之前,收到了鄰居節點廣播的睡眠調度機制,它將採用鄰居節點的睡眠調度機制。
③當節點在選擇和廣播自已的睡眠調度機制之後,收到幾種不同的睡眠調度機制時,就要分以下兩種情況考慮:當節點沒有鄰居節點時,它會捨棄自己當前的睡眠調度機制,採用剛接收到的睡眠調度機制;當節點有一個或更多鄰居節點時,它將同時採用不同的調度機制。
(4)時間同步
在S-MAC協定中,節點與鄰居節點需要保持時間同步來同時偵聽和睡眠。S-MAC協定採用的是相對而不是絕對的時間戳,同時使偵聽時間遠大於時鐘誤差和漂移,來減少同步誤差,並且節點會根據收到的鄰居節點的數據包來更新自己的時間,從而與鄰居節點保持時間同步。
(5)帶衝突避免的載波偵聽多路訪問
帶衝突避免的載波偵聽多路訪問( CSMA/CA)的基本機制是在接收者和傳送者之間建立一個握手機制來傳輸數據。
握手機制是:由傳送端傳送一個請求傳送( RTS)包給它的接收者,接收者在收到以後就回復一個準備接收(CTS)包,傳送端在收到CTS包後,開始傳送數據包,RTS與CTS之間的握手是為了使傳送端和接收端的鄰居節點知道它們正在進行數據傳輸,從而減少傳輸碰撞。
(6)網路分配矢量
在S-MAC協定中,每個節點都保持了一個網路分配矢量(NAV)來表示鄰居節點的活動時間,S-MAC協定中在每個數據包中都包含了一個持續時間指示值,持續時間指示值表示目前這個通信需要持續的時間。鄰居節點收到傳送者或接收者發往其他節點的數據包時,就可以知道它需要睡眠多久,即用數據包中的持續時間更新NAV昀值,當NAV的值不為零時,節點應該進入睡眠狀態來避免串音。當NAV變為零時,它就馬上醒來,準備進行通信。
與IEEE 802.11 MAC相比,S-MAC協定儘量延長其他節點的休眠時間,降低了碰撞機率,減少了空閒偵聽所消耗的能源;通過流量自適應的偵聽機制,減少訊息在網路中的傳輸延遲;採用帶內信令來減少重傳和避免監聽不必要的數據;通過訊息分割和突發傳遞機制來和帶內數據處理來減少控制訊息的開銷和訊息的傳遞延遲。因而S-MAC協定具有很好的節能特性,這對無線感測網路的需求和特點來說是合理的,但是由於S-MAC中占空比固定不變,因此它不能很好地適應網路流量的變化,而且協定的實現非常複雜,需要占用大量的存儲空間。這個對於資源受限的感測器節點尤為突出。