無線傳感器網絡高效的MAC協議研究
一般來說,每個節點都有一個常規的休眠周期,即沒有數據收發情況下的休眠周期。自適應前導技術,在常規的休眠周期中引入一些臨時性的休眠調度,但臨時調度行為不會干擾節點固有的休眠調度周期。圖5為某個節點的實際休眠調度周期圖,其中每個slot為一個正常的休眠周期。節點在slot1收發完數據后休眠;在slot2醒來,發現隊列長度大于QImax,查看鄰居休眠表后再轉入休眠;若干時間后醒來發送前導,與接收端完成數據傳輸后,再次進入休眠。在slot3醒來后,為等待接收端的hello消息而長時間監聽信道,直至slot4完成傳輸后休眠;在slot5仍按時醒來。本文引用地址:http://www.j9360.com/article/162172.htm
由于晶振頻率的不一致,各節點會有計時上的誤差,即時鐘偏移,需要進行同步。節點在所發送的每個hello消息中都包含最近一次按常規調度醒來的時間,并在hello包上打上發送時間戳。收到hello消息的節點將包中的發送時間戳加上hello消息的發送延遲(消息長度/發送速度),得到鄰居節點的當前時鐘值(忽略信號傳播時間)。節點將自己的當前時鐘值減去鄰居節點的當前時鐘值,得到相對于該鄰居節點的時鐘偏移量。為減小估計誤差,可對最近n次的時鐘偏移量取算術平均值,作為當前時刻相對于該鄰居節點的時鐘偏移。
各節點通過與鄰居節點交換hello消息,獲得與鄰居節點的時鐘偏差,并以此修正鄰居休眠調度表。由于每個節點的調度周期相同,所以鄰居休眠調度表中只記錄每個鄰居最近一次常規調度醒來的時間。
2.3 競爭信道
在RI-MAC中,接收端接收完一幀后發送的beacon消息有兩個作用,一是告知數據接收完畢,二是詢問是否還有節點要向它發送。因此,正在通信的接收端具有優先使用信道的權利,這在某些情況下會導致接收節點長時間占用信道。例如在一個樹型網絡中,所有節點都要向樹根傳輸數據,越靠近樹根的節點轉發壓力越大。假如有兩個靠近樹根的節點是鄰居,就可能出現一個節點長時間占用信道,而另一個節點長時間無法接收數據的情況。
取消beacon消息的第二個作用可以較好地避免這個問題,即當一個節點接收完數據后放棄信道,然后所有節點重新競爭信道,這會使網絡中的數據傳輸更均衡。
2.4 消息格式
Hello包在IEEE 802.1 5.4的beacon幀基礎上設計,如圖6所示。其中,幀長度、FCF(Frame Control Field)和FCS(Frame Check Seq-uence)為原有的域。Hello消息增加了用于標記幀功能的H域、接收節點和發送節點ID,記錄最近一次常規調度醒來時間的sys域和hello包發送時間戳time-stamp。
節點發送的hello消息(查詢是否有發送給自己的數據)中Dst及BW域為空,發生沖突后填入KBW值,確認傳輸成功的hello幀中填入Dst域,防止其它節點向其傳輸數據。H域的第一位(0/1)標識該幀是接收節點發送的探詢Hello消息還是響應發送端前導的hello消息,第二位(0/1)標識該幀中BW域是否有效,第三位(0/1)標識該幀中Dst域是否有效,其余位置0。
評論