Neste tutorial, descrevemos como calcular a capacidade da rede, tanto no Google Cloud quanto nos locais de nuvem terceirizados ou no local que estão conectados por meio do Cloud Interconnect. Neste documento, descrevemos como analisar os resultados, listamos as variáveis que podem afetar o desempenho da rede e fornecemos algumas dicas de solução de problemas.
Limitações e considerações
- Limitações do Cloud Interconnect são aplicáveis. Para mais informações, consulte Cotas do Cloud Interconnect.
- Limites da NIC: o Google Cloud é responsável pela 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 taxa máxima de saída dela. 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.
Outros dispositivos no caminho (firewall, chaves com buffers pequenos e dispositivos de outros fornecedores) e as respectivas limitações são aplicados. Realize as tarefas a seguir para atenuar essas limitações.
- Reúna as estatísticas de rede nos firewalls e interruptores no caminho.
- Para testar o Cloud Interconnect, ignore o máximo de dispositivos possível entre o host local e o dispositivo Google Edge.
- Identifique e verifique todos os dispositivos no caminho entre a rede local e a VM do Google Cloud se eles puderem ser a fonte de problemas de capacidade.
Visão geral de ferramentas para medir a capacidade da rede
Neste tutorial, demonstramos o uso das seguintes ferramentas para calcular a capacidade da rede:
iPerf3: uma ferramenta de teste de rede que pode criar streams de dados TCP/UDP (única ou várias linhas de execução) e medir a capacidade da rede que as transporta.
Observação: o iPerf3 é recomendado apenas para máquinas com uma única CPU.
Netperf: uma ferramenta semelhante ao iPerf3, mas adequada para testes de capacidade em instâncias de várias CPUs vinculadas à CPU em uma única CPU.
tcpdump: um analisador de pacotes de linha de comando que captura detalhes de pacotes e comunicações TCP/IP para solucionar problemas mais avançados. A ferramenta tcpdump é compatível com outras ferramentas, como o Wireshark.
Netstat: um utilitário de rede de linha de comando que exibe conexões de rede para o protocolo de controle de transmissão (de entrada e saída), tabelas de roteamento e várias interfaces de rede (controlador da interface de rede). ou interface de rede definida por software) e estatísticas de protocolo de rede.
mtr: uma ferramenta de diagnóstico de rede que realiza funções de traceroute e ping. Ele analisa os roteadores no caminho de rota limitando o número de saltos que os pacotes individuais podem percorrer e detecta as respostas de expiração.
Meça a capacidade com o iPerf3
Siga este procedimento para medir a capacidade de uma única instância de VM.
Escolha um tipo de máquina grande
Para realizar testes de capacidade, use um tipo de máquina grande, como n1-standard-8. Esse tipo de máquina fornece um limite máximo de capacidade de saída de 16 Gbps. Portanto, a capacidade de saída por VM não interfere nos testes.
Instalar as ferramentas
Instalar o iPerf3, mtr, netstat e tcpdump em uma 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 em Redhat, execute os seguintes comandos:
yum update yum install iperf3 tcpdump mtr netstat
Instalar 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 em 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
Executar os testes de pré-requisito
- Verifique se os tamanhos dos anexos da VLAN estão configurados corretamente. Para mais informações, consulte Como modificar anexos da VLAN.
- Em ambas as extremidades da conexão (cada terminal), execute o comando
top
ouhtop
para monitorar o uso da CPU. Reúna as estatísticas de rede usando o comando
netstat
antes de executar qualquer teste.netstat -s >> netstat.log
Em outro terminal, execute o comando
tcpdump
antes de qualquer captura com o valor de parâmetrosnaplen
de128
.Execute este comando nos dois endpoints.
sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
Consulte o tamanho da memória de leitura e gravação nos hosts de origem e 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
Executar os testes do iperf3
Devido à limitação de 3 Gbps para cada fluxo, recomendamos executar
vários streams paralelos de testes iperf3
. Recomendamos que você execute
no mínimo quatro testes e no máximo dez testes para compensar as limitações de largura de banda
e receber resultados úteis.
Em outro terminal, execute o servidor
iperf3
em uma extremidade da conexão (uma VM ou uma máquina local). Vários streams exigem vários servidoresiperf3
.Execute a ferramenta iPerf3 com a sinalização
udp
para testes do Cloud Interconnect. Se a capacidade desejada com UDP for alcançada, você precisará realizar mais etapas de solução de problemas.Para executar os vários servidores
iperf3
a partir da linha de comando, execute os seguintes comandos:$ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s -p 5103 &
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
O iperf3 client
é executado por 10 segundos por padrão, o que pode não ser suficiente
para que o TCP atinja a capacidade máxima. Defina o valor DURATION
como
pelo menos 30 segundos para alcançar resultados mais confiáveis.
iperf3 -c [server IP address] -P [THREADS] -t [DURATION]
Script Bash para executar vários 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ários fluxos 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, monitore a carga da CPU nos dois dispositivos.
Se a carga da CPU estiver próxima de 100%, ela será um gargalo para uma linha de execução iperf3.
Nesse caso, use a ferramenta Netperf, que é compatível com várias CPUs.
Se você não puder executar o Netperf, poderá iniciar vários servidores iPerf3 e clientes em terminais e portas diferentes simultaneamente.
Analisar os resultados do teste
Siga as etapas abaixo
- Verifique os resultados do cliente
iperf3
em busca de largura de banda e perda de pacotes. - Verifique se há pacotes fora de ordem nos resultados do servidor
iperf3
. Realize a análise de captura de pacotes. Execute o comando a seguir para converter o arquivo pcap em um arquivo de texto.
tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
Execute o seguinte comando para ver o total de pacotes e pacotes fora de ordem.
grep -e "Total" -A1 pcap [TXT-FILENAME]
A saída é esta:
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 a seguir mostra a perda de pacotes durante um teste de desempenho:
$ grep -e "Total" -A1 onPrem-send-*.txt
A saída é esta:
"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
Acesse a página do dispositivo para verificar a capacidade da porta.
Se a saída
netstat
mostrar erros de leitura/gravação, o ajuste do fluxo em massa TCP/UDP poderá ser necessário.Se houver pacotes fora de ordem, as capturas de pacote precisarão ser realizadas nos gateways da VPN para análise mais detalhada. Para mais informações sobre como realizar capturas de pacotes nos gateways de VPN, abra um caso de suporte.
Se o teste UDP
iperf3
alcançar a capacidade desejada, o problema precisará estar em outro lugar e o ajuste TCP poderá ser necessário.