当前位置:文档之家› 基于NS2的网络仿真

基于NS2的网络仿真

基于NS2的网络仿真
基于NS2的网络仿真

课设(三):基于NS2的网络仿真

一、课程设计目的

1、理解NS2的基本概念;

2、熟悉安装NS2的实验环境和基本操作;

3、仿真分析UDP通信协议;

4、学会生成NS2的Tcl脚本及仿真结果分析;

二、课程设计原理

1、UDP协议

(1)协议概述

UDP 是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。

(2)协议功能描述

UDP在IP数据报的头部仅仅加入了复用和数据校验(字段),UDP首部字段由4个部分组成,其中两个是可选的。各16位的源端口和目的端口用来标记发送和接受的应用进程,因为UDP不需要应答,所以源端口是可选的,如果源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度字段,用来指定UDP数据报包括数据部分的长度。

由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。由于UDP协议缺乏拥塞避免和控制机制,需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。UDP协议只在IP的数据报服务之上增加了很少的功能,这就是端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。另外,UDP协议应用程序可以是客户机,也可以是服务器程序,不必向TCP协议应用程序那样必须分别建立客户机程序和服务器程序。在远程控制软件中,如果在局域网内部传输屏幕信息,则使用UDP协议比较容易实现。但UDP协议不提供可靠性,它的可靠性是交给其他网络设备来解决。同时用UDP协议来传输的数据一般较小,它需要IP协议来为它对数据进行分段。

2、NS2概述

NS2(Network Simulator version 2,网络仿真软件第二版)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。目前NS2 可用于仿真各种不同的通信网络,已经实现的仿真模块有:网络传输协议,如TCP 和UDP;业务源流量产生器,如FTP、Telnet、Web CBR 和VBR;路由队列管理机制,如Droptai、RED和CBQ;路由算法,如Dijkstra,以及无线网络的WLAN,Ad hoc路由,移动IP 和卫星通信网络等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。

NS2使用C++和OTcl作为开发语言。NS2可以说是OTcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器用于计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组

件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器,它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。由于效率的原因,NS2将数据通道和控制通道的实现相分离,为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对OTcl解释器可见。

NS2结构图

3、Tcl介绍

Tcl的全称是Tool Command Language,属于脚本语言的一种,它具有可以依照原型进行快速开发、脚本编程、GUI编写和测试方面应用广泛的特点。在NS2中为网络进行参数配置的脚本都是用Tcl编写而成的。Tcl主要由语言部分和解释器部分两部分组成,相对其他脚本语言而言,Tcl不但编程能力强劲而且能够方便地向应用程序中添加Tcl解释器,从而大幅提高编程效率。Tcl只支持“字符串”一种数据结构,一种分割符就是空格。

Tcl本身不提供面向对象的支持,但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl,Incr Tcl 等。另外SNIT 扩展本身就是用Tcl写的。使用最广泛的Tcl扩展是TK。TK提供了各种OS平台下的图形用户界面GUI。另一个流行的扩展包是Expect,Expect提供了通过终端自动执行命令的能力,例如(passwd,ftp,telnet等命令驱动的外壳)。OTcl 是面向对象的Tcl,它在Tcl中增加了对象的支持,如类的定义、继承与封装、构造和析构函数等。

4、NS2的仿真过程

进行网络仿真前,首先分析仿真涉及哪个层次,NS2仿真分两个层次:一个是基于OTcl编程的层次,利用NS2已有的网络元素实现仿真,无需修改NS2本身,只需编写OTcl脚本;另一个是基于C++和OTcl编程的层次,如果NS2中没有所需的网络元素,则需要对NS2进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。

假设用户已经完成了对NS2的扩展,或者NS2所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。

(3)配置业务量模型的参数,从而确定网络上的业务量分布。

(4)设置Trace对象。NS2通过Trace文件来保存整个模拟过程,仿真完后,用户可以对Trace文件进行分析研究。

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。(6)用NS2解释执行刚才编写的OTcl脚本。

(7)对Trace文件进行分析,得出有用的数据。

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

如下图为NS2的仿真流程图:

三、课程设计具体内容

1、实验环境

硬件为联网的PC机,软件为ubuntu12.04.2系统,ns-allinone-2.3,所使用的开发语言是Otcl,C++。

2、利用NS2仿真UDP通信协议

(1)编写Tcl脚本文件

set ns [new Simulator]

#建立新的模拟对象simulator

set haha [open tan.tr w]

$ns trace-all $haha

set namhaha [open tan.nam w]

$ns namtrace-all $namhaha

#设定变量haha指向tan.tr文件,tan.tr文件用来记录模拟过程的trace数据;设定变量namhaha指向tan.nam文件,tan.nam文件用来记录nam的trace数据;

proc finish {} {

global ns haha namhaha

$ns flush-trace

close $haha

close $namhaha

exec nam tan.nam &

exit 0

} #建立一个finish过程,用来关闭两个trace文件,并在模拟结束后调用nam程序;

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

#创建4个节点n0,n1,n2,n3;

$ns duplex-link $n0 $n2 3Mb 15ms DropTail

$ns duplex-link $n1 $n2 3Mb 15ms DropTail

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

#在n0和n2,n1和n2之间各建立一条双向链路,设定链路的带宽为3Mbit/s、

时延为15ms,队列类型为DropTail;在n2和n3之间建立一条双向链路,设定链路的带宽为1Mbit/s、时延为45ms,队列类型为DropTail;

$ns duplex-link-op $n0 $n2 orient right-down

$ns duplex-link-op $n1 $n2 orient right-up

$ns simplex-link-op $n2 $n3 orient right

#Set Queue Size of link (n2-n3) to 10

$ns queue-limit $n2 $n3 20

set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0 #创建一个UDP Agent0,并将其绑定到n0节点上;set udp1 [new Agent/UDP]

$ns attach-agent $n1 $udp1 #创建一个UDP Agent1,并将其绑定到n1节点上;set null [new Agent/Null]

$ns attach-agent $n3 $null

#创建一个Null Agent,并将其绑定到n3;Null是一种数据接收器,负责接收CBR发送的数据;

$ns connect $udp0 $null #将udp0和null这两个Agent连接起来;

$ns connect $udp1 $null #将udp1和null这两个Agent连接起来;

set cbr0 [new Application/Traffic/CBR]

$cbr0 attach-agent $udp0

$cbr0 set packetSize_ 500

$cbr0 set rate_ 0.01mb

set cbr1 [new Application/Traffic/CBR]

$cbr1 attach-agent $udp1

$cbr1 set packetSize_ 500

$cbr1 set rate_ 0.01mb

#创建CBR流量发生器,设定分组大小为500B,然后将其绑定到udp上;

$ns at 0.2 "$cbr0 start"

$ns at 20 "$cbr0 stop"

$ns at 0.2 "$cbr1 start"

$ns at 20 "$cbr1 stop"

#告知simulator对象在0.2s时启动cbr0和cbr1,即开始发送数据,在20s时停止发送;

$ns at 22 "finish" #告知simulator对象在22s时调用finish过程;

$ns run #开始模拟;

(2)仿真结果

(3)Trace文件分析

仿真结束后会产生两个档案,一个是tan.nam,这是给NAM用的,用来把仿真的过程用可视化的方式呈现出来,这样可以用“看”的方式去了解封包传送是如何从来源端送到接收端。另一个档案是tan.tr,这个档案记录了仿真过程中封包传送中所有的事件。

抽取Trace文件中第一、四、五进行分析:

第一行:+ 0.2 0 2 cbr 500----------0 0.0 3.0 0 0

分析:有一个封组id为0,资料流id为0,分组序列号为0,长度为500B,分组类型为CBR,它是从源地址0.0要到目的地3.0,在时间0.2秒的时候,从节点0进入了节点2的队列中。

第四行:- 0.2 1 2 cbr 500---------0 1.0 3.0 0 1

分析:有一个封组id为1,资料流id为0,分组序列号为0,长度为500B,分组类型为CBR,它是从源地址1.0要到目的地3.0,在时间0.2秒的时候,从节点1开始离开至节点2。

第五行:r 0.216333 0 2 cbr 500---------0 0.0 3.0 0 0

分析:有一个封组id为0,资料流id为0,分组序列号为0,长度为500B,分组类型为CBR,它是从源地址0.0要到目的地3.0,节点2在0.216333秒收到一个从节点0发出的包。

四、课程设计结论及心得

在开始实验的时候,准备参照PPT上面介绍的方法,使用NSG2自动生成Tcl 脚本,但是由于安装JRE的过程出现了一些问题,没有成功。最后通过编写脚本文件实现对UDP通信协议的网络仿真,由于对NS2了解还不够深刻,只能编写最基本的语句,进行简单的nam演示模拟。但是通过这次课程设计,对NS2网络仿真的功能模块、仿真元素及仿真过程有了初步的了解,达到了自己对实验学习的初衷。

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

网络模拟器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仿真模块实现了模拟器与实际网络的连接功能,

NS2网络仿真实验

NS2网络仿真实验 实验目的: 通过修改NS2的TCP协议代码,来简单的观察窗口阈值的不同算法对网络资源利用率的影响。 实验步骤: 1. 实验环境搭建 (1)系统环境: 虚拟机:virtrulbox; 操作系统:linux/ubuntu 10.04 工作目录:/home/wangtao/workspace/ (2)NS2安装与使用: 下载NS2软件包到工作目录, 地址https://www.doczj.com/doc/5a3595624.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.doczj.com/doc/5a3595624.html,代码 vim /home/wangtao/workspace/ns-allinone-2.33/tcp/https://www.doczj.com/doc/5a3595624.html, (将窗口阈值一半变为的窗口阈值1/3——wt_https://www.doczj.com/doc/5a3595624.html,) 第一处: …… if (cwnd_ < ssthresh_) slowstart = 1; if (precision_reduce_) { //halfwin = windowd() / 2; //wangtao halfwin = windowd() / 3;

(完整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提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

网络性能的仿真+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脚本中加入一些简单的语句,这些文件中就

浅析Opnet,Ns2,Matlab网络仿真工具

浅析Opnet,Ns2,Matlab网络仿真工具 【摘要】网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。 【关键字】网络仿真;OPNET;NS2;MATLAB 引言 随着网络结构和规模越来越复杂化以及网络的应用越来越多样化,单纯地依靠经验进行网络的规划和设计、网络设备的研发以及网络协议的开发,已经不能适应网络的发展,因而急需一种科学的手段来反映和预测网络的性能,网络仿真技术应运而生。网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。各种网络仿真工具在此背景下应运而生。本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。 基本情况及特点分析 1.OPNET OPNET公司最初只有一种产品OPNET Modeler,到目前已经拥有Modeler、ITGuru、SPGuru、WDMGuru、ODK等一系列产品。 对于网络的设计和管理,一般分为3个阶段:第1阶段为设计阶段,包括网络拓扑结构的设计,协议的设计和配置以及网络中设备的设计和选择;第2阶段为发布阶段,设计出的网络能够具有一定性能,如吞吐率、响应时间等等;第3阶段为实际运营中的故障诊断、排错和升级优化。而OPNET公司的整个产品线正好能面向网络研发的不同阶段,即可以作网络的设计,也可以作为发布网络性能的依据,还可以作为已投入运营的网络的优化和故障诊断工具。OPNET公司也是当前业界智能化网络管理分析解决方案的主要提供商。 OPNET的主要特点: 层次化的网络模型。使用无限嵌套的子网来建立复杂的网络拓扑结构。 简单明了的建模方法。Modeler建模过程分为3个层次:过程(process)层次、节点(Node)层次以及网络(Network)层次。在过程层次模拟单个对象的行为,在节点层次中将其互连成设备,在网络层次中将这些设备互连组成网络。几个不同的网络场景组成“项目”,用以比较不同的设计方案。这也是Modeler建模的重要机制,这种机制有利于项目的管理和分工。

网络分析与测试实验2_使用NS2模拟有线网络

网络分析与测试实验 XXX XXXXXXXX 网络工程2010-2班 实验二使用NS2模拟有线网络 一、实验目的 深入学习NS2的使用方法,学习使用NS2模拟有线网络的开发方法。二、实验内容 (1)构建有线网络的基本拓扑; (2)配置网络节点、链路和协议的参数; (3)使用Tcl脚本语言描述配置信息; (4)实现有线网络的模拟,分析不同配置下的输出结果。 三、实验步骤 1.构建有线网络的基本拓扑 2. 这个网络拓扑定义了6个节点,每个节点之间的连接设置成双工格式,在0,1节点设置两个UDP发送节点,在4,5节点设置两个agent 接收节点,设置传送的数据包大小为1500,然后再在UDP连接中定义一个数据流量发送器(包括它的包的大小、速率大小、停止时间和开始时间),最后定义一个finish函数来完成清理现场的工作,进而完成网络节点、链路和协议的参数的配置。

3.tcl的源程序: set val(stop) 5.0 ;# time of simulation end #Create a ns simulator set ns [new Simulator] #Open the NS trace file set tracefile [open out.tr w] $ns trace-all $tracefile #Open the NAM trace file set namfile [open out.nam w] $ns namtrace-all $namfile #Create 6 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] #Createlinks between nodes $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail $ns queue-limit $n0 $n2 10 $ns duplex-link $n1 $n2 2.0Mb 10ms DropTail $ns queue-limit $n1 $n2 10 $ns duplex-link $n4 $n3 2.0Mb 10ms DropTail $ns queue-limit $n4 $n3 10 $ns duplex-link $n3 $n2 1.0Mb 20ms DropTail $ns queue-limit $n3 $n2 10 $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail $ns queue-limit $n3 $n5 10 #Give node position (for NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n4 $n3 orient left-down $ns duplex-link-op $n3 $n2 orient left $ns duplex-link-op $n3 $n5 orient right-down #Setup a UDP connection set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set null2 [new Agent/Null]

基于NS2的网络仿真

课设(三):基于NS2的网络仿真 一、课程设计目的 1、理解NS2的基本概念; 2、熟悉安装NS2的实验环境和基本操作; 3、仿真分析UDP通信协议; 4、学会生成NS2的Tcl脚本及仿真结果分析; 二、课程设计原理 1、UDP协议 (1)协议概述 UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。 (2)协议功能描述 UDP在IP数据报的头部仅仅加入了复用和数据校验(字段),UDP首部字段由4个部分组成,其中两个是可选的。各16位的源端口和目的端口用来标记发送和接受的应用进程,因为UDP不需要应答,所以源端口是可选的,如果源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度字段,用来指定UDP数据报包括数据部分的长度。 由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。由于UDP协议缺乏拥塞避免和控制机制,需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。UDP协议只在IP的数据报服务之上增加了很少的功能,这就是端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。另外,UDP协议应用程序可以是客户机,也可以是服务器程序,不必向TCP协议应用程序那样必须分别建立客户机程序和服务器程序。在远程控制软件中,如果在局域网内部传输屏幕信息,则使用UDP协议比较容易实现。但UDP协议不提供可靠性,它的可靠性是交给其他网络设备来解决。同时用UDP协议来传输的数据一般较小,它需要IP协议来为它对数据进行分段。 2、NS2概述 NS2(Network Simulator version2,网络仿真软件第二版)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。目前NS2可用于仿真各种不同的通信网络,已经实现的仿真模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、Web CBR和VBR;路由队列管理机制,如Droptai、RED和CBQ;路由算法,如Dijkstra,以及无线网络的WLAN,Ad hoc路由,移动IP和卫星通信网络等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。 NS2使用C++和OTcl作为开发语言。NS2可以说是OTcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器用于计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组

NS2与网络模拟学习总结报告

HUNAN CITY UNIVERSITY NS2与网络模拟学习总结 报告 专业:网络工程 学生姓名: 班级学号: 2015年 11月 5日

1. 所学章节重点内容概要 第一章:NS2简介 一.NS2(Network Simulator - Version2) 1.由C++和OTcl编写 2.面向对象的,事件驱动的网络模拟器。 ?UC Berkeley设计 ?多用于多播和MAC层协议仿真 ?:NS2安装 ?在NS2是在Unix平台下运行的 ?NS2的使用 ?Windows平台 1.需先安装Cygwin,模拟Unix环境 2.安装虚拟机,在虚拟的Unix或Linux环境下安装NS2 ?:TCL语法 ?TCL简介 1.TCL-”tickle” 2.所有平台都支持

3.NS2中主要描述网络环境和参数 ?TCL基本语法 1.唯一数据类型:字符串 2.字符串的三中形式(命令,表达式,列表) 3.注释:# ?:NS2语法 ?建立在Tcl脚本语言之上 ?拥有自己的库 ?Tcl脚本标准模板 ?编写一个简单的Tcl脚本 1.添加两个节点,一条连接 2.传输数据 ?简单网络拓扑结构和模拟实例 ?~第九章:NS2结果分析 ?跟踪文件Out.tr 1.NS2执行过程中会自动产生一个跟踪文件 2.记录数据包(分组)的传输情况

?动画演示工具NAM 1.NAM基于Tcl/Tk的动画演示工具 2.NAM进行演示 3.基本命令格式 4.NS2中NAM常用命令 ?分析工具Awk 1.Awk是一种程序语言,具有一般程序语言的常见功能 2.Awk具备一些特殊的内在功能,使其擅长处理数据记录(Record),字段(Field)型的数据 3.常用来处理和分析NS2的跟踪文件 4.Awk在读入数据后会把每个记录的每个字段的值存入字段变量 ?绘图工具Xgr aph,Gnuplot 1.XGraph是NS2自带的简单绘图工具 2.Gnuplot是一个命令行的交互式绘图工具 ?:模拟器(Simulator) ?类Simulator

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提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

基于NS2软件 的网络协议仿真

基于网络模拟软件NS2的网络协议仿真 【摘要】:网络模拟是网络协议性能及研究中非常重要的一个组成部分。本文介绍了网络模拟软件 NS2 的结构和特点以及仿真过程,并实例介绍了基于NS2的网络协议仿真。 【关键词】:NS2;TCP;UDP;路由;仿真 一、引言 网络模拟是网络协议性能及研究中非常重要的一个组成部分,算法是否合理、是否具有实用价值、是否能够提高网络的性能等都需要通过实验证明。由于在真实的网络环境中进行实践验证耗资巨大,多数高校和科研机构并不具备完整有效的实验环境,而且真实网络中实验数据的收集和分析也有一定困难。 网络仿真软件通过在计算机上建立一个虚拟的网络环境来实现对真实网络环境的模拟,科研人员在这个平台上不仅能对网络的通信、设备、协议、结构以及应用进行研究,还能对网络的性能进行分析和评估。仿真软件大大提高了网络设计开发的效率,同时也降低了费用和风险,已经成为研究中不可或缺的工具。 二、NS2 的结构和特点 目前,使用较多的网络仿真软件有OPNET,Matlab,NS2 和GloMoSim 等。选择免费且开放源代码的NS2作为仿真平台,是因为该平台是一种离散事件网络仿真平台,可以运行在Linux或Windows操作系统上。作为一种可扩展、易配置、可编程的事件驱动的网络仿真软件,NS2能够近乎真实地在各个层次上模拟网络运行,并支持多种协议。其主要功能包括以下几点。 一)灵活的仿真环境 作为一款开源软件,NS2所有源代码公开,任何人都可以获得、使用和修改其源代码。这对于利用NS2来构建特殊的网络仿真实验环境非常方便和迅速。二)结果分析及再现容易 研究人员通过配置环境参数获得理想的网络环境,即可实时跟踪并记录关键节点的重要信息,从而获得网络性能参数,并可以随时再现某些特殊情况,这在真实网中是难以做到的。

NS2网络模拟(精)

The application of wireless Ad-hoc network [Hospital mobile server] Lin Qiu Department of Mathematics&Computing 2009University of South Queensland Queensland,Australia Supervised by Dr.ZhongWei,Zhang dan_n2003@https://www.doczj.com/doc/5a3595624.html, ABSTRACT Wireless ad-hoc networks have attracted many applications in part decade due to its feature of being wireless and with-out?xed nodes as router or gateway.This type of network has an important potential of being token in the healthcare or hospitals,where the physical connectivities is hard,or not economical.In this paper,we simulate a wireless ad-hoc network by using NS2,inspect its performance under many di?erent settings and models. General Terms Wireless ad-hoc network Keywords

相关主题
文本预览
相关文档 最新文档