¿Cómo puedo comparar el rendimiento de la red entre instancias de Linux de Amazon EC2 en la misma Amazon VPC?

10 minutos de lectura
0

Quiero medir el ancho de banda de la red entre instancias de Linux de Amazon Elastic Compute Cloud (Amazon EC2) en la misma Amazon Virtual Private Cloud (Amazon VPC).

Breve descripción

Estos son algunos de los factores que pueden afectar al rendimiento de la red de Amazon EC2 cuando las instancias se encuentran en la misma Amazon VPC:

  • La proximidad física de las instancias de EC2: Las instancias de la misma zona de disponibilidad están más cerca unas de otras geográficamente. En los siguientes escenarios, las instancias se alejan progresivamente unas de otras:
    Instancias en zonas de disponibilidad diferentes en la misma región de AWS
    Instancias en regiones diferentes en el mismo continente
    Instancias en regiones diferentes en continentes distintos
  • La unidad de transmisión máxima de instancias (MTU) de EC2. La MTU de una conexión de red es el tamaño de paquete más grande permitido (en bytes) que puede transmitir la conexión. Todos los tipos de instancias de EC2 admiten 1500 MTU. Todas las instancias de Amazon EC2 de la generación actual admiten tramas gigantes. Las instancias de la generación anterior, C3, G2, I2, M3 y R3, también utilizan tramas gigantes. Las tramas gigantes permiten más de 1500 MTU. Sin embargo, hay situaciones en las que la instancia está limitada a 1500 MTU, incluso con tramas gigantes. Para obtener más información, consulte Tramas gigantes (9001 MTU).
  • El tamaño de la instancia de EC2: Los tamaños de instancia más grandes para un tipo de instancia suelen ofrecer un mejor rendimiento de red que los tamaños de instancia más pequeños del mismo tipo. Para obtener más información, consulte los tipos de instancias de Amazon EC2.
  • Compatibilidad con redes mejoradas de Amazon EC2 para Linux: La compatibilidad con redes mejoradas puede afectar al rendimiento de instancias que no sean de los tipos T2 y M3. Para obtener más información, consulte Redes mejoradas en Linux. Para obtener información sobre cómo habilitar las redes mejoradas en su instancia, consulte How do I turn on and configure enhanced networking on my EC2 instances?
  • Compatibilidad con computación de alto rendimiento (HPC) de Amazon EC2 cuando se utilizan grupos de ubicación: La HPC proporciona un ancho de banda de bisección completa y una latencia baja. Dependiendo del tipo de instancia, la HPC admite velocidades de red de hasta 100 gigabits. Para conocer el rendimiento de la red con cada tipo de instancia, consulte Matriz de tipo de instancia de la AMI de Amazon Linux. Para obtener más información, consulte Launch instances in a placement group.
  • La instancia utiliza un mecanismo de crédito de E/S de red para asignar el ancho de banda de la red: Las instancias designadas con el símbolo en la columna Rendimiento de la red en Instancias de uso general - Rendimiento de la red pueden alcanzar el rendimiento máximo de red designado. Sin embargo, estas instancias utilizan un mecanismo de crédito de E/S de red para asignar ancho de banda a las instancias en función del uso promedio del ancho de banda. Por lo tanto, el rendimiento de la red varía en estos casos.

Debido a estos factores, es posible que experimente diferencias significativas en el rendimiento de la red entre los diferentes entornos de nube. Se recomienda evaluar periódicamente el rendimiento de la red de su entorno y utilizarlo como referencia para mejorar el rendimiento de las aplicaciones. Las pruebas de rendimiento de la red proporcionan información útil para determinar los tipos, tamaños y configuraciones de instancias de EC2 que mejor se adaptan a sus necesidades. Puede ejecutar pruebas de rendimiento de la red en cualquier combinación de instancias que elija.

Para obtener más información, abra un caso de AWS Support y solicite especificaciones de rendimiento de red adicionales para los tipos de instancias concretos que le interesen.

Solución

Antes de comenzar las pruebas comparativas, lance y configure sus instancias de EC2 Linux:

  1. Lance dos instancias de Linux desde las que pueda ejecutar pruebas de rendimiento de red.
  2. Compruebe que las instancias admitan redes mejoradas para Linux, y que estén en la misma Amazon VPC.
  3. (Opcional) Si va a realizar pruebas de red entre instancias que no admiten tramas gigantes, siga los pasos que se indican en Unidad de transmisión máxima (MTU) de red de la instancia EC2 para comprobar y configurar la MTU de su instancia.
  4. Conéctese a las instancias para comprobar si puede acceder a ellas.

Instalación de la herramienta de comparación de red iperf en ambas instancias

En algunas distribuciones, como Amazon Linux, iperf forma parte del repositorio Extra Packages for Enterprise Linux (EPEL). Para activar el repositorio EPEL, consulte ¿Cómo puedo activar el repositorio EPEL para mi instancia de Amazon EC2 que ejecuta CentOS, RHEL o Amazon Linux?

Nota: El comando iperf hace referencia a la versión 2.x. El comando iperf3 hace referencia a la versión 3.x. Utilice la versión 2.x para comparar instancias de EC2 con alto rendimiento, ya que la versión 2.x admite varios subprocesos. Aunque la versión 3.x también admite transmisiones paralelas mediante el indicador -P, tiene un solo subproceso y está limitada por una sola CPU. Por ello, la versión 3.x requiere que varios procesos se ejecuten en paralelo para impulsar el rendimiento necesario en instancias de EC2 más grandes. Para obtener más información, consulte iperf2/iperf3 en el sitio web de ESnet.

Conéctese a sus instancias de Linux y, a continuación, ejecute los siguientes comandos para instalar iperf.

Para instalar iperf en los hosts Linux de RHEL 6, ejecute el siguiente comando:

# yum -y install  https://dl.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm  && yum -y install iperf

Para instalar iperf en los hosts Linux de RHEL 7, ejecute el siguiente comando:

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && yum -y install iperf

Para instalar iperf en los hosts de Debian/Ubuntu, ejecute el siguiente comando:

# apt-get install -y iperf

Para instalar iperf en los hosts de CentOS 6/7, ejecute el siguiente comando:

# yum -y install epel-release && yum -y install iperf

Amazon Linux 2023

Dado que Amazon Linux 2023 (AL2023) no es compatible con EPEL, no puede descargar la utilidad iperf a través del repositorio EPEL. Para obtener más información, consulte Extra Packages for Enterprise Linux (EPEL).

Sin embargo, puede descargar e instalar iperf para AL2023 manualmente:

  1. Instale las herramientas de desarrollo y git:

    sudo yum groupinstall "Development Tools"sudo yum install git
  2. Clone el código iperf:

    cd /usr/local/sudo git clone https://git.code.sf.net/p/iperf2/code iperf2-code
  3. Cree e instale el paquete:

    cd /usr/local/iperf2-codesudo ./configure
    sudo make
    sudo make install

Comprobación del rendimiento de la red TCP entre las instancias

De forma predeterminada, iperf se comunica a través del puerto 5001 cuando prueba el rendimiento de TCP. Sin embargo, puede configurar ese puerto mediante el conmutador -p. Asegúrese de configurar los grupos de seguridad para permitir la comunicación a través del puerto que utiliza iperf.

  1. Configure una instancia como servidor para escuchar en el puerto predeterminado, o especifique un puerto de agente de escucha alternativo con el conmutador -p. Sustituya 5001 por su puerto, si es diferente:

    $ sudo iperf -s \[-p 5001\]
  2. Configure una segunda instancia como cliente y ejecute una prueba en el servidor con los parámetros deseados. Por ejemplo, el siguiente comando inicia una prueba de TCP en la instancia de servidor especificada con 40 conexiones paralelas:

    $ iperf -c 172.31.30.41 --parallel 40 -i 1 -t 2

    Nota: Para realizar una prueba bidireccional con iperf (versión 2), utilice la opción -r del lado del cliente.

El resultado utiliza estos parámetros para mostrar el intervalo por transmisión de cliente, los datos transferidos por secuencia de cliente y el ancho de banda que utiliza cada transmisión de cliente. El siguiente resultado de iperf muestra los resultados de las pruebas de dos instancias de Linux EC2 c5n.18xlarge lanzadas en un grupo con ubicación en clúster. El ancho de banda total transmitido en todas las conexiones es de 97,6 Gbits/segundo:

------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, TCP port 5001
TCP window size:  975 KByte (default)
------------------------------------------------------------------------------------
[  8] local 172.31.20.27 port 49498 connected with 172.31.30.41 port 5001
[ 38] local 172.31.20.27 port 49560 connected with 172.31.30.41 port 5001
[ 33] local 172.31.20.27 port 49548 connected with 172.31.30.41 port 5001
[ 40] local 172.31.20.27 port 49558 connected with 172.31.30.41 port 5001
[ 36] local 172.31.20.27 port 49554 connected with 172.31.30.41 port 5001
[ 39] local 172.31.20.27 port 49562 connected with 172.31.30.41 port 5001
...
[SUM]  0.0- 2.0 sec  22.8 GBytes  97.6 Gbits/sec

Comprobación del rendimiento de la red UDP entre las instancias

De forma predeterminada, iperf se comunica a través del puerto 5001 cuando prueba el rendimiento de UDP. Sin embargo, puede usar el conmutador -p para configurar el puerto. Asegúrese de configurar los grupos de seguridad para permitir la comunicación a través del puerto que utiliza iperf.

Nota: El valor predeterminado para UDP es de 1 Mbit por segundo, a menos que especifique un ancho de banda diferente.

  1. Configure una instancia como servidor para escuchar en el puerto UDP predeterminado o especifique un puerto de agente de escucha alternativo con el conmutador -p. Sustituya 5001 por su puerto, si es diferente:

    $ sudo iperf -s -u \[-p 5001\]
  2. Configure una segunda instancia como cliente y, a continuación, ejecute una prueba en el servidor con los parámetros deseados. El siguiente ejemplo inicia una prueba de UDP en la instancia de servidor especificada con el parámetro -b establecido en 5g. El parámetro -b cambia el ancho de banda a 5g respecto al valor predeterminado de UDP de 1 Mbit por segundo. 5g es el rendimiento de red máximo que puede proporcionar una instancia c5n18xlarge para un único flujo de tráfico dentro de una VPC:
    Nota: UDP no tiene conexión y carece de los algoritmos de control de congestión de TCP. Al realizar pruebas con iperf, el ancho de banda obtenido con UDP puede ser inferior al ancho de banda obtenido con TCIP.

    \# iperf -c 172.31.1.152 -u -b 5g

Este es un ejemplo de resultado de la prueba de UDP:

$ iperf -c 172.31.30.41 -u -b 5g
------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, UDP port 5001
Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------------------------------
[  3] local 172.31.20.27 port 39022 connected with 172.31.30.41 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec
[  3] Sent 4251700 datagrams
[  3] Server Report:
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec   0.003 ms 1911/4251700 (0.045%)
[  3] 0.00-10.00 sec  1 datagrams received out-of-order

Este resultado muestra los siguientes valores:

  • Intervalo (tiempo)
  • Cantidad de datos transferidos
  • Ancho de banda alcanzado
  • Fluctuación (la desviación en el tiempo para la llegada periódica de los datagramas)
  • Pérdida y total de datagramas de UDP

Información relacionada

Disk Testing using iperf3 en el sitio web de Esnet

Network Tuning en el sitio web de ESnet

Throughput Tool Comparison en el sitio web de ESnet

Iperf2 en el sitio web de SourceForge

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años