Como medir la velocidad de una conexión wifi con iperf 3

Si estás conectado a una red wifi que te da la sensación de que no funciona del todo como se espera, seguramente quieras llevar a cabo un análisis y ver qué es lo que está funcionando mal, iperf te permite medir la velocidad wifi con mucha precisión.

En Internet podemos encontrar algunas herramientas que están disponibles para medir los parámetros de funcionamiento de una red, tales como el rendimiento, la pérdida de paquetes y jitter. Una de estas herramientas que podemos utilizar para realizar análisis de este tipo se llama iperf. Este software, de código abierto, es fácil de ejecutar y proporciona suficientes opciones e información para poder solucionar los problemas de red que sean detectados.

 

¿Qué debemos saber antes de entrar en detalle en el análisis de esta herramienta gratuita?

 

logo_iperf

 

Antes de comenzar, es conveniente realizar una revisión rápida de la capa de transporte: una aplicación que utiliza la capa de transporte pueden utilizar TCP o UDP en función de los requisitos que tenga en cuestión.

En general, si la aplicación requiere que esté libre de errores la entrega de paquetes en orden, el protocolo TCP es mejor. Si la aplicación puede tolerar algún nivel de pérdida de paquetes, el protocolo UDP probablemente se ajuste mejor a los requisitos.

No obstante, ambos tipos de protocolo de transporte tienen sus usos. La diferencia de TCP respecto de UDP es que TCP puede ser más lento que el UDP para la entrega de paquetes. Por el contrario, UDP puede ser más rápido, pero no nos ofrece ninguna garantía de que los paquetes lleguen a su destino correctamente.

En el correo electrónico y en la navegación web se utiliza el protocolo TCP. Sin embargo, para la VoIP, que puede tolerar algo de pérdida de paquetes (por lo general alrededor del 5%) se utiliza UDP.

 

¿Qué es iperf – iperf3?

iperf es una herramienta sencilla que nos permite medir parámetros relacionados con el ancho de banda de nuestra red. Es una de las más populares dado que se encuentra disponible para sistemas operativos como Windows Mac y Linux. La versión actual más usada, iPerf3, que lleva algo más de un año en el mercado, incorpora una gran cantidad de cambios y mejoras

iperf3 es una nueva implementación iperf, con el objetivo de tener una base de código más pequeña, simple, y que se pueda utilizar en otros programas. iperf3 no es compatible con iperf2.x.

Desde compartirwifi.com os recomendamos iperf3 sobre iperf debido a que la retransmisión de TCP y el informe CWND son muy útiles para la resolución de problemas.

 

¿Cómo se utiliza iperf3?

 

Los aspectos básicos del uso iperf son simples. En primer lugar habría que instalarlo en un servidor y en un cliente y, a continuación, ejecutar iperf -s en el servidor e iperf -c <dirección IP del servidor> en el cliente.

La opción -s significa servidor, mientras que la opción -c indica cliente. Es necesario especificar la dirección IP del servidor para conectarse a él con la opción -c.

Por tanto para medir la velocidad wifi con iPerf3 necesitas dos ordenadores, uno que se llama el cliente y el otro el servidor, lo que hace iperf3 es medir la velocidad de transferencia de la red que une esos dos ordenadores, si los tienes conectados a la misma wifi medirás la velocidad local de tu red, si tienes uno conectado a tu wifi y otro conectado a otra red de Internet entonces medirás la velocidad de Internet.

iperf-mode
Comunicación de cliente con servidor mediante el comando iperf

 

Para conocer los diferentes parámetros y opciones de iperf podemos ejecutar el comando iperf con la opción -h. Entre todas ellas, la opción -i define el intervalo en segundos en el cual iperf informa de las métricas.

El tiempo predeterminado es de 10 segundos, pero este valor se puede cambiar usando la opción -t. Por defecto, el servidor iperf escucha en el puerto 5001, pero todo esto se puede cambiar si es necesario.

 

IPERFmeasureBandwidth
Medida del ancho de banda a través de iperf

 

Comandos iperf

 

Algunos ejemplos de comandos iperf/iperf3 son los siguientes:

 

Servidor:
iperf/iperf3 -s Inicia el servidor en el puerto por defecto
iperf -s -w 32M -D / iperf3 -s -D Inicia el servidor con una gran ventana TCP
iperf -i1 -u -s -p 5003 / iperf3 -s -p 5003 Inicial el servidor UDP en el puerto 5003, y configura 1 segundo como intervalo entre los reportes
Cliente
iperf/iperf3 -c remotehost -i 1 -t 30 Ejecuta los tests durante 30 segundos, proporcionando resultados cada segundo
iperff/iperf3 -c remotehost -i 1 -t 20 -r Ejecuta un test desde remotehost a localhost
iperf/iperf3 -c remotehost -i 1 -t 20 -w 32M -P 4 Ejecuta un test con 4 hilos paralelos, con un buffer TCP de 32M
iperf/iperf3 -c remotehost -u -i 1 -b 200M Ejecuta un test de UDP a 200 Mbps

 

iperf_example2
Ejemplo de una salida de consola ejecutando iperf

 

Un proyecto opensource, que puedes encontrar en GitHub

 

Tal y como hemos comentado antes, iperf es un proyecto de software libre y gratuito. La versión más actualizada de código se encuentra en GitHub, desde donde la puedes descargar, y compilar el código. Pero… ¿no tienes ni idea de lo que es GitHub? ¿Nunca has oído hablar de ello? No te preocupes que te contamos qué es.

 

Captura
Código del proyecto opensource iperf en GitHub

 

Si no conoces GitHub, es una plataforma de alojamiento de código para el control de versiones que permite la colaboración de diferentes personas en un mismo proyecto. Esto hace posible que gente de un mismo proyecto, distribuida en diferentes localizaciones, pueda participar de una manera eficaz en el desarrollo de un proyecto común.

Algunos proyectos opensource cuentan además con una comunidad de contribuidores detrás que participan en el desarrollo de forma desinteresada, realizando nuevas funcionalidades o resolviendo bugs, entre otras cosas

En este tutorial se enseñan los aspectos esenciales de GitHub, tales como repositorios, ramas, commits o pull requests.

El código de iperf se encuentra disponible en https://github.com/esnet/iperf de donde los puedes descargar o clonar, y posteriormente generar la última versión de la aplicación siguiendo los pasos que se detallan en el repositorio.

 

Captura2
Visualización de los diferentes issues relacionados con el proyeto en GitHub

 

Si eres un usuario avanzado o detectas algún bug, puedes reportarlo a través de la pestaña “issues”. De este modo, el resto de usuarios y contribuidores que participan en el desarrollo del proyecto se pueden enterar y resolverlo en posteriores versiones de la aplicación.

Además, si tienes alguna idea de funcionalidad que puede ser interesante, es posible darla de alta en la misma sección siguiendo los mismos pasos. En la imagen superior se muestra un listado de las diferentes issues relacionadas con el mercado que están abiertas a día de hoy.