Benchmarkeo del rendimiento de la red

La red es uno de los aspectos clave que se deben considerar al implementar aplicaciones en un entorno de contenedores. Para realizar una comparación de rendimiento con hardware sin procesar, máquina virtual y contenedor, debemos considerar diferentes escenarios como los siguientes:

  • Hardware sin procesar a hardware sin procesar

  • Máquina virtual a máquina virtual

  • Contenedor de Docker a un contenedor con el modo de red predeterminado (puente)

  • Contenedor de Docker a un contenedor con red de host ( --net=host )

  • Contenedor de Docker que se ejecuta dentro de una máquina virtual con el mundo exterior

En cualquiera de los casos anteriores, podemos seleccionar dos puntos finales para realizar el benchmarkeo. Podemos utilizar herramientas como nuttcp (http://www.nuttcp.net) y netperf (https://github.com/HewlettPackard/netperf) para medir el ancho de banda de la red y la solicitud/respuesta, respectivamente.

Preparación

Asegúrese de que ambos puntos finales puedan alcanzarse entre sí y de que tenga los paquetes/software necesarios instalados. En Ubuntu, puede instalar nuttcp y netperf con el siguiente comando:

$ sudo apt-get install -y nuttcp netperf

Cómo hacerlo…

Para medir el ancho de banda de la red utilizando nuttcp, realice los siguientes pasos:

  1. Inicie el servidor nuttcp en un punto final:
$ nuttcp -S
  1. Mida el rendimiento de transmisión (cliente a servidor) desde el cliente con el siguiente comando y consulte la captura de pantalla siguiente:
$ nuttcp -t <SERVER_IP>

Diagrama

  1. Mida el rendimiento del receptor en el cliente (servidor a cliente) con el siguiente comando y consulte la captura de pantalla siguiente:
$ nuttcp -r <SERVER_IP>

Diagrama

  1. Para ejecutar la prueba de benchmarkeo de solicitud/respuesta utilizando netperf; realice los siguientes pasos:
  • Inicie netserver en un punto final:
$ netserver

NOTA

netserver se inicia automáticamente al instalar. Si netserver ya está en ejecución y ejecuta este comando, es posible que obtenga un error como “No se puede iniciar netserver con IN(6)ADDR_ANY puerto 12865 y familia AF_UNSPEC”. Está bien, solo significa que ya está en ejecución. Para confirmar que está en ejecución, puede ejecutar ps -ef | grep netserver.

  • Conéctese al servidor desde el otro punto final y ejecute la prueba de solicitud/respuesta, consulte la salida en las capturas de pantalla siguientes:

  • Para TCP:

$ netperf  -H 172.17.0.6 -t TCP_RR

Diagrama

  • Para UDP:
$ netperf  -H 172.17.0.6 -t UDP_RR

Diagrama

Cómo funciona…

En ambos casos mencionados anteriormente, un punto final se convierte en el cliente y envía solicitudes al servidor en el otro punto final.

Hay más…

Podemos recopilar los resultados de benchmarkeo para diferentes escenarios y compararlos. netperf también se puede utilizar para pruebas de rendimiento.

Ver también

Consulte los resultados de benchmarkeo de red publicados por IBM y VMware en los enlaces referenciados anteriormente en este capítulo.