- 物聯(lián)網(wǎng)與無線傳感器網(wǎng)絡(luò)(第2版)
- 劉偉榮編著
- 12字
- 2022-05-06 18:42:34
3.4 無線傳感器網(wǎng)絡(luò)的MAC協(xié)議
3.4.1 基于競爭的MAC協(xié)議
1. S-MAC協(xié)議
S-MAC協(xié)議是由美國南加利福尼亞大學(xué)的Wei Ye等人較早提出的,它適用于無線傳感器網(wǎng)絡(luò)的MAC協(xié)議,而且是在總結(jié)傳統(tǒng)無線網(wǎng)絡(luò)的MAC協(xié)議的基礎(chǔ)上,根據(jù)無線傳感器網(wǎng)絡(luò)負(fù)載量小、針對(duì)節(jié)點(diǎn)間的公平性及通信時(shí)延要求不高等特點(diǎn)來設(shè)計(jì)的,其主要的設(shè)計(jì)目標(biāo)是提供大規(guī)模分布式網(wǎng)絡(luò)所需的可擴(kuò)展性,并同時(shí)降低能耗。S-MAC協(xié)議的設(shè)計(jì)參考了PAMAS和IEEE 802.11MAC協(xié)議等MAC協(xié)議,并做出了如下假設(shè)。
? 大多數(shù)節(jié)點(diǎn)之間是進(jìn)行多跳短距離通信的;
? 節(jié)點(diǎn)在無線傳感器網(wǎng)絡(luò)中的作用是平等的,即一般情況下沒有基站;
? 為了減少通信量,采用網(wǎng)內(nèi)數(shù)據(jù)處理方式;
? 運(yùn)用信號(hào)的協(xié)作處理,改善感知信息的質(zhì)量;
? 節(jié)點(diǎn)具有較長的空閑時(shí)間而且可以容忍一定的時(shí)延;
? 網(wǎng)絡(luò)壽命是首要考慮的問題。
S-MAC協(xié)議采用的機(jī)制有以下幾種。
? 將節(jié)點(diǎn)的工作模式分為偵聽和睡眠兩種,并讓節(jié)點(diǎn)盡可能長時(shí)間睡眠以達(dá)到節(jié)能的目的;
? 通過協(xié)商的一致性睡眠調(diào)度機(jī)制讓相鄰節(jié)點(diǎn)在相同時(shí)間活動(dòng)、相同時(shí)間睡眠,從而形成虛擬簇;
? 通過突發(fā)傳遞和消息分割機(jī)制來縮短消息的傳輸時(shí)延和減少控制消息的開銷;
? 通過流量自適應(yīng)的偵聽機(jī)制,減少網(wǎng)絡(luò)時(shí)延在傳輸過程中的累加效應(yīng)。
S-MAC協(xié)議雖然減少了空閑偵聽所消耗的能量,但其缺點(diǎn)是在協(xié)議初始節(jié)點(diǎn)的工作周期就已經(jīng)被設(shè)定并保持不變,無法適應(yīng)網(wǎng)絡(luò)負(fù)載的動(dòng)態(tài)變化。
1)周期性地偵聽和睡眠
S-MAC協(xié)議基本的節(jié)能手段是依靠傳感器節(jié)點(diǎn)定期進(jìn)入睡眠狀態(tài)從而減少節(jié)點(diǎn)空閑偵聽的時(shí)間來實(shí)現(xiàn)的。S-MAC把時(shí)間分割成許多時(shí)隙,在每個(gè)時(shí)隙中又劃分為偵聽和睡眠兩種狀態(tài),如圖3.1所示。一次完整的偵聽和睡眠稱為一幀,其中偵聽的時(shí)間占一幀的比值稱為占空比。在偵聽狀態(tài),節(jié)點(diǎn)可以和其通信范圍內(nèi)的相鄰節(jié)點(diǎn)自由地進(jìn)行通信;在睡眠狀態(tài),為了減少節(jié)點(diǎn)功耗,節(jié)點(diǎn)不參與任何的數(shù)據(jù)傳遞活動(dòng),只是設(shè)定計(jì)時(shí)器開始計(jì)時(shí),這樣在經(jīng)過一段時(shí)間后自己就能自動(dòng)醒來,醒來后則立刻查看是否有消息傳遞給自己。在S-MAC協(xié)議中規(guī)定,相鄰節(jié)點(diǎn)要最大限度地采用相同的調(diào)度時(shí)間表,也就是說要在相同的時(shí)間喚醒和睡眠,這樣有利于確保相鄰節(jié)點(diǎn)能及時(shí)進(jìn)行通信,減少在傳輸消息時(shí)的控制開銷。在無線網(wǎng)絡(luò)中,節(jié)點(diǎn)可以通過定期向相鄰節(jié)點(diǎn)廣播同步包(SYNC)來交換調(diào)度信息,以達(dá)到同步的目的。

圖3.1 睡眠偵聽機(jī)制
S-MAC協(xié)議將節(jié)點(diǎn)的活動(dòng)狀態(tài)分為兩部分以保證節(jié)點(diǎn)能接收到數(shù)據(jù)包和同步包,第一部分用于發(fā)送和接收同步包,第二部分用于發(fā)送和接收數(shù)據(jù)包,每部分都設(shè)有載波幀聽時(shí)間。在實(shí)際應(yīng)用中,發(fā)送同步包和數(shù)據(jù)包可能存在三種情況,如圖3.2所示,其中發(fā)送者1只發(fā)送同步包,發(fā)送者2只發(fā)送數(shù)據(jù)包,而發(fā)送者3既發(fā)送同步包又發(fā)送數(shù)據(jù)包。
理論上,網(wǎng)絡(luò)中所有的節(jié)點(diǎn)都需要遵守相同的調(diào)度時(shí)間,不能有絲毫的誤差。但是由于傳感器節(jié)點(diǎn)的時(shí)間表本身就是隨時(shí)變化的,而且無線傳感器網(wǎng)絡(luò)還是多跳地傳輸數(shù)據(jù),所以只有在局部節(jié)點(diǎn)之間才有可能形成同步。如果節(jié)點(diǎn)之間的調(diào)度時(shí)間是相同的,那么它們將構(gòu)成“虛擬簇”(Virtual Cluster),在部署區(qū)域廣闊的傳感器網(wǎng)絡(luò)中,能夠形成眾多不同的虛擬簇。假如某個(gè)節(jié)點(diǎn)的周圍有不同的虛擬簇,那么該節(jié)點(diǎn)就處于虛擬簇的邊界,稱為邊界節(jié)點(diǎn)(Border Node)。如圖3.3所示,節(jié)點(diǎn)A就是邊界節(jié)點(diǎn),它一定要與其相鄰節(jié)點(diǎn)保持同步,所以邊界節(jié)點(diǎn)一般會(huì)記錄下兩個(gè)或兩個(gè)以上的調(diào)度信息,從而成為虛擬簇之間通信的橋梁。

圖3.2 一個(gè)節(jié)點(diǎn)與多個(gè)不同發(fā)送節(jié)點(diǎn)之間的定時(shí)關(guān)系

圖3.3 邊界節(jié)點(diǎn)和其相鄰節(jié)點(diǎn)的關(guān)系
2)沖突避免
如果有兩個(gè)或兩個(gè)以上的相鄰節(jié)點(diǎn)想同時(shí)與一個(gè)節(jié)點(diǎn)進(jìn)行通信,那么它們都會(huì)試圖在該節(jié)點(diǎn)的偵聽時(shí)段發(fā)送消息,在這種情況下必然發(fā)生數(shù)據(jù)的沖突和碰撞,于是它們就需要開始爭奪對(duì)信道的使用權(quán)。S-MAC采用虛擬載波偵聽和物理載波偵聽的方法,并使用RTS/CTS(請(qǐng)求發(fā)送/清除發(fā)送)來解決沖突和碰撞問題。RTS/CTS/DATA/ACK是每個(gè)節(jié)點(diǎn)在數(shù)據(jù)傳輸時(shí)都要?dú)v經(jīng)的通信過程,在每個(gè)傳輸包中都有一個(gè)域值表示剩余的通信過程還需要維持多長的時(shí)間,所以如果某一個(gè)節(jié)點(diǎn)在收到一個(gè)不是發(fā)給自己而是發(fā)給其他節(jié)點(diǎn)的數(shù)據(jù)包時(shí),它就會(huì)判斷自己還需要睡眠多長時(shí)間,同時(shí)該節(jié)點(diǎn)會(huì)將這個(gè)值報(bào)告給網(wǎng)絡(luò)分配矢量(NAV)并設(shè)置一個(gè)定時(shí)器,該矢量會(huì)隨著接收到的數(shù)據(jù)分組而持續(xù)更新。當(dāng)定時(shí)器開始計(jì)時(shí),節(jié)點(diǎn)就每次將NAV值遞減1,一直到0。當(dāng)節(jié)點(diǎn)需要傳輸數(shù)據(jù)時(shí),它會(huì)首先查看NAV值,如果NAV不為0,那么節(jié)點(diǎn)就認(rèn)為此時(shí)介質(zhì)忙;反之,則認(rèn)為介質(zhì)空閑。這個(gè)過程常被稱為虛擬載波偵聽。
物理載波偵聽是指在物理層偵聽信道,從而判別是否有數(shù)據(jù)傳輸。載波偵聽時(shí)間是在競爭窗口中隨機(jī)選擇的,這樣做是為了防止發(fā)生碰撞。只有當(dāng)虛擬和物理載波偵聽都指出介質(zhì)空閑時(shí),介質(zhì)才能被認(rèn)定空閑。
例如,圖3.4所示是一個(gè)多跳網(wǎng)絡(luò),它由節(jié)點(diǎn)A、B、C、D、E、F構(gòu)成,每個(gè)節(jié)點(diǎn)只能和其一跳以內(nèi)的相鄰節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的傳輸。假設(shè)此時(shí)節(jié)點(diǎn)A正向節(jié)點(diǎn)B發(fā)送數(shù)據(jù),那么顯然節(jié)點(diǎn)D應(yīng)該睡眠,因?yàn)樗膫鬏敻蓴_了節(jié)點(diǎn)B正確接收節(jié)點(diǎn)A發(fā)出的數(shù)據(jù)。而節(jié)點(diǎn)E和節(jié)點(diǎn)F不會(huì)影響其他節(jié)點(diǎn),所以它們不需要睡眠。節(jié)點(diǎn)C和節(jié)點(diǎn)B之間的距離有兩跳遠(yuǎn),即使它傳輸數(shù)據(jù)也不會(huì)干擾到節(jié)點(diǎn)B接收,所以它可以自由地向其他節(jié)點(diǎn)(如節(jié)點(diǎn)E)發(fā)送數(shù)據(jù)。但是,節(jié)點(diǎn)C卻無法接收節(jié)點(diǎn)E的應(yīng)答(CTS或其他數(shù)據(jù)等),這是因?yàn)楣?jié)點(diǎn)E和節(jié)點(diǎn)A同時(shí)傳輸會(huì)在節(jié)點(diǎn)C處發(fā)生沖突,所以即使節(jié)點(diǎn)C傳輸數(shù)據(jù),也是浪費(fèi)能量。總而言之,不管是發(fā)送者還是接收者,它們之間相鄰的節(jié)點(diǎn)在偵聽到CTS或RTS包后都需要睡眠,一直要等到傳輸結(jié)束才可以醒來。

圖3.4 多跳網(wǎng)絡(luò)沖突避免機(jī)制
3)自適應(yīng)偵聽
在S-MAC協(xié)議中,節(jié)點(diǎn)周期性地進(jìn)入睡眠狀態(tài)會(huì)增加時(shí)延,這種時(shí)延并不會(huì)自動(dòng)消除,而是會(huì)在每跳中累積,所以S-MAC采用自適應(yīng)偵聽策略來減少這種累加的效應(yīng)。它的基本思想是當(dāng)一個(gè)節(jié)點(diǎn)在其通信范圍內(nèi)得知相鄰的節(jié)點(diǎn)要傳輸數(shù)據(jù)時(shí)就睡眠,并記錄其傳輸數(shù)據(jù)的時(shí)間,只有當(dāng)其相鄰的節(jié)點(diǎn)傳輸數(shù)據(jù)結(jié)束后才能醒來一個(gè)短暫的時(shí)間,這時(shí)它可以通過偵聽信道查看信道的狀態(tài)(忙或空閑),判斷是否有數(shù)據(jù)需要傳輸。在這種方式下,如果此時(shí)正好有一個(gè)消息需要傳遞給該節(jié)點(diǎn),那么它就可以立刻接收,而不用等到該節(jié)點(diǎn)的睡眠結(jié)束后再進(jìn)行傳遞;假如沒有任何消息需要傳遞給該節(jié)點(diǎn),那么它就繼續(xù)睡眠。
4)消息傳遞
在無線信道中,數(shù)據(jù)包越長,在傳輸時(shí)出錯(cuò)的概率越大;反之,數(shù)據(jù)包越短,在傳輸時(shí)出錯(cuò)的概率越小。也就是說,數(shù)據(jù)傳輸時(shí)出錯(cuò)的概率與數(shù)據(jù)包的長度成正比,長包成功傳輸?shù)母怕室∮诙贪8鶕?jù)這一原理,S-MAC協(xié)議將長消息分成很多子段,只采用一次RTS/CTS握手,就可以連續(xù)集中發(fā)送全部子段,這便是消息分段機(jī)制,如圖3.5所示。每個(gè)子段的發(fā)送都需要等待接收者的答復(fù)(ACK),假如發(fā)送者沒有收到某個(gè)子段的答復(fù),就重傳該子段。整個(gè)發(fā)送過程只需要一次RTS/CTS握手,這樣既可減少控制開銷,又可提高發(fā)送成功率。

圖3.5 消息分段機(jī)制
2. T-MAC協(xié)議
通過前面的分析可以知道,S-MAC雖然在一定程度上提高了能量效率,但是它不能根據(jù)網(wǎng)絡(luò)負(fù)載調(diào)整自己的調(diào)度周期。在S-MAC協(xié)議的基礎(chǔ)上,研究人員提出了一種新的MAC協(xié)議—T-MAC協(xié)議。無線傳感器網(wǎng)絡(luò)中MAC協(xié)議主要解決能量消耗問題,在幾個(gè)主要的耗費(fèi)能量的因素中,持續(xù)偵聽所耗費(fèi)的能量占了絕大部分,因此我們必須合理地安排偵聽時(shí)間,T-MAC協(xié)議根據(jù)一種自適應(yīng)占空比的原理,通過動(dòng)態(tài)地調(diào)整偵聽與睡眠時(shí)間的比值,從而實(shí)現(xiàn)節(jié)能的目的。
1)基本思想
T-MAC協(xié)議相對(duì)于S-MAC協(xié)議來說,保持了S-MAC的周期,根據(jù)網(wǎng)絡(luò)負(fù)載的流量自適應(yīng)地調(diào)整激活的時(shí)間。在T-MAC協(xié)議中,為了減少無用的空閑偵聽,采用以下方式來發(fā)送數(shù)據(jù),如圖3.6所示,每個(gè)節(jié)點(diǎn)周期性地進(jìn)行睡眠,被喚醒進(jìn)入活動(dòng)狀態(tài),進(jìn)行收發(fā)數(shù)據(jù),接著又進(jìn)入睡眠狀態(tài),下一周期開始。

圖3.6 S-MAC和T-MAC協(xié)議的基本機(jī)制
節(jié)點(diǎn)單播通信過程采用的是RTS/CTS/DATA/ACK交互的原理,節(jié)點(diǎn)有規(guī)律地被喚醒,如果在一個(gè)周期中沒有發(fā)現(xiàn)需要激活的事件,那么活動(dòng)結(jié)束,開始進(jìn)入睡眠狀態(tài)。激活事件的定義為:
? 周期定時(shí)器溢出,喚醒事件;
? 物理層接收到數(shù)據(jù);
? 顯示無線信道忙,接收信號(hào)強(qiáng)度指示;
? 通過RTS/CTS幀的監(jiān)聽來確認(rèn)相鄰節(jié)點(diǎn)的數(shù)據(jù)交換是否已經(jīng)結(jié)束。
T-MAC協(xié)議規(guī)定,當(dāng)相鄰節(jié)點(diǎn)還沒有結(jié)束通信時(shí),節(jié)點(diǎn)不能進(jìn)入睡眠狀態(tài),因?yàn)樵摴?jié)點(diǎn)很有可能就是下一個(gè)數(shù)據(jù)的目的節(jié)點(diǎn)。假設(shè)節(jié)點(diǎn)檢測到串?dāng)_以后能夠觸發(fā)一個(gè)空閑間隔TA,TA必須足夠大,以保證節(jié)點(diǎn)能夠監(jiān)測到串?dāng)_的CTS,T-MAC協(xié)議規(guī)定TA取值約束為
TA>C+R+T
式中,C為競爭信道的時(shí)間,R為發(fā)送RTS的時(shí)間,T為RTS分組發(fā)送結(jié)束到開始發(fā)出CTS的時(shí)間。
節(jié)點(diǎn)發(fā)送完RTS分組之后,如果未收到對(duì)應(yīng)的CTS分組,則有以下三種情況:
? 由于無線信道發(fā)生碰撞,目的節(jié)點(diǎn)沒有接收到RTS分組;
? 目的節(jié)點(diǎn)已經(jīng)收到串?dāng)_的分組;
? 目的節(jié)點(diǎn)正處于睡眠狀態(tài)。
如上面所述,如果發(fā)送節(jié)點(diǎn)在TA時(shí)間間隔內(nèi)沒有收到CTS分組,它就會(huì)進(jìn)入睡眠狀態(tài)。但是從上面的前兩種情況可以看出節(jié)點(diǎn)還沒有收到CTS分組,直接進(jìn)入睡眠狀態(tài)會(huì)導(dǎo)致實(shí)時(shí)性降低,接收節(jié)點(diǎn)一直處于空閑監(jiān)聽狀態(tài),浪費(fèi)大量的能量,因此T-MAC協(xié)議規(guī)定,節(jié)點(diǎn)發(fā)送RTS分組之后沒有收到CTS分組,則重新發(fā)送一次RTS分組,若還沒有收到則進(jìn)入睡眠狀態(tài),T-MAC協(xié)議的基本數(shù)據(jù)交換如圖3.7所示。
2)主要解決的問題
在T-MAC協(xié)議中,當(dāng)一個(gè)節(jié)點(diǎn)準(zhǔn)備向其相鄰節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),相鄰節(jié)點(diǎn)已進(jìn)入了睡眠狀態(tài),那么我們稱這種情況為早睡,這也是T-MAC協(xié)議主要解決的問題。例如,AB、BC、CD是三對(duì)相鄰節(jié)點(diǎn),可以相互通信,數(shù)據(jù)傳輸方向?yàn)锳→B→C→D。當(dāng)節(jié)點(diǎn)A通過競爭方式獲得與節(jié)點(diǎn)B的通信權(quán)利之后,節(jié)點(diǎn)A發(fā)送一個(gè)CTS分組給節(jié)點(diǎn)B,節(jié)點(diǎn)B接收到之后應(yīng)答一個(gè)CTS分組給節(jié)點(diǎn)A,則完成AB之間的通信。當(dāng)節(jié)點(diǎn)B發(fā)送CTS分組時(shí),節(jié)點(diǎn)C也可以接收到,從而觸發(fā)了一個(gè)新的偵聽時(shí)段,在AB通信結(jié)束后接收節(jié)點(diǎn)B發(fā)送過來的數(shù)據(jù),而節(jié)點(diǎn)D由于沒有接收到CTS數(shù)據(jù),因此節(jié)點(diǎn)D在BC通信結(jié)束后處于睡眠狀態(tài),這樣節(jié)點(diǎn)C就只能等到下一個(gè)周期喚醒之后才能發(fā)送數(shù)據(jù)。

圖3.7 T-MAC協(xié)議的基本數(shù)據(jù)交換

圖3.8 早睡問題的兩種解決方法
在T-MAC協(xié)議中,有兩種方法可以解決早睡問題,如圖3.8所示。第一種是滿緩沖區(qū)優(yōu)先(Full-Buffer Priority)。當(dāng)節(jié)點(diǎn)的緩沖區(qū)快滿時(shí),節(jié)點(diǎn)對(duì)收到的RTS分組不回復(fù)CTS,而是立即向緩沖區(qū)內(nèi)數(shù)據(jù)的接收節(jié)點(diǎn)發(fā)送RTS,建立連接之后發(fā)送數(shù)據(jù),以減輕緩沖區(qū)負(fù)載。如圖3.8(b)所示,節(jié)點(diǎn)B向節(jié)點(diǎn)C發(fā)送RTS,而節(jié)點(diǎn)C因?yàn)榫彌_區(qū)滿不回復(fù)一個(gè)CTS分組,而是向節(jié)點(diǎn)D發(fā)送RTS以求數(shù)據(jù)傳輸。
這種方法在一定程度上減少了早睡問題的發(fā)生概率,并可以控制網(wǎng)絡(luò)負(fù)載流量,但在網(wǎng)絡(luò)負(fù)載過大時(shí)更容易發(fā)生沖突。
第二種方法是未來請(qǐng)求發(fā)送(Future Request-To-Send,F(xiàn)RTS),這種方法采用提前通知需要接收數(shù)據(jù)的節(jié)點(diǎn)的方法來避免早睡,如圖3.8(a)所示。當(dāng)節(jié)點(diǎn)C接收到CTS后,除了觸發(fā)自己保持監(jiān)聽狀態(tài),還發(fā)送一個(gè)FRTS分組給節(jié)點(diǎn)D,F(xiàn)RTS分組中含有節(jié)點(diǎn)D需要等待的時(shí)間,在此空閑狀態(tài)中,節(jié)點(diǎn)D必須要保持偵聽狀態(tài)。當(dāng)節(jié)點(diǎn)C發(fā)送FRTS時(shí)看哪個(gè)節(jié)點(diǎn)會(huì)干擾節(jié)點(diǎn)A發(fā)送的數(shù)據(jù),節(jié)點(diǎn)A需要延遲原數(shù)據(jù)的發(fā)送響應(yīng)的時(shí)間,但是又必須保持對(duì)信道的占用,因此節(jié)點(diǎn)A在這段時(shí)間內(nèi)發(fā)送一個(gè)與FRTS一樣長度的分組,該分組不包含任何有用的數(shù)據(jù),然后才接著發(fā)送有用數(shù)據(jù)信息。這樣當(dāng)數(shù)據(jù)傳到節(jié)點(diǎn)C之后節(jié)點(diǎn)D還是處于喚醒狀態(tài),保證數(shù)據(jù)的實(shí)時(shí)傳輸。由于采用了未來請(qǐng)求發(fā)送機(jī)制,協(xié)議需要增加一個(gè)FRTS分組傳輸?shù)臅r(shí)間,該方法提高了系統(tǒng)吞吐量和實(shí)時(shí)性,但是多了一些控制消息,相應(yīng)地要消耗能量。
T-MAC協(xié)議對(duì)S-MAC協(xié)議進(jìn)行了一定的改進(jìn),減少了空閑偵聽,從而提高了能量效率。為了有效解決節(jié)點(diǎn)的早睡問題,T-MAC提出了兩種方案,但都不是很理想,該協(xié)議有待進(jìn)一步的研究。
3)Sift協(xié)議
無線傳感器網(wǎng)絡(luò)中存在這樣一種現(xiàn)象,多個(gè)相鄰的節(jié)點(diǎn)都會(huì)發(fā)現(xiàn)同一事件并傳輸相關(guān)信息,因此節(jié)點(diǎn)會(huì)存在空間上的競爭,Sift協(xié)議就是為了解決這個(gè)問題而提出來的。Sift協(xié)議與無線局域網(wǎng)的MAC協(xié)議有所不同,它采用的是CSMA機(jī)制,競爭窗口的大小是原本就設(shè)定好的,采用非均勻概率來決定是否發(fā)送數(shù)據(jù),它具有以下幾個(gè)特點(diǎn)。
(1)無線傳感器網(wǎng)絡(luò)中基于空間的競爭。一般來說,許多無線傳感器網(wǎng)絡(luò)都在某一區(qū)域放置了多個(gè)節(jié)點(diǎn),利用多個(gè)節(jié)點(diǎn)監(jiān)測到同一事件來保證數(shù)據(jù)的可靠性。這種冗余數(shù)據(jù)的發(fā)生將導(dǎo)致相鄰節(jié)點(diǎn)間相互搶占信道,從而造成基于空間的競爭。
(2)基于事件的報(bào)告方式。在無線傳感器網(wǎng)絡(luò)中,并非所有的節(jié)點(diǎn)都需要報(bào)告事件,匯聚節(jié)點(diǎn)只需接收到所發(fā)生事件的相關(guān)信息即可。
(3)感知事件節(jié)點(diǎn)密度的自適應(yīng)調(diào)整。大量的無線傳感器節(jié)點(diǎn)接收到同一事件后,隨著目標(biāo)的移動(dòng)或者時(shí)間的推移,傳感器網(wǎng)絡(luò)感知到事件的節(jié)點(diǎn)也會(huì)相應(yīng)地發(fā)生變化,從而能夠更好地觀測目標(biāo)事件。
由于無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的空間競爭,對(duì)于同一事件,只需要監(jiān)測到事件的部分節(jié)點(diǎn)發(fā)送數(shù)據(jù)給目的節(jié)點(diǎn)就可以實(shí)現(xiàn)有效數(shù)據(jù)的傳輸。Sift協(xié)議規(guī)定,當(dāng)有N個(gè)傳感器節(jié)點(diǎn)共享同一信道并同時(shí)監(jiān)測到同一事件時(shí),R個(gè)節(jié)點(diǎn)(R<N)能夠以最快的速度無碰撞地發(fā)送這個(gè)事件的相關(guān)信息,從而阻止剩余N?R個(gè)節(jié)點(diǎn)發(fā)送該事件的相關(guān)信息。
Sift協(xié)議采用固定競爭窗口方式來實(shí)現(xiàn)數(shù)據(jù)的傳輸。一般來講,在基于競爭的MAC協(xié)議中,節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前,需要先在發(fā)送窗口[1,CW]內(nèi)隨機(jī)選擇一個(gè)時(shí)隙,并一直偵聽到該時(shí)隙來臨。若信道在偵聽期間一直保持空閑狀態(tài),則節(jié)點(diǎn)立即發(fā)送數(shù)據(jù),否則就一直等待,直到無線信道空閑為止,但這樣會(huì)存在以下幾個(gè)問題。
(1)當(dāng)多個(gè)節(jié)點(diǎn)偵聽到同一事件并在同一時(shí)刻發(fā)送數(shù)據(jù)時(shí),會(huì)造成信道忙,同時(shí)發(fā)生競爭,因此需要重新調(diào)整CW值來重新發(fā)送數(shù)據(jù),這將浪費(fèi)大量時(shí)間。
(2)若調(diào)整后CW值過大,但當(dāng)同時(shí)偵聽到事件的節(jié)點(diǎn)數(shù)目很少甚至沒有時(shí),等待時(shí)間過久將導(dǎo)致傳輸延遲。
(3)選擇的CW值必須能保證需要發(fā)送數(shù)據(jù)的節(jié)點(diǎn)都有機(jī)會(huì)發(fā)送數(shù)據(jù),每個(gè)時(shí)隙被選中的概率也相同。而傳感器網(wǎng)絡(luò)只需要滿足N個(gè)節(jié)點(diǎn)中的R個(gè)節(jié)點(diǎn)成功發(fā)送事件的相關(guān)信息即可。
圖3.9展示了Sift協(xié)議的相關(guān)代碼,采用的是CW值固定的窗口,節(jié)點(diǎn)不再從此窗口中選擇發(fā)送時(shí)隙,而是根據(jù)窗口中的時(shí)隙來決定發(fā)送數(shù)據(jù)的概率。如圖所示,Sift協(xié)議采用pickslot在窗口[1,CW]中選擇時(shí)隙,Wait用來表示等待的時(shí)間。
Sift協(xié)議的工作流程是:當(dāng)發(fā)送節(jié)點(diǎn)需要發(fā)送消息時(shí),先假設(shè)有N個(gè)節(jié)點(diǎn)競爭,如果節(jié)點(diǎn)在第一個(gè)時(shí)隙沒有發(fā)送消息,也沒有偵聽到其他節(jié)點(diǎn)發(fā)送數(shù)據(jù),則節(jié)點(diǎn)將減少假想的與它競爭的發(fā)送節(jié)點(diǎn),并增加它在第二個(gè)時(shí)隙內(nèi)發(fā)送消息的概率,如果第二個(gè)時(shí)隙內(nèi)還是沒有節(jié)點(diǎn)發(fā)送數(shù)據(jù),那么節(jié)點(diǎn)再減少假想的競爭節(jié)點(diǎn),同時(shí)進(jìn)一步增加它在下時(shí)隙內(nèi)發(fā)送消息的概率。根據(jù)這樣的規(guī)定,節(jié)點(diǎn)在第r個(gè)時(shí)隙內(nèi)發(fā)送數(shù)據(jù)的概率為

式中,α為分布參數(shù),0<α<1;Pr隨r的增加呈指數(shù)增加,表示在窗口中時(shí)隙越靠后,發(fā)送的概率越大。參數(shù)α的選擇與N和CW的值有關(guān),Sift協(xié)議的設(shè)計(jì)希望滿足下面的性質(zhì):
(1)在第一個(gè)時(shí)隙,當(dāng)存在N個(gè)節(jié)點(diǎn)需要發(fā)送數(shù)據(jù)時(shí),有且僅有一個(gè)節(jié)點(diǎn)在這個(gè)時(shí)隙成功發(fā)送數(shù)據(jù)的概率最高。
(2)在第二、第三……,直到發(fā)送窗口的最后一個(gè)時(shí)隙中,有且僅有一個(gè)節(jié)點(diǎn)在時(shí)隙中成功發(fā)送數(shù)據(jù)的概率最高。參考文獻(xiàn)[4]證明當(dāng)α=N?1/(CW?1)時(shí)滿足上面的兩條性質(zhì)。
Sift協(xié)議的狀態(tài)及狀態(tài)轉(zhuǎn)換描述代碼如圖3.9所示,節(jié)點(diǎn)有空閑、競爭、接收和等待確認(rèn)4種狀態(tài),如果節(jié)點(diǎn)有消息需要發(fā)送,則按式(3.1)在各個(gè)時(shí)隙計(jì)算發(fā)送概率。如果在發(fā)送時(shí)隙之前有其他節(jié)點(diǎn)發(fā)送數(shù)據(jù),則節(jié)點(diǎn)需要更新計(jì)算時(shí)隙,而IEEE802.11 MAC協(xié)議需要記憶剩余時(shí)隙個(gè)數(shù)。

圖3.9 Sift協(xié)議的狀態(tài)及狀態(tài)轉(zhuǎn)換描述代碼
Sift協(xié)議是一種非常新穎的競爭性MAC協(xié)議,它充分考慮了無線傳感器網(wǎng)絡(luò)的業(yè)務(wù)特點(diǎn),特別適合冗余、競爭與空間相關(guān)的應(yīng)用場景。Sift協(xié)議實(shí)現(xiàn)方法簡單,關(guān)鍵在于在固定長度的競爭窗口中選擇時(shí)隙時(shí)需要用到一種遞增的非均勻概率分布,而不是傳統(tǒng)協(xié)議中的可變長度競爭窗口。Sift協(xié)議提高了事件消息的實(shí)時(shí)性與網(wǎng)絡(luò)的帶寬利用率,但是沒有充分考慮能量效率,研究人員下一步將考慮把Sift協(xié)議與SPAN或GAR協(xié)議結(jié)合,來提高能量效率。
- Web安全防護(hù)指南:基礎(chǔ)篇
- RCNP實(shí)驗(yàn)指南:構(gòu)建高級(jí)的路由互聯(lián)網(wǎng)絡(luò)(BARI)
- 物聯(lián)網(wǎng)網(wǎng)絡(luò)安全及應(yīng)用
- 網(wǎng)絡(luò)故障現(xiàn)場處理實(shí)踐(第4版)
- 重新定義Spring Cloud實(shí)戰(zhàn)
- HCNA網(wǎng)絡(luò)技術(shù)
- SD-WAN架構(gòu)與技術(shù)(第2版)
- Building RESTful Web services with Go
- 一本書讀懂TCP/IP
- Web用戶查詢?nèi)罩就诰蚺c應(yīng)用
- RestKit for iOS
- 從物聯(lián)到萬聯(lián):Node.js與樹莓派萬維物聯(lián)網(wǎng)構(gòu)建實(shí)戰(zhàn)
- CDN技術(shù)詳解
- 云計(jì)算、網(wǎng)絡(luò)安全和網(wǎng)絡(luò)盜竊:網(wǎng)絡(luò)世界防盜初學(xué)指南
- 目標(biāo)跟蹤中的群智能優(yōu)化方法