NS-3 简介

ns-3模拟器是一个离散事件网络模拟器,主要用于研究和教育用途。 ns-3项目始于2006年,是一个开发ns-3的开源项目。

本教程的目的是以结构化的方式向系统引入新的ns-3用户。新用户有时很难从详细的手册中收集重要信息,并将此信息转换为工作模拟。在本教程中,我们将构建几个示例模拟,介绍和解释关键概念和功能。

随着教程的展开,我们将介绍完整的ns-3文档,并为那些有兴趣深入研究系统工作的人提供源代码的指针。

一些关键点值得注意:

ns-3是开源的,该项目致力于维护一个开放的环境,供研究人员贡献和分享他们的软件。

ns-3不是ns-2的向后兼容扩展;这是一个新的模拟器。这两个模拟器都是用C ++编写的,但ns-3是一个不支持ns-2 API的新模拟器。 ns-2中的某些型号已经从ns-2移植到ns-3。在构建ns-3的同时,该项目将继续维持ns-2,并将研究过渡和集成机制。


NS-3 

ns-3的开发旨在为网络研究和教育提供开放,可扩展的网络仿真平台。简而言之,ns-3提供了分组数据网络如何工作和执行的模型,并为用户提供了进行模拟实验的模拟引擎。使用ns-3的一些原因包括进行更难或不可能用真实系统执行的研究,在高度可控,可重复的环境中研究系统行为,以及了解网络如何工作。用户将注意到ns-3中的可用模型集侧重于建模Internet协议和网络的工作方式,但ns-3不仅限于Internet系统;一些用户正在使用ns-3来建模非基于互联网的系统。

存在许多用于网络模拟研究的模拟工具。与其他工具相比,下面是ns-3的一些显着特征。

ns-3被设计为一组库,可以组合在一起,也可以与其他外部软件库结合使用。虽然一些仿真平台为用户提供了一个集成的图形用户界面环境,其中执行了所有任务,但ns-3在这方面更加模块化。 ns-3可以使用几个外部动画师和数据分析和可视化工具。但是,用户应该期望在命令行和C ++和/或Python软件开发工具中工作。

ns-3主要用于Linux系统,虽然支持FreeBSD,Cygwin(适用于Windows),并且正在开发本机Windows Visual Studio支持。

ns-3不是任何公司的官方支持的软件产品。在ns-3-users邮件列表上,尽力支持ns-3。


与NS-2的区别和联系

对于熟悉ns-2(ns-3之前的流行工具)的人来说,迁移到ns-3时最明显的向外变化是脚本语言的选择。 ns-2中的程序在OTcl中编写脚本,模拟结果可以使用Network Animator nam进行可视化。不可能在纯粹来自C ++的ns-2中运行模拟(即,作为没有任何OTcl的main()程序)。此外,ns-2的某些组件是用C ++编写的,而其他组件则是用OTcl编写的。在ns-3中,模拟器完全用C ++编写,带有可选的Python绑定。因此,仿真脚本可以用C ++或Python编写。目前正在开发新的动画制作人员和可视化工具。由于ns-3生成pcap数据包跟踪文件,因此其他实用程序也可用于分析跟踪。在本教程中,我们将首先专注于直接在C ++中编写脚本并通过跟踪文件解释结果。

但也有相似之处(例如,两者都基于C ++对象,而ns-2中的一些代码已经移植到ns-3)。我们将在本教程中继续尝试强调ns-2和ns-3之间的差异。

我们经常听到的一个问题是“我还应该使用ns-2还是转到ns-3?”在本作者看来,除非用户以某种方式归属于ns-2(基于现有的个人舒适度和ns的知识) -2,或基于仅在ns-2中可用的特定仿真模型,由于以下原因,用户将更有效地使用ns-3:

ns-3主动维护一个活跃的,响应迅速的用户邮件列表,而ns-2只是轻微维护,并且十多年来在其主代码树中没有看到重大的发展。

ns-3提供ns-2中没有的功能,例如实现代码执行环境(允许用户在模拟器中运行实际的实现代码)

与ns-2相比,ns-3提供了更低的基本抽象级别,使其能够更好地与真实系统组合在一起。在ns-3中已经解决了ns-2中发现的一些限制(例如在节点上正确支持多种类型的接口)。

由于其历史悠久,ns-2具有比ns-3更多样化的贡献模块集。然而,ns-3在几个流行的研究领域(包括复杂的LTE和WiFi模型)中有更详细的模型,并且它对实现代码的支持允许非常广泛的高保真模型。用户可能会惊讶地发现整个Linux网络堆栈可以使用直接代码执行(DCE)框架封装在ns-3节点中。 ns-2模型有时可以移植到ns-3,特别是如果它们已经用C ++实现的话。

如果有疑问,一个好的指导方针是查看模拟器(以及其他模拟器),特别是可用于您的研究的模型,但请记住,您的体验可能更好地使用正在积极的工具开发和维护(ns-3)。

你可能感兴趣的:(NS-3 简介)