martes, 16 de abril de 2013

Laboratorio 7

Laboratorio 7 - Monitoreo de medidas de desempeño

Hola, en esta ocasión vamos a monitorear las medidas de desempeño de la distintas transmisiones de datos en el simulador ns-2.

Las medidas que voy a evaluar es el throughput que es la cantidad de bits que se transmiten exitosamente por segundo, además de la latencia que es la velocidad de propagación de la señal, que esta depende del medio por el que viaja la señal.
 

Transmisión simple de paquetes UDP sobre un protocolo de ruteo tipo DV

Bien, el primer caso que tenemos es el de una topología con 2 nodos corriendo un protocolo de ruteo tipo DV, la transmisión de paquetes es tipo UDP (esto es similar a la topología del laboratorio anterior). Mediremos el desempeño mediante el throughput y la latencia, como ya lo mencioné antes.

El código para obtener la topología mencionada es el siguiente:

 

Y la simulación en nam es esta.



Seguido de esto echamos un vistazo a nuestro archivo generado de trazas, este contiene el tiempo de llegada de paquetes y el tamaño de los paquetes transportados (por el agente), que son los que nos interesa para obtener la latencia y el throughput.

Las siguiente son unas cuantas de las líneas que contiene el archivo de trazas "tr"


+ 0.00017 0 1 rtProtoDV 2 ------- 0 0.2 1.2 -1 0
- 0.00017 0 1 rtProtoDV 2 ------- 0 0.2 1.2 -1 0
r 0.010186 0 1 rtProtoDV 2 ------- 0 0.2 1.2 -1 0
+ 0.27794 1 0 rtProtoDV 2 ------- 0 1.2 0.2 -1 1
- 0.27794 1 0 rtProtoDV 2 ------- 0 1.2 0.2 -1 1
r 0.287956 1 0 rtProtoDV 2 ------- 0 1.2 0.2 -1 1
+ 0.5 0 1 cbr 500 ------- 0 0.0 1.0 0 2
- 0.5 0 1 cbr 500 ------- 0 0.0 1.0 0 2
+ 0.505 0 1 cbr 500 ------- 0 0.0 1.0 1 3
- 0.505 0 1 cbr 500 ------- 0 0.0 1.0 1 3
+ 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 4
- 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 4
r 0.514 0 1 cbr 500 ------- 0 0.0 1.0 0 2
+ 0.515 0 1 cbr 500 ------- 0 0.0 1.0 3 5
- 0.515 0 1 cbr 500 ------- 0 0.0 1.0 3 5
r 0.519 0 1 cbr 500 ------- 0 0.0 1.0 1 3
+ 0.52 0 1 cbr 500 ------- 0 0.0 1.0 4 6
- 0.52 0 1 cbr 500 ------- 0 0.0 1.0 4 6
r 0.524 0 1 cbr 500 ------- 0 0.0 1.0 2 4
+ 0.525 0 1 cbr 500 ------- 0 0.0 1.0 5 7
- 0.525 0 1 cbr 500 ------- 0 0.0 1.0 5 7
r 0.529 0 1 cbr 500 ------- 0 0.0 1.0 3 5
+ 0.53 0 1 cbr 500 ------- 0 0.0 1.0 6 8
- 0.53 0 1 cbr 500 ------- 0 0.0 1.0 6 8
r 0.534 0 1 cbr 500 ------- 0 0.0 1.0 4 6
+ 0.535 0 1 cbr 500 ------- 0 0.0 1.0 7 9
- 0.535 0 1 cbr 500 ------- 0 0.0 1.0 7 9

Graficaremos estos datos con la ayuda de gnuplot, pero para eso primero vamos a aplicar un filtrado con awk sobre los datos obtenidos, porque se puede notar que contiene caracteres que no le gustan a gnuplot. 
Tenemos un archivo awk para el filtrado de datos de la latencia y otro para el filtrado de datos del throughput.

Archivo awk para la latencia


#latency

BEGIN {

                time1 = 0.0;
                time2 = 0.0;
}

{
                time2 = $2;
                if ($1=="r") {

                                printf("%f %f\n", time1, time2) > "latency";
                                time1 += $2;
                }
}

END {
                print("Done");
}

Archivo awk para el throughput



#throughput

BEGIN {

                node =1;
                time1 = 0.0;
                time2 = 0.0;
                num_packet=0;
                bytes_counter=0;

}
{
                time2 = $2;

                if (time2 - time1 > 0.05) {
                                thru = bytes_counter / (time2-time1);
                                thru /= 1000000;
                                printf("%f %f\n", time2, thru) > "throughput";
                                time1 = $2;
                }

                if ($1=="r") {
                                bytes_counter += $6;
                                num_packet++;
                }
}

END {
print("Done");

}


Después de procesar los datos con awk obtenemos archivos como los siguientes.

Datos de latencia

0.000000 0.010186
0.010186 0.287956
0.298142 0.514000
0.812142 0.519000
1.331142 0.524000
1.855142 0.529000
2.384142 0.534000
2.918142 0.539000
3.457142 0.544000
4.001142 0.549000
4.550142 0.554000
5.104142 0.559000
5.663142 0.564000
6.227142 0.569000
6.796142 0.574000
7.370142 0.579000
7.949142 0.584000
8.533142 0.589000
9.122142 0.594000
9.716142 0.599000
10.315142 0.604000
10.919142 0.609000
11.528142 0.614000
12.142142 0.619000
12.761142 0.624000

Datos de throughput


0.277940 0.000007
0.500000 0.000018
0.550000 0.080080
0.604000 0.166741
0.654000 0.280080
0.705000 0.382431
0.755000 0.490080
0.805000 0.590080
0.859000 0.638963
0.909000 0.790080
0.960000 0.882431
2.000000 0.047119
2.054000 0.972370
2.104000 1.150160
2.155000 1.235490
2.205000 1.360200
2.259000 1.352037
2.309000 1.560200
2.360000 1.637451
2.410000 1.770200
2.464000 1.731667
2.515000 1.941373
2.569000 1.926111
2.619000 2.180200
2.670000 2.245294
2.720000 2.390200
2.774000 2.305741
2.825000 2.549216
2.879000 2.500185


Totalmente digeribles para gnuplot. Ahora solo generamos nuestro plot.
Mi plot para la latencia es el siguiente, el eje x representa el tiempo transcurrido, mientras que el y representa el tamaño de los paquetes.



Plot para throughput




Realicé lo mismo pero ahora la transmisión de datos simula comunicación en Voz IP, igualmente por medio del protocolo de transporte UDP.
El código es el siguiente:
 



Y esta es la simulación en nam


Filtramos las trazas obtenidas con awk nuevamente y obtenemos los siguientes archivos para plotearlos con gnuplot.

Archivo de trazas de latencia filtrado.


0.000000 0.154000
0.154000 0.154000
0.308000 0.174000
0.482000 0.174000
0.656000 0.194000
0.850000 0.194000
1.044000 0.214000
1.258000 0.214000
1.472000 0.234000
1.706000 0.234000
1.940000 0.254000
2.194000 0.254000
2.448000 0.274000
2.722000 0.274000
2.996000 0.294000
3.290000 0.294000
3.584000 0.314000
3.898000 0.314000
4.212000 0.334000
4.546000 0.334000
4.880000 0.354000
5.234000 0.354000
5.588000 0.374000

Archivo de trazas de throughput filtrado.


0.100000 0.000000
0.154000 0.000000
0.214000 0.012800
0.274000 0.025600
0.334000 0.038400
0.394000 0.051200
0.454000 0.064000
0.514000 0.076800
0.574000 0.089600
0.634000 0.102400
0.694000 0.115200
0.754000 0.128000
0.814000 0.140800
0.874000 0.153600
0.934000 0.166400
0.994000 0.179200
1.054000 0.192000
1.114000 0.204800
1.174000 0.217600
1.234000 0.230400
1.294000 0.243200
1.354000 0.256000


Los siguientes plots cooresponden a los de transmisión de voIP, es el de latencia y throughput respectivamente.





Bibliografía

https://sites.google.com/site/networksprojectwiki/bit10/compnetworks/voip-performance-over-udp-and-sctp-in-ns2/simulating-voip/voip-over-udp
http://www.linuxtotal.com.mx/index.php?cont=info__tips_021 
http://nile.wpi.edu/NS/simple_ns.html

Cualquier duda o aclaración pueden dejarla en comentarios.
Saludos a todos! 



1 comentario:

  1. Sería bueno moverle a topologías más complejas y grandes en la tarea de congestión. 6 pts.

    ResponderEliminar