LinuxParty
Iperf es una herramienta para medir el ancho de banda y la calidad de un enlace de red. Jperf puede ser asociado con Iperf para tener una interfaz gráfica escrita en Java.
El enlace a examinar está delimitado por dos clientes ejecutando Iperf.
La calidad de un enlace puede ser examinado bajo las siguientes métricas:
- Latencia (tiempo de respuesta o RTT): puede medirse usando en comando Ping.
- Jitter (variación en la latencia): puede medirse con Iperf ejecutando una prueba con UDP.
- Perdida de datagramas: puede medirse con Iperf ejecutando una prueba con UDP.
El ancho de banda es medido mediante pruebas con TCP.
La diferencia entre TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagramas de Usuario) es que TCP utiliza procesos para verificar que los paquetes sean enviados correctamente al receptor mientras que con UDP los paquetes son enviados sin realizar verificaciones pero con la ventaja de ser más veloz que TCP.
Iperf utiliza las diferentes capacidades de TCP y UDP para proveer datos estadísticos acerca de los enlaces de red.
Finalmente, Iperf puede ser instalado muy fácilmente en cualquier sistema basado en UNIX/Linux o Microsoft Windows. Un cliente debe tener la función de cliente y otro la de servidor.
A continuación se muestra un diagrama donde Iperf está instalado en dos computadoras, una ejecutando Linux y la otra Microsoft Windows.
La computadora con Linux es usada como cliente en Iperf y la que ejecuta Windows es el servidor, también es posible usar dos computadoras con Windows o dos con Linux.
no arg. -b -r -d -w |
Configuración por default Formato de los datos Ancho de banda bidireccional Ancho de banda bidireccional simultaneo Tamaño de la ventana de TCP |
-p, -t, -i -u, -b -m -M -P -h |
Puerto, temporización e intervalo Análisis UDP, configuración de ancho de banda Visualización del máximo tamaño de segmento Ajustes al máximo tamaño de segmento Análisis en paralelo Ayuda |
no arg. -d -u, -b |
Configuración por Default Ancho de banda bidireccional simultaneo Análisis por UDP, ajustes de ancho de bandas |
Configuración por Default en Iperf:
Ver también la sección de "Jperf" section.
Por default, en Iperf el cliente se conecta al servidor en el Puerto TCP 5001 y el ancho de banda mostrado por Iperf es el ancho de banda del cliente al servidor.
Si se desea utilizar análisis basado en UDP, es necesario especificar el argumento –u.
Los argumentos –d y –r miden los anchos de banda bidireccionales.
Cliente:
#iperf -c 10.1.1.1 |
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16384 Byte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 33453 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.2 sec 1.26 MBytes 1.05 Mbits/sec
Servidor:
#iperf -s |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 33453
[ ID] Interval Transfer Bandwidth
[852] 0.0-10.6 sec 1.26 MBytes 1.03 Mbits/sec
Formato de datos: (argumento -f)
El argumento –f sirve para mostrar los resultados en el format deseado: bits(b), bytes(B), kilobits(k), kilobytes(K), megabits(m), megabytes(M), gigabits(g) or gigabytes(G).
Generalmente las mediciones del ancho de banda son mostradas en bits (o Kilobits, etc…) y la cantidad de datos se muestra en bytes (o Kilobytes, etc…).
Como recordatorio, 1 byte es igual a 8 bits y en las ciencias de la computación, 1 kilo es igual a 1024 (2^10).
Por ejemplo: 100,000,000 bytes no son lo mismo que 100 Mbytes, en realidad son 100,000,000/1024 = 95.37 Mbytes.
Cliente:
#iperf -c 10.1.1.1 -f b |
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16384 Byte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 54953 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.2 sec 1359872 Bytes 1064272 bits/sec
Servidor:
#iperf -s |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 33453
[ ID] Interval Transfer Bandwidth
[852] 0.0-10.6 sec 920 KBytes 711 Kbits/sec
Inicio de la página
Medición del ancho de banda bidireccional (argumento –r)
En un análisis por default solo se mide el ancho de banda en la dirección del cliente al servidor. En la medición bidireccional, el servidor se conecta de vuelta con el cliente permitiendo la medición bidireccional del ancho de banda.
Si se desea realizar la medición del ancho de banda en ambas direcciones simultáneamente, se utiliza el argumento –d.
Cliente:
#iperf -c 10.1.1.1 -r |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.6.2.5 port 35726 connected with 10.1.1.1 port 5001
[ 5] 0.0-10.0 sec 1.12 MBytes 936 Kbits/sec
[ 4] local 10.6.2.5 port 5001 connected with 10.1.1.1 port 1640
[ 4] 0.0-10.1 sec 74.2 MBytes 61.7 Mbits/sec
Servidor:
#iperf -s |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 54355
[ ID] Interval Transfer Bandwidth
[852] 0.0-10.1 sec 1.15 MBytes 956 Kbits/sec
------------------------------------------------------------
Client connecting to 10.6.2.5, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[824] local 10.1.1.1 port 1646 connected with 10.6.2.5 port 5001
[ ID] Interval Transfer Bandwidth
[824] 0.0-10.0 sec 73.3 MBytes 61.4 Mbits/sec
Medición simultanea del ancho de banda en ambas direcciones (argumento -d)
Revisar también la sección de "Jperf".
Para medir el ancho de banda en ambas direcciones, se utiliza el argumento –d. Si se desea analizar el ancho de banda en forma secuencial, se usa el argumento –r (ver análisis previo).
Por default, i.e., sin los argumentos –r o –d, solo se mide el ancho de banda del cliente al servidor.
Cliente:
#iperf -c 10.1.1.1 -d |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.6.2.5 port 60270 connected with 10.1.1.1 port 5001
[ 4] local 10.6.2.5 port 5001 connected with 10.1.1.1 port 2643
[ 4] 0.0-10.0 sec 76.3 MBytes 63.9 Mbits/sec
[ 5] 0.0-10.1 sec 1.55 MBytes 1.29 Mbits/sec
Servidor:
#iperf -s |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 60270
------------------------------------------------------------
Client connecting to 10.6.2.5, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[800] local 10.1.1.1 port 2643 connected with 10.6.2.5 port 5001
[ ID] Interval Transfer Bandwidth
[800] 0.0-10.0 sec 76.3 MBytes 63.9 Mbits/sec
[852] 0.0-10.1 sec 1.55 MBytes 1.29 Mbits/sec
Tamaño de la ventana TCP: (argumento -w)
El tamaño de la ventana TCP es la cantidad de datos que pueden ser almacenados en el buffer durante una conexión sin la validación por parte del receptor.
El tamaño se encuentra dentro del rango de 2 a 65,535 bytes.
En los sitemas Linux, cuando se especifica un tamaño de ventana con el argumento –w, el kernel reserva el doble de lo indicado.
Cliente:
#iperf -c 10.1.1.1 -w 2000 |
WARNING: TCP window size set to 2000 bytes. A small window size
will give poor performance. See the Iperf documentation.
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 3.91 KByte (WARNING: requested 1.95 KByte)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 51400 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.1 sec 704 KBytes 572 Kbits/sec
Servidor:
#iperf -s -w 4000 |
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 3.91 KByte
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 51400
[ ID] Interval Transfer Bandwidth
[852] 0.0-10.1 sec 704 KBytes 570 Kbits/sec
Puerto de comunicación (-p), temporización (-t) e intervaloCommunication (-i):
El puerto de comunicación puede ser cambiado con el argumento –p, este debe estar configurado tanto en el cliente como en el servidor y debe ser el mismo valor, el puerto TCP por default es el 5001.
El argumento –t especifica la duración del análisis en segundos, el default es 10 segundos.
El argumento –i indica el intervalo entre reportes de ancho de banda en segundos.
Cliente:
#iperf -c 10.1.1.1 -p 12000 -t 20 -i 2 |
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 12000
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 58316 connected with 10.1.1.1 port 12000
[ 3] 0.0- 2.0 sec 224 KBytes 918 Kbits/sec
[ 3] 2.0- 4.0 sec 368 KBytes 1.51 Mbits/sec
[ 3] 4.0- 6.0 sec 704 KBytes 2.88 Mbits/sec
[ 3] 6.0- 8.0 sec 280 KBytes 1.15 Mbits/sec
[ 3] 8.0-10.0 sec 208 KBytes 852 Kbits/sec
[ 3] 10.0-12.0 sec 344 KBytes 1.41 Mbits/sec
[ 3] 12.0-14.0 sec 208 KBytes 852 Kbits/sec
[ 3] 14.0-16.0 sec 232 KBytes 950 Kbits/sec
[ 3] 16.0-18.0 sec 232 KBytes 950 Kbits/sec
[ 3] 18.0-20.0 sec 264 KBytes 1.08 Mbits/sec
[ 3] 0.0-20.1 sec 3.00 MBytes 1.25 Mbits/sec
Servidor:
#iperf -s -p 12000 |
------------------------------------------------------------
Server listening on TCP port 12000
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 12000 connected with 10.6.2.5 port 58316
[ ID] Interval Transfer Bandwidth
[852] 0.0-20.1 sec 3.00 MBytes 1.25 Mbits/sec
Pruebas con UDP: (-u), ajustes de ancho de banda (-b)
Revisar también la sección de "Jperf".
Las pruebas utilizando UDP se realizan con el argumento –u, estas pruebas proporcionan información importante sobre el jitter y pérdida de paquetes. Si no se especifica el argumento –u, Iperf utiliza TCP.
Para mantener una buena calidad en el enlace, la pérdida de paquetes no debe ser mayor a 1%. Una taza de pérdida de paquetes alta generará muchas retransmisiones de segmentos TCP, lo cual afectará el ancho de banda.
El jitter es básicamente la variación de la latencia y no depende de la latencia. Se puede tener un tiempo de respuesta grande y un jitter muy bajo. El valor del jitter es particularmente importante en enlaces que son usados para voz sobre IP (VoIP) debido a que un jitter alto puede cortar la llamada.
El argumento –b permite utilizar el ancho de banda deseado.
Cliente:
#iperf -c 10.1.1.1 -u -b 10m |
------------------------------------------------------------
Client connecting to 10.1.1.1, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 108 KByte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 32781 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.0 sec 11.8 MBytes 9.89 Mbits/sec
[ 3] Sent 8409 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 11.8 MBytes 9.86 Mbits/sec 2.617 ms 9/ 8409 (0.11%)
Servidor:
#iperf -s -u -i 1 |
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[904] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 32781
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[904] 0.0- 1.0 sec 1.17 MBytes 9.84 Mbits/sec 1.830 ms 0/ 837 (0%)
[904] 1.0- 2.0 sec 1.18 MBytes 9.94 Mbits/sec 1.846 ms 5/ 850 (0.59%)
[904] 2.0- 3.0 sec 1.19 MBytes 9.98 Mbits/sec 1.802 ms 2/ 851 (0.24%)
[904] 3.0- 4.0 sec 1.19 MBytes 10.0 Mbits/sec 1.830 ms 0/ 850 (0%)
[904] 4.0- 5.0 sec 1.19 MBytes 9.98 Mbits/sec 1.846 ms 1/ 850 (0.12%)
[904] 5.0- 6.0 sec 1.19 MBytes 10.0 Mbits/sec 1.806 ms 0/ 851 (0%)
[904] 6.0- 7.0 sec 1.06 MBytes 8.87 Mbits/sec 1.803 ms 1/ 755 (0.13%)
[904] 7.0- 8.0 sec 1.19 MBytes 10.0 Mbits/sec 1.831 ms 0/ 850 (0%)
[904] 8.0- 9.0 sec 1.19 MBytes 10.0 Mbits/sec 1.841 ms 0/ 850 (0%)
[904] 9.0-10.0 sec 1.19 MBytes 10.0 Mbits/sec 1.801 ms 0/ 851 (0%)
[904] 0.0-10.0 sec 11.8 MBytes 9.86 Mbits/sec 2.618 ms 9/ 8409 (0.11%)
Tamaño máximo del segmento (argumento -m):
El tamaño máximo del segmento(MSS) es la mayor cantidad de datos, en bytes, que soporta una computadora en un solo segmento de TCP sin fragmentar.
Este tamaño puede ser calculado de la siguiente manera:
MSS = MTU – encabezados TCP e IP
Los encabezados TCP e IP tienen un tamaño igual a 40 bytes.
El MTU o unidad máxima de transferencia es la mayor cantidad de datos que puede ser tranferida en una trama.
A continuación se muestra una lista de unidades máximas de transferencia por default en diferentes topologías de red:
Ethernet – 1500 bytes: usado en redes de área local
PPPoE – 1492 bytes: usado en enlaces ADSL
Token Ring (16 Mb/sec) – 17914 bytes: tecnología antigua desarrollada por IBM
Dial-up – 576 bytes
Generalmente, una MTU (y MSS) proporciona mayor eficiencia del ancho de banda
Cliente:
#iperf -c 10.1.1.1 -m |
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 41532 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.2 sec 1.27 MBytes 1.04 Mbits/sec
[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)
Aqui el MSS no es igual a 1500 – 40 si no a 1500 - 40 - 12 (Usando la opción de Timestamps) = 1448
Servidor:
#iperf -s |
Ajustes al maximo tamaño de segmento (argumento -M):
Se utiliza el argumento –M para cambiar el MSS. (Ver la prueba anterior para mayor información acerca del MSS)
#iperf -c 10.1.1.1 -M 1300 -m |
WARNING: attempt to set TCP maximum segment size to 1300, but got 536
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 41533 connected with 10.1.1.1 port 5001
[ 3] 0.0-10.1 sec 4.29 MBytes 3.58 Mbits/sec
[ 3] MSS size 1288 bytes (MTU 1328 bytes, unknown interface)
Servidor:
#iperf -s |
Análisis en paralelo (argumento -P):
El argumento –P se utiliza para correr pruebas en paralelo.
Cliente:
#iperf -c 10.1.1.1 -P 2 |
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.6.2.5 port 41534 connected with 10.1.1.1 port 5001
[ 4] local 10.6.2.5 port 41535 connected with 10.1.1.1 port 5001
[ 4] 0.0-10.1 sec 1.35 MBytes 1.12 Mbits/sec
[ 3] 0.0-10.1 sec 1.35 MBytes 1.12 Mbits/sec
[SUM] 0.0-10.1 sec 2.70 MBytes 2.24 Mbits/sec
Servidor:
#iperf -s |
Ayuda de Iperf:
#iperf -h |
Uso: iperf [-s|-c cliente] [opciones]
iperf [-h|--ayuda] [-v|--versión]
Cliente/Servidor:
-f -i -l -m -p -u -w -B -C -M -N -V |
--format --interval --len --print_mss --port --udp --window --bind --compatibility --mss --nodelay --IPv6Version |
[kmKM] # #[KM] # #[KM] "host" # |
Formato del reporte: Kbits, Mbits, KBytes, MBytes segundos entre reportes de ancho de banda periódicos longitud del buffer para leer o escribir ( 8 KB por default) imprimir el máximo tamaño de segmento en TCP (MTU - TCP/IP header) puerto para conectarse/escuchar usar UDP en vez de TCP Tamaño de la ventana de TCP (tamaño de buffer del socket) amarrar a cliente, interfaz o dirección de multicast para usarse con versiones anteriores, no envía mensajes extras fija el máximo tamaño de segmento de TCP (MTU - 40 bytes) fija TCP sin retardo, deshabilitando el algoritmo de Nagle fija el dominio a IPv6 |
Especificos del servidor
-s -U -D |
--server --single_udp --daemon |
|
Ejecutar en modo servidor Ejecutar en modo de un solo hilo en UDP ejecutar el servidor como demonio |
Especificos del cliente:
-b -c -d -n -r -t -F -I -L -P -T |
--bandwidth --client --dualtest --num --tradeoff --time --fileinput --stdin --listenport --parallel --ttl |
#[KM] "host" #[KM] # "name" # # # |
Para UDP, ancho de banda a utilizer en bits/sec (por default 1 Mbit/sec, implica -u) ejecutar en modo de cliente, conectandose a "host" Realizar una prueba bidireccional simultaneamente numero de bytes a transmitir (en vez de -t) Realizar una prueba bidireccional individualmente tiempo en segundos para transmitir (10 segundos por default) introducir los datos a transmitir desde un archivo introducir los datos a ser transmitidos desde stdin puerto en que se recibiran pruebas bidireccionales de vuelta numero de de hilos paralelos a ejecutar time-to-live, paramulticast (por default 1) |
Miscelaneos:
-h -v |
--help --version |
|
Imprime este mensaje de ayuda y sale Imprime la información de versión y sale |
JPERF
Jperf es una interfaz gráfica para Iperf escrita en Java.
1. Instalación:
Descargar Jperf.
Linux
Descomprimir el archivo descargado.
#tar -xvf jperf2.0.0.zip |
Ejecutar iperf.
#cd jperf2.0.0 #./jperf.sh |
Si se obtiene el siguientemensaje, significaqueesnecesarioinstalariperf con “apt-get install iperf.
Iperf is probably not in your Path!
Please download it here 'http://dast.nlanr.net/Projects/Iperf/'
and put the executable in your PATH environment variable.
Microsoft Windows
Descomprimir el archivo descargado.
Accesar al folder descomprimido denominado “jperf2.0.0” por default y dar doble click en “jperf.bat”.
Es importante notar que iperf ya se encuentre presente en el folder /bin.
2. Ejemplos:
Configuración por default, medición del ancho de banda
Also check "Iperf" section for more details.
Revisar la sección "Iperf" para más detalles. - Cliente Linux:
- Servidor Windows:
Medición del ancho de banda bidireccional
Revisar la sección "Iperf" para más detalles.
- Cliente Linux:
- Servidor Windows:
Jperf
Medicón del Jitter
Revisar la sección "Iperf" para más detalles. - Cliente Linux:
- Servidor Windows:
-
Internet
- Cómo usar una VPN en Linux y por qué deberías hacerlo
- La muerte lenta del hipervínculo
- Cómo cambiar dirección IP (modo gráfico), por qué querría hacerlo y cuándo no debería hacerlo
- 10 comandos "IP" útiles para configurar interfaces de red
- Cómo configurar conexiones IP de red usando 'nmcli' en Linux
- Configuración de una IP Estática en una Tarjeta de Red en Linux.
- ¿Migrar a la nube? Marque esta lista de verificación
- Nuevo estándar de Internet L4S: el plan silencioso para hacer que Internet se sienta más rápido
- Nextcloud y Roundcube se Fusionan para Impulsar la Descentralización en la Productividad en la Nube
- Los 10 mejores servidores proxy inversos de código abierto para Linux
- Una guía para principiantes para crear conexiones (Bonding) y puentes de red (Bridging) en Linux
- Conectar dos redes Locales alejadas creando de un Puente Transparente
- Crear un puente de red transparente "bridge" para conectar dos redes locales remotas
- Crear un Puente de Red o Bridge
- La propuesta de la ICANN / Verisign permitiría a cualquier gobierno confiscar nombres de dominio