signed

QiShunwang

“诚信为本、客户至上”

ns-3可视化

2021/3/21 11:53:42   来源:

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

 

 

可视化

  1. 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

  1.  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).

 

 

  1. 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文件,单击播放按钮开始动画。

https://blog.csdn.net/Mary19920410/article/details/70848438?locationNum=10&fps=1&utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

 

【注】生成的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. &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)

  1. 使用ns3的gnuplot类创建gnuplot控制文件
  2. 使用ns3生成的值创建gnuplot数据文件

如果ubuntu中没有安装gnuplot,可以使用

Sudo apt-get install gnuplot

安装完成后进行测试,输入gnuplot进入交互式界面输入如下命令如下图所示:

Plot[-3.14:3.14]sin(x)

 

Gnuplot类ns3为了能生成gnuplot数据图表提供了一组和gnuplot连接的类,包含在头文件中ns3/gnuplot.h中,可分成两类

  1. gnuplot类,是ns3和gnuplot连接的重要接口,其功能包括设置文件名,坐标,标题,添加数据集,生成文件等
  2. gnuplotdataset类:只是一个数据集,存储pot数据供gnuplot使用

https://blog.csdn.net/yanerhao/article/details/53215593

 

 

 

(二)