ns3可以产生多种跟踪文件,非常有利于仿真结果的分析。本文讲解跟踪文件tr各个字段含义,以便写脚本分析结果。
目录
1. ns3跟踪文件示例
ns2产生的跟踪文件tr比ns3要简单得多,举例如下:
+ 0.005032 2 3 cbr 40 ------- 1 0.0 3.0 0 0 - 0.005032 2 3 cbr 40 ------- 1 0.0 3.0 0 0 + 0.0058 2 3 cbr 1000 ------- 2 1.0 3.1 0 1
而ns3明显要复杂得多,每一行都是一个跟踪事件(trace file),tr文件由许多这样的行组成。以下是其中的一行,即一个跟踪事件:
+ 0.508 /NodeList/0/DeviceList/1/$ns3::CsmaNetDevice/TxQueue/Enqueue ns3::EthernetHeader ( length/type=0x806, source=00:00:00:00:00:01, destination=ff:ff:ff:ff:ff:ff) ns3::ArpHeader (request source mac: 00-06-00:00:00:00:00:01 source ipv4: 10.1.1.1 dest ipv4: 10.1.1.2) Payload (size=18) ns3::EthernetTrailer (fcs=0)
事实上,每个跟踪事件由多个字段组成,为了便于分析,将每个字段作为一行,如下:
+ 0.508 /NodeList/0/DeviceList/1/$ns3::CsmaNetDevice/TxQueue/Enqueue ns3::EthernetHeader ( length/type=0x806, source=00:00:00:00:00:01, destination=ff:ff:ff:ff:ff:ff) ns3::ArpHeader (request source mac: 00-06-00:00:00:00:00:01 source ipv4: 10.1.1.1 dest ipv4: 10.1.1.2) Payload (size=18) ns3::EthernetTrailer (fcs=0)
2. 各个字段含义
第1行 +
表示操作,共有4种,即+, -, d, r,分别表示入队,出队,丢包,接收。
第2行 0.508
表示仿真时间(我的理解是事件被触发的时间),单位是秒。
第3行 /NodeList/0/…
表示触发该事件的跟踪源,即谁触发了该事件。NodeList是跟踪命令空间(trace namespace)的根,类似于文件系统的根“/”,/NodeList/0表示第一个节点,DeviceList/1表示第二个网络设备(让我迷惑的是,我程序只给每个节点安装一个NetDevice,这里应该是DeviceList/0才对,谁能帮忙解释下?)。$ns3::CsmaNetDevice表示网络设备(NetDevice)的类型。TxQueue/Enqueue表示跟踪路径(第一行的”+”与这里对应)。
+ TxQueue/Enqueue
– TxQueue/Dequeue
d 暂时不知(所产生tr文件,没有这项)
r MacRx
第4行 ns3::EthernetHeader
描述以太网头部,类型0x0806是ARP协议,目标地址为ff:ff:ff:ff:ff:ff,是一个广播包。
第5行 ns3::ArpHeader
ns3::ArpHeader (request source mac: 00-06-00:00:00:00:00:01 source ipv4: 10.1.1.1 dest ipv4: 10.1.1.2) 描述ARP协议头部。
第6行 Payload(size=18)
有效负荷,18字节实为以太网帧头部的大小(目标MAC地址6字节 + 源MAC地址6字节 + 类型2字节 + FCS4字节)。
第7行 ns3::EthernetTrailer(fcs=0)
帧校验序列(Frame Check Sequence,FCS)采用32位CRC循环冗余校验,旨在检测帧是否引入了错误(即比特是否发生翻转),差错的原因包括信号强度衰减和电磁能量泄露。传输该帧的适配器构造以太网帧时,计算CRC填入FCS字段,目的适配器接收到帧后,对帧执行同样的映射,比较两者的值。
理解了这些,接下来就是写脚本分析了。如果有更好的分析仿真产生数据的方法,希望您能与我分享Jelline@126.com。
参考资料:
[1] ns-3-tutorial.pdf
附:以太网帧所携带的网络层数据类型
表1 Ethernet II帧格式常用类型字段
类型 |
值 |
类型 |
值 |
类型 |
值 |
Netware |
8137 |
RARP |
8035 |
LAT |
6004 |
XNS |
0600,0807 |
IP(Wines) |
0BAD,80C4 |
LAVC |
6007 |
IP |
0800 |
DRP |
6003 |
ARP(AppleTalk) |
80F3 |
ARP |
0806 |
微信赞赏
支付宝赞赏
关于ns2跟踪文件分析可参考《Trace Analysis Example》http://nile.wpi.edu/NS/analysis.html