【PHP开源代码栏目提醒】:网学会员PHP开源代码为您提供网络仿真软件ns-2机制及扩展 - 会议论文参考,解决您在网络仿真软件ns-2机制及扩展 - 会议论文学习中工作中的难题,参考学习。
网络仿真软件ns一2机制及扩展 田廷剑1,傅晓2,李少谦3 电子科技大学通信抗干扰国家级重点实验室,成都,610054 {1ttj421。
007,2fx200103029}@163.corn,3lsq@uestc.edu.cn 摘要:网络仿真是网络技术研究的重要手段,网络仿真软件ns.2是目前最流行的仿真软件 之一。
本文分析了ns一2的机制,特别是ns.2采用的分裂对象模型机制,介绍了ns.2中的 核心网络构件,并结合ns.2的扩展实例,总结了不同核心网络构件的~般性扩展方法。
关键词:ns.2、机制、构件、扩展Network S imulation Software ns..2 mechanism and Extension Tian Tingii an‘,Fu Xia02,Li Shaoqian’ National Key Laboratory of COlmnunications of UESTC,Chengdu,6 1 0054 {1nj42l。
007,2fx2001030291@163.corn,3lsq@uestc.edu.ell Abstract:Network simulation is an important way of researching network technology.Network simlulation software ns一2 is one of the most popular simulation softwares.The mechchanism of ns-2 is analyzed in this paper,especially,split objects model mechanism adopted by ns一2,the core components of ns一2 are introduced,then combined with extension examples of ns-2,sumed up the general methods extend different core network components. Keyw-ords:ns-2、mechanism、component、extension 1.引言 随着通信技术和网络技术的迅速发展,对于如何验证网络协议的正确性并进行相关的性能测试,从事网络通信的研究者提出了许多的方法,目前应用最为广泛的方法就是通过虚拟环境进行网络仿真。
网络仿真作为通信网络技术研究的重要手段之一,受到网络研究行业特别是高校和科研院所科研人员的青睐。
网络仿真是使用计算机技术构建网络拓扑、实现网络协议模拟的一种研究手段。
它能够获取特定的网络参数,进而对网络性能进行研究和分析,达到改善网络运行状况的目的。
它使得研究人员能够在硬件条件不具备的情况下研究大规模的网络以及在设计新协议新算法时能够快速的分析并改进协议或算法的设计。
ns.2【l】是最流行的网络仿真软件之一,已广泛地被学术界采用。
ns.2是一个开放源
代码软件,它起源于1989年于UC Berkeley开发的REAL网络模拟器(REAL network simulator)。
1995年,ns的开发获得了美国军方DARPA VINT(Virtual InterNetwork Testbed)项目的资助,1996年11月推出的ns.2的第_.个版本ns.2.Oal。
由于ns.2是一个
开源项目,ns.2一直在吸收全世界各地研究者的成果,包括UCB的Daedelus工程、CMU的Monarch工程以及SUN Microsystem公司的无线网络方面的
代码。
ns.2【2】【3】〔4】集成了大量典型的无线和有线网络下各层的协议,但同时ns.2具有强大的二次编程的事f,l:驱动特性。
由.】:网络技术的迅速发展,研究』:作中需要仿真一些符合臼己要求的算法或网络协议。
这时就需要对璐.2进行扩展。
本文将在第二部分详细介绍ns.2的仿真机制,包括ns.2的模拟流程、ns.2的源码目录结构,重点介绍ns.2中实现的TclCL机制及分裂对象模型。
第三部分中,对ns.2的一些关键核心构件进行分析,并结合现有一些对ns.2各层协议及核心构件的扩展。
总结对11S.2进行扩展的一般性方法.在最后部分对本文做出总结。
2.ns.2的仿真机制2.1.ns一2的源码目录结构 对丁:使用ns.2进行网络协议或算法的开发的研究者来说,增加和修改ns.2的源
代码及对ns.2 52进行扩展是必不可少的,因此了解rls.2的源码目录结构有助于对源
代码的分析。
使用提供的allinone安装包成功安装NS.2后,其源码目录结构如图1所示。
alinone是一个软件包,包括Tcl/tk、OTcl、TctCL、ns、xgraph、nam…,Tcl是一种解释性的可扩展脚本语言,tk是与Tcl协调I:作的图形j1=具包,OTcl是Tcl/tk面向对象编程的扩展,TclCL硅Tel与CH的接口,nam是可将ns仿真过程动态表现出来的一种工具,xgraph是一个绘图工具,可根据输入数据和文件来绘制幽形,rlS目录下的queue、comlxlOll、link、aodv、top…等文件夹下是ns.2的C++源码,doe是ns.2官方文档所在的位置,Tcl目录下保存了ns.2的TcI/OTcl相关的源
代码及Tel脚本范例和测试用例。
此外,ns.2的可执行文件在bin目录下,调用的库文件则在lib目录下。
图1 11S.2源码目录结构图2.2.NS一2仿真的基本流程 图2 ns-2仿真的基本流程 ns-2仿真的基本流程如图2所示。
首先,需要考虑网络人概的拓扑结构应该是怎样,是否需要对源
代码进行修改或添加,然后编写TeI/OTcl模拟
代码并进行模拟,最后对模拟产生的数据结果进行分析。
在整个仿真流程中。
II.S.2源
代码的修改和对模拟结果的分析是使用11¥.2进行网络仿真的难点,本文关注的是11¥.2的扩展即对其源
代码的修改,为此必须了解IIS.2采用的分裂对象模型的开发机制。
2.3.分裂对象模型 ns-2使用了被称为分裂对象模型的开发机制,如图3所示,采用了C抖和OTel两种开发语言进行开发,并且两种语言的对象和变量是通过TclCL关联起来的。
C++的类和对象为编译类和编译对象,相反的OTel的类和对象为解释类和解释对象。
为了减少分组和事件的处理时间.事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过TclCL映射对OTcl解释器可见.rlS-2使用这种分裂对象模型,是由于模型性能和灵活性两方面考虑.一方面,OTcl是一种解释执行的,不需要强制类型转换的语言,用OTel进行模拟配置,可以在不必重新编译的情况下快速修改网络环境参数和模拟过程,提高模型的效率。
另一方面,C++是一种高设的编译执行语言,在实现具体通信协议时.需要高效地操作包格式数据结构,并要实现网络通信算法,而这些算法住每 53次仿真中,都需要重复运行。
CH稃序的运行速度比较快,而且容易实现较复杂的数据结构和复杂算法。
冈此,具体的网络协议和网络组件的实现适合使用C++进行编写。
分裂对象模璀还增强了as.2的可操作性和灵活性,用户在进行网络模拟时只需要编写OTcl脚本就能将J{j C++实现的各种网络组件组合起来,它屏敞了网络组件在C++中实现的细节。
用户关心的仅仅是网络组件提供的接口。
图3 C++和OTcl分裂对象模型 TclCL机制把两种语言中的对象和变量对应起来,使得OTcl类可以直接调用调用C++类函数,OTcl和C++能够互相操作对方定义的数据,并使得C++类可以和OTcl类对应起来,OTcl类的分层结构和C++的分层结构保持一致。
TclCL是US.2框架的支撑者,llS.2的类库都是建立在TciCL基础上。
它主要包含6个类:Tcl类、TclObject类、TclClass类、TclClass类、TclCommand类、EmbeddedTcl类和InstVar类。
Tcl类封装了OTcl解释器的实例,并提供了访问解释器的方法。
TclObject类是OTc此++两个面向对象语言的类库的基类,封装了绑定、跟踪和对相关命令的调用机制。
TclClass类用于注册编译,保持可编译分级的层次结构同时给OTcl对象提供了创建C++对象的方法。
TclCommand类用于定义简单的全局解释命令。
EmbeddedTel类用于定制命令。
InstVar类包含了从OTcl访问C++类成员变量的方法。
3.ns.2主要构件及其扩展 在〔1】中可以找到us.2的详细对象结构,了解到主要的网络组件可以划分为两类:分类器 (Classifier)和连接器(connector),它们是很多其他网络组件的父类。
其中,分类器典型的派生类对象包括地址分类器(address classifier)和端口分类器(port classifier),连接器典型的派生类对象包括队列(Queue)、链路延迟(LinkDelay)、代理(Agent)和跟踪对象(Trace)类。
本文将介绍ns.2中部分核心网络组件,井结合现有的扩展实例,分析对其扩展的一般性方法。
3.1.节点及其扩展 节点(Node)是网络拓扑的最重要的组成部分,在实际网络中的交换机、路由器、终端设备在ns.2中都被统一的抽象为节点。
US.2中的节点是一个复合的网络组件,本质上是一个分类器的集合.图4给出了单播节点和移动节点(MobileNode)的结构,其中移动j肖点是CMU’S Monarch:1二作组在其无线模型中对ns.2的一个扩展.可为每一个移动节点创建指定的Ad.hoc网络路由协议和一个网络协议栈.这个网络协议栈包括一个链路层、接口队列、MAC层和一个具有天线的网络接口,并根据已经定义的传输模型将协议栈的各个构件互联.再连接剑无线信道。
图4 ns.2单橘节点和移动节点结构 ns.2无线模型中的移动节点仅仅支持单信道的接入,【5】中给出了ns一2的一种有效的扩展。
能够让无线节点支持多信道的接入。
【5】把链路层及其以下除了无线传播模型以外的其他网络构件复制多个,从而达到了一个无线:宵点可以接入多个无线信道目的。
通过这个方法,了解到对节点的扩展,可根据需求对节点的多个网络组成部分进行添加、复制、删除。
如多播。
常点就是在单播节点中添加了一个复制器.(Replicator)对象,并使用它生成分组的拷贝。
3.2.链路及扩展 rl¥.2中链路(Link)同节点一样,是一个复合组件,由一系列的连接器组成。
图5(a)中给出了11¥.2链路的一般结构,其中队列、链路延迟、订L Checker都是连接器的子类,Agent/Null用于销毁丢弃的分组。
(a) (b) 图5 115.2链路结构(a)及简化模型(b) 【6】中扩展了ns一2的链路模璀,图5(b)表示了简化后的链路模型,在保证模拟的真实性的前提.卜.,删除了队列网络构件,模拟计算出分组在队夕lJ中的排队延迟,简化后模型可人人减少模拟程序运行的时间,根据仿真,可节省模拟时间35%以上。
【7〕dP扩展了ns.2的队列调度算法,改变了118.2中的队尾入队、队头出队的方式,实现了CSVC(Core Stateless Virtual Cloek)的队列调度算法。
3.3.代理(Agent)及扩展 代理是ns.2非常有特色的一个网络构件。
它是网络层分组的起点和终点,它可以构建和销毁网络层的分组,通过对Agent的继承,它也可以实现不同层的网络协议。
ns.2中的Agent/TCP、Agent/UDP分别实现了传输层两个重要的协议TCP协议和UDP协议,除了TCP和UDP协议外,m.2还支持许多其他的协议,如Ad.hoe网络路由协议AODV、DSDV等. 对ri¥.2中无线网络网络层协议的扩展是研究最为广泛的。
【21131qb介绍了如何通过Agent的继 55承来实现ping协议在ns.2中的添加。
无线网络中路由协议的添加更是ns一2扩展研究中重点,〔87中分析了ns一2中分层路由存在的问题及改进的方法,〔4】中介绍了洪泛协议在ns.2中的添加,【9】中介绍了一种MANET(Mobile Ad Hoe Network)路由协议在ns-2中的实现过程,现将在t’IS一2中实现一个新的路由协议的一般性方法总结如下: 1. 为该协议创建自己的分绢格式; , 2. 创建新的路由代理。
包括确定新代理的继承结构,并为其创建新的合适的C++代理类,定 义和实现c++代理所需的定时器类,重载c抖代理类内部方法或在新代理类中添加新的方 法,常见C++代理类与OTcl代理类的连接; 3, 创建新的路由表: 4. 将
代码集成剑ns.2中并重新编译nS.2; 此外,应J-|j层(Application)、跟踪对象(Trace)等都可以根据研究者自己的需求进行相应的扩展,【l忡介绍了全世界各地的ns.2用户对其进行的扩展。
对于ns.2中的无线模型,也是现在研究的热点,各种MAC协议在ns.2中的实现也可以在〔1】中找到。
4.结束语 as.2由于其开放源
代码,受到了学术界的广泛推崇,成为现在进行网络模拟最为流行的软件之一。
但是由丁国内ns.2方面的资料有限,限制了ns-2在国内的发展。
本文对rls.2的机制做了较为详细的介绍,并结合一些典型的ns.2扩展成果,介纲并总结了ns一2中部分关键构件扩展的一般性方法。
使用ns一2进行网络技术研究,对ns.2的扩展是必不可少的环:悔,研究者可根据自己的需要丰富ns.2的功能。
参考文献【1】.nS-2 Main Page,http://nsnam.isi.edu/nsnam/index.
php/Main__Page,The University of Southern California’S Information Sciences Institute,September 2006. ’ 一.【2】.方路q2,刘世华,陈盼,郭笋,陈小乐,ns.2网络模拟基础与应用,国防工业}{{版社,2008年5月 、p】.于斌,剖、斌,温暖,乇绘脑,陈江锋,NS2与网络模拟,人民邮电小版社,2007年4月【4】.徐雷鸣,庞博。
赵耀,NS与网络模拟,人民邮电…版社,2003年1 1月【5】.Ramon Aguero Calvo,Jesus Perez Campo,“Add Multiple Interface Support in ns一2”,University of Cantabria,January,2007【6】.洪沛,云晓春,:E晓峰,“一种简化的NS2链路模型”,计算机工程与应用,2007,43(23):127.131〔7】.·笛文字.手建新,陈松桥,“阔络仿真软件NS2中队列调度算法的扩展”,系统仿真学报,2006,18(2):521.525【8】.李越。
钱德沛,张兴军,栾忠治,“网络模拟器中分层路由协议的问题及改进”,系统仿真学报,2004,16(3): 555,559【9】.Francisco J.Ros,Pedro M.Ruiz,“Implementing a New Manet Unicast Routing Protocol in NS2”,Dept.of Information and Communications Engineering University of Murcia,December,2004