Ns3官方手册学习笔记
概念概述
关键抽象
节点
基本的计算设备抽象为节点,class 表示为Node
应用
生成一些要模拟的活动的用户程序的基本抽象 Application
频道
基本的通信子网抽象 Channel
网络设备
网络设备抽象涵盖了软件驱动程序和模拟硬件 NetDevice
一个网络设备被安装在Node中,以便在模拟中通过Node与其他设备进行通信
拓扑助手
连接NetDevices到Node、NetDevices到Channels、分配IP地址等常见任务,提供拓扑帮助器对象,这些对象将这些不同的操作组合成一个易于使用的模型
追踪
有两种基本策略可以从ns-3获取输出:
使用通用的预定义批量输出机制并解析其内容以提取有趣的信息;
或者以某种方式开发一种输出机制,可以准确地(也许只是)传达想要的信息。
使用预定义的批量输出机制的优点是不需要对ns-3进行任何更改,但可能需要编写脚本来解析和过滤感兴趣的数据。通常,PCAP 或NS_LOG 输出消息在模拟运行期间被收集,并通过脚本单独运行,这些脚本使用grep,sed或awk解析消息并将数据减少和转换为可管理的形式。必须编写程序来进行转换,所以这不是免费的。 NS_LOG输出不被视为ns-3 API 的一部分,并且可以在版本之间更改而不会发出警告。此外, NS_LOG输出仅在调试版本中可用,因此依赖它会导致性能损失。当然,如果感兴趣的信息不存在于任何预定义的输出机制中,这种方法就会失败。
ns-3提供了另一种机制,称为跟踪,它避免了批量输出机制中固有的一些问题。它有几个重要的优点。首先,您可以通过仅跟踪您感兴趣的事件来减少必须管理的数据量(对于大型模拟,将所有内容转储到磁盘进行后处理可能会产生 I/O 瓶颈)。其次,如果您使用此方法,您可以直接控制输出的格式,从而避免使用、sed或脚本 进行后处理步骤。如果您愿意,您的输出可以直接格式化为 gnuplot 可接受的格式,例如(另请参阅 GnuplotHelperawkperlpython)。您可以在核心中添加挂钩,然后其他用户可以访问这些挂钩,但除非明确要求这样做,否则不会产生任何信息。由于这些原因,我们认为ns-3跟踪系统是从模拟中获取信息的最佳方式,因此也是ns-3中最重要的理解机制之一。
生硬的手段
有很多方法可以从程序中获取信息。最直接的方法是将信息直接打印到标准输出
std:cout
从长远来看,这可能不会非常令人满意。随着程序中打印语句数量的增加,处理大量输出的任务将变得越来越复杂。如果您继续沿着这条路走下去,您可能会发现您已经重新实现了该NS_LOG机制
概述
ns-3跟踪系统建立在独立跟踪源和跟踪接收器的概念之上,以及将源连接到接收器的统一机制。
跟踪源是可以指示模拟中发生的事件并提供对有趣基础数据的访问的实体。
函数回调
回调函数的使用分为以下3步:定义函数指针、赋值和调用。
在ns3中,为了简化操作,这些步骤都被封装在了相应的类和函数中。首先,函数指 针由Callback类模板定义。Callback类模板可以定义函数签名的返回值和最多9个形参。 其次,Callback对象的创建和赋值操作由MakcCallback()函数来完成。将Callback类和 MakeCallback()函数应用在前文代码中,可以得到下面的示例代码。
追踪细节
官网写的很复杂 建议看原文