仿真

简介:  进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。

 进行网络仿真前,首先分析仿真涉及哪个层次,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仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。

⑴事件调度器:目前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,根据追踪文件产生通信量。

目录
相关文章
|
4月前
|
编解码 网络协议 前端开发
OFDM深入学习及MATLAB仿真(一)
OFDM深入学习及MATLAB仿真
504 1
|
4月前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
189 1
支路电气介数的matlab仿真,并对比HVDC,FACTS-TCSC,FACTS-UPFC
**摘要:** 研究了MATLAB中支路电气介数的仿真,对比了HVDC、FACTS-TCSC和FACTS-UPFC的影响。通过在不同线路应用这些模型,分析电气介数的分布。仿真结果显示,节点/支路的电气介数符合幂律分布,揭示关键节点和支路。使用MATLAB2022a进行计算,核心程序涉及电力系统图论分析。电气介数衡量支路在功率传输中的重要性,高介数支路对系统稳定至关重要。计算流程包括节点和支路介数的特定公式,并附有计算流程图。
|
4月前
|
Web App开发 编解码 资源调度
雷达波形及MATLAB仿真
雷达波形及MATLAB仿真
47 0
|
机器学习/深度学习 传感器 安全
无人机自动驾驶仪的 MatLab 仿真
无人机自动驾驶仪的 MatLab 仿真
|
机器学习/深度学习 传感器 算法
四旋翼飞行器的动力学、控制和路径规划matlab仿真
四旋翼飞行器的动力学、控制和路径规划matlab仿真
|
编解码 算法
基于matlab的扩频通信误码率仿真
基于matlab的扩频通信误码率仿真
204 0
基于matlab的扩频通信误码率仿真
|
机器学习/深度学习 传感器 算法
基于Matlab的动态避障仿真
基于Matlab的动态避障仿真
|
机器学习/深度学习 传感器 算法
基于Matlab的电偶极子辐射仿真
基于Matlab的电偶极子辐射仿真
|
机器学习/深度学习 传感器 算法
基于Matlab模拟传输线上电磁波仿真
基于Matlab模拟传输线上电磁波仿真