跟学NS3仿真实现Tracing系统 记录。
一. NS3 Tracing System
NS3提供两种tracing机制:ASCII码tracing和pcap级别的tracing。
- ASCII码Tracing
NS3提供了封装底层tracing系统的helper功能,用来提供配置简单数据包的更多细节。如果你使用了这个功能,将在ASCII文件中输出结果。
比如在myfirst.cc脚本中添加ASCIItracing输出。
(1) 首先,在Simulator::Run()前,添加下面的代码:
AsciiTraceHelperascii ascii; //创建一个ASCIItrace对象
pointToPoint.EnalbeAsciiAll(ascii.CreateFileStream("myfirst.tr")); //包含两个方法调用。
//CreateFileStream()用未命名的对象在协议栈中创建了一个文件流,并把这个文件流传递给了调用方法,即创建了一个对象代表着一个名为“myfirst.tr”的文件,并传递给了NS3。
//EnableAsciiAll()告诉helper你想要将ASCIItracing安装在仿真中的点到点设备上,并且你想要接收端以ASCII格式写出数据包移动信息。
这两行代码用来打开一个将被写入名为“first.tr”文件中的数据流。代码段中的第二行告诉NS3在仿真中为所有点到底设备启用ASCIItracing功能,并且你想要用ASCII格式来写出数据流中数据包的移动信息。
(2)使用waf来执行脚本
(3)运行该脚本
sudo ./waf --run scratch/myfirst
(4)编译成功以后,在ns-allinone-3.31/ns-3.31目录中多了一个myfirst.tr文件
(5)打开myfirst.tr文件
sudo vim myfirst.tr
- PCAPTracing
NS3-helper还可以生成以.pcap为后缀的格式文件,缩写pcap表示packetcapture,事实上是包含有定义一个.pcap文件格式的API。这个文件可以使用Wireshark工具打开并分析。
(1)采用myfirst.cc的脚本为例子,首先在脚本程序的Simulator::Run()代码前添加如下代码
pointToPoint.EnablePcapAll ("myfirst");
(2)如上例,编译
(3)如上例,执行
(4)运行成功以后,可以在ns-3.31目录中看到myfirst后缀为.pcap文件。
(5)Wireshark打开.pcap文件
将myfirst-0-0.pcap和myfirst-1-0.pcap文件从虚拟机中复制过来,打开