NS-2仿真系统Test Suite组件应用研究
2011-03-06李玥玥
李玥玥
(诺丁汉特伦特大学 计算机科学与技术学院,英国 NG11 8NS)
0 引言
在应用NS-2网络仿真系统进行网络设计、研究和分析的工作中,由于修改仿真系统模块或者添加新的模型可能引起原有系统出现显式和隐蔽性错误。为了保证在NS-2仿真系统下进行各种仿真实验并得到正确的实验结果,验证NS-2网络仿真系统的完整性和正确性是进行仿真工作中必要的步骤。
NS-2仿真软件中的测试组件包括有线通信网络拓扑结构测试组件、无线通信网络拓扑结构测试组件、有线和无线网络的混合网络拓扑结构测试组件以及移动IP通信网络拓扑结构测试组件等。研究这些测试组件的设计方法和应用技术,对使用NS-2仿真系统进行网络设计、研究、分析和应用的学者和工程技术人员来说,具有重要的意义。
1 Test Suite 测试原理
NS-2网络模拟和仿真软件提供了许多测试组件(Test Suite)[1],并通过validate、validate-wired,validatewireless和validate.win32等验证程序来检测由于NS-2系统模块的改变和移动对NS-2仿真系统的影响程度。
1.1 Test Suite组件介绍
NS-2.30模拟和仿真系统提供的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.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的子类。
#以下是使用动态源路由的无线模型测试实例,是类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测试组件运行测试脚本的过程生成了相应的跟踪文件,这些跟踪文件保存到输出子目录中。由于在指定的输出目录中存放有正确的原始跟踪文件(通常为压缩文件),测试过程会把这些新生成的跟踪文件和原始跟踪文件进行比较和判断,验证两个跟踪文件的内容,如果发现具有相异点,则显示测试失败的信息,否则显示测试成功信息。
2 Wireless-LAN的测试组件分析
在~ns cl est中,实例test-all-wireless-lan代表了编写test suite脚本的一般方法,test-suite-wirelesslan.tcl表示了测试脚本程序的场景配置、主要函数和运行过程流程控制部分的代码,test-output-wireless-lan为wireless-lan测试实例的输出子目录。
3 无线局域网WLAN的test suite应用
以下是实例无线局域网的test suite组件的使用方法、过程和结果。
3.1 无线局域网模拟实例
实例包括一个由50个移动节点组成的ad hoc网络[2]、由7个节点组成的有线-无线混合网络[3](wired-cum-wireless)和由5个移动节点组成的移动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通信网络拓扑结构
3.2 测试过程
如上所述,测试实例test-all-wireless-lan脚本文件已经集成了分别对 dsdv,dsr,wired-cum-wireless和wireless-mip的4个tcl测试脚本。
(1)方法1:集中进行全部测试
在ns命令提示符下,输入测试ns脚本测试文件名,操作步骤如下:
./test-all-wireless-lan ,敲回车键后,命令窗口将显示测试过程的有关信息,包括测试内容、运行状态以及第1个测试输出完成后与历史参考输出进行比较的结果,提示测试正确与否。
以下按照系统提示信息进行操作,直到系统提示“All test output agrees with reference output.”,表明测试实例test-all-wireless-lan的4个测试全部通过,说明作者当前应用的NS仿真与模拟系统具有要求的完整性和正确性。
(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的配置选项。
以上分别进行的单独测试完成后,依次按照以下步骤对测试结果进行比较和分析:
①查看当前目录下仿真系统生成的temp.rands文件;
②将测试目录下的与当前测试实例对应的dsr.zip、dsdv-wired-cum-wireless.zip或dsdv-wireless-mip.zip压缩文件解压,生成记录文件dsr、dsdv-wired-cumwireless或dsdv-wireless-mip;
③将实例测试对应的temp.rands文件与上述记录文件进行一致性比较,并根据比较结果来进行当前NS仿真的系统分析。
4 结语
作者根据Test Suite组件的测试原理所介绍的实现方法,已全部在NS-2.30仿真与模拟系统进行了成功的测试,有兴趣的读者可以根据学习和工作的需要编写新的测试组件。
[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].北京: 电子工业出版社, 2009.
[3] 方路平,刘世华,陈盼,等.NS-2网络模拟基础与应用[M].北京: 国防工业出版社, 2008.
[4] 秦翼,姜雪松.移动IP技术与NS-2模拟[M].北京: 机械工业出版社, 2006.