Como usar o NIC virtual do Google


O Google Virtual NIC (gVNIC) é uma interface de rede virtual projetada especificamente para o Compute Engine. A gVNIC é uma alternativa ao driver Ethernet baseado em virtIO.

Como a interface de rede de última geração que tem sucesso no VirtIO, a gVNIC substitui o VirtIO-Net como a única interface de rede compatível no Compute Engine para todos os novos tipos de máquina (geração 3 adiante). Recursos de rede e séries de máquinas mais recentes exigem gVNIC em vez de VirtIO. Consumir a gVNIC como a interface de E/S moderna com VMs do Compute Engine permite o seguinte:

  • Fornecer um desempenho melhor.
  • Melhorar a consistência reduzindo a sobrecarga de problemas de vizinho barulhento ("noisy neighbor", em inglês).
  • Apresentar uma nova funcionalidade de rede além do que o VirtIO é capaz de oferecer.

A gVNIC é compatível e recomendada para todas as famílias, os tipos e as gerações de máquinas.

A gVNIC é necessária para compatibilidade com:

Antes de começar

  • Se você usa a gVNIC com VMs do Windows Server 2022 ou do Windows 11, atualize o driver da gVNIC para a versão do pacote GooGet 1.0.0@45 ou mais recente para melhorar a capacidade da rede. Saiba mais em Problemas conhecidos.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Preços

Para ver os preços mais recentes da rede do Tier_1, consulte a página de preços de instância de VM.

Para ver uma lista com outros métodos que podem ser usados para encontrar informações de preços, consulte Preços do Compute Engine.

Suporte ao sistema operacional

No Compute Engine, é possível usar a gVNIC em qualquer imagem de sistema operacional (SO) pública compatível. É possível instalar manualmente o driver da gVNIC nos seguintes locais:

  • Sistemas operacionais não compatíveis
  • Sistemas operacionais que não têm a versão mais recente do driver da gVNIC

Para ver os sistemas operacionais compatíveis, consulte a guia Interfaces compatíveis de um sistema operacional. Verifique também a guia Recursos de rede para ver os recursos de rede.

Usar em sistemas operacionais não compatíveis

Para imagens do SO compatíveis com a gVNIC, mas que não incluem a versão mais recente do driver da gVNIC, faça o download da versão mais recente do driver no GitHub.

É possível configurar e instalar manualmente a versão mais recente do driver gVNIC em VMs com Linux ou Windows.

Depois de atualizar o sistema operacional na VM para usar o gVNIC, crie uma imagem do SO personalizada com base nessa imagem do SO. É possível usar a imagem do SO personalizada para criar outras VMs que usem o gVNIC nesse sistema operacional. Para mais informações sobre como criar VMs usando uma imagem do SO personalizada, consulte Criar uma imagem do SO personalizada compatível com o gVNIC nesta página.

Use os procedimentos a seguir para configurar e instalar manualmente a versão mais recente do driver gVNIC:

Limitações

Visão geral do uso do gVNIC com as VMs do Compute Engine

Para criar uma VM que use o gVNIC, conclua as seguintes etapas:

  1. Escolha uma imagem do SO pública compatível com o gVNIC ou crie uma imagem do SO personalizada marcada para usar gVNIC.
  2. Crie uma VM usando a imagem do SO pública ou personalizada. Durante a criação da VM, configure a interface de rede para usar o gVNIC.
  3. Verifique se o gVNIC está ativado.

Se você encontrar algum problema, consulte Solução de problemas da NIC virtual do Google.

Criar uma imagem do SO personalizada compatível com gVNIC

É possível criar a imagem do SO usando a Google Cloud CLI ou REST. Para informações detalhadas e práticas recomendadas para criar imagens de SO personalizadas, consulte Criar imagens personalizadas de SO.

gcloud

  1. Selecione uma imagem do SO ou família de imagens compatível com o gVNIC. Para mais informações, consulte Detalhes do sistema operacional.

  2. Usando a imagem do SO ou a família de imagens selecionada na etapa anterior, crie uma imagem do SO personalizada e marque-a com GVNIC. Para criar a imagem do SO personalizada, use o comando gcloud compute images create. Por exemplo, o comando a seguir cria uma imagem do SO personalizada compatível com gVNIC, baseada em uma imagem específica do SO.

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

    Substitua:

    • IMAGE_NAME: o nome da imagem que você quer criar.
    • SOURCE_IMAGE: uma imagem do SO específica compatível com gVNIC, por exemplo: rocky-linux-8-optimized-gcp-v20220719.

      Se você quiser usar a imagem do SO mais recente em uma família de imagens, substitua a sinalização --source-image pela sinalização --source-image-family e defina o valor dela como uma imagem família compatível com gVNIC. Por exemplo: --source-image-family=rocky-linux-8-optimized-gcp.

    • SOURCE_IMAGE_PROJECT: o nome do projeto que contém a imagem do SO de origem ou a família de imagens.

    Exemplo

    Para criar uma imagem Rocky Linux 8 otimizada para imagem do SO do Google Cloud usando a imagem do SO mais recente da família de imagens rocky-linux-8-optimized-gcp do Compute Engine, execute o seguinte 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 mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

REST

  1. Selecione uma imagem do SO ou família de imagens compatível com o gVNIC. Para mais informações, consulte Detalhes do sistema operacional.

  2. Usando a imagem do SO ou a família de imagens selecionada na etapa anterior, crie uma imagem do SO e marque-a com GVNIC. Para criar a imagem do SO, use o 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"
        }
      ]
    }
    

    Substitua:

    • IMAGE_NAME: o nome da imagem do SO que você quer criar.
    • SOURCE_IMAGE_URI : o URI da imagem do SO ou família de imagens específica que você quer usar.

      Exemplo:

      • Imagem específica do SO: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
      • Família de imagens: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp".

      Quando você especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO mais recente e não obsoleta nessa família. Para mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

Criar uma VM compatível com gVNIC

É possível criar uma VM usando uma das imagens do SO públicas compatíveis ou uma imagem do SO personalizada que você criou seguindo as etapas em Criar uma imagem do SO personalizada compatível com gVNIC.

Você tem a opção de ativar o DPDK na VM para um processamento mais rápido de pacotes de rede, baixa latência e desempenho consistente.

Criar uma VM usando uma imagem do SO pública

Para criar uma VM usando uma imagem do SO pública compatível com gVNIC, siga as instruções em Como criar VMs e contêineres com configuração de alta largura de banda.

Criar uma VM usando uma imagem do SO personalizada

Se você não estiver usando uma imagem do SO pública compatível com gVNIC, primeiro crie uma imagem do SO personalizada compatível com o gVNIC. Em seguida, use essa imagem do SO personalizada para criar uma VM usando a Google Cloud CLI ou REST.

gcloud

  1. Crie a VM usando o comando gcloud compute instances create. Para o disco de inicialização, especifique a imagem do SO personalizada que você criou anteriormente. Para a interface de rede, defina o valor da sinalização nic-type como GVNIC.

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

    Substitua:

    • VM_NAME: o nome da nova VM.
    • ZONE: zona em que a VM será criada.
    • IMAGE_NAME: a imagem do SO que foi criada na etapa anterior.
    • YOUR_IMAGE_PROJECT: o nome do projeto que contém a imagem do SO.
  2. Opcional: verifique se o Compute Engine criou a VM e se nicType está definido como GVNIC.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    Substitua:

    • VM_NAME: o nome da VM.
    • ZONE: a zona em que você criou a VM.

    Exemplo

    Para criar uma VM do Rocky Linux 8 na zona us-west1-b usando uma imagem do SO chamada my-gvnic-rocky8 que está no projeto my-project-12345, execute o seguinte 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
    

    Considerações

    A sinalização --network-interface tem sinalizações de sub-nível como as seguintes:

    • --address: atribua um endereço IP à VM
    • --network: a rede de que a interface fará parte
    • --network-tier: o nível de rede da interface
    • --subnet: a sub-rede de que a interface fará parte. Se --network também for especificado, a sub-rede precisará fazer parte da rede especificada.
    • --private-network-ip: especifique o IP RFC 1918 para atribuir à VM.

    Para uma lista completa, consulte a sinalização --network-interface.

REST

Crie a VM usando o método instances.insert.

  • Para o disco de inicialização, especifique a imagem do SO personalizada que você criou anteriormente.
  • Para a interface de rede, defina o valor do campo nicType como 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
    }
  ]
}

Substitua:

  • PROJECT_ID: ID do projeto em que a VM será criada.
  • ZONE: zona em que a VM será criada.
  • VM_NAME: o nome da nova VM.
  • NETWORK: o URL do recurso de rede para a VM. Se a rede e a sub-rede não forem especificadas, a rede padrão global/networks/default será usada.
  • SUBNET_NAME: nome da sub-rede; A rede é inferida da sub-rede especificada; Esse campo é opcional.
  • YOUR_IMAGE_PROJECT: o nome do projeto que contém a imagem do SO.
  • IMAGE_NAME: a imagem do SO que foi criada na etapa anterior.

Verifique se a gVNIC está ativada

Linux

Você pode usar a ferramenta lshw para extrair informações detalhadas sobre a configuração de hardware da máquina virtual.

Para instalar a ferramenta lshw na instância de VM do Linux, abra uma conexão SSH com a VM e execute o seguinte comando:

sudo apt-get install lshw -y

Para determinar se a VM está usando a interface de rede gVNIC, execute o seguinte comando:

sudo lshw -class network

A saída será assim:

*-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. Na instância de VM do Windows, abra o Gerenciador de dispositivos.
  2. Em "Adaptadores de rede", você verá: "Google Ethernet Adapter"

Solução de problemas

Para resolver problemas do gVNIC, consulte Solução de problemas do NIC virtual do Google.

A seguir