已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ns2网络仿真软件NS 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富, 几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟 结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因 此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少 需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必 备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另 外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。1、NS2简介NS2 (Network Simulator, version 2)是一种面向对象的网络仿真器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络 传输协议,比如TCP和UDP;业务源流量产生器,比如FTP,Telnet,Web CBR和VBR;路由队列管理机制,比如Droptail,RED和CBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播 以及一些MAC 子层协议。NS2 使用C+和Otcl作为开发语言。 NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事 件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费的仿真时间来处理分组的网络组件都必须要使用事件调度器。 它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C+编写 的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用 C+写出并编译的,这些对象通过映射对Otcl解释器可见。当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。2、使用NS进行网络仿真的方法和一般过程进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需 编写OTcl脚本。另一个是基于C+和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C+ 和OTcl类,编写新的OTcl脚本。整个仿真的过程简图如图2所示:假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:(1) 开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。(2) 建立协议代理,包括端设备的协议邦定和通信业务量模型的建立。(3) 配置业务量模型的参数,从而确定网络上的业务量分布。(4) 设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。(5) 编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。(6) 用NS解释执行刚才编写的OTcl脚本。(7) 对Trace文件进行分析,得出有用的数据。(8) 调整配置拓扑结构和业务量模型,重新进行上述模拟过程。NS2 采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C+实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2 的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用 户间能够方便地对C+对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。2、NS2的功能模块NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。(4)理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。(5)(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。3、NS2的软件构成NS2 包含Tcl/Tk,OTcl,NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用 户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C+编 写,以OTcl解释器作为前端;Tclcl则提供NSh和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。4、NS现有的仿真元素从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。 在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas, TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。 TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。 通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四 种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分 布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速 率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。网络模拟器NS-2及其应用分析引言 随着Internet的迅猛发展,网络规模和复杂性的迅速增加,网络研究人员一方面要不断思考新的网络协议和 算法,为网络发展做前瞻性的基础研究;另一方面也要研究如何利用和整合现有的网络资源,使网络达到最高效能。无论是哪一方面都需要对新的网络方案进行验证 和分析。分析方法的有效性和精确性受假设的限制很大。实验方法的局限在于成本很高,实验床的规模很难做到很大,不能实现网络中的多种通信流量和拓扑的融 合。而模拟方法在很大程度上可以弥补前两种方法的不足。NS-2是美国DARPA支持的项目VINT(the Virtual InterNet Tested)中的基础和核心部分。由USI/ISI, Xerox PARC, LBNL 和UC Berkeley这些美国大学和实验室合作研究开发,其目的在于建立一个网络仿真平台,为网络研究人员提供一系列的仿真工具,来实现新的网络协议的设计和实现。 1 NS-2体系结构及功能模块 1.1 NS-2简介 NS-2是面向对象的,基于离散事件驱动的网络环境模拟器。它实现了多种网络协议的模拟,如网络协议TCP、UDP,流量源行为,如FTP、Telnet、Web、CBR、VBR;实现了DropTail、RED、CBQ等几种路由器队列管理机制以及Dijkstra,动态路由、静态路由、组播路由等路由算法。此外,NS-2还支持组播协议SRM及部分MAC层协议。 NS-2用C+和Otcl语言编写而成。它是免费的,开放源代码的,可以很方便地扩展NS-2的功能,将自己开发的新协议模块集成到NS-2环境中。 1.2 NS-2体系结构 NS-2的结构如图1所示。 NS-2采用了两级体系结构,为了提高代码的执行效率,NS-2将数据操作与控制部分的实现相分离,事件调度器和基本的网络组件使用C+编写和编译,其主要功能是 实现对数据包的处理;NS-2的前端是一个Otcl解释器,主要的功能是对模拟环境的配置、建立。从图1 的左下角看,用户利用Otcl库中的模拟对象设计和运行TCL仿真,事件调度器和网络组件通过OTcl链接(tclcl类)和Otcl相关联,这样用户可 以在Otcl空间能够方便地对C+对象的函数和变量进行修改与配置。 1.3 NS-2的功能模块 在NS-2中,整个模拟过程由一个名为Simulator的Tcl类来定义和控制的,Simulator类提供了一系列对模拟进行配置的接口,这其中包括选择“事件调度器(event scheduler)”的接口。进行模拟通常要首先创建一个Simulator类的实例对象,并调用该对象的一系列方法来创建节点(Node)、拓扑(Topology)等模拟所必需的对象。 模拟器封装了许多功能模块:节点、链路、分组、代理、流量发生器、应用模拟器等。 1) 事件调度器: NS-2是一个事件驱动的模拟器,调度器也就成为NS-2的调度中心,主要功能是 处理分组(packet)的延迟和充当定时器。从所有事件中选择发生时刻最早的事件执行,调用它的handle函数,把该事件执行完毕,然后从剩余的所有 事件中选择发生时刻最早的事件执行,如此反复执行。NS-2只支持单线程,如果有多于一个事件安排在同一时刻,那么会按照事件代码插入的先后次序执行。 2) 节点(Node): 表示端节点和路由器,主要由地址分类器、端口分类器、多播分类器和复制器等模拟组件构成。分类器从逻辑上匹配一个分组,并基于匹配的结果把该分组传递给相应的对象。复制器是生成一个分组的多份拷贝,并把这些拷贝转发到各个订阅了某一多播组G的输出链路。 3) 链路(Link): 用来连接网络节点,所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。主要由DelayLink、Queues和TTLChcker等连接器 (Connector)构成。DelayLink构造链路带宽和延迟特征;Queues构造和模拟与该链路相连的路由器的输出缓冲;TTLChcker对该链路的数据包的TTL字段减1操作,并丢弃TTL值为0的数据包。(图2) 图2 链路 4) 分组(Packet):是对象间交互的基本单元。由一系列分组头和一个可选的数据空间组成。分组头的结构在Simulator对象创建时就被初始化了,同时每个分组头相对于分组的起始地址的偏移量也被记录下来,提供用户来存取各个头部所包含的信息。 5)代理(Agent):代表了网络层分组的起点和终点,并被用于实现如TCP和UDP等网络协议。Agent类支持分组的产生和接收,C+的Agent包含一系列的内部状态变量来表示分组的各个域。Agent可以实现多个层次的协议,对于一些运输层的协议,分组的大小和发送时间通常由Agen提供的应用程序接口(API)来控制,对于在低层使用的Agent(路由Agent),分组的大小和发送时间通常由Agent自己控制。 6)流量发生器(traffic generator)、应用模拟器(simulated application): 是构建在运输层代理之上,流量发生器是模拟应用程序产生网络通信量,有四类:(1)EXPOO_Traffic、(2) POO_Traffic、(3)CBR_Traffic、(4)TafficTrace,它们一般用在UDP代理之上,应用模拟器有FTP,Telnet,一般用在TCP代理之上。 2 用NS-2进行网络模拟 进行模拟之前,首先要分析模拟涉及哪个层次。NS模拟分两个层次:一个是基于Otcl编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写Otcl脚本,另一个层次是基于C+和Otcl编程的层次,如果NS中没有所需的网络对象,就需要对NS扩展,利用Otcl和NS的接口类实现NS的更新,然后再编写Otcl脚本。整个模拟的过程如图3所示: 图3 利用NS-2进行网络模拟的过程 2.1 Otcl实现模拟的一般过程 (1) 建立network model: 描述模拟网络拓扑结构,确定链路的基本特性,如延迟、带宽和丢失策略等。 (2) 建立traffic model: 包括端设备的协议绑定和通信业务量模型的建立,配置业务量模型的参数,从而确定网络上的业务量分布。 (3) 设置Trace对象。Trace对象能够把模拟过程中发生的特定类型的事件记录在Trace文件中。NS通过Trace文件来保存整个模拟过程。模拟完成后,用户可以对Trace文件进行分析研究。 (4) 编写其他的辅助过程,设定模拟开始/结束时间,运行Otcl脚本仿真。 (5) 追踪分析结果:对Trace文件进行分析,利用gawk、xgraph、gnuplot得出有用的数据曲线,或者用Nam观看网络模拟运行过程。 2.2 C + + 建立新协议或修改已有网络对象进行扩展要考虑的问题 如果模拟只要求对现有的协议进行简单修改即可完成,无需建立新的协议代理,则找到相应的待修改协议代码进行预期的修改,然后直接编译生成新的NS。然而,当建立新协议时一般需要考虑以下问题: (1) 首先定义头文件,包括数据结构和决定新代理的继承结构,并建立恰当的类定义。 (2) 定义C+代码和Otcl代码之间的接口连接,即定义OTcl 连接函数。 (3) 至少定义接收函数recv( )和命令函数command( )。 (4) 新协议代码完成后,要对相关文件进行改动。例如,如果定义了一个新分组头,要改动NS目录下packet.h 文件的enum packet_t 和class p_info 相应部分;改动tcl/lib/ns-default.tcl文件,定义Tcl对象的缺省值;改动tcl/lib/ns-packet.tcl文件,在 该文件中为新的分组增加一个入口;改动Makefile文件,将*.o文件加入到该文件NS对象文件列表中。 (5) 在NS目录下运行Make Depend和Make,重新编译NS,至此生成了新的NS。 3 应用实例 本例将介绍如何使用一些工具来分析和呈现模拟结果,主要是测量端到端的延迟,而采用的方法一是去分析Trace文件,方法二是去修改NS核心,把所需要测量的数据直 接记录下来,限于篇幅我们不在此进一步介绍方法二。模拟场景如图4所示,包含四个节点(n0,n1,n2,n3),假设n0,n2和n1,n2之间链路带 宽2Mbps,延迟为10ms;n2和n3之间链路带宽1.7Mbps,延迟为20ms;每个链路用DropTail策略;n2和n3之间链路最大队列长 度为10;n0,n3之间有一条建立在TCP上的FTP连接,n1,n3之间有一条建立在UDP上CBR连接;CBR是在0.1秒开始发送,在4.5秒结束,FTP是在1.0秒开始发送,在4.0秒结束。 图4 模拟场景 3.1 建立Otcl模拟代码文件 #创建一个模拟对象 set ns new Simulator #为数据流定义不同的颜色,供NAM用 $ns color 1 Blue $ns color 2 Red #打开一个 NAM trace file set nf open out.nam w $ns namtrace-all $nf #打开一个 trace file 记录数据包的传送过程 set nd open out.tr w $ns trace-all $nd #定义一个结束程序 proc finish global ns nf nd $ns flush-trace #关闭 NAM trace file close $nf close $nd #以后台方式执行 NAM exec nam out.nam & exit 0 #创建四个节点 set n0 $ns node set n1 $ns node set n2 $ns node set n3 $ns node #把节点连接起来 $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail #设定n2和n3之间最大队列长度为10 $ns queue-limit $n2 $n3 10 #设定节点的位置,供NAM用 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right #设定n2-n3间的队列位置,供NAM用 $ns duplex-link-op $n2 $n3 queuePos 0.5 #建立一条TCP连接 set tcp new Agent/TCP $tcp set class_ 2 $ns attach-agent $n0 $tcp set sink new Agent/TCPSink $ns attach-agent $n3 $sink $ns connect $tcp $sink #在NAM中,TCP的连接以蓝色表示 $tcp set fid_ 1 #在TCP连接之上建立FTP应用 set ftp new Application/FTP $ftp attach-agent $tcp $ftp set type_ FTP #建立一条UDP连接 set udp new Agent/UDP $ns attach-agent $n1 $udp set null new Agent/Null $ns attach-agent $n3 $null $ns connect $udp $null #在NAM中,UDP的连接以红色表示 $udp set fid_ 2 #在UDP连接之上建立CBR应用 set cbr new Application/Traffic/CBR $cbr attach-agent $udp $cbr set type_ CBR $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false # 设定FTP和CBR的开始和结束时间 $ns at 0.1 $cbr start $ns at 1.0 $ftp start $ns at 4.0 $ftp stop $ns at 4.5 $cbr stop #在5.0秒调用finish过程结束模拟 $ns at 5.0 finish #执行模拟 $ns run 本例子在FedoraCore4,ns-2.29下测试通过,模拟结束后,产生两个文件,一个是out.nam,这是供NAM用的,用来可视化整个模拟过程;另一个是out.tr,记录了模拟过程中数据包传送中的所有事件,这是我们分析的重点。 3.2 利用awk提取out.tr文件中的数据 awk是一种程序语言,可以使用很短的代码轻易地完成对文本档案做修改、分析、提取和比较等处理。根据Trace文件格式,我们很容易写出测量CBR数据包端到端延迟时间的awk程序delay.awk: #测量CBR数据包端到端延迟时间 BEGIN highest_packet_id = 0; action = $1; time = $2; from = $3; to = $4; type = $5; pktsize = $6; flow_id = $8; src = $9; dst = $10; seq_no = $11; packet_id = $12; if ( packet_id highest_packet_id ) highest_packet_id = packet_id; if ( start_timepacket_id = 0 ) start_timepacket_id = time; if ( flow_id = 2 & action != d ) if ( action = r ) end_timepacket_id = time; else end_timepacket_id = -1; END for ( packet_id = 0; packet_id = highest_packet_id; packet_id+ ) start = start_timepacket_id; end = end_timepacket_id; packet_duration = end - start; if ( start cbr_delay 3.3 利用Xgraph绘出图形 Xgraph是ns-allinone包中自带的一个小巧的绘图工具,它可以根据数据文件里的数据绘制出相应的图形。本例执行:$xgraph cbr_delay,结果如图5所示: 图5 cbr_delay图 由图可以看出:在一刚开始的时候,由于只有CBR的数据包,所以端到端的延迟是固定的,但在1.0秒后,FTP数据包参与争夺网络资源,因此,端到端的延迟变得不固定,但等到FTP传输结束后,CBR数据包的端到端的延迟又变得固定了。 4 结论 网络模拟日益成为分析、研究、设计和改善网络性能的强大工具,NS-2便是其中功能强大且可以免费得到的一种。本文详细讨论了NS-2的结构、功能及其使用方法,并给出一个实例具体解释 NS-2的使用及使用相关工具对输出结果进行处理。总的来说,NS-2结构复杂,有一个相对陡峭的学习曲线,希望本文对学习NS-2能有所裨益。基于NS2的网络仿真1 引言 在计算机网络技术迅速发展的今天,网络科研人员需要开发新的网络协议,为网络发展做开拓性的研究;网络设计人员需要研究如何利用现有的资源, 使设计的网络达到最高效能。无论哪一方面,都需要对网络方案进行分析和评价。通过网络仿真,能对各组件的行为进行较精确的模拟,获得足够数据对系统的性能 进行较准确的预测。 NS2(Network Simulator, version 2)是由美国加州Lawrence Berkeley 国家实验室等单位开发的开源免费网络仿真软件。NS2仿真器的功能非常强大,可扩展性强,执行效率高,目前已广泛应用于局域网、广域网、无线移动网和卫星 网络的仿真。 2 NS2简介 NS2是一种面向对象的网络仿真器。从整体上可以将NS2分成三个部分,其中两个部分是提供给用户的接口,另外一部分是核心仿真器。用户接口 1主要由Tcl/Tk、OTcl扩展解释器构成,用户通过使用TCL/TK、OTcl脚本语言,编写网络仿真脚本文件。脚本语言直观、简洁,用户无需过多 了解核心仿真器的内部机制就可以使用NS2。核心仿真器NS2使用C+代码编写,利用了C+面向对象的机制。Tclcl提供了NS2与Tcl/Tk、 OTcl解释器的连接。用户接口2是指NAM、Xgraph之类的图形显示工具,仿真器执行用户编写的仿真脚本文件,将运行结果加以记录,随后将记录文件 交由NAM程序可视化地显示。 3 NS2的使用与安装 3.1 NS2的使用 NS2网络仿真可以分为两个层次:一个是基于OTcl脚本编程的层次。因为是利用NS2已有的网络元素实现网络仿真,所以这时不需要对NS2 本身进行任何修改,只要编写Otcl脚本即可;另一个层次是基于C+和OTcl编程的层次。如果NS2中没有所需的网络元素,这时就需要对NS2进行功 能扩展,添加新的网络元素,然后再编写OTcl脚本。使用NS2进行网络仿真的过程归纳为: (1)分析要解决的问题,设计仿真拓扑结构和仿真模型; (2)编写OTcl脚本;或扩展NS2类,再重新编译NS2,然后编写OTcl脚本; (3)用NS2运行OTcl脚本,通过NAM等工具查看网络仿真过程,对仿真结果进行分析。 3.2 NS2的安装 NS2可以运行在Linux、Unix、Windows 等多种操作系统平台上,但是在Unix、Linux平台上的使用更方便。下面介绍在Linux操作系统下的安装步骤。 (1)下载NS2的allinone包ns-allinone-2.30.tar.gz,用tar命令解压缩。具体做法是:tar xzvf ns-allinone-2.30.tar.gz (2)解压缩完成后,进入ns-allinone-2.30目录,执行./install完成安装。 (3)安装完后,需要设置3个环境变量的值: PATH、LD_LIBRARY_PATH、TCL_LIBRA RY。为今后使用方便,把3个环境变量的设置放到.bashrc文件中。修改后的.bashrc内容如下所示: 4 仿真实验 利用NS2进行网络仿真,首先设计网络的拓扑结构图。这里采用星型的拓扑结构,网络中有5个节点,其中0、1、2号节点是发送节点,4号节点 是接收节点,3号节点是中继节点。然后编写Tcl脚本文件。先创建一个NS2仿真对象,接着创建节点和链路,配置其属性。因为设计了3个发送源,所以需要 对3个发送源设定不同的属性,比如:包的大小、带宽、延时等。脚本文件完成后,用NS2执行仿真脚本文件。图1是NAM显示。由NAM显示,可以很清晰地 看到仿真过程。图2是Xgragh的显示效果。通过Xgragh,清楚地展现了整个模拟过程的数据流随时间而发生的变化。 5 小结 网络仿真是指通过建立网络设备和链路的模型,模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据。随着网络系统复杂度的增大, 传统的分析法和实验法越来越不适应网络系统的特点,仿真法成为网络性能分析的主流方法。NS2是一个由UC Berkeley开发的用于仿真各种以IP网络为主的优秀仿真软件,目前已广泛应用于计算机网络的研究与设计中。 参考文献 1徐雷鸣.NS2与网络模拟M.北京:人民邮电出版,2003.6. 2朱军正.Red Hat Linux Fedora Core4基础教程M.北京:清华大学出版社,2005.8. 3NS by Example:http:/ / NS / OL. 4Ns tutorial: /nsnam/ns / tutorial/index.html OL. 5NS2教学手册.0/ small ko/ns2/ns2.htm OL.NS的仿真原理-网络组件。NSobject是所有基本网络组件的父类它本身的父类是TclObject类。这个类的对象有一个基本功能,就是处理 数据包(PACKET)。所有的基本网络组件可以划分为两类,分类器(Classifier)和连接器(Connector)。它们都是 NSobject、的直接子类,也是所有基本网络组件的父类。分类器的派生类组件对象包括地址分类器和多播分类器等。连接器的派生类组件对象包括队列,延 迟,各种代理,和追踪对象类。应用程序是建立在传输代理上的应用程序的模拟。NS2中有两种类型的“应用程序”,数据源发生器和模拟的应用程序。NS是离 散事件驱动的网络仿真器。它使用Event Scheduler对所有组件希望完成的工作和计划该工作发生的时间进行列表和维护。NS的工作平台可以是Windows,Linux,Uinx,machitosh,还要求系统装有C+编译器。NS的工作流程:NS代码使用 OTCL语言编写,通过OTCL语言解释器解释,使用NS仿真库进行编译和仿真,输出仿真结果,根据仿真结果记录,可进一步进行相关内容分析,生成网络拓 补图或者得到数据的可视化的图表。使用辅助的NAM工具,在NS中可以清晰显示网络拓补图,使用X Graph工具,可以将NS的仿真结果用图表形式表示,NS设计的出发点是基于网络仿真,它集成了多种网络协议,业务类型,路由排队管理机制,路由算法。此外,NS还集成了组播业务和应用于局域网仿真有 关的部分、MAC层协议。其仿真主要针对路由层,传输层,数据链路层展开,因此NS可以进行对固定,无线,卫星以及混合等多种网络的仿真。但它最适用于 TCP层以上的模拟。NS的特点是源代码公开;可扩展性强;速度和效率优势明显。 基于免费软件ns2的网络仿真 摘要:介绍网络仿真的免费软件ns2的概况,对利用ns2进行网络拓扑的输入、结构定义、运行仿真、动态观察仿真过程、仿真数据处理进行了分析,同时用一个例对仿真过程进行了说明。 关键词:网络仿真 免费软件网 络仿真软件是网络性理论分析、评估网络设计方案以及网络故障诊断有力 工具。在网络系统方案设计阶段,对于规模稍大的互连网络目前还没有哪个理论能够对其进行较精确的分析。一般都减少投资风险,降低网络实现费用等都有着巨大 的好处1。在网络仿真软件中,比较有名的有MIL3公司的OPNET软件、Cadence公司的VCC软件,这些软件一般的价格都在调2030美元 左右,每年还需要几万美元的服务费,对于研究单位、学校甚至大型的公司来讲都一笔巨大原投资。除了上面的商业软件,在网络仿真领域还有一些免费软件,这里 面比较有名的就是VINT的ns2软件。1 ns2网络仿真软件简介Network Simulator仿真软件是位于美国加州的Lawrence Berkeley国家实验室于1989年开始开发的软件,简称ns软件。Ns是一种可扩展、易配置和编程的事件驱动网络仿真工具。ns从 S.keshavs REAL仿真器发展而来的。目前ns正在Virtual InterNetwork Tesbed(VINT)项目的支持下由南加州大学、施乐公司、加州大学与Lanrence Berkeley国家实验室协作发展ns软件。目前最高版本为ns2。ns所用仿真语言是Tool Command Language(tel)语言的一个扩展,tcl语言一个简单的脚本语言,它有解释器可与任何C语言相链接,tcl最强大的功能是它的X工具包 (tk),该工具包可以让用户开发具有图形用户界面的脚本,仿真通过tcl语言进行定义2。利用ns命令编写脚本来定义网络拓朴结构、配置网络信息流 量的产生和接收以及收集统计信息。软件配有仿真过程动态观察器,可以在仿真运行结束后,动态查看仿真的运行过程,观察跟踪数据。软件还有图形显示器,显示 从仿真中得到的结果数据,直观而清晰。目 前ns2主要基于UNIX平台,需要tcl-8.0.5、tk-8.0.5、otcl-1.0a4、tclcl-1.0b8和ns-2.1b6的支持。如 果基于Windows98平台,还需要Perl(Practical Extraction and Report Language)以及Cygwin(Ports of the pupular GNU development)支持,但在Windows98平台下软件可能会不稳定。ns2仿真软件主要支持下面一些已 完成测试的协议:HTTP、telnet业务流、ftp业务流、CBR业务流、On/Off业务流、UDP、TCP、RTP、SRM、算法路由、分级路 由、广播路由、多播路由、静态路由、动态路由、CSMACD MAC层协议等3。下面将结合基于Linux平台上的ns2软件,对5节点星型拓朴满足UDP协议的网络仿真进行说明。ns2所有相关文件可以在位于/nsnam/ns的网址上找到。2 网络拓朴及结构的定义网络拓朴采用5个节点的星型结构,具体结构如图1所示。下面利用tcl语言对网络拓朴结构进行定义如下:set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns nodeset n4 $ns node$ns duplex-link $n0 $n3 1Mb 100ms DropTail$ns duplex-lin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能网联汽车产业园设备设施安装与调试方案
- 风电场施工设计方案优化
- 医疗废弃物无害化集中处置中心建设项目运营管理方案
- 装修板材生产线项目施工方案
- 储能电站设备选型与技术评估方案
- 报废汽车回收产业链协同建设方案
- 衣服团购合同范本
- 2025化工填料塔行业市场现状分析投资评估规划发展趋势研究报告
- 2025化工产品贸易行业市场需求供给分析投资前景规划发展策略研究分析报告
- 2025化工产品出口行业市场供需分析及投资价值判断规划报告
- 印制电路板设计规范-工艺性要求
- 通信工程知识测试题库及答案
- 幼儿园大班语言《睡觉觉》课件
- 2024国家能源集团总部系统内招聘笔试考试题库+答案
- 2025年世界水电展望报告(英文版)-国际水电协会(IHA)
- 旧楼道内粉刷施工方案
- 2025年安全生产知识教育培训考试试题及标准答案
- 外泌体课件教学课件
- Unit 5 The weather and us 公开课一等奖创新教案(7个课时 含反思)
- 沥青混凝土施工技术标准与规范
- 甲状腺腺癌护理查房
评论
0/150
提交评论