`

[Simulator] NS2简介及功能模块

阅读更多

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

 

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

 

 

1NS2简介

NS2Network Simulator, version 2)是一种面向对象的网络仿真器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCPUDP;业务源流量产生器,比如FTPTelnet,Web CBRVBR;路由队列管理机制,比如Droptail,REDCBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。NS2 使用C++Otcl作为开发语言。 NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费的仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用OtclC++编写的。由于效率的原因,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++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

 

 

2NS2的功能模块

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

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

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

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

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

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

 

 

3NS2的软件构成

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

 

 

4NS现有的仿真元素

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

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

⑵在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NSTCP代理,发送代理有:TCPTCP/RenoTCP/VegasTCP/Sack1TCP/FACKTCP/FULLTCP等,接收代理有:TCPSINKTCPSINK/DELACKTCPSINK/SACK1TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。

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

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

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

分享到:
评论

相关推荐

    Introduction to Network Simulator NS2

    NS2通过持续的研究与改进,不断丰富其功能模块,包括路由、传输层协议、应用等多方面内容。 ### 知识点二:NS2的主要特点与用途 1. **开放源代码**:NS2是一款完全开源的软件,这意味着用户不仅可以免费使用它,还...

    作者配合 Introduction to Network Simulator NS2 原书提供的课件

    5. **14-NewModules.pdf**:新模块(New Modules)可能是关于如何扩展NS2,引入新的网络协议或功能的介绍,可能包括自定义协议的编写和现有模块的修改。 6. **04-OTcl.pdf**:如上所述,OTcl是NS2的主要编程语言,...

    ns2 学习之Introduction to Network Simulator NS2,springer原版书。比官方文档好很多的学习资料.

    为了实现这些高级功能,研究人员需要将额外的模块集成到NS2中。这部分内容涉及如何扩展NS2的功能,包括但不限于: - **自定义模块开发**:如何开发自己的网络协议模块。 - **高级配置与优化**:如何对NS2进行更深...

    ns3 network simulator

    ns3 network simulator

    NS-2.rar_NS-2 ppt_network simulator 2_ns

    NS-2(Network Simulator 2)是一个广泛使用的开源网络模拟工具,尤其在学术界和研究领域。本PPT详细介绍了NS-2的基础知识,帮助初学者快速入门并理解其核心概念和工作原理。 NS-2的核心特性包括: 1. **事件驱动...

    NS2.rar_ns2_ns2 UDP_ns2+tcp_新增模块

    NS2,全称为Network Simulator 2,是一款广泛用于网络协议和系统设计、分析的开源仿真工具。这个压缩包“NS2.rar”包含了针对NS2的特定模块更新,特别是关于UDP(用户数据报协议)和TCP(传输控制协议)的测试。在IT...

    PPT of Introduction to Network Simulator NS2

    14-NewModules.pdf可能介绍了如何添加和自定义新的模块到NS2,这对于扩展模拟功能或者研究新协议至关重要。 最后,09-Helper.pdf可能涵盖了NS2的一些辅助工具和库,这些工具可以帮助简化模拟配置,提供更高效的分析...

    ns3水声通信模块

    ns3(Network Simulator 3)是一款强大的开源网络模拟软件,广泛用于学术界和工业界的网络研究。该软件允许研究人员和工程师模拟各种网络环境,从传统的无线通信到新兴的物联网技术,甚至是特殊环境下的通信方式,如...

    Ns3 internet simulator网络仿真器简介

    该仿真器支持Linux、MacOS和Cygwin平台,并且ns-3的最新版本为ns-3.22,发布于2015年2月5日。其官方资助合作伙伴包括华盛顿大学、INRIA索非亚安蒂波利斯分部和乔治亚理工学院(亚特兰大分校)。该仿真器的开发得到了...

    ns2 latest manual

    #### 一、ns2简介与背景 - **ns2 (Network Simulator 2)** 是一个广泛使用的网络模拟器,由加州大学伯克利分校(UC Berkeley)、劳伦斯伯克利国家实验室(LBL)、南加州大学信息科学研究所(USC/ISI)以及施乐帕洛...

    NS2学习资料

    NS2,全称为Network Simulator 2,是一款广泛用于网络协议和系统设计、分析的开源仿真工具。它允许研究人员和学生在无需实际硬件的情况下模拟复杂的网络环境,进行性能评估和调试。NS2以其强大的功能和灵活性,深受...

    wimax.tar.gz_802.16 ns2_NS2 wimax patch_ns2 3G_ns2802.16_wimax模块

    在本压缩包文件中,“wimax.tar.gz”包含了用于网络仿真工具ns-2(Network Simulator 2)的802.16 WiMax扩展模块。 ns-2是一个流行的开源网络模拟器,用于研究和教学目的,它允许研究人员模拟和分析各种网络协议和...

    NS2资料大全

    "ns Manual.pdf"是NS2的官方手册,包含了NS2的所有命令、函数和模块的详细说明,是查询NS2功能和解决疑难问题的重要参考资料。 《跟我一起写 Makefile.PDF》则指导用户如何编写Makefile,这对于编译和管理NS2项目是...

    NS( NS2 ) 学习资料全集2

    NS(Network Simulator 2)是一款广泛使用的网络模拟软件,它为网络研究人员提供了强大的工具来模拟和分析各种网络协议和拓扑结构。这个“NS2学习资料全集2”压缩包显然是一个包含多份关于NS2学习资源的集合,旨在...

    NS2网络模拟器的原理和应用_part2

    本书要介绍的是由UC Berkeley设计、起初由VINT Project团队维护的一套网络仿真软件NS2(Network Simulator-Version 2,简称NS2)。NS2是一个面向对象的、用离散事件驱动的、利用C++语言和OTcl语言编写的网络模拟器,...

    NS2下protoname路由协议源码及实现方法

    在计算机网络领域,模拟软件NS2(Network Simulator 2)被广泛用于研究和设计网络协议。这个工具允许开发者和研究人员创建、配置和分析网络场景,包括各种路由协议。本篇文章将详细探讨如何在NS2中实现和理解...

    NS2手册英文版

    NS2,全称为Network Simulator 2,是一款广泛用于网络研究的开源仿真工具。它允许研究人员模拟各种网络协议和系统,从而分析性能、测试新概念或优化现有设计。这份"NS2手册英文版"是NS2用户的重要参考资料,包含了NS...

    ns2的WiMax补丁 ns-nist-wimax.zip

    在计算机网络模拟领域,NS-2(Network Simulator - 2)是一个广泛使用的开源工具,用于研究和教学目的,特别是在网络协议和系统设计方面。NS-2提供了丰富的功能和模型,但可能不包含所有最新的技术特性,如WiMax。在...

    NS2网络模拟器的原理和应用_part5

    本书要介绍的是由UC Berkeley设计、起初由VINT Project团队维护的一套网络仿真软件NS2(Network Simulator-Version 2,简称NS2)。NS2是一个面向对象的、用离散事件驱动的、利用C++语言和OTcl语言编写的网络模拟器,...

Global site tag (gtag.js) - Google Analytics