aodv trace analys

来源:互联网 发布:软件需求分析师前景 编辑:程序博客网 时间:2024/06/13 09:59

s 1.000000000 _1_ AGT --- 0 tcp 40 [0 0 0 0] ------- [1:0 4:0 320] [0 0] 0 0
r 1.000000000 _1_ RTR --- 0 tcp 40 [0 0 0 0] ------- [1:0 4:0 32 0][0 0] 0 0
s 1.000000000 _1_ RTR --- 0 AODV 48 [0 0 0 0] ------- [1:255 -1:25530 0] [0x2 1 1 [4 0] [1 4]] (REQUEST)
s 1.000115000 _1_ MAC --- 0 AODV 100 [0 ffffffff 1 800] -------[1:255 -1:255 30 0] [0x2 1 1 [4 0] [1 4]] (REQUEST)
r 1.000915747 _2_ MAC --- 0 AODV 48 [0 ffffffff 1 800] -------[1:255 -1:255 30 0] [0x2 1 1 [4 0] [1 4]] (REQUEST)
r 1.000940747 _2_ RTR --- 0 AODV 48 [0 ffffffff 1 800] -------[1:255 -1:255 30 0] [0x2 1 1 [4 0] [1 4]] (REQUEST)
s 1.001821973 _2_ RTR --- 0 AODV 48 [0 ffffffff 1 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
s 1.002216973 _2_ MAC --- 0 AODV 100 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003017720 _1_ MAC --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003017747 _0_ MAC --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003017773 _3_ MAC --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003042720 _1_ RTR --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003042747 _0_ RTR --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
r 1.003042773 _3_ RTR --- 0 AODV 48 [0 ffffffff 2 800] -------[2:255 -1:255 29 0] [0x2 2 1 [4 0] [1 4]] (REQUEST)
s 1.006172365 _0_ RTR --- 0 AODV 48 [0 ffffffff 2 800] -------[0:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
s 1.006487365 _0_ MAC --- 0 AODV 100 [0 ffffffff 0 800] -------[0:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.007288138 _2_ MAC --- 0 AODV 48 [0 ffffffff 0 800] -------[0:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.007313138 _2_ RTR --- 0 AODV 48 [0 ffffffff 0 800] -------[0:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
s 1.011207534 _3_ RTR --- 0 AODV 48 [0 ffffffff 2 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
s 1.011542534 _3_ MAC --- 0 AODV 100 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.012343307 _4_ MAC --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.012343333 _5_ MAC --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.012343334 _2_ MAC --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.012368307 _4_ RTR --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
s 1.012368307 _4_ RTR --- 0 AODV 44 [0 0 0 0] ------- [4:255 1:25530 3] [0x4 1 [4 4] 10.000000] (REPLY)
r 1.012368333 _5_ RTR --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
r 1.012368334 _2_ RTR --- 0 AODV 48 [0 ffffffff 3 800] -------[3:255 -1:255 28 0] [0x2 3 1 [4 0] [1 4]] (REQUEST)
s 1.012963307 _4_ MAC --- 0 ARP 80 [0 ffffffff 4 806] -------[REQUEST 4/4 0/3]
r 1.013604081 _3_ MAC --- 0 ARP 28 [0 ffffffff 4 806] -------[REQUEST 4/4 0/3]
s 1.014009787 _5_ RTR --- 0 AODV 48 [0 ffffffff 3 800] -------[5:255 -1:255 27 0] [0x2 4 1 [4 0] [1 4]] (REQUEST)
s 1.014019081 _3_ MAC --- 0 RTS 44 [4fe 4 3 0]
r 1.014371854 _4_ MAC --- 0 RTS 44 [4fe 4 3 0]
s 1.014381854 _4_ MAC --- 0 CTS 38 [3c4 3 0 0]
r 1.014686627 _3_ MAC --- 0 CTS 38 [3c4 3 0 0]

各列的意思是什么?帮助文档:翻译如下:(可能不准确):

1. the first feild is a letter that can have thevalues r/s/f/D for received sent/forward/dropped,respectively,itcan also be M giving a location or
a momvement indication,this is describedletter
第一个字段是一个字母:r、s、f、D分别表示接收、发送、转发、丢弃,这个字段也可以是M
表示是固定还是移动。


2.the secondfield is the time
第2个字段表示时间


3.the thirdfield is the node number
第3个字段表示处理这个包的节点ID


4.the fourthfield is MAC to indicate if the packet concerns a MAC layer
,it is AGT to indicate the transport layer ,or RTR if it concernsthe
routed packet,it can also be IFQ to indicate events related tothe
interference priority queue (like drop ofpackets)
第四个字段MAC表示包的层位置,如果是AGT代表传输层的包,RTR表示路由层的包)
如果是IFQ则表示干扰优先队列,如:丢弃的包


5.after thedashes come the global sequence number of the packet (this
si not the tcp sequence number)
这是一个全局序列包,不是托tcp包,(我的理解是包括控制包和数据包的数目)


6.at the nextfield comes more information on the packet type(eg.tcp,ack,orudp)
包的类型


7.then comesthe packet size in bytes
包的大小


8.the 4 numbers in the first square barkets concernmac layer information.the first
hexadecimal number ,a2 (which equals 162 in decimal)specifies theexpected time in
seconds to send this data packet over the wireless channel,thesecond number,1,
stands for the MAC-id of the sending node,and the third ,2 ,is thatof the receiving
node.the fourth number 800,specifies the MAC type is eth_ip.
第一个方括号,第一个是关于MAC层的信息,a2表示16进制(十进制的162)表示想发送数据到无线信道的时间。第2个数字1,表示发送节点的mac_ID,第3个字段2,代表接收节点,第4个字段800,表示MAC类型是以太网。


9.the nextnumber in the second square brackets concern the ip source andthe
destination address ,then the ttl(time to live)of the packet(in ourcase 32)
第2个方括号的数字表示源节点和目的节点的地址,和包的生存时间,在这个例子中,生存时间是32


10.the thirdbrackets concern the tcp information :its sequence number andthe
acknowledgement number
第3个括号表示的是tcp的信息:tcp的序列号和应答号

AODV <wbr>trace文件字段意义及分析脚本

Trace的功能是记录仿真仿真过程的,trace可以根据用户的需要记录仿真过程中的任何一个细节。当一次仿真结束之后,所有的对仿真的分析都是基于trace文件的,如传输速率、延迟时间等。Trace文件详细的记录了每个节点上的时间信息、流量信息、节点的信息等。下面是一个trace文件的一行记录:


r 10.492268908 _0_ RTR --- 11 tcp532 [0 ffffffff 1 800] --- [1:0 2:0 29 0] [11] 2 0


它表示的内容是:

标号为0的节点在10.492268908秒时收到一个tcp分组,该分组的UID为11,长度532,接收节点的MAC地址为1,发送节点的MAC地址为ffffffff,IP头的源地址为1节点的0号端口,目的地址为2号节点的0端口,分组的TTL值为29。


为了能把由cmu-trace对象产生的无线trace融合到NS原有的trace体系中,NS引入了一个修订的trace格式。可以通过下面这个命令使用修订版的trace格式:
$ns_ use-newtrace


下面是修订版的trace文件的一行:
s -t 2.556838879 -Hs 1 -Hd -2 -Ni 1 -Nx386.32 -Ny 398.30 -Nz 0.00 -Ne -1.000000 -Nl AGT -Nw --- -Ma 0 -Md0 -Ms 0 -Mt 0 -Is 1.0 -Id 2.0 -It tcp -Il 40 -If 0 -Ii 0 -Iv 32 -Pntcp -Ps 0 -Pa 0 -Pf 0 -Po 2


第一个字段表明了发生的事件类型,第二个字段可以代表时间或全局设置;Hs代表本节点的ID,Hd代表下一跳节点的ID;字段以“-N”引导的是节点特性标记,可以代表节点ID、坐标、trace层等信息。有关更多的trace信息,可以参考NS下的源文件cmu-trace.cc。


了解了trace的格式,接下来就利用gawk工具获取trace中的有用数据,用来统计分析有效发送量和时延。
计算有效发送量时,首先在trace文件中选出所有Agent层的数据包,统计所有Agent层发送的数据分组和成功接收的数据分组个数。值得注意的是接收者可能接收到一个数据包的多个重复发送,在awk脚本中通过trace输出的数据包的序号,对重复包只能计数一次。主要语句如下,最后有效发送量即recvLine/sendLine,采用trace修订之前的版本。


#应用层收到包
$0 ~/^s.*AGT/{
if(sseq[$6] == -1) { #$6意义为tcp数据的序列号
sendLine++;
sseq[$6]=$6;
}
}
$0 ~/^r.*AGT/{ #应用层发送包
if(rseq[$6]==-1){
recvLine ++;
rseq[$6] = $6;
}
}


采用修订版trace格式,端到端延时的计算思想如下:首先提取trace文件中定义的相互通信的节点对,将pi号相同的记录中的时间域相减,即得该通信节点对发送数据包的延时,取所有通信对发送延迟的平均可得网络的平均延时,主要程序如下:


time = $3;
packet_id = $41;
if ( ($19 == "AGT") &&(start_time[packet_id] == 0) )
{ #判断是不是agent这一层,因为点对点的delay
start_time[packet_id] = time;  #如果这是第一次看到这个包,说
#明是源发出,记录发包时间
if ( packet_id > highest_packet_id )
highest_packet_id = packet_id; #记录目前最高的packet ID
}
if ( ($1 == "r") && ($19 == "AGT")) #r表示收包,也在agent层
{ #记录收包时间  
end_time[packet_id] = time;
}
if ($1 == "d")   #d表示丢包
{
drop_packet++;
end_time[packet_id] = -1;
}
……
for ( packet_id = 0; packet_id <= highest_packet_id;packet_id++ ) {
start = start_time[packet_id];
end = end_time[packet_id];
if ( end!=-1 && start< end )
{
packet_duration = end – start;   #单跳链路
duration_total += packet_duration; #总持续时间
packet_number++;             #记录总包数  
}
}
delay=duration_total / packet_number;   #时延