Questo tutorial descrive come calcolare la velocità effettiva di rete, sia all'interno a Google Cloud e alle tue località cloud on-premise o di terze parti sono connessi tramite Cloud Interconnect. Questo documento descrive come analizzare di rete, vengono elencate le variabili che possono influire sulle prestazioni di rete e fornisce alcuni suggerimenti per la risoluzione dei problemi.
Limitazioni e considerazioni
- Si applicano le limitazioni di Cloud Interconnect. Per ulteriori informazioni, consulta Quote di Cloud Interconnect.
- Limiti NIC: Google Cloud utilizza la larghezza di banda di ogni macchina virtuale (VM), non per ogni interfaccia di rete (NIC) o indirizzo IP. Il tipo di macchina di una VM definisce la sua velocità in uscita massima; tuttavia, questa velocità può essere raggiunta solo in situazioni specifiche. Consulta questa tabella per il numero di vCPU per tipo di macchina.
Gli altri dispositivi presenti nel percorso (firewall, switch con buffer di piccole dimensioni e altri fornitori dispositivi) e le relative limitazioni. Per mitigare queste limitazioni, svolgi le seguenti attività.
- Raccogli le statistiche di rete su firewall e switch nel percorso.
- Per i test di Cloud Interconnect, ignora tutti i dispositivi tra l'host on-premise e il dispositivo Google Edge.
- Identifica e verifica tutti i dispositivi nel percorso tra la rete on-premise e la VM Google Cloud per verificare se possono essere la causa di problemi di throughput.
Panoramica degli strumenti per misurare la velocità effettiva di rete
Questo tutorial illustra l'uso dei seguenti strumenti per calcolare velocità effettiva di rete:
iPerf3: uno strumento di test della rete in grado di creano flussi di dati TCP/UDP (a thread singolo o multi-thread) e misurano della rete che li supporta.
Nota: iPerf3 è consigliato solo per macchine con una sola CPU.
Netperf: uno strumento simile a iPerf3, ma adatto per i test di throughput su istanze multi-CPU vincolate alla CPU su una singola CPU.
tcpdump: un pacchetto della riga di comando di analisi che acquisisce i dettagli dei pacchetti e le comunicazioni TCP/IP per la risoluzione dei problemi avanzata. Lo strumento tcpdump è compatibile con altri strumenti, come Wireshark.
Netstat: un'utilità di rete a riga di comando che mostra le connessioni di rete per il protocollo Transmission Control Protocol (sia in entrata che in uscita), le tabelle di routing e diverse interfacce di rete (controller di interfaccia di rete o interfaccia di rete definita dal software) e le statistiche dei protocolli di rete.
mtr: uno strumento di diagnostica di rete che esegue sia le funzioni traceroute che ping. Esegue sondaggi sui router sul percorso dell'itinerario limitando il numero di hop che i singoli pacchetti possono attraversare e ascolta le risposte relative alla loro scadenza.
Misura la velocità effettiva con iPerf3
Segui questa procedura per misurare la velocità effettiva da una singola istanza VM.
Scegli un tipo di macchina di grandi dimensioni
Per eseguire test della velocità effettiva, utilizza un tipo di macchina di grandi dimensioni, ad esempio n1-standard-8. Questo tipo di macchina offre un limite massimo di throughput in uscita di 16 Gbps, pertanto il throughput in uscita per VM non interferisce con i test.
Installa gli strumenti
Installa iPerf3, mtr, netstat e tcpdump su un'istanza VM Linux
Per le distribuzioni basate su Debian, esegui questi comandi:
sudo apt-get update sudo apt-get install iperf3 tcpdump mtr netstat
Per le distribuzioni basate su Redhat, esegui i seguenti comandi:
yum update yum install iperf3 tcpdump mtr netstat
Installa netperf
Per le distribuzioni basate su Debian, esegui i seguenti comandi:
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
Per le distribuzioni basate su Redhat, esegui questi comandi:
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
Esegui i test di prerequisito
- Assicurati che le dimensioni collegamento VLAN siano configurate correttamente. Per maggiori informazioni informazioni, consulta la sezione Modifica dei collegamenti VLAN.
- Su entrambe le estremità della connessione (ogni terminale), esegui il comando
top
ohtop
per monitorare l'utilizzo della CPU. Raccogli le statistiche di rete utilizzando il comando
netstat
prima di eseguire qualsiasi esame.netstat -s >> netstat.log
In un altro terminale, esegui il comando
tcpdump
prima di qualsiasi acquisizione con Valore parametrosnaplen
di128
.Esegui questo comando su entrambi gli endpoint.
sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
Ottieni le dimensioni della memoria in lettura e scrittura sugli host di origine e di destinazione.
$ 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
Esegui i test iperf3
A causa della limitazione di 3 Gbps per ogni flusso, ti consigliamo di eseguire più stream paralleli di test iperf3
. Ti consigliamo di eseguire almeno quattro test e un massimo di dieci per compensare le limitazioni della larghezza di banda e ottenere risultati utili.
In un altro terminale, esegui il server
iperf3
su un'estremità della connessione (una VM o un computer on-premise). Più stream richiedono piùiperf3
server.Esegui lo strumento iPerf3 con il flag
udp
per il test di Cloud Interconnect. Se si ottiene la velocità effettiva desiderata con UDP, è necessario eseguire ulteriori passaggi per la risoluzione dei problemi.Per eseguire più server
iperf3
dalla riga di comando, esegui questo comando :$ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s -p 5103 &
Utilizza il seguente script bash per eseguire più server 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
Per impostazione predefinita, iperf3 client
viene eseguito per 10 secondi, il che potrebbe non essere sufficiente per
tramite TCP per raggiungere la velocità effettiva massima. Imposta il valore DURATION
su almeno 30 secondi per ottenere risultati più affidabili.
iperf3 -c [server IP address] -P [THREADS] -t [DURATION]
Script bash per eseguire più stream 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 per eseguire più stream 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
Durante l'esecuzione del test iperf3
, monitora il carico della CPU su entrambi i dispositivi.
Se il carico della CPU è vicino al 100%, la CPU è un collo di bottiglia per un thread iperf3.
In questo caso, utilizza lo strumento Netperf, che supporta più CPU.
Se non riesci a eseguire Netperf, puoi avviare più server iPerf3 e client su terminali e porte diverse contemporaneamente.
Analizzare i risultati del test
Segui questi passaggi.
- Controlla i risultati del client
iperf3
per verificare la presenza di larghezza di banda e perdita di pacchetti. - Controlla i risultati del server
iperf3
per verificare la presenza di pacchetti fuori ordine. Esegui l'analisi dell'acquisizione dei pacchetti. Esegui questo comando per convertire il file pcap in un file di testo.
tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
Esegui questo comando per ottenere il totale dei pacchetti e non nell'ordine e pacchetti.
grep -e "Total" -A1 pcap [TXT-FILENAME]
L'output è il seguente:
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
La seguente analisi mostra la perdita di pacchetti durante un test delle prestazioni:
$ grep -e "Total" -A1 onPrem-send-*.txt
L'output è il seguente:
"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
Accedi alla pagina del dispositivo per verificare la velocità effettiva della porta.
Se l'output
netstat
mostra errori di lettura/scrittura, l'ottimizzazione collettiva del flusso TCP/UDP potrebbe essere necessario.Se sono presenti pacchetti non in ordine, le acquisizioni di pacchetti devono essere nei gateway VPN per ulteriori analisi. Per ulteriori informazioni su come eseguire acquisizioni di pacchetti nei gateway VPN, apri una richiesta di assistenza.
Se il test UDP
iperf3
raggiunge la velocità effettiva desiderata, il problema deve essere altrove e potrebbe essere necessaria l'ottimizzazione TCP.