www.pudn.com > some-ns2-trace-awk.rar > measure-jitter.awk, change:2007-09-10,size:1863b


#This program is used to calculate the jitters for CBR 
 
# jitter £½((recvtime(j)-sendtime(j))-(recvtime(i)-sendtime(i)))/(j-i),  j > i 
 BEGIN { 
 
# Initialization 
 
     highest_packet_id = 0; 
 
} 
 
{ 
 
   action = $1; 
 
   time = $2; 
 
   #from = $3; 
 
   #to = $4; 
 
   type = $7; 
 
   pktsize = $8; 
 
   #flow_id = $8; 
 
   src = $10; 
 
   dst = $11; 
 
   #seq_no = $11; 
 
   packet_id = $6; 
 
  
 
   if ( packet_id > highest_packet_id ) { 
 
           highest_packet_id = packet_id; 
 
        } 
 
  
 
#Record the transmission time 
 
   if ( start_time[packet_id] == 0 )  { 
 
           # Record the sequence number 
 
           pkt_seqno[packet_id] = seq_no; 
 
           start_time[packet_id] = time; 
 
   } 
 
  
 
#Record the receiving time for CBR (flow_id=2) 
 
   if ( type=="cbr" && action != "d" ) { 
 
      if ( action == "r" ) { 
 
             end_time[packet_id] = time; 
 
      } 
 
    } else { 
 
      end_time[packet_id] = -1; 
 
   } 
 
}                                                        
 
END { 
 
        last_seqno = 0; 
 
        last_delay = 0; 
 
        seqno_diff = 0; 
 
  
 
    for ( packet_id = 0; packet_id = highest_packet_id; packet_id++ ) { 
 
       start = start_time[packet_id]; 
 
       end = end_time[packet_id]; 
 
       packet_duration = end - start; 
 
  
 
       if ( start  end ) { 
 
               seqno_diff = pkt_seqno[packet_id] - last_seqno; 
 
               delay_diff = packet_duration - last_delay; 
 
               if (seqno_diff == 0) { 
 
                       jitter =0; 
 
               } else { 
 
                       jitter = delay_diff/seqno_diff; 
 
               } 
 
               printf("%f %f\n", start, jitter); 
 
               last_seqno = pkt_seqno[packet_id]; 
 
               last_delay = packet_duration; 
 
       } 
 
    } 
 
}