`
searun
  • 浏览: 177006 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

一些较新网络仿真器的比较

    博客分类:
  • NS
阅读更多


这是 ICC 09 上的一篇文章( ICC 什么时候也接受这样的文章啦?),对最近被使用的一些网络仿真器进行了介绍,并对其性能进行了比较。正好所介绍的网络仿真器除了 JIST 以外,其他的都使用过,基本上还是比较认同作者的比较结论的。原文章可以从 http://ds.informatik.rwth-aachen.de/publications/2009/ 上下载到,文章标题为:“A performance comparison of recent network simulators ”。下面是阅读此文章后的一些笔记。

网络仿真器在网络协议的研究中还是占有着重要的地位,特别是在网络比较复杂、参数多变的情况下。现在大部分已有的网络仿真器都是基于离散事件仿真( DES )的。也就是说,网络节点触发事件,同时仿真器维护着一个事件列表。现在用的最多的网络仿真平台是 NS2 ,实际上这也是学术界网络仿真事实上的标准。但是实际上 NS2 却在仿真时间和使用内存上有着扩展性不足的问题,特别是对于现在的新型网络,如无线传感器网络、 P2P 网络以及网格网络等,因为这些网络的仿真可能需要大量的节点。为此,也有一些针对 NS2 的改进,如并行处理。尽管如此,现在 NS2 还是在做着一次大的重新设计。这就是 NS3 ,对仿真性能进行了改进。

除了 NS2 之外,学术界和工业界也提出了多种仿真器。杰出的代表包括 OMNeT++ 、基于 Java JiST 以及商业上使用的 OPNet 等。另外,还有一些专门针对某个领域的网络仿真器,如针对 WSN TOSSIM 。这就给研究者带来了一个问题,该使用什么样的网络仿真器,达到高的仿真性能呢?这篇文章主要是对 NS2 NS3 OMNeT++ JiST SimPy 进行了性能比较。因为 NS3 OMNeT++ JiST 已经得到了越来越多的研究者关注,而 SimPy 则代表了一种新的基于进程范式的仿真器设计(使用 Python 语言实现)。

1.NS2

NS2 采用了 C++ 来实现仿真节点的行为,而 oTCL 脚本来控制仿真过程。这种设计在当初是合适的,可以减少重编译过程而加快仿真,因为 C++ 程序的重编译过程确实是一个耗时的过程。尽管如此,从现代的观点看,这种折衷在关注可扩展网络仿真的时候是否合适还是一个问题。

2.NS3

NS2 一样, NS3 还是采用了 C++ 语言来实现仿真节点,但是却废弃了 oTcl 来控制仿真过程。取而代之的是,仿真过程可以通过纯的 C++ 代码实现,部分还可以使用 Python 语音。更多的, NS3 集成了 GTNetS 的架构设计概念和代码,而 GTNetS 被认为具有很好的可扩展性。这样设计的同时也带来了很大的兼容性问题。事实上, NS2 的模块移植到 NS3 上都需要手工的移植过程。除了性能的改进外, NS3 还支持和物理实现的集成,如 BSD Socket 或者 POSIX 线程等。

3.OMNeT++

事实上, OMNeT++ 都不是一个网络仿真器,而只是一个通用的离散仿真框架。通过 INET 包, OMNeT++ 提供了对网络建模的能力。另外, MF Castalia 模块提供了对移动 Adhoc 和无线传感器网络的仿真功能。

OMNeT++ 在简单模块中实现基本的协议行为,然后通过组合这些简单模块成复合模块而成为仿真节点, OMNeT++ 中的网络仿真就是这些复合模块的组合。 OMNeT++ 也是采用 C++ 来实现的。但是使用了一种网络描述语言 NED 来描述网络框架。通过更改 NED 描述文件即可改变 OMNeT++ 的仿真行为,例如可以更改网路中节点的数量,在这种情况下,网络节点的实现模块是在仿真执行过程中动态生成的。这个功能是仿真器严格的面向对象设计的一个结果。另外, OMNeT++ 还有一个可视化环境,可以方便初学者入门。

4.JiST

一个新的网络仿真器是 JiST ,从名字可看到是采用 Java 来实现的。它经常和 SWANS 一起使用,这是一个基于 JiST 的移动 Adhoc 网络仿真器。

JiST 通过表征网络元素的实体组成,这些实体在仿真的过程中通知仿真核心。由于一个实体中的代码就是一个 Java 程序,只有实体之间的交互才涉及到仿真时间。这种设计方式可以使得不同的实体之间并行执行,从而提高仿真性能。遗憾的是, JiST 项目已经停止而且不再维护。尽管如此, Ulm 大学还是发布了 JiST 的一些改进。

5.SimPy

SimPy 是一种基于进程范式的网络仿真器。不像其他的网络仿真器, SimPy 并没有一个公开可用的网络模块包。实际上,这只是一个使用 Python 的仿真 API 。在 SimPy 中,仿真的基本实体是进程。它们并行运行,并可以交互。大多数进程都是一个无限循环,里面包含着进程的行为。除了这些之外, SimPy 还提供了进程之间的同步以及对仿真数据的监控。

文中采用了一种简单的方式来测试仿真器的性能。在多个节点之间传递数据,并且具有着一定的丢包概率。通过对各种丢包概率和不同节点数量的报文丢失数来看,各个仿真器最后的结果基本上是相同的。另外,通过节点的多少来查看仿真器的可扩展性,通过丢包率的变化来查看内存的使用。

A. 仿真时间

对于不同的节点数量,当节点数目很大的时候, SimPy 明显占用很长的时间,几乎是 JiST 14 倍。 JiST(86s) OMNeT++ NS3 三者的时间差不多, NS2 的时间要多于这三者, SimPy(1225s) 要的时间是最多的。

对于不同的丢包率,所有的仿真器在丢包率增大的时候仿真时间都会减小。还有一点可以注意到,在丢包率较小的时候, SimPy 的仿真时间明显变长,从这里也可以得到一个结论,那就是 SimPy 的事件处理吞吐量是不如其他仿真器的。

B. 内存占用

对于不同的节点数量, JiST 比其他四个仿真器需要的内存更多。

对于不同的丢包率,当丢包率增大到 0.5 的时候,内存占用变化并不大。这也是一个仿真运行需要的内存。如 JiST 需要有 Java 虚拟机, SimPy 需要 Python 来执行。另外, SimPy 在丢包率较大的时候内存占用明显较大,而 JiST 在丢包率比较小的时候内存占用明显较大。(另外,在相关工作中,有研究者对比 JiST NS2 在移动 Adhoc 环境下的性能,发现 NS2 明显比 JiST 占用更多的内存。这里作者的解释是在 NS2 中,当报文广播给另一个节点的时候, Radio 模块对报文在内存中做了多次复制。)

可以看到,各个仿真器都有着自己的不同特性,在选择网络仿真平台的时候还是需要根据自己的需求来选择合适的网络仿真软件。

  • 大小: 61.8 KB
分享到:
评论

相关推荐

    网络仿真器NS2简析

    ### 网络仿真器NS2简析 #### 1. 背景 ##### 1.1 局域网仿真的重要性 局域网(LAN)仿真是局域网设计和网络性能分析的一个重要环节。它能够帮助设计者在设计阶段就对网络的性能做出准确的预测,并据此对设计方案进行...

    单片机仿真器使用方法

    单片机应用系统的开发模式通常有三种:一是PC配合在线仿真器和单片机应用系统板,这种方法效率高但成本较高;二是PC加上通用编程器和单片机应用系统板,成本较低但开发效率不高;三是PC搭配在线下载调试线和ISP功能...

    Modbus仿真器

    **Modbus仿真器** 在工业自动化领域,Modbus通信协议是一种广泛应用的标准协议,它允许不同设备之间进行数据交换。为了测试、调试或者学习Modbus协议,Modbus仿真器扮演了重要角色。本篇文章将深入探讨Modbus仿真器...

    网络仿真软件介绍

    NS-2是由加州大学伯克利分校(UC Berkeley)开发的一款开源网络仿真器,广泛应用于学术界和工业界。它主要用于研究和教学目的,支持多种网络协议和技术的仿真,如TCP/IP、WLAN、WDM等。NS-2的特点在于其灵活性和开放性...

    多发多收网络仿真器的FPGA实现及测试.pdf

    同时,为了使设计的网络仿真器能够不断扩展新功能,节点数设计为可以升级,以便在未来可以方便地增加节点数量。 综上所述,多发多收网络仿真器的FPGA实现及测试是一系列先进技术和方法的综合应用,包括FPGA硬件编程...

    C8051F 网络-EC3 仿真器接口定义

    ### C8051F 网络-EC3 仿真器接口定义 #### 概述 C8051F 系列微控制器是由Silicon Labs(亦称Silabs)设计并生产的高性能混合信号系统级芯片(SoC)。这些微控制器广泛应用于各种嵌入式系统中,特别是那些对模拟性能...

    神经网络仿真工具源代码

    二、网络仿真 首先要点击按钮 切换到数据仿真状态. 界面如图: 调入训练好的网络,然后选择用来仿真的数据(只包含输入层神经元的节点数目),点击仿真按钮即可。 调入网络: 选择已经训练好的网络文件...

    Mac苹果机界面仿真器

    5. **跨平台兼容性**:虽然并非所有Mac应用都能在仿真器中运行,但部分基于Web的应用或者兼容性较高的软件可以通过仿真器在Windows上使用。 6. **学习和适应**:对于打算从Windows转向Mac的用户,使用仿真器可以...

    各种主流网络分析仿真工具比较分析.docx

    接着,NS2是一款开源的网络仿真器,基于C++和Otcl,主要用于IP网络的仿真: 1. 面向对象,离散事件驱动,适合IP网络协议如TCP、UDP的仿真。 2. 支持多种流量模型、路由算法和队列管理机制。 3. 多播和MAC子层协议的...

    RBF神经网络自适应控制MATLAB仿真

    此外,MATLAB还提供了用于系统仿真和控制设计的函数,如SIMULINK,可以方便地将RBF神经网络控制器集成到系统模型中,进行实时仿真。 "844005.pdf"文件很可能是该主题的详细教程或文献,包含了RBF神经网络自适应控制...

    各种主流网络分析仿真工具比较分析.pdf

    其次,NS2是一个面向对象的网络仿真器,由UC Berkeley开发,基于C++和Otcl语言。它通过离散事件模拟器实现网络仿真,支持TCP、UDP等多种传输协议和路由算法的仿真。NS2的事件调度器确保了高效的仿真流程,同时可以...

    基于神经网络的微波均衡器建模与仿真

    本文探讨了运用径向基函数(Radial Basis Function, RBF)神经网络对微波均衡器进行建模和仿真的新思路,旨在提高微波均衡器的设计效率和精确度。 RBF神经网络之所以被选为微波均衡器建模的理想工具,是因为它在...

    模糊神经网络仿真-模糊神经网络仿真.rar

    模糊神经网络仿真-模糊神经网络仿真.rar 分享以一份神经网络方面的资料! 基于神经网络的制冷模糊控制系统仿真与优化! 李涛! 吴钢!,8 陈金增! 胡兴华8 (海军工程大学,武汉9:;;::)(8 华中科技大学,武汉 ...

    S7-200仿真器使用教程

    7. **仿真器升级**:相较于之前的版本,S7-200仿真器1.2版本在支持TD200通信指示方面有所增强,提升了仿真精度和实用性。 8. **兼容性扩展**:对于Step7 MicroWin V3.1用户,S7-200仿真器1.2版本提供了更广泛的兼容...

    各种主流网络分析仿真工具比较分析 (2).pdf

    接着,NS2 是一种面向对象的网络仿真器,基于 C++和 Otcl 开发,适用于 IP 网络的仿真。其离散事件驱动的仿真方式确保了高效运行。NS2 支持多种网络协议、业务源流量、路由队列管理和路由算法,特别适合局域网的多播...

    ARM仿真器资料.rar

    标题中的“ARM仿真器资料.rar”表明这是一份与基于ARM架构的仿真器相关的资源集合,特别是关于STM32F103RCT6芯片的仿制FX2N PLC的实现。ARM架构是一种广泛应用于微控制器领域的处理器架构,以其高效能和低功耗著称。...

    Windows mobile5.0仿真器

    1. **系统需求**:确保你的开发机器满足运行仿真器的硬件和软件要求,通常需要较高性能的CPU和足够的内存。 2. **驱动兼容**:可能需要安装特定的设备驱动才能使仿真器正常工作。 3. **更新和补丁**:定期检查并...

Global site tag (gtag.js) - Google Analytics