【NS2】trace 文件格式(转载)
本文档是对 http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Formats > 的翻译。
译注:本文描述的无线格Trace格式已经有些陈旧,现在一般都是用新的无线Trace文件格式。
本文档介绍了 NS2 网络仿真器的多种 Trace 格式。这里的版本是基于 NS2 2.1b9a 的。已经尽了最大的努力来保证文档的正确性,但是需要注意的是这里并不完全,可能还包含有错误。如果你发现有任何的错误或者省略,请修改此页面来解决这个问题。
多种不同的 Trace 文件都含有一个字符或者缩写开始用来表明此行 Trace 的类型,后接着固定或者可变的 Trace 格式。下面的表格列出了固定和可变的 Trace 文件格式的不同:
- 对于固定的 Trace 格式,表格中列出了所有Event表头下触发 Trace 的事件和Abbreviation 表头下触发 Trace 的事件。具体的格式列在了后面的两列中,每种元素的类型和值列在了“类型”和“值”的下面。有些事件有着多种 Trace 格式。
- 对于可变的 Trace 格式,表格中列出了所有Event表头下触发 Trace 的事件和Abbreviation 表头下触发 Trace 的事件。最后的三列中列出了所有可能的标志、类型和其值,并位于相应的表头下面。
常规的 Trace 格式
这里的信息来自于"The ns Manual " " Trace and Monitoring Support: Trace File Format "一章中。这个格式用于普通的有线操作中。 trace 行将开始于四个可能字符中的一个。
表中列出的更多的无线记录信息没有在Abbreviation 栏中,因为信息直接加在了普通无线 trace 格式中。
Event事件 |
Abbreviation简写 |
Type类型 |
Value值 |
Normal Event 常规事件 |
r: Receive接收 d: Drop丢弃 e: Error错误 +: Enqueue入队 -: Dequeue出队 |
%g %d %d %s %d %s %d %d.%d %d.%d %d %d |
|
|
|
double |
Time 时间 |
|
|
int |
Source Node 源节点 |
|
|
int |
Destination Node 目的节点 |
|
|
string |
Packet Name 报文名 |
|
|
int |
Packet Size 报文大小 |
|
|
string |
Flags 标志位 |
|
|
int |
Flow ID 流标记 ID |
|
|
int |
Source Address 源地址 |
|
|
int |
Source Port 源端口 |
|
|
int |
Destination Address 目的地址 |
|
|
int |
Destination Port 目的端口 |
|
|
int |
Sequence Number 序列号 |
|
|
int |
Unique Packet ID 唯一报文标志 ID |
标志位具体如下表(如果标志没有设置的话将使用“ - ”)。每行从左到右都占一位。可从 ns/trace/trace.cc 中看到。
Value值 |
Meaning含义 |
C |
ECN-echo |
P |
pri_ (一般认为没用) |
- |
|
A |
Congestion Action |
E |
Congestion Experienced (CE) |
F |
Fast Start 快速启动 |
N |
ECN-capable |
SCTP-only |
|
根据报文的不同类型, trace 文件可能记录更多的信息:
Event事件 |
Type类型 |
Value值 |
TCP Trace |
%d 0x%x %d %d |
|
|
int |
Ack Number |
|
hexadecimal |
Flags 标志位 |
|
int |
Header Length 头长 |
|
int |
Socket Address Length Socket 地址长度 |
卫星Satellite Trace |
%.2f %.2f %.2f %.2f |
|
|
double |
Source Latitude 源纬度 |
|
double |
Source Longitude 源经度 |
|
double |
Destination Latitude 目的纬度 |
|
double |
Destination Longitude 目的经度 |
无线 Trace 格式
本节中将包含多种无线的 trace 格式:
- 旧的无线 Trace 格式
- 新的无线 Trace 格式
- AODV Trace 格式
- DSDV Trace 格式
- DSR Trace 格式
- TORA Trace 格式
- 移动节点移动和能量的 Trace 格式
旧的无线 trace 格式
这里的信息来自于"The ns Manual " " Mobile Networking in ns: Trace Support "的章节和"trace/cmu-trace.cc"文件。无线的 trace 文件开始于四个字符中的一个,随后是一种或者两种不同的格式,根据是否记录移动节点的 X 和 Y 坐标而不同。
Event 事件 |
Abbreviation 缩写 |
Type 类型 |
Value 值 |
Wireless Event 无线事件 |
s: Send发送 r: Receive接收 d: Drop丢弃 f: Forward转发 |
%.9f %d (%6.2f %6.2f) %3s %4s %d %s %d [%x %x %x %x] |
|
|
|
%.9f _%d_ %3s %4s %d %s %d [%x %x %x %x] |
|
|
|
double |
Time 时间 |
|
|
int |
Node ID 节点 ID |
|
|
double |
X Coordinate (If Logging Position) X 坐标 |
|
|
double |
Y Coordinate (If Logging Position) Y 坐标 |
|
|
string |
Trace Name Trace 名称 |
|
|
string |
Reason 原因 |
|
|
int |
Event Identifier 事件 ID |
|
|
string |
Packet Type 报文类型 |
|
|
int |
Packet Size 报文大小 |
|
|
hexadecimal |
Time To Send Data |
|
|
hexadecimal |
目的 MAC 地址 |
|
|
hexadecimal |
源 MAC 地址 |
|
|
hexadecimal |
类型 (ARP, IP) |
一些老版本的 NS2 在中括号中有五个十六进制值。其中第一个十六进制值是 MAC 帧控制信息,剩下的四个和上面描述的一样。
根据报文的不同类型, trace 文件可能记录更多的信息:
Event事件 |
Type类型 |
Value值 |
ARP Trace |
------- [%s %d/%d %d/%d] |
|
|
string |
请求或者响应 |
|
int |
源 MAC 地址 |
|
int |
源地址 |
|
int |
目的 MAC 地址 |
|
int |
目的地址 |
IP Trace |
------- [%d:%d %d:%d %d %d] |
|
|
int |
源 IP 地址 |
|
int |
源端口 |
|
int |
目的 IP 地址 |
|
int |
目的端口 |
|
int |
TTL |
|
int |
下一跳节点(如果没有为 0 ) |
DSR Trace |
%d [%d %d] [%d %d %d %d->%d] [%d %d %d %d- |
|
无线网络模拟后生成的trace文件格式于有线网络有很大不同。
--------------------------------------------------------------------------------------------------------
旧版本无线 Trace 格式:
无线网络模拟后tr文件里的记录(有些记录可能会有其他数据)。
1 2 3 4 5:6 7 8 9 [10/11/12/13] 14:16 [ 17 - 18 19 20]
s 3.000000000 _0_ RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:255 30 0]
s 10.00000000 _0_ AGT --- 2 tcp 40 [0 0 0 0] ------- [ 0:0 1:0 32 0]
r 10.00000000 _0_ RTR --- 2 tcp 40 [0 0 0 0] ------- [0:0 1:0 32 0]
s 12.50000000 _0_ RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:255 30 0]
橙色的部分是对这个无线Trace的标注,每条记录共有20栏,下面对各栏表示的意义进行说明:
(1)事件类型: s:分组的发送事件; r:分组的接收事件; d:分组的丢弃事件; f:分组的转发事件;
(2)事件产生的时间。(3)处理该事件的节点ID。(4)Trace种类: RTR:路由器Trace; AGT:代理Trace; MAC:MAC层Trace;
(5:6)分隔符。(7)分组ID。(8)分组类型。(9)分组大小(字节)。[10:13]有关MAC层的详细信息
(10)发送节点在无线信道上发送该分组所期望的时间值,用16进制表示。(11)接收节点的MAC地址。
(12)发送节点的MAC地址。(13)MAC层封装的分组类型。 0x800:IP分组,0x806:ARP分组
(14:16)分隔符。(17)分组发送的源IP地址。节点号.端口号(18)分组发送的目的IP地址。节点号.端口号
(19)分组的TTL值。(20)源节点到目的节点的跳数。
---------------------------------------------------------------------------------------------------------
新版本无线trace格式:
可以通过以下红色字体命令使用修订版的trace格式:
…………
set ns_ [new Simulator]
$ns_ use-newtrace ;# Use new trace format 使用新的trace format
set tracefd [open $val(tr) w]
$ns_ trace-all $tracefd
…………
无线网络模拟后tr文件里的记录:
r
-t 458.664696227 -Hs 0 -Hd -2 -Ni 0 -Nx 350.00 -Ny 500.00 -Nz 0.00 -Ne
-1.000000 -Nl RTR -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 0.0 -Id 2.0 -It
cbr -Il 200 -If 1 -Ii 294 -Iv 32 -Pn cbr -Pi 174 -Pf 0 -Po 2
d -t
458.664696227 -Hs 0 -Hd -2 -Ni 0 -Nx 350.00 -Ny 500.00 -Nz 0.00 -Ne
-1.000000 -Nl RTR -Nw IFQ -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 0.0 -Id 2.0 -It
cbr -Il 220 -If 1 -Ii 286 -Iv 32 -Pn cbr -Pi 169 -Pf 0 -Po 2
s -t
461.127133416 -Hs 0 -Hd -2 -Ni 0 -Nx 350.00 -Ny 500.00 -Nz 0.00 -Ne
-1.000000 -Nl AGT -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 0.0 -Id 2.0 -It
cbr -Il 200 -If 1 -Ii 295 -Iv 32 -Pn cbr -Pi 175 -Pf 0 -Po 2
新的trace格式形如下:
s -t 0.267662078 -Hs 0 -Hd -1 -Ni 0 -Nx 5.00 -Ny 2.00 -Nz 0.00 -Ne -1.000000 -Nl RTR -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 0.255 -Id -1.255 -It message -Il 32 -If 0 -Ii 0 -Iv 32
事件类型
在上述trace记录中,第一列描述了发生在节点上的事件类型,有四种:
s 发送
r 接收
d 丢弃
f 转发
通用标识
第二列以“-t”开始,表示的是时间或者全局设置
-t 时间
-t * (全局设置)
节点属性标识
这一列描述了节点诸如node-id等属性,tracing的层级可能是agent、router或者MAC。这些标识以“-N”开始并如下所示:
-Ni: 节点id
-Nx: 节点的x坐标
-Ny: 节点的y坐标
-Nz: 节点的z坐标
-Ne: 节点能量级别
-Nl: 节点trace层级,比如AGT,RTR,MAC
-Nw: 事件原因。丢包的不同原因如下:
"END" DROP_END_OF_SIMULATION
"COL" DROP_MAC_COLLISION
"DUP" DROP_MAC_DUPLICATE
"ERR" DROP_MAC_PACKET_ERROR
"RET" DROP_MAC_RETRY_COUNT_EXCEEDED
"STA" DROP_MAC_INVALID_STATE
"BSY" DROP_MAC_BUSY
"NRTE" DROP_RTR_NO_ROUTE 即无可用路由
"LOOP" DROP_RTR_ROUTE_LOOP 即存在路由环
"TTL" DROP_RTR_TTL 即TTL已达0
"TOUT" DROP_RTR_QTIMEOUT 即分组过期了
"CBK" DROP_RTR_MAC_CALLBACK
"IFQ" DROP_IFQ_QFULL 即在IFQ已经没有缓存空间。
"ARP" DROP_IFQ_ARP_FULL 即被ARP丢弃
"OUT" DROP_OUTSIDE_SUBNET 也就是说,从域外节点接收到路由更新时被基站丢弃
IP层分组信息
该列标识以“-I”开始,其解释如下:
-Is: 源地址。源端口号。
-Id: 目的地址。目的端口号
-It: 分组类型
-Il: 分组大小
-If: 流id
-Ii: 唯一id
-Iv: ttl值
下一跳信息
该列给出了下一跳信息,标识以“-H”开始。
-Hs: 该节点id
-Hd: 指向目的的下一跳id
MAC层分组信息
该列给出了MAC层信息,标识以“-M”开始
-Ma: 持续时间
-Md: 目的以太网址
-Ms: 源以太网址
-Mt: 以太网类型
“应用层”分组信息
应用层分组信息由应用层类型,如ARP,TCP、adhoc路由协议类型,如DSDV,DSR,AODV等构成。该列由一个前导符号“-P”以及如下所示的不同应用标识:
-P arp
地址解析协议。ARP的细节如下:
-Po: ARP请求/应答
-Pm: 源mac地址
-Ps: 源地址
-Pa: 目的mac地址
-Pd: 目的地址
-P dsr
指明了使用的adhoc路由协议是DSR。有关DSR的信息由下列标识表示:
-Pn: 经过了多少节点
-Pq: 路由请求标志
-Pi: 路由请求序列号
-Pp: 路由应答标志
-Pl: 应答长度
-Pe: src of srcrouting->dst of the source routing
-Pw: 错误报告标志?
-Pm: 错误数量
-Pc: 向谁汇报
-Pb: 来自linka->linkb的链路错误
-P cbr
恒定速率。有关CBR应用的信息标识如下:
-Pi: 序列号
-Pf: 该表被转发了多少次
-Po: 转发最优次数
-P tcp
TCP流信息表示如下:
-Ps: 序列号
-Pa: ack号
-Pf: 该分组被转发了多少次
-Po: 转发最优次数
该列仍在开发之中,新的标识将被添加进来用于其他应用。