NS3基本命令学习

脚本运行

./war --run scratch/myfirst

日志设置

可以在程序中给程序设置日志级别

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);

程序外export命令设置

export NS_LOG=UdpEchoClientApplication=level_all
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:UdpEchoServerApplication=level_all|prefix_func'
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:UdpEchoServerApplication=level_all|prefix_func|prefix_time'
export 'NS_LOG=*=level_all|prefix_func|prefix_time'
export 'NS_LOG=*=level_all|prefix_func|prefix_time'
 ./waf --run scratch/myfirst > log.out 2>&1
/*
./waf --run scratch/myfirst 1> log.out 2>&1
Linux的IO输入输出有三类
Standard Input 代码 0
Standard Output 代码 1
Standard Error 代码 2
2>&1 &1表示类似1,错误输出绑定到1上
*/
export NS_LOG= //清除脚本外ns3日志设置

使用命令行参数(当次运行有效)

CommandLine cmd;
cmd.Parse (argc, argv);//在程序中加入
./waf --run "scratch/myfirst --PrintHelp"
./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps --ns3::PointToPointChannel::Delay=2ms --ns3::UdpEchoClient::MaxPackets=2"//要注释掉程序中原来的参数
//自己添加命令行参数
uint32_t nPackets = 1;
CommandLine cmd;
cmd.AddValue("nPackets", "Number of packets to echo", nPackets);
//然后再运行./waf --run "scratch/myfirst --PrintHelp"就可以看到自己添加的参数了
./waf --run "scratch/myfirst --nPackets=2"

使用Tracing

Trace发送端是可以在仿真过程中产生信号事件并且提供有关数据访问通道。
Trace发送端自身是没有用的,必须要跟接收端提供有用信息的代码段“相连”。这种发送端和接收端工作的基本原理是允许用户给已有的tracing发送端关联上新类型的接收端,而不需要编辑和重新编译仿真器的核心,一个用户可以在脚本中定义新的tracing接收端,并且可以将其关联到仿真核心中定义的tracing接收端

ASCII 码Tracing

增加以下代码
#include //就可以使用标准的C++输出
然后,在Simulator::Run()前增加下面的代码:

AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll(ascii.CreateFileStream("myfirst.tr"));

然后编译运行,使用trace可以更加详细的分析仿真过程

启用pcap tracing

pointToPoint.EnablePcapAll ("myfirst");

用tcpdump读取结果或者用Wireshark读取结果

tcpdump -nn -tt -r myfirst-0-0.pcap

你可能感兴趣的:(NS3基本命令学习)