
Como medir el ancho de banda o la velocidad entre dos redes en Gnu/ linux Centos 8. Las herramientas son opensource y se pueden utilizar en otras distros o sistemas operativos como RHEL, Windows, Debian, MacOS, Ubuntu, etc.
Algunas de las herramientas que utilizaremos (iperf, netcat nc, ttcp, entre otras) en esta entrada, las enfocaremos para pruebas de medición del flujo de datos de la capa de transporte (protocolos TCP y UDP), aunque las mismas la podemos utilizar en otras funciones.
En resumen mediremos la velocidad de transferencia, el rendimiento y el ancho de banda entre dos puntos o redes.
IPERF y IPERF3
srv:~$ iperf -s < ------------- red ------------- > cli:~$ iperf ip-srv (red metro ethernet, wifi, vpn, etc)
Iperf y su version iperf3 es una herramienta multiplataforma que se utiliza para hacer pruebas de medición o rendimiento entre dos extremos, prácticamente creamos flujos de datos TCP o UDP y mide el rendimiento de la transferencia entre los dos puntos o redes de manera unidireccional o bidireccionalmente. La version iperf3 no es compatible con las anteriores.
En su formato simple podemos usuarl iperf con sus parametros por defecto en el servidor iperf -s, en el cliente iperf -c ip-servidor, es importante que el firewall no este bloqueando el puerto por donde realizaremos las pruebas.
Servidor ip 192.168.5.1 | Cliente ip 192.168.5.2 |
Iperf3 -s | Iperf3 -c 192.168.5.1 |
Servidor). Este seria el comando ejecutado en el servidor, con su respectiva salida.
usuario@servidor:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.5.1 port 5001 connected with 192.168.5.2 port 4463 [ 4] 0.0-10.0 sec 1.01 GBytes 866 Mbits/sec
Cliente). Este seria el comando ejecutado en el equipo cliente, con su respectiva salida.
usuario@cliente:~$ iperf -c 192.168.5.1 ------------------------------------------------------------ Client connecting to 192.168.5.1, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.5.2 port 4483 connected with 192.168.5.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.01 GBytes 867 Mbits/sec
Como se puede observar en el ejemplo anterior, la salida de Iperf contiene un informe con marcas de tiempo con la cantidad de datos transmitidos y el rendimiento medido.
Ademas de que Iperf funciona en cualquier red proporcionando medidas estandarezadas sobre los protocolos de transporte udp y tcp, nos permitirá como usuario ajustar varios parámetros que pueden ser usados para hacer pruebas, optimizar y/o ajustar la red.
UDP: Cuando se utiliza el protocolo UDP, Iperf permite al usuario especificar el tamaño de los datagramas y proporciona resultados del rendimiento y de los paquetes perdidos.
TCP: Cuando se utiliza TCP, Iperf mide el rendimiento de la carga útil. Un detalle a tener en cuenta es que Iperf usa 1024*1024 para medidas en megabytes y 1000*1000 para megabits.
Otro ejemplo con udp , intervalos de 1 sec y 4 hilos
usuario@server:~$ iperf -s -u -i 1 -t 2 -P 4 ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 107 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.5.1 port 5001 connected with 192.168.5.2 port 59991 [ 4] local 192.168.5.1 port 5001 connected with 192.168.5.2 port 46655 [ 5] local 192.168.5.1 port 5001 connected with 192.168.5.2 port 43889 [ 6] local 192.168.5.1 port 5001 connected with 192.168.5.2 port 35668 [ 3] 0.0- 1.0 sec 131 KBytes 1.07 Mbits/sec 0.011 ms 0/ 89 (0%) [ 4] 0.0- 1.0 sec 128 KBytes 1.05 Mbits/sec 0.011 ms 0/ 89 (0%) [ 5] 0.0- 1.0 sec 126 KBytes 1.03 Mbits/sec 0.011 ms 1/ 89 (1.1 usuario@cliente:~$ iperf -c 192.168.5.1 -u -i 1 -t 10 -P 4 ------------------------------------------------------------ Client connecting to 192.168.5.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 109 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.5.2 port 59991 connected with 192.168.5.1 port 5001 [ 5] local 192.168.5.2 port 46655 connected with 192.168.5.1 port 5001 [ 6] local 192.168.5.2 port 43889 connected with 192.168.5.1 port 5001 [ 3] local 192.168.5.2 port 35668 connected with 192.168.5.1 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec [ 5] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec [ 6] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec [ 3] 0.0- 1.0 sec 4.00 GBytes 34.4 Gbits/sec
NC
netcat es la utilidad de línea de comandos de netcat bastante útil. Aunque estas pruebas con nc consideran todos los parametros en la red, cuando la realizamos en las dos direcciones, nos proporcionan una idea muy cercana a nuestra realidad.
usuario@server:~$ nc -l -p 5001 | wc -c usuario@cliente:~$ dd if=/dev/zero bs=1048576 count=1024 | nc -q 0 192.168.0.8 5001 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 10.2186 seconds, 105 MB/s