- 物聯網與無線傳感器網絡(第2版)
- 劉偉榮編著
- 3667字
- 2022-05-06 18:42:36
3.4.3 混合型MAC協議
競爭型MAC協議能很好地適應網絡規模和網絡數據流量的變化,可以更靈活地適應網絡拓撲結構的變化,無須精確的時鐘同步機制,較易實現;但存在能量效率不高的缺點,如存在由沖突重傳、空閑監聽、串擾、控制開銷引起的能量消耗。分配型MAC協議將信道資源按時隙、頻段或碼型分為多個子信道,各個子信道之間無沖突,互不干擾。數據包在傳輸過程中不存在沖突重傳,所以能量效率較高。此外,在分配型MAC協議(如TDMA)中,節點只在分配給自己的時隙中打開射頻部分,在其他時隙關閉射頻部分,可避免冗余接收,進一步降低能量損耗。但是分配型MAC協議通常需要網絡中的節點形成簇,不能靈活地適應網絡拓撲結構的變化。基于此,研究人員提出了混合型MAC協議,本節選擇比較典型的ZMAC協議進行介紹,該協議對競爭方式和分配方式進行了組合,可實現性能的整體提升。
1)基本思想
ZMAC協議是一種混合型MAC協議,采用CSMA機制作為基本方法,在競爭加劇時使用TDMA機制來解決信道沖突問題。ZMAC協議引入了時間幀的概念,每個時間幀又分為若干時隙。在ZMAC協議中,在網絡部署時每個節點執行一個時隙分配的DRAND算法。時隙分配完成后,每個節點都會在時間幀中擁有一個時隙。分配了時隙的節點成為該時隙的所有者,所有者在對應的時隙中發送數據的優先級最高。與TDMA的策略不同,在ZMAC協議中,節點可以選擇任何時隙發送數據。節點在某個時隙發送數據需要先偵聽信道的狀態,但是該時隙的所有者擁有更高的發送優先級。發送優先級的設置可通過設定退避時間窗口的大小來實現。時隙的所有者被賦予一個較小的時間窗口,能夠搶占信道。通過這種機制,時隙在被所有者限制時還能被其他的節點使用,從而提高信道利用率。該機制還隱含了根據信道的競爭情況在CSMA機制和TDMA機制間切換的方法。
2)關鍵技術
在網絡部署階段,節點啟動以后ZMAC協議將順序執行以下步驟:鄰居發現→時隙分配→本地時間幀交換→全局時間同步。在網絡的運行過程中,除非網絡拓撲結構發生重大變化,否則節點不會重復上述步驟,避免浪費能量。
(1)鄰居發現和時隙分配。當一個節點啟動后,就會開始一個相鄰節點的發現過程,周期性地發送PING消息。PING消息包含節點發現的所有一跳范圍內的節點,可以在一定范圍內隨機發送。通過這個過程,每個節點可以獲得自己兩跳范圍內的所有節點的信息,并作為時隙分配算法的輸入參數。時隙分配算法采用DRAND算法,可以確保分配相同的時隙給兩跳范圍內的節點,從而使節點在給一跳相鄰節點傳輸數據時不會被兩跳相鄰節點干擾。此外,DRAND算法分配給節點的時隙號不會超過其兩跳范圍內的節點數目。當有新的節點加入時,DRAND算法可以在不改變當前網絡的時隙調度的情況下,實現本地時隙分配的更新。
(2)本地時間幀交換。每個節點在分配了時隙后需要定位時間幀,常規的方法就是所有的網絡節點都保持同步,并且所有的節點對應的時間幀都相同,也就是具有同樣的起始時刻和結束時刻。這種方法需要在整個網絡中廣播時間幀最大時隙數量,所有的節點都是用同一長度的時間幀,但不能滿足局部時隙改變的自適應性。當網絡有新節點加入導致WSN需要改變時,需要在全網中重新廣播這個消息,這會帶來很大的開銷。ZMAC協議使用一種新的調度方法,這種方法采用一種局部的策略,每個節點維持一個本地的時間幀長度,那么節點i的本地時間幀長度就是2α,其中α滿足2α?1<Fi<2α?1。時隙的分配采用DRAND算法,假設分配給i的時隙是Si,可以保證節點i兩跳范圍內的任何節點不會使用Si。
ZMAC使用局部時間幀,需要保證所有節點開始的第一個時隙是在相同的時刻。如果節點時鐘同步,通過設定一個精確的時間作為每個節點的時隙是很容易實現的。新節點如果能夠保證和網絡的全局時鐘同步,可以很容易地實現時隙的同步。為了達到全局時鐘同步,ZMAC需要在網絡啟動的初期運行時鐘同步算法,如TPSN。在初始化同步之后,每個節點運行一個低開銷的局部同步協議。
3)傳輸控制
在網絡的初始化階段完成之后,每個節點都同步到了一個全局的時鐘,并且都擁有了自己的時間幀和時隙,可以對外提供服務。在ZMAC協議下,每個節點可以工作在兩個模式:低沖突級別(Low Contention Level,LCL)和高沖突級別(High Contention Level,HCL)模式。在一個節點的TECN周期,如果它從一個兩跳相鄰節點收到一個外部的沖突公告消息(Explicit Contention Notification,ECN),那么它就轉入HCL模式,否則該節點就處于LCL模式。在LCL模式下,任何節點可以在任何時隙競爭信道,但是在HCL下,只有擁有該時隙的節點,以及它的一跳相鄰節點才可以競爭信道。不管在哪種模式下,擁有該時隙的節點都擁有最高的優先級。當擁有該時隙的節點沒有數據傳送的時候,其他的節點可以使用這個時隙。ZMAC協議通過退避、信道空閑評估和低功耗監聽(LPL)來實現HCL和LCL。
當節點i有數據傳送時,它首先檢查自己是不是現在時隙的擁有者,如果是的話,它就選擇一個在[0,T0]之間的隨機數作為退避時間。當退避時間到達后,它啟動CCA來檢查信道是否空閑,如果信道空閑,那么它就發送數據;否則它就等待,直到信道空閑為止,然后重復上面的過程。如果節點i不是現在時隙的擁有者,并且它處于LCL狀態,但是當前的時隙沒有被其兩跳鄰居范圍內的節點占用,在這兩種情況下,節點i首先等待一段時間T0,然后在[T0,Tn0]的退避窗口中選擇一個隨機的退避時間。當退避時間到達后,采用和前面一樣的方法處理。還有第三種情況,即節點i處于LCL狀態,在這種情況下節點會一直等待,直到遇到一個時隙,這個時隙要么被節點i擁有,要么節點i的兩跳相鄰節點沒有任何節點使用它。
ECN的提出主要是為了解決隱藏終端的問題,雖然DRAND算法產生的時間片調度機制可以保證沒有隱藏終端現象,但是由于節點可以竊取其他節點的時隙發送數據,這會產生隱藏終端現象。當節點探測到了一個沖突比較嚴重的隱藏終端問題后,會產生一個ECN消息。隱藏終端的探測方法有兩種:一是計算節點的丟包率,這種方法需要MAC層提供ACK機制,這會帶來額外的開銷,降低信道的利用率;二是測量信道的噪聲水平,當發生沖突時,信道的噪聲水平較高,這種方法不需要額外的開銷,噪聲水平可以在數據發送的時候發送。當一個發送節點檢測到一個嚴重的沖突后,該節點會發送一個單播數據包給它,檢測出來發生沖突的那個節點,如果發送節點檢測到了多個發生嚴重沖突的節點,那么它就發送一個帶有這些發生沖突節點信息的廣播數據包。當節點j收到節點i發送來的ECN消息后,它首先檢查自己是否為ECN的目的節點,如果是的話,它就廣播該ECN消息給自己的所有一跳相鄰節點(不包括節點i),這些相鄰節點中肯定有引起沖突的節點。節點j發送的ECN消息叫作兩跳ECN,收到兩跳ECN的節點設置自己的工作方式為HCL模式。HCL是一個軟狀態,網絡系統會給出一個TECN周期,如果在這段時間內節點沒有再次收到兩跳ECN消息,那么當一個TECN周期結束后,節點會回到LCL模式。
4)局部同步
由于使用了載波偵聽和擁塞退避機制,在發生時鐘錯位的情況下,ZMAC協議比TDMA協議有更強的生命力,在完全失去時鐘同步的情況下,ZMAC退化為CSMA協議。在低沖突級別情況下,ZMAC可以不需要時鐘同步,此時協議的性能和CSMA相仿。在高沖突級別情況下,ZMAC協議需要在時間同步的基礎上實現HCL。ZMAC協議只需要維護鄰近的發送節點之間的時間同步,是一種局部同步。同步的方式還是采用在發送的時間同步包中加入發送節點的時間信息,通過相關的算法來修正節點之間的偏移量。在ZMAC協議中,每個發送數據包的節點都會使用一部分帶寬資源來發送時間同步包,發送的時間同步包個數和發送數據包個數的比率叫作Bsynch,如Bsynch為1%,則表示每發送100個數據包才發送1個時間同步包。
在ZMAC協議中,每個發送數據的節點都要周期性地發送時間同步包,當一個節點收到該時間同步包后,它采用下面的計算公式來修正自己與發送時間同步包的節點的時間偏差,即
Cavgnew=(1–βt)×Cavgold+βt×Cnew
式中,Cavgnew代表接收節點收到時間同步包后修正過后的時間,Cavgold代表接收節點現在的時間,Cnew代表發送時間同步包的節點的時間,βt是發送時間同步包的節點的可信因子,表示發送時間同步包的節點時鐘的偏移程度,βt要通過計算得到。在此之前先搞清楚幾個參數的意義:首先用rdrift表示傳感器節點的時鐘漂移率,用Eclock表示最大可接收的時鐘漂移,用Isynch=Eclock/rdrift表示最小的同步間隔時間,也就是說在Isynch時間內最少要進行一次時間同步信息的維護,用S表示一個節點接收或者發送時間同步包的速度,用αsynch表示時間同步包中的時間在計算接收節點新的時間時所占的最大權重,βt可以用下面的公式來計算,即
βt={αsynch, S×Isynch×αsynch}
以MIC2節點為例,在要求時鐘精度為1 ms,節點時鐘漂移為40 μs的情況下,如果Bsynch為1%,要保持局部的時間同步,就要在Isynch時間內至少有一個時間同步包,也就是說節點的最小帶寬為
包長度/Isynch×(1/Bsynch)=1.568 kb/s
ZMAC協議是一種混合型MAC協議,可以根據網絡中的信道競爭情況來動態地調整MAC協議所采用的機制,在CSMA和TDMA機制之間進行切換。當網絡數據量較小時,競爭者較少,ZMAC協議工作在CSMA機制下;當網絡數據量較大時,競爭者較多,ZMAC協議工作在TDMA機制下,使用拓撲信息和同步時鐘信息來改善協議性能。ZMAC協議結合了競爭型MAC協議和分配型MAC協議的特點,能很好地適應網絡拓撲的變化并提供均衡的網絡性能。但DRAND算法較為復雜,這在一定程度上限制了ZMAC的應用。