Usar a NIC virtual da Google


A NIC virtual da Google (gVNIC) é uma interface de rede virtual concebida especificamente para o Compute Engine. A gVNIC é uma alternativa ao controlador Ethernet baseado em virtIO.

Como a interface de rede de próxima geração que sucede ao VirtIO, o gVNIC substitui o VirtIO-Net como a única interface de rede suportada no Compute Engine para todos os novos tipos de máquinas (3.ª geração e posteriores). As séries de máquinas mais recentes e as funcionalidades de rede requerem o gVNIC em vez do VirtIO. A utilização do gVNIC como a interface de E/S moderna com VMs do Compute Engine oferece as seguintes vantagens:

  • Oferece um melhor desempenho.
  • Melhora a consistência ao reduzir os problemas de vizinhos ruidosos.
  • Apresenta novas capacidades de rede além das que o VirtIO é capaz de oferecer.

Antes de começar

  • Se usar o gVNIC com imagens do Windows Server ou do cliente Windows, certifique-se de que o controlador gVNIC usa a versão 1.0.0@45 ou posterior do pacote GooGet.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Quando usar a gVNIC

A gVNIC é suportada e recomendada para todas as famílias e gerações de máquinas. Algumas gerações suportam apenas gVNIC. Outros requerem a utilização de gVNIC em condições especiais. Para identificar a geração da série de máquinas, consulte a secção Terminologia do Compute Engine.

A utilização de gVNIC por geração de séries de máquinas é a seguinte:

  • As séries de máquinas de terceira geração e posteriores, excluindo as instâncias bare metal, só suportam gVNIC para a interface de rede virtual.
  • As séries de máquinas de primeira ou segunda geração têm de usar gVNIC para a interface de rede virtual para instâncias se cumprirem alguma das seguintes condições:

Preços

Para ver os preços mais recentes da rede de Nível 1, consulte a página de preços das instâncias de VM.

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

Apoio técnico a sistemas operativos

No Compute Engine, pode optar por usar o gVNIC em qualquer imagem de sistema operativo (SO) público suportada. Pode instalar manualmente o controlador gVNIC nestes casos:

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

Para ver os sistemas operativos compatíveis, consulte o separador Interfaces para um sistema operativo. Consulte também o separador Funcionalidades de rede para ver o suporte de funcionalidades de rede.

Utilização em sistemas operativos não suportados

Para imagens do SO que suportam o gVNIC, mas não incluem a versão mais recente do controlador gVNIC, pode transferir a versão mais recente do controlador a partir do GitHub.

Pode configurar e instalar manualmente a versão mais recente do controlador gVNIC em VMs Linux ou Windows.

Depois de atualizar o sistema operativo na sua VM para usar o gVNIC, crie uma imagem do SO personalizada com base nessa imagem do SO. Em seguida, pode usar a imagem do SO personalizado para criar VMs adicionais que usam o gVNIC nesse sistema operativo. Para mais informações sobre como criar VMs com uma imagem do SO personalizada, consulte o artigo Crie uma imagem do SO personalizada que suporte o gVNIC nesta página.

Use os procedimentos seguintes para configurar e instalar manualmente a versão mais recente do controlador gVNIC.

Vista geral da utilização do gVNIC com VMs do Compute Engine

Para criar uma VM que use gVNIC, conclua os seguintes passos:

  1. Escolha uma imagem de SO pública que suporte gVNIC ou crie uma imagem de SO personalizada etiquetada para usar gVNIC.
  2. Crie uma VM com 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 encontrar problemas, consulte o artigo Resolução de problemas da NIC virtual da Google.

Crie uma imagem do SO personalizada que suporte o gVNIC

Pode criar a imagem do SO através da Google Cloud CLI ou da REST. Para ver informações detalhadas e práticas recomendadas para criar imagens de SO personalizadas, consulte o artigo Crie imagens de SO personalizadas.

gcloud

  1. Selecione uma imagem do SO ou uma família de imagens que suporte o gVNIC. Para mais informações, consulte os detalhes do sistema operativo.

  2. Usando a imagem do SO ou a família de imagens selecionada no passo anterior, crie uma imagem do SO personalizada e etiquete esta imagem do SO com GVNIC. Para criar a imagem do SO personalizado, use o comando gcloud compute images create. Por exemplo, o seguinte comando cria uma imagem do SO personalizada que suporta gVNIC e que se baseia numa imagem do SO específica.

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

    Substitua o seguinte:

    • IMAGE_NAME: o nome da imagem que quer criar
    • SOURCE_IMAGE: uma imagem de SO específica que suporta gVNIC, por exemplo: rocky-linux-8-optimized-gcp-v20220719

      Se quiser usar a imagem do SO mais recente numa família de imagens, substitua a flag --source-image pela flag --source-image-family e defina o respetivo valor para uma família de imagens que suporte 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 do SO Rocky Linux 8 otimizada para o Google Cloud SO com a imagem do SO mais recente da família de imagens do rocky-linux-8-optimized-gcpCompute 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 o artigo Práticas recomendadas para famílias de imagens.

REST

  1. Selecione uma imagem do SO ou uma família de imagens que suporte o gVNIC. Para mais informações, consulte os detalhes do sistema operativo.

  2. Usando a imagem do SO ou a família de imagens do SO selecionada no passo anterior, crie uma imagem do SO e etiquete-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 o seguinte:

    • PROJECT_ID: o ID do projeto no qual criar a nova imagem
    • IMAGE_NAME: um nome para a imagem personalizada
    • SOURCE_IMAGE_URI: o URI da imagem do SO ou da família de imagens específica que quer usar

      Por exemplo:

      • Imagem do SO específica: "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 especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO não descontinuada mais recente nessa família. Para mais informações sobre quando usar famílias de imagens, consulte as práticas recomendadas para famílias de imagens.

Crie uma VM com suporte de gVNIC

Pode criar uma VM com uma das imagens de SO públicas suportadas ou com uma imagem de SO personalizada que criou seguindo os passos descritos no artigo Crie uma imagem de SO personalizada que suporte gVNIC.

Opcionalmente, pode ativar o DPDK na VM para um processamento de pacotes de rede mais rápido, uma latência baixa e um desempenho consistente.

Para VMs que suportam várias interfaces de rede (NICs), pode ter NICs de diferentes tipos anexados à VM, uma vez que o suporte de interfaces é configurado por NIC. Embora seja suportada, não recomendamos esta configuração. Para VMs que suportam várias NICs, certifique-se de que especifica nic-type=GVNIC para cada interface de rede quando cria a VM.

Crie uma VM com uma imagem de SO pública

Para criar uma VM com uma imagem de SO pública que suporte a gVNIC, siga as instruções em Criar VMs e contentores com configuração de largura de banda elevada.

Crie uma VM com uma imagem de SO personalizada

Se não estiver a usar uma imagem do SO pública que suporte gVNIC, tem de criar primeiro uma imagem do SO personalizada que suporte gVNIC. Em seguida, usa essa imagem do SO personalizada para criar uma VM através da Google Cloud consola, da CLI do Google Cloud ou do REST.

Consola

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

  2. Introduza o Nome da instância de VM.

  3. Selecione a zona na qual quer criar a VM.

  4. Na secção Disco de arranque, clique em Alterar.

  5. No painel Disco de arranque, no separador Imagens personalizadas, conclua o seguinte:

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

    1. Expanda a secção Rede.
    2. Para Placa de rede, selecione gVNIC.
  7. Faça personalizações adicionais da VM, conforme necessário.

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

gcloud

  1. Crie a VM através do comando gcloud compute instances create. Para o disco de arranque, especifique a imagem do SO personalizada que criou anteriormente. Para a interface de rede, defina o valor da flag 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 o seguinte:

    • VM_NAME: o nome da nova VM.
    • ZONE: a zona na qual criar a VM.
    • MACHINE_TYPE: o tipo de máquina a usar quando criar a instância de VM. Se não especificar um tipo de máquina, o valor predefinido é n1-standard-1.
    • IMAGE_NAME: a imagem do SO criada no passo anterior.
    • YOUR_IMAGE_PROJECT: o nome do seu projeto que contém a imagem do SO.
  2. Opcional: verifique se o Compute Engine criou a VM e se o valor de nicType está definido como GVNIC.

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    Substitua o seguinte:

    • VM_NAME: o nome da VM.
    • ZONE: a zona em que 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 denominada 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
    

    Aspetos a considerar

    A flag --network-interface tem flags de subnível, como as seguintes:

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

    Para ver uma lista completa, consulte a flag --network-interface.

REST

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

  • Para o disco de arranque, especifique a imagem do SO personalizada que 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 o seguinte:

  • PROJECT_ID: o ID do projeto no qual criar a VM.
  • ZONE: a zona na qual criar a VM.
  • VM_NAME: o nome da nova VM.
  • NETWORK: o URL do recurso de rede para esta VM. Se nem a rede nem a sub-rede forem especificadas, é usada a rede predefinida global/networks/default.
  • SUBNET_NAME: nome da sub-rede. A rede é inferida a partir da sub-rede especificada. Este é um campo opcional.
  • YOUR_IMAGE_PROJECT: o nome do seu projeto que contém a imagem do SO.
  • IMAGE_NAME: a imagem do SO criada no passo anterior.

Verifique se o gVNIC está ativado

Linux

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 da VM do Linux, abra uma ligação SSH à VM e, em seguida, execute o seguinte comando:

sudo apt-get install lshw -y

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

sudo lshw -class network

O resultado é semelhante ao seguinte:

*-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 Gestor de dispositivos.
  2. Em Adaptadores de rede, deve ver: "Google Ethernet Adapter"

Resolução de problemas

Para resolver problemas da gVNIC, consulte o artigo Resolução de problemas da NIC virtual da Google.

O que se segue?