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