Teste uma largura de banda de rede mais elevada para instâncias de VM

Este documento explica como testar o desempenho de rede de nível 1 por VM criando duas VMs e fazendo streaming de tráfego em ambas as direções para observar o desempenho de rede. Para tirar partido desta funcionalidade, tem de criar a sua VM com sistemas operativos que suportem a NIC virtual da Google (gVNIC). O desempenho de rede de nível 1 por VM requer tamanhos de VM maiores, por isso, confirme que tem quota de CPU suficiente para criar as VMs.

Antes de começar

  • Certifique-se de que está a usar uma imagem pública que suporta gVNIC ou crie uma imagem personalizada no seu projeto.
  • Verifique se criou regras de firewall de VPC para permitir a entrada na porta TCP:5001 ou noutra porta à sua escolha, para permitir os iperftestes de desempenho.
  • Use a versão 2 do iPerf e não a versão 3 para realizar os testes de referência.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    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 e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

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

Configurar VMs para testes de referência

Crie duas máquinas com n2-standard-64 vCPU com o desempenho de rede de nível 1 por VM ativado e a definição da unidade de transmissão máxima (MTU) mais elevada. Isto dá às suas VMs uma largura de banda de saída máxima de 75 Gbps (com IPs internos).

gcloud

  1. Para criar uma imagem, use o comando gcloud compute images create.

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

    Substitua o seguinte:

    • PROJECT_ID: o nome do seu projeto.
    • IMAGE_NAME: o nome da imagem que quer criar.
    • SOURCE_IMAGE_FAMILY: versão necessária de uma imagem pública. Para este teste, use ubuntu-2004-lts.
    • SOURCE_IMAGE_PROJECT: o nome do projeto que contém a imagem de origem. Para este teste, use ubuntu-os-cloud.

    Exemplo

    gcloud compute images create benchmark-image-test \
      --project=my-project \
      --source-image-family=ubuntu-2004-lts \
      --source-image-project=ubuntu-os-cloud \
      --guest-os-features=GVNIC
    
  2. Crie uma rede VPC de modo automático que use a definição de MTU máxima:

      gcloud compute networks create NETWORK_NAME \
      --project=PROJECT_ID \
      --subnet-mode=AUTO --mtu=8896
    

    Substitua o seguinte:

    • PROJECT_ID: o nome do seu projeto.
    • NETWORK_NAME: um nome para a rede.
  3. Crie duas instâncias idênticas:

      gcloud compute instances create \
          VM_NAME_1 VM_NAME_2 \
          --project=PROJECT_ID \
          --zone=ZONE \
          --machine-type=n2-standard-64 \
          --image=projects/PROJECT_NAME/global/images/IMAGE_NAME \
          --network=NETWORK_NAME \
          --network-interface=nic-type=GVNIC \
          --network-performance-configs=total-egress-bandwidth-tier=TIER_1
    

    Substitua o seguinte:

    • VM_NAME_1, VM_NAME_2: os nomes das instâncias de VM que quer criar.
    • PROJECT_ID: o nome do seu projeto.
    • ZONE: a zona da sua MV. Ambas as VMs têm de residir na mesma zona.
    • PROJECT_NAME/global/images/IMAGE_NAME: o nome do projeto e o nome da imagem.
    • NETWORK_NAME: o nome da rede que configurou com a definição de MTU máxima.

Realizar o teste de referência

As duas VMs têm de estar na mesma zona e na mesma rede de VPC. Durante o teste de referência, estas duas VMs realizam testes bidirecionais do caminho da rede VPC.

Valide a definição de MTU

Confirme se a rede da nuvem virtual privada (VPC) tem a definição de MTU máxima configurada através de ifconfig no SO convidado de uma das VMs.

  1. Estabeleça ligação a uma das VMs.

  2. Na janela do terminal, execute o seguinte comando:

     /sbin/ifconfig | grep mtu
    

    A MTU comunicada deve ser 8896.

     ens4: flags=4163  mtu 8896
     lo: flags=73  mtu 65536
    

Valide a configuração da VM

Confirme se as máquinas virtuais têm a rede Tier_1 ativada examinando as propriedades da máquina virtual.

gcloud

Para ver as instâncias, use o comando gcloud compute instances describe.

gcloud compute instances describe VM_NAME_1 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"
gcloud compute instances describe VM_NAME_2 \
    --project=PROJECT_ID \
    --zone=ZONE \
    --format="text(networkPerformanceConfig)"

Substitua o seguinte:

  • VM_NAME_1: os nomes da instância de VM que quer ver.
  • VM_NAME_2: os nomes da instância de VM que quer ver.
  • PROJECT_ID: o nome do seu projeto.
  • ZONE: a zona da sua MV. Ambas as VMs têm de residir na mesma zona.

Na resposta, deve ver o seguinte:

networkPerformanceConfig.totalEgressBandwidthTier: TIER_1

Use o iPerf para realizar o teste de referência em sistemas baseados no Debian

gcloud

  1. Se ainda não o fez, conclua os passos em Configurar VMs para testes de referência.

  2. Depois de ambas as VMs estarem em execução, use o SSH para estabelecer ligação a uma das VMs.

    gcloud compute ssh VM_NAME_1 \
      --project=PROJECT_ID
    

    Substitua o seguinte:

    • VM_NAME_1: o nome da sua primeira VM.
    • PROJECT_ID: o nome do seu projeto.
  3. Na primeira VM, conclua os seguintes passos:

    1. Instale iperf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Obtenha o endereço IP interno desta VM. Anote o endereço IP interno para utilização posterior.

      ip a
      
    3. Inicie o servidor iPerf.

      iperf -s
      

      Isto inicia um servidor que ouve as ligações para realizar o teste de referência. Deixe o servidor iPerf em execução durante o teste.

  4. Num terminal de cliente separado, estabeleça ligação à segunda VM através de SSH.

    gcloud compute ssh VM_NAME_2 \
       --project=PROJECT_ID
    

    Substitua o seguinte:

    • VM_NAME_2: o nome da sua segunda VM.
    • PROJECT_ID: o nome do seu projeto.
  5. Na segunda VM, conclua os seguintes passos:

    1. Instale o iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Execute o teste iperf e especifique o endereço IP da primeira VM como destino.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Esta ação executa um teste de 30 segundos. Se o iPerf não conseguir alcançar a outra VM, pode ter de ajustar as definições de rede ou de firewall nas VMs ou, talvez, na consola Trusted Cloud .

      Os resultados devem ter um aspeto semelhante ao seguinte exemplo. Mostra o limite de largura de banda de saída de 75 Gbps para n2-standard-64 com a rede de nível 1 ativada, excedendo o limite de largura de banda de saída predefinido de 32 Gbps.

      ------------------------------------------------------------
      Client connecting to 10.128.0.10, TCP port 5001
      TCP window size: 1.59 MByte (default)
      ------------------------------------------------------------
      [ 12] local 10.128.0.11 port 57722 connected with 10.128.0.10 port 5001
      [ 11] local 10.128.0.11 port 57720 connected with 10.128.0.10 port 5001
      [ 16] local 10.128.0.11 port 57730 connected with 10.128.0.10 port 5001
      [  6] local 10.128.0.11 port 57710 connected with 10.128.0.10 port 5001
      [ 13] local 10.128.0.11 port 57724 connected with 10.128.0.10 port 5001
      [  8] local 10.128.0.11 port 57712 connected with 10.128.0.10 port 5001
      [  9] local 10.128.0.11 port 57716 connected with 10.128.0.10 port 5001
      [ 14] local 10.128.0.11 port 57726 connected with 10.128.0.10 port 5001
      [ 15] local 10.128.0.11 port 57728 connected with 10.128.0.10 port 5001
      [ 10] local 10.128.0.11 port 57718 connected with 10.128.0.10 port 5001
      [  4] local 10.128.0.11 port 57706 connected with 10.128.0.10 port 5001
      [  5] local 10.128.0.11 port 57708 connected with 10.128.0.10 port 5001
      [  3] local 10.128.0.11 port 57704 connected with 10.128.0.10 port 5001
      [ 17] local 10.128.0.11 port 57732 connected with 10.128.0.10 port 5001
      [  7] local 10.128.0.11 port 57714 connected with 10.128.0.10 port 5001
      [ 18] local 10.128.0.11 port 57734 connected with 10.128.0.10 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [ 12]  0.0-30.0 sec  7.63 GBytes  2.19 Gbits/sec
      [ 11]  0.0-30.0 sec  17.7 GBytes  5.07 Gbits/sec
      [ 16]  0.0-30.0 sec  9.15 GBytes  2.62 Gbits/sec
      [  6]  0.0-30.0 sec  43.8 GBytes  12.6 Gbits/sec
      [ 13]  0.0-30.0 sec  23.6 GBytes  6.76 Gbits/sec
      [  8]  0.0-30.0 sec  13.3 GBytes  3.80 Gbits/sec
      [  9]  0.0-30.0 sec  9.29 GBytes  2.66 Gbits/sec
      [ 14]  0.0-30.0 sec  19.6 GBytes  5.62 Gbits/sec
      [ 15]  0.0-30.0 sec  12.5 GBytes  3.58 Gbits/sec
      [ 10]  0.0-30.0 sec  11.1 GBytes  3.19 Gbits/sec
      [  4]  0.0-30.0 sec  19.0 GBytes  5.43 Gbits/sec
      [  5]  0.0-30.0 sec  7.32 GBytes  2.10 Gbits/sec
      [  3]  0.0-30.0 sec  8.78 GBytes  2.51 Gbits/sec
      [ 17]  0.0-30.0 sec  17.5 GBytes  5.02 Gbits/sec
      [  7]  0.0-30.0 sec  33.4 GBytes  9.57 Gbits/sec
      [ 18]  0.0-30.0 sec  7.64 GBytes  2.19 Gbits/sec
      [SUM]  0.0-30.0 sec   261 GBytes  74.9 Gbits/sec
      

Remova recursos após testes de referência

Remova os recursos que criou durante os testes de referência para evitar cobranças pela imagem e VMs adicionais.

gcloud

  1. Use o comando gcloud compute instances delete para remover as instâncias que criou para os testes de referência.

    gcloud compute instances delete \
      VM_NAME_1 VM_NAME_2 \
       --project=PROJECT_ID \
       --zone=ZONE
    

    Substitua o seguinte:

    • VM_NAME_1, VM_NAME_2: os nomes das duas instâncias de VM que quer eliminar.
    • PROJECT_ID: o nome do seu projeto.
    • ZONE: a zona da sua MV. Ambas as VMs devem estar na mesma zona.
  2. Use o comando gcloud compute networks delete para remover a rede que criou para testes de referência.

    gcloud compute networks delete NETWORK_NAME  \
       --project=PROJECT_ID
    

    Substitua o seguinte:

    • NETWORK_NAME: o nome da rede que quer eliminar.
    • PROJECT_ID: o nome do seu projeto.
  3. Use o comando gcloud compute images delete para remover a imagem que criou para os testes de referência.

     gcloud compute images delete IMAGE_NAME  \
        --project=PROJECT_ID
    

    Substitua o seguinte:

    • IMAGE_NAME: o nome da imagem que quer eliminar.
    • PROJECT_ID: o nome do seu projeto.

O que se segue?