唐詩奇,李 迅,聞志平
(國防科學技術大學機電與自動化學院,長沙 410073)
服務發現機制是指網絡中各種程序和設備能夠聲明自己的功能以及提供的服務,而其它程序和設備則可以在權限范圍內自動發現并訪問所需的服務的一種機制[1]。服務發現機制可以建立資源和客戶之間的連接,使能提供服務的設備可以實現自己的能力,需要服務的設備可以及時發現并得到服務,從而實現一切經由網絡訪問的處理能力和信息資源共享和配置優化。因此對無線傳感器網絡服務發現機制的研究具有重要的現實意義和理論意義[2]。由于無線傳感器網絡節點數量巨大,提供的服務也很多,如何在眾多的數據和服務中發現服務并利用服務,實現用戶與具體服務之間的直觀通信,是實現無線傳感器網絡實際應用的關鍵。
SLP,UPnP,Salutation,Jini幾種傳統服務發現機制[3]都是基于有線網絡開發的,協議中不論是服務提供者、還是服務需求者都具有較強的計算處理能力、通常不用考慮的能量問題、較充裕的網絡帶寬以及可靠的網絡連接。而無線傳感器網絡中節點能量有限、計算處理能力很弱、帶寬不足、無線通信可靠性差等諸多的特殊性,因此它們在無線傳感器網絡中都難以使用。
目前,應用于無線傳感器網絡的服務發現模型[4]主要有無目錄和有目錄兩種結構。當節點數目巨大時,分布式無目錄結構采用端對端通信,當多個客戶需要同時查找多個服務時,網絡傳輸數據量大,容易出現網絡擁塞等問題,通信效能低下,導致網絡能量的嚴重浪費損耗,使得本來就嚴峻的無線傳感器網絡能量困乏問題更加突出。目錄式服務發現機制[5]中服務的提供者和使用者之間的主要訪問過程是通過目錄代理完成的,能夠有效提高服務發現效率和系統可擴展性。文獻[6]介紹了一種IPv6傳感器網絡服務發現應用系統設計。提出的目錄式服務發現模型具有良好的可擴展性,在協議設計時也較好的考慮了協議的簡潔實現,可以節約能量,但是由于它的分簇路由算法簇首一直不變更,導致簇首能量迅速消耗殆盡而失效,整個網絡陷入癱瘓。
所以設計一種較完善無線傳感器網絡服務發現機制必須綜合考慮可擴展性和安全性、效率及開銷、服務信息的動態更新機制、底層通信平臺等方面的問題。綜合考慮本文提出了一種區域式的服務發現機制模型,在模型的基礎上分析了對區域式無線傳感器網絡服務發現機制起支撐作用的分簇路由算法和數據融合算法,改進GAF算法形成了E-GAF算法,采用了感知器數據融合算法。
區域式無線傳感器網絡服務發現機制,是一種基于位置信息將傳感器節點劃入相應的單元格,即簇的服務發現機制。只有基于區域式的服務發現機制才能與無線傳感器網絡以數據為中心和實現監測、控制的應用屬性相對應。區域式無線傳感器網絡服務發現機制的主要思想是采用分布式目錄的系統構架,利用E-GAF分簇路由算法,將監控區域劃分成若干虛擬單元格,將傳感器節點按照位置信息劃入相應的單元格;在每個單元格中定期根據剩余能量信息選舉產生一個簇首節點,只有簇首節點保持活動,其它節點進入休眠狀態,當有服務請求來臨時,由簇首節點響應服務并喚醒其它節點,簇內節點感知到數據后發送給簇首,由簇首進行感知器數據融合,把融合后的信息返回給服務請求者。
區域式服務發現機制是將整個無線傳感器網絡劃分為四個服務發現層次的分層式結構,基站作為整個無線傳感器網絡的頂層目錄代理TDA(Top Directory Agent),網關作為二層目錄代理SDA(Second Directory Agent),簇首作為基層代理BTA(Base A-gent)以及能夠提供各種服務的普通傳感器節點。主要定義了四種實體模塊:節點實體模塊,簇首實體模塊,網關實體模塊以及基站實體模塊。
普通傳感器節點主要負責采集數據,并將采集到的數據發送給簇首節點。它主要包括數據采集模塊、數據處理和控制模塊、通信模塊和能量供應模塊??刂颇K主要負責接收簇首節點發來的控制命令,節點的休眠和喚醒、數據的采集處理、為客戶端提供服務以及監控等。數據處理模塊能夠將傳感器感知到的數據打包交給通信模塊發送給簇首節點,在服務發現框架內數據處理模塊需要根據服務描述規則,描述自己所能提供的服務的詳細情況,并封裝成服務通告,向所屬的簇首節點注冊服務。程序流程如圖1所示。
簇首實體模塊主要是負責本簇與網關的通信、綜合本簇各節點的服務信息向網關注冊本簇服務、節點喚醒、數據融合和將融合后的信息返回給客戶;簇首是經過周期性能量選舉產生的,具有和普通節點相同的硬件結構和所有功能。當節點成功當選為簇首時,數據融合算法、節點管理算法等就會被激活。程序流程圖如圖2所示。

圖1 節點程序流程圖

圖2 簇首程序流程圖
網關實體模塊負責接收簇首節點發來的服務注冊信息,然后綜合本局部網絡中所有服務信息向基站注冊,同時響應基站服務請求命令,指揮本局部網絡的簇首完成服務任務;網關軟件結構圖如圖3所示。其中服務管理模塊主要是為每一次服務發現應用會話過程提供數據包的解析、暫存以及管理服務注冊過程,提供服務的注冊、更新、刪除等功能;協議轉換模塊是將無線傳感器網絡中使用的通信協議IEEE802.15.4和基站連接互聯網的IP通信協議進行協議轉換。在無線傳感器網絡體系中可以存在多個網關,因此本文把網關作為二層目錄代理,實現簡單的目錄代理功能,一方面接收簇首節點發來的服務注冊信息,然后綜合本局部無線傳感器網絡中所有服務信息,提供本局部無線傳感器網絡內各節點所提供服務的注冊,各網關的所有注冊信息再匯總給基站,實現整個網絡體系所能提供的服務的注冊,以對用戶服務請求信息做出正確響應;另一方面功能是簡單的幀格式轉換協議,實現將無線傳感器網絡內部使用的IEEE 802.15.4的數據幀格式和以太網幀格式相互轉換。網關程序流程圖如圖4所示。

圖3 網關軟件結構圖

圖4 網關程序流程圖
基站負責接收并處理以太網中客戶發來的服務發現請求信息包,同時接收并儲存網關提供的該局部WSN中所有節點能夠提供服務的簡要注冊信息,并生成服務注冊信息表,當客戶向基站發來服務發現請求信息時,基站根據服務發現請求信息里的所需要的服務發現類型查找服務注冊信息表,如果找到能夠提供該服務的傳感器節點,并且判斷該類型節點當前可用,那么返回所有能夠提供該服務的節點信息給用戶,客戶得到基站的信息反饋后,選擇客戶認為最好的節點,開始獲得服務;如果未能找到能夠提供該類型服務的節點或者該類型節點當前不可用,那么返回客戶不可用信息。當客戶端對某種服務或者某個提供服務節點的服務請求過多時,根據客戶的優先級篩選出優先級較高的客戶端進行服務?;拒浖Y構圖如圖5所示?;境绦蛄鞒虉D如圖6所示。

圖5 基站軟件結構圖

圖6 基站程序流程圖
總體服務發現流程框架圖如圖7所示。

圖7 服務發現總體設計流程圖
對于網格環境中實現的路由算法[7-8]有很多。本文的區域式服務發現機制是基于網絡分簇結構和地理位置信息而提出的,必須使用一種基于地理位置信息的分簇路由算法。由于節點處于偵聽狀態也會消耗很多能量,GAF算法[9]使節點盡量處于休眠狀態可以節約很多節點能量。但是假設最壞的情況,開始當選簇首的節點在后來的簇首競選中一直獲勝,那么它的能量將迅速消耗殆盡,導致本簇內部所有節點和網關無法通信而失效,無法提供服務,這是一種嚴重的浪費。因此在GAF算法的基礎上本文提出一種基于能量選舉的分簇路由算法E-GAF,目的是使得各節點的能量消耗達到均衡,延長無線傳感器網絡的生存周期。
E-GAF分簇路由算法的具體分簇流程如圖8所示。

圖8 E-GAF分簇路由算法具體分簇流程
區域式服務發現機制是針對無線傳感器網絡以數據為中心的特點,即客戶并不需要知道每個節點的數據,只關心某個區域內的數據,同時無線傳感器網絡存在能量約束,減少傳輸的數據量能有效的節省節點的能量,因此在從各個傳感器節點收集數據的過程中,需要利用節點的本地計算和存儲能力處理數據的融合,去除冗余信息,從而達到節省能量的目的,提高信息的準確度。數據漏斗模型屬于估計融合算法的一種[10],能夠大大減少網絡中傳輸的數據包,降低帶寬占用率,提高通信效率,增強服務發現的實時性,符合無線傳感器網絡區域式服務發現模型的特點[11]。
感知器數據融合算法,就是一種基于數據漏斗模型的算法,即自適應加權數據融合算法[12],采用權值W表示各個測量數據的相對重要程度。精度高的數據誤差小,權重值應該更大;而精度低的數據誤差大,權重值應該較小。將測量數據按照精度分別乘以權重值再進行平均值處理,有利于提高測量結果的準確性。在一個簇內各節點的傳感器對應不同的權重值,在總均方誤差最小這一最優條件下,根據各個傳感器的歷史測量值找到其對應的最優權重值。節點在提供服務時,發送數據到簇首,簇首根據各節點的最優權重值,使融合后的感知數值達到最優。
假設有n個傳感器節點,各個節點的傳感器的方差分別為 σ21,σ22,σ2n,傳感器的測量值分別為X1,X2,…,Xn它們彼此互相獨立,并且是X的無偏估計,各傳感器的加權因子分別為W1,W2,…,Wn,則有:

故σ2可寫成:

由式(4)可以看出,總均方差σ2是關于加權因子的多元二次函數,因此它必然存在最小值。可求出總均方誤差最小時所對應的加權因子為:

將式(5)代入式(4)得到對應的最小均方誤差為:

因此本次數據融合結果,也就是估計值值為

節點感知到數據,發送給簇首節點,簇首節點將本簇內數據融合完成以后,將融合得到的數據發送給網關,網關同樣根據感知器數據融合算法,把各簇首返回的數據融合以后再傳輸給基站,從而完成服務。
本文在NS2平臺上進行仿真,仿真環境如下:在1 000 m×1 000 m范圍內,設定節點位置固定。根據Deborah Estrin在Mobicom 2002會議上的特邀報告 (Wireless SensorNetwork,PartⅣ:Sensor Network Protocols)中所述傳感器節點各部分能量消耗的情況,假設發送一個比特的數據所消耗的能量約為4 000 nJ/bit;接收一個比特的數據所消耗的能量約為3 000 nJ/bit;監聽所消耗的能量約為2 500 nJ/bit;休眠所消耗的能量約為50 nJ/bit;數據一跳的最大距離R=100 m。數據包長度為128 bit,控制包長64 bit。
仿真試驗設置網絡節點數目為400個,單元格為40個,每個單元格有10個節點,數據包長度為128 bit,控制包長64 bit。節點的初始能量均為1 000 J,當節點剩余能量為100 J時視其為死亡節點。仿真中設置5 min為一個周期,一個周期內完成一次分簇過程需要大約5 s,使數據傳輸時段約為295 s,遠大于分簇時段。一個周期完成后,開始下一個周期,5 s內完成下一簇首選舉。仿真時間為1 h(12個周期)。仿真采用傳統路由算法DSR[13]、GAF 算法以及E-GAF 算法,通過比較節點失效個數來比較三種無線傳感器網絡網絡生存周期。如圖9所示。

圖9 節點失效個數比較
由圖9可知,相比前兩種算法,同一時刻,E-GAF算法網絡中出現的是失效節點數最小。節點失效情況在45 min以前變化都是非常緩慢的,45 min以后網絡網絡開始出現失效節點。失效節點曲線坡度最大,大部分節點能量接近失效,表明網絡中大部分節點出現了能量消耗,能量消耗相對于其他兩種算法更加均勻。當接近60 min時,失效節點數達到200,視為網絡失效。采用E-GAF算法網絡的生存周期遠長于其他兩種算法。
本實驗中采用了相同的服務發現機制進行了仿真實驗,服務發現機制中采用了E-GAF分簇路由算法,分析采用了感知器數據融合算法,沒有采用感知器數據融合算法兩種方式在數據包損失概率和網絡能耗方面的性能差距。實驗中采用在總節點數相同的情況下各仿真20次取平均值,每次仿真時間均為100 s。仿真實驗數據如圖10所示。

圖10 數據包損失概率比較
當節點數在50~130之間時,兩種算法的數據包損失概率都在10%以下,表明區域式服務發現機制在密度較大的無線傳感器網絡中具有較低的數據包損失概率。隨著節點密度進一步增加,采用感知器數據融合算法的服務發現機制的數據包損失概率,明顯小于沒有采用數據融合算法的服務發現機制。可見在節點密度很大的無線傳感器網絡中,引入感知器數據融合算法的區域式服務發現機制能夠提高包的傳送概率。
當網絡節點密度過大時,數據包傳輸量急劇增加,數據包沖突十分頻繁,導致網絡數據包損失概率較高,區域式服務發現機制的分簇結構使得數據包傳輸更加有序,有效地減少了數據包傳輸量,降低了數據包遺失概率。而簇內引入的感知器數據融合算法能有效地除去冗余節點和冗余信息,大大降低了數據包傳輸量,進一步降低了數據包損失概率。
設定單元格數量為20個,仿真時間為100s,單元格內節點個數以5遞增,仿真結果如圖11所示。

圖11 單元格數量固定時下單個節點能耗的比較
無線傳感器網絡各節點將數據發送到簇首,如果不采用數據融合算法,那么由于沖突等情況,簇首節點需要發送多次數據包,這個次數絕對超過節點個數的;如果采用數據融合算法,簇首接收完數據包以后,僅需要發送少數幾次,因為網絡中傳輸數據量大大減少,數據包沖突大大減少,所以采用數據融合算法的網絡能夠節約將近一半的節點能量。該仿真表明使用感知器數據融合算法的網絡,能夠較好的降低網絡能耗,隨著節點密度的增加,這種效果更加明顯。
上述兩個仿真實驗清楚的表明,感知器數據融合算法在不較大影響數據包傳送概率的情況下,能很大程度的減少網絡中能量的消耗,能更好的滿足無線傳感器網絡服務發現機制的能量要求。
綜上所述無線傳感器網絡區域式服務發現機制具有以下優勢:
①采用的 IEEE802.15.4通信協議,只要在網關中內置了簡單的協議轉換程序,就可以實現外網的客戶端與傳感器節點之間經過基站和網關的間接通信,大大增強了無線傳感器網絡的兼容性和應用范圍。
②使用雙服務器方法,提高基站的健壯性,同時只要在基站上設置了安全保護功能,在未經基站授權或許可的情況下,采集到的數據就不可能流失出去,保證數據源及傳感器節點的安全。
③采用分簇路由機制能夠減少網絡中傳輸的大量數據,減少沖突的可能,減少網絡中帶寬的使用,從而提高無線傳感器網絡服務發現的實時性,實現服務的快速響應。
④采用分簇路由休眠機制和數據融合機制能夠減少網絡中的數據量,使轉發數據包的節點轉發數據包減少,從而減少節點的能量消耗,延長網絡的生存周期。
本文提出了一種區域式無線傳感器網絡服務發現機制,該機制采用的有目錄結構,使得網絡結構層次分明,簇內數據傳輸有序進行,一方面增加了無線傳感器網絡的應用范圍,有效提高了無線傳感器網絡的安全性,另一方面減少了網絡中傳輸的數據量,減少了網絡帶寬的使用,減少了節點的能量消耗,提高了服務發現的實時性,實現了服務的快速響應,延長網絡的生存周期。
對區域式無線傳感器網絡服務發現機制起支撐作用的分簇路由算法和數據融合算法進行了分析,改進GAF算法形成了E-GAF算法,采用了感知器數據融合算法。通過分析和仿真,從能量消耗等多方面論證E-GAF算法和感知器數據融合算法對區域式服務發現機制的支撐作用。仿真表明,感知器數據融合算法大大減少了無線傳感器網絡中傳輸的數據量,從而降低了網絡節點的能量消耗,延長了網絡的生存周期;同時降低了傳輸數據使用網絡帶寬,從而增加了服務發現的實時性,提高了服務質量。
[1]周曉,沈振宇,陳鳴.服務發現機制研究[J].計算機工程,V01.28,No.10,2002,10-12.
[2]周曉,沈振宇,陳鳴.服務發現機制的比較和分析[J].計算機工程與科學,V01.25,No.2,2003,56-60.
[3]Pierre-Guillaume Raverdy,RafikChibout.TheMSDA Multi-Protocol Approach to Service Discovery and Access in Pervasive Environments,Demo proposal[C]//Accepted for,Middleware 2005,Grenoble,France.
[4]Christian Frank,Vlado Handziski,Holger Karl.Service Discovery in Wireless Sensor Networks[J].2004.03.
[5]雷萬保,朱怡安,鐘冬.服務發現機制研究進展[J].計算機應用研究,2009,5:1604-1605.
[6]黃瓊.IPv6傳感器網絡服務發現系統的設計與實現[D].北京交通大學碩士學位論文,2006.12.
[7]魏偉,史浩山,劉明.傳感器網絡分層多路徑路由協議[J].傳感技術學報,2007,20(6):1353-1361.
[8]毛郁欣,魏貴義.基于多反饋路徑的無線傳感器網絡安全路由機制[J].傳感技術學報,2010,23(10):1486-1490.
[9]Xu Y,HeidemannJ,EstrinD.Geography-Informed Energy Conserva-tion for Ad Hoc Routing[C]//Proc 7th Annual Intel Conf on Mobile Computing and Networking(MobiCOM),Rome,Italy.July 2001,70-84.
[10]Eduardo F N,Antonio A F L,Alejandro C F.Information Fusion for Wireless Sensor Networks:Methods,Models,and Classifications[J].ACM Computing Surveys,2007,39(3): - .
[11]Petrovicd,Shahrc,Ramchandran K,et al.Data Funneling:Routing with Aggregation and Compression for Wireless Sensor Networks[C]//Proc of the 1st IEEE.2003:156-162.
[12]Kong F T,Chen Y P,Xie J M,et al.Distributed Temperature Control System Based on Multi-Sensor Data Fusion[C]//Institute of Electrical and Electronics Engineers Computer Society,Guangzhou,China:Piscataway,NJ 08855-1331,United States,2005.494-498.
[13]Wang Jin,Cho Jinsung,Lee Sungyoung,et al.Hop-Based Energy A-ware Routing Algorithm for Wireless Sensor Networks[C]//IEICE Transactions on Communications,No.2:305-316,2010.