NS3基本命令学习
2016-03-09 本文已影响639人
53324d792ce6
脚本运行
./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 <iostream>//就可以使用标准的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