摘 要:分析了仿真模擬技術在無線傳感器網絡研究領域的重要性,對現在比較流行的幾種仿真模擬器的應用背景、設計思路、性能優缺點、使用時應注意的問題等進行了詳細的分析,歸納總結出一個成熟的無線傳感網絡仿真模擬器應該具備的基本功能和特性,指出了今后的研究方向。
關鍵詞:無線傳感器網絡;模擬;TOSSIM; Avrora; NS-2
中圖分類號:TP393 文獻標志碼:A
文章編號:1001-3695(2007)03-0006-04
集成了傳感器、微機電系統和網絡三大技術而形成的無線傳感器網絡是一種全新的信息獲取和處理技術,具有十分廣闊的應用前景。眾所周知,開發、調試和驗證無線傳感器網絡程序是非常困難的。由于無線傳感器網絡的特殊性,大多數傳統PC機程序的調試手段都不適合無線傳感器網絡程序。現在調試無線傳感器網絡程序時一般采用的手段包括串口調試、閃燈(LEDs)調試和模擬器調試。閃燈調試主要借助節點上的閃燈設備的顏色變化來觀測程序的執行情況,如可以設定當某個變量的值為零時紅燈閃爍;但是節點上面的閃燈數量有限,提供的信息也比較少,無法用它來調試邏輯比較復雜的程序。串口調試則是通過串口程序將節點的狀態信息返回PC端,它可以很好地觀測與PC機相連的節點內部的執行邏輯;但是對網絡中不與PC機相連接的節點內部執行情況則一無所知,而且節點中的程序如果發生死鎖或崩潰會使得串口以未知的方式失去反應。閃燈調試和串口調試都要求必須實際部署大量的節點,而這需要耗費大量的人力、物力和時間。模擬器調試則是在PC機上模擬程序的執行,不需要實際部署節點,它可以觀測所有節點的內部執行邏輯,而且可以很方便地觀察程序的整體行為,具有串口調試和閃燈調試所無法比擬的優勢。當然,無線傳感器網絡的程序相對于傳統PC程序最大的區別就是程序行為高度依賴于應用環境。在PC機上模擬調試的程序必須在真實的應用環境下作適應性驗證。
從無線傳感器網絡誕生的那一刻起,其仿真模擬器開發就一直備受重視。國外對于這個領域已經進行了深入的研究,提出了不少理論模型,并且已經開發出了一些實用的仿真模擬器;國內由于進入該領域較晚,現在還沒有具體的成果。
1 典型仿真模擬器分析
1.1 TOSSIM
TOSSIM是現在最為流行的無線傳感器網絡仿真模擬器,它是由加州大學伯克利分校的Philip Levis、Intel研究中心的Nelson Lee、哈佛大學的Matt Welsh等人合作開發的,內嵌在TinyOS操作系統中。正如其設計者所宣稱的那樣,TOSSIM是一個TinyOS程序模擬器[1],因此它的使用受到了許多限制。①只能選用TinyOS所支持的Mica系列硬件平臺;②只能使用NC(一種組件化的C語言變種)來編寫程序;③只有在代碼編寫完成之后才可以運行模擬器。換句話說,TOSSIM其實是一個代碼模擬器,只能對整個應用程序進行模擬。如果想模擬協議的話,必須模擬整個程序,只不過將其中的標準協議組件替換為自己的協議組件。當然,TOSSIM和TinyOS的捆綁也有很多優點:TOSSIM和TinyOS命令是集成在一起的,提供了一個統一的界面,使用起來很方便;TOSSIM可以直接使用TinyOS的工具集,如TinyOS為TOSSIM提供了GDB調試功能;TOSSIM利用了TinyOS的組件化結構特點簡化了自身的實現機制,所以TOSSIM自身的代碼規模在所有無線傳感器網絡仿真模擬器中是最小的。
無線傳感器網絡仿真模擬器設計時的一個重要考慮就是要在適應大規模節點、高效率和高精度這三者之間取得平衡。TOSSIM的設計思路非常巧妙,很好地解決了上述問題。 其體系結構如圖1所示。
圖1 TOSSIM體系結構示意圖
TOSSIM包括五個部分:將TinyOS程序編譯進TOSSIM模擬框架的底層支撐組件、離散事件隊列、一些重新實現的且由硬件抽象的TinyOS組件如時鐘(Timer)、可擴展的無線通信和ADC模型、外部程序與模擬器交互的通信服務。它利用TinyOS程序組件化和全程序編譯的特點直接從組件層次進行模擬。模擬器中所運行的代碼與在節點中運行的代碼基本上相同,只是替換了一些底層組件如ADC、Clock等。TOSSIM將硬件中斷翻譯成離散事件,這些離散事件會被放入離散事件隊列等待處理。
離散事件隊列是TOSSIM的核心[1]。每個中斷都被模擬成一個模擬器事件(Simulator Event),它不同于TinyOS程序中的事件(TinyOS Event)。每個模擬器事件都與一個特定的節點相關聯,具有一個時間戳,并以全局時間的順序在離散事件隊列中被處理。模擬器事件會調用硬件抽象組件中的中斷處理程序,然后就像在節點上一樣,中斷處理程序會調用TinyOS命令(Command)并觸發TinyOS事件。這些TinyOS事件和命令會使新的模擬器事件加入離散事件隊列,從而使整個模擬器一直向前運行。
TOSSIM對節點間的通信只是提供了一個非常簡單的模型,并沒有考慮節點間的物理距離、物理信號傳輸過程中的衰減與干擾等問題。其整個網絡就是一個有向圖,每個頂點就是一個節點,每個邊都有一個位傳輸失誤率,每個節點都有一個私有的狀態域以存儲節點從無線信道監聽到的信息。這個有向圖是可以手工配置的,位傳輸失誤率也是可以設定的。但是TOSSIM對節點內部的網絡協議棧提供了一個非常精確的位級別的模擬,所以可以在TOSSIM中模擬MAC層協議和路由層協議。
TOSSIM提供了一系列的通信服務,用來與外部程序交互。外部程序可以通過TCP套接字與TOSSIM通信,并監測模擬器的運行。TOSSIM還提供了一個用戶圖形界面TinyViz,用戶可以用它來控制模擬器的運行,設置一些模擬器參數,手動添加已有插件,如DadioLink和ADCReading,并且可以編寫自己的插件以擴充TOSSIM的功能。TinyViz的截圖如圖2所示。
圖2 TinyViz用戶界面截圖
整體而言,TOSSIM是一個不錯的無線傳感器網絡仿真模擬器,尤其對于TinyOS程序而言。TOSSIM提供的命令操作是比較簡便的,而且它提供了許多非常有效的工具,如GDB調試工具、TinyViz圖形界面以及眾多的插件支持。不過它的缺點也很明顯:它只能用于TinyOS程序和協議的模擬,只適用于同構網絡(網絡中所有的節點運行相同的程序);所提供的節點間的通信模型過于簡單,沒有一個有效的能量消耗與估測模型。
1.2 Avrora
Avrora也是一個程序模擬器,由加州大學洛杉磯分校的Ben L. Titzer、Jens Palsberg和康奈爾大學的Daniel K. Lee等人開發。Avrora的設計目標是提供一個AVR模擬和分析框架[2],它不局限于TinyOS程序,可以模擬所有基于AVR指令集的無線傳感器網絡程序。
Avrora是基于ATEMU的。ATEMU是第一個指令級別的模擬器[3],它可以非常精確地模擬單個節點每個時鐘周期的操作,但是不能適應大規模節點。Avrora一方面與ATEMU一樣是一個指令級別的模擬器,可以精確到時鐘周期;另一方面又可以適應大規模節點,達到接近TOSSIM的執行效率。TOSSIM和ATEMU是用C語言實現的,Avrora則完全是用Java實現的,所以它具有很好的靈活性和可移植性。Avrora和ATEMU因為模擬機器碼而不依賴于具體的語言和操作系統,相反TOSSIM只能模擬TinyOS程序。Avrora的特性可以用以下公式形象地表示:
Avrora=時鐘周期級別的模擬+多線程+事件隊列+有效的同步機制
在Avrora中,每個節點都是一個Simulator類,在一個單獨的線程中運行,執行自己的程序代碼,所以Avrora可以模擬異構網絡(網絡中的節點運行不同的程序)。相對于ATEMU在每個時鐘周期進行同步的策略,Avrora只是在完成如節點與外部環境交互、節點間通信等必要的操作時才進行同步,顯然這可以顯著地提升模擬器的性能,但是也對Avrora的同步機制提出了很高的要求。Avrora采用了時間間隔同步和鄰居等待這兩種策略來完成高可靠的同步。有關這兩種策略的詳細解釋可以查看參考文獻[2]。
由于無線傳感器網絡的程序是由事件驅動的,具有離散事件的特性,為了使程序可以高效執行并且適應大規模節點,在Avrora中實現了一個與TOSSIM類似的事件隊列,它們都是利用了無線傳感器網絡程序的睡眠機制來優化模擬器的性能。但是在Avrora中每個模擬節點內部都有一個事件隊列,而在TOSSIM中則是一個全局的事件隊列。其處理邏輯可以用如下節點主循環示意代碼來表示:
在Avrora中,每個節點上的程序都會被解析成內部格式,翻譯為Java程序。AVR指令集中的每個指令都有一個相對應的內部類。例如Instr.ADD 類就代表了“加”這個指令,用來完成兩個一般寄存器的相加操作。為了完整地模擬程序的行為,除了要模擬AVR指令集中的每個指令外,對微處理器片子上的設備進行高精度的模擬也是必需的。圖3就是Avrora的模擬設備結構示意圖。其中的Radio、LEDs、Timer等都是由硬件抽象的Java類。需要指出的是,Avrora為圖中的Platform、Microcontroller等均提供了一系列的接口,用戶可以根據自己的硬件平臺進行配置。圖3 Avrora的模擬設備結構示意圖
總體來說,Avrora提供了與TOSSIM類似的功能,但是它獨立于具體的編程語言和操作系統,可以用于異構網絡的模擬。在Avrora上已經有另外一個工作組實現了一個相當精確的能量消耗與估測模型,而且Avrora與TOSSIM一樣是一個開放的模型,用戶可以在其基礎上很容易地構建自己的模型。但是Avrora的開發者把大部分精力用在了對節點底層操作的模擬,對節點間的通信只提供了一個非常簡單的模型,所以它是一個很好的單節點模擬器,卻不是一個很好的網絡模擬器。
1.3 NS-2
NS-2是現在無線傳感器網絡研究領域最流行的網絡仿真軟件之一。許多著名的協議如LEACH、SMAC都是用NS-2仿真的,其仿真結果具有一定的權威性[4]。因為國內對NS-2已經作了大量的研究,所以本文不再對NS-2作進一步的介紹。這里只是對使用NS-2仿真無線傳感器網絡程序和協議進行討論。
RICE大學的Monarch工程小組在NS-2中添加了對無線和移動網絡的支持,他們為無線網絡的模擬提供了許多有用的組件,如無線信號傳播模型、IEEE 802.11 MAC協議、移動模型。相對于TOSSIM和Avrora所提供的簡單的外部通信模型,NS-2有能力提供一個復雜的、更接近于真實環境的網絡通信模型。例如可以用NS-2中的OTcl和C++來編寫一個根據節點的物理拓撲結構和距離來設定物理信道通信失誤率的通信模型。如果想驗證一個新的無線傳感器網絡的路由算法或MAC層協議,那么NS-2比TOSSIM和Avrora更合適。
但是NS-2只是一個網絡模擬器,而不是一個代碼模擬器, 其工作重心在于網絡通信模擬,對于節點的內部操作只提供了一個模型,而不是真正的執行代碼,這就是它與TOSSIM,Avrora的區別所在[4]。所以NS-2不適合用來模擬無線傳感器網絡應用程序,卻更適合于模擬那些有著嚴格層次關系的協議,如TCP/IP。而在無線傳感器網絡中往往沒有如此嚴格的層次關系,協議之間經常有跨層操作,應用程序層和協議層經常是互相影響的,如依賴于時間的數據融合操作、發送能量的動態調整操作等。所以NS-2并不適合于模擬所有的無線傳感器網絡協議,它的使用受到了一定的限制,需要在模擬之前分析清楚。但熟悉NS-2并熟練應用其進行網絡協議仿真并不是一件容易的事。
1.4 其他的仿真模擬器
SensorSim構建在NS-2的802.11網絡模型之上[5]。用戶可以使用SensorWare Tcl腳本語言來編寫程序。SensorSim的目標平臺是WINS平臺,而不是常見的Mica平臺。
EmStar為運行Linux操作系統的iPAQ 和 Crossbow Stargate類型的節點提供了一個非常靈活的模擬環境,可以在模擬環境與實際部署環境之間進行切換。
TOSSF借鑒了TOSSIM中的許多設計思想,只不過它是把TinyOS程序的代碼編譯進了SWAN框架[6],它可以用來模擬異構網絡。TOSSF對節點間的通信只是提供了一個理想化的模型,甚至還不如TOSSIM的通信模型精確。
OPNET是由OPNET Technologies開發的網絡建模和模擬工具。與NS2的功能基本類似,它有著與Internet相對應的嚴格的網絡層次模型。
Ptolemy是UC Berkeley大學正在研究中的一個項目,已經在TinyOS社區上面發布了幾個測試版本。其中的VisualSense就是一個無線傳感器網絡的建模和模擬框架,它支持無線傳感器網絡程序的設計、模擬以及實時演示。
2 仿真模擬技術分析
現有的無線傳感器網絡仿真模擬器大致可以分為兩種:①程序代碼模擬器,如TOSSIM、Avrora;②協議仿真軟件,如NS-2、OPNET。程序代碼模擬器的優點是對單個節點的操作提供高精度的模擬,可以準確地模擬應用程序在節點上的行為;缺點是節點間的通信模型比較簡單,模擬器的實現依賴于具體的硬件平臺,要求用戶必須首先編寫代碼。協議仿真軟件的優點是對節點間的通信提供了一個高可靠性的模型,可以準確地模擬節點間的交互行為,模擬的代價比程序代碼模擬器要小一些,且不依賴于具體的硬件平臺;缺點是不能模擬應用程序的行為,對節點內部操作的模擬精度比較低。TOSSIM、Avrora和NS-2的功能及性能比較如表1所示。
通過以上分析,一個成熟的無線傳感器網絡仿真模擬器至少應該具備單節點內部操作的模擬、多節點間通信網絡的模擬和外部環境的模擬三種功能,同時還應該滿足如下特性:
(1)可以適應大規模節點網絡。模擬器必須可以同時模擬多個節點的執行情況。現在已知最大規模的無線傳感器網絡項目中部署了接近850個節點,所以模擬器必須至少可以模擬上千個節點。
(2)完整性。模擬器必須對節點的行為進行完整模擬,如模擬了CPU的執行情況而忽略了節點的外部設備、ADC的行為模擬是不能容忍的。
(3)高精度。由于節點的資源有限,系統的整體結構缺乏保護措施,一個非常底層的微小失誤可能會對網絡的整體行為造成非常大的影響。例如,MAC層的節點信息收發時間沒有精確的模擬,那么許多的路由策略都無法進行正確的模擬。一般認為從字節級別或指令級別進行模擬可以達到比較高的精度。
(4)模擬代價比較小。這包括兩種情況,即程序代碼模擬和協議仿真軟件。如果是程序代碼模擬,則要求對代碼進行很小的改動或不作改動就可以進行模擬;如果是協議仿真軟件,則要求可以在較短的時間內編寫完仿真代碼并得到仿真結果。
3 小結
到現在為止,無線傳感器網絡的仿真模擬技術只是處于初級階段,還沒有一個仿真模擬器完全具備了上面所列舉的三種功能,也不能滿足上述四種特性。程序代碼模擬器和協議仿真軟件都沒有完全實現外部環境的模擬,而在無線傳感器網絡中,應用程序和節點的外部環境是緊密聯系的,所以外部環境的模擬應該是開發新一代仿真模擬器時的一個核心課題。在未來還應該考慮將程序代碼模擬器和協議仿真軟件集成的可能性。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。