本發明涉及無線傳感器網絡。更具體地,涉及一種適用于傳感器網絡協議的beacon協調機制。
背景技術:
近年來,隨著無線通信技術和微電子技術的發展,無線傳感器網絡wsn(wirelesssensornetwork)已經被列為21世紀最有影響力的技術之一。wsn是一種分布式傳感網絡,它的末梢是可以感知和檢查外部世界的傳感器。wsn中的傳感器通過無線方式通信,因此網絡設置靈活,設備位置可以隨時更改,還可以跟互聯網進行有線或無線方式的連接,通過無線通信方式形成的一個多跳自組織網絡。wsn具有節點移動性小,節點密度大,傳輸距離短以及數據通信速率較低,通信鏈路的工作狀態相對不穩定等特點。無線傳感器網絡的媒體控制接入(mediaaccesscontrol,mac)層設計相對于傳統無線自組網(mobilead-hocnetwork,manet)最大的不同在于節點的能量有限。因此wsn的研究主要集中在其mac協議即ieee802.15.4協議。近年來對于協議中的csma機制研究較多,而對于節點數較多情況下的beacon碰撞問題分析較少。以下對于csma的現有研究進行簡要介紹。
針對ieee802.11中的csma算法,2001年giuseppebianchi提出了csma算法的馬爾科夫鏈模型,其后許多學者基于這個模型對wlan中的csma算法進行了理論研究。但由于ieee802.11中的csma算法與ieee802.15.4中有所不同,因此這個模型對ieee802.15.4并不適用,并且由于無線傳感器網絡速率較低,bianchi模型提出的基礎條件——信道飽和也并不合理。
基于bianchi提出的模型,sofiepollin等人注意到了ieee802.15.4中的csma機制與ieee802.11中的csma機制并不相同,他們通過在模型中在每次發包結束后添加相同數量的時隙等效為非飽和信道,試圖將模型推廣至非飽和信道的情況。但在ieee802.15.4的csma/ca機制中,由于在實際的低速網中數據包的到達一般是poisson過程,因此這種做法并不是很切合實際。
j.misic等人又在前人的模型基礎上提出了更切合實際的模型,并在模型中加入了delayline的狀態和用“0”表示的buffer為空的狀態。但他們的模型計算所得的數據與仿真結果相差甚遠。
mustafae.等研究人員主要研究時隙(slotted)和非時隙(unslotted)兩種csma/ca對網絡的影響,提出了采用凸優化方法選取占空比的算法。
可以看到,近年來有大量針對csma機制的研究,無論是對基礎機制的研究,還是針對應用的優化,都有了一定的進展,且出現了許多具有新機制、新想法的mac協議。但是,很少有研究人員對于節點數較多的網絡場景中的不同級節點的beacon碰撞問題進行分析,由于傳統的幀結構中,每個節點的beacon的發送時序都一樣,當節點數增多時,就會引起beacon的嚴重碰撞,因此需要設計新的機制來解決節點beacon發送的碰撞問題。
因此,需要提供一種適用于傳感器網絡協議的beacon協調機制。
技術實現要素:
為了克服上述缺陷,針對多跳傳感器網絡中不同級別的ffd(full-functiondevice)節點發送beacon的碰撞問題,本發明提出一種starttime運行機制來有效降低beacon的碰撞概率。
為達到上述目的,本發明采用下述技術方案:
一種適用于傳感器網絡協議的beacon協調機制,包括以下步驟:
建立并重組pan網絡;
進行beacon發送;
設備的入網與斷連;
進行beacon同步;
基于starttime運行原則,協調beacon的發送時序。
優選地,建立pan網絡包括以下步驟:
ffd發送setdefaultpib為true的mlme-reset.request原語重啟mac層;
active信道掃描,選取合適的pan標識符;
ffd設置macshortaddress<0xffff;
ffd發送pancoordinator參數為true的mlme-start.request原語;
mac層更新幀結構設置和信道選項;
mac層返回狀態為success的mlme-start.confirm原語。
優選地,重組pan網絡包括以下步驟:
協調器接收coordrealignment參數為true的mlme-start.request原語;
協調器重組pan網絡,更新設置;
判斷設備是否正在發送beacon,若是,則激活間接傳輸并確認下次使用新的設置進行發送;若否,則設備立即發送重組命令;
判斷重組命令是否發送成功,若是,則在beacon中放置新的幀結構設置和信道設置進行發送,同時mac層發送狀態為success的mlme-start.confirmprimitive原語;若否,則發送狀態為信道接入失敗的mlme-start.confirm,上層選擇重新發送mlme-start.request原語。
優選地,進行beacon發送包括以下步驟:
判斷設備短地址macshortaddress是否為0xffff,若是,則ffd不能發送beacon;若否,則ffd能夠發送beacon;
當信標指數bo不為15時,ffd設備使用mlme-start.request原語進行beacon發送;
基于對ffd的判斷進行不同的beacon發送,包括以下情況:
1)、判斷ffd是否為協調器,若是,則進行beacon發送;若否,則須與協調器進行通信后發送beacon;
2)、判斷ffd是否為全網協調器,若是,則ffd忽略strattime并立即發送beacon;若否,則ffd基于strattime計算發送時間。
進一步優選地,基于strattime計算發送時間包括以下步驟:
若starttime為0,則ffd立即發送beacon;
若starttime不為0,則:
1)、若ffd未接收到小于amaxlostbeacons個連續的beacon包,則根據ffd的macbeaconorder繼續發送beacon;
2)、若ffd收到了來自協調器的beacon,則根據收到的信息重新設置beacon發送設置;
3)、若ffd沒有收到來自協調器的beacon,則發送mlme-sync-loss.indication原語至上層并立即停止發送beacon;
上層收到原語后發送mlme-start.request原語以重啟beacon的發送;
收到mlme-start.request后,mac層重新設置macpanid并將其放入beacon包的sourcepanidentifier區;
在macbeacontxtime中記錄最后一次發送beacon幀的時間。
優選地,設備的入網具體包括以下步驟:
mac層重啟;
選取pan網絡后,上層發送mlme-associate.request原語,獲取phy和macpib參數;
對macassociationpermit進行判斷,若為true,則協調器允許節點入網;若為false,則協調器忽略設備發來的入網請求。
優選地,設備的斷連具體包括以下步驟:
設備發送斷連命令;
對txindirect進行判斷,若為true,則協調器通過間接的方式向設備發送斷連命令;若為false,則協調器將直接發送斷連命令;
判斷設備是否收到斷連命令,若是則設備回復ack;若否,則判斷設備已經離開網絡;
設備斷連完成后,移除關于本pan網絡的所有參數。
優選地,進行beacon同步包括以下步驟:
設備開啟接收器并在至多[abasesuperframeduration*(2n+1)]內進行搜尋匹配pan標識符的beacon,其中n=信標指數bo;
判斷搜索結果,若搜索成功,則設備將mac頭中的源地址與源pan進行匹配;若搜索失敗,則設備重復搜索,若達到最大嘗試次數amaxlostbeacons仍搜索失敗,則向上層發送mlme-sync-loss.indication原語;
判斷beacon包中的信息是否等于本地保存的協調信息,若是則進行下一步判斷;若否,則丟棄該beacon包;
對macautorequest進行判斷,若為false,則通知上層;若為ture且beacon中有數據負載,則設備通知上層并對比包中addresslistfield的地址;
判斷是否有本設備16位短地址或者64位擴展地址且macpanid相同,若是則設備開始提取間接數據;若否,則重復上述過程。
優選地,starttime運行原則包括:
通過網絡規模確定需要支持的鄰節點數;
基于鄰節點數確定超幀指數so與信標指數bo的差值;
根據數據周期要求確定幀長的大致范圍并進一步確定信標指數bo的值和超幀指數so的值;
若以時隙為單位進行偏移,starttime取偏移量的整倍數;
節點根據接收beacon的時間并與starttime相加得到發送beacon的時間。
本發明的有益效果如下:
多跳無線傳感器網絡中,不同級別的ffd發送beacon時,容易發生beacon碰撞問題,本發明通過引入starttime機制來對beacon的發送時序進行協調,可以有效降低beacon的碰撞概率,增強網絡的魯棒性。
附圖說明
下面結合附圖對本發明的具體實施方式作進一步詳細的說明。
圖1示出pan網絡建立過程示意圖。
圖2示出pan網絡重組過程示意圖。
圖3示出基本入網過程示意圖。
圖4示出基本斷連流程示意圖。
圖5示出同步過程示意圖。
圖6示出starttime位置示意圖。
圖7示出starttime選取原則原理圖。
具體實施方式
為了更清楚地說明本發明,下面結合優選實施例和附圖對本發明做進一步的說明。附圖中相似的部件以相同的附圖標記進行表示。本領域技術人員應當理解,下面所具體描述的內容是說明性的而非限制性的,不應以此限制本發明的保護范圍。
本發明是針對多跳傳感器網絡中,不同級別的ffd(full-functiondevice)節點發送beacon的碰撞問題,提出的一種starttime運行機制來有效降低beacon的碰撞概率,通過引入starttime機制來對beacon的發送時序進行協調,可以有效降低beacon的碰撞概率,增強網絡的魯棒性。
本發明的目的通過以下技術方案來實現:
starttime運行機制:starttime的含義如圖6所示,starttime相當于一個偏移量,節點根據自己接收beacon的時間,并與starttime相加得到自己發送beacon的時間。
同步方法:beacon-enabled模式下的所有設備必須通過beacon同步,這樣才能進行間接傳輸和追蹤beacon。設備只能在beacon中含有具體pan標識符macpanid的網絡中進行beacon同步,若macpanid=0xffff,那么設備將不會嘗試beacon同步。收到mlme-sync.request原語后,設備將嘗試進行beacon同步,設備會嘗試通過周期性激活接收器跟蹤beacon包。如果不允許跟蹤,但是上一次的同步允許跟蹤,那么設備還是將檢測一個周期然后再停止跟蹤。為了達到beacon同步,設備需要開啟它的接收器并在至多[abasesuperframeduration*(2n+1)]內進行搜尋,其中n=信標指數bo(beaconorder)。如果在此期間未收到匹配pan標志符的beacon,設備會重復搜尋直到達到最大嘗試次數amaxlostbeacons,此時設備將向上層發送mlme-sync-loss.indication原語,此時loss原因為beacon_loss。設備需要在macsyncsymboloffset參數中記錄每次收到beacon幀的時間邊界,這個時間戳必須與自己本身發送的beacon幀相一致,該beacon保存在macbeacontxtime中,同時也必須與本地始終一致。時間戳根據設置不同可以是相對的也可以是絕對的。收到beacon幀后,設備將匹配mac頭中的源地址與源pan標識符,如果beacon包中的這些信息不等于本地保存的協調器信息,設備將直接丟棄這個beacon包。
當beacon包正確接收后,如果macautorequest選項為false,設備需要通知上層,具體為mlme-beacon-notify.indication原語。若為ture且beacon中有數據負載,那么設備還是先會通知上層,具體為mlme-beacon-notify.indication原語,然后設備會對比包中addresslistfield的地址,如果有本設備16位短地址或者64位擴展地址,并且macpanid相同,那么設備將開始提取間接數據的過程。如果beacon追蹤被激活,設備必須在下一個beacon可能出現的時間之前打開接收器。
beacon發送:只有當設備短地址macshortaddress不為0xffff時,設備才能夠發送beacon。當信標指數bo不為15時,一個ffd設備將使用mlme-start.request原語以開始發送beacon。無論是不是協調器節點,ffd設備都可以發送beacon。但是如果不是協調器節點,此ffd設備必須跟協調器進行過通信才能發送beacon。根據pancoordinator選項是否為true判斷設備是否為全網協調器,如果ffd設備是全網協調器那么strattime將被忽略,設備將立即發送beacon。對于非全網協調器的ffd設備,發送beacon的時間由starttime決定,如果strattime=0,那么此設備同樣也會立即發送beacon,若starttime不為0,那么發送時間計算方式如下:
如果設備未接收到小于amaxlostbeacons個連續的beacon包,他將根據自己的macbeaconorder繼續發送自己的beacon。如果設備收到了來自協調器的beacon,即沒有失去同步,那么他將根據收到的信息重新設置自己的beacon發送設置。如果失去同步了,那么設備將發送mlme-sync-loss.indication原語到上層并立即停止發送beacon,一旦上層收到原語,將立即發送mlme-start.request原語以重啟beacon的發送。
收到mlme-start.request后,mac層會將重新設置macpanid并將其放入自己beacon包的sourcepanidentifier區。如果macshortaddress=0xfffe,那么beacon幀中必須包含aextendedaddress,否則可以只包含macshortaddress。最后一次發送beacon幀的時間將會被記錄在macbeacontxtime中。
本發明中,beacon幀的發送有優先權,即先于所有發送與接收操作。下面,結合一個具體實施例對本發明的協調機制進行說明。
1、建網與重組:
(1)建立pan網絡
由ffd發起,需要完成的工作如圖1:發送setdefaultpib為true的mlme-reset.request原語重啟mac層,active信道掃描,選取合適的pan標識符。該ffd設備必須將macshortaddress設為小于0xffff的值。此ffd將負責組建pan網絡通過發送pancoordinator參數為true的mlme-start.request原語。收到此原語后,mac層更新幀結構設置和信道選項,完成操作后mac層會返回一個狀態為success的mlme-start.confirm原語,此設備正式成為一個pan協調器開始工作。
(2)重組pan網絡
如果協調器接收到一個coordrealignment參數為true的mlme-start.request原語,則協調器將嘗試改變panid,邏輯信道并重組網絡如圖2。如果設備正在發送beacon,那么下次發送會使用新的設置進行發送,但是間接傳輸要被激活。如果設備此時沒在發送beacon,那么此時設備將立即發送重組命令。如果重組命令由于信道問題沒有發送成功,那么將發送一個狀態為信道接入失敗channel_access_failure的mlme-start.confirm,那么上層可以選擇重新發送mlme-start.request原語。
成功發送重組命令之后,新的幀結構設置和信道設置將被放進beacon中進行發送,如果正在發送beacon,等待下一個周期的beacon,若沒有發送,立即發送beacon,mac層會發送一個狀態為success的mlme-start.confirmprimitive原語。
2、beacon發送:只有當設備短地址macshortaddress不為0xffff時,設備才能夠發送beacon。
當信標指數bo不為15時,一個ffd設備將使用mlme-start.request原語以開始發送beacon。無論是不是協調器節點,ffd設備都可以發送beacon。但是如果不是協調器節點,此ffd設備必須跟協調器進行過通信才能發送beacon。如果ffd設備是全網協調器,那么strattime將被忽略,設備將立即發送beacon。對于非全網協調器的ffd設備,發送beacon的時間由starttime決定,如果strattime=0,那么此設備同樣也會立即發送beacon,若starttime不為0,那么發送時間計算方式如下:如果設備未接收到小于amaxlostbeacons個連續的beacon包,他將根據自己的macbeaconorder繼續發送自己的beacon。如果設備收到了來自協調器的beacon,即沒有失去同步,那么他將根據收到的信息重新設置自己的beacon發送設置。如果失去同步了,那么設備將發送mlme-sync-loss.indication原語到上層并立即停止發送beacon,一旦上層收到原語,將立即發送mlme-start.request原語以重啟beacon的發送。收到mlme-start.request后,mac層會將重新設置macpanid并將其放入自己beacon包的sourcepanidentifier區。如果macshortaddress=0xfffe,那么beacon幀中必須包含aextendedaddress,否則可以只包含macshortaddress。
最后一次發送beacon幀的時間將會被記錄在macbeacontxtime中。
3、入網與斷連:
(1)入網
在嘗試入網之前必須經過一次mac層重啟,具體為發送mlme-reset.request原語,setdefaultpib選項為true,完成activechannelscan和passivechannelscan。信道掃描的結果將會用于選取合適pan網絡中。
如圖3,選取pan網絡后,上層將發送mlme-associate.request原語,獲取以下入網所必須的phy和macpib參數:
-phycurrentchannel
-phycurrentpage
-macpanid
-maccoordextendedaddress或者maccoordshortaddress
以上參數均通過request原語獲得。
當macassociationpermit為true時,協調器才會允許節點入網。同樣設備只有在某一個pan網絡的協調器處于允許入網的狀態時(通過掃描)才會發起入網請求。當macassociationpermit為false時,協調器將忽略設備發來的入網請求。
為了優化beacon-enabled模式的入網過程,設備可以優先跟蹤想要加入的網絡的協調器發送的beacon包。此功能由mlme-sync.request原語(trackbeacon選項設為true)激活。
設備通過mlme-associate.request原語嘗試加入已經存在的pan網絡,不能嘗試建立自己的pan網絡。一個未入網設備的mac層將發送入網命令請求入網,但如果入網請求命令由于信道原因失敗了(因為入網請求命令附帶一個ackrequest,協調器將回復confirm如果收到請求),mac層將會把結果返回給上層。但是ack并不意味著設備已經入網。協調器需要時間和根據資源分配情況來決定是否讓此設備入網。上層對這個時間進行設置(通過macresponsewaittime),如果上層發現該設備已經入過網,那么之前關于此設備的信息均將被移除。如果資源允許,那么上層將分配一個16位短地址給這個設備并發送包含新地址(意味著允許這次入網請求)的入網回復。同樣,如果資源不允許,協調器會回復一個申請狀態為失敗的入網回復。如果設備的入網請求中capabilityinformation區被置為1,那么協調器將根據自己支持的地址模式給設備分配16位短地址。如果入網請求中allocateaddresssubfield為0,那么分配的短地址將為0xfffe(這是一個特殊情況,他表示設備已經入網但是并未為其分配短地址,此時設備將使用64位擴展地址工作)。
收到協調器發送的入網請求ack后,設備將等待macresponsewaittime的時間等待協調器決定是否能夠入網。macresponsewaittime參數是一個基于網絡拓撲的參數,它的設置間接決定了此網中能夠包含多少個節點。如果設備正跟蹤beacon,那么它將一直嘗試從beacon包中提取入網回復。如果設備未跟蹤beacon,那么它將在macresponsewaittime后跟蹤入網回復。如果設備沒有跟蹤到入網回復,那么它將發送一個mlme-associate.confirm(狀態為no_data),此次入網請求被認為是失敗的,此時,上層將停止所有beacon的跟蹤。
由于入網回復也包含ack請求,請求入網的設備也需要通過ack告知協調器已經收到入網回復。如果associationstatusfield標明入網成功,設備會保存16位短地址,如果原beacon通過掃描獲得入網,那么將會有協調器的擴展地址,同樣也要存儲在maccoordextendedaddress里。
如果associationstatusfield標明入網未成功,那么設備的macpanid應該設為默認值0xffff。
(2)斷連
斷連請求由上層的mlmedisassociate.request原語發起。
當協調器需要某個已經在網內的節點離開網絡時,設備會發送斷連命令其發送方式由之前發送的txindirect選項決定,如圖4:如果txindirect為true,那么協調器會用間接的方式向設備發送斷連命令。例如:將設備地址加入間接傳輸地址,由設備來提取,如果提取不成功,協調器默認設備已經離開網絡。如果txindirect為false,那么協調器將直接發送斷連命令,在此種情況下,若因信道原因無法發送,mac層需要通知上層。同樣斷連命令也包含一個ack確認,設備收到斷連命令后需要發送ack。如果直接或者間接發送都失敗,那么協調器將認為設備已經離開網絡。如果設備想離開網絡,那么設備將向協調器發送斷連請求,即斷連命令。如果因為信道原因無法發送,同樣要通知上層。此斷連請求也包含一個ack請求,協調器再收到后要回復一個ack進行確認。如果ack沒有收到,設備將認為自己已經離開網絡。
如果請求中的源地址等于maccoordextendedaddress,那么設備同樣認為自己已經斷連。當協調器收到一個這樣的斷連請求時,首先它要確認這個源地址是在本網內的某個設備的,經過確認后,協調器認為設備已經斷連,否則忽略這個消息。
設備斷連后,必須移除關于本pan網絡的所有參數。macpanid,macshortaddress,macassociatedpancoord,maccoordshortaddress以及maccoordextendedaddress均需重置為默認值。而協調器的上層只需要移除關于此設備的信息即可。
請求斷連的設備需要通過mlme-disassociate.confirm原語告訴上層斷連結果。
4、同步過程如圖5所示:beacon-enabled模式下的所有設備必須通過beacon同步,這樣才能進行間接傳輸和追蹤beacon。設備只能在beacon中含有具體pan標識符macpanid的網絡中進行beacon同步,若macpanid=0xffff,那么設備將不會嘗試beacon同步。收到mlme-sync.request原語后,設備將嘗試進行beacon同步,設備會嘗試通過周期性激活接收器跟蹤beacon包。如果不允許跟蹤,但是上一次的同步允許跟蹤,那么設備還是將檢測一個周期然后再停止跟蹤。為了達到beacon同步,設備需要開啟它的接收器并在至多[abasesuperframeduration*(2n+1)]內進行搜尋,其中n=信標指數bo。如果在此期間未收到匹配pan標志符的beacon,設備會重復搜尋直到達到最大嘗試次數amaxlostbeacons,此時設備將向上層發送mlme-sync-loss.indication原語,此時loss原因為beacon_loss。設備需要在macsyncsymboloffset參數中記錄每次收到beacon幀的時間邊界,這個時間戳必須與自己本身發送的beacon幀相一致,同時也必須與本地始終一致。時間戳根據設置不同可以是相對的也可以是絕對的。
收到beacon幀后,設備將匹配mac頭中的源地址與源pan標識符,如果beacon包中的這些信息不等于本地保存的協調器信息,設備將直接丟棄這個beacon包。
當beacon包正確接收后,如果macautorequest選項為false,設備需要通知上層(mlme-beacon-notify.indication原語)。若為ture且beacon中有數據負載,那么設備還是先會通知上層(mlme-beacon-notify.indication原語),然后設備會對比包中addresslistfield的地址,如果有本設備16位短地址或者64位擴展地址,并且macpanid相同,那么設備將開始提取間接數據的過程。如果beacon追蹤被激活,設備必須在下一個beacon可能出現的時間之前打開接收器。
5、stattime運行:starttime的含義如圖6所示,starttime相當于一個偏移量,節點根據自己接收beacon的時間,并與starttime相加得到自己發送beacon的時間。starttime選取原則如圖7,通過網絡規模可以確定需要支持的鄰節點數,由此可得超幀指數so(superframeorder)與信標指數bo的差值,根據數據周期要求可以得到幀長的大致范圍,由此確定信標指數bo的值,從而得到超幀指數so的值。另外由于beacon有可能跨時隙,若以時隙為單位進行偏移,則需要保證starttime取偏移量的整倍數。
顯然,本發明的上述實施例僅僅是為清楚地說明本發明所作的舉例,而并非是對本發明的實施方式的限定,對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動,這里無法對所有的實施方式予以窮舉,凡是屬于本發明的技術方案所引伸出的顯而易見的變化或變動仍處于本發明的保護范圍之列。