無線傳感器網絡拓撲的監控與維護
在同一條數據通路上的節點進行數據轉發時,數據傳遞路徑上的各個節點都會發現其父節點(數據由下而上)或者子節點(數據由上而下)的丟失,進而調用void ZDOSynclndicationCB(byte type,uint16 shortAddr)函數。如圖4所示,如果網關發送數據到終端節點1,則在網關到終端節點1數據路徑上的所有節點(網關、路由1、路由2、終端1)都能夠發現其了節點的丟失;終端節點1發送數據到網關,則路徑1上的所有節點都能發現其父節點的丟失。
該方法通過建立數據通路上起始節點和末端節點的數據通訊來實現整條路徑上節點丟失情況的獲取。其具體操作過程分為兩個部分:其一是父節點丟失情況的獲取。由前面提到的實施條件可知,終端節點無需任何人為操作就能夠發現其父節點的丟失,而無需對此部分做特殊處理,因而只需對路由節點做出處理。而由路由葉子節點(如圖4中路由節點2、4)向網關發送數據時,則可實現整條路徑上所有節點丟失情況的獲取。其二是了節點丟失情況的獲取。子節點丟失的獲取可以通過網關向葉子節點(圖4中所有終端節點和路由4)發送數據的方法來覆蓋整個網絡中的所有節點,從而使全部節點都能夠發現其了節點的丟失情況。
人為加入上述兩部分數據通訊后,只要整個網絡中有節點丟失,該丟失節點的父節點和子節點都會產生失步函數voidZDO_SyncIndicat ionCB(byte type,uint16 shortAddr)的調用,這樣就可以簡單地在該函數中添加向上層應用報告的功能,實現網絡中節點丟失信息獲取。并且數據通訊量由原來的28條減少到6條,從而大大減少了數據消耗和由此帶來的系統資源占用。
Z-stack協議棧在全功能節點中只維護與本節點直接關聯的節點信息的關聯表,沒有整體網絡信息的存儲功能。為了解決Z-stack關于網絡全貌信息缺失的缺陷,結合本文提出的網絡拓撲結構監控方法,設計一種拓撲結構維護的方法,在占用少量資源的情況下獲取整個網絡的拓撲信息,并將信息整合到網關節點中統一維護和管理,從而建立網絡拓撲的管理辦法,實現具有自組織、自適應能力的智能網絡管理機制。
3.1 管理模式
網絡信息管理可采用搜集模式和監控模式相結合的方式。搜集模式通過發送指令搜集網絡拓撲信息,賦予用戶即時獲取當前網絡結構的能力;監控模式通過監控從網絡組建起歷史網絡的結構變化,實現網絡拓撲信息更新,從而整合為當前網絡拓撲結構。
搜集模式在實現時,首先由網關設備廣播一個命令來搜集設備信息;然后,收到廣播信息的路由節點再按照一定的數據格式,由網關返回子節點關聯信息;當網關收到各個路由節點的返回信息后,再將其組合為整個網絡中的設備信息。
監控模式則是從網絡形成起,網關節點就開始監控所有節點的狀態;當路由節點檢測到其子節點加入或者退出的時候,向網關上報該子節點的狀態變化信息,而網關節點檢測到子節點加入或者退出則不用上報,直接在網關內部處理;當網關接收到路由節點上報的狀態信息后,就會刪除或者增加該路由子節點的關聯信息,同時更新整體網絡結構。
3.2 網絡拓撲存儲結構
網關節點作為整個網絡拓撲結構管理的中心,負責拓撲結構的添加、刪除和更新,因此,必須在網關節點存儲整體的網絡拓撲結構信息。受網關資源的限制,本文采用分級動態鏈表的形式保存網絡拓撲信息,以便以較少的資源占用實現拓撲信息的動態存儲。本設計的網絡拓撲存儲結構如圖5所示。
圖5中,AssocLisHead是裝載路由節點頭信息的數組,包含有該路由節點的長地址、短地址、父節點短地址和擁有的子節點數以及指向其子節點鏈表assoc list的頭指針;assoclist鏈表中記載著這一路由下的了節點信息,包括子節點的短地址、長地址、類型、連接狀態等。在該路由下每增加一個子節點,就會在assoc list鏈表中添加一個節點信息,當節點離開時,又會將相對應的鏈表刪除。這樣,網關就可以方便地對當前網絡中的昕有節點的拓撲和相關信息進行查找、更新、維護。
3.3 網絡維護方案
網絡維護的實施要建立網絡中所有類型節點間的區分與協作機制。區分是根據節點類型的不同、事件類型的不同做出區別處理;協作是在所有節點間建立連動響應機制,相互配合,并實現信息的匯聚和統一管理。具體的網絡維護分為事件響應和信息維護兩部分。
3. 3. 1 拓撲變化事件的響應
拓撲變化主要是指節點加入事件和節點退出事件。當節點加入事件是指節點加入網絡時,其父節點負責將該子節點加入信息上報網關;節點退出事件則是指獲取到的網絡節點丟失信息的處理。處理可分為兩種情況:一種是當傳遞來的type=1時,即丟失節點為本節點的父節點時,開啟網絡加入流程,使節點可以重新加入網絡,并恢復網絡的正常運行;第二種情況是type=0時,即本節點發現其中一子節點丟失。本方法對于長時間無法連接的子節點,將啟動移除(LEAVE)流程,將該子節點從網絡中刪除,同時向網關節點報告子節點退出的消息。
需要注意的是:當子節點丟失時,有的時候是真正丟失了(長時間或永久無法連接),但更多的時候只是暫時地失去聯系,隨著子節點的重新加入申請,又可以加入網絡,恢復正常的運行狀態。因此,設計時需要將暫時失步和真正丟失這兩種情況區分開,再分別做出合理的處理。
評論