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 tiene éxito con VirtIO, gVNIC reemplaza VirtIO-Net como la única interfaz de red compatible con Compute Engine para todos los tipos de máquinas nuevos (generación 3 y posteriores). Las series de máquinas más nuevas y las funciones de herramientas de redes requieren gVNIC en lugar de VirtIO. Consumo de gVNIC como interfaz de E/S moderna con VMs de Compute Engine nos permite hacer lo siguiente:

  • Proporciona un mejor rendimiento.
  • Reduce los problemas de vecino ruidoso para mejorar la coherencia.
  • Ingresa una nueva funcionalidad de red más allá de la capacidad de VirtIO.

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

gVNIC es necesaria para admitir:

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 de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

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 los 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 los siguientes clústeres:

  • Sistemas operativos no compatibles
  • Sistemas operativos que no tienen la versión más reciente del controlador de 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 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:

Limitaciones

  • No se admite la descarga de recepción grande (LRO). La descarga de recepción genérica (GRO) está habilitada de forma predeterminada para las VMs que usan gVNIC.
  • La versión 2 de descarga de envío grande (LSOV2) no es compatible con las VMs de Windows 11 o Windows Server 2022. Las versiones del controlador de gVNIC 1.0.0@45 y, luego, inhabilitan LSOV2. Para obtener información sobre cómo verificar y actualizar el controlador gVNIC de tu VM en Microsoft Windows, consulta los problemas conocidos.

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 es 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:

    • IMAGE_NAME: El nombre de la imagen de SO que deseas crear.
    • 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.

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 Google Cloud CLI o REST.

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 \
        --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.
    • 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 en la zona us-west1-b con 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: Es 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?