Iperf es una herramienta de medición y optimización del rendimiento de la red.
La aplicación iperf es un programa multiplataforma que puede proporcionar métricas estándar del rendimiento de la red. Iperf consta de un cliente y un servidor que pueden generar un flujo de datos para evaluar el rendimiento entre dos puntos finales en una o ambas direcciones.

Una salida típica de iperf incluye un informe de tiempo sellado de la cantidad de datos transportados y el rendimiento medido.
Iperf2
Iperf2 es una herramienta de medición del rendimiento y la capacidad de respuesta de la red compatible con TCP y UDP. Uno de sus objetivos es mantener el código base de iperf funcionando en varias plataformas y sistemas operativos.
Se trata de una arquitectura multihilo que crece en proporción al número de CPU o núcleos de un sistema con el que puede obtener e informar del rendimiento de la red utilizando estrategias de alto y bajo impacto.
Características de Iperf2
- Admite intervalos de informe más pequeños (100 us o más, configure –enable-fast sampling para obtener una salida de tiempo de intervalo de alta precisión).
- Soporta SO_RCVTIMEOUT para servidores de informes independientemente de que no haya paquete
- Soporta SO_SNDTIMEO al enviar para que las escrituras de socket no se bloqueen más allá de -t o -i
- Admite SO_TIMESTAMP para las marcas de tiempo de los paquetes a nivel del núcleo.
- Admite latencia de fin/fin en formato medio/minuto/máximo/desviación estándar (UDP) (se requiere -e) (suponiendo que los relojes del cliente y del servidor estén sincronizados, por ejemplo, con el protocolo de tiempo de precisión a OCXO por oscilador Spectracom).
- Admite flujos limitados a nivel TCP (mediante -b) utilizando un token bucket simplificado.
- Admite paquetes por segundo (UDP) sobre pps como unidades, (por ejemplo, -b 1000pps)
- Mostrar PPS en los informes de cliente y servidor (UDP) (se requiere -e)
- Admite programadores en tiempo real como opciones de la línea de comandos (–real-time o -z, si se dispone de los derechos de usuario adecuados).
- Visualizar el tiempo de bucle objetivo en la cabecera inicial del cliente (UDP)
- Añadir soporte local de enlaces ipv6 (p.ej. iperf -c fe80::d03a:d127:75d2:4112%eno1)
- Carga útil UDP ipv6 por defecto 1450 bytes por una trama ethernet por carga útil.
- Admite tráfico isócrono (mediante –isochronous) y ráfaga de tramas con tráfico de velocidad binaria variable (vbr) e id de trama.
- La compatibilidad multidifusión SSM para v4 y v6 utiliza -H o -ssm-host, es decir, iperf -s -B ff1e::1 -u -V -H fc00::4
- Histogramas de latencia para paquetes y tramas (por ejemplo, –udp-histogram=10u.200000, 0.03, 99.97)
- Soporte para inicios de entrega temporizados por –txstart-time .Soporte para inicios de entrega temporizados por –txstart-time <unix.epoch time>.
- Soporte para clientes que aumentan la IP de destino con -P a través de –incr-dstip
- Se ofrece soporte para variar la carga utilizando la distribución normal de los registros en torno a la media y la desviación estándar (por -b ,),Se ofrece soporte para variar la carga utilizando la distribución normal de los registros en torno a la media y la desviación estándar (por -b <media>,<desviación estándar>),
- Honor -T (ttl) para unicast y multicast
- UDP utiliza un número de secuencia de 64 bits (aunque todavía funciona con 2.0.5 que utiliza un número de secuencia de 32b).
Sistemas operativos compatibles con Iperf2
- Linux, Windows 10, Windows 7, Windows XP, macOS, Android y algunos descodificadores OS.
Descargar Iperf2
Iperf3
La aplicación Iperf3 es una reescritura de iperf desde cero para crear una base de código más pequeña y sencilla.
iPerf3 es una herramienta para medir el máximo ancho de banda posible en una red IP en tiempo real. Permite ajustar con precisión varios tiempos, búferes y protocolos (TCP, UDP, SCTP con IPv4 e IPv6). Y también proporcionará informes de ancho de banda, pérdidas y otras métricas para cada prueba.
Características de Iperf3
- TCP y SCTP (Mide el ancho de banda, Informa del tamaño de MSS/MTU y del tamaño de lectura observado, Soporta el tamaño de ventana TCP sobre el buffer del socket).
- UDP (el cliente puede crear un flujo UDP a partir de un ancho de banda especificado, medir la pérdida de paquetes, medir la fluctuación del retardo, capacidad de multidifusión)
- Tanto el cliente como el servidor pueden tener varias conexiones simultáneas (opción -P).
- El servidor gestiona múltiples conexiones, en lugar de detenerse tras una única prueba.
- Puede ejecutarse durante un tiempo especificado (opción -t), en lugar de cualquier cantidad de datos a transferir (opción -n o -k).
- Informes periódicos de impresión, ancho de banda medio, jitter y pérdidas a intervalos específicos (opción-i).
- Ejecutar el servidor como demonio (opción -D)
- Utilice flujos representativos para comprobar cómo afecta la compresión de la capa de enlace al ancho de banda alcanzable (opción -F).
- Un servidor recibe un cliente simultáneamente (iPerf3) y varios clientes simultáneamente (iPerf2)
- Ignora el inicio lento de TCP (opción -O).
- Establece el ancho de banda objetivo para UDP y (nuevo) TCP (opción -b).
- Establecer etiqueta de flujo IPv6 (opción -L)
- Establecer el algoritmo de control de congestión (-opción -C)
- Utilizar SCTP en lugar de TCP (opción –sctp)
- La salida está en formato JSON (opción -J).
- Prueba de lectura de disco (servidor: iperf3 -s / cliente: iperf3 -c testhost -i1 -F nombrearchivo)
- Prueba de escritura en disco (servidor: iperf3 -s -F nombrearchivo / cliente: iperf3 -c testhost -i1)
Sistemas operativos compatibles con Iperf3
- Windows, Linux, Android, macOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, Solaris
Descargar Iperf3
Iperf2 vs Iperf3
| Recomendados | Iperf 2 | Iperf 3 |
| Tipos de tráfico | ||
| Tráfico TCP | Y | Y |
| Tráfico UDP | Y | Y |
| Tráfico SCTP | N | Y |
| IPv4 | Y | Y |
| IPv6 | Y | Y |
| Tráfico de multidifusión (incluido SSM) | Y | N |
| Sólo conexión TCP | Y | N |
| Comprobaciones de capa 2 | Y | N |
| Opciones de salida | ||
| Formato humano | Y | Y |
| Salida JSON | N | Y |
| CSV (solo básico) | Y | N |
| Ocultar direcciones IP en la salida (solo v4) | Y | N |
| Informes de servidor del lado cliente | N | Y |
| Perfiles de tráfico | ||
| Limitación de la velocidad de cola justa | Y | Y |
| Limitación de la velocidad de escritura | Y | Y |
| Limitación de velocidad de lectura (TCP) | Y | N |
| Estalla | Y | Y |
| TCP/UDP isócrono (vídeo) | Y | N |
| Invertir roles | Y | Y |
| Tráfico bidireccional | Y | Y |
| Dúplex completo mismo socket | Y | N |
| Rebote TCP con carga(s) de trabajo opcional(es) | Y | N |
| Tráfico de ciclo de trabajo bajo con estadísticas del lado del servidor | Y | N |
| TCP_NOTSENT_LOWAT con select() (usando la opción –tcp-write-prefetch) | Y | N |
| TCP cerca de la congestión (experimental) | Y | N |
| Métricas | ||
| Rendimiento | Y | Y |
| Capacidad de respuesta por segundo (RPS) | Y | N |
| Paquetes UDP (total/perdidos) | Y | Y |
| Fluctuación UDP | Y | Y |
| Latencias de paquetes UDP | Y | N |
| Latencias de trama/ráfaga TCP/UDP | Y | N |
| Latencias de escritura a lectura TCP | Y | N |
| Alimentación de red (latencia/rendimiento) | Y | N |
| InP – Bytes en colas (ley de Little) | Y | N |
| TCP CWND | Y | N |
| Reintentos de TCP | Y | Y |
| TCP RTT | Y | Y |
| Enviar histogramas de retardo de escritura lateral | Y | N |
| Paquetes UDP por segundo | Y | N |
| Histogramas de latencia | Y | N |
| Tiempos de conexión TCP | Y | N |
| Respuesta TCP por intervalo | Y | N |
| Suma solo de salida | Y | N |
| Otro | ||
| Diseño multiproceso | Y | N |
| Técnica paralela -P | Hilos | Procesos |
| Programación en tiempo real | Y | N |
| -t Soporte para servidor | Y | N |
| Soporte de interfaz virtual TAP (solo recepción) a través de –tap-dev | Y | N |
| Afinidad de CPU | N | Y |
| Cero copia | N | Y |
| Etiquetas de flujo IPv6 | N | Y |
| –Omitir la opción (omitir las primeras muestras por vez en segundos) | N | Y |
| Incr dst ip opción con -P | Y | N |
| Incr dst ip opción con -P | Y | N |
| Opción de puerto incr dst con -P | Y | N |
| Opción de puerto SRC Incr con -P | Y | N |
| Enlace de dispositivo o interfaz | Y | Y |
| Enlace de puerto de origen | Y | N |
| Hora de inicio programada de tx | Y | N |
| Retrasar la hora de inicio de tx | Y | N |
| Contraseña de usuario | N | Y |
| Permitir claves | Y (sólo TCP) | N |
| UDP sin estado | Y | N |
| Marco de Python (asincio) | Y (flujos) | N |
| Prueba de WiFi a través de 100G | Y | N/D |
| Escalado a 1000+ subprocesos | Y | N/D |


