ns-3的基本使用方法:使用已有的模块仿真和开发新的协议仿真
使用已有的模块仿真:官方文档《ns-3-tutorial》
开发新的协议:官方文档《ns-3-manual》和官网的线上文档
最后还有一个网站:官方wiki 如何用eclipse等ide调试
参考资料:ns-3官网:Tutorial,Manual,ns-3,ns-3 Documentation ,ns-3 model library
Ns-3 google 论坛http://groups.google.com/forum/#!forum/ns-3-users
大牛的博客等: http://zhua0404.blogspot.com/search?q=ns3, ns-3 | Luiz Felipe Perrone,
NS3 Project 网址: http://ns3simulation.com/
https://www.nsnam.org/wiki/Main_Page
名词解释:
POSIX:portable operating system interface
一组操作系统api的协议、标准族,最开始是为了unix系统上的可移植而开发的,也适用于其他操作系统
Doxygen:Documentation Generator
支持c++,c,java,objective-c,pythond等各种语言的文档生成器
用于从源代码中生成说明文档 类似于Sandcastle
Nam:network animator基于tcl、tk的网络动画演示工具,能提供拓扑和包级别的动画以及数据流观察
https://github.com/arthurgervais/Bitcoin-Simulator
可视化:
- Pyiz
在ns-3集合到Visualizer,只要在程序中加入
CommandLine cmd;
Cmd.Parse(argc,argv);
并且在运行时加入参数--vis,它不需要trace文件
./waf --run third --vis
pyviz是一个python开发的在线ns-3可视化工具,不需要使用trace文件
安装:
1) sudo apt-get install python-dev python-pygraphviz python-kiwi
python-pygoocanvas python-gnome2 python-gnomedesktop python-rsvg
- sudo apt-get install ipython
其中安装python-gnomedesktop E: 无法定位软件包 python-gnomedesktop
通过安装替换为:
Sudo apt-get install python-gnome2-desktop-dev可以安装成功
【注】但是因为开始的时候没有编译该模块,所以不用pyviz可视化,如下所示visualizer没有编译,但是安装的时候是安装的netanim 所以直接使用它
注意事项:
1.LTE devices do not support visualizer yet.也就是PyViz不适用于LTE网络设备
2.You cannot use visualizer with simulations that require emulation (EmuNetDevice, TapNetDevice) or real-time scheduler (RealTimeSimulator).
- Netanim
NetAnim是基于Qt4的离线动画演示工具。,主要是利用XML格式的trace文件,仿真后NetAnim读取该文件显示网络拓扑和节点数据分组等动画过程。Ns-3中的ns3::AnimationInterface类负责生存XML跟踪文件。在仿真开始前,AnimationInterface注册为tx和rx(发送数据和接受数据)事件的追踪hook,当发送和接受数据分组是,在AnimationInterface能感知到正在流动的数据流的2个端点,然后添加该信息到XML格式的追踪文件
使用NetAnim时分两步:
第一步、生成XML记录文件。
① 确保程序的wscipt文件包含netanim模块,src/netanim/examples/wsctipt是关于wscript文件的例子。
② 包含头文件:#include”ns3/netanim-module.h”
③ 添加语句
AnimationInterface::SetConstantPosition (p2pNodes.Get (1), 10, 30); //位置
AnimationInterface::SetNodeDescription (wifiApNode, "AP"); // Optional名字
AnimationInterface::SetNodeColor (csmaNodes, 0, 0, 255); // Optional节点颜色
AnimationInterface::SetBoundary (0, 0, 35, 35); // Optional范围
AnimationInterface anim ("wireless-animation.xml"); // Mandatory名字
anim.EnablePacketMetadata (true); // Optional
anim.EnableIpv4RouteTracking ("routingtable-wireless.xml", Seconds (0), Seconds (5), Seconds (0.25)); //Optional
具体例子可以看自带的/ns-allinone-3.19/ns-3.19/src/netanim/examples/wireless-animation.cc
第二步、使用NetAnim装载XML记录文件
在终端./NetAnim,然后左上角File open按钮,选择XML文件,单击播放按钮开始动画。
【注】生成的xml文件在ns-3-dev文件夹下,而不是在scratch文件夹下
直接使用GNUPLOT
gnuplot是一个交互式命令行工具,可以在windows上安装使用
本文参考了ns-3Manual手册https://www.nsnam.org/docs/release/3.29/manual/html/gnuplot.html?highlight=gnuplot
运行编译fifth.cc(在examples/tutorial/fifth)
到fifth.dat文件中
- &1 将错误信息也在后台输出到fifth.dat中
在shell中文件描述符通常是STDIN,STDOUT,STDERR,分别对应0,1,2
&表示在后台执行
执行:
./waf --run examples/tutorial/fifth.cc >fifth.dat 2>&1
然后在产生的fifth.dat文件夹下启动GNUPLOT
执行代码如下所示:
Gnuplot
Set terminal png size 640,480
Set output “fifth.png”
Plot “fifth.dat” using 1:2 title “Congestion Window” with linespoints
使用ns-3和gnuplot绘制图形有两种常用的方法(http://www.gnuplot.info)
- 使用ns3的gnuplot类创建gnuplot控制文件
- 使用ns3生成的值创建gnuplot数据文件
如果ubuntu中没有安装gnuplot,可以使用
Sudo apt-get install gnuplot
安装完成后进行测试,输入gnuplot进入交互式界面输入如下命令如下图所示:
Plot[-3.14:3.14]sin(x)
Gnuplot类ns3为了能生成gnuplot数据图表提供了一组和gnuplot连接的类,包含在头文件中ns3/gnuplot.h中,可分成两类
- gnuplot类,是ns3和gnuplot连接的重要接口,其功能包括设置文件名,坐标,标题,添加数据集,生成文件等
- gnuplotdataset类:只是一个数据集,存储pot数据供gnuplot使用
https://blog.csdn.net/yanerhao/article/details/53215593
(二)