NS3之路---Tweaking

TWEAKING

首先,关于这一章,实在不知道这个名字该如何翻译,因此在此直接使用英文。

但是主要讲了三部分内容,分别介绍了对日志模块、命令行参数、跟踪系统的使用。

  1. 日志模块

在前面使用过的first.cc中已经简单介绍了下相关的日志类。一般来说,大规模的系统中都会使用日志记录相关信息,ns3同样如此。而通常只有标准错误(stderr)信息才会被输出到控制台。某些系统也会将警告信息输出。我们需要了解的是,日志的存在给我们提供了详细的系统运行过程,使我们的调试过程变得相对容易。

Ns3日志模块提供了一个很好的日志系统,我们可以随时随地的从中获取我们想要的信息。目前ns3定义了7种日志类型(LOG_TYPE)。

l  LOG_ERROR:错误信息,相关宏为NS_LOG_ERROR

l  LOG_WARN:警告信息,相关宏为NS_LOG_WARN

l  LOG_DEBUG:调试信息,相关宏为NS_LOG_DEBUG

l  LOG_INFO:程序运行过程信息,宏为NS_LOG_INFO

l  LOG_FUNCTION:函数调用的描述信息,宏为NS_LOG_FUNCTION(成员函数)和NS_LOG_FUNCTION_NOARGS(静态函数)

l  LOG_LOGIC:函数逻辑信息,宏为NS_LOG_LOGIC

l  LOG_ALL:记录以上所有信息,没有宏。

对于以上每种日志类型,也有等级之分,从上至下递增。使用LOG_LEVEL_TYPE启动层级作用。默认情况下,日志类型等级以下的信息都会被记录(包括自身)。例如使用LOG_INFO只记录宏NS_LOG_INFO定义的信息,而LOG_LEVEL_INFO,则会记录NS_LOG_ERROR,NS_LOG_WARN,NS_LOG_DEBUG定义的信息。

Ns3也提供了另外一个无条件日志类,NS_LOG_UNCOND,记录相关无条件信息。

启动NS_LOG

在第一个例子中,在运行完之后可以看到一系列的输出信息。这些日志信息是由UdpEchoServerApplication和UdpEchoClientApplication记录的,我们可以通过修改NS_LOG环境变量,让其输出信息满足我们的需求。

在first.cc中,有个例子启用了UdpEchoServerApplication的日志:

LogComponentEnable (“UdpEchoServerApplication”, LOG_LEVEL_INFO);

从这句代码中可以看到将UdpEchoServerApplication这个组件的日志等级设置为INFO并将其启用。该过程也可以通过以下方法完成:

l  使用命令行参数设置NS_LOG环境变量

$ export NS_LOG = UdpEchoServerApplication = LEVEL_ALL

上述命令的作用其实就相当于在程序中做如下设置,其中左边是要修改的组件的名字(不是类的名字),右边则是日志的类型:

UdpEchoServerApplication = LEVEL_ALL

如此一来就改变了获取到的日志信息量。

另外为了看出是哪个组件的信息, 我们可以再上述命令中添加一项:

$ export ‘NS_LOG = UdpEchoServerApplication = LEVEL_ALL | prefix_func’

注意到,上述条件必须添加单引号。而且在日志等级和前缀之间使用竖线表示OR操作。于是我们就能够清楚的看到信息是来自于哪个组件。上述命令只记录了一个组件,如果要修改多个组件呢?我们可以使用冒号来表示,如下:

$ export ‘NS_LOG = UdpEchoServerApplication = LEVEL_ALL | prefix_func :   UdpEchoClientApplication = LEVEL_ALL | prefix_func ’

除了查看组件名字的前缀,我们也可以查看当前仿真时间,使用prefix_time,同样也使用竖线分隔。

设置全部组件的情况使用 * 作为通配符,替换上述的组件名字即可。

$ export ‘NS_LOG = * = LEVEL_ALL | prefix_func’

Ns3支持标准输出的重定向操作,将输出到屏幕的信息重新定位到文件中。

$ ./waf --run  PROGRAMFILE  >  LOG.out  2 >& 1

PS:>符号是重定向符号,那么1和2分别表示什么呢? 首先在Linux中,每个进程都和三个系统文件相关联,分别为标准输入stdin、标准输出stdout、标准错误stderr,而这三者对应的文件描述符分别为0,1,2。

并且,2 > 1表示的是将标准错误重定向到文件1中,而不是标准输出。因此需要使用&符号来表示,固为:2 > & 1的格式。

在代码中添加日志记录部分。通过宏调用日志组件,并将其添加到程序中。

日志组件的定义:

NS_LOG_COMPONENT_DEFINE (“First”);

定义完该组件之后变可以通过修改NS_LOG环境变量记录相关信息,例如:

$ export  NS_LOG = First = LEVEL_TYPE

在重新制定日志的相关信息之前,需要将之前建立的日志等级清除掉:

$ export NS_LOG =

 

  1. 2.   使用命令行参数

Ns3中提供了解析命令行参数的机制,可以通过命令行来设置程序中局部或者全局的变量。但要使用该解析器,就必须在使用之前先声明,如下:

int main (int argc,  char * argv[]) {

……

CommandLine cmd;       //声明了命令行对象

cmd.Parse(argc, argv);   //调用自定义方法解析参数

……

}

为了确认是否解析正确,可以通过打印相关参数识别。Ns3提供了--PrintHelp命令,使用打印函数不需要添加VALUE值,修改程序中的参数时需要有VALUE值。使用双引号将程序名称和参数包起来,如:

$ ./waf –run “YOUR-PROGRAM   --COMPONENT [= VALUE]”

钩子

(等待解析…….)

 

  1. 3.   使用跟踪系统

Ns3仿真在于将输出保存起来,用于后期分析。因此,其开发出了一套追踪系统,分为三个层次。

基本用户:直接使用系统产生标准的追踪源,允许自定义追踪源的产生组件。

中间用户:可以对系统的输出格式进行修改以满足自身的需求,也可以再不修改核心代码的情况下,添加新的追踪源。

高级用户:修改核心代码,添加任何想要追踪的细节源。

 

ASCII文件追踪

在程序运行之前(Simulator.Run())定义好ASCII文件,程序开始之后便开始了跟踪。最终结果是产生*.tr文件。下面定义了ASCII追踪实例,该实例创造一个文件流并跟踪你定义的组件变量。

AsciiTraceHelper ascii;

YOUR-COMPONENT-NAME.EnableAsciiAll (ascii.CreateFileStream(“*.tr”));

tr文件可以使用编辑器打开。具体解析过程涉及相关知识较多,详细参考NS3 tutorial第46-48页。

PCAP追踪

使用YOUR-COMPONENT-NAME.EnablePcapAll(“NAME”);便可以生成Pcap的追踪文件,值得说明的是NAME不需要后缀,会自动生成。

Pcap文件的打开工具有两种。1是图形化界面的WireShark,作为包嗅探器,可以显示整个运作过程。2是Linux提供的tcpdump命令。无法使用编辑器打开该类文件。

 

转载于:https://www.cnblogs.com/yibobo-blog/p/4940549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tweaking.com - Windows Repair 1.9.17老朽痴拙汉化版(系统修复)是一个免费的绿色软件,解压后就可以开始使用。windows是一个脆弱的操作系统,安装软件,过度优化等操作都会让其运行不稳定,或者崩溃。所以当你发现系统有小问题的时候,你就应该想办法修复它,从而避免错误的扩散。这次介绍的Windows Repair就是一个有针对性的修复软件,如果你束手无策,那么使用它可能会有意想不到的效果。这个软件支持的系统也是非常广泛。windows xp,2003,vista、2008、windows 7、windows 8 都可以使用它。   打开这个软件后,是一个向导式的界面,上面有步骤。其实我们只需要选中其中的“开始修复”界面,然后使用“自定义模式”这个自定义修复模式。   点击 开始 后就会看到自己选择需要修复的项目。 Windows Repair所有能够修复的windows问题:   1、重置注册表权限。   2、重置文件权限。   3、注册系统文件。   4、修复wmi.(一项核心的windows管理技术),可能也就是windows自带的“管理”功能。   5、修复windows防火墙。   6、修复ie浏览器。   7、修复MDAC和MS jet。(微软数据库访问组件和資料庫引擎)   8、还原host文件。   9、修复图标。 10、修复winsock和刷新DNS缓存。   11、删除临时文件。   12、修复代理设置。   13、不隐藏非系统文件。   14、修复windows更新功能。   http://download.csdn.net/detail/u010169080/6253289
Tweaking.com - Windows Repair 2.0.1老朽痴拙汉化便携版(系统修复)是一个免费的绿色软件,解压后就可以开始使用。windows是一个脆弱的操作系统,安装软件,过度优化等操作都会让其运行不稳定,或者崩溃。所以当你发现系统有小问题的时候,你就应该想办法修复它,从而避免错误的扩散。这次介绍的Windows Repair就是一个有针对性的修复软件,如果你束手无策,那么使用它可能会有意想不到的效果。这个软件支持的系统也是非常广泛。windows xp,2003,vista、2008、windows 7、windows 8 都可以使用它。   打开这个软件后,是一个向导式的界面,上面有步骤。其实我们只需要选中其中的“开始修复”界面,然后使用“自定义模式”这个自定义修复模式。   点击 开始 后就会看到自己选择需要修复的项目。 Windows Repair所有能够修复的windows问题:   1、重置注册表权限。   2、重置文件权限。   3、注册系统文件。   4、修复wmi.(一项核心的windows管理技术),可能也就是windows自带的“管理”功能。   5、修复windows防火墙。   6、修复ie浏览器。   7、修复MDAC和MS jet。(微软数据库访问组件和资料引擎)   8、还原host文件。   9、修复图标。 10、修复winsock和刷新DNS缓存。   11、删除临时文件。   12、修复代理设置。   13、不隐藏非系统文件。   14、修复windows更新功能。 ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值