Networking
Iperf
Last Update: Aug 04 2011
Spanish translation by Bernardo B, Mejia Huerta.
⚠️⚠️⚠️
Please check our website about
attractions in Western Switzerland !! (Please use english translation).
⚠️⚠️⚠️
Merci de consulter notre site sur les
activités à faire en Suisse romande !!
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 |
#iperf -s |
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 |
#iperf -s |
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 |
#iperf -s |
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 |
#iperf -s |
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 |
#iperf -s -w 4000 |
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 |
#iperf -s -p 12000 |
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 |
#iperf -s -u -i 1 |
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 |
#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 |
#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 |
#iperf -s |
Ayuda de Iperf:
#iperf -h |
-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 |
-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 |
-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) |
-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 |
#cd jperf2.0.0 #./jperf.sh |
![]() |
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:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |