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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,326评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,229评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,495评论 25 709
  • 一:LoadRunner常见问题整理1.LR 脚本为空的解决方法:1.去掉ie设置中的第三方支持取消掉2.在系统属...
    0100阅读 4,590评论 0 11
  • 还有十五分钟,就要23了。 凄惨的23岁。荒诞的意外。 怎样能摆脱…
    Flavie阅读 194评论 0 1

友情链接更多精彩内容