Yes, plz see the following awk scripts that calcualate the following
6.1 Performance Metrics Used
6.3.1 Routing Overhead
6.3.2 Normalize Routing Load
6.3.3 Packet Delivery Fraction
6.3.4 Average End to End delay
6.3.5 Jitter
6.3.6 Drop Packets
6.3.7 Drop Bytes
6.3.8 Throughput
============================== 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
}
==============================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);
}
=========================== end ========================
Mohammed AbuHajar
Master of Computer Science
manpreet grewal <[EMAIL PROTECTED]> wrote:
Note: Forwarded message attached
-- Original Message --
From: "manpreet grewal"
To: [EMAIL PROTECTED]
Subject: plot offered load vs. throughput in NS2
From: "manpreet grewal" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: plot offered load vs. throughput in NS2
Hello Sir,
I read your problem in ns-users list..
I also want to calculate some results..
If you could tell me the formulas which can be used to
calculate
different parameters like
Squared-sum-Routing level,
Load variance-routing level,
Squared sum-MAC level,Laod
variance-MAC level,
End-to-end delay,
throughput(in kbps),
Routing Overhead,offered load.
or some references to them, it will be very helpful to me..
If you have calculated any one of the above parameters do help
me...
May be we can help each other in our projects..
Looking for your positive reply..
Regards,
Manpreet Kaur Grewal.
---------------------------------
Park yourself in front of a world of choices in alternative vehicles.
Visit the Yahoo! Auto Green Center.