`

NS2 介绍

阅读更多

1、NS2简介

 

  NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。

 

  然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。

 

  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脚本。

 

  假设用户已经完成了对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++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

 

 

 

3、NS2的功能模块

  NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。

 

  (1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

 

  (2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。

 

  (3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。

 

  (4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。

 

  (5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。

 

 

  

4、NS2的软件构成


  NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTcl解释器作为前端;Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。

  

 

 

5、NS现有的仿真元素

 

  从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:

 

  (1)网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。

 

  (2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如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(通信量接收并维护一些接收数据的统计)。

 

  (3)网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。

 

  (4)在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。

 

  (5)通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。

 

 

 

参考资料:

1.NS2手册: http://140.116.72.80/~smallko/ns2/ns2.htm
2.一篇介绍NS2的很好的文章:http://blog.sina.com.cn/s/reader_4a5f138701000bby.html
3.比较好的论坛: http://www.netforum.com.cn/forum_topics.asp?FID=16&PN=1
4.一个NS2相关的blog: http://hi.baidu.com/vvfang/blog/category/Ns2%20Related
5.一个NS2 无线trace分析工具: http://ns2trana.googlepages.com/

分享到:
评论

相关推荐

    NS2介绍--PPT 适合初学者

    【NS2介绍】 NS2,全称Network Simulator 2,是一个广泛用于计算机网络和通信系统仿真的开源软件。这个工具对于初学者来说是理想的学习平台,因为它提供了丰富的功能,可以模拟复杂的网络行为并理解协议的工作原理。...

    NS2软件介绍

    关于NS2的一些介绍

    ns2大全一些基本的介绍,资料等

    Ns2(Network Simulator 2)是一款广泛用于网络研究和教学的开源仿真软件。它允许用户模拟网络协议和系统,理解其行为,以及测试新的网络算法。这个压缩包包含的“新手学习篇”很可能是对Ns2的基础教程和指导,非常...

    ns2 tutorial introduction

    一、ns2介绍 ns2是一个强大的网络仿真软件,用于模拟各种网络协议和网络行为。它支持TCP/IP协议栈和其他网络模型,使得研究人员和工程师能够测试新的网络算法和设计,无需实际部署硬件。尽管有版本1,但这里主要讨论...

    ns2 zigbee 树状网络仿真

    1. **ns2介绍** ns2是一款开源的网络模拟器,主要为研究者和开发者提供了一个平台,可以模拟各种网络拓扑结构和通信协议。它支持TCP/IP、UDP、MAC层协议,以及自定义协议的实现。利用ns2,用户可以通过编写脚本语言...

    ns2机制介绍 ppt

    我见过的解释的最好的一个ppt 有动画 效果很好 不明白的可以给我发邮件lzqlgq@gmail.com

    introduce to NS2

    ### NS2介绍与应用 #### 一、NS2概述 NS2(Network Simulator 2)是一种开源的事件驱动网络模拟器,专为计算机通信网络的研究而设计。自1989年问世以来,NS2在业界、学术界及政府机构中获得了极大的关注。通过多年...

    a iintroductio to ns2

    ### NS2介绍与应用 #### 一、背景需求 学习NS2模拟器之前,学生需具备C/C++语言的基础知识。这是因为NS2是基于这两种语言编写的:内核部分使用C++实现,而用户界面则通过OTcl(一种带有面向对象特性的Tcl脚本语言...

    NS2仿真软件详细介绍

    ### NS2仿真软件详细介绍 #### NS2概述 NS2(Network Simulator version 2)是一款开源的网络仿真软件,主要用于研究和开发新型网络协议和技术。它由加州大学伯克利分校开发,采用C++和OTcl两种语言编写。NS2不仅...

    ns2-introduction

    【ns2介绍】 Ns-2 是一个广泛使用的网络模拟器,尤其在研究和教育领域,它为初学者提供了直观且易理解的学习平台。这个介绍主要通过PPT的形式,旨在帮助用户理解并熟悉Ns-2的基本概念、操作以及扩展功能。 Ns-2 的...

    NS2的几个PPT打包下载

    【NS2介绍】 NS2(Network Simulator 2)是一个广泛使用的网络模拟工具,主要用于研究和教育目的。它是一个开源项目,由美国加州大学洛杉矶分校(UCLA)和国际计算机科学研究所(ICSI)共同开发。NS2允许研究人员...

    基于NS2移动网络仿真研究

    1. **NS2介绍**:NS2的基本架构、功能和优势,以及它如何支持网络协议如TCP/IP、路由协议(如AODV、DSDV等)和无线通信模型的仿真。 2. **移动网络仿真**:移动网络的特点,如移动性管理、漫游、多跳通信等,以及...

    ns2 latest manual

    - **第3章 - OTcl 连接**:详细介绍了如何通过 OTcl 与 ns2 进行交互,包括概念概述、代码结构、Tcl 类等。 - **Tcl 类**:介绍了如何获取 Tcl 实例的引用、调用 OTcl 过程、传递结果到解释器等。 - **TclObject ...

    NS2资料大全

    "Tcl_tk组合教程.pdf"介绍了Tcl/Tk语言,这是NS2的主要脚本语言,用于编写模拟场景和控制网络行为。掌握Tcl/Tk是使用NS2的基础。 《Ns_simulator_en_for_beginners.rar》可能是针对英语用户的NS2初学者教程,包含了...

    NS2学习资料

    1. NS2简介.pdf:对NS2的基本介绍,包括它的历史、特点和应用领域。 2. NS2_Tutorial.pdf:详细的NS2教程,指导用户如何使用NS2进行网络仿真。 3. NS2_7DaysQuickStart.pdf:七天速成教程,每天一个主题,快速上手NS...

    ns2简单工具介绍(初学者必下)

    "ns2简单工具介绍" ns2是一款功能强大且广泛应用的网络仿真软件,对于网络仿真和性能分析非常重要。作为初学者,掌握ns2的基本使用方法和工具是非常重要的。本文档将为读者提供一个简要的ns2工具介绍,帮助初学者...

    ns2中文手册

    在ns2中,代理(agents)是模拟网络流量的基本构成单位,这部分内容可能会介绍如何在ns2中设置和使用不同的网络代理。 - ping...这部分内容可能在讨论如何使用ping命令在ns2中进行网络状态的检测和调试。 由于文件...

    非常好的无线网络ns2仿真教程

    无线网络ns2仿真教程是计算机科学领域中一个重要的学习资源,尤其对于研究和理解网络协议、性能分析以及网络设计有着显著的价值。ns-2(Network Simulator 2)是一款开源的网络模拟器,广泛用于学术界和工业界进行...

    NS2_install_step.rar_NS2 安装包_doc_http connection ns2_installatio

    详细介绍了NS2的安装过程。 内容节选: ... 选择从网络安装,建议使用默认安装路径c:\cygwin,选择下载安装包存放的路径,选择直接连接,任意选择一个(可是试试看哪个连接网速快)下载地点(Download Site)。...

    ns2学习笔记(学习ns2的经验总结)

    - **NS的目录结构**:这部分内容介绍了NS2项目的目录结构,有助于开发者更好地定位资源和文件。 - **扩展的方法**: - **第一步: Export C++ Class to Tcl**:介绍如何将C++类导出到TCL,以便在OTCL脚本中使用。 -...

Global site tag (gtag.js) - Google Analytics