¿Cómo diagnosticar la velocidad de red usando Iperf?

Actualizado el 17 de agosto, 2016. Por BlueHosting.

Los administradores de sistemas Linux y los administradores de red a menudo encuentran que es complicado diagnosticar la degradación de velocidad en la red, ya que no hay muchas herramientas disponibles para diagnosticar estos problemas. El comando Iperf es una herramienta de la línea de comandos usada en el diagnóstico de problemas de velocidad de red.
Iperf mide la capacidad máxima de procesamiento de red que puede manejar un servidor. Es particularmente útil cuando se experimentan problemas de velocidad en la red, debido a que se puede utilizar Iperf para determinar cuál servidor es incapaz de llegar al rendimiento máximo.

Nota:
Esta guía asume que usted es un usuario root. Si no está usando el superusuario, deberá usar el prefijo sudo antes de cada comando (su usuario debe tener los privilegios adecuados para ejecutar sudo).

Instalar Iperf

Debian y Ubuntu

Puede usar apt-get para instalar Iperf en Debian y Ubuntu:

apt-get install iperf

CentOS

Los repositorios de CentOS no tienen Iperf por defecto. Debe usar el repositorio EPEL, que es un repositorio usado para instalar paquetes de software de terceros en sistemas basados en RedHat como RHEL y CentOS.

Para habilitar el repositorio EPEL en su servidor CentOS siga nuestro tutorial. Una vez terminados los pasos en la guía, use yum para instalar Iperf:

yum update
yum install iperf

Fedora

Para instalar Iperf en su servidor Fedora ejecute:

yum update
yum install iperf

Arch Linux

Para instalar Iperf en su servidor Arch Linux ejecute:

pacman -S iperf

Gento

Usando Portage, instale Iperf en su distro de Gentoo:

emerge iperf

Si todavía no ha ejecutado emerge --sync puede que necesite hacerlo antes de que se le permita instalar el paquete de Iperf. Adicionalmente, por defecto deberá sustituir cada comando iperf con /usr/bin/iperf3. Esta ruta puede variar según la versión de instalación de Iperf.

Cómo usar Iperf

Iperf debe ser instalado en ambos computadores entre los cuales esté haciendo pruebas de conexión. Si usted está utilizando un sistema operativo basado en Linux o Unix en su computador personal, entonces será capaz de instalar Iperf en su máquina local. Sin embargo, si usted está probando el rendimiento en su BlueHosting, lo mejor es que utilice otro servidor como el otro extremo de la conexión, ya que su ISP local puede imponer restricciones de red que podrían afectar los resultados de sus pruebas.

Clientes y servidores TCP

Iperf requiere de dos sistemas: un sistema debe actuar como servidor, mientras que el otro actúa como cliente. El cliente se conecta al servidor al cual usted desea aplicar las pruebas de velocidad.

  1. Desde el servidor BlueHosting que desea probar, inicie Iperf en modo de servidor:

    iperf -s
    

    La salida será similar a lo siguiente:

    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    
  2. Desde su segundo equipo, conéctese al primero. Remplace 123.45.67.8 con la dirección IP de su primer servidor BlueHosting.

    iperf -c 123.45.67.8
    

    La salida se asemejará a lo siguiente:

    ------------------------------------------------------------
    Client connecting to 123.45.67.8, TCP port 5001
    TCP window size: 45.0 KByte (default)
    ------------------------------------------------------------
    [  3] local 123.45.67.9 port 50549 connected with 123.45.67.8 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec   142 MBytes   119 Mbits/sec
    
  3. También podrá ver la conexión y los resultados en su servidor Iperf. Se parecerán al siguiente mensaje:

    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 123.45.67.8 port 5001 connected with 123.45.67.9 port 50549
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-10.2 sec   142 MBytes   117 Mbits/sec
    
  4. Para detener el proceso del servicio Iperf, simplemente presione CTRL + c.

Clientes y servidores UDP

Usando Iperf, también puede probar el rendimiento máximo logrado a través de conexiones UDP.

  1. Inicie el servidor Iperf UDP:

    iperf -s -u
    

    La salida será similar a:

    ------------------------------------------------------------
    Server listening on UDP port 5001
    Receiving 1470 byte datagrams
    UDP buffer size:  208 KByte (default)
    ------------------------------------------------------------
    
  2. Conecte su cliente a su servidor UDP Iperf. Remplace 123.45.67.8 con su dirección IP:

    iperf -c 123.45.67.8 -u
    

    La opción -u le dice a Iperf que nos estamos conectando a través de UDP. Esto es importante, porque queremos ver el rendimiento máximo alcanzado a través de UDP. La salida será semejante a lo siguiente:

    ------------------------------------------------------------
    Client connecting to 123.45.67.8, UDP port 5001
    Sending 1470 byte datagrams
    UDP buffer size:  208 KByte (default)
    ------------------------------------------------------------
    [  3] local 123.45.67.9 port 58070 connected with 123.45.67.8 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
    [  3] Sent 893 datagrams
    [  3] Server Report:
    [  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   0.084 ms    0/  893 (0%)
    

    Viendo la salida que hemos recibido, 1.05 Mbits/seg es considerablemente menos de lo que recibimos en las pruebas TCP. Es también considerablemente menor al ancho de banda máximo saliente ofrecido por los servidores BlueHosting más básicos. Esto es porque Iperf limita el ancho de banda para los clientes UDP a un 1 Mbit por segundo de forma predeterminada.

  3. Puede cambiar esto con la bandera -b, remplazando el siguiente número con la tasa máxima de ancho de banda contra el cual quiere probar. Si usted está probando velocidad de red, recomendamos establecer este número un poco por encima del límite de ancho de banda máxima provisto por su servidor BlueHosting:

    iperf -c 123.45.67.8 -u -b 150m
    

    Esto le dice al cliente que queremos alcanzar un máximo de 150 Mbits por segundo si es posible. La bandera -b solo funciona cuando se usan conexiones UDP, ya que Iperf no establecer un límite de ancho de banda en los clientes TCP.
    La salida será similar a lo siguiente:

    -----------------------------------------------------------
    Client connecting to 123.45.67.8, UDP port 5001
    Sending 1470 byte datagrams
    UDP buffer size:  208 KByte (default)
    ------------------------------------------------------------
    [  3] local 123.45.67.9 port 41083 connected with 123.45.67.8 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec   145 MBytes   122 Mbits/sec
    [  3] Sent 103625 datagrams
    [  3] Server Report:
    [  3]  0.0-10.3 sec   136 MBytes   111 Mbits/sec  13.488 ms 6464/103623 (6.2%)
    

    ¡Ahora el resultado es bastante mejor que los 1.05 Mbits/seg que obtuvimos anteriormente!

Pruebas bidireccionales

En algunos casos, quizás requiera probar ambos servidores para verificar la capacidad máxima de procesamiento. Esto puede ser realizado con facilidad con la característica de prueba bidireccional que ofrece Iperf.

Ejecute el siguiente comando para probar ambas conexiones:

iperf -c 123.45.67.8 -d

El resultado es que Iperf iniciará una conexión de servidor y de cliente desde el cliente original (123.45.67.9). Una vez hecho esto, Iperf conectará el servidor Iperf original a la conexión cliente, que ahora está actuando tanto como conexión de servidor y de cliente. La salida se asemejará a lo siguiente:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 123.45.67.8, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  3] local 123.45.67.9 port 50550 connected with 123.45.67.8 port 5001
[  5] local 123.45.67.9 port 5001 connected with 123.45.67.8 port 36916
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   142 MBytes   118 Mbits/sec
[  5]  0.0-10.1 sec   198 MBytes   165 Mbits/sec

En el servidor Iperf original podrá ver:

------------------------------------------------------------
Client connecting to 123.45.67.9, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[  6] local 123.45.67.8 port 36916 connected with 123.45.67.9 port 5001
[  6]  0.0-10.0 sec   198 MBytes   166 Mbits/sec
[  5]  0.0-10.2 sec   142 MBytes   117 Mbits/sec

Es importante notar los identificadores junto a los avisos de conexión. Estos IDs le permitirán separar los resultados de velocidad de cada servidor. En este ejemplo, el servidor Iperf (123.45.67.8) es un BlueHosting de 2 GB de RAM, mientras que el Iperf del lado del cliente (123.45.67.9) es un BlueHosting de 1 GB. Esto explica por qué estamos viendo capacidades de procesamiento máximas diferentes entre los servidores.

Opciones

Opción Descripción
-f Cambia el formato en el cual se están ejecutando sus pruebas. Por ejemplo, puede usar -f k para obtener resultados en Kbits/seg en lugar de Mbits por segundo. Las opciones válidas incluyen: m (Mbits, predeterminada), k (Kbits), K (KBytes), and M (MBytes).
-V Forza a Iperf a usar IPv6 en vez de IPv4.
-i Cambia el intervalo de las pruebas periódicas de ancho de banda. Por ejemplo, -i 60 hará un nuevo reporte de ancho de banda cada 60 segundos. El valor por defecto es cero, el cual lleva a cabo una sola prueba de ancho de banda.
-p Cambia el puerto. Cuando no se especifica, el puerto por defecto es 5001. Si usará esta opción, debe especificarlo tanto en el cliente como en el servidor.
-B Enlaza Iperf a una interfaz o dirección específica. Si se usa en el comando del lado del servidor, la interfaz entrante será establecida. Si se usa del lado del cliente, se establecerá la interfaz de salida.

Recursos adicionales

Puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...