王海濤 唐笑
南京審計大學金審學院,南京 210023
無線傳感網(wǎng)是由大量傳感器部署在某一特定的區(qū)域,通過無線通信連接,自組織構成的分布式網(wǎng)絡系統(tǒng),能完成環(huán)境信息采集、數(shù)據(jù)傳輸和數(shù)據(jù)處理等任務[1]。然而,由于無線傳感網(wǎng)的自組織、動態(tài)拓撲、部署環(huán)境復雜及節(jié)點資源受限等特點,常會出現(xiàn)某些傳感節(jié)點能量耗盡或遭受攻擊破壞而導致整個網(wǎng)絡性能急劇下降甚至崩潰現(xiàn)象的出現(xiàn)[2]。因此,無線傳感網(wǎng)急需適當?shù)募夹g手段來實時監(jiān)測和快速定位失效/故障節(jié)點,并通過重構網(wǎng)絡拓撲以及時恢復網(wǎng)絡連通性,從而確保上層應用服務的持續(xù)穩(wěn)定運行。具體而言,故障診斷用于迅速定位失效/故障節(jié)點的位置及原因,網(wǎng)絡重構負責自主調(diào)整節(jié)點工作狀態(tài)和重組網(wǎng)絡拓撲以恢復網(wǎng)絡通信服務[3]。網(wǎng)絡重構技術最早應用于配電網(wǎng)來確保電力傳輸在正常情況下的經(jīng)濟性和異常情況下的可靠性[4]。隨后,網(wǎng)絡重構技術逐漸在計算機網(wǎng)絡和通信網(wǎng)絡中得到廣泛應用,目的是在網(wǎng)絡即將發(fā)生故障或已出現(xiàn)事故后迅速采取補救措施,如隔離故障網(wǎng)絡區(qū)域和重新調(diào)配網(wǎng)絡資源,使網(wǎng)絡不至于整體癱瘓并盡快恢復原有服務性能。為了盡可能減少因網(wǎng)絡故障造成的損失,希望通過故障診斷技術提前發(fā)現(xiàn)網(wǎng)絡中存在的各種隱患,或在故障出現(xiàn)后盡快定位故障位置并確定故障原因,然后可以通過網(wǎng)絡拓撲重構機制來恢復網(wǎng)絡連通性并維持網(wǎng)絡服務正常運行[5]。不難看出,故障診斷是網(wǎng)絡重構的重要支撐技術,通常根據(jù)網(wǎng)絡監(jiān)控和反饋得到的節(jié)點和鏈路狀態(tài)等信息,采用相應的分析和評測方法來判斷網(wǎng)絡中是否發(fā)生故障以及出現(xiàn)故障的類型、位置及可能的原因。網(wǎng)絡重構是恢復網(wǎng)絡連通性和確保網(wǎng)絡平穩(wěn)運行的必要措施,網(wǎng)絡重構機制涉及網(wǎng)絡參數(shù)調(diào)整、節(jié)點重部署以及拓撲重組織等多種方法,本文主要闡述基于拓撲重組的網(wǎng)絡重構技術。
無線傳感網(wǎng)中的故障類型多樣,包括軟硬件故障、能耗失效故障和攻擊失效故障等。故障診斷包括故障檢測、故障定位和故障分析等內(nèi)容[5]。故障檢測周期性主動或基于事件觸發(fā)被動向故障診斷系統(tǒng)發(fā)送檢測信息;故障診斷系統(tǒng)根據(jù)反饋的檢測數(shù)據(jù)通過某種算法或規(guī)則判斷系統(tǒng)是否出現(xiàn)故障。若檢測出故障,則通過故障定位功能來迅速確定故障出現(xiàn)的位置,并啟動故障分析模塊來分析故障的類型及可能的原因,并及時通告故障恢復模塊或管理人員進行必要的干預。
現(xiàn)有的故障診斷方法大致可以分為3類:基于知識的故障分析方法、基于解析模型的故障分析方法和基于信號處理的故障分析方法[6]。
1.2.1 基于知識的故障分析方法
基于知識的故障分析方法的基本思想是在知識的概念和層次上,以知識處理技術為理論基礎,通過在概念和處理方法上的知識化實現(xiàn)系統(tǒng)的故障診斷,具體手段包括專家系統(tǒng)、圖論、模糊推理、神經(jīng)網(wǎng)絡、故障樹和知識觀測器等方法。
專家系統(tǒng)的基本思想是根據(jù)專家的分析問題、處理問題的方法經(jīng)驗,建立知識庫和推理機,設計一個程序,并以此程序為診斷依據(jù)進行故障診斷。一個完整的專家系統(tǒng)應包括知識庫、推理機制、知識獲取機制和解釋機制。專家系統(tǒng)的優(yōu)點是無需完全匹配發(fā)現(xiàn)的問題,而是通過構建一個合理的模型來試圖完成問題的精確求解,其主要缺點是系統(tǒng)無法自主學習獲取知識,不能檢測出未保存在知識庫中的未知故障。
基于圖論的方法主要有基于符號有向圖(symbol directed graph,SDG)的診斷方法和基于故障傳播有向圖(faliure propagation directed graph,F(xiàn)PDG)的診斷方法。SDG方法將圖中的節(jié)點對應為部件狀態(tài)變量,連接兩節(jié)點的邊表示節(jié)點的關系,用“+”、“-”、“0”表示兩節(jié)點間的影響關系,若任意一節(jié)點處于非零狀態(tài)則表示系統(tǒng)出現(xiàn)了故障。由于變量間的定性邏輯關系通常保持穩(wěn)定不變,假設故障只能沿一致邊傳播,基于節(jié)點之間的相關關系和檢測到的正負偏差來推測故障源節(jié)點。雖然此方法是定性的,但在實際的化工過程中,它有不可比擬的優(yōu)勢,可與其他方法進行結合。FPDG方法通過把系統(tǒng)中的對象抽象為圖中的相應節(jié)點,把元件中的故障傳播關系作有向邊,把系統(tǒng)建模為有向圖,從而展開故障診斷。
神經(jīng)網(wǎng)絡具有自組織、自學習、聯(lián)合記憶、并行處理、分布式存儲和全局作用等特點,使其在故障診斷方面有很大的優(yōu)勢?;谏窠?jīng)網(wǎng)絡的方法是通過專家求解問題的實例來訓練神經(jīng)網(wǎng)絡并獲取知識,相比專家系統(tǒng),它的效率更高,質量更好。神經(jīng)網(wǎng)絡的優(yōu)點是通用性較強,能夠自主學習,缺點是為保障診斷的準確性和可靠性,只能利用明確的實例,而且需要足夠多的學習實例,未能充分利用專家積累的寶貴經(jīng)驗。
故障樹的基本思想是在特定的環(huán)境條件下,從人為、設備、系統(tǒng)等方面進行故障分析,將所有故障和可能的原因都分析出來,并將故障與原因的關系表示出來以生成故障分析樹。
1.2.2 基于解析模型的故障診斷方法
基于解析模型的故障分析方法由來已久,主要思想是根據(jù)系統(tǒng)中元件之間的互相連接關系,建立一套用于診斷故障的數(shù)學模型,根據(jù)故障診斷相關的原理和數(shù)學方法對被測的故障進行針對性的診斷和分析,具體采用的手段有參數(shù)估計法和狀態(tài)估計法。
參數(shù)估計法主要是通過比較元件參數(shù)與正常值的關系來判斷系統(tǒng)是否出現(xiàn)故障以及故障的程度。具體而言,首先分析確定模型物理參數(shù)與元件參數(shù)之間的關系方程,然后求出實際的模型參數(shù),根據(jù)關系方程解出元件參數(shù)。此方法的缺點是對于非雙射的關系方程無法求出模型參數(shù)。因此,在處理實際問題時,常與其他診斷技術相結合,以獲得更好的故障診斷效果。
狀態(tài)估計法的主要思想是重構系統(tǒng)中的被控設備和系統(tǒng)的可測狀態(tài),將其與系統(tǒng)中的可測狀態(tài)變量比較起來構成一個殘差檢測序列,再通過構造適當?shù)臍埐钚蛄心P?,并用統(tǒng)計分析方法對相應的殘差檢測序列進行分析處理,從而將所有構成故障的信息從狀態(tài)檢測分析出來。
1.2.3 基于信號處理的故障分析方法
基于信號處理的故障分析方法的基本思想是測量系統(tǒng)的輸入輸出值,與正常值進行比較,若在正常范圍內(nèi)則系統(tǒng)正常,反之則系統(tǒng)出現(xiàn)故障。目前最常用的手段是基于小波變換的故障診斷方法?;谛〔ǖ墓收显\斷方法通過對觀測數(shù)據(jù)進行小波變換,以其信號的奇異性或頻率結構變化為依據(jù)進行故障診斷,或者以系統(tǒng)的脈沖相應函數(shù)的小波變換直接進行故障診斷。小波變換不需要系統(tǒng)復雜的數(shù)學模型,小波變換抑制噪聲的能力很強,效率高,計算快,運算量較少,是一種很有應用前景的故障診斷方法。
拓撲重構是指在故障發(fā)生后,采取相應的手段重組網(wǎng)絡拓撲,恢復網(wǎng)絡連通性,使網(wǎng)絡盡快恢復服務性能[7]。WSN中節(jié)點能量有限,大多部署在較為惡劣的環(huán)境中,并且WSN中往往存在一些關鍵節(jié)點,若關鍵節(jié)點耗盡能量或遭到攻擊,很可能導致網(wǎng)絡大面積癱瘓。關鍵節(jié)點通常是在網(wǎng)絡通信中發(fā)揮作用較大,承擔通信流量、網(wǎng)絡負荷較多的部分節(jié)點,關鍵節(jié)點一旦失效,可能會導致整個網(wǎng)絡崩潰或者癱瘓。對關鍵節(jié)點采取預先保護措施,可以很大地增強和提高網(wǎng)絡的抗毀性。為此,可以對一些重要的、能導致網(wǎng)絡快速癱瘓的關鍵節(jié)點進行備份,萬一這些節(jié)點失效,則可以迅速地重新啟動這些備用節(jié)點,快速地恢復網(wǎng)絡性能,增強了網(wǎng)絡的抗毀能力。
網(wǎng)絡拓撲重構的常用方法包括:基于最短路徑樹的拓撲維護算法、基于節(jié)點功率控制的拓撲重構方法、逐次近似計算方法和基于分簇的拓撲維護方法等[8]。
基于最短路徑樹的拓撲維護算法的主要目的是在網(wǎng)絡發(fā)生故障后采取措施確保網(wǎng)絡連通,網(wǎng)絡能夠正常運轉,以免出現(xiàn)分區(qū)。當網(wǎng)絡出現(xiàn)故障時,故障節(jié)點失效,觸發(fā)鄰居節(jié)點響應,相互發(fā)送分組,根據(jù)發(fā)送的分組判斷網(wǎng)絡是否連通,若無法作出準確的判斷,則繼續(xù)觸發(fā)其他鄰居節(jié)點響應,直至網(wǎng)絡恢復連通[9]。
由于傳感器網(wǎng)絡節(jié)點存儲的能量有限,因此節(jié)點能量在網(wǎng)絡運行過程中非常重要,可以通過控制節(jié)點的發(fā)射功率來調(diào)節(jié)節(jié)點的覆蓋范圍。基于節(jié)點功率控制的拓撲重構方法即通過對節(jié)點功率的控制實現(xiàn)網(wǎng)絡重構的方法。具體來說,當網(wǎng)絡某一節(jié)點由于能量耗盡或者是遭受攻擊后失效,不一定會導致整個網(wǎng)絡失效,可能會出現(xiàn)網(wǎng)絡分割,部分網(wǎng)絡無法連通,可以通過控制調(diào)整失效節(jié)點周圍其他節(jié)點的運行功率,使它們跳過失效節(jié)點,使得至少有一條鏈路連通,從而實現(xiàn)網(wǎng)絡重構[10]。
逐次近似計算方法的基本思想是當網(wǎng)絡拓撲結構或傳輸環(huán)境發(fā)生變化后,拓撲控制算法隨之觸發(fā),計算使網(wǎng)絡性能達到最佳的新拓撲。此方法雖然可以使重構后的網(wǎng)絡達到最優(yōu),但是計算開銷較大,收斂時間長,不適合移動性較強的網(wǎng)絡場景[11]。
基于分簇的拓撲維護方法是先將網(wǎng)絡分簇,將節(jié)點按照功能的不同分為簇頭、中繼及普通節(jié)點。當簇頭自測出即將失效時,會向所在簇的普通節(jié)點發(fā)出廣播消息,以便尋找新的可替代的簇頭;中繼節(jié)點失效必須反饋給簇頭節(jié)點,由簇頭節(jié)點尋找新的節(jié)點進行代替[12]。網(wǎng)絡中大多數(shù)為普通節(jié)點,當少數(shù)普通節(jié)點失效時并不會對網(wǎng)絡產(chǎn)生影響,所以一般不采取措施。
基于故障診斷的網(wǎng)絡重構方案的基本思想是首先利用故障診斷技術發(fā)現(xiàn)故障,確定故障點和故障原因,進而觸發(fā)網(wǎng)絡拓撲重構技術,恢復網(wǎng)絡連通性以維持網(wǎng)絡服務性能[13]。因此,網(wǎng)絡拓撲重構可分為重構觸發(fā)和重構實現(xiàn)兩個階段,如圖1所示。為實現(xiàn)重構觸發(fā),需要基于應用場景利用上述某種適當?shù)墓收显\斷方法來及時發(fā)現(xiàn)故障,明確故障類型并建立故障推理模型,對故障進行分析來確定故障發(fā)生點。為實現(xiàn)網(wǎng)絡重構,在網(wǎng)絡剛發(fā)生故障但還未出現(xiàn)分區(qū)時,可以利用路由協(xié)議自身的恢復機制恢復路由通路;而當出現(xiàn)的故障造成了網(wǎng)絡分區(qū)時,僅依靠路由恢復無法實現(xiàn)網(wǎng)絡重構,則需要采取包括節(jié)點參數(shù)調(diào)整、節(jié)點主動移動和增補節(jié)點在內(nèi)的其他手段來恢復網(wǎng)絡連通性,進而維持網(wǎng)絡服務正常運行。此外,有時還可采取額外的網(wǎng)絡拓撲優(yōu)化措施來提高網(wǎng)絡性能。
鑒于在網(wǎng)絡發(fā)生故障后,通常只是網(wǎng)絡中部分節(jié)點遭受破壞或發(fā)生故障,因而網(wǎng)絡重構無需對整個網(wǎng)絡進行全局調(diào)整恢復,而是盡可能通過局部網(wǎng)絡重構來恢復整個網(wǎng)絡的連通性,從而顯著降低網(wǎng)絡恢復時間和節(jié)省控制開銷。
為了盡可能減少網(wǎng)絡重構涉及的節(jié)點數(shù)量和引入的控制開銷,應該首先只觸發(fā)故障節(jié)點的一跳節(jié)點予以響應,如果一跳節(jié)點響應后不足以恢復網(wǎng)絡通信,則依次觸發(fā)更多的兩跳節(jié)點,直到觸發(fā)所有其他網(wǎng)絡節(jié)點?;谏鲜霾呗缘木W(wǎng)絡重構的基本工作流程如圖2所示?;静僮鞑襟E簡要說明如下:首先,通過逐漸增強故障節(jié)點的一跳鄰居節(jié)點的發(fā)送功率使其彌補故障節(jié)點造成的網(wǎng)絡空洞來消除網(wǎng)絡分區(qū),如果通過調(diào)整一跳鄰居節(jié)點的功率至最大仍無法恢復網(wǎng)絡鏈接,則需要調(diào)整故障節(jié)點的兩跳鄰居節(jié)點的功率來實現(xiàn)網(wǎng)絡恢復,重復上述操作直至網(wǎng)絡連通性恢復。但是,如果網(wǎng)絡中部分節(jié)點以最大功率運行則容易耗盡能量而失效,進而大幅影響網(wǎng)絡性能。因此,為提高網(wǎng)絡生存性和優(yōu)化網(wǎng)絡性能,需要在確保網(wǎng)絡連通的基礎上進一步優(yōu)化網(wǎng)絡拓撲,如通過逐漸降低節(jié)點發(fā)送功率甚至允許少數(shù)冗余節(jié)點進入休眠狀態(tài)以節(jié)省能量,目的是在保持網(wǎng)絡連通的前提下盡量均衡網(wǎng)絡節(jié)點的能耗。
對于未引入拓撲重構的無線傳感網(wǎng)來說,當部分節(jié)點發(fā)生故障時容易出現(xiàn)網(wǎng)絡分割現(xiàn)象,導致網(wǎng)絡不連通,造成網(wǎng)絡性能大幅下降甚至癱瘓,而當引入上述拓撲重構方案后,可以通過調(diào)整部分節(jié)點傳輸功率有效防止出現(xiàn)網(wǎng)絡分割,從而提高了網(wǎng)絡服務性能。但是,由于該方案利用鄰接關聯(lián)矩陣來建立故障模型,當網(wǎng)絡節(jié)點拓撲變化較快時,故障診斷正確率會隨之下降,進而影響方案的使用效能。
基于圖論,當前傳感網(wǎng)G的網(wǎng)絡拓撲定義為G=(V,E),其中V是所有節(jié)點的集合,E是所有節(jié)點之間鏈路(邊)的集合。令Ni[v]是G中任意節(jié)點v的第i跳鄰居節(jié)點的集合,并假設節(jié)點v最小功率和最大功率分別為Pmin(v)和Pmax(v),并且初始時節(jié)點v的發(fā)射功率為Pmin(v)。上述拓撲重構算法實現(xiàn)的偽代碼如下:
為了說明本方案的大致工作方式,圖3給出了一個基于有向圖的拓撲重構示例。首先,故障診斷算法定位出失效節(jié)點3,為了恢復網(wǎng)絡連通性,首先通過調(diào)整節(jié)點3的一跳鄰居節(jié)點1、2和4的發(fā)送功率,使得節(jié)點1、2和4可以相互通信,從而實現(xiàn)了局部網(wǎng)絡連通的恢復;若是調(diào)整一跳節(jié)點仍不能使網(wǎng)絡恢復,則繼續(xù)觸發(fā)兩跳甚至于k(k>2)跳將鄰居節(jié)點功率調(diào)至最大,直到恢復網(wǎng)絡的連通。
近年來,隨著物聯(lián)網(wǎng)和智慧城市的蓬勃興起,作為支撐技術之一的無線傳感網(wǎng)的穩(wěn)健可靠運行至關重要。本文針對無線傳感網(wǎng)的特點研究了故障診斷和網(wǎng)絡重構技術的應用方法,重點解決WSN中的臨界故障發(fā)現(xiàn)和拓撲重構問題,即根據(jù)實時感知的WSN情景信息及時發(fā)現(xiàn)網(wǎng)絡可能存在的瓶頸節(jié)點和故障節(jié)點,合理調(diào)整網(wǎng)絡節(jié)點工作狀態(tài)來恢復網(wǎng)絡通信。論文對現(xiàn)有的故障診斷方法和網(wǎng)絡拓撲重構技術進行了歸納總結,并設計了一種適合于無線傳感網(wǎng)的網(wǎng)絡拓撲重構方案,旨在增強無線傳感網(wǎng)的整體生存性。今后將進一步對設計的方案進行針對性的仿真實驗以驗證其實際效果。