Ns3网络仿真软件简单介绍
1. 什么是NS-3?
NS是一个开源离散事件驱动网络模拟器。官方定义:(fromhttp://www.nsnam.org/)
ns-3 is a discrete-event network simulatorfor Internet systems, targeted primarily for research and educational use. ns-3is free software, licensed under the GNU GPLv2 license, and is publiclyavailable for research, development, and use.
ns-3 is intended as an eventual replacementfor the popular ns-2 simulator. The project acronym “nsnam” deriveshistorically from the concatenation of ns (network simulator) and nam (networkanimator).
适用平台:Linux/MacOS/Cygwin
Latest release version:ns-3.22 (5 February,2015)
2.NS-3 vs NS-2
NS-3虽然冠以一个“3”,但事实上跟它广泛流行的前任NS-2并非一脉相承,或者从使用角度上说,仅仅继承了一个名称而已。NS-3基本上是一个新的模拟器,不支持NS-2的API。NS-3是完全用C++编写的(也有可选的Python接口),而NS-2一部分模块使用C++而另一部分使用 OTcl。因而NS-3最大的特点就是脚本可以C++或Python语言,而在NS-2中,我们使用的是C++和OTcl,两种语言都得懂。
NS-3的功能模块仍旧在开发补充中,因此它远没有NS-2完善(当然NS-2的维护也在进行中)。NS-3并不包含目前所有NS-2的功能,但它具有某些新的特性:正确的多网卡处理、IP寻址策略的使用、更详细的802.11模块等等。
Lateststable release: ns-3.2.2 (5 February,2015)
3.NS-3的一些名词解释
Doxygen:DocumentationGenerator
支持C++、C、Java、Objective-C、Python、IDL、Fortran、VHDL、PHP、C#等各种语言的文档生成器,用于从源代码中生成说明文档。(类似于我之前使用过的Sandcastle,貌似更加强大些,有必要得学习一下。)
PyViz
一个利用Python开发的ns-3在线可视化工具,不需要使用tace文件。
NetAnim
一个独立的、基于Qt4的离线动画演示工具,在ns-3仿真过程中生成XML格式的trace文件,仿真结束后NetAnim读取文件显示网络拓扑和节点间数据分组流等动画过程。
Waf
NS-3项目使用的新一代的基于Python的编译系统(BuildSystem)
WireShark
一种GUI包嗅探器。由于NS-3能生成.pcap文件,因此可以使用类似于WireShark的软件对数据进行分析
tcpdump
另一种包嗅探器。在Linux下使用CLI进行数据分析
Mercurial
NS-3代码维护使用的源码版本控制管理系统
4. 基础知识要求
? C++(类,继承/多态/聚合,模版)
? 套接字编程(基本的套接字API)
? Ubuntu/Debian/Fedora/Redhat/Mac OS
? 编译系统Waf
? 调试(GDB,eclipse等)
学习资料
? Source code
? ns-3 Tutorial
? ns-3 Mannual
? Doxygen
? Internet
5.NS3 网络架构
NS-3的架构较NS-2更为清晰。NS-3中把网络构件分为四类。
通信基本过程:发送节点从上往下由应用层产生数据,利用类socket编程实现数据分组的向下传递,数据分组通过协议栈—TCP/IP向下传递给网络设备,网络设备包括MAC层、物理层协议,这样数据分组像真实网络中流动一样,有数据帧转换成二进制流,最终变成信号通过媒介信道传输到目的节点;而目的节点与此相反,收到数据分组后从下往上逐层转交。
6.Ns3网络仿真基本流程:
1) 选择和开发相应模块;
根据实际仿真对象和仿真场景选择相应的仿真模块;如果搭建的网络比较新,读者就需要开发自己设计的协议。
2) 编写网络仿真脚本;
生成节点node;
安装信道Channel和相应的网络设备NetDevice,
安装协议栈
安装应用层协议
其他配置等
启动仿真
3) 仿真结果分析;
4) 根据结果调试网络配置参数和修改源代码;
参考文献:
[1] http://blog.sina.com.cn/s/articlelist_1923709774_8_1.html
[2] ns-3project. ns-3 Software Architecture. ns-3 project. 2015年2月26日
[3] ns-3project. ns-3 Reference Manual. ns-3 project. 2015年2月26日
[4]《ns-3网络模拟器基础及应用》,人民邮电出版社,马春光 姚建盛,2014年1月
部分参考网络资料,未一一列举,敬请原谅!