Comparar el ancho de banda de red de las instancias de máquina virtual


En este documento se explica cómo probar el rendimiento de la red Tier_1 por VM. Para ello, se crean dos VMs y se transmite tráfico de una a otra para observar el rendimiento de la red. Para aprovechar esta función, debes crear tu VM con sistemas operativos que admitan el NIC virtual de Google (gVNIC). El rendimiento de red de nivel 1 por VM requiere VMs de mayor tamaño, por lo que debes confirmar que tienes suficiente cuota de CPU para crear las VMs.

Antes de empezar

  • Asegúrate de usar una imagen pública que admita gVNIC o crea una imagen personalizada en tu proyecto.
  • Verifica que has creado reglas de cortafuegos de VPC para permitir el tráfico entrante en el puerto TCP:5001 u otro puerto que elijas para permitir las iperf pruebas de rendimiento.
  • Usa la versión 2 de iPerf, no la 3, para realizar la prueba comparativa.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Configurar máquinas virtuales para realizar comparativas

Crea dos máquinas de n2-standard-64 vCPUs con el rendimiento de red Tier_1 por VM habilitado y el ajuste de unidad de transmisión máxima (MTU) más alto. De esta forma, tus máquinas virtuales pueden alcanzar un ancho de banda de salida máximo de 75 Gbps (con IPs internas).

gcloud

  1. Para crear una imagen, usa el comando gcloud compute images create.

      gcloud compute images create IMAGE_NAME \
       --project=PROJECT_ID \
       --source-image-family=SOURCE_IMAGE_FAMILY \
       --source-image-project=SOURCE_IMAGE_PROJECT \
       --guest-os-features=GVNIC
    

    Haz los cambios siguientes:

    • PROJECT_ID: el nombre de tu proyecto.
    • IMAGE_NAME: el nombre de la imagen que quieras crear.
    • SOURCE_IMAGE_FAMILY: versión obligatoria de una imagen pública. Para esta prueba, usa ubuntu-2004-lts.
    • SOURCE_IMAGE_PROJECT: el nombre del proyecto que contiene la imagen de origen. Para esta prueba, usa ubuntu-os-cloud.

    Ejemplo

    gcloud compute images create benchmark-image-test \
      --project=my-project \
      --source-image-family=ubuntu-2004-lts \
      --source-image-project=ubuntu-os-cloud \
      --guest-os-features=GVNIC
    
  2. Crea una red de VPC en modo automático que use el ajuste de MTU máximo:

      gcloud compute networks create NETWORK_NAME \
      --project=PROJECT_ID \
      --subnet-mode=AUTO --mtu=8896
    

    Haz los cambios siguientes:

    • PROJECT_ID: el nombre de tu proyecto.
    • NETWORK_NAME: un nombre para la red.
  3. Crea dos instancias idénticas:

      gcloud compute instances create \
          VM_NAME_1 VM_NAME_2 \
          --project=PROJECT_ID \
          --zone=ZONE \
          --machine-type=n2-standard-64 \
          --image=projects/PROJECT_NAME/global/images/IMAGE_NAME \
          --network=NETWORK_NAME \
          --network-interface=nic-type=GVNIC \
          --network-performance-configs=total-egress-bandwidth-tier=TIER_1
    

    Haz los cambios siguientes:

    • VM_NAME_1, VM_NAME_2: los nombres de las instancias de VM que quieres crear.
    • PROJECT_ID: el nombre de tu proyecto.
    • ZONE: la zona de tu VM. Ambas VMs deben estar en la misma zona.
    • PROJECT_NAME/global/images/IMAGE_NAME: el nombre de tu proyecto y el nombre de la imagen.
    • NETWORK_NAME: el nombre de la red que has configurado con el ajuste de MTU máximo.

Realizar la prueba de rendimiento

Las dos VMs deben estar en la misma zona y en la misma red VPC. Durante la prueba de rendimiento, estas dos VMs realizan pruebas bidireccionales de la ruta de la red VPC.

Verificar el ajuste de MTU

Confirma que la red de nube privada virtual (VPC) tiene configurado el valor máximo de MTU mediante ifconfig en el SO invitado de una de las VMs.

  1. Conéctate a una de las VMs.

  2. En la ventana del terminal, ejecuta el siguiente comando:

     /sbin/ifconfig | grep mtu
    

    El MTU notificado debe ser 8896.

     ens4: flags=4163  mtu 8896
     lo: flags=73  mtu 65536
    

Verificar la configuración de la VM

Confirma que las máquinas virtuales tienen habilitada la red de nivel 1 examinando las propiedades de la máquina virtual.

gcloud

Para ver las instancias, usa el comando gcloud compute instances describe.

gcloud compute instances describe VM_NAME_1 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"
gcloud compute instances describe VM_NAME_2 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"

Haz los cambios siguientes:

  • VM_NAME_1: los nombres de las instancias de VM que quieras ver.
  • VM_NAME_2: los nombres de las instancias de VM que quieras ver.
  • PROJECT_ID: el nombre de tu proyecto.
  • ZONE: la zona de tu VM. Ambas VMs deben estar en la misma zona.

En la respuesta, debería ver lo siguiente:

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Usar iPerf para realizar la prueba de rendimiento en sistemas basados en Debian

gcloud

  1. Si aún no lo has hecho, sigue los pasos que se indican en el artículo Configurar máquinas virtuales para realizar pruebas comparativas.

  2. Una vez que ambas máquinas virtuales estén en funcionamiento, usa SSH para conectarte a una de ellas.

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    Haz los cambios siguientes:

    • VM_NAME_1: el nombre de tu primera VM.
    • PROJECT_ID: el nombre de tu proyecto.
  3. En la primera máquina virtual, sigue estos pasos:

    1. Instala iperf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Obtén la dirección IP interna de esta VM. Anota la dirección IP interna para usarla más adelante.

      ip a
      
    3. Inicia el servidor iPerf.

      iperf -s
      

      De esta forma, se inicia un servidor que escucha las conexiones para realizar la prueba de rendimiento. Deja el servidor iPerf en funcionamiento durante la prueba.

  4. En un terminal de cliente independiente, conéctate a la segunda VM mediante SSH.

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    Haz los cambios siguientes:

    • VM_NAME_2: el nombre de tu segunda VM.
    • PROJECT_ID: el nombre de tu proyecto.
  5. En la segunda VM, sigue estos pasos:

    1. Instala iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Ejecuta la prueba iperf y especifica la dirección IP de la primera VM como destino.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Se ejecutará una prueba de 30 segundos. Si iPerf no puede acceder a la otra VM, es posible que tengas que ajustar la red o la configuración del cortafuegos en las VMs o quizás en la consola Google Cloud .

      Los resultados deberían ser similares a los del siguiente ejemplo. Muestra el límite de ancho de banda de salida de 75 Gbps para n2-standard-64 con la opción Red_de_nivel_1 habilitada, que supera el límite predeterminado de 32 Gbps.

      ------------------------------------------------------------
      Client connecting to 10.128.0.10, TCP port 5001
      TCP window size: 1.59 MByte (default)
      ------------------------------------------------------------
      [ 12] local 10.128.0.11 port 57722 connected with 10.128.0.10 port 5001
      [ 11] local 10.128.0.11 port 57720 connected with 10.128.0.10 port 5001
      [ 16] local 10.128.0.11 port 57730 connected with 10.128.0.10 port 5001
      [  6] local 10.128.0.11 port 57710 connected with 10.128.0.10 port 5001
      [ 13] local 10.128.0.11 port 57724 connected with 10.128.0.10 port 5001
      [  8] local 10.128.0.11 port 57712 connected with 10.128.0.10 port 5001
      [  9] local 10.128.0.11 port 57716 connected with 10.128.0.10 port 5001
      [ 14] local 10.128.0.11 port 57726 connected with 10.128.0.10 port 5001
      [ 15] local 10.128.0.11 port 57728 connected with 10.128.0.10 port 5001
      [ 10] local 10.128.0.11 port 57718 connected with 10.128.0.10 port 5001
      [  4] local 10.128.0.11 port 57706 connected with 10.128.0.10 port 5001
      [  5] local 10.128.0.11 port 57708 connected with 10.128.0.10 port 5001
      [  3] local 10.128.0.11 port 57704 connected with 10.128.0.10 port 5001
      [ 17] local 10.128.0.11 port 57732 connected with 10.128.0.10 port 5001
      [  7] local 10.128.0.11 port 57714 connected with 10.128.0.10 port 5001
      [ 18] local 10.128.0.11 port 57734 connected with 10.128.0.10 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [ 12]  0.0-30.0 sec  7.63 GBytes  2.19 Gbits/sec
      [ 11]  0.0-30.0 sec  17.7 GBytes  5.07 Gbits/sec
      [ 16]  0.0-30.0 sec  9.15 GBytes  2.62 Gbits/sec
      [  6]  0.0-30.0 sec  43.8 GBytes  12.6 Gbits/sec
      [ 13]  0.0-30.0 sec  23.6 GBytes  6.76 Gbits/sec
      [  8]  0.0-30.0 sec  13.3 GBytes  3.80 Gbits/sec
      [  9]  0.0-30.0 sec  9.29 GBytes  2.66 Gbits/sec
      [ 14]  0.0-30.0 sec  19.6 GBytes  5.62 Gbits/sec
      [ 15]  0.0-30.0 sec  12.5 GBytes  3.58 Gbits/sec
      [ 10]  0.0-30.0 sec  11.1 GBytes  3.19 Gbits/sec
      [  4]  0.0-30.0 sec  19.0 GBytes  5.43 Gbits/sec
      [  5]  0.0-30.0 sec  7.32 GBytes  2.10 Gbits/sec
      [  3]  0.0-30.0 sec  8.78 GBytes  2.51 Gbits/sec
      [ 17]  0.0-30.0 sec  17.5 GBytes  5.02 Gbits/sec
      [  7]  0.0-30.0 sec  33.4 GBytes  9.57 Gbits/sec
      [ 18]  0.0-30.0 sec  7.64 GBytes  2.19 Gbits/sec
      [SUM]  0.0-30.0 sec   261 GBytes  74.9 Gbits/sec
      

Eliminar recursos después de las pruebas de rendimiento

Elimina los recursos que hayas creado durante las pruebas de rendimiento para evitar que se te cobren la imagen y las máquinas virtuales adicionales.

gcloud

  1. Usa el comando gcloud compute instances delete para quitar las instancias que hayas creado para las pruebas de rendimiento.

    gcloud compute instances delete \
      VM_NAME_1 VM_NAME_2 \
       --project=PROJECT_ID \
       --zone=ZONE
    

    Haz los cambios siguientes:

    • VM_NAME_1 y VM_NAME_2: los nombres de las dos instancias de VM que quieres eliminar.
    • PROJECT_ID: el nombre de tu proyecto.
    • ZONE: la zona de tu VM. Ambas VMs deben estar en la misma zona.
  2. Usa el gcloud compute networks delete comando para quitar la red que has creado para las pruebas de rendimiento.

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    Haz los cambios siguientes:

    • NETWORK_NAME: el nombre de la red que quieras eliminar.
    • PROJECT_ID: el nombre de tu proyecto.
  3. Usa el comando gcloud compute images delete para quitar la imagen que has creado para las pruebas de rendimiento.

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    Haz los cambios siguientes:

    • IMAGE_NAME: el nombre de la imagen que quieres eliminar.
    • PROJECT_ID: el nombre de tu proyecto.

Siguientes pasos