Hi All, Our website moved to a new URL. Please bookmark the new link: https://ns2bloggers.blogspot.com/

Thursday 2 September 2021

Average Packet End to End Delay Calculation

 




Suppose we run a simulation ,and obtain a trace file. We have to compute the average values of delay. Let’s define delay as the duration since a packet enters a queue of a beginning node until it it arrives at the ending node. The definition of beginning and ending nodes depends on the type of delay under consideration as follows:

Average delay is computed by :
 E(delay)= summation of all delay samples/ no. of samples
where a delay sample is delay associated with a packet. 
The key to collect delay sample is to record packet arrival time in an associative array variable, namely t_arr whose index is the packet unique ID. 
When a new packet enters a queue of a beginning node, the associated time is recorded in a variable $t_arr[pid], where pid is the packet unique ID. 
When a packet with the same unique ID arrives at an ending node, the delay is computed as “(current time) - $t_arr[pid]”. 
The delay same is accumulated in the variable $total_delay, and the number of samles is incremented by one.
At the end of the program, the average delay is computed and stored in a variable avg_delay.


A sample execution of the AWK script is shown below:


============ awk for delay =========
BEGIN {
fromNode=2; toNode=3;
num_samples = 0;
total_delay = 0;
}
/^\+/&&$3==fromNode&&$4==toNode {
t_arr[$12] = $2;
};
/^r/&&$3==fromNode&&$4==toNode {
if (t_arr[$12] > 0) {
num_samples++;
delay = $2 - t_arr[$12];
total_delay += delay;
};
};
END{
avg_delay = total_delay/num_samples;
print "Average queuing transmission delay is " avg_delay " seconds";
print "Measurement details:";
print " - Start when packets enter the node " fromNode;
print " - Until the packets arrive the node " toNode;
};
============ abbfile.awk =========
BEGIN {
src="0.0"; dst="3.0";
num_samples = 0;
total_delay = 0;
}
/^\+/&&$9==src&&$10==dst {
t_arr[$12] = $2;
};
/^r/&&$9==src&&$10==dst{
if (t_arr[$12] > 0) {
num_samples++;
delay = $2 - t_arr[$12];
total_delay += delay;
};
};
END{
avg_delay = total_delay/num_samples;
print "Average end-to-end transmission delay is " avg_delay " seconds";
print "Measurement details:";
print " - Since packets are created from the address " src;
print " - Until the packets are destroyed at the address " dst;
};



Enjoy. Happy Coding.

No comments :

Post a Comment