Plz see the following awk scripts that calcualate the following
 Performance Metrics Used
 Routing Overhead
 Normalize Routing Load
 Packet Delivery Fraction
 Average End to End delay
 Jitter
 Drop Packets
 Drop Bytes
 Throughput

These scripts work with new trace format and DSR protocol. Make changes for 
other protocols.

As an example, if you want to calculate throughput,

awk -f throughput.awk output.tr

  
 # ==============================throughput.awk ========================
  BEGIN {
 recvdSize = 0
 startTime = 1e6
 stopTime = 0
}
  {
 # Trace line format: normal
 if ($2 != "-t") {
  event = $1
  time = $2
  if (event == "+" || event == "-") node_id = $3
  if (event == "r" || event == "d") node_id = $4
  flow_id = $8
  pkt_id = $12
  pkt_size = $6
  flow_t = $5
  level = "AGT"
 }
 # Trace line format: new
 if ($2 == "-t") {
  event = $1
  time = $3
  node_id = $5
  flow_id = $39
  pkt_id = $41
  pkt_size = $37
  flow_t = $45
  level = $19
 }
   # Store start time
 if (level == "AGT" && (event == "+" || event == "s") && pkt_size >= 512) {
  if (time < startTime) {
   startTime = time
  }
 }
   # Update total received packets' size and store packets arrival time
 if (level == "AGT" && event == "r" && pkt_size >= 512) {
  if (time > stopTime) {
   stopTime = time
  }
  # Rip off the header
  hdr_size = pkt_size % 512
  pkt_size -= hdr_size
  # Store received packet's size
  recvdSize += pkt_size
 }
  }
  END {
 printf("Average Throughput[kbps] = %.2f\t\t 
StartTime=%.2f\tStopTime=%.2f\n",(recvdSize/(stopTime-startTime))*(8/1000),startTime,stopTime)
}
  
  
  
#  ============================= parameters.awk ========================
  BEGIN {
 sends=0;
 recvs=0;
 routing_packets=0.0;
 droppedBytes=0;
 droppedPackets=0;
 highest_packet_id =0;
 sum=0;
 recvnum=0;
   }
  {
 time = $3;
 packet_id = $41;
   #============= CALCULATE PACKET DELIVERY  FRACTION=================
 if (( $1 == "s") &&  ( $35 == "cbr" ) && ( $19=="AGT" ))   {  sends++; }
 if (( $1 == "r") &&  ( $35 == "cbr" ) && ( $19=="AGT" ))   {  recvs++; }
   #============= CALCULATE DELAY     ================================
 if ( start_time[packet_id] == 0 )  start_time[packet_id] = time;
 if (( $1 == "r") &&  ( $35 == "cbr" ) && ( $19=="AGT" )) {  
end_time[packet_id] = time;  }
 else {  end_time[packet_id] = -1;  }
   #============= TOTAL DSR OVERHEAD  ================================
 if (($1 == "s" || $1 == "f") && $19 == "RTR" && $35 =="DSR") routing_packets++;
   #============= DROPPED DSR PACKETS ================================
 if (( $1 == "d" ) && ( $35 == "cbr" )  && ( $3 > 0 ))
 {
  droppedBytes=droppedBytes+$37;
  droppedPackets=droppedPackets+1;
 }
    #find the number of packets in the simulation
        if (packet_id > highest_packet_id)
  highest_packet_id = packet_id;
}
  END {
  for ( i in end_time )
 {
 start = start_time[i];
 end = end_time[i];
 packet_duration = end - start;
 if ( packet_duration > 0 )  { sum += packet_duration; recvnum++; }
 }
     delay=sum/recvnum;
   NRL = routing_packets/recvs;     #normalized routing load = routing load but 
it differ from routing overhead
   PDF = (recvs/sends)*100;         #packet delivery ratio[fraction]
   printf("send = %.2f\n",sends);
   printf("recv = %.2f\n",recvs);
   printf("routingpkts = %.2f\n",routing_packets++);
   printf("PDF = %.2f\n",PDF);
   printf("NRL = %.2f\n",NRL);
   printf("Average e-e delay(ms)= %.2f\n",delay*1000);
   printf("No. of dropped data (packets) = %d\n",droppedPackets);
   printf("No. of dropped data (bytes)   = %d\n",droppedBytes);
   printf("Packet Loss [%]= %.2f  \n", 
(droppedPackets/(highest_packet_id+1))*100);
}

 

#  ============================== jitter.awk ============================
  BEGIN {
       num_recv=0
 }
  {
 # Trace line format: normal
 if ($2 != "-t") {
  event = $1
  time = $2
  if (event == "+" || event == "-") node_id = $3
  if (event == "r" || event == "d") node_id = $4
  flow_id = $8
  pkt_id = $12
  pkt_size = $6
  flow_t = $5
  level = "AGT"
 }
 # Trace line format: new
 if ($2 == "-t") {
  event = $1
  time = $3
  node_id = $5
  flow_id = $39
  pkt_id = $41
  pkt_size = $37
  flow_t = $45
  level = $19
 }
   # Store packets send time
 if (level == "AGT" && sendTime[pkt_id] == 0 && (event == "+" || event == "s") 
&& pkt_size >= 512) {
  sendTime[pkt_id] = time
 }
   # Store packets arrival time
 if (level == "AGT" && event == "r" && pkt_size >= 512) {
  recvTime[pkt_id] = time
  num_recv++
 }
}
  END {
 # Compute average jitter
 jitter1 = jitter2 = tmp_recv = 0
 prev_time = delay = prev_delay = processed = 0
 prev_delay = -1
 for (i=0; processed<num_recv; i++) {
  if(recvTime[i] != 0) {
          tmp_recv++
   if(prev_time != 0) {
    delay = recvTime[i] - prev_time
    e2eDelay = recvTime[i] - sendTime[i]
    if(delay < 0) delay = 0
    if(prev_delay != -1) {
     jitter1 += abs(e2eDelay - prev_e2eDelay)
     jitter2 += abs(delay-prev_delay)
    }
    prev_delay = delay
    prev_e2eDelay = e2eDelay
   }
   prev_time = recvTime[i]
  }
  processed++
 }
}
  END {
   
       printf("Jitter1 = %.2f\n",jitter1*1000/tmp_recv);
       printf("Jitter2 = %.2f\n",jitter2*1000/tmp_recv);
}
  function abs(value) {
 if (value < 0) value = 0-value
 return value
}


# =========================== end ========================


-----Original Message-----
From: [EMAIL PROTECTED] on behalf of Sayeed Ahmed
Sent: Tue 04/09/2007 4:56 PM
To: JEHD MAHDI; ns2 mailing
Subject: Re: [ns] cbr packet loss & or packet count scripts in perl>>>>
 

Hi,
   
  >Hi there I've got a script to analyse packets awk file>>>
   
  Can you please tell from where you get the awk script example???? I will help 
me a lot.
   
  Thanking you,
   
  Sayeed.
  

JEHD MAHDI <[EMAIL PROTECTED]> wrote:
  




J Mahdi
Newcastle Upon Tyne
**********************
My favourite sites:
www.al-islam.com
www.islamspirit.com 
www.troid.org 



From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: cbr packet loss & or packet count 
scripts in perl>>>>Date: Sun, 2 Sep 2007 17:36:47 +0000


Hi there I've got a script to analyse packets awk file, but it doesn't work, 
but i know that perl scripts would work, any one could help with a similar one 
in perl...cheers


J Mahdi
Newcastle Upon Tyne
**********************


Are you the Quizmaster? Play BrainBattle with a friend now! 
_________________________________________________________________
Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE


       
---------------------------------
Shape Yahoo! in your own image.  Join our Network Research Panel today!



Reply via email to