Scripts for Getting Results

 
          Main script for running the complete simulation
    run-dsr.sh

 
  #!/bin/bash
  for i in 20
  do
       for j in 120
       do
             clear
             rm temp.tr
             rm trace2.nam
  ./ns compare.tcl -scen movement/scen-50-$j -tfc     traffic/cbr-50-$i -tr 
temp.tr -rpr 1;
             awk -f parameters.awk temp.tr
             awk -f Throughput.awk temp.tr
             awk -f Jitter.awk temp.tr
       done
  done

 
          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


ashwin krishna <[EMAIL PROTECTED]> wrote:    hi sir 
  i am new to ns2 and i am doing a project on routing protocols  
  i nned to measure the throughput, time delay,jitter,shortestpath to measure 
the performance of a adhoc network
  so icould be thank full to u if u can provide the  the  tcl script to run the 
simulation
  and any previous work so that  it can be help full
  thanking you 
  krishna
   
   
    
---------------------------------
  Looking for a deal? Find great prices on flights and hotels with Yahoo! 
FareChase.

       
---------------------------------
Pinpoint customers who are looking for what you sell. 

Reply via email to