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.