Calcule o débito da rede através da interligação

Este tutorial descreve como calcular a taxa de transferência da rede, tanto dentro Google Cloud como para as suas localizações no local ou na nuvem de terceiros que estão ligadas através do Cloud Interconnect. Este documento descreve como analisar os resultados, enumera as variáveis que podem afetar o desempenho da rede e fornece algumas dicas de resolução de problemas.

Limitações e considerações

  • Aplicam-se limitações do Cloud Interconnect. Para mais informações, consulte as cotas do Cloud Interconnect.
  • Limites da NIC: Google Cloud tem em conta a largura de banda de cada instância de máquina virtual (VM) e não de cada interface de rede (NIC) ou endereço IP. O tipo de máquina de uma VM define a respetiva taxa de saída máxima. No entanto, essa taxa só pode ser alcançada em situações específicas. Consulte esta tabela para ver o número de vCPUs por tipo de máquina.
  • Aplicam-se outros dispositivos no caminho (firewall, comutadores com pequenos buffers e dispositivos de outros fornecedores) e as respetivas limitações. Realize as seguintes tarefas para mitigar essas limitações.

    • Recolher estatísticas de rede em firewalls e comutadores no caminho.
    • Para os testes do Cloud Interconnect, contorne o maior número possível de dispositivos entre o anfitrião nas instalações e o dispositivo de limite da Google.
    • Identifique e valide todos os dispositivos no caminho entre a rede no local e a VM se puderem ser a origem de problemas de débito. Google Cloud

Vista geral das ferramentas para medir a taxa de transferência da rede

Este tutorial demonstra a utilização das seguintes ferramentas para calcular a taxa de transferência da rede:

  • iPerf3: uma ferramenta de teste de rede que pode criar fluxos de dados TCP/UDP (de um ou vários processos) e medir a taxa de transferência da rede que os transporta.

    Nota: o iPerf3 é recomendado apenas para máquinas com uma única CPU.

  • Netperf: uma ferramenta semelhante ao iPerf3, mas adequada para testes de débito em instâncias com várias CPUs que estão limitadas pela CPU numa única CPU.

  • tcpdump: um analisador de pacotes de linha de comandos que captura detalhes dos pacotes e comunicações TCP/IP para uma resolução de problemas mais avançada. A ferramenta tcpdump é compatível com outras ferramentas, como o Wireshark.

  • Netstat: um utilitário de rede de linha de comandos que apresenta ligações de rede para o Protocolo de controlo de transmissão (tanto de entrada como de saída), tabelas de encaminhamento e várias estatísticas de protocolos de rede e de interface de rede (controlador de interface de rede ou interface de rede definida por software).

  • mtr: uma ferramenta de diagnóstico de rede que executa as funções traceroute e ping. Sonda os routers no caminho do trajeto limitando o número de saltos que os pacotes individuais podem atravessar e ouve as respostas da respetiva expiração.

Meça a taxa de transferência com o iPerf3

Siga este procedimento para medir a taxa de transferência de uma única instância de VM.

Escolha um tipo de máquina grande

Para realizar testes de débito, use um tipo de máquina grande, como n1-standard-8. Este tipo de máquina oferece um limite máximo de débito de saída de 16 Gbps, pelo que o débito de saída por VM não interfere com os testes.

Instale as ferramentas

Instale o iPerf3, o mtr, o netstat e o tcpdump numa instância de VM do Linux

Para distribuições baseadas em Debian, execute os seguintes comandos:

    sudo apt-get update
    sudo apt-get install iperf3 tcpdump mtr netstat

Para distribuições baseadas no Redhat, execute os seguintes comandos:

    yum update
    yum install iperf3 tcpdump mtr netstat

Instale o netperf

Para distribuições baseadas em Debian, execute os seguintes comandos:

    sudo apt-get install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

Para distribuições baseadas no Redhat, execute os seguintes comandos:

    sudo yum install git build-essential autoconf texinfo -y
    git clone https://github.com/HewlettPackard/netperf.git
    cd netperf
    ./autogen.sh
    ./configure --enable-histogram --enable-demo=yes
    make
    cp src/netserver ~/.local/bin
    cp src/netperf ~/.local/bin

Execute os testes de pré-requisitos

  1. Certifique-se de que os tamanhos das associações de VLAN estão configurados corretamente. Para mais informações, consulte o artigo Modificar associações de VLANs.
  2. Em ambas as extremidades da ligação (cada terminal), execute o comando top ou htop para monitorizar a utilização da CPU.
  3. Recolha estatísticas da rede através do comando netstat antes de executar quaisquer testes.

    netstat -s >> netstat.log
    
  4. Noutro terminal, execute o comando tcpdump antes de qualquer captura com o valor do parâmetro snaplen de 128.

    Execute este comando em ambos os pontos finais.

    sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
    
  5. Obtenha o tamanho da memória de leitura e escrita nos anfitriões de origem e de destino.

    $ sysctl net.ipv4.tcp_rmem
    $ sysctl net.ipv4.tcp_wmem
    $ sysctl net.core.rmem_max
    $ sysctl net.core.rmem_default
    $ net.core.wmem_max
    $ net.core.wmem_default
    $ uname -r
    $ cat /etc/os-release
    

Execute os testes iperf3

Devido à limitação de 3 Gbps para cada fluxo, recomendamos que execute vários fluxos paralelos de testes iperf3. Recomendamos que execute, no mínimo, quatro testes e, no máximo, dez testes para compensar as limitações de largura de banda e obter resultados úteis.

  1. Noutro terminal, execute o servidor iperf3 numa extremidade da ligação (uma VM ou uma máquina no local). Vários streams requerem vários iperf3 servidores.

  2. Execute a ferramenta iPerf3 com a flag udp para testar o Cloud Interconnect. Se a taxa de transferência pretendida com UDP for alcançada, tem de executar passos de resolução de problemas adicionais.

  3. Para executar os vários servidores iperf3 a partir da linha de comandos, execute os seguintes comandos:

    $ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s  -p 5103 &
    
  4. Use o seguinte script bash para executar vários servidores iperf3:

    #!/bin/bash
    #start iperf3 server running in background
    
    for i in `seq 0 9`;
    do
            iperf3 -s  -B 10.0.100.35 -t 30 -u -p 521$i &
    done
    

Por predefinição, o iperf3 client é executado durante 10 segundos, o que pode não ser suficiente para o TCP atingir o débito máximo. Defina o valor de DURATION para, pelo menos, 30 segundos para alcançar resultados mais fiáveis.

    iperf3 -c [server IP address] -P [THREADS] -t [DURATION]

Script Bash para executar várias streams UDP iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -u -b 1G  -l 1390 -t10 -p 521$i    &

done

Script Bash para executar várias streams TCP iperf3

echo "UDP iperf test - 10 streams"
for i in `seq 0 9`;
do
       iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -b 1G  -l 1390 -t10 -p 521$i    &

done

Enquanto o teste iperf3 estiver em execução, monitorize a carga da CPU em ambos os dispositivos. Se a carga da CPU estiver perto de 100%, a CPU é um gargalo para um segmento do iperf3. Neste caso, use a ferramenta Netperf, porque suporta várias CPUs.

Se não conseguir executar o Netperf, pode iniciar vários servidores e clientes iPerf3 em diferentes terminais e portas em simultâneo.

Analise os resultados do teste

Execute os seguintes passos.

  1. Verifique os resultados do cliente iperf3 quanto à largura de banda e à perda de pacotes.
  2. Verifique os resultados do servidor iperf3 para ver se existem pacotes desordenados.
  3. Realizar a análise de captura de pacotes. Execute o seguinte comando para converter o ficheiro pcap num ficheiro de texto.

    tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
    
  4. Execute o seguinte comando para obter o total de pacotes e pacotes fora de ordem.

    grep -e "Total" -A1 pcap [TXT-FILENAME]
    

    O resultado é o seguinte:

    gcpvm-send-5210.txt:Total UDP packets: 874032
    gcpvm-send-5210.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5211.txt:Total UDP packets: 791218
    gcpvm-send-5211.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5212.txt:Total UDP packets: 961510
    gcpvm-send-5212.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5213.txt:Total UDP packets: 961517
    gcpvm-send-5213.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5214.txt:Total UDP packets: 961501
    gcpvm-send-5214.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5215.txt:Total UDP packets: 961521
    gcpvm-send-5215.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5216.txt:Total UDP packets: 889932
    gcpvm-send-5216.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5217.txt:Total UDP packets: 961483
    gcpvm-send-5217.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5218.txt:Total UDP packets: 961479
    gcpvm-send-5218.txt:Total out-of-order packets: 0, missing packets: 0
    gcpvm-send-5219.txt:Total UDP packets: 961518
    gcpvm-send-5219.txt:Total out-of-order packets: 0, missing packets: 0
    

    A análise seguinte mostra a perda de pacotes durante um teste de desempenho:

    $ grep -e "Total" -A1 onPrem-send-*.txt
    

    O resultado é o seguinte:

    "Total" -A1 onPrem-send-*.txt
    onPrem-send-5210.txt:Total UDP packets: 858698
    onPrem-send-5210.txt:Total out-of-order packets: 0, missing packets: 5408
    --
    onPrem-send-5211.txt:Total UDP packets: 857667
    onPrem-send-5211.txt:Total out-of-order packets: 0, missing packets: 4929
    --
    onPrem-send-5212.txt:Total UDP packets: 857126
    onPrem-send-5212.txt:Total out-of-order packets: 0, missing packets: 5349
    --
    onPrem-send-5213.txt:Total UDP packets: 857424
    onPrem-send-5213.txt:Total out-of-order packets: 0, missing packets: 5495
    --
    onPrem-send-5214.txt:Total UDP packets: 857139
    onPrem-send-5214.txt:Total out-of-order packets: 0, missing packets: 4692
    --
    onPrem-send-5215.txt:Total UDP packets: 857175
    onPrem-send-5215.txt:Total out-of-order packets: 0, missing packets: 4789
    --
    onPrem-send-5216.txt:Total UDP packets: 857104
    onPrem-send-5216.txt:Total out-of-order packets: 0, missing packets: 5196
    --
    onPrem-send-5217.txt:Total UDP packets: 857122
    onPrem-send-5217.txt:Total out-of-order packets: 0, missing packets: 5423
    --
    onPrem-send-5218.txt:Total UDP packets: 857383
    onPrem-send-5218.txt:Total out-of-order packets: 0, missing packets: 5283
    --
    onPrem-send-5219.txt:Total UDP packets: 857313
    onPrem-send-5219.txt:Total out-of-order packets: 0, missing packets: 4934
    
  5. Aceda à página do dispositivo para verificar a taxa de transferência da porta.

  6. Se o resultado de netstat mostrar erros de leitura/escrita, pode ser necessário ajustar o fluxo em massa de TCP/UDP.

  7. Se existirem pacotes fora de ordem, as capturas de pacotes devem ser efetuadas nos gateways de VPN para análise mais detalhada. Para mais informações sobre como realizar capturas de pacotes nos gateways de VPN, abra um registo de apoio técnico.

  8. Se o teste UDP iperf3 atingir o débito pretendido, o problema tem de estar noutro local e pode ser necessária a otimização do TCP.