[open $opt(tr) w]
$ns_ trace-all $tracefd
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
s -t 0.000001000 -Hs 8 -Hd -2 -Ni 8 -Nx 113.58 -Ny 410.32 -Nz 0.00
-Ne 10000.000000 -Nl AGT -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 8.254
-Id 8.255 -It diffusion -Il 0 -If 0 -Ii 1500389329 -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
必须要注意的是-Hd的值经常为-1 or -2.
-1意味着该分组是广播分组。
-2意味着该分组的目的节点还没有被设置,在应用代理层和路由代理层的交互中较常用。
Between (-Nl AGT) and routing (-Nl RTR) levels.
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:
转发最优次数
该列仍在开发之中,新的标识将被添加进来用于其他应用。
3、一个awk实例
# 初始化设定
BEGIN {
sendLine = 0;
recvLine = 0;
fowardLine =
0;
}
# 应用层收到包
$0 ~/^s.* AGT/ {
sendLine ++ ;
}
# 应用层发送包
$0 ~/^r.* AGT/ {
recvLine ++ ;
}
# 路由层转发包
$0 ~/^f.* RTR/ {
fowardLine ++ ;
}
# 最后输出结果
END {
printf "cbr s:%d r:%d, r/s Ratio:%.4f, f:%d \n", sendLine,
recvLine, (recvLine/sendLine),fowardLine;
}