23 de febrero de 2013

Experimentos de Calidad de Servicio

Redes de Telecomunicaciones
Tarea 4

El experimento que yo realicé para medir la calidad de servicio fue en el streaming en vivo que ofrece Ustream.tv usando una red Axtel vía Ethernet y vía WiFi.



Las pruebas que realicé fue tomando en cuenta solo algunos de los parámetros más comunes para verificar la calidad de servicios que necesitan la transferencia de vídeo y/o voz.

Las pruebas fueron las siguientes:
  • Pérdida de paquetes
  • Latencia
  • Jitter
  • Ancho de banda

Para esta última prueba fue necesario instalar un paquete adicional en Ubuntu, llamado bmon, que se encarga de medir el ancho de banda usado en la computadora, donde es posible especificar que interfaz es la que queremos monitorear.

Para instalar, desde la terminal se escribe lo siguiente:
~$ sudo apt-get install bmon
Si queremos ver que es lo que hace este nuevo paquete, basta con escribir lo siguiente y ver la información que se despliega.
~$ bmon
Al ejecutarse podemos ver en el mismo terminal algo como lo siguiente.


Pero tener el monitor en la terminal no me es útil ya que yo necesito de alguna forma estar tomando los datos arrojados por esta herramienta, afortunadamente es posible agregar parámetros para poder ver la información, sin la visualización como monitor.

Podemos probar lo siguiente, donde eth1 es la interfaz a probar, y ascii es el método de salida que deseamos.
~$ bmon -p eth1 -o ascii

Esto provoca que se ejecute infinitamente, pero podemos agregar unas opciones más para evitar esto. Con el siguiente comando obtenemos solo 5 muestras y quitamos la cabecera de información.
~$ bmon -p eth1 -o 'ascii:noheader;quitafter=5'

Con esto ya podemos leer la información impresa en la terminal de una forma más cómoda, y así es como usaré el comando para ejecutarlo desde un script de python que procese esa información. Cabe mencionar que noté que en la primera muestra todos los datos siempre aparecen en ceros, por lo que en el programa descarte la primer línea.

Otro comando utilizado para la prueba es el ping que ya viene instalado en Ubuntu, y yo lo usé de esta manera para hacer pruebas al host de Ustream.
~$ ping www.ustream.tv -c 5 -s 120 -Q 0x10 -n
Donde -c 10, es la cantidad de paquetes a probar, -s 120 es el tamaño del paquete (más 8 bytes adicionales para la cabecera), -Q 0x10 es para minimizar el retraso de paquetes, y -n es para no mostrar el nombre del host en la información impresa.

Con estos dos comandos desde la terminal puedo obtener la información necesaria para calcular los parámetros de QoS mencionados al inicio. Es importante señalar que el comando ping arroja por si solo estadísticas de los paquetes enviados, pero lo que mi script de python hace es calcular esos datos, manipulando la información obtenida.

Código


Al ejecutarlo lo podemos dejar sin parámetros, ya que por defecto hace prueba a www.ustream.tv con una cantidad de 100 paquetes.


Al terminar, nos muestra el resumen de información.


Pruebas


Ethernet
ramon@pavilion:~/Documents/redes-de-telecomunicaciones$ python qos.py 
Packets sended: 100
Packets received: 99
Lost percentage: 1.0
Max time: 78.0 ms
Min time: 71.8 ms
Latency: 75.15 ms
Jitter: 3.12 ms
Bandwith used: 129.37 KiB/s
ramon@pavilion:~/Documents/redes-de-telecomunicaciones$ python qos.py 
Packets sended: 100
Packets received: 100
Lost percentage: 0.0
Max time: 92.1 ms
Min time: 68.2 ms
Latency: 84.09 ms
Jitter: 12.68 ms
Bandwith used: 125.29 KiB/s

Como podemos ver la cantidad de paquetes perdidos es casi nula por esta vía, y los tiempos de latencia y jitter son pequeños como se espera de un servicio como el que estamos probando.

WiFi
ramon@pavilion:~/Documents/redes-de-telecomunicaciones$ python qos.py 
Packets sended: 100
Packets received: 98
Lost percentage: 2.0
Max time: 1204.0 ms
Min time: 67.8 ms
Latency: 84.84 ms
Jitter: 138.44 ms
Bandwith used: 129.17 KiB/s
ramon@pavilion:~/Documents/redes-de-telecomunicaciones$ python qos.py 
Packets sended: 100
Packets received: 97
Lost percentage: 3.0
Max time: 147.0 ms
Min time: 67.9 ms
Latency: 70.61 ms
Jitter: 60.89 ms
Bandwith used: 123.25 KiB/s

En este caso si es posible ver con más frecuencia pérdida de paquetes, y en ocasiones el tiempo de respuesta en uno de ellos se eleva mucho, afectando los demás resultados. Pero aún así, no sobrepasamos exageradamente los tiempos deseados, tal y como se mencionó en la entrada de laboratorio.

Referencias:
Ping command
Bandwidth ubuntu monitor
QoS en linux

1 comentario:

  1. Quizá hubiera sido bueno estar viendo cosas en ustream para imponerle carga a la conexión... 9 pts.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.