ns-2与TCP拥塞模拟 之二 模拟输出的封包trace文件格式
脚本中的命令“$ns trace-all $nd”指定在out.tr文件中记录仿真过程中封包传送的所有事件。以下简要介绍out.tr文件中各列的含义,如下给出了一个out.tr文件中可能的7行数据。每一条记录都由12列数据组成,各列数据的含义如表8.1所示。
r 1.658 1 2 cbr 1000 ------- 2 1.0 3.1 193 318
+ 1.658 2 3 cbr 1000 ------- 2 1.0 3.1 193 318
d 1.658 2 3 cbr 1000 ------- 2 1.0 3.1 193 318
+ 1.66 1 2 cbr 1000 ------- 2 1.0 3.1 195 322
- 1.66 1 2 cbr 1000 ------- 2 1.0 3.1 195 322
- 1.660541 2 3 cbr 1000 ------- 2 1.0 3.1 179 279
r 1.661341 2 3 tcp 1040 ------- 1 0.0 3.0 55 272
文件out.tr各列数据含义
列 序 号 |
英文名字 |
说 明 |
备 注 |
1 |
event |
事件发生的原因 |
r:表示被某个节点接收;+:表示进入了队列;-:表示离开队列;d:表示数据包被丢弃 |
2 |
time |
事件发生的时间 |
|
3 |
from_node |
事件发生的开始节点 |
|
4 |
to_node |
事件发生的结束节点 |
|
5 |
pkt_type |
数据包的类型 |
|
6 |
pkt_size |
数据包的大小,单位是字节 |
|
7 |
flags |
标记标注 |
|
8 |
fid |
数据包属于哪一个数据流 |
在Tcl脚本中定义,如$udp set fid_ 2 |
9 |
src_addr |
来源端 |
格式为a.b,a代表节点编号,b表示端口号 |
10 |
dst_addr |
目的端 |
格式为a.b,a代表节点编号,b表示端口号 |
11 |
seq_num |
数据包的序号 |
表示的是网络层包的顺序号,需要注意的是,对于UDP应用来说是不需要顺序号的,但是ns-2依然维持这个顺序号是为了方便统计分析 |
12 |
pkt_id |
数据包的id |
|
以示例中的第一条记录为例,意思是说有一个编号为318的数据包,对应的数据流id为2,包序号为193,长度为1000B,类型为CBR;该包从节点1的0号端口发出,由节点3的1号端口接收;在时间1.658s的时候,从节点1进入了节点2的队列中,包被接收。
理解各列数据的含义后,就可以使用awk等工具进一步加工数据了。如果想得到直观的显示,还可以使用gnuplot等工具绘图。例如,经过数据处理后,建立在UDP上的CBR发送的各数据包的传输时间,使用gnuplot可以作出所示的图,以直观显示效果。