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 <[EMAIL PROTECTED]> 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.