各种主流网络分析仿真工具比较分析Word文档下载推荐.docx
- 文档编号:20809776
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:9
- 大小:110.78KB
各种主流网络分析仿真工具比较分析Word文档下载推荐.docx
《各种主流网络分析仿真工具比较分析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《各种主流网络分析仿真工具比较分析Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
(5)
OPNET具有丰富的统计量收集和分析功能。
它可以直接收集常用的各个网络层次的性能统计参数,能够方便地编制和输出仿真报告。
(6)
提供了和网管系统、流量监测系统的接口,能够方便的利用现有的拓扑和流量数据建立仿真模型,同时还可对仿真结果进行验证。
OPNET的缺点:
1.
价钱昂贵.OPNET的单使用者授权费超过2万5千美金.价格的因素使得盗版猖獗。
2.
学习的进入障碍很高,通过专门培训而达到较为熟练程度至少需一个多月的时间.
3.
仿真网络规模和流量很大时,仿真的效率会降低。
目前解决方法:
采用分层的建模方法,汇聚网络流量,简化网络模型;
背景流量和前景流量相配合;
流量比例压缩方法;
优化调整仿真参数设计;
路由流量的简化;
结果分析;
如何针对不同的统计参数,选择合适的结果收集和处理方法
4.
软件所提供的模型库是有限的,因此某些特殊网络设备的建模必须依靠节点和过程层次的编程方能实现。
5.
OPNET对路由协议的仿真比较适合,但是对链路的仿真好想就只能通过Pipelinestage来做。
NS2
NS2(NetworkSimulator,version2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。
NS2由UCBerkeley开发而成。
它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。
目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:
网络传输协议,比如TCP和UDP;
业务源流量产生器,比如、WebCBR和VBR;
路由队列管理机制,比如Droptai、RED和CBQ;
路由算法,比如Dijkstra等。
NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。
NS2使用C++和Otcl作为开发语言。
NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。
事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。
所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。
它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。
事件调度器的另一个用处就是计时。
NS是用Otcl和C++编写的。
由于效率的原因,NS将数据通道和控制通道的实现相分离。
为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。
当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。
只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。
这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。
Matlab
MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。
MATLAB是英文MATrixLABoratory(矩阵实验室)的缩写。
MATLAB环境下,用户集成了程序设计、数值计算、图形绘制、输入输出、文件管理等各项功能。
MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。
与利用C语言或FORTRAN语言作数值计算的程序设计相比,利用MATLAB可以节省大量的编程时间。
MTALAB系统由五个主要部分组成:
(1)
MATALB语言体系。
MATLAB是高层次的矩阵/数组语言。
具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。
利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。
MATLAB工作环境包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。
图形图像系统。
这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特征控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。
MATLAB数学函数库。
这是对MATLAB使用的各种数学算法的总称。
包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法等。
MATLAB应用程序接口。
这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用程序(如动态链接库),读写MAT文件的功能。
由此可见,MATLAB是一个功能十分强大的系统,是集数值计算、图形管理、程序开发为一体的环境。
除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。
CASSAP
CASSAP是美国Synopsys(新思科技)公司开发了一款仿真软件,主要应用于数字信号处理和网络通信领域,它可以在概念、体系结构、算法三个层次上实现仿真。
CASSAP采用了数据流驱动仿真器,它比基于时钟周期的仿真器速度提高了8-16倍。
CASSAP提供了1000多个高层模块,并可对其中所需模块自动生成行为级或RTL级VHDL,也可生成各种风格的DSP代码,供DSP处理器作软件实现。
CASSAP可广泛应用于需分析和评估算法、实现方式的数字传输系统,如通讯、图像、多媒体等,并提供了针对GSM、CDMA、DECT等标准的专用开发平台。
SPW
SPW仿真软件是Cadence公司的产品,它提供了面向电子系统的模块化设计、仿真及实施环境,是进行算法开发,滤波器设计,C代码生成,硬/软件结构联合设计和硬件综合的理想环境。
SPW的一个显著特点是他提供了HDS接口和Matlab接口。
Matlab里面的很多模型可以直接调入SPW,然后利用HDS生成C语言仿真代码或者是HDL语言仿真代码。
SPW通常可以应用于无线和有线载波通信、多媒体和网络设计与分析等领域。
实例分析
上一节简要介绍了5款网络仿真软件,其中比较常用的是OPNETModeler和NS2,很多大学和科研单位大都采用这两种工具进行网络方面的研究和设计分析。
这一节将通过一个实例来展示这两种网络仿真软件的特点,并对这两种软件进行比较分析。
在这个实例中,我们采用网络的拓扑结构如图1所示,图中有5个节点,其中0、1、2号节点是发送节点,4号节点是接收节点。
下面是使用OPNETModeler和NS2两种软件的仿真过程。
图1:
仿真网络的拓扑结构
3.1
使用NS2进行网络仿真
在本节中,笔者将使用NS2对图1中的网络进行仿真。
使用NS2进行网络仿真的第一步是编写OTCL脚本。
在OTCL脚本文件(example_ns2.tcl)中,笔者首先定义了5个节点和连接这5个节点的4条边:
#定义5个节点
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
#定义4条边
$nsduplex-link$n0$n31Mb100msDropTail
$nsduplex-link$n1$n31Mb100msDropTail
$nsduplex-link$n2$n31Mb100msDropTail
$nsduplex-link$n3$n41Mb100msDropTail
要把节点n0、n1、n2定义为发送节点,即将TrafficSource(发送源)与节点n0、n1、n2相连,我们可以先定义下面的函数:
procattach-expoo-traffic{nodesinksizeburstidlerate}{
#获得模拟器实例
setns[Simulatorinstance]
#建立连接节点的UDP对象
setsource[newAgent/UDP]
$nsattach-agent$node$source
#建立traffic源的对象并设置traffic参数
settraffic[newApplication/Traffic/Exponential]
$trafficsetpacketSize_$size
$trafficsetburst_time_$burst
$trafficsetidle_time_$idle
$trafficsetrate_$rate
$trafficattach-agent$source
#建立发送者与接收者的关系
$nsconnect$source$sink
return$traffic
}
上面的函数返回发送源的句柄,因此,我们可以使用下面的语句将3个发送源与n0、n1、n2相连:
setsource0[attach-expoo-traffic$n0$sink02002s1s100k]
setsource1[attach-expoo-traffic$n1$sink12002s1s200k]
setsource2[attach-expoo-traffic$n2$sink22002s1s300k]
由上面的代码我们可以看出,每个数据发送源的峰值发送速率分别为100kbit/s、200kbit/s和300kbit/s。
而下面的代码用来定义接收器(n4与3个sink对象相关联):
setsink0[newAgent/LossMonitor]
setsink1[newAgent/LossMonitor]
setsink2[newAgent/LossMonitor]
$nsattach-agent$n4$sink0
$nsattach-agent$n4$sink1
$nsattach-agent$n4$sink2
同时,定义3个文件来保存每个接收器(sink)每秒接收到的数据量:
setf0[openout0.trw]
setf1[openout1.trw]
setf2[openout2.trw]
在脚本中,笔者定义了一个record函数来记录网络仿真时感兴趣的数据:
procrecord{}{
globalsink0sink1sink2f0f1f2
#获得模拟器实例
setns[Simulatorinstance]
#设置每0.5秒会调用本函数一次
settime0.5
#记录有多少字节被接收节点接收?
setbw0[$sink0setbytes_]
setbw1[$sink1setbytes_]
setbw2[$sink2setbytes_]
#获得当前的时间
setnow[$nsnow]
#向文件中写入带宽(单位为MBit/s)
puts$f0"
$now[expr$bw0/$time*8/1000000]"
puts$f1"
$now[expr$bw1/$time*8/1000000]"
puts$f2"
$now[expr$bw2/$time*8/1000000]"
#将接收器接收到的字节重置为0
$sink0setbytes_0
$sink1setbytes_0
$sink2setbytes_0
#重新调用record函数
$nsat[expr$now+$time]"
record"
在脚本的最后,笔者定义了finish函数来关闭文件和打开Xgraph观察运行结果:
procfinish{}{
globalf0f1f2
#关闭输出文件
close$f0
close$f1
close$f2
#调用Xgraph显示网络仿真曲线
execxgraphout0.trout1.trout2.tr-geometry800x400&
exit0
在仿真网络运行时,我们可以设置一开始就调用record函数,并在运行后10秒时启动发送者发送数据,并在运行后50秒时停止发送数据,最后调用finish函数使用Xgraph显示运行结果(显示接收端的数据接收速度)。
图2是用Xgraph显示的网络仿真结果,从图中可以看出每个数据接收端的接收速率曲线(注意到3个数据接收端的峰值接收速率分别为100kbit/s、200kbit/s和300kbit/s),这与先前在脚本中定义的峰值发送速率相同。
图2:
用Xgraph显示的NS2的仿真结果
3.2
使用Opnet进行网络仿真
在这一节中,笔者将使用OpnetModerler8.0对图1所示的网络进行仿真。
对图1所示的简单网络结构,在OpnetModerler中是不必要写脚本的。
在绝大多数的仿真实验中,OpnetModerler仅使用户通过其界面就可以完成。
在本节的例子中,网络拓扑结构在OpnetModerler中如图3所示。
在OpnetModerler中,笔者使用了三个以太网工作站(ethernet_station_adv)来表示网络中的三个数据源节点n0、n1和n2,用两个交换机(ethernet4_switch_adv)来表示网络流量中转节点n3和n4,用三个以太网工作站(ethernet_station_adv)来表示网络中的三个数据接收器sink1、sink2和sink3。
连接各个节点的链路为10BaseT。
然后,因为要限制n0、n1和n2的输出流量之比为1:
2:
3,所以可以设置n0、n1和n2的发送分组的间隔分别为服从均值为6、3和2的指数分布。
最后,可以设置网络模拟运行时间为1小时(60分钟),取10000个取样点,可得每个接收端(sink1、sink2和sink3)的负载(load)统计曲线如图4。
图3:
使用OpnetModerler对图1的网络进行仿真的界面
从图4中可以看出,sink1、sink2、sink3的负载曲线密度依次增大,负载的峰值和均值也依次增高。
通过NS2和OpnetModeler的仿真过程,说明了在链路服务速率足够大的情况下,每个数据源的输出速率与接收端的数据输入速率成近似的正比例关系。
图4:
使用OpnetModeler得到的每个sink的负载曲线
3.3
比较分析
通过对NS2和OpnetModeler的操作和数据观察结果的对比,我们可以从软件功能和操作易用性两个方面对这两个软件进行分析。
在软件功能方面,OpnetModeler做的比较完备,可以对分组的到达时间分布、分组长度分布,网络节点类型和链路类型等进行很详细的设置,而且可以通过不同厂家提供的网络设备和应用场景来设计自己的仿真环境,用户也可以方便的选择库中已有的网络拓扑结构。
而NS2在这方面的选择不如OpnetModeler丰富,只能根据实际仿真的环境通过脚本建立逻辑的网络结构,而查看结果需要其他软件的辅助。
在操作易用性方面,OpnetModeler的优越性是毋庸置疑的,因为它可以使用比较少的操作就可以得到比较详尽和真实的仿真结果。
而NS2则要通过编写脚本和C++代码来实现网络仿真,而且用这种方式建立复杂的网络结果则变的非常困难。
当然,NS2是自由软件,免费,这是与OPNET相比最大的优势,而且,作为用户,可以相对比较容易地对NS2进行功能扩展。
总结
本文通过对5款当前主流网络仿真软件的简要分析,介绍了网络仿真的概念和当前网络仿真软件的技术特点和应用范围;
并通过在NS2和OpnetModeler对同一个网络结构进行仿真的过程给读者提供了网络仿真过程的感性认识。
网络仿真提供了从设想到实现的桥梁,因此它是一个计算机网络设计与分析过程中的一个重要环节。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 各种 主流 网络分析 仿真 工具 比较 分析