李玥玥
(諾丁漢特倫特大學 計算機科學與技術學院,英國 NG11 8NS)
在應用NS-2網絡仿真系統(tǒng)進行網絡設計、研究和分析的工作中,由于修改仿真系統(tǒng)模塊或者添加新的模型可能引起原有系統(tǒng)出現顯式和隱蔽性錯誤。為了保證在NS-2仿真系統(tǒng)下進行各種仿真實驗并得到正確的實驗結果,驗證NS-2網絡仿真系統(tǒng)的完整性和正確性是進行仿真工作中必要的步驟。
NS-2仿真軟件中的測試組件包括有線通信網絡拓撲結構測試組件、無線通信網絡拓撲結構測試組件、有線和無線網絡的混合網絡拓撲結構測試組件以及移動IP通信網絡拓撲結構測試組件等。研究這些測試組件的設計方法和應用技術,對使用NS-2仿真系統(tǒng)進行網絡設計、研究、分析和應用的學者和工程技術人員來說,具有重要的意義。
NS-2網絡模擬和仿真軟件提供了許多測試組件(Test Suite)[1],并通過validate、validate-wired,validatewireless和validate.win32等驗證程序來檢測由于NS-2系統(tǒng)模塊的改變和移動對NS-2仿真系統(tǒng)的影響程度。
NS-2.30模擬和仿真系統(tǒng)提供的Test Suite測試組件可以在~ns cl est下找到。這些組件主要包括3種類型:
①shell 腳本類型文件,這類文件命名的格式為:test-all-xxx1test-all-xxx中的xxx代表test suite的名稱,其作用是啟動測試過程;
②Tcl 腳本類型文件,這類文件命名格式為:test-suite-xxx.tcl,其作用是運行已經定義的測試;
③輸出子目錄,該目錄命名格式為:test-output-xxx ,以一個子目錄建立在~ns cl est目錄下面,該目錄中包含了由test suite產生的跟蹤文件,用來驗證測試組件是否在ns上正確運行。
1.2.1 測試組件(test suite)腳本簡介
以下是ns-2.30/tcl/test中測試組件的實例腳本test-all-xxx的一般編寫格式:
最后一行:./test-all-template1 $file $directory$version $@表示啟動運行以上定義指明的測試工作過程。
1.2.2 定義TestSuite類和子類
對每一個不同的測試實例,可以采用定義TestSuite類和子類的編程方法,在NS-2的test-suite-xxx.tcl腳本中建立具體的測試用例。
Class TestSuite #這是父類。
Class Test/dsdv -superclass TestSuite #這是類TestSuite的子類。
#以下是使用動態(tài)源路由的無線模型測試實例,是類TestSuite的子類。
Class Test/dsr -superclass TestSuite
Class Test/dsdv-wired-cum-wireless -superclass TestSuite #這是類TestSuite的子類。
#以下是在HA與FA之間移動的無線移動IP模型測試實例,是類TestSuite的子類。
Class Test/dsdv-wireless- mip-superclass TestSuite
1.2.3 測試實例Tcl腳本文件分析
在NS-2.30中提供的Test suite組件[1]中,每個測試用例都建立了一個仿真場景。
(1)配置父類(Class TestSuite)
在父類TestSuite 中,你可以定義一些函數像init 和finish ,去做每個測試用例需要做的工作,例如設置網絡拓撲和ns跟蹤等。
(2)配置子類(Class Test/x)
測試的具體配置定義在相應的子類中。每個子類也有一個運行函數來啟動仿真和表示配置子類的方法。
ns-2.30 cl est目錄下的test-suite-wirelesslan.tcl是該部分的腳本代碼。
(3)啟動測試方法
上例所述的ns 腳本中所有的測試都是從函數runset開始。
(4)測試過程與結果
Test Suite測試組件運行測試腳本的過程生成了相應的跟蹤文件,這些跟蹤文件保存到輸出子目錄中。由于在指定的輸出目錄中存放有正確的原始跟蹤文件(通常為壓縮文件),測試過程會把這些新生成的跟蹤文件和原始跟蹤文件進行比較和判斷,驗證兩個跟蹤文件的內容,如果發(fā)現具有相異點,則顯示測試失敗的信息,否則顯示測試成功信息。
在~ns cl est中,實例test-all-wireless-lan代表了編寫test suite腳本的一般方法,test-suite-wirelesslan.tcl表示了測試腳本程序的場景配置、主要函數和運行過程流程控制部分的代碼,test-output-wireless-lan為wireless-lan測試實例的輸出子目錄。
以下是實例無線局域網的test suite組件的使用方法、過程和結果。
實例包括一個由50個移動節(jié)點組成的ad hoc網絡[2]、由7個節(jié)點組成的有線-無線混合網絡[3](wired-cum-wireless)和由5個移動節(jié)點組成的移動IP通信網絡[4](wireless-mip)
該部分的Tcl腳本程序讀者可以參考~ns clex目錄下的 wireless.tcl、wired-cum-wireless-sim.tcl 、wireless-mip-test.tcl。以上實例網絡拓撲結構圖參見圖1、圖2和圖3。
圖1 Ad Hoc網絡拓撲結構
圖2 有線-無線混合網絡拓撲結構
圖3 移動IP通信網絡拓撲結構
如上所述,測試實例test-all-wireless-lan腳本文件已經集成了分別對 dsdv,dsr,wired-cum-wireless和wireless-mip的4個tcl測試腳本。
(1)方法1:集中進行全部測試
在ns命令提示符下,輸入測試ns腳本測試文件名,操作步驟如下:
./test-all-wireless-lan ,敲回車鍵后,命令窗口將顯示測試過程的有關信息,包括測試內容、運行狀態(tài)以及第1個測試輸出完成后與歷史參考輸出進行比較的結果,提示測試正確與否。
以下按照系統(tǒng)提示信息進行操作,直到系統(tǒng)提示“All test output agrees with reference output.”,表明測試實例test-all-wireless-lan的4個測試全部通過,說明作者當前應用的NS仿真與模擬系統(tǒng)具有要求的完整性和正確性。
(2)方法2:分部進行單獨測試
這里以test-suite-wireless-lan.tcl的測試為例,介紹分部單獨進行測試的過程。在NS命令提示符下,分別輸入測試tcl腳本文件名,操作步驟如下:
上式中test-suite-wireless-lan-newnode.tcl是test-suite-wireless-lan.tcl的修改版本,x為分別輸入的dsdv、dsr、dsdv-wired-cum-wireless、dsdv-wirelessmip的配置選項。
以上分別進行的單獨測試完成后,依次按照以下步驟對測試結果進行比較和分析:
①查看當前目錄下仿真系統(tǒng)生成的temp.rands文件;
②將測試目錄下的與當前測試實例對應的dsr.zip、dsdv-wired-cum-wireless.zip或dsdv-wireless-mip.zip壓縮文件解壓,生成記錄文件dsr、dsdv-wired-cumwireless或dsdv-wireless-mip;
③將實例測試對應的temp.rands文件與上述記錄文件進行一致性比較,并根據比較結果來進行當前NS仿真的系統(tǒng)分析。
作者根據Test Suite組件的測試原理所介紹的實現方法,已全部在NS-2.30仿真與模擬系統(tǒng)進行了成功的測試,有興趣的讀者可以根據學習和工作的需要編寫新的測試組件。
[1] UC Berkeley.LBL,USC/ISI,and Xerox PARC.The NS Manual [EB/OL].(2006-08-03)[2009-03-07].http://www.isi.edu/nsnam/ ns/nsdocumentation.html.
[2] 柯志亨,程榮詳,鄧德雋.NS2仿真實驗—多媒體和無線網絡通信[M].北京: 電子工業(yè)出版社, 2009.
[3] 方路平,劉世華,陳盼,等.NS-2網絡模擬基礎與應用[M].北京: 國防工業(yè)出版社, 2008.
[4] 秦翼,姜雪松.移動IP技術與NS-2模擬[M].北京: 機械工業(yè)出版社, 2006.