just add following in your tcl script to generate new trace format
# use new trace file format
$ns_ use-newtrace 



-----Original Message-----
From: uknown noname [mailto:[EMAIL PROTECTED]
Sent: Thu 06/09/2007 1:15 PM
To: uknown noname; Mohammad Haseeb Zafar; Sayeed Ahmed; JEHD MAHDI; ns2 mailing
Subject: Re: [ns] cbr packet loss & or packet count scripts in perl>>>>
 
Hi.. probably i have using a wrong out.tr file where currently im using 
/tcl/ex/wireless.tcl. i'm notice this will generated out.tr with old trace 
format. is there any out.tr with new trace format for dsr that i can used with 
this cript?
many thanks..

uknown noname <[EMAIL PROTECTED]> wrote: 
hello...
i try to implement this script but i've got an error
(FILENAME=../out.tr FNR=24960) fatal: division by zero attempted

looks like this line
delay=sum/recvnum
give an error when 'recvnum' is 0, where recvnum++ are not functioning. any 
idea?

Mohammad Haseeb Zafar  wrote: 
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
  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  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!






My system :
FC 6
2.6.18-1.2869.fc6
ns2.30
       
---------------------------------
Need a vacation? Get great deals to amazing places on Yahoo! Travel. 



My system :
FC 6
2.6.18-1.2869.fc6
ns2.30
       
---------------------------------
Choose the right car based on your needs.  Check out Yahoo! Autos new Car 
Finder tool.

Reply via email to