iperf3: Mide la velocidad entre dos o más equipos en LAN, WiFi o Internet

iperf3 es la última versión del popular programa iperf para medir el ancho de banda entre dos o más equipos en red local o Internet. Esta nueva versión iperf3 no es compatible con el antiguo iperf2, por tanto, debemos actualizar tanto el servidor como el cliente si queremos hacer uso de este nuevo programa. Esta herramienta permite ajustar varios parámetros de manera muy avanzada, relacionado con los protocolos TCP, UDP y SCTP, por supuesto, es compatible tanto con redes IPv4 como IPv6. Iperf3 ha sufrido una gran cantidad de mejoras que permiten exprimir aún más el rendimiento real de la red local, por tanto, es ideal para realizar las pruebas de rendimiento de equipos Multigigabit e incluso 10G. ¿Quieres conocer cómo descargarlo y utilizarlo para medir el rendimiento?

En RedesZone llevamos utilizando iperf3 mucho tiempo, para medir el rendimiento que obtenemos en las pruebas LAN-LAN, LAN-WAN y también pruebas WiFi 6. Hemos comprobado que se comporta mucho mejor que iperf2 en cuanto sobrepasamos la velocidad de 1Gbps, por tanto, cuando hacemos uso de routers, switches o puntos de acceso WiFi 6, hacemos uso de este programa que nos brinda una medición más exacta de la velocidad que conseguimos.

En este tutorial os vamos a enseñar cómo utilizar este programa tan interesante para medir la velocidad real entre dos equipos, independientemente de si están conectados en la red local LAN o en Internet, ya que al hacer uso de los protocolos TCP y UDP, podremos abrir un puerto en el servidor para que uno o varios clientes se comuniquen directamente, y poder comprobar la velocidad real.

Principales características de iperf3

iperf3 es un programa completamente renovado, que nada tiene que ver con iperf2, ya que no son compatibles entre ellos. iperf3 hereda lo mejor de iperf2, e incorpora características nuevas para permitirnos realizar mediciones a velocidades Multigigabit sin problemas. Para cada prueba que realicemos, nos informará del ancho de banda de subida y descarga, de la pérdida de paquetes y de otros parámetros.

Respecto a los protocolos TCP y SCTP, es capaz de medir el ancho de banda, informar del tamaño de MTU (Maximum Transfer Unit) y del MSS (Maximum Segment Size), además, también soporta para configurar el tamaño de ventana TCP a través del buffer del socket. En cuanto a UDP, el cliente puede crear diferentes flujos de datos UDP, permite medir la pérdida de paquetes, el jitter (fluctuación del retardo), e incluso soporta Multicast. El cliente permite establecer múltiples conexiones simultáneas con el servidor, además, el servidor es capaz de recibir múltiples conexiones simultáneas de varios orígenes diferentes. Por supuesto, podremos ejecutarlo durante un tiempo determinado, o definiendo una cantidad de datos a enviar determinados.

Otras características importantes de iperf3, es la posibilidad de mostrar periódicamente el estado de la conexión, el ancho de banda hasta el momento, el jitter, la pérdida de paquetes etc. También podremos hacer funcionar el servidor iperf como demonio en el sistema operativo. Otras novedades incorporadas, es la posibilidad de ignorar TCP Slowstart del propio protocolo TCP, fijar el ancho de banda para UDP o TCP, establecer una etiqueta de flujo para IPv6, configurar el algoritmo de control de congestión, posibilidad de sacar toda la información en formato JSON, e incluso podremos realizar test de lectura y escritura directamente en el disco duro.

Este nuevo programa iperf3 tiene licencia BSD, eso significa que es código abierto y multiplataforma, es compatible con sistemas operativos Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, Solaris y muchos otros. En definitiva, las características más importantes de iperf3 son las siguientes:

  • Compatible con TCP, UDP y SCTP
  • Mide ancho de banda, MSS/MTU y permite configurar la ventana TCP en el sistema operativo.
  • Multiplataforma, compatible con Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD y más.
  • Permite realizar múltiples conexiones simultáneas
  • Permite hacer los test de velocidad en sentido descarga y subida
  • Se puede configurar un tiempo específico o transferir una determinada cantidad de datos
  • Proporciona información de ancho de banda, jitter etc.
  • Permite funcionar como proceso en el sistema operativo.
  • Incorpora funciones avanzadas como ignorar el TCP slowstart, configurar el algoritmo de control de congestión y más.

Tal y como habéis visto, iperf3 supone un antes y un después en la medición del ancho de banda en red local e Internet, ahora os vamos a enseñar a descargarlo y utilizarlo en vuestros equipos.

Descarga e instalación de iperf3

Este programa continúa su desarrollo, en la web oficial de Iperf3 tenéis las últimas versiones disponibles para los diferentes sistemas operativos. Una vez descargado, tendremos que descomprimir el archivo ZIP y ya podremos ejecutarlo, pero en este caso no tenemos una interfaz gráfica de usuario ni tampoco un script ejecutable, debemos ejecutarlo a través de la línea de comandos, ya sea en Windows o en Linux/MacOS.

Es muy probable que, en los próximos meses, algún desarrollador lance una interfaz gráfica de usuario para iperf3. Este programa para comprobar el rendimiento real de la red local cableada e inalámbrica es el más utilizado actualmente, porque está disponible para todos los sistemas operativos al ser multiplataforma, algo que ya ocurría anteriormente con iperf2 que lo hemos estado usando durante años. Gracias a la interfaz gráfica de usuario de iperf2 llamada jperf, podíamos ver de manera gráfica el rendimiento de los diferentes hilos TCP y UDP, además, se mostraba en tiempo real. Este programa de interfaz gráfica de usuario no dejaba ser una interfaz gráfica basada en Java que obtenía la información directamente del propio programa iperf2.

Lo más normal es que próximamente, algún desarrollador también lance una interfaz gráfica de usuario similar, donde realmente el funcionamiento del programa no cambie, y solamente muestre en tiempo real la velocidad de transferencia. Otro punto a favor si se incorpora una interfaz gráfica de usuario, es que no tendremos que preocuparnos por aprendernos los diferentes argumentos que podemos utilizar con este programa, actualmente deberemos aprendernos los argumentos mínimos para su buen funcionamiento, sin embargo, con interfaz gráfica de usuario tan solo tendremos que rellenar diferentes casillas como la dirección IP de destino, puerto de destino, si queremos enviar múltiples flujos TCP paralelos etc.

Ejecución de iperf3 en Windows, Linux y macOS

Una vez que hayamos descomprimido el ZIP descargado, entramos en el símbolo del sistema (cmd) o en el terminal de Linux, nos movemos con el comando «cd» por los diferentes directorios, y cuando ya estemos en el directorio de iperf3, debemos ejecutarlo en modo servidor en un PC, y en modo cliente en otro PC:

iperf3.exe ./iperf3

Por supuesto, al ejecutarlo nos saldrá la ayuda de iperf, ya que no hemos puesto ningún argumento.

Funcionamiento y primer test de velocidad

El funcionamiento de iperf3 es muy sencillo, lo primero que debemos tener claro es que es un programa que se ejecuta a través de la línea de comandos, y tenemos diferentes argumentos para configurar su comportamiento. Al estar ante un programa cliente-servidor, es necesario hacer funcionar dos iperf3, uno en un PC como servidor, y otro iperf como cliente para comprobar la velocidad desde el cliente hasta el servidor.

Para arrancar el iperf3 en modo servidor:

iperf3.exe -s ./iperf3 -s

Para arrancar el iperf3 en modo cliente con ciertas opciones que posteriormente os explicaremos:

iperf3.exe -c IP -P 50 -f g -t 5

Tal y como habéis visto, este programa funciona perfectamente en redes 10G, exprimiendo al máximo las conexiones cableadas para conseguir velocidades ultrarrápidas sin ningún problema. Con iperf2 teníamos problemas para superar las velocidades de 1.5Gbps, con el programa antiguo teníamos que configurar la ventana TCP en Windows y otros parámetros avanzados para poder conseguir más velocidad. Gracias a iperf3, no tendremos que hacer nada porque es mucho más eficiente y es capaz de exprimir la velocidad del enlace al máximo, incluso si utilizamos enlaces de 25G e incluso 40G podremos hacerlo.

Una vez que ya sabemos realizar una prueba de rendimiento básica con iperf3, os vamos a enseñar todas las opciones disponibles en este programa.

Opciones de configuración generales: para cliente y servidor

Los siguientes argumentos se pueden introducir después de la ejecución del propio programa, de la siguiente forma: «iperf3 -argumentos» y no importa el orden a la hora de introducir los argumentos.

  • -p puerto: podremos elegir el puerto a utilizar, ya sea TCP o UDP, este puerto debe ser exactamente tanto en el servidor como en todos los clientes.
  • –cport puerto: esta opción nos permite especificar el puerto en el lado del cliente, solo para iperf 3.1 o superior.
  • -f formato: podremos elegir la unidad de medición que nos aparecerá a la hora de ver la velocidad.
    • k: Kbits
    • K: Kbytes/s
    • m: Mbits
    • M: MBytes/s
    • g: Gbps
    • G: GBytes/s
  • -i intervalo: intervalo de tiempo medido en segundos donde iperf3 nos mostrará toda la información de ancho de banda, jitter y pérdida de paquetes. Por defecto es 0.
  • -F nombre_archivo: en el cliente es el archivo leído y escrito en la red local, en lugar de usar información aleatoria. En el servidor es lo leído desde la red y escrito a un archivo.
  • -B host: permite realizar un binding a una tarjeta e red en concreto, ideal por si tenemos múltiples interfaces.
  • -V: salida con todos los detalles (verbose)
  • -J: salida en formato JSON
  • –logfile archivo: envía la salida a un archivo de registro (solo en iperf 3.1)
  • –d: debug
  • -v: version del programa
  • -h: lanza la ayuda del programa

Opciones de configuración solo para el servidor

Los siguientes argumentos se pueden introducir después de la ejecución del propio programa, de la siguiente forma: «iperf3 -argumentos» y no importa el orden a la hora de introducir los argumentos. Estos argumentos solamente se pueden usar en el servidor iperf3.

  • -s: arranca iperf en modo servidor.
  • -D: arranca el programa en segundo plano como demonio.
  • -I: escribe un archivo con el ID del proceso, ideal para usarlo con -D (demonio).

A continuación, podéis ver algunos ejemplos.

Podemos ejecutar el servidor iperf3 de manera predeterminada, automáticamente hará uso del protocolo TCP en puerto 5201.

iperf3.exe -s

Podemos ejecutar el servidor iperf3 con TCP y el puerto 5000 de la siguiente forma:

./iperf3 -s -p 5000

Opciones de configuración solo para el cliente

Los siguientes argumentos se pueden introducir después de la ejecución del propio programa, de la siguiente forma: «iperf3 -argumentos» y no importa el orden a la hora de introducir los argumentos. Estos argumentos solamente se pueden usar en el cliente iperf3.

  • -c direccion_IP: arranca iperf en modo cliente para conectarnos a un servidor, debemos definir la dirección IP justo después.
  • –sctp: utiliza este protocolo SCTP en lugar de TCP (por defecto).
  • -u: utiliza el protocolo UDP en lugar de TCP (por defecto).
  • -b ancho_de_banda: permite definir un ancho de banda en N bits/sec, por defecto es 1MB/s en UDP e ilimitado en TCP. Si utilizamos el argumento -P para enviar múltiples flujos de datos, este ancho de banda se aplica a cada uno de ellos.
  • -t tiempo: en segundos para transmitir información a la máxima velocidad. Por defecto son 10 segundos, pero podremos poner lo que queramos.
  • -n número: número de datos a transmitir, en lugar de utilizar tiempo (-t) usamos datos.
  • -k paquetes: número de paquetes a transmitir, en lugar de usar tiempo (-t) o datos (-n).
  • -l (L minúscula): longitud del buffer leído o escrito.
  • -P número: número de flujos de datos simultáneos, recomendable poner 5 o superior para exprimir la red al máximo.
  • -R: el tráfico de iperf normalmente va desde el cliente hasta el servidor, si ponemos este argumento, el tráfico irá desde el servidor hasta el cliente.
  • -w tamaño: permite especificar el tamaño de ventana de TCP
  • -M mss: permite configurar el MSS de TCP
  • -N: configura la opción no-delay de TCP.
  • -4: utilizamos redes IPv4.
  • -6: utilizamos redes IPv6.
  • -S: tipo de servicio para los paquetes salientes.
  • -L etiqueta: permite configurar la etiqueta de flujo para redes IPv6.
  • -Z: utiliza el método zero-copy, reduce muchísimo el uso de CPU por parte del programa.
  • -O segundos: omite los primeros X segundos del test, para evitar problemas con el TCP slowstart y que nos proporcione una medida sin la ráfaga del principio.
  • -T título: permite poner un título delante de cada cadena
  • -C algoritmo: permite configurar el algoritmo de congestión, solamente en Linux con iperf 3.0 y en FreeBSD con iperf 3.1

A continuación, podéis ver algunos ejemplos.

Podemos ejecutar el cliente iperf3 con algunos argumentos muy interesantes:

iperf3.exe -c 192.168.1.10 -P 50 -p 5000 -f g -t 5
  • -c 192.168.1.10: actúa en modo cliente con la IP definida.
  • -P 50: mandamos un total de 50 conexiones TCP
  • -p 5000: hacemos uso del puerto 5000, el por defecto es 5201
  • -f g: mostramos la velocidad en Gbps
  • -t 5: lanzamos el test durante 5 segundos.

Tal y como habéis visto, este programa iperf3 es muy sencillo porque nos permite ejecutar un iperf con interfaz gráfica de usuario, sin necesidad de introducir complicados comandos y argumentos.

¡Sé el primero en comentar!