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