Usar NIC virtual de Google


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

gVNIC es la interfaz de red de nueva generación que sustituye a VirtIO. Reemplaza a VirtIO-Net como la única interfaz de red compatible con Compute Engine para todos los tipos de máquinas nuevos (de tercera generación en adelante). Las series de máquinas y las funciones de red más recientes requieren gVNIC en lugar de VirtIO. Consumir gVNIC como interfaz de E/moderna con las VMs de Compute Engine ofrece las siguientes ventajas:

  • Ofrece un mejor rendimiento.
  • Mejora la coherencia al reducir los problemas derivados de compartir recursos con otras organizaciones.
  • Introduce nuevas funciones de red que van más allá de lo que VirtIO puede hacer.

Antes de empezar

  • Si usas gVNIC con imágenes de Windows Server o de cliente de Windows, asegúrate de que el controlador gVNIC use la versión 1.0.0@45 o una posterior del paquete GooGet.
  • 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 .

Cuándo usar gVNIC

gVNIC es compatible y se recomienda para todas las familias y generaciones de máquinas. Algunas generaciones solo admiten gVNIC. Otros requieren el uso de gVNIC en condiciones especiales. Para identificar la generación de tu serie de máquinas, consulta la terminología de Compute Engine.

El uso de gVNIC por generación de series de máquinas es el siguiente:

  • Las series de máquinas de tercera generación y posteriores, excepto las instancias Bare Metal, solo admiten gVNIC para la interfaz de red virtual.
  • Las series de máquinas de primera o segunda generación deben usar gVNIC para la interfaz de red virtual de las instancias si cumplen alguna de las siguientes condiciones:

Precios

Para ver los precios más recientes de la red de nivel 1, consulta la página de precios de las instancias de máquinas virtuales.

Para ver una lista de métodos adicionales que se pueden usar para encontrar información sobre los precios, consulta la página Precios de Compute Engine.

Asistencia para sistemas operativos

En Compute Engine, puedes usar gVNIC en cualquier imagen de sistema operativo público compatible. Puedes instalar manualmente el controlador gVNIC en los siguientes casos:

  • La imagen del SO no incluye el controlador gVNIC
  • La imagen del SO no tiene la versión más reciente del controlador gVNIC

Para ver los sistemas operativos compatibles, consulta la pestaña Interfaces de un sistema operativo. También puedes consultar la pestaña Funciones de redes para ver si se admiten funciones de redes.

Uso en sistemas operativos no compatibles

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

Puedes configurar e instalar manualmente la versión más reciente del controlador gVNIC en máquinas virtuales Linux o Windows.

Después de actualizar el sistema operativo de tu VM para usar gVNIC, crea una imagen de SO personalizada basada en esa imagen de SO. Después, puedes usar la imagen de SO personalizada para crear más VMs 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 el artículo Crear una imagen de SO personalizada compatible con gVNIC de esta página.

Sigue los procedimientos que se indican a continuación para configurar e instalar manualmente la versión más reciente del controlador gVNIC.

Información general sobre el uso de gVNIC con VMs de Compute Engine

Para crear una VM que use gVNIC, sigue estos pasos:

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

Si tienes algún problema, consulta el artículo Solucionar problemas con la NIC virtual de Google.

Crear una imagen de SO personalizada que admita gVNIC

Puedes crear la imagen del SO mediante Google Cloud CLI o REST. Para obtener información detallada y consultar las prácticas recomendadas para crear imágenes de SO personalizadas, consulta el artículo Crear imágenes de SO personalizadas.

gcloud

  1. Selecciona una imagen de SO o una familia de imágenes que admita gVNIC. Para obtener más información, consulta los detalles del sistema operativo.

  2. Con la imagen del SO o la familia de imágenes del SO seleccionada en el paso anterior, crea una imagen del SO personalizada y etiquétala con GVNIC. Para crear la imagen del SO personalizado, 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
    

    Haz los cambios siguientes:

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

      Si quieres usar la imagen del SO más reciente en una familia de imágenes, sustituye la marca --source-image por la marca --source-image-family y asigna a esta última el valor de una familia de imágenes que admita gVNIC. Por ejemplo: --source-image-family=rocky-linux-8-optimized-gcp.

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

    Ejemplo

    Para crear una imagen de Rocky Linux 8 Optimized for Google Cloud OS 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 cuándo usar familias de imágenes, consulta las prácticas recomendadas para familias de imágenes.

REST

  1. Selecciona una imagen de SO o una familia de imágenes que admita gVNIC. Para obtener más información, consulta los detalles del sistema operativo.

  2. Con la imagen del SO o la familia de imágenes del SO seleccionada en el paso anterior, crea una imagen del SO y etiquétala con GVNIC. Para crear la imagen del 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"
        }
      ]
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto en el que se creará la nueva imagen
    • IMAGE_NAME: nombre de la imagen personalizada.
    • SOURCE_IMAGE_URI: el URI de la imagen de SO o de la familia de imágenes específica que quieras 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 más reciente y no obsoleta de esa familia. Para obtener más información sobre cuándo usar familias de imágenes, consulta las prácticas recomendadas para familias de imágenes.

Crear una VM con compatibilidad con gVNIC

Puedes crear una máquina virtual con una de las imágenes de SO públicas admitidas o con una imagen de SO personalizada que hayas creado siguiendo los pasos que se indican en Crear una imagen de SO personalizada compatible con gVNIC.

También puedes habilitar DPDK en la VM para disfrutar de un procesamiento de paquetes de red más rápido, una latencia baja y un rendimiento constante.

En las VMs que admiten varias interfaces de red (NICs), puedes tener NICs de diferentes tipos conectadas a la VM, ya que la compatibilidad con las interfaces se configura por NIC. Aunque se admite, no recomendamos esta configuración. En las máquinas virtuales que admiten varias NICs, asegúrate de especificar nic-type=GVNIC para cada interfaz de red al crear la máquina virtual.

Crear una VM con una imagen de SO pública

Para crear una máquina virtual con una imagen de SO pública que admita gVNIC, sigue las instrucciones de Crear máquinas virtuales y contenedores con una configuración de ancho de banda alto.

Crear 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. A continuación, usa esa imagen de SO personalizada para crear una VM con la Google Cloud consola, la CLI de Google Cloud o REST.

Consola

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

    Ir a Crear una instancia

  2. Introduce el nombre de la instancia de VM.

  3. Selecciona la zona en la que quieres crear 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, haz lo siguiente:

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

    1. Despliega la sección Redes.
    2. En Tarjeta de interfaz de red, selecciona gVNIC.
  7. Haz las personalizaciones adicionales de la VM que necesites.

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

gcloud

  1. Crea la VM con el comando gcloud compute instances create. En el disco de arranque, especifica la imagen de SO personalizada que has creado anteriormente. En la interfaz de red, asigna el valor GVNIC a la marca nic-type.

    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
    

    Haz los cambios siguientes:

    • VM_NAME: nombre de la nueva VM.
    • ZONE: la zona en la que se creará la VM.
    • MACHINE_TYPE: el tipo de máquina que se usará al crear la instancia de VM. Si no especificas un tipo de máquina, el valor predeterminado es n1-standard-1.
    • IMAGE_NAME: la imagen del SO que se ha creado en el paso anterior.
    • YOUR_IMAGE_PROJECT: el nombre del proyecto que contiene la imagen del SO.
  2. Opcional: Comprueba que Compute Engine ha creado la VM y que el valor de nicType es GVNIC.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM.
    • ZONE: la zona en la que has creado 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 se encuentra 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
    

    Cosas que debes tener en cuenta

    La marca --network-interface tiene marcas de nivel inferior, como las siguientes:

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

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

REST

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

  • En el disco de arranque, especifica la imagen de SO personalizada que has creado anteriormente.
  • En la interfaz de red, asigna el valor GVNIC al campo nicType.
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
    }
  ]
}

Haz los cambios siguientes:

  • PROJECT_ID: ID del proyecto en el que se va a crear la VM.
  • ZONE: la zona en la que se creará la VM.
  • VM_NAME: nombre de la nueva VM.
  • NETWORK: URL del recurso de red de esta máquina virtual. Si no se especifica la red ni la subred, se usa la red predeterminada global/networks/default.
  • SUBNET_NAME: nombre de la subred. La red se deduce de la subred especificada. Este campo es opcional.
  • YOUR_IMAGE_PROJECT: el nombre del proyecto que contiene la imagen del SO.
  • IMAGE_NAME: la imagen del SO que se ha creado en el paso anterior.

Verificar 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 lshw en tu instancia de VM Linux, abre una conexión SSH a la VM y, a continuación, 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

La salida es similar a la 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 lo siguiente: "Google Ethernet Adapter"

Solución de problemas

Para solucionar problemas de gVNIC, consulta el artículo Solucionar problemas de NIC virtual de Google.

Siguientes pasos