Hi all,
  I have worked for  TRACE format .I have used  delay.awk,throughput.awk for my 
tcl progrm 
It runs successfully for delay but not for thrpughput.
for throughput error :
 awk: thrput.awk:44: (FILENAME=hybrid.tr FNR=122048) fatal: division by zero 
attempted
    while executing
 awk -f thrput.awk hybrid.tr > result.tr
    
for delay
  it runs successfully.But the problem is that the new file generated (.tr) is 
empty.The new file has not any data.
   
  # throughput.awk
   BEGIN {
         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
         }
         # Trace line format: new
         if ($2 == "-t") {
                 event = $1
                 time = $3
                 node_id = $5
                 flow_id = $39
                 pkt_id = $41
                 pkt_size = $37
         }
         # Calculate total received packets' size
         if (flow_id == flow && event == "r" && node_id == dst) {
                 if (flow_t != "sctp") {
                         recv += pkt_size - hdr_size
                         #printf("recv[%g] = %g %g\n",node_id,pkt_size
  -hdr_size,recv)
                 } else {
                         # Rip off SCTP header, whose size depends
                         # on the number of chunks in each packet
                        if (pkt_size != 448 && pkt_size != 864 && 
  pkt_size != 1280) pkt_size = 0
                         if (pkt_size == 448) pkt_size = 400
                         if (pkt_size == 864) pkt_size = 800
                         if (pkt_size == 1280) pkt_size = 1200
                         recv += pkt_size
                         #printf("recv[%g] = %g --> tot: %
  g\n",node_id,pkt_size,recv)
                 }
         }
 }
 END {
         printf("%10g %10s %10g\n",flow,flow_t,(recv/simtime)*(8/1000))
 }

  #Delay.awk
BEGIN {
         for (i in send) {
                 send[i] = 0
         }
         for (i in recv) {
                 recv[i] = 0
         }
         delay = avg_delay = 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
         }
         # Trace line format: new
         if ($2 == "-t") {
                 event = $1
                 time = $3
                 node_id = $5
                 flow_id = $39
                 pkt_id = $41
         }
         # Store packets send time
         if (flow_id == flow && node_id == src && send[pkt_id] == 0 && (event 
== "+" || event 
  =="s")) {
                 send[pkt_id] = time              
         }
         # Store packets arrival time
         if (flow_id == flow && node_id == dst && event == "r") {
                 recv[pkt_id] = time
        }
 }
 END {
         # Compute average delay
         for (i in recv) {
                 if (send[i] == 0) {
                         printf("\nError %g\n",i)
                 }
                 delay += recv[i] - send[i]
                 num ++
         }
         printf("%10g ",flow)
         if (num != 0) {
                 avg_delay = delay / num
         } else {
                 avg_delay = 0
         }
         printf("%10g\n",avg_delay*1000)
}
   
  thanks
   
  ibrahim

         
---------------------------------
Looking for earth-friendly autos? 
 Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.  

Reply via email to