He configurado un total de cuatro servidores en un centro de datos basado en la nube. Ellos corren ya sea CentOS o Ubuntu Linux. Necesito asegurarme de que el rendimiento del sistema de archivos en clúster es razonable ya que mis servidores se comparten con otros usuarios. ¿Cómo puedo comprobar la velocidad entre los dos servidores Linux utilizando las opciones de línea de comandos para la LAN/VLAN privada?
Puede comprobar la velocidad/rendimiento de la red entre Ubuntu/CentOS/Debian/Fedora Linux o Unix box utilizando el comando iperf. Los comandos Iperf muestran información sobre el ancho de banda, el retardo, el jitter y la pérdida de datagramas. Es una herramienta para realizar mediciones de rendimiento de la red. Puede probar el rendimiento TCP o UDP. Para realizar una prueba iperf el usuario debe establecer un servidor (para descartar el tráfico) y un cliente (para generar tráfico). En esta página se explica cómo probar la velocidad/rendimiento de la red entre dos servidores Linux.
Detalles del tutorial | |
---|---|
Dificultad nivel | Fácil | Privilegios de root | Sí | Requisitos | Linux con iperf | Tiempo est. tiempo de lectura | 8 mintuos |
Mi ejemplo de configuración para probar la velocidad/rendimiento de la red entre dos servidores Linux
Fig.01 Prueba de la velocidad de la red entre dos ordenadores Linux
Paso 1 – Instalación
Tienes que instalar iperf según la versión de tu distro Linux. Hay dos versiones de iperf:
- iperf
- iperf3
El iperf/iperf3 funciona en Linux, Unix, Windows, *BSD y otros sistemas operativos.
Instalar iperf en un servidor Linux Ubuntu/Debian
Escribe el siguiente comando apt-get/apt para instalar iperf en ambos servidores:$ sudo apt-get update
$ sudo apt-get install iperf
Esto es lo que vemos en Ubuntu 20.04 LTS:
password for vivek: Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: iperf0 upgraded, 1 newly installed, 0 to remove and 23 not upgraded.Need to get 76.5 kB of archives.After this operation, 213 kB of additional disk space will be used.Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf amd64 2.0.13+dfsg1-1build1 Fetched 76.5 kB in 1s (70.5 kB/s) Selecting previously unselected package iperf.(Reading database ... 344795 files and directories currently installed.)Preparing to unpack .../iperf_2.0.13+dfsg1-1build1_amd64.deb ...Unpacking iperf (2.0.13+dfsg1-1build1) ...Setting up iperf (2.0.13+dfsg1-1build1) ...Processing triggers for man-db (2.9.1-1) ...
Una nota sobre la instalación de iperf3 en un Linux Debian/Ubuntu
También es posible instalar iperf3 (última versión) de la siguiente manera:$ sudo apt-get install iperf3
Salidas:
Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed: libiperf0The following NEW packages will be installed: iperf3 libiperf00 upgraded, 2 newly installed, 0 to remove and 23 not upgraded.Need to get 86.2 kB of archives.After this operation, 294 kB of additional disk space will be used.Do you want to continue? yGet:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libiperf0 amd64 3.7-3 Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf3 amd64 3.7-3 Fetched 86.2 kB in 1s (97.4 kB/s) Selecting previously unselected package libiperf0:amd64.(Reading database ... 344807 files and directories currently installed.)Preparing to unpack .../libiperf0_3.7-3_amd64.deb ...Unpacking libiperf0:amd64 (3.7-3) ...Selecting previously unselected package iperf3.Preparing to unpack .../iperf3_3.7-3_amd64.deb ...Unpacking iperf3 (3.7-3) ...Setting up libiperf0:amd64 (3.7-3) ...Setting up iperf3 (3.7-3) ...Processing triggers for man-db (2.9.1-1) ...Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Instalación de iperf en un servidor Linux Fedora latest/RHEL/CentOS 8
Escribe el siguiente comando dnf para instalar iperf en ambos servidores:$ sudo dnf install iperf
Una nota sobre la instalación de iperf3 en un CentOS/RHEL/SL/Oracle Linux
Escriba el siguiente comando:$ sudo dnf install iperf3
Instalar iperf en un servidor CentOS/RHEL/Oracle/Scientific Linux
Escribe el siguiente comando yum para instalar iperf en ambos servidores (primero activa el repo de EPEL para CentOS/RHEL 7.x):$ sudo yum install iperf
Si está utilizando la última versión de Fedora y CentOS/RHEL 8.x prueba el comando dnf de la siguiente manera:$ sudo dnf install iperf3
Instalando iperf3 en un servidor CentOS o RHEL 8.x server
Una nota sobre la instalación de iperf3 en un CentOS/RHEL/SL/Oracle Linux
Escriba el siguiente comando:$ sudo yum install iperf3
Paso 2 – Iniciar un servidor iperf en serverA (modo servidor)
Escriba el siguiente comando para ejecutar iperf en modo servidor:iperf -s
Oiperf3 -s
Salidas de ejemplo:
------------------------------------------------------------Server listening on TCP port 5001TCP window size: 85.3 KByte (default)------------------------------------------------------------
Anote el puerto TCP # 5001.
Una nota sobre la configuración del firewall
Tenga en cuenta que debe abrir el puerto TCP 5001 en el servidorA. Vea cómo usar ufw para abrir un puerto en Ubuntu/Debian Linux:$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
Los usuarios de CentOS/RHEL/Fedora necesitan el puerto usando FirewallD. Vea cómo configurar un firewall usando FirewallD en CentOS 8:sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent
También es posible cambiar el puerto pasando la opción -p de la siguiente manera (por ejemplo abrir y utilizar el puerto TCP 2323):iperf -s -p 2323
iperf3 -s -p 4242
-----------------------------------------------------------Server listening on 4242-----------------------------------------------------------
Paso 3 – Iniciar un servidor iperf en el servidorB (modo cliente)
Escriba el siguiente comando para ejecutar en modo cliente, conectándose a 192.168.149.69:iperf -c {ip-address-of-serverA-here}
iperf -c {ip-address-of-serverA-here} -p {tcp-port}
iperf -c 192.168.149.69 -p 2323
iperf -c 192.168.149.69
Oiperf3 -c {ip-address-of-serverA-here}
iperf3 -c {ip-address-of-serverA-here} -p {tcp-port}
iperf3 -c 192.168.149.69 -p 2323
iperf3 -c 192.168.149.69
Salidas de ejemplo:
Fig.02: Resultado de la prueba de velocidad de la red Linux
Cómo usar UDP en lugar de TCP
En el lado del servidor:iperf -s -u
En el lado del cliente:iperf -c 192.168.149.69 -u
Vea también: Cómo instalar Speedtest-cli en un CentOS / RHEL / Scientific / Fedora Linux Para comprobar la velocidad de Internet desde la shell de Bashl
Cómo establecer el número de hilos paralelos del cliente para ejecutar (opciones del modo cliente)
Pasa la opción -P:iperf -c 192.168.149.69 -P 3
También puedes establecer el tiempo en segundos para transmitir (por defecto 10 segs) de la siguiente manera:iperf -c 192.168.149.69 -P 3 -t 30
Salidas de ejemplo:
------------------------------------------------------------Client connecting to 192.168.149.69, TCP port 5001TCP window size: 85.0 KByte (default)------------------------------------------------------------ local 192.168.181.40 port 54198 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54194 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54196 connected with 192.168.149.69 port 5001 Interval Transfer Bandwidth 0.0-30.0 sec 2.26 GBytes 647 Mbits/sec 0.0-30.0 sec 2.89 GBytes 828 Mbits/sec 0.0-30.5 sec 1.91 GBytes 539 Mbits/sec 0.0-30.5 sec 7.07 GBytes 1.99 Gbits/sec
Aquí está la salida de iperf3:## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69
Salidas de muestra:
Connecting to host 192.168.149.69, port 5201 local 192.168.181.40 port 55522 connected to 192.168.149.69 port 5201 Interval Transfer Bandwidth Retr Cwnd 0.00-1.00 sec 235 MBytes 1.97 Gbits/sec 32 609 KBytes 1.00-2.00 sec 230 MBytes 1.93 Gbits/sec 21 670 KBytes 2.00-3.00 sec 159 MBytes 1.33 Gbits/sec 19 635 KBytes 3.00-4.00 sec 235 MBytes 1.97 Gbits/sec 7 686 KBytes 4.00-5.00 sec 229 MBytes 1.92 Gbits/sec 86 757 KBytes 5.00-6.00 sec 206 MBytes 1.73 Gbits/sec 6 537 KBytes 6.00-7.00 sec 210 MBytes 1.76 Gbits/sec 5 556 KBytes 7.00-8.00 sec 235 MBytes 1.97 Gbits/sec 10 617 KBytes 8.00-9.00 sec 245 MBytes 2.06 Gbits/sec 11 670 KBytes 9.00-10.00 sec 234 MBytes 1.96 Gbits/sec 10 713 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bandwidth Retr 0.00-10.00 sec 2.17 GBytes 1.86 Gbits/sec 207 sender 0.00-10.00 sec 2.16 GBytes 1.86 Gbits/sec receiver
Obtener ayuda es fácil
Escriba el siguiente comando:$ man iperf
$ man iperf3
$ iperf --help
$ iperf3 --help
Server or Client: -p, --port # server port to listen on/connect to -f, --format format to report: Kbits, Mbits, Gbits, Tbits -i, --interval # seconds between periodic throughput reports -F, --file name xmit/recv the specified file -A, --affinity n/n,m set CPU affinity -B, --bind <host> bind to the interface associated with the address <host> -V, --verbose more detailed output -J, --json output in JSON format --logfile f send output to a log file --forceflush force flushing output at every interval -d, --debug emit debugging output -v, --version show version information and quit -h, --help show this message and quitServer specific: -s, --server run in server mode -D, --daemon run the server as a daemon -I, --pidfile file write PID file -1, --one-off handle one client connection then exit --rsa-private-key-path path to the RSA private key used to decrypt authentication credentials --authorized-users-path path to the configuration file containing user credentialsClient specific: -c, --client <host> run in client mode, connecting to <host> --sctp use SCTP rather than TCP -X, --xbind <name> bind SCTP association to links --nstreams # number of SCTP streams -u, --udp use UDP rather than TCP --connect-timeout # timeout for control connection setup (ms) -b, --bitrate # target bitrate in bits/sec (0 for unlimited) (default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) --pacing-timer # set the timing for pacing, in microseconds (default 1000) --fq-rate # enable fair-queuing based socket pacing in bits/sec (Linux only) -t, --time # time in seconds to transmit for (default 10 secs) -n, --bytes # number of bytes to transmit (instead of -t) -k, --blockcount # number of blocks (packets) to transmit (instead of -t or -n) -l, --length # length of buffer to read or write (default 128 KB for TCP, dynamic or 1460 for UDP) --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port) -P, --parallel # number of parallel client streams to run -R, --reverse run in reverse mode (server sends, client receives) --bidir run in bidirectional mode. Client and server send and receive data. -w, --window # set window size / socket buffer size -C, --congestion <algo> set TCP congestion control algorithm (Linux and FreeBSD only) -M, --set-mss # set TCP/SCTP maximum segment size (MTU - 40 bytes) -N, --no-delay set TCP/SCTP no delay, disabling Nagle's Algorithm -4, --version4 only use IPv4 -6, --version6 only use IPv6 -S, --tos N set the IP type of service, 0-255. The usual prefixes for octal and hex can be used, i.e. 52, 064 and 0x34 all specify the same value. --dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic. Numeric values can be specified in decimal, octal and hex (see --tos above). -L, --flowlabel N set the IPv6 flow label (only supported on Linux) -Z, --zerocopy use a 'zero copy' method of sending data -O, --omit N omit the first n seconds -T, --title str prefix every output line with this string --extra-data str data string to include in client and server JSON --get-server-output get results from server --udp-counters-64bit use 64-bit counters in UDP test packets --repeating-payload use repeating pattern in payload, instead of randomized payload (like in iperf2) --username username for authentication --rsa-public-key-path path to the RSA public key used to encrypt authentication credentials indicates options that support a K/M/G suffix for kilo-, mega-, or giga- iperf3 homepage at: https://software.es.net/iperf/Report bugs to: https://github.com/esnet/iperf
Resumen
Esta página explica cómo realizar pruebas de rendimiento de red entre dos servidores Linux o Unix utilizando la herramienta iperf3/iperf. Consulte la documentación de iperf y el código fuente de iperf3 en línea para obtener más información.
🐧 5 comentarios hasta ahora… añadir uno ↓
Categoría | Lista de comandos de Unix y Linux |
---|---|
Gestión de archivos | cat | Firewall | Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04 |
Utilidades de red | dig – host – ip – nmap |
OpenVPN | CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04 |
Administrador de paquetes | apk – apt | Gestión de procesos | bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – time |
Búsqueda | grep – whereis – which |
Información del usuario | grupos – id – lastcomm – last – lid/libuser-lid – logname – members – users – whoami – who – w | WireGuard VPN | Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04 |