一、资源汇总
官方教程(包括Manual\Documents\Wiki等): ns-3 Tutorial — Tutorial
官方论坛:https://groups.google.com/g/ns-3-users
you。tube。有很多视频教程
二、可视化
2.1 Pyviz
2.1.1安装
具体过程略了,在编译界面的模块名叫: visualizer
2.1.2 使用
#在源码里面检查有无以下命令行参数代码(在建立节点之前)
CommandLine cmd
cmd.Parse (argc,argv);
#在正常的运行指令后面加上 --vis
sudo ./waf --run third --vis
#如果是运行.py文件,一般会报错: VisualSimulatorImpl not found
#在文件头加上 import
import ns.visualizer
#.py运行指令
sudo ./waf shell python scratch/demo0.py
sudo ./waf --pyrun scratch/demo0.py --vis
出现图形化界面以后,单击 Simulate 开始仿真, 再单击停止
PS.
1.Pyviz使用比较方便,指令很简单,但是因为需要python依赖,安装的时候可能会遇到很多奇怪的问题,反正我之前在远程服务器上死活配置不出来。。。
2.Pyviz还有一个问题,可视化的主要是通信交互的进程,可以查看节点的routing table,但是页面缩放不是很友好,也有可能是我还没有搞清楚怎么调整。。。
2.2 NetAnim
2.2.1 安装
一般都包含在ns3安装包里面,能看到和ns3.35并列的一个文件夹 netanim-3.108
在终端打开这个文件夹,输入以下指令构建模块:
make clean
qmake NetAnim.pro
make
全部结束就能在文件夹里面看见生成了模块 NetAnim
2.2.2 使用
需要先生成 .xml文件,在现有.cc文件上添加
#头文件
#include "ns3/netanim-module.h"
#在仿真开始之前,
AnimationInterface anim("third.xml");
Simulator::Run ();
生成.xml文件之后,需要退回到netanim-3.108文件夹打开NetAnim
cd ../
cd netanim-3.108
./NetAnim
注意大小写,然后会弹出NetAnim的图形化界面,找到刚刚生成的xml文件即可,一般就在ns-3.35文件夹下
PS. NetAnim的运行感觉要麻烦一点,但是可视化部分展示的东西更详细,界面也更舒服,可惜不适用于.py文件
三、调试
3.1 Logging日志模块
以下内容均来源于Manual
- 可以尝试src/core/example里的例程log-example.cc,基本包含了所有的NS_LOG环境变量
- 运行程序的时候有两种开启log输出的方式,常用第二种
#1.设置环境变量 $ NS_LOG="*" ./ns3 run first # 或者选择某个特定的模块 $ NS_LOG="Ipv4L3Protocol" ./ns3 run first #2. 在程序中定义 int main(int argc, char *argv[]) { LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); ...
- log输出的信息分类及等级
每一类信息有对应的优先级顺序:
通过在运行指令里面加入参数可以控制输出内容:
3.2 gdb
sudo ./waf --run scratch/third --command-template="gdb %s"
进入gdb环境以后,常用指令如下: