Tools and Scripts for Getting Results AWK script to measure send, receive, routing and drop packets. Packet delivery ratio, routing overhead, normalize routing load, average end to end delay. 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; } # CALCULATE 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 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); } AWK script for calculate the throughput 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) } AWK script for compute delay jitter 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 } Mohammed AbuHajar ns user <[EMAIL PROTECTED]> wrote: hi, I have simulated AODV, DSDV and DSR with TCP variants Reno, NewReno and Vegas. now i have trace file with the following format (DSDV format) the format is old M 0.0 nn 50 x 1000 y 1000 rp DSDV M 0.0 sc ~/ns-allinone-2.30/ns-2.30/tcl/mobility/scene/DSDV-Mobilit-S2-PT0/DSDV-RENO-S2-PT0-0 cp ~/ns-allinone-2.30/ns-2.30/tcl/mobility/scene/TCP-Reno-TrafficFile seed 1.0 M 0.0 prop Propagation/TwoRayGround ant Antenna/OmniAntenna M 0.00000 0 (108.79, 121.80, 0.00), (477.54, 277.38), 2.00 M 0.00000 1 (661.65, 886.95, 0.00), (610.30, 510.36), 2.00 M 0.00000 2 (441.88, 557.58, 0.00), (35.61, 684.55), 2.00 M 0.00000 3 (681.72, 645.08, 0.00), (891.98, 394.46), 2.00 M 0.00000 4 (550.56, 836.00, 0.00), (570.78, 98.00), 2.00 r 50.783030204 _41_ RTR --- 5168 ack 60 [13a 29 9 800] ------- [9:0 7:2 32 41] [66 0] 1 2 f 50.783030204 _41_ RTR --- 5168 ack 60 [13a 29 9 800] ------- [9:0 7:2 31 7] [66 0] 1 2 r 50.785107893 _7_ AGT --- 5423 ack 60 [13a 7 8 800] ------- [8:0 7:1 32 7] [547 0] 1 1 s 50.785107893 _7_ AGT --- 5463 tcp 1064 [0 0 0 0] ------- [7:1 8:0 32 0] [562 0] 0 1 r 50.785107893 _7_ RTR --- 5463 tcp 1064 [0 0 0 0] ------- [7:1 8:0 32 0] [562 0] 0 1 s 50.785107893 _7_ RTR --- 5463 tcp 1084 [0 0 0 0] ------- [7:1 8:0 32 8] [562 0] 0 1 r 50.795417368 _8_ AGT --- 5438 tcp 1084 [13a 8 7 800] ------- [7:1 8:0 32 8] [557 0] 1 1 s 50.795417368 _8_ AGT --- 5464 ack 40 [0 0 0 0] ------- [8:0 7:1 32 0] [557 0] 0 1 r 50.795417368 _8_ RTR --- 5464 ack 40 [0 0 0 0] ------- [8:0 7:1 32 0] [557 0] 0 1 s 50.795417368 _8_ RTR --- 5464 ack 60 [0 0 0 0] ------- [8:0 7:1 32 7] [557 0] 0 1 r 50.805667684 _9_ AGT --- 5428 tcp 1084 [13a 9 8 800] ------- [8:1 9:1 32 9] [963 0] 1 1 s 50.805667684 _9_ AGT --- 5465 ack 40 [0 0 0 0] ------- [9:1 8:1 32 0] [963 0] 0 1 r 50.805667684 _9_ RTR --- 5465 ack 40 [0 0 0 0] ------- [9:1 8:1 32 0] [963 0] 0 1 s 50.805667684 _9_ RTR --- 5465 ack 60 [0 0 0 0] ------- [9:1 8:1 32 8] [963 0] 0 1 r 50.807705921 _41_ RTR --- 5179 ack 60 [13a 29 9 800] ------- [9:0 7:2 32 41] [67 0] 1 2 f 50.807705921 _41_ RTR --- 5179 ack 60 [13a 29 9 800] ------- [9:0 7:2 31 7] [67 0] 1 2 DSR format M 0.0 nn 50 x 1000 y 1000 rp DSR M 0.0 sc ~/ns-allinone-2.30/ns-2.30/tcl/mobility/scene/NRENO-DSR-Mobility-S2-PT0/DSDV-NRENO-S2-PT0-0 cp ~/ns-allinone-2.30/ns-2.30/tcl/mobility/scene/TCP-NewReno-TrafficFile seed 1.0 M 0.0 prop Propagation/TwoRayGround ant Antenna/OmniAntenna Sconfig 0.00000 tap: on snoop: rts? on errs? on Sconfig 0.00000 salvage: on !bd replies? on Sconfig 0.00000 grat error: on grat reply: on Sconfig 0.00000 $reply for props: on ring 0 search: on Sconfig 0.00000 using MOBICACHE M 0.00000 0 (313.64, 43.50, 0.00), (442.09, 926.57), 2.00 M 0.00000 1 (970.07, 601.01, 0.00), (720.90, 277.89), 2.00 M 0.00000 2 (354.37, 386.19, 0.00), (997.43, 797.71), 2.00 M 0.00000 3 (161.48, 218.16, 0.00), (447.07, 813.34), 2.00 M 0.00000 4 (988.06, 330.81, 0.00), (727.83, 911.39), 2.00 M 0.00000 5 (339.30, 958.75, 0.00), (149.38, 412.51), 2.00 M 0.00000 6 (253.38, 61.00, 0.00), (715.89, 31.36), 2.00 M 0.00000 7 (86.21, 619.90, 0.00), (734.28, 690.18), 2.00 M 0.00000 8 (822.74, 970.59, 0.00), (289.19, 505.51), 2.00 s 2.556838879 _1_ AGT --- 0 tcp 40 [0 0 0 0] ------- [1:0 2:0 32 0] [0 0] 0 4 r 2.556838879 _1_ RTR --- 0 tcp 40 [0 0 0 0] ------- [1:0 2:0 32 0] [0 0] 0 4 s 2.557152010 _1_ RTR --- 1 DSR 32 [0 0 0 0] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964124 _28_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964384 _22_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964432 _34_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964491 _15_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964595 _25_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] r 2.557964635 _11_ RTR --- 1 DSR 32 [0 ffffffff 1 800] ------- [1:255 2:255 32 0] 1 [1 1] [0 1 0 0->0] [0 0 0 0->0] now i need an awk script to calculate TCP parameters throughput , paket delivery ratio ... etc Please help me in this regard i'll be thankful to you -- View this message in context: http://www.nabble.com/Require-Awk-script-for-Old-Trace-Format-File-tf4198129.html#a11939926 Sent from the ns-users mailing list archive at Nabble.com. --------------------------------- Got a little couch potato? Check out fun summer activities for kids.