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 moderna de E/S com VMs do Compute Engine oferece as seguintes vantagens:

  • Melhora o desempenho.
  • Melhora a consistência ao reduzir a sobrecarga de problemas de vizinho barulhento.
  • Apresenta novos recursos de rede além do que o VirtIO é capaz.

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 atingir as seguintes taxas máximas de largura de banda:

Você precisa usar a gVNIC como a interface de rede para instâncias de VMs confidenciais, VMs com séries das máquinas de terceira geração ou posterior e VMS executadas na Plataforma de CPU ARM.

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 selecionando uma das seguintes opções:

    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 as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

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

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

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 nestes casos:

  • A imagem do SO não inclui o driver da gVNIC
  • A imagem do SO não tem a versão mais recente do driver da gVNIC

Para ver os sistemas operacionais compatíveis, consulte a guia Interfaces 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 da gVNIC:

Atualizar para o driver mais recente da gVNIC para Windows

Uma versão atualizada do driver da gVNIC para Windows oferece melhor desempenho de rede. Quando instalado em uma instância de computação que usa uma série de máquinas com suporte de terceira geração ou mais recente, o driver oferece as seguintes melhorias:

  • Até 200 Gbps de largura de banda de rede quando instalado em uma instância do Windows configurada para usar a rede Tier_1 e o gVNIC.
  • Suporte a frames Jumbo, exceto no N4.

Para usar a versão atualizada do driver da gVNIC, execute o comando googet em uma janela do Powershell para atualizar o driver da gVNIC. O comando lista todas as atualizações disponíveis. Digite y quando solicitado para o driver da gVNIC.

googet update

Depois de instalar e configurar o Windows para usar a versão atualizada do driver da gVNIC, você pode configurar frames jumbo para alcançar a capacidade de processamento ideal. Saiba mais em Unidade de transmissão máxima.

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

    • PROJECT_ID: ID do projeto em que a nova imagem será criada
    • IMAGE_NAME: um nome para a imagem personalizada
    • 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.

Para VMs compatíveis com várias interfaces de rede (NICs), é possível ter NICs de diferentes tipos anexadas à VM, porque a compatibilidade com a interface é configurada por NIC. Embora isso seja possível, não recomendamos essa configuração. Para VMs compatíveis com várias NICs, especifique nic-type=GVNIC para cada interface de rede ao criar a VM.

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 o console do Google Cloud, a CLI do Google Cloud ou a REST.

Console

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Clique no Nome da instância de VM.

  3. Selecione a Zona em que a VM será criada.

  4. Na seção Disco de inicialização, clique em Alterar.

  5. No painel Disco de inicialização, na guia Imagens personalizadas, faça isto:

    1. Escolha o Projeto de origem que contém a imagem do SO que você criou anteriormente.
    2. Selecione a imagem no menu suspenso Imagem.
    3. Clique em Selecionar.
  6. Para definir a gVNIC como a interface de rede, expanda a seção Opções avançadas e faça isto:

    1. Expanda a seção Rede.
    2. Em Place de rede, selecione gVNIC.
  7. Faça outras personalizações de VM conforme necessário.

  8. Clique em Criar para gerar a instância de VM.

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 \
        --machine-type=MACHINE_TYPE \
        --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.
    • MACHINE_TYPE: o tipo de máquina a ser usado ao criar a instância de VM. Se você não especificar um tipo de máquina, o padrão será n1-standard-1.
    • 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 com um tipo de máquina n1-standard-1 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