基于NS_2网络仿真技术的分析与研究
计算机与网络
基于NS-2网络仿真技术的分析与研究
华北水利水电学院信息工程学院 李 晟 郑州轻工业学院计算机与通信工程学院 刘 嘉
[摘 要]网络仿真技术已成为研究网络性能、设计网络方案的有效工具。在介绍分析NS-2仿真平台体系结构、仿真
流程及构建环境的基础上,通过实例研究了NS-2仿真功能的设计和实现。对于NS-2的使用及网络仿真技术的研究具有实用价值。
[关键词]网络 网络仿真 NS-2 OTcl
1引言
在研究新的网络协议、算法及技术的过程中,需要对网络性能进行验证和分析,但在实际网络等真实环境下进行相关分析和验证代价较高并且缺乏灵活性和扩展性。这种情况下,仿真就成了重要手段之一。NS-2是由LBNL,XeroxPARC,UC
Berkeley和USCISI等机构通过DARPA资助的VINT项目进
此,NS使用两种程序设计语言:C++和OTcl。其中,C++是编译执行语言,执行速度快,适用于协议细节和复杂算法的实现;而OTcl是解释执行的,不需重新编译即可设置仿真对象和修改参数,能够提高模拟仿真的效率[1]。
2.1NS-2的体系结构
NS-2软件包主要包括TclTK、OTcl、TclCL、NS,各个部
行合作研究开发的网络仿真工具。它带有大量协议库,支持多个
流行的TCP(如Reno、Tahoe等)协议和路由调度算法,并提供开放的用户接口,可以根据需要二次开发。
2NS-2的体系结构及仿真流程
分的相互联系如图1所示。其中,Tcl是开放式脚本语言,它的实现依赖于Tcl内部的C函数库,添加新的C函数就可以扩充Tcl的命令和功能。Tk是Tcl在XWindows环境下的扩展。OTcl是
Tcl面向对象的扩展,定义了相应的类层次结构[2]。TclCL是在OTcl基础上的封装,它搭建了NS-2的框架,NS-2的类库都
在仿真过程中,NS-2要完成两方面的任务,一是进行具体协议的模拟和实现,高效地处理字节、分组等数据结构;二是进行网络环境的搭建,频繁对模拟场景的参数进行配置和修改。因
是建立在TclCL基础上的。
NS中的组件一般都是由相互关联的两个类来实现,一个在C++中,一个在OTcl中,组件的主要功能通常在C++中实现,OTcl中的类则主要提供C++对象面向用户的配置接口[3]。因此,当C++对象和OTcl对象之间通过TclCL机制关联起来。用户在OTcl中创建仿真对象之后,OTcl解释器对它进行初始化,同时创建编译层结构中相应的C++对象并通过TclCL建立对应的映射。
2.2NS-2的仿真流程
本;⑤用Nam或Xgraph观察分析网络仿真的运行过程;⑥调整配置相关参数,重新进行上述仿真过程。Otcl脚本一般要多次修改、调整并运行,才能得到较为理想的仿真结果[1]。
3NS-2仿真环境的构建
NS-2主要是为Unix系列平台设计的,因此在Unix、Lin2ux、FreeBSD等系统上使用整合的allinone软件包进行NS-2
仿真环境的搭建非常方便。当然,NS也可以安装并运行在广泛普及的Windows平台上,但安装过程相对复杂。
3.1Linux平台上的安装
下载NSallinone软件包,用tar命令解压缩ns-allinone-2.28.tar.gz将所有的软件包安装在当前用户目录的ns-alli2
none-2.28目录下,通过命令.install进行NS的安装。之后按
使用NS-2进行网络仿真前,首先要分析已有的网络元素是否能够实现仿真,如果可以,则只需编写OTcl仿真脚本而无需对NS2本身进行修改;但如果NS中没有所需的网络元素,就要基于所需添加的网络元素添加新的C++类和OTcl类实现对
NS的扩展。进行仿真涉及以下几个步骤:①建立网络模型,配
置网络拓扑结构;②建立业务模型,包括端设备的协议绑定、通信业务量模型的建立等;③设置Trace对象。Trace对象把仿真过程中特定网络元素的变化或网络现象记录在trace文件中来保存整个仿真过程;④用NS-2解释执行已编写的OTcl脚
照NS的提示设置相应环境变量的值:在PATH中加入ns-alli2none-2.28目录下的tcl8.4.5unix、tk8.4.5unix和bin的绝对路径;LD
LIBRARY
PATH中相应需要加入tcl8.4.5u2
nix、tk8.4.5unix、otcl-1.9以及lib的绝对路径;在TCLLIBRARY中同样要加入tcl8.4.5library的绝对路径。最后
—189—
科技信息
可使用.validate来验证NS-2是否安装正确。
3.2Windows平台上的安装
计算机与网络
$nsattach-agent$n0$udp
setnull[newAgentNull]
在Windows平台上安装NS-2有两种方式:一种是直接安装,需要重新编译源文件;另一种是先安装虚拟机模拟类Unix环境,在此基础上构建NS-2。
使用直接安装的方式需安装C++编译器(如VC++),然后下载Tcl、Tk、OTcl、TclCL、NS的源代码包以及Nam可执行文件,将对应的tar.gz包解压到某一目录下(如C:NS2)后分别安装各个软件包。首先安装Tcl,修改INSTALLDIR设置Tcl的安装目录,修改C:NS2Tcl8.4.5winmakefile.vc中的
TOOLS32和TOOLS32
rc,令其指向VC++相关工具所在目
$nsattach-agent$n3$null
$nsconnect$udp$null
#在UDP连接上建立CBR应用setcbr[newApplicationTrafficCBR]
$cbrattach-agent$udp$cbrsettypeCBR
(4)启动时间调度器控制仿真。$nsat1.5\"$cbrstart\"
$nsat4.5\"$cbrstop\"
(5)通过Trace文件跟踪和记录数据包传送的过程。$nstrace-all[openout.trw];#文件out.tr记录数据包传送过程的trace数据
$nsnamtrace-all[openout.namw];#文件out.nam记录Nam演示的trace数据
4.2.2仿真结果及其分析录,保存makefile.vc。执行cdC:NS2tcl8.4.5win和nmake-fmakefile.vc,若执行成功,再执行nmake-fmakefile.vcintalll
即可安装Tcl到INSTALLDIR所指定的目录。采用类似的方法依次安装Tk、OTcl、TclCL和NS,并修改环境变量PATH使NS运行时能找到需要的库文件。
通过搭建类Unix环境的方式安装NS-2,首先需安装cyg2
win软件,需要注意的是XFree86-base、XFree86-bin、XFree86-prog、XFree86-lib、XFree86-etc、make、patch、perl、gcc、gcc-g++、gawk、gnuplot、tar和gzip是必须安装的仿真结束后,可以通过生成的out.tr和out.nam文件来了解仿真过程的每一个细节。跟踪文件out.tr记录的数据包含了跟踪类型、事件发生时间、源和目的节点号、包类型、包大小等[6]。通过对这些数据分析,可以获得每个节点上发生的事件,如时间信息、流量信息等。out.nam是为Nam程序生成的,可以用来动态观察仿真的过程,直观展示网络运行情况,如网络拓扑、数据包传输和队列管理等,如图3所示为运行仿真过程中某时刻的情况。
5结束语
组件。接下来就可以按照在Linux平台上安装NS-2的步骤进行仿真环境的搭建。4基于NS-2的网络仿真实现局域网到广域网、有NS-2功能强大,从物理层到应用层、
线网到无线网,NS-2都提供了丰富的支持。下面通过一具体实例来解释NS-2的使用。
4.1仿真拓扑的建立
网络仿真是分析网络模型、通信协议等网络研究的有效方式。NS-2因其源代码公开、可扩展性强等特点在网络仿真领域具有广阔的应用前景。对于网络参数的合理设置、网络的优化设计、新协议算法的研究、复杂网络环境的再现和分析等有实际的参考意义。
参考文献
[1]徐雷鸣,庞博,赵耀.NS与网络仿真[M].北京:人民邮
使用NS-2进行网络仿真,通常先设计符合需要的网络仿真场景,设定其相应的参数,执行仿真。该实例的网络拓扑是包含四个网络节点(n0,n1,n2,n3)的星型结构,如图2所示。节点
n0和n3之间有一条UDP连接,其上架设一条CBR数据流,在1.5秒开始传送,在4.5秒终止传输。节点n1和n3之间有一条TCP
连接,在其上建立一条FTP数据流,在0.3秒开始传送,在5秒时终止传输。
4.2仿真实现及结果
4.2.1NS网络仿真的实现步骤
(1)创建仿真对象。仿真从创建一个仿真器的实例对象开
电出版社,2003.11.
[2]KevinFall,KannanVaradhan.ThensManual[EBOL].TheVINTProject,UCB,LBL,USCISIandXerox
始,整个仿真过程可看作对该对象的操作[4][5]。
setns[newSimulator]
(2)定义网络拓扑结构。网络拓扑是基于节点和链路所建立
.edu,2002.02.PARC,http:www.isinsnamns
[3]SallyFloyd,VernPaxson.DifficultiesinSimulatingtheInternet[R].IEEEACMTransactionsonNetworking,2001,9(4):392-403.
[4]吴仕浩,林庆华,胥布工.网络仿真器NS-2及其一个应
的。
setn0[$nsnode];#创建网络节点n0
$nsduplex-link$n0$n22.5Mb8msDropTail;#创建链路并设置相应参数
(3)创建业务流模型。首先建立代理,在代理上配置应用。
(以UDP连接和CBR数据流为例)
#建立UDP的代理setudp[newAgentUDP]
用实例[J].计算机仿真,2004,21(7):96-98,187-188.
[5]BrentB.Welch,KenJones,JeffHobbs.PracticalPro2gramminginTclandTk(FourthEdition)[M].PrenticeHall,2003.06.
[6]李方敏,李仁发,叶澄清.网络仿真软件ns的结果输出
和分析[J].计算机工程,2000,26(9):14-16,94.
—190—
因篇幅问题不能全部显示,请点此查看更多更全内容