martes, 26 de febrero de 2013

Tarea 4

Tarea 4 - Experimentos de calidad de servicio (QoS)

Hola, esta entrada corresponde a la tarea número cuatro de la clase de Telecomunicaciones y consiste en elegir una aplicación en la cual la QoS juega un papel importante. Luego diseñar, realizar, documentar y analizar un experimento para comparar la QoS.


Linphone


Bien, la aplicación que yo usé para realizar el experimento es Linphone, este es un software para realizar llamadas por internet, trabaja con el protocolo SIP y es del gran grupo de software llamados softphone. 
Linphone es multiplataforma inclusive con los dispositivos móviles, aunque es más estable en Linux, es compatible hasta con una lata de verduras, yo lo instalé en un ipod, una tablet y un ubuntu y funcionó a la perfección.

Como la mayoría de los sofphones, este trabaja en el puerto 5060, en ubuntu te da la posibilidad de cambiar de puerto si así lo deseas, en los móviles no vi esa opción.

Los aspectos más relevantes por los que se preocupan los creadores de este tipo de software son el ancho de banda consumido, el retardo que presenta la información que se envía, la variación de retardo (jitter) y la pérdida de paquetes. Estos son los pilares sobre los cuales trabaja este tipo de tecnologías ya que son las principales variables que influyen en la calidad del servicio. Si alguno de ellos falla se pueden presentar errores como voz entrecortada, robotizada, conexiónes sin establecer por exceso de información en buffer o por problemas de socket, etc.

Para realizar la actividad existe bastante diversidad de herramientas (como todo en la informática), sin embargo, hay muchas que no dicen aspectos como la pérdida de paquetes por aplicación (es muy importante que sea por aplicación, sino el experimento está mal hecho), retardo, etc. Para obtener esos datos se realizan estudios de combinación de herramientas, donde se necesita un buen respaldo de teoría de redes y de conocimiento técnico, por ejemplo el autor de un trabajo de fin de carrera (liga al trabajo: upcommons.upc.edu/pfc/bitstream/2099.1/3768/1/54630-1.pdf) menciona que es necesario capturar cada uno de los paquetes, luego desenvolverlo para checar los headers de cada paquete, luego verificar en cada header los tiempos, luego apartir de ahí calcular retardos (esto como quiera se puede realizar con ping), jitter y pérdidas.

Iperf




Yo encontré un muy buen software que realiza estos procedimientos de una manera más sencilla. El programa se llama iperf, iperf se usa para realizar test o pruebas de redes informáticas, y funciona creando flujos de datos ya sea de protocolo TCP o UDP luego mide el rendimiento.

El programa consta de 2 modalidades, una es de server y la otra de client. Existen diversos parámetros para poder realizar pruebas a aplicaciones de puertos en específico, por ejemplo yo hice las pruebas correspondientes al puerto 5060, porque como mencioné antes Linphone trabaja con ese puerto por default.

Por si esto fuera poco, iperf también es compatible con Android.

La siguiente imagen es la pantalla de inicio de Linphone:


Lo relevante de esta imagen es el SIP address, esa la creas en la página de Linphone para poder comunicarte con otro dispositivo.

Yo creé 2 direcciones SIP una para usar mi Linphone en la computadora y otra para realizar las pruebas en una tablet.
Después de instalar Linphone e iperf lo siguiente que hice fue realizar llamadas entre mis dispositivos para probar el servicio y la verdad que la calidad es muy buena.
Lo siguiente a realizar fue poner iperf en la tablet en modo servidor, la manera de realizar esto es muy sencillo, lo pueden hacer con el siguiente comando :

-s -p 5060 -u

De esa manera le estamos diciendo a iPerf que trabaje de modo servidor en el puerto 5060 con el protocolo UDP, al introducir esa instrucción quedará en modo de espera hasta que un client haga un request de información,  la siguiente imagen ilustra esto que acabo de decir (incluso se puede apreciar el iconillo de Linphone en naranja, en la esquina inferior derecha).




Luego en ubuntu puse iPerf en modo cliente, obviamente con los datos que pusimos anteriormente en el iPerf de la tablet.

Todo esto se realiza obviamente haciendo la llamada primero.

La impresión que nos genera iPerf es la siguiente:



El primer intento que ven en pantalla no es exitoso, porque se ve que dice connection refused, es porque no se especificó el protocolo de transporte correcto en el servidor de iPerf, es decir, mientras que los paquetes de Linphone viajan por UDP yo quería escuchar por TCP, lo que hice fue especificar en la tablet (server) que escuchara por el puerto UDP, luego el segundo intento que ven en la imagen ya es exitoso. Con el parámetro -u estamos diciendo que realice la prueba en UDP, la -c quiere decir que seremos el cliente y la dirección IP que vemos es la que pertenece al server (en este caso a la tablet).

Bueno lo relevante que nos dice aquí es el ancho de banda, que nos dice que es 1.05 Mbits/sec, los datagramas enviados, que fueron 893 (esto también es personalizable), esto con el motivo de calcular la pérdida de paquetes, iPerf también nos dice la variación de retardo (Jitter), en este caso es 0.463 ms y por último nos dice la pérdida de paquetes en porcentaje y en datagramas, nosotros podemos apreciar que nos dice que se perdieron 0 y llegaron 893 (los mismos que se enviaron) osea que el porcentaje de pérdida de paquetes es 0.

A continuación les muestro la respuesta que nos entregó el servidor (tablet):




El log final es el bueno, los anteriores que se ven son intentos fallidos, pueden ver que dice listen on TCP port, por eso nunca recibia el request del cliente, para que funcionara solo agregué el parámetro -u al comando y ya se puso a escuchar por el UDP.
Lo relevante es que al final nos dice los mismos datos que le llegaron al cliente: el intervalo de tiempo de prueba (10 segundos), la cantidad transferida (1.25 MBytes), el ancho de banda (1.05 Mbits/sec), jitter (0.463ms) y la pérdida en datagramas y porcentaje(0/893 0%).

Conclusiones:

En general es una aplicación bastante buena, el ancho de banda que consume (1.05MB/s) es lo normal en este tipo de aplicaciones, y cuando se agrega la función de video podría aumentar al doble o triple, me tocó que cuando inicié la llamada si se notó un tanto lento la navegación entre páginas, disminuyó cuando quité la funcionalidad de video. 
La variación de retardo (0.462 ms) que presenta es bastante baja, incluso puede compararse con la variación de retardo de un simple ping a Google.


Acá vemos variaciones de retardo de 1.5 ms osea 3 veces más grandes que en la aplicación Linphone, pero hay que tomar en cuenta que en Linphone se le corrió la prueba en un lapso de 10 segundos, osea hay muchos factores en este tipo de pruebas, puede que durante esos 10 segundos el SO consumía recursos de red que no los consumía cuando tiré el ping, bueno ustedes ya entienden.

Y en el apartado de los paquetes perdidos si me sorprendí, en el lapso transcurrido de la prueba no hubo ningún paquete perdido, se enviaron 893 datagramas y regresaron los mismos, dando un porcentaje de pérdida de paquetes de 0%, como se aprecia en la siguiente imagen (el último dato, de izquierda a derecha, de arriba hacia abajo).



Esto es todo por mi parte.

Bibliografía:


Cualquier duda o aclaración pueden dejarla en comentarios.

Salud a todos!

1 comentario: