Noticias

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.

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.

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

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.

El artículo iperf3: Mide la velocidad entre dos o más equipos en LAN, WiFi o Internet se publicó en RedesZone.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.