Conocer la velocidad de nuestra tarjeta de red en Linux es super importante ya que en base a los valores compatibles de la tarjeta se pueden configurar todo lo relacionado con el cableado ya que este al venir en diversas categorías ofrecen diversas velocidades y si la tarjeta de red no es compatible solo llegara a un punto y de allí no pasara, algunas de las velocidades disponibles en cable Ethernet son:
- 10 Mbps
- 100 Mbps
- 1 Gbps
- 40 Gbps y 100 Gbps
Entre mayor sea la velocidad tendremos mejor rendimiento y una mayor capacidad de transporte (envío y recepción) de los datos. Para tener un control preciso sobre la velocidad en tiempo real de la tarjeta de red en Linux haremos uso de iperf3.
iPerf3 es utilidad la cual le brinda al usuario un mecanismo de medición activa del ancho de banda máximo alcanzable en nuestra red local a través de la tarjeta de red usada, esta utilidad es compatible con la sincronización, búferes y protocolos TCP, UDP, SCTP tanto con IPv4 como con IPv6.
- Puede manejar múltiples conexiones
- Podemos usar iPerf3 en sistemas como Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD y mas
- Podemos realizar pruebas TCP y SCTP.
- Compatibilidad con el tamaño de la ventana TCP usando los búferes de socket.
- Medición del ancho de banda en tiempo real.
- Permite crear flujos UDP de ancho de banda definido.
- Podemos medir la pérdida de paquetes y la fluctuación de retardo.
- Tanto el cliente como el servidor pueden tener varias conexiones simultáneas.
- Puede ejecutarse durante un tiempo específico la prueba.
- Un servidor acepta un solo cliente simultáneo.
- Se puede ejecutar el servidor como un demonio.
- Es posible usar SCTP en lugar de TCP.
- Admite las pruebas de lectura de disco.
- Se puede establecer un algoritmo de control de congestión.
- Ofrece salida en formato JSON y más.
Ahora vamos a ver como usar iPfer3 para monitorear nuestra velocidad de la tarjeta de red y para ello es posible usar la IP local o bien alguna IP remota.
Cómo ver velocidad de tarjeta de red Linux
- -p, --port n: indica el puerto del servidor para que el servidor escuche y el cliente para conectarse, por defecto es 5201.
- --cport n: es una opción para especificar el puerto del lado del cliente.
- -f, --format [kmKM]: indica el formato para imprimir los números de ancho de banda, las opciones son 'k' = Kbits/seg, 'K' = KBytes/seg, 'm' = Mbits/seg, 'M' = MBytes/seg
- -i, --interval n: nos permite definir el intervalo de tiempo en segundos entre los informes periódicos de ancho de banda, fluctuación y pérdida de la tarjeta.
- -A, --affinity n/n,m-F: establece la afinidad de la CPU, si aplica y está disponible para Linux y FreeBSD.
- -V, --verbose: ofrece una salida más completa.
- -J: ofrece una salida en formato JSON.
- --logfile file: genera el resultado a un archivo de registro.
- --d, --debug: omite la salida de depuración.
- -v, --version: despliega la información de la versión.
- -s, --server: ejecuta iPerf en modo servidor.
- -I, --pidfilefile: se encarga de escribir un archivo con el ID del proceso usado.
- -D, --daemon: ejecuta el servidor en segundo plano como un demonio.
- -c, --client host: ejecuta iPerf en modo cliente.
- -u, --udp: usara UDP en vez de TCP.
- --sctp: hace uso de SCTP en lugar de TCP.
- -t, --time n: indica el tiempo en segundos para transmitir la información.
- -n, --num n[KM]: es el número de búferes a transmitir.
- -4, --version4: solo hace uso de IPv4.
- -6, --version6: solo usara IPv6.
Para iniciar abrimos la terminal en Linux y vamos a instalar la utilidad ipfer3 usando el comando:
sudo apt install iperf3
Para otras versiones de Linux podemos usar los siguientes comandos:
sudo yum install iperf3 (RHEL/CentOS/Fedora and Rocky/AlmaLinux) sudo emerge -a net-misc/iperf (Gentoo) sudo pacman -S iperf3 (Arch Linux)
Ahora es momento de que se active el modo de servidor de iPerf3, este modo hará el monitoreo local o del cliente, para ello en la terminal ejecutamos “iperf3 -s”:
Para ver el funcionamiento de iperf3 abriremos otra ventana de la consola, allí vamos a realizar un análisis de la velocidad de nuestra tarjeta de red local, para este caso ingresamos el comando:
iperf3 -c 127.0.0.1 -f K
Veremos en la ventana de la consola que está como servidor los resultados en tiempo real:
Allí, y en la mayoría de los resultados encontramos detalles como:
- Nivel de aceptación
- Intervalo usado
- Tasa de transferencia
- Tasa de bits usados
El servidor seguirá con la función de escucha esperando las órdenes a usar, ahora es posible ingresar un puerto en especial, para esto será necesario usar la siguiente sintaxis:
iperf3 -s -p #puerto
Pulsamos la tecla Enter para esperar que haya actividad en dicho puerto y sea reflejada en la ventana del servidor.
Si el propósito es ver el tamaño de la ventana TCP o búfer del socket , debemos usar el comando:
iperf3 -c 127.0.0.1 -f K -w #K
En el servidor veremos los respectivos resultados. El servidor seguirá en escucha..
Es posible revisar la velocidad en modo inverso, es decir, el servidor envía y el cliente recibe, Solvetic te enseña cómo hacer usando el comando:
iperf3 -c 127.0.0.1 -f K -w #K -R
En la parte superior podemos ver la leyenda “Reverse mode” indicando esta función, en el servidor veremos el respectivo resultado:
Otra de las opciones con las que podemos ver datos es usando el modo bidireccional el cual mide el ancho de banda en ambas direcciones de forma simultánea, si deseas hacer uso de este vas a ingresar lo siguiente en la terminal:
iperf3 -c 127.0.0.1 -f K -w #K -d
Una vez finalice el proceso veremos un resultado con una estructura diferente:
Veremos todos los valores e intervalos usados en el análisis de la velocidad de la tarjeta de red. Vamos al servidor para revisar el resultado generado:
Otra de las opciones es tener acceso a los resultados del servidor en la ventana del cliente, para realizar esto vamos a ingresar el comando:
iperf3 -c 127.0.0.1 -f K -w #K -R --get-server-output
Debemos esperar que este proceso finalice para ver el resultado completo y en la ventana del servidor tendremos los resultados:
Siguiendo con las opciones es posible asignar el número de clientes paralelos en los resultados, sigue el ejemplo de Solvetic para esta opción:
iperf3 -c 127.0.0.1 -f K -w #K -P #
Podemos ver los resultados en formato de intervalos, como resultado veremos lo siguiente en el servidor. Allí vemos cada intervalo usado con sus respectivos tiempos.
Vemos como iPerf3 es una solución completa para tener todos los detalles de nuestra tarjeta de red en Linux.