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.
Otros artículos interesantes
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 |