文档库 最新最全的文档下载
当前位置:文档库 › ns2仿真软件介绍

ns2仿真软件介绍

ns2仿真软件介绍
ns2仿真软件介绍

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_time[packet_id] == 0 )

start_time[packet_id] = time;

if ( flow_id == 2 && action != "d" ) {

if ( action == "r" ) {

end_time[packet_id] = time;

}

} else {

end_time[packet_id] = -1;

}

}

END {

for ( packet_id = 0; packet_id <= highest_packet_id; packet_id++ ) {

start = start_time[packet_id];

end = end_time[packet_id];

packet_duration = end - start;

if ( start < end ) printf("%f %f\n", start, packet_duration);

}

}

本例执行并把结果重定向到cbr_delay文件中:$awk –f delay.awk out.tr>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个环境变量的值:PA TH、LD_LIBRARY_PA TH、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.

[3]NS by Example:http:// https://www.wendangku.net/doc/be9112851.html, / NS / [OL].

[4]Ns tutorial:https://www.wendangku.net/doc/be9112851.html, /nsnam/ns /

tutorial/index.html [OL].

[5]NS2教学手册.http://140.116.72.80/ ~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软件,这些软件一般的价格都在调20-30美元左右,每年还需要几万美元的服务费,对于研究单位、学校甚至大型的公司来讲都一笔巨大原投资。除了上面的商业软件,在网络仿真领域还有一些免费软件,这里面比较有名的就是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、算法路由、分级路由、广播路由、多播路由、静态路由、动态路由、CSMA /CD MAC层协议等[3]。

下面将结合基于Linux平台上的ns2软件,对5节点星型拓朴满足UDP协议的网络仿真进行说明。ns2所有相关文件可以在位于https://www.wendangku.net/doc/be9112851.html,/nsnam/ns的网址上找到。

2 网络拓朴及结构的定义

网络拓朴采用5个节点的星型结构,具体结构如图1所示。

下面利用tcl语言对网络拓朴结构进行定义如下:

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set n4 [$ns node]

$ns duplex-link $n0 $n3 1Mb 100ms DropTail

$ns duplex-link $n1 $n3 1Mb 100ms DropTail

$ns duplex-link $n2 $n3 1Mb 100ms DropTail

$ns duplex-link $n3 $n4 1Mb 100ms DropTail

前4 行设置了从n0到n4的4个网络节点,后4行分别定义了从n0、n1、n2到n3以及n3到n4的网络链路,链路设置均相同,都为1Mbit/s,延迟 100ms,丢弃超出信道容量的数据。定义完基本的节点和链路后,

对网络的数据源和应用的协议进行定义,由于需要定义的节点较多,采用子程序的方法。网络的信源采用On/Off指数分布随机信源,协议采用UDP无边接协议,具体程序脚本如下:

proc attach-expoo-traffic{node sink size burst idle rate}{

#Get an instance of the simulator

set ns[Simulator instance]

#Create a UDP agent and attach it to the node

set source[new Agent/CBR/UDP]

$ns attach-agent $node $source

#Create an Expoo traffic agent and set its configuration parameters

set traffic[new Traffic/Expoo]

$traffic set packet-size $size

$traffic set burst-time $burst

$traffic set idle-time 3168le

$traffic set rate $rate

#Attach the traffic agent to the traffic source

$source attach-traffic $traffic

#Connect the source and the sink

$ns connect $source $sink

return $source

}

子程序首先设置ns作为仿真器,然后创建一个UDP协议并把这个协议附加到节点上,之后创建一个开关时间满足指数分布的On/Off随机信源,设置信源的包大小、开关时间、峰值速率参数,并将信源绑定到UDP 协议上,最后指出信息流的源地址和目的地址。

仿真模型定义完成后,在脚本程序中设置仿真的开始时间和结束时间,以及通过编写脚本将仿真中需要记

录的数据写入文本文件。这样,仿真模型的整个脚本就完成了,下面我们就可以运行仿真,以及观察仿真的结果。

3 运行仿真并动态观察仿真过程

ns2软件的仿真运行比较简单,采用后台方式,只需要在命令行中输入下命令即可:

ns脚本程序名.tcl

仿真运行结束后,我们可以利用仿真动态观察器nam软件查看仿真过程,运行如下命令:

nam out.nam

观察器启动后,我们可以看到一个图形界面如图2所示。通过观察器按钮,我们可以正向播放、反向播放、快速前进、快速后退、停止仿真动画的播放。我们也可以给网络上传输的包加上标记,动态观察包的传递过程。在观察器的右上角设置有步长设置滑块,用来设置仿真演示的速度。利用该工具大大方便了对网路运行情况的理解ns2与观察。

4 仿真数据处理

利用仿真过程中记录的数据和xgraph软件,我们呆以对这些数据进行图形化的分析。在此例中我们中以显示节点n0、n1、n2分别到n4的信息流量图,峰值速率分别为我们所设定的值。我们也可以利用仿真形成的数据文件,根据需要对其进行进一步的处理。

从上面的整个仿真过程来看,ns2免费网络系统仿真软件具有功能完整,使用较方便,支持较多网络协议的特点,但利用脚本来构建网络模型稍显繁琐。

各大仿真软件介绍

各大仿真软件介绍(包括算法,原理) 随着无线和有线设计向更高频率的发展和电路复杂性的增加,对于高频电磁场的仿真,由于忽略了高阶传播模式而引起仿真的误差。另外,传统模式等效电路分析方法的限制,与频率相关电容、电感元件等效模型而引起的误差。例如,在分析微带线时,许多易于出错的无源模式是由于微带线或带状线的交叉、阶梯、弯曲、开路、缝隙等等,在这种情况下是多模传输。为此,通常采用全波电磁仿真技术去分析电路结构,通过电路仿真得到准确的非连续模式S参数。这些EDA仿真软件与电磁场的数值解法密切相关的,不同的仿真软件是根据不同的数值分析方法来进行仿真的。通常,数值解法分为显示和隐示算法,隐示算法(包括所有的频域方法)随着问题的增加,表现出强烈的非线性。显示算法(例如FDTD、FIT方法在处理问题时表现出合理的存储容量和时间。本文根据电磁仿真工具所采用的数值解法进行分类,对常用的微波EDA仿真软件进行论述。2.基于矩量法仿真的微波EDA仿真软件基于矩量法仿真的EDA 软件主要包括A D S(Advanced Design System)、Sonnet电磁仿真软件、IE3D和Microwave office。 2.1ADS仿真软件Agilent ADS(Advanced Design System)软件是在HP EESOF系列EDA软件基础上发展完善起来的大型综合设计软件,是美国安捷伦公司开发的大型综合设计软件,是为系统和电路工程师提供的可开发各种形式的射频设计,对于通信和航天/防御的应用,从最简单到最复杂,从离散射频/微波模块到集成MMIC。从电路元件的仿真,模式识别的提取,新的仿真技术提供了高性能的仿真特性。该软件可以在微机上运行,其前身是工作站运行的版本MDS(Microwave Design System)。该软件还提供了一种新的滤波器的设计引导,可以使用智能化的设计规范的用户界面来分析和综合射频/微波回路集总元滤波器,并可提供对平面电路进行场分析和优化功能。它允许工程师定义频率范围,材料特性,参数的数量和根据用户的需要自动产生关键的无源器件模式。该软件范围涵盖了小至元器件,大到系统级的设计和分析。尤其是其强大的仿真设计手段可在时域或频域内实现对数字或模拟、线性或非线性电路的综合仿真分析与优化,并可对设计结果进行成品率分析与优化,从而大大提高了复杂电路的设计效率,使之成为设计人员的有效工具[6-7]。2.2Sonnet仿真软件Sonnet是一种基于矩量法的电磁仿真软件,提供面

NS2网络仿真实验

NS2网络仿真实验 实验目的: 通过修改NS2的TCP协议代码,来简单的观察窗口阈值的不同算法对网络资源利用率的影响。 实验步骤: 1. 实验环境搭建 (1)系统环境: 虚拟机:virtrulbox; 操作系统:linux/ubuntu 10.04 工作目录:/home/wangtao/workspace/ (2)NS2安装与使用: 下载NS2软件包到工作目录, 地址https://www.wendangku.net/doc/be9112851.html,/sourceforge/nsnam/ns-allinone-2.33.tar.gz 解压(注:以下斜体字为命令行命令) tar -zxf ns-allinone-2.33.tar.gz cd ns-allinone-2.33 ./install (中间的两个bug已经修改,此处忽略) 耐心等待安装完毕后将出现如下画面说明安装正常: 接下来是系统环境配置,重新进入终端 cd ~ vim .bashrc(如果没有安装vim最好安装一下,sudo apt-get install vim) 在打开的.bashrc的末尾加上以下内容:

PATH="$PATH:/home/wangtao/worksapce/ns-allinone-2.33/bin:/home/wangtao/worksapce/ns-a llinone-2.33/tcl8.4.18/unix" export LD_LIBRARY_PATH="$LD_LIBRARY_PAHT:/home/wangtao/worksapce/ns-allinone-2.33/otcl-1.13,/ home/wangtao/worksapce/ns-allinone-2.33/lib" export TCL_LIBRARY="$TCL_LIBRARY:/home/wangtao/worksapce/ns-allinone-2.33/tcl8.4.18/library" 保存并退出,重新进入终端 安装xgraph sudo apt-get install xgraph 运行一个简单的例子,以证明环境安装完成: ns /home/wangtao/workspace/ ns-allinone-2.33/tcl/ex/simple.tcl 出现如下图说明成功: 2.修改https://www.wendangku.net/doc/be9112851.html,代码 vim /home/wangtao/workspace/ns-allinone-2.33/tcp/https://www.wendangku.net/doc/be9112851.html, (将窗口阈值一半变为的窗口阈值1/3——wt_https://www.wendangku.net/doc/be9112851.html,) 第一处: …… if (cwnd_ < ssthresh_) slowstart = 1; if (precision_reduce_) { //halfwin = windowd() / 2; //wangtao halfwin = windowd() / 3;

NS2网络模拟

网络协议分析与仿真课程设计报告 网络模拟 一、课程设计目的 掌握网络模拟工具NS2的使用,学习基本的网络模拟方法。 二、课程设计内容 协议模拟 工具:NS2,awk,shell,perl等; 要求:掌握NS2网络模拟的基本流程; 内容:NS2网络模拟基本流程 编写TCL脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp服务器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。各节点间的链路属性见图。 cbr null packet size = 1kbytes, rate=1Mbps 模拟时间设为13秒钟,在0.1秒开始产生cbr流量,在1.0秒开发发送发ftp流量; 8.0秒ftp流量结束,12.0秒cbr流量结束。编写脚本(可用shell,awk,或perl等) 分析模拟日志文件,统计每0.5s内0、1节点间链路通过的分组数以及字节数。 三、设计与实现过程 1.仿真脚本代码与详细注解 #Create a simulator object set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #Open the Trace file

set tf [open out.tr w] $ns trace-all $tf #Define a 'finish' procedure proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #Create links between the nodes $ns duplex-link $n0 $n2 1.5Mb 10ms DropTail $ns duplex-link $n0 $n4 1.5Mb 10ms DropTail $ns duplex-link $n0 $n1 2Mb 20ms DropTail $ns duplex-link $n1 $n3 1.5Mb 10ms DropTail $ns duplex-link $n1 $n5 1.5Mb 10ms DropTail #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n0 $n1 10 #Setup a TCP connection set tcp [new Agent/TCP] $ns attach-agent $n2 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Setup a UDP connection set udp [new Agent/UDP] $ns attach-agent $n4 $udp set null [new Agent/Null] $ns attach-agent $n5 $null

机器人系统常用仿真软件介绍

1 主要介绍以下七种仿真平台(侧重移动机器人仿真而非机械臂等工业机器人仿真): 1.1 USARSim-Unified System for Automation and Robot Simulation USARSim是一个基于虚拟竞技场引擎设计高保真多机器人环境仿真平台。主要针对地面机器人,可以被用于研究和教学,除此之外,USARSim是RoboCup救援虚拟机器人竞赛和虚拟制造自动化竞赛的基础平台。使用开放动力学引擎ODE(Open Dynamics Engine),支持三维的渲染和物理模拟,较高可配置性和可扩展性,与Player兼容,采用分层控制系统,开放接口结构模拟功能和工具框架模块。机器人控制可以通过虚拟脚本编程或网络连接使用UDP协议实现。被广泛应用于机器人仿真、训练军队新兵、消防及搜寻和营救任务的研究。机器人和环境可以通过第三方软件进行生成。软件遵循免费GPL条款,多平台支持可以安装并运行在Linux、Windows和MacOS操作系统上。 1.2 Simbad Simbad是基于Java3D的用于科研和教育目的多机器人仿真平台。主要专注于研究人员和编程人员热衷的多机器人系统中人工智能、机器学习和更多通用的人工智能算法一些简单的基本问题。它拥有可编程机器人控制器,可定制环境和自定义配置传感器模块等功能,采用3D虚拟传感技术,支持单或多机器人仿真,提供神经网络和进化算法等工具箱。软件开发容易,开源,基于GNU协议,不支持物理计算,可以运行在任何支持包含Java3D库的Java客户端系统上。 1.3 Webots Webots是一个具备建模、编程和仿真移动机器人开发平台,主要用于地面机器人仿真。用户可以在一个共享的环境中设计多种复杂的异构机器人,可以自定义环境大小,环境中所有物体的属性包括形状、颜色、文字、质量、功能等也都可由用户来进行自由配置,它使用ODE检测物体碰撞和模拟刚性结构的动力学特性,可以精确的模拟物体速度、惯性和摩擦力等物理属性。每个机器人可以装配大量可供选择的仿真传感器和驱动器,机器人的控制器可以通过内部集成化开发环境或者第三方开发环境进行编程,控制器程序可以用C,C++等编写,机器人每个行为都可以在真实世界中测试。支持大量机器人模型如khepera、pioneer2、aibo等,也可以导入自己定义的机器人。全球有超过750个高校和研究中心使用该仿真软件,但需要付费,支持各主流操作系统包括Linux, Windows和MacOS。 1.4 MRDS-Microsoft Robotics Developer Studio MRDS是微软开发的一款基于Windows环境、网络化、基于服务框架结构的机器人控制仿真平台,使用PhysX物理引擎,是目前保真度最高的仿真引擎之一,主要针对学术、爱好者和商业开发,支持大量的机器人软硬件。MRDS是基于实时并发协调同步CCR(Concurrency and Coordination Runtime)和分布式软件服务DSS(Decentralized Software Services),进行异步并行任务管理并允许多种服务协调管理获得复杂的行为,提供可视化编程语言(VPL)和可视化仿真环境(VSE)。支持主流的商业机器人,主要编程语言为C#,非商业应用免费,但只支持在Windows操作系统下进行开发。 1.5 PSG-Player/Stage/Gazebo

基于NS2的无线传感器网络软件仿真实验

目录 ●课程设计目的 ●课程设计内容 ●课程设计实验原理 ?WSN路由协议 ?WSN MAC层协议 ?修改的路由协议 ●课程设计小组分工 ●课程设计实验流程 ●课程设计实验结果分析 ●课程设计心得体会 ●课程设计总结 ●参考文献 ●源代码

一、课程设计目的 无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要。为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。 二、课程设计内容 软件仿真实验。 要求使用相关软件仿真一个无线传感器网络,要求如下: ●自行参考相关资料,成功安装NS2(或OPNET也可以); ●利用NS2自带的范例,构建一个100个节点的无线传感器网络, 能够成功运行;最好能有界面显示; ●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器 网络一种路由协议(例如一种多播路由协议); ●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器 网络采用一种MAC协议; ●修改或自行编写一个简单路由协议或MAC协议,并进行仿真运 行。

三、课程设计实验原理 a)WSN路由协议 传统计算机网络对路由协议要求如下:正确性,健壮性,稳定性,公平性,最优性。除此之外,无线传感器网络对路由协议更注重以下特殊要求:能源有效性,简单性,多路性。无线传感器网络是以数据为中心(Data Centric)进行路由的,不同于传统Ad hoc网络以地址为中心(Address Centric)进行路由的模式。由于传感器最基本任务就是感知、采集数据,无线传感器网络邻近节点间采集的数据必然具有相似性,存在冗余信息,需经数据融合(Data Fusion)处理再进行路由。有研究表明,在分布密度为ρ(x, y)的随机区域,传感器间冗余数据为:η=ζSeρ。直接传输这些未经处理、存在冗余的数据,将会造成网络带宽、节点能源的巨大浪费,导致节点迅速死亡,缩短整个网路的生命周期。 无线传感器网络中的大部分节点不像传统Ad hoc网络中的节点一样快速移动,因此没有必要花费很大的代价频繁地更新路由表信息。常规路由协议通常认为底层的通信信道是双向的,但是在采用无线通信的无线传感器网络环境中,由于发射功率或地理位置等因素的影响,可能存在单向信道。它给常规路由协议带来三个严重的影响:认知单向性、路由单向性和汇点不可达。

网络模拟器NS2中仿真功能的问题分析及改进

第21卷第2期 系 统 仿 真 学 报? V ol. 21 No. 2 2009年1月 Journal of System Simulation Jan., 2009 网络模拟器NS2中仿真功能的问题分析及改进 况晓辉1, 赵 刚1,2, 郭 勇1, 3 (1.北京系统工程研究所, 北京 100101; 2.清华大学计算机科学与技术系, 北京 100084; 3.国防科技大学信息系统与管理学院, 长沙 410073) 摘 要:网络仿真技术为解决大规模网络规划、应用和协议设计面临的挑战提供了新的途径。作为广泛应用的网络模拟器,NS2为建立可扩展的网络仿真环境奠定了重要基础。在描述NS2仿真功能实现的基础上,重点分析了NS2仿真功能存在的不足。针对发现的问题,提出并实现了NS2仿真功能扩展,最后验证了仿真功能扩展的正确性。 关键词:网络仿真;NS2;报文转换;功能扩展 中图分类号:TP393 文献标识码:A 文章编号:1004-731X (2009) 02-0427-05 Improvement of Emulation Function in Network Simulator KUANG Xiao-hui 1, ZHAO Gang 1,2, GUO Yong 1, 3 (1. Beijing Institute of System and Engineering, Beijing 100101, China; 2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China; 3. Department of Information System and Management of NUDT, Changsha 410073, China) Abstract: Network emulate technology which enables real hosts and a real network to interact with a virtual network, becomes a very important way to resolve the challenge faced in network plan, application and protocol design. As a famous network simulator, NS2 proposed a foundation to construct network emulate platform. The emulation function of NS2 was described firstly. Based on analysis the problem of emulation function in NS2, the extension of NS2 emulation function was proposed and implemented. The correctness of extension was dominated in the end. Key words: network emulation; NS2; packet reform; function extension 引 言互联网的迅速发展与膨胀对网络的规划、应用和协议的 设计提出了新的挑战。在试验环境中对网络规划、新的应用和协议进行评估是应对上述挑战的有效手段之一[1-3]。当前构建复杂网络试验环境的实现技术主要包括测试床、网络模拟(network simulation )和网络仿真(network emulation )[4]等三种类型。 测试床具有逼真度高的优点,但是造价较高、规模和复杂性有限。网络模拟具有可控性强、灵活性高、代价低以及能够实现复杂网络拓扑等优点,但是对于网络流量以及实现细节支持不够,交互性不高。网络仿真综合了测试床和网络模拟的优点。在仿真环境中,网络应用运行在实际的硬件平台上,且能够与实际的环境交互,扩展性和灵活性较高,同时网络试验环境可配置、可控制、可重复,能够生成真实网络流量,从而成为当前构建网络试验环境的重要技术。当前网络仿真技术研究思路分为两种:一种思路是将仿真网络看作简单的延迟黑盒(simple delay lines ),仅关注网络出入口的设置,该思路具有硬件要求低的优点。相关研究包括:Dummynet [5],NIST net [6]等。另一种思路是通过建立虚拟网络模拟进行实时网络仿真。真实网络流量能够通过仿真 收稿日期:2007-06-10 修回日期:2008-02-09 作者简介:况晓辉(1975-), 男, 湖南新化, 博士, 副研究员, 研究方向为计算机网络, 信息安全;赵刚(1969-), 男, 河北保定, 研究员, 研究方向为计算机网络, 信息安全; 郭勇(1966-), 男, 湖南常德, 研究员, 研究方向为计算机网络, 计算机软件。 器,虚拟网络能够根据交互生成网络流量。相关的研究包括VINT/nse [7],ModelNet [8],NetBed [9], Virtual Routers [10],PlanetLab [11]以及IP-TNE [1]等。 随着网络复杂性的提高,基于延迟黑盒的网络仿真环境难以满足应用需求。因此,建立在网络模拟基础上的仿真环境成为网络仿真技术的研究重点。在网络模拟器实现中,NS2 [12]能够支持有线和无线、本地或卫星、局域网和广域网等各种网络类型以及网络分层模型,具有强大的二次开发能力以及可扩展、易配置和编程的事件驱动特性,为构建网络仿真平台提供了良好基础。然而,NS2已有的仿真功能在IP 地址支持、路由机制、协议支持等方面存在不足,难以满足网络技术研究和协议设计开发的实际需求。 本文在深入分析NS2仿真功能的基础上,重点分析了已有功能存在的不足,描述并实现了NS2仿真功能扩展,解决了IP 地址支持、动态路由以及拓扑验证的问题。最后,通过试验验证了仿真功能的正确性和有效性。 1 NS2网络仿真功能分析 事件驱动的网络模拟器NS2是DARPA 支持的VINT 项目中的核心部分,由Berkeley, USC/ISI 、 LBL 和Xerox PARC 等大学和实验室合作开发,其目的是构造虚拟的网络平台和模拟工具,以支持网络协议的研究、设计和开发。 1.1 仿真功能 NS2仿真模块实现了模拟器与实际网络的连接功能,

模拟仿真软件介绍

模拟仿真软件介绍 模拟仿真技术发展至今,用于不同领域、不同对象的模拟仿真软件林林总总,不可胜数,仅对机械产品设计开发而言,就有机构运动仿真软件,结构仿真软件,动力学仿真软件,加工过程仿真软件(如:切削加工过程仿真软件、装配过程仿真软件、铸造模腔充填过程仿真软件、压力成型过程仿真软件等),操作训练仿真软件,以及生产管理过程仿真软件,企业经营过程仿真软件等等。这里仅以一种微机平台上的三维机构动态仿真软件为例,介绍模拟仿真软件的结构和功能。 DDM(Dynamic Designer Motion)是DTI(Design Technology International)公司推出的、工作于AutoCAD和MDT平台上的微机全功能三维机构动态仿真软件,包含全部运动学和动力学分析的功能,主要由建模器、求解器和仿真结果演示器三大模块组成(见图1)。 1.DDM建模器的功能 1)设定单位制。 2)定义重力加速度的大小和方向。 3)可以AutoCAD三维实体或普通图素(如直线、圆、圆弧)定义运动零件。 4)可以定义零件质量特性:

图1 DDM仿真软件模块结 ①如果将三维实体定义为零件,可以自动获得其质量特性。 ②如果用其他图素定义零件,则可人工设定质量特性。 5)可以定义各种铰链铰链用于连接发生装配关系的各个零件,系统提供六种基本铰链和两种特殊铰链。 基本铰链: ①旋转铰——沿一根轴旋转。 ②平移铰——沿一根轴移动。 ③旋转滑动铰——沿一根轴旋转和移动。 ④平面铰——在一个平面内移动并可沿平面法线旋转。 ⑤球铰——以一点为球心旋转。 ⑥十字铰——沿两根垂直轴旋转。 特殊铰链:

NS2实验报告

NS2实验报告 一、实验平台和环境 本实验是在Windows XP操作系统平台下安装了Cygwin软件以模仿Linux 下的编程环境,然后在Cygwin模仿的环境中安装了ns-allinone-2.34软件包,该软件包包含nam、otcl、tcl、tclcl、tk以及xgraph等软件包和辅助分析工具。 二、实验步骤 2.1 安装与配置 1.安装cygwin a)在cygwin官方网站下载setup.exe。 b)运行setup.exe,使用默认配置选择unix安装。 c)在选择安装组件时确认安装以下内容:XFree86-base, XFree86-bin, XFree86-prog,XFree86-lib, XFree86-etc,make,patch,perl,gcc,gcc-g++, gawk,gnuplot,tar 和gzip。 Diffstat,diffutils,libXmu,libXmu-devel,libXmu6,libXmuu1, X-startup-scripts xorg-x11-base xorg-x11-bin xorg-x11-devel xorg-x11-bin-dlls xorg-x11-bin-lndir xorg-x11-etc xorg-x11-fenc xorg-x11-fnts xorg-x11-libs-data xorg-x11-xwin 2.安装NS2 a)在NS2官方网站下载ns2-allinone-2.34.tar.gz安装包。 b)将ns2-allinone-2.34.tar.gz拷贝放入cygwin用户目录下。 c)运行cygwin,命令行下输入tar xvfz ns2-allinone-2.34.tar.gz。 d)进入ns2-allinone-2.34目录,执行./install开始安装。

基于NS2的UDP仿真报告

基于NS2的UDP协议仿真 1. UDP协议的特点 UDP 是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。UDP协议称为不可靠的传输协议。 UDP报头由4个域组成,其中每个域各占用2个字节,具体如表1所示: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1819 20 21 22 23 24 25 26 27 28 29 30 31 源端口目的端口 段长校验和 表1 UDP报头结构 UDP协议使用端口号为不同的应用保留其各自的数据传输通道。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。 2. NS2软件的安装与配置 2.1 ubuntu实验环境 Ubuntu是Linux的一个版本,是一款免费的操作系统,Ubuntu 项目完全遵从开源软件开发的原则;用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。NS2在linux环境下运行比在windows下更稳定,出现更少的错误,还可以更改linux内核,使得仿真效果更好。 2.2 软件安装 NS2可以再Linux平台下运行,因此一般需要安装Linux操作系统。也可以采用Windows+虚拟机(VMware,Virtual PC)+NS组合的方式。 若要在Ubuntu上运行NS2,下面的软件是在安装和使用NS2中需要用到的,必须先行安装。

NS2仿真实例汇总

NS-2仿真模拟实例汇总 (以方路平的书为主) 1.例4.5a:DropTail队列管理的NS_2模拟实例(P161) set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set tf [open out.tr w] set windowVsTime [open win w] set param [open parameters w] $ns trace-all $tf proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } set n2 [$ns node] set n3 [$ns node] $ns duplex-link $n2 $n3 0.7Mb 20ms DropTail set NumbSrc 3 set Duration 50 for {set j 1} {$j <=$NumbSrc} {incr j} { set S($j) [$ns node] } set rng [new RNG] $rng seed 2 set RVstart [new RandomVariable/Uniform] $RVstart set min_ 0 $RVstart set max_ 7 $RVstart use-rng $rng for {set i 1} {$i <=$NumbSrc} {incr i} { set startT($i) [expr [$RVstart value]]

NS2仿真实验报告

Ns2简单有线网络仿真实验报告 一、实验概述 1、在windows系统下安装Centos虚拟机 2、在Centos系统下安装NS2仿真工具包 3、Nam方式示例 二、实验内容 1)NS2仿真工具包安装说明 1.在Centos系统下设置root账户 2.解压NS2文件 3.安装ns-allinone-2.35 设置环境变量 4.验证NS2工具包安装情况 2)Nam方式 Otcl脚本 # 产生一个仿真的对象 set ns [new Simulator] #针对不同的资料流定义不同的颜色,这是要给NAM用的 $ns color 1 Green $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 close $nf close $nd #以背景执行的方式去执行NAM exec nam out.nam & exit 0 } #产生6个网络节点 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node]

set n4 [$ns node] set n5 [$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 $ns duplex-link $n3 $n4 1.7Mb 30ms DropTail $ns duplex-link $n3 $n5 1.5Mb 30ms DropTail #设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10 $ns queue-limit $n3 $n4 5 #$ns queue-limit $n3 $n5 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 $ns duplex-link-op $n3 $n4 orient right-up $ns duplex-link-op $n3 $n5 orient right-down #观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5 #建立一条n0-n5TCP的联机 set tcp [new Agent/TCP] $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n5 $sink $ns connect $tcp $sink #在NAM中,TCP的联机会以Green表示 $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

(完整word版)NS2网络仿真实验

移动自组织网络 实 验 报 告 NS2网络仿真实验 何云瑞 13120073 电信研1301班

1.实验目的和要求 1.学会NS2的安装过程,并熟悉NS2的环境; 2.观察并解释NAM动画,分析Trace文档。 3.学会用awk和gnuplot分析吞吐量、封包延迟、抖动率和封包丢失率。2.实验环境 先在PC上安装VMware虚拟机,再在虚拟机上安装Ubuntu系统,最后再Ubuntu系统上安装NS2软件,本次实验采用的是NS-2.34版本。 3.基本概念 3.1 NS2简介 NS2是一款开放源代码的网络模拟软件,最初由UC Berkeley开发。它是一种面向对象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。它们之间采用TclCL进行自动连接和映射。考虑效率和操作便利等因素,NS2将数据通道和控制通道的实现相分离。为了减少封包和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过TclCL映射对OTcl解释器可见。 目前,NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、Web和VBR;路由队列管理机制,如Droptail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块。也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。 3.2 NS2的功能模块 NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等,下面对各个模块进行简单的介绍: (1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

EDA仿真软件介绍

EDA仿真软件介绍 (2009-03-21 08:41) 分类:EDA EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。 EDA设计可分为系统级、电路级和物理实现级。 2 EDA常用软件 EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD 、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim 等等。这些工具都有较强的功能, 一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文 件与第三方软件接口。 (下面是关于EDA的软件介绍,有兴趣的话,旧看看吧^^^) 下面按主要功能或主要应用场合,分为电路设计与仿真工具、PCB设计软件、IC 设计软件、PLD设计工具及其它EDA软件, 进行简单介绍。 2.1 电子电路设计与仿真工具 我们大家可能都用过试验板或者其他的东西制作过一些电子制做来进行实践。但是有的时候,我们会发现做出来的东西有 很多的问题,事先并没有想到,这样一来就浪费了我们的很多时间和物资。而且增加了产品的开发周期和延续了产品的上市时间从而使产品失去市场竞争优势。有没有能够不动用电烙铁试验板就能知道结果的方法呢?结论是有,这就是电路设计与仿真技术。

网络性能的仿真+ns2

实验一:网络性能的仿真 一、实验要求 1)对64个计算机结点,每个计算机采用若干100Mbps集线器(HUB)的 方式连接到一台服务器上。采用NS2仿真软件,对于以上的具体环节进 行网络性能的仿真,给出网络的吞吐量,丢包率,总时延,抖动率等参 数的仿真曲线,并对结果进行分析。 2)将以上环境中的集线器(HUB)换成交换机(switch),给出网络的信道 利用率,吞吐量,传输时延,排队延迟等参数的仿真曲线,并对结果进 行分析。 二、实验目的 通过本次实验的完成,首先能够学会在Ubuntu环境下安装搭建NS2运行的环境。其次对于tcl语言有了更加全面的了解。通过对具体环境的网络环境进行仿真,可以加深对网络的信道利用率,吞吐量,传输时延,排队延迟等参数的计算及了解。最后通过仿真环境中集线器(HUB)和交换机(Switch)之间的仿真的区别,加深对HUB和交换机之间差别的理解。 三、实验原理 1、NS2( Network Simulator version 2),NS(Network Simulator)是一种针对网络技术的源代码公开的,免费的软件模拟平台。计算机网络是一个相当复杂的系统,包含了各种通信协议和网络技术,而网络仿真是网路通信技术研究的重要手段之一,网络仿真是指采用计算机软件对网络协议,网络拓扑,网络性能进行模拟分析的一种研究手段。NS2是一种面向对象的网络仿真器,本质是一个离散事件模拟器,它可以仿真各种不同的IP网,实现一些网络传输协议,比如TCP和UDP,还包括业务源流量产生器,比如FTP,CBR等。NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就

Multisim仿真软件的简要介绍资料讲解

Multisim仿真软件的简要介绍 Multisim是In terctive Image Tech no logies公司推出的一个专门用于电子电 路仿真和设计的软件,目前在电路分析、仿真与设计等应用中较为广泛。该软件以图形界面为主,采用菜单栏、工具栏和热键相结合的方式,具有一般Windows 应用软件的界面风格,用户可以根据自己的习惯和熟练程度自如使用。尤其是多种可放置到设计电路中的虚拟仪表,使电路的仿真分析操作更符合工程技术人员的工作习惯。下面主要针对Multisim11.0软件中基本的仿真与分析方法做简单介绍。 EDA就是“ Electronic Design Automation ”的缩写技术已经在电子设计领域得到广泛应用。发达国家目前已经基本上不存在电子产品的手工设计。一台电子产品的设计过程,从概念的确立,到包括电路原理、PCB版图、单片 机程序、机内结构、FPGA的构建及仿真、外观界面、热稳定分析、电磁兼容分析在内的物理级设计再到PCB钻孔图、自动贴片、焊膏漏印、元器件清 单、总装配图等生产所需资料等等全部在计算机上完成。EDA已经成为集成 电路、印制电路板、电子整机系统设计的主要技术手段。 功能: 1. 直观的图形界面 整个操作界面就像一个电子实验工作台,绘制电路所需的元器件和仿真所需的测试仪器均可直接拖放到屏幕上,轻点鼠标可用导线将它们连接起来,软件仪器的控制面板和操作方式都与实物相似,测量数据、波形和特性曲线如同在真实仪器上看到的; 2. 丰富的元器件 提供了世界主流元件提供商的超过17000多种元件,同时能方便的对元 件各种参数进行编辑修改,能利用模型生成器以及代码模式创建模型等功能,创建自己的元器件。 3. 强大的仿真能力 以SPICE3F5和Xspice的内核作为仿真的引擎,通过Electronic workbench带有的增强设计功能将数字和混合模式的仿真性能进行优化。包括SPICE仿真、RF仿真、MCI B真、VHDL仿真、电路向导等功能。 4. 丰富的测试仪器 提供了22种虚拟仪器进行电路动作的测量: Multimeter(万用表)Function Generatoer(函数信号发生器)Wattmeter(瓦特表)Oscilloscope(示波器)Bode Plotter(波特仪)Word Generator(字符发生器Logic Analyzer(逻辑分析仪)Logic Converter(逻 辑转换仪)Distortion Analyer(失真度仪)Spectrum Analyzer(频谱仪)Network Analyzer(网络分析仪)Measurement Pribe(测量探针) Four Channel Oscilloscope(四踪示波器)Frequency Counter(频率计数器)IV An alyzer(伏安特性分析仪)Agile nt Simulated In strume nts(安捷伦仿真 仪器)Agile nt Oscilloscope(安捷伦示波器)Tektro nix Simulated

Saber仿真软件介绍

Saber 软件简介 Saber软件主要用于外围电路的仿真模拟,包括SaberSketch 和SaberDesigner两部分。SaberSketch用于绘制电路图,而SaberDesigner用于对电路仿真模拟,模拟结果可在SaberScope 和DesignProbe中查看。Saber的特点归纳有以下几条: 1.集成度高:从调用画图程序到仿真模拟,可以在一个环境中完成,不用四处切换工作环境。 2.完整的图形查看功能:Saber提供了SaberScope和DesignProbe来查看仿真结果,而SaberScope功能更加强 大。 3.各种完整的高级仿真:可进行偏置点分析、DC分析、AC分析、瞬态分析、温度分析、参数分析、傅立叶分析、蒙特卡诺分析、噪声分析、应力分析、失真分析等。 4.模块化和层次化:可将一部分电路块创建成一个符号表示,用于层次设计,并可对子电路和整体电路仿真模拟。 5.模拟行为模型:对电路在实际应用中的可能遇到的情况,如温度变化及各部件参数漂移等,进行仿真模拟。

第一章用SaberSketch画电路图 在SaberSketch的画图工具中包括了模拟电路、数字电路、机械等模拟技术库,也可以大致分成原有库和自定义库。要调用库,在Parts Gallery中,通过对库的描述、符号名称、MAST模板名称等,进行搜索。 画完电路图后,在SaberSketch界面可以直接调用SaberGuide对电路进行模拟,SaberGuide的所有功能在SaberSketch中都可以直接调用。 ?启动SaberSketch SaberSketch包含电路图和符号编辑器,在电路图编辑器中,可以创建电路图。如果要把电路图作为一个更大系统的一部分,可以用SaberSketch将该电路图用一个符号表示,作为一个块电路使用。启动SaberSketch: ▲UNIX:在UNIX窗口中键入Sketch ▲Windows NT:在SaberDesigner程序组中双击SaberSketch图标 下面是SaberSketch的用户界面及主要部分名称,见图1-1: 退出SaberSketch用File>Exit。 ?打开电路图编辑窗口 在启动SaberSketch后,要打开电路图编辑窗口,操作如下:▲要创建一个新的设计,选择File>New>Design,或者点击快捷图标,会打开一个空白窗口。 ▲要打开一个已有的设计,选择File>Open>Design,或者点击快捷图标,

相关文档