目录
1. 引言
2.仿真器介绍
2.1 NS-2
2.2 NS-3
2.3 OPNET
2.4 GNS3
3.仿真对比
4.结论
参考文献
1. 引言
网络仿真是指使用计算机模拟网络系统的行为和性能的过程。在网络仿真中,可以建立一个虚拟的网络环境,并通过模拟各种网络设备、协议和应用程序的行为来评估网络的性能、研究网络的行为和测试新的网络技术。网络仿真可以帮助网络设计师、研究人员和工程师更好地理解和分析网络系统的行为,并进行实验和测试,以评估不同方案的可行性和效果。它可以模拟各种网络拓扑结构、流量模式、传输协议和路由机制等,以及处理网络故障和攻击的情况。通过网络仿真,可以获得关于网络性能、吞吐量、延迟、丢包率、网络拥塞等方面的数据,并对网络的特定方面进行详细分析。这些数据和分析结果可以帮助改进网络设计、优化资源分配、验证协议的正确性和可靠性,并提供决策支持。总之,网络仿真是一种重要的工具,可以帮助我们理解和评估网络系统的性能和行为,以及指导网络设计和优化。网络仿真器在网络领域的研究、开发和运营中具有广泛的应用。
在网络仿真研究的早期,研究人员主要使用离散事件仿真(DES)方法对计算机网络进行建模和仿真。虽然DES算法可以帮助研究人员了解网络系统中事件的发生和处理过程,但是需要大量的内存和存储资源来保存仿真数据,难以对大模型进行建模。随着优化仿真算法的精进,越来越多优秀的网络仿真方法被提出。当前流行的网络仿真器如NS-2、NS-3、OPNET、GNS3等在功能和应用方面都有所差异,本文将详细介绍以上几种仿真器的仿真框架,并在功能和特性方面细致分析它们的优缺点,同时进行性能上的比较。
本文的其余部分组织如下。第2节介绍了当前流行的网络仿真器,并在第3节中进行了网络仿真器的仿真对比研究,第4节给出了本文的调研结论。
2.仿真器介绍
2.1 NS-2
NS-2最初是由美国加州大学伯克利分校(University of California, Berkeley)的计算机科学系于1989年发起和立项的,并再1995年加入VINT项目 [1]。NS-2(Network Simulator 2)是一个离散事件网络仿真器,广泛用于网络研究和教学。它能够模拟各种网络协议,包括TCP、UDP、IP、HTTP等,并提供了多种数据传输方式的模型,如有线网络、无线网络、卫星网络等。NS-2采用C++编写,支持命令行界面和GUI界面,可以在Linux、Windows等操作系统上运行。它提供了丰富的API和工具,方便用户进行自定义开发和扩展。
NS-2的优点在于可定制性强、可扩展性好,可以满足不同的需求,而且它是开源免费的。但是由于其复杂性,使用起来可能会比较困难。同时,NS-2也存在一些缺陷,如在某些场景下模拟结果可能与真实情况不完全一致。
NS-2的基本架构,如下图所示:
图1 NS-2的基本架构
如上图所示,NS-2的基本架构采用了OTcl(Object-oriented Tcl)和C++混合编程。OTcl用于描述仿真场景和配置参数,C++用于实现底层的网络模型和算法。TclCL在NS-2的基本架构中扮演着连接OTcl和C++的桥梁角色,提供了OTcl与C++之间的接口,允许在Tcl脚本中调用C++编写的函数和类,以扩展NS-2的功能。在NS-2的基本架构中,Tcl simulation script(简称Tcl脚本)起到了描述仿真场景、配置仿真参数以及控制仿真流程的作用,Tcl trace file(Tcl跟踪文件)用于记录仿真过程中的事件和状态,起到了记录和分析仿真结果的重要作用。以上所有组件,共同构成了从Tcl脚本到Tcl跟踪文件的整个过程。
2.2 NS-3
2006年,Lacage和Mathieu等人创建一种新的离散事件网络模拟器,命名为NS-3 [2]。NS-3是一个开源的离散事件网络仿真器,与NS-2相比,NS-3拥有更现代化的架构和更强大的功能,包括更加准确的物理层模型、更丰富的协议实现、更好的可扩展性等特点。NS-3支持多种网络技术和协议的仿真,例如WiFi、LTE、IPv6、多径传输控制协议(MPTCP)、软件定义网络(SDN)等。NS-3还提供了Python接口和仿真脚本语言,使得用户可以快速构建仿真场景和实验,并方便地分析仿真结果。由于NS-3的优秀性能和广泛应用,它被广泛用于网络研究和教学领域,在学术界和工业界都有着广泛的影响力。
NS-3的优点在于拥有准确的物理层模型和丰富的协议实现,使得用户可以方便地进行各种协议的研究和评估并提高仿真结果的准确性。缺点在于缺少友好的图形化界面,并且有较高的计算资源需求。
NS-3的基本架构,如下图所示:
图2 NS-3的基本架构
如上图所示,NS-3的仿真过程主要分为4步:首先,选择或开发相应模块。其次,编写网络仿真脚本。再次,启动仿真。最后,分析仿真结果。在搭建NS-3网络仿真场景时,与实际网络类似,需要考虑节点、net device(网络设备)和传输媒体等概念。在NS-3中,节点代表网络中的实体,可以是路由器、交换机、终端设备等。每个节点都具有一个或多个网络设备,用于连接到网络并进行数据传输。不同类型的网络设备对应着不同的传输媒体和协议,例如CSMA网络设备对应CSMA/CD协议,WiFi网络设备对应WiFi协议。在NS-3中由channel(信道)来表示传输媒体,它模拟了真实网络中的传输介质,例如有线链路、无线信道等。通过设置信道的属性,如延迟、带宽等,可以模拟实际网络中的传输特性。因此,在搭建NS-3网络仿真场景时,您需要定义节点、配置网络设备,并通过信道将这些节点连接起来,以模拟实际网络中的节点、设备和传输媒体之间的关系。同时,还可以根据需要设置节点和设备的参数,如IP地址、MAC地址、传输协议等,以适应特定的仿真需求。
2.3 OPNET
OPNET最早是由美国公司OPNET Technologies开发并推出 [3]。OPNET最初被设计用于模拟局域网(LANs)和广域网(WANs)的性能,随着时间的推移,OPNET逐渐发展成为一个综合性网络仿真平台,可以用于模拟各种网络技术和协议的性能,包括无线网络、互联网、移动通信等。它提供了综合的仿真环境,包括GUI、模型库、仿真引擎和性能分析工具。用户可以根据需要选择适当的模型,并进行自定义和扩展,以满足特定的研究需求。OPNET的性能分析工具可用于评估网络的吞吐量、延迟、丢包率等关键指标,帮助用户优化网络设计和协议算法。
OPNET作为一款综合的网络仿真工具,具有灵活性、准确性和强大的性能分析能力等优点。它提供了一个综合的仿真环境,以及丰富的模型库和性能分析工具,使用户能够在一个平台上完成整个仿真过程。然而,在另一方面,OPNET存在着学习曲线陡峭和计算资源需求高等问题,并且OPNET不是开源免费的网络仿真软件。因此,用户在选择使用时应权衡其优点和缺点,并根据实际需求做出决策。
图3 OPNET的基本架构
如上图所示,在OPNET中,Re-specification(重新规范化)是指在网络仿真过程中对模型参数和配置进行调整和修改的过程。Data collection and simulation(数据收集与仿真)是指在网络仿真过程中,系统会自动收集并记录各种网络性能指标的数据,如吞吐量、时延、丢包率等,这些数据会在仿真过程中被积累和记录下来,以便后续进行分析和评估。Initial specification(初始规范)定义了网络仿真的基本条件和参数,为后续的仿真过程奠定了基础。Analysis(仿真分析)是指通过收集的数据,用户可以利用OPNET提供的内置的数据分析工具进行进一步的处理和分析,助用户深入理解网络性能、协议行为,以优化网络设计和配置。
2.4 GNS3
GNS3(Graphical Network Simulator 3)最早由法国工程师Jerome Tissieres等人于2007年提出并发布。GNS3是一个基于开源的网络仿真平台,用于模拟和测试复杂的计算机网络环境。它提供了图形化界面和虚拟设备,可以帮助用户构建和配置虚拟网络拓扑,并模拟真实网络设备的行为和功能。GNS3平台具有丰富的社区支持和资源,用户可以在社区中分享经验、获取支持,并下载其他用户创建的网络拓扑和配置文件,从而加速学习和解决问题的过程。它的开源性质使得全球范围内的用户可以自由使用、定制和贡献代码,从而不断丰富和完善了这个平台。随着时间的推移,GNS3不断发展和改进,并成为网络工程师、学生和研究人员常用的网络仿真工具之一。
GNS3作为一个基于开源的网络仿真平台,具有多平台支持、图形化界面、真实设备模拟、集成虚拟化技术、社区支持和资源丰富、扩展性和可定制性等优点,但也可能无法完全模拟特定硬件设备的行为和性能,并且对于大规模网络仿真可能需要较高的计算资源和内存消耗。
图4 GNS3的基本架构
如上图所示,在GNS3中,GNS3 GUI QT Interface是指GNS3的图形化用户界面,GNS3提供了一个直观、易用和功能强大的界面,使用户能够轻松地创建、配置和管理网络仿真拓扑,并对其进行测试和调试。在GNS3中,Compute Server(计算服务器)是用于处理和执行网络仿真的计算资源,它的主要作用是提供额外的计算能力,以支持更复杂和大规模的网络拓扑仿真。在GNS3中,Qemu,Dynamips和IOU是三种不同的可用于模拟Cisco路由器的虚拟化技术,起到了仿真器(emulator)的作用。GNS3是一个网络仿真平台,而GNS3 Web是GNS3的一个插件,它为用户提供了通过Web浏览器访问和管理GNS3实例的功能。
3.仿真对比
特性 | NS2 | NS3 | OPNET | GNS3 |
开发语言 |
C++/OTCL
| C++,Python |
C (C++)
| python |
是否支持开源 | 是 | 是 | 否 | 是 |
支持用户图形化界面能力 | NS2主要是基于命令行的工具 | NS3主要是基于命令行的工具 | 提供了丰富的图形用户界面(GUI) | 专门为网络工程师设计的图形化网络仿真平台 |
学习时长
| 长 | 适中 | 较长 | 易学 |
可安装平台
| Linux,Mac OS X,windows | Linux,Mac OS X,windows | Linux,Mac OS X,windows | Linux,Mac OS X,windows |
是否拥有网络虚拟化工具
| 提供网络虚拟化工具 | 提供网络虚拟化工具 | 提供了一套完整的虚拟化环境 | 是一款专注于网络虚拟化的工具 |
是否拥有仿真分析工具 | 提供了丰富的仿真分析工具 | 提供了丰富的仿真分析工具 | 提供了丰富的仿真分析工具 | 提供了丰富的仿真分析工具 |
是否能创建仿真跟踪文件 | 可以 | 可以 | 可以 | 可以 |
能够实现那些协议 | 可以实现广泛的网络协议,包括传输层、网络层和应用层协议 | 可以实现广泛的网络协议,包括传输层、网络层和应用层协议 | 可以实现广泛的网络协议,包括传输层、网络层和应用层协议 | 可以实现广泛的网络协议,包括传输层、网络层和应用层协议 |
快速仿真能力 | NS2 的仿真速度相对较慢,特别是在复杂网络场景中 | NS3 在速度方面相对 NS2 有所提升,但仍然可能受到复杂网络场景的影响 | OPNET 在处理大规模网络和复杂业务场景时具有较高的仿真速度 | GNS3 的仿真速度可能受到底层设备性能和配置的限制 |
由上表所示,在协议支持方面,在NS2专注于无线网络和移动网络的仿真,提供广泛的扩展性和自定义协议支持。NS3在无线网络和移动网络仿真方面比NS2有所改进,具有现代化设计和更好的性能。OPNET适用于企业网络和通信网络的仿真,具有强大的性能优化和分析功能。GNS3以虚拟化和模拟真实网络设备为主,可以与实际网络设备或虚拟机集成。
在仿真速度和效率方面,NS2在复杂网络场景中可能较慢。NS3相对于NS2有所改进,但仍可能受到复杂网络场景的影响。OPNET提供多种仿真模式,包括快速仿真模式,可通过优化算法减少仿真时间。GNS3仿真速度可能受到底层设备性能和配置的影响。
在用户界面和易用性方面,NS2使用命令行和脚本语言进行操作,学习曲线较陡。NS3提供基于Qt的图形用户界面(GUI),相对于NS2更直观和易用。OPNET提供图形用户界面(GUI)和建模工具,更易上手。GNS3具有友好的图形用户界面(GUI),易于操作和配置。
4.结论
综合来看,NS2作为一个基于事件驱动的离散事件仿真器,NS2在无线网络和移动网络的仿真方面具有广泛的应用和扩展性。然而,它的仿真速度相对较慢,特别是在复杂网络场景中。NS3:作为NS2的继任者,NS3在无线网络和移动网络的仿真方面有所改进。它采用现代化的设计和C++编程语言,相对于NS2有更好的性能和效率。OPNET:OPNET是一个专注于企业网络和通信网络的仿真工具,具有强大的性能优化和分析功能。它提供多种仿真模式,包括快速仿真模式,可以通过优化算法减少仿真时间。GNS3:GNS3是一个图形化工具,主要用于虚拟化和仿真真实网络设备的行为。它可以与实际网络设备或虚拟机集成,提供与实际网络环境更接近的仿真结果。根据具体需求和研究领域的不同,可以选择适合的仿真工具。如果涉及到无线网络和移动网络的仿真,NS2和NS3可能是更好的选择。而对于企业网络和通信网络的仿真、性能优化和分析,OPNET可能更适合。如果需要虚拟化和模拟真实网络设备的行为,GNS3是一个不错的选择。在选择时,还应考虑工具的编程语言、易用性以及仿真速度等因素。
参考文献
[1] Project, The Vint. "Ns-2 network simulator", msra (1995)
[2] Lacage, Mathieu, and Thomas R. Henderson. "Yet another network simulator", MOD (2006): 12-es.
[3] Arvind, T .“A Comparative Study of Various Network Simulation Tools.” (2016).