ns-3入门简介
-
简介
ns-3是一个网络仿真器,本质上是一个软件,这个软件的主要功能是构建的计算机网络模型,对于网络及其性能进行评估和研究。
为了进一步了解ns-3的作用,我们首先要了解为什么需要网络的软件仿真器?一般来说,进行网络研究有以下几种模式:
- 数学分析
- 数值计算工具/链路级仿真(e.g., MATLAB)
- 基于数据包的仿真工具
- 系统级仿真工具
- 实验床、原型系统
- 实际网络
可以看到,随着网络研究的真实性增强,整个网络系统的复杂度会增大,会越来越不利于网络的研究和测试,同时结果也越来越难复现。因此,仿真器作为研究大规模的网络和衡量网络性能的可行性工具,具有重要的作用和意义。而ns-3则是一个基于数据包的离散事件仿真工具,并且具有多样的仿真模块和类型,能够帮助我们更好的研究大规模的网络。
除了对于大规模的网络进行仿真,ns-3还可以对一些非网络的系统进行建模和测试。并且由于其开源性质,众多的开发者都参与到ns-3的开发和维护中,帮助我们提供多样的资料和更加可靠的仿真器。
主要的特性
- 使用C++ 进行开发,C++/Python作为脚本语言
- 具有活跃的社区和组织
- 主要应用于类unix系统
- 可以进行单独网络方针,也可以和实验床等继承进行仿真
- ns-3是一个离散事件驱动网络模拟器,仿真基于事件和数据包传输
图片来源
发展历史
ns-3主要用于教育和研究领域。ns-3 项目开始于 2006 年,是一个开发 ns-3 的开源项目。目前,ns-3委员会由华盛顿大学进行组织,由多位华盛顿大学教授进行牵头,并且有许多高校和机构参与维护。
与ns-2的关系
ns-3并不是ns-2的升级版,而是完全独立开发的一个版本。相比于ns-2,ns-3更多的只是沿袭了ns-2的设计方面的一些思路,并且完全使用C++ 进行开发(包括脚本语言),虽然C++本身具有一定难度,但是对于开发者来说,不用为了脚本多学习其他语言也是较为轻松的。另外,ns-3支持Python进行脚本的开发,为新手提供了更多上手的空间,同时未来的ns-3将会支持Python3。
主要的贡献者
ns-3的社区有许多开发者和组织维护,同时作为活跃的开源社区,ns-3还参与的各种开源项目,如Google Summer of Code等。除此之外,大家还通过Github/Gitlab以及Google Group等社区进行交流,进一步帮助组织维护代码,也能够帮助更多的人更好的使用ns-3.
官方学习资料整理
ns-3提供了很多官方的学习资料可以参考,并且Wiki界面中有很多有用的参考信息,也会有很及时的更新,这里简单整理了一些资料可以供大家参考。后续我也会更新许多中文的教程,如果大家感兴趣或者觉得英语读起来比较费劲,可以参考。
官方的文档
https://www.nsnam.org/
https://www.nsnam.org/wiki
https://www.nsnam.org/documentation/Google Group
https://groups.google.com/forum/#!forum/ns-3-users
官方的教程
https://www.nsnam.org/wiki/HOWTOs
官方培训材料
https://www.nsnam.org/wiki/AnnualTraining2019