本文档是对 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: 转发最优次数

该列仍在开发之中,新的标识将被添加进来用于其他应用。

【NS2】trace 文件格式(转载)的更多相关文章

  1. 【NS2】NS2 教學手冊(转载)

    之前做毕设的时候搜索NS2的相关资料,发现这个里面涵盖很广,特此收藏,感谢原作者的辛勤劳作. NS2 教學手冊 ( NS2 Learning Guide) [快速連結區] My works  中文影音 ...

  2. FIO 测试磁盘iops 以及读写

    最近在做mariadb的性能,感觉io 有瓶颈,就使用fio 来测试一下磁盘.下文为转载文章(温馨提示:此命令很伤硬盘,测试前请备份数据,- -我就写坏了一个.) FIO 是测试IOPS的非常好的工具 ...

  3. ftrace 简介

    ftrace 简介 ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数 ...

  4. 每天一个linux命令(55):traceroute命令

    通过traceroute​我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...

  5. 查看Oracle执行计划的几种方法

    查看Oracle执行计划的几种方法 一.通过PL/SQL Dev工具 1.直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果.其中,Cos ...

  6. 【转】FIO使用指南

    原文地址:http://blog.csdn.net/yuesichiu/article/details/8722417 Fio压测工具和io队列深度理解和误区 这个文档是对fio-2.0.9 HOWT ...

  7. Oracle 11g R2性能优化 tkprof

    另一篇博文总结了关于SQL TRACE工具的使用方式,但是产生的trace文件格式阅读起来并不是十分友好,为了更好的分析trace文件,Oracle也自带了一个格式化工具tkprof.tkprof工具 ...

  8. 使用Http协议Post上传文件

    转载:http://www.cnblogs.com/softidea/p/5745369.html 转载:https://blog.csdn.net/huanongying131/article/de ...

  9. flash从数据流判断图片格式防止xss攻击

    前段时间测试人员报了一个flash的xss bug,经分析用了Loader.loadBytes且没做数据流格式校验的程序都会中招,自测方法只需一行代码: ExternalInterface.call( ...

随机推荐

  1. 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数

      猜数字游戏--核心代码--猜测次数   #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...

  2. Django--创建

    软件开发架构: c/s架构 客户端 服务端 b/s架构 浏览器 服务端 本质:b/s架构也是c/s架构 HTTP协议 超文本传输协议:规定了客户端与服务端之间消息传输的格式 四个特性: 1.基于TCP ...

  3. day18 9.转账汇款案例(1)

  4. 【洛谷】 P1420 最长连号

    题目描述 输入n个正整数,(1<=n<=10000),要求输出最长的连号的长度.(连号指从小到大连续自然数) 输入输出格式 输入格式: 第一行,一个数n; 第二行,n个正整数,之间用空格隔 ...

  5. sending data mysql slow Mysql查询非常慢的可能原因

    1.用explain看看mysql的执行情况,可以得知,task_id扫描了近20万条数据,而且这个task_id不是索引 2.为这个task_id所在的表,将此字段添加索引后,查询就变得很快了

  6. cf round 480E The Number Games

    题意:给一棵树,点$i$的点权是$2^i$,你需要删掉$k$个点,使得剩下的点连通的情况下剩下的点权值和最大. $k \leq n \leq 10^6$ 如果考虑删哪些点,是不好考虑的,会出问题. 反 ...

  7. 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」

    之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作 ...

  8. arcgis人口专题图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. python学习笔记08-- socket编程

    本节内容: 一.网络基础知识 二.socket概念及相关语法 2.1socket概念 2.2socket解释 2.3socket模块功能介绍 2.4socket粘包问题 2.5Socket多并发 一. ...

  10. 源码:自己用Python写的iOS项目自动打包脚本

    http://www.cocoachina.com/ios/20160307/15501.html 什么?又要测试包! 做iOS开发几年了,每天除了码代码,改Bug之外,最让我烦恼的莫过于测试的妹子跑 ...