Usa la NIC virtual de Google


La NIC virtual de Google (gVNIC) es una interfaz de red virtual diseñada específicamente para Compute Engine. gVNIC es una alternativa al controlador de Ethernet basado en VirtIO.

Como la interfaz de red de última generación que sucede a VirtIO, gVNIC reemplaza VirtIO-Net como la única interfaz de red compatible en Compute Engine para todos los tipos de máquinas nuevos (generación 3 y posteriores). Las series de máquinas y las funciones de redes más nuevas requieren gVNIC en lugar de VirtIO. El consumo de gVNIC como interfaz de E/S moderna con VMs de Compute Engine ofrece las siguientes ventajas:

  • Proporciona un mejor rendimiento.
  • Mejora la coherencia mediante la reducción de los problemas de vecinos ruidosos.
  • Presenta nuevas capacidades de red más allá de las que VirtIO es capaz de usar.

gVNIC es compatible y recomendado en todas las familias de máquinas, los tipos de máquinas y las generaciones.

Se necesita gVNIC para alcanzar las siguientes tasas de ancho de banda máximas:

Debes usar gVNIC como interfaz de red para instancias de Confidential VM, VMs de series de máquinas de tercera generación o posterior y VMs que se ejecutan en la plataforma de CPU Arm.

Antes de comenzar

  • Si usas gVNIC con las VMs de Windows Server 2022 o Windows 11, actualiza el controlador de gVNIC a la versión del paquete GooGet 1.0.0@45 o posterior para mejorar la capacidad de procesamiento de las redes. Para obtener más información, consulta los problemas conocidos.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Precios

Para ver los precios más recientes de las redes Tier_1, consulta la página de precios de instancias de VM.

Si deseas obtener una lista de los métodos adicionales que se pueden usar para encontrar información sobre precios, consulta los precios de Compute Engine.

Compatibilidad con el sistema operativo

En Compute Engine, puedes elegir usar gVNIC en cualquier imagen de sistema operativo (SO) pública compatible. Puedes instalar el controlador de gVNIC de forma manual en estos casos:

  • La imagen de SO no incluye el controlador gVNIC
  • La imagen de SO no tiene la última versión del controlador gVNIC

Para conocer los sistemas operativos compatibles, consulta la pestaña Interfaces compatibles de un sistema operativo. Consulta también la pestaña Funciones de redes para obtener información sobre las funciones de redes.

Uso en sistemas operativos no compatibles

Para las imágenes de SO que admiten gVNIC, pero no incluyen la versión más reciente del controlador de gVNIC, puedes descargar la última versión del controlador desde GitHub.

Puedes configurar e instalar la versión más reciente del controlador de gVNIC de forma manual en las VMs de Linux o Windows.

Después de actualizar el sistema operativo en tu VM para usar gVNIC, crea una imagen de SO personalizada basada en esa imagen de SO. Luego, puedes usar la imagen de SO personalizada para crear VMs adicionales que usen gVNIC en ese sistema operativo. Para obtener más información sobre cómo crear VMs con una imagen de SO personalizada, consulta Crea una imagen de SO personalizada que admita gVNIC en esta página.

Usa los siguientes procedimientos para configurar y, luego, instalar de forma manual la última versión del controlador de gVNIC.

Actualiza al controlador de gVNIC más reciente para Windows

Una versión actualizada del controlador de gVNIC para Windows ofrece un mejor rendimiento de la red. Cuando se instala en una instancia de procesamiento que usa una tercera generación o una serie de máquinas compatible con versiones posteriores, el controlador proporciona las siguientes mejoras:

  • Hasta 200 Gbps de ancho de banda de red cuando se instala en una instancia de Windows que está configurada para usar redes Tier_1 y gVNIC.
  • Compatibilidad con marcos jumbo, excepto en N4.

Para usar la versión actualizada del controlador gVNIC, en una ventana de PowerShell, ejecuta el comando googet para actualizarlo. El comando enumera todas las actualizaciones disponibles. Ingresa y cuando se te solicite el controlador de gVNIC.

googet update

Después de instalar y configurar Windows para usar la versión actualizada del controlador de gVNIC, puedes configurar los marcos jumbo para lograr una capacidad de procesamiento óptima. Para obtener más información, consulta Unidad de transmisión máxima.

Descripción general del uso de gVNIC con VMs de Compute Engine

Para crear una VM que use gVNIC, completa los siguientes pasos:

  1. Elige una imagen de SO pública que admita gVNIC o crea una imagen de SO personalizada que esté etiquetada para usar gVNIC.
  2. Crea una VM con la imagen de SO pública o personalizada. Durante su creación, configura la interfaz de red para que use gVNIC.
  3. Verifica que gVNIC esté habilitado.

Si tienes algún problema, consulta Soluciona problemas de la NIC virtual de Google.

Crea una imagen de SO personalizada que admita gVNIC

Puedes crear la imagen de SO con Google Cloud CLI o REST. Si deseas obtener información detallada y prácticas recomendadas para crear imágenes de SO personalizadas, consulta Crea imágenes de SO personalizadas.

gcloud

  1. Selecciona una imagen o familia de imágenes de SO que admita gVNIC. Para obtener más información, consulta Detalles de los sistemas operativos.

  2. Usa la imagen o la familia de imágenes de SO seleccionada en el paso anterior y crea una imagen de SO personalizada y etiquétala con GVNIC. Para crear la imagen de SO personalizada, usa el comando gcloud compute images create. Por ejemplo, el siguiente comando crea una imagen de SO personalizada que admite gVNIC y que se basa en una imagen de SO específica.

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

    Reemplaza lo siguiente:

    • IMAGE_NAME: el nombre de la imagen que deseas crear
    • SOURCE_IMAGE: una imagen de SO específica que admite gVNIC, por ejemplo: rocky-linux-8-optimized-gcp-v20220719

      Si deseas usar la imagen de SO más reciente en una familia de imágenes, reemplaza la marca --source-image por la marca --source-image-family y configura su valor en una familia de imágenes que admita gVNIC. Por ejemplo: --source-image-family=rocky-linux-8-optimized-gcp

    • SOURCE_IMAGE_PROJECT: el nombre del proyecto que contiene la imagen o la familia de imágenes de SO de origen

    Ejemplo

    Para crear una imagen de SO de Rocky Linux 8 optimizada para Google Cloud con la imagen de SO más reciente de la familia de imágenes rocky-linux-8-optimized-gcp de Compute Engine, ejecuta el siguiente comando:

    gcloud compute images create IMAGE_NAME \
        --source-image-family=rocky-linux-8-optimized-gcp \
        --source-image-project=rocky-linux-cloud \
        --guest-os-features=GVNIC
    

    Para obtener más información sobre el balanceo de cargas, consulta Prácticas recomendadas para las familias de imágenes.

REST

  1. Selecciona una imagen o familia de imágenes de SO que admita gVNIC. Para obtener más información, consulta Detalles de los sistemas operativos.

  2. Usa la imagen o la familia de imágenes de SO seleccionada en el paso anterior y crea una imagen de SO y etiquétala con GVNIC. Para crear la imagen de SO, usa el método images.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
      "name":"IMAGE_NAME",
      "sourceImage":"SOURCE_IMAGE_URI",
      "guestOsFeatures":[
        {
          "type":"GVNIC"
        }
      ]
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto en el que se creará la imagen nueva
    • IMAGE_NAME: un nombre para la imagen personalizada
    • SOURCE_IMAGE_URI: el URI de la imagen o familia de imágenes de SO específica que deseas usar

      Por ejemplo:

      • Imagen de SO específica: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
      • Familia de imágenes: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"

      Cuando especificas una familia de imágenes, Compute Engine crea una VM a partir de la imagen de SO no obsoleta más reciente de esa familia. Para obtener más información sobre el balanceo de cargas, consulta Prácticas recomendadas para las familias de imágenes.

Crea una VM con compatibilidad con gVNIC

Puedes crear una VM mediante una de las imágenes de SO públicas compatibles o usar una imagen de SO personalizada que creaste mediante los pasos que se indican en Crea una imagen de SO personalizada que admita gVNIC.

De manera opcional, puedes habilitar el DPDK en la VM para obtener un procesamiento de paquetes de red más rápido, una latencia baja y un rendimiento coherente.

En el caso de las VMs que admiten varias interfaces de red (NIC), puedes tener NIC de diferentes tipos conectadas a la VM, ya que la compatibilidad con la interfaz se configura por NIC. Si bien esta configuración es compatible, no la recomendamos. En el caso de las VMs que admiten varias NIC, asegúrate de especificar nic-type=GVNIC para cada interfaz de red cuando crees la VM.

Crea una VM con una imagen de SO pública

Para crear una VM con una imagen de SO pública compatible con gVNIC, sigue las instrucciones en Crea VMs y contenedores con una configuración de ancho de banda alto.

Crea una VM con una imagen de SO personalizada

Si no usas una imagen de SO pública que admita gVNIC, primero debes crear una imagen de SO personalizada que admita gVNIC. Luego, usa esa imagen de SO personalizada para crear una VM mediante la consola de Google Cloud, Google Cloud CLI o REST.

Console

  1. En la consola de Google Cloud, ve a la página Crea una instancia.

    Ir a Crear una instancia

  2. Haz clic en el nombre de la instancia de VM.

  3. Selecciona la Zona en la que crearás la VM.

  4. En la sección Disco de arranque, haz clic en Cambiar.

  5. En el panel Disco de arranque, en la pestaña Imágenes personalizadas, completa lo siguiente:

    1. Elige el Proyecto de origen que contiene la imagen de SO que creaste antes.
    2. Selecciona la imagen del menú desplegable Imagen.
    3. Haz clic en Seleccionar.
  6. Para configurar gVNIC como la interfaz de red, expande la sección Opciones avanzadas y, luego, haz lo siguiente:

    1. Expande la sección Herramientas de redes.
    2. En Tarjeta de interfaz de red, selecciona gVNIC.
  7. Realiza personalizaciones de VM adicionales, según sea necesario.

  8. Haz clic en Crear para crear la instancia de VM.

gcloud

  1. Crea la VM mediante el comando gcloud compute instances create. Para el disco de arranque, especifica la imagen de SO personalizada que creaste antes. En la interfaz de red, establece el valor de la marca nic-type en GVNIC.

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --image=IMAGE_NAME \
        --image-project=YOUR_IMAGE_PROJECT \
        --network-interface=nic-type=GVNIC
    

    Reemplaza lo siguiente:

    • VM_NAME: es el nombre de la VM nueva.
    • ZONE: la zona en la que se creará la VM.
    • MACHINE_TYPE: el tipo de máquina que se usará cuando se cree la instancia de VM. Si no especificas un tipo de máquina, el valor predeterminado es n1-standard-1.
    • IMAGE_NAME: es la imagen de SO que se creó en el paso anterior.
    • YOUR_IMAGE_PROJECT: es el nombre de tu proyecto que contiene la imagen de SO.
  2. Opcional: Verifica que Compute Engine haya creado la VM y que nicType esté configurado como GVNIC.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    Reemplaza lo siguiente:

    • VM_NAME: El nombre de la VM
    • ZONE: Es la zona en la que creaste la VM.

    Ejemplo

    Para crear una VM de Rocky Linux 8 con un tipo de máquina n1-standard-1 en la zona us-west1-b mediante una imagen de SO llamada my-gvnic-rocky8 que esté en el proyecto my-project-12345, ejecuta el siguiente comando:

    gcloud compute instances create my-rocky-linux-vm \
        --zone=us-west1-b \
        --image=my-gvnic-rocky8 \
        --image-project=my-project-12345 \
        --network-interface=nic-type=GVNIC
    

    Aspectos que debes tener en cuenta

    La marca --network-interface tiene marcas de subnivel como las siguientes:

    • --address: Asigna una dirección IP a la VM
    • --network: La red de la que formará parte la interfaz
    • --network-tier: El nivel de red de la interfaz
    • --subnet: La subred de la que formará parte la interfaz. Si también se especifica --network, la subred debe ser parte de la red especificada.
    • --private-network-ip: Especifica la IP RFC 1918 para asignar a la VM.

    Para obtener una lista completa, consulta la marca --network-interface.

REST

Crea la VM mediante el método instances.insert.

  • Para el disco de arranque, especifica la imagen de SO personalizada que creaste antes.
  • En la interfaz de red, establece el valor del campo nicType en GVNIC.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name":"VM_NAME",
  "networkInterfaces":[
    {
      "network":"NETWORK",
      "nicType":"GVNIC",
      "subnet":"SUBNET_NAME"
    }
  ],
  "disks":[
    {
      "initializeParams":{
        "sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME"
      },
      "boot":true
    }
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: es el ID del proyecto en el que se creará la VM.
  • ZONE: la zona en la que se creará la VM.
  • VM_NAME: es el nombre de la VM nueva.
  • NETWORK: Es la URL del recurso de red para esta VM. Si no se especifican la red ni la subred, se usa la red global/networks/default predeterminada.
  • SUBNET_NAME: Es el nombre de la subred. La red se infiere de la subred especificada. Este paso es opcional,
  • YOUR_IMAGE_PROJECT: es el nombre de tu proyecto que contiene la imagen de SO.
  • IMAGE_NAME: es la imagen de SO que se creó en el paso anterior.

Verifica que gVNIC esté habilitado

Linux

Puedes usar la herramienta lshw para extraer información detallada sobre la configuración de hardware de la máquina virtual.

Para instalar la herramienta de lshw en tu instancia de VM de Linux, abre una conexión SSH a la VM y, luego, ejecuta el siguiente comando:

sudo apt-get install lshw -y

Para determinar si la VM usa la interfaz de red gVNIC, ejecuta el siguiente comando:

sudo lshw -class network

El resultado se ve de la manera siguiente:

*-network
   description: Ethernet interface
   product: Compute Engine Virtual Ethernet [gVNIC]
   vendor: Google, Inc.
   physical id: 3
   bus info: pci@0000:00:03.0
   logical name: ens3
   version: 00
   serial: 42:01:0a:80:00:6f
   width: 32 bits
   clock: 33MHz
   capabilities: msix bus_master cap_list ethernet physical
   configuration: autonegotiation=off broadcast=yes driver=gve driverversion=1.0.0
    duplex=full ip=10.128.0.111 latency=0 link=yes multicast=yes port=twisted pair
   resources: irq:11 memory:c0203000-c0203fff memory:c0200000-c02000ff memory:c0100000-c01fffff

Windows

  1. En tu instancia de VM de Windows, abre el Administrador de dispositivos.
  2. En Adaptadores de red, deberías ver "Google Ethernet Adapter".

Soluciona problemas

Para solucionar problemas de gVNIC, consulta Soluciona problemas de NIC virtual de Google.

¿Qué sigue?