1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #!/usr/bin/awk -f
#
# Fichier AWK qui permet de calculer le délai de bout
# en bout des paquets envoyés
BEGIN {
nb_packets = 0
time = 0
current_node = 0
node_dest = 0
node_src = 0
id = 0
highest_packet_id = 0
}
{
# Récupération des valeurs
time = $2 # Temps
current_node = $3 # nœud courant
id = $6 # ID du paquet
node_src = $14 # nœud source
node_dest = $15 # nœud destination
# On récupère le nœud destination
sub(/\:([0-9]*)/,"", node_dest)
sub(/\[/,"", node_dest)
# On récupère le nœud source
sub(/\:([0-9]*)/,"", node_src)
sub(/\[/,"", node_src)
# On supprime les "_" contenus dans le nœud courant
gsub(/_/, "", current_node);
# Le type du paquet est cbr
if($7=="cbr") {
# Il s'agit d'une réception de paquet
if($1 == "r") {
# Si le nœud destination est le nœud courant
if( packet_dest[id] == current_node )
end[id] = time;
if( id > highest_packet_id )
highest_packet_id = id;
}
# Il s'agit d'un envoi de paquet
else if($1 == "s") {
if ( !(id in start) ) {
start[id] = time;
packet_dest[id] = node_dest;
packet_src[id] = node_src
}
}
}
}
END {
for ( id = 0; id <= highest_packet_id; id++ ) {
if( ( id in start ) && ( id in end ) ) {
if ( start[id] < end[id] ) {
total_time = end[id] - start[id] + total_time;
nb_packets++;
}
}
}
# Calcul du délai de bout en bout
delay = total_time / (nb_packets * 512 * 8);
# Affichage du résultat
print delay;
} |
Partager