NS2简单介绍

article/2025/10/10 1:28:42

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脚本。整个仿真的过程简图如下图所示:


假设用户已经完成了对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仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。
(1)事件调度器:目前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,根据追踪文件产生通信量。





http://chatgpt.dhexx.cn/article/PyrXQaM3.shtml

相关文章

NS2网络仿真

NS2安装与配置TCP/UDP比较仿真静态/动态路由仿真 1.安装与配置 1.1更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更新已经安装的包 sudo apt-get dist-upgrade #更新软件,升级系统 1.2安装ns2需要的几个包 sudo apt-get install build-ess…

ns2安装详细过程与网络仿真

ns2安装详细过程与网络仿真 博客分类: Networks TclLinuxUnixGCCVC 简单的说,NS-2是一个网络模拟器,所以经常被用到网络课的教学中。 NS-2是OpenSource的,最早的版本是在linux/unix下运行的,后来有了wi…

NS2教程

柯老师的NS2新网址 Due to some reasons, my NS2 website is sometimes donw and unavailable for many users. Therefore, I provide another backup website. 1. NS2 http://csie.nqu.edu.tw/smallko/ns2/ns2.htm 2. old_NS2 (backup of NS2 Learning Guide) http://csie.n…

ns2安装和若干问题的解决方法

文章目录 1. 安装与配置2. 安装nam3. 配置环境变量4. 检查是否能够成功运行参考资料 在安装ns2的过程中遇到了很多问题,为了记录这些问题和为同样遇到这些问题的朋友提供思路,写下这篇博文。 安装ns2和nam主要分为如下几个步骤: 安装与配置…

Linux下安装ns2

最近为了项目需要用到NS2软件用于网络仿真实验,从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功,最后放弃了,回到了Linux系统,又折腾了两天终于安装测试成功!(安装其实蛮…

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录,网上的企业微信扫码都是基于自建应用的扫码登录,对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员,可通过单点登录机制,登录到第三方网站。第三方可通过接口,…

微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

https://www.v2ex.com/amp/t/390333 微信开放平台登录与微信公众平台授权登录区别在哪? 2017-09-13 12:05:41 08:00 xoxo419 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录? 问: 两者区别在哪? 壹号店 http://m.yhd.com 微信第三方登录属…

Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

在微信开放平台注册移动应用,才能在APP里实现「微信登录」和「微信支付」。 近期因为业务需要,需要修改应用的包名,因此在微信开发平台重新提交了应用「基本信息」修改申请,顺便吐槽下,现在微信开发平台对应用审核真是…

微信第三方登录redirect_uri 参数错误

微信第三方登录 先说解决方案:redirect_uri 参数错误 在开放平台设置好回调地址,例如地址是 www.niezhiliang.com 那么在生成二维码的时候回调只能写该域名下的地址 在申请二维码页面回调地址(你的redirect_uri) 还必须加上http或者https,…

微信第三方登录接口

随着手机微信的崛起,腾讯发布的微信联登确实很诱惑pc端的伙伴们,现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码&…

微信 第三方登录

转自:http://www.cnblogs.com/linjunjie/p/6378166.html#3902595 从http://www.cnblogs.com/v-weiwang/p/5732423.html 申请开发者账号之内的就不累赘了,网上一大堆: 说下需求,一个网页要在三类容器运行,公司app&#…

微信第三方登录

微信第三方登录 步骤: 1.申请你的AppID 请到微信开放平台https://open.weixin.qq.com/注册成为开发者,然后创建应用并提交审核,只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下: 在build.gradle文件…

流程图了解微信第三方登录

1.首先是,浏览器显示微信登录 2.用户扫描,发送请求到微信服务器,前端也会发送一个请求到自己的后台服务器,后台服务器提供微信服务器获取第三方验证授权地址,携带回调路径 3.微信服务器验证成功,返回code…

Oracle官网下载JDK

进入Oracle官网:https://www.oracle.com/index.html 1、选择support(支持)software Download 2、选择 java 3、选择jdk 4、拉到底选择java archive(档案文件) 5、选择要下载的版本

解决JDK官网下载龟速的问题

在JDK的官网下载JDK时还需要登录Oracle 且下载的时候那速度相当缓慢 可以使用华为的镜像下载,超快的 下载仓库地址:x​​​​​​​ Index of java-local/jdk

如何在官网下载java JDK

1.打开Oracle官网,准备下载java JDK (下载时需要使用注册用户登陆,可以免费注册) 官网地址:http://www.oracle.com/ 登录Oracle账号 选择适合自己的JDK版本 选择适合的版本 勾选 下载

JDK1.8u162以及JDK1.8所有历史版本官网下载地址

很多网友想看JDK1.8里面所有的版本,今天我就给大家带来了所以JDK1.8版本的官方下载地址,其中包括Windows版本和Linux版本 JDK1.8所有版本官网下载链接 Java Archive Downloads - Java SE 8 Attention!!! Java Archive | Oraclehttps://www.oracle.c…

JDK 的 ORACLE 官网下载步骤

下面以下载 jdk-8u181-linux-x64.tar.gz 为例,说明下在 ORACLE官网下载的具体步骤 1、进入oracle官网–>Resource–>Software Downloads,如下截图: 2、进入页面后,下滑选择“java”,然后点击“Java(JDK) for De…

eclipse jdk官网下载不了

最近在学习java的简单语法,在下载eclipse时受挫,通过浏览器怎么都下载不下来。 最后,我是通过迅雷下载的,速度杠杠滴。哈哈,莫名给迅雷打个call。 1、eclipse下载地址:https://www.eclipse.org/downloads…

JDK官网下载与安装过程

一、JRE与JDK介绍 java是当前比较流行的一种编程语言,当我们开始学习java的时候肯定会先要安装jdk,然后进行环境变量控制。 JRE(Java Runtime Environment ) Java运行环境,用来运行JAVA程序的。 JDK(Java Development Kit) Java开发工具包&…