¿Red lenta entre contenedores? Cómo medir con iperf3
Descubre cómo utilizar iperf3 para medir el rendimiento de red entre tus microservicios Docker. Identifica límites de banda y latencia de forma práctica.
Resumen
- iperf3 permite medir el ancho de banda real y la latencia entre dos contenedores de forma aislada.
- La ejecución en modo servidor y cliente es la base para cualquier prueba de estrés de red en Docker.
- Las redes de tipo overlay o bridge introducen un overhead que puede ser cuantificado mediante pruebas de rendimiento.
- Identificar cuellos de botella de red ayuda a aislar problemas de desempeño que no están ligados a CPU o memoria.
- Las pruebas de red deben realizarse en condiciones controladas para garantizar que el ruido del tráfico real no afecte los resultados.
Entendiendo la red entre contenedores
Cuando tus microservicios comienzan a intercambiar mensajes, la red se convierte en un componente crítico. En entornos Docker, ya sea utilizando redes Bridge estándar o redes Overlay en clusters Swarm o Kubernetes, el tráfico pasa por capas de abstracción que pueden generar cuellos de botella ocultos. Comprender cómo medir la eficiencia de esta comunicación es fundamental antes de culpar a la aplicación por la lentitud.
Qué es iperf3 y por qué es importante
El iperf3 es una herramienta de línea de comandos ampliamente utilizada para medir el rendimiento de red, enfocándose en el throughput (la cantidad de datos transferidos por unidad de tiempo) y la latencia. A diferencia de un ping simple, iperf3 puede saturar el ancho de banda de forma controlada, revelando el límite máximo que tu infraestructura de red virtual puede soportar antes de empezar a descartar paquetes.
Preparando el entorno para la prueba
Para realizar la prueba entre contenedores, necesitas que la utilidad esté instalada en ambos. Si las imágenes de tus servicios son minimalistas (como Alpine), puedes instalar el paquete manualmente o usar una imagen temporal conectada a la misma red. Es como conectar dos computadoras mediante un cable para medir la velocidad real de la tarjeta de red, ignorando los protocolos de aplicación.
Ejecutando la prueba en la práctica
El proceso es sencillo: un contenedor actúa como servidor esperando conexiones, y el otro actúa como cliente enviando el tráfico. Sigue estos pasos en tu entorno:
- En el contenedor servidor, inicia el receptor:
iperf3 -s - En el contenedor cliente, dispara el tráfico hacia la IP del servidor:
iperf3 -c <IP_DEL_SERVIDOR> - Analiza el informe de transferencia que indica la tasa de bits (bits per second) y el jitter, que es la variación de la latencia.
Si sospechas de problemas de latencia más allá del ancho de banda, como vimos al usar tcpdump para diagnosticar latencia y fallas de red, iperf3 puede ejecutar pruebas UDP para medir la pérdida de paquetes en lugar de solo el flujo TCP.
Interpretando los cuellos de botella
Si el throughput es mucho menor de lo esperado, verifica si no hay cuellos de botella de CPU o memoria en los contenedores, ya que el proceso de encapsulamiento de paquetes (especialmente en redes Overlay) consume ciclos de procesamiento. Si la CPU está al 100%, el cuello de botella es el host, no la red. Para profundizar en estos conceptos arquitectónicos en producción, consulte también nuestro análisis técnico sobre Cómo medir ESR de capacitores en la placa sin desoldar.
Consideraciones finales sobre rendimiento
Diagnosticar redes en Docker no trata solo de ver el comando ejecutarse, sino de interpretar lo que el sistema entrega bajo carga. Siempre realiza pruebas en condiciones aisladas para que el tráfico real de tu aplicación no enmascare los resultados. Al dominar iperf3, obtienes la capacidad de validar si tu infraestructura está lista para escalar o si necesita ajustes de enrutamiento.