天天看点

NS-3基础

节点

基本设备被抽象为节点,用C++的node类来描述。

NodeContainer类用于追踪一组节点指针,特别是在设备助手一次在多个节点安装设备,需要在大量的相同节点上安装设备。

// 新建两个节点对象
NodeContainer nodes;
nodes.Create (2);
           

应用

需要被仿真的用户程序被抽象为应用,用C++的Aapplication类来描述。

UdpEchoClientApplication:回显服务器端所回复的分组,同时记录时间

UdpEchoServerApplication:由UdpEchoServerHelper管理

信道

把节点连接到代表数据交换信道的对象上,用C++的channel类来描述。

信道模型例子:

CsmaChannel : 模拟一个可以用于实现载波监听多路访问通信子网中的媒介。

PointToPointChannel : 这个类代表简单的点对点信道,无多点通信能力,最多可以由2个点至点连接的网络设备。在通道中有两种”线“。第一个连接的设备获取0号线上的传输,第二个设备得到1号线上的传输。

WiFiChannel

网络设备

网络设备:硬件设备和软件设备的总和,用C++的NetDevice类来描述。

网络设备安装在节点上,使得节点通过信道和其他节点通信。NetDevice类提供类管理连接节点和信道对象的各种方法,并且允许开发者以面向对象的方法来定义。

CsmaNetDevice

PointToPointNetDevice

WiFiNetDevice

拓扑帮助

在节点、网络设备、信道之间部署许多连接,用Helper类。

创建一个网络设备,配置一个MAC地址,把此网络设备装载到节点上,设置节点中的协议栈以及连接网络设备到一个信道上,需要许多分立的NS3核心操作。

TopologyReaderHelper : 这个类使得更容易配置和使用通用的TopolgyReader

InternetStackHelper : 是一个安装PointToPointHelper对象和点到点网络设备的网络协议栈的拓扑生成器类,为每一个节点容器中的节点安装一个网络协议栈(如TCP、IP、UDP)

优化技术

数据跟踪与采集的方法分成两类:

Logging系统 : 直接将执行过程显示在命令行中,调试仿真脚本。

Tracing系统 : 将采集到的数据直接存放在一个文件中,以便后期的处理与分析。

Logging系统提供7个等级,由高至低:

  1. LOG_ERROR 记录错误信息
  2. LOG_WARN 记录警告信息
  3. LOG_DEBUG 调试信息
  4. LOG_INFO 程序相关信息
  5. LOG_FUNCTION 当有函数被调用时,该调用信息就被记录
  6. LOG_LOGIC 对于整体逻辑的描述
  7. LOG_ALL 包含上述的所有信息

例子:

LogComponentEnable("UdpEchoClientApplication",LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication",LOG_LEVEL_INFO);
           

Tracing系统:

包含Tracing Sources、Tracing Sink以及两者合一

Tracing系统常用的Helper类:

  1. ASCII Tracing 以ASCII格式的信息输出

    例子:使用EnableAsciiAll函数,通知所有helper将所有的关于point to point设备的仿真信息都打印成Ascii格式

AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("Asciifirst.tr"));
           
  1. PCAP Tracing 生成以pcap为后缀的格式文件,使用wireshark文件打开并分析