Calcola la velocità effettiva di rete su Interconnect

Questo tutorial descrive come calcolare la velocità effettiva di rete, sia all'interno di Google Cloud sia nelle località cloud on-premise o di terze parti connesse tramite Cloud Interconnect. Questo documento descrive come analizzare i risultati, elenca le variabili che possono influire sulle prestazioni della rete e fornisce alcuni suggerimenti per la risoluzione dei problemi.

Limitazioni e considerazioni

  • Si applicano limitazioni di Cloud Interconnect. Per maggiori informazioni, consulta Quote di Cloud Interconnect.
  • Limiti NIC: Google Cloud prende in considerazione la larghezza di banda di ogni istanza di macchina virtuale (VM), non per ogni interfaccia di rete (NIC) o indirizzo IP. Il tipo di macchina di una VM definisce la velocità massima in uscita, ma può essere raggiunta solo in situazioni specifiche. Consulta questa tabella per il numero di vCPU per tipo di macchina.
  • Si applicano altri dispositivi nel percorso (firewall, switch con buffer piccoli e dispositivi di altri fornitori) con le relative limitazioni. Esegui le seguenti attività per mitigare queste limitazioni.

    • Raccogli statistiche di rete sui firewall e sugli switch presenti nel percorso.
    • Per i test di Cloud Interconnect, ignora il maggior numero possibile di dispositivi tra l'host on-premise e il dispositivo Edge Google.
    • Identifica e verifica tutti i dispositivi nel percorso tra la rete on-premise e la VM Google Cloud se possono essere l'origine di problemi di velocità effettiva.

Panoramica degli strumenti per la misurazione della velocità effettiva di rete

Questo tutorial illustra l'utilizzo dei seguenti strumenti per il calcolo della velocità effettiva di rete:

  • iPerf3: uno strumento di test della rete in grado di creare stream di dati TCP/UDP (singoli o multi-thread) e di misurare la velocità effettiva della rete che li trasferisce.

    Nota: iPerf3 è consigliato solo per le macchine con CPU singola.

  • Netperf: uno strumento simile a iPerf3 ma appropriato per i test della velocità effettiva su istanze multi-CPU associate alla CPU su una singola CPU.

  • tcpdump: un analizzatore di pacchetti a riga di comando che acquisisce i dettagli dei pacchetti e le comunicazioni TCP/IP per risolvere problemi più avanzati. Lo strumento tcpdump è compatibile con altri strumenti, come Wireshark.

  • Netstat: un'utilità di rete a riga di comando che visualizza le connessioni di rete per Transmission Control Protocol (in entrata e in uscita), tabelle di routing e diverse interfacce di rete (controller di interfaccia di rete o interfaccia di rete software-defined) e statistiche sui protocolli di rete.

  • mtr: uno strumento di diagnostica di rete che esegue le funzioni trackroute e ping. Testa i router sul percorso delle route limitando il numero di hop che i singoli pacchetti possono attraversare e ascolta le risposte della 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 i test della velocità effettiva, utilizza un tipo di macchina di grandi dimensioni, come n1-standard-8. Questo tipo di macchina offre un limite massimo di velocità effettiva in uscita di 16 Gbps, quindi la velocità effettiva in uscita per VM non interferisce con i test.

Installa gli strumenti

Installare 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 questi comandi:

    yum update
    yum install iperf3 tcpdump mtr netstat

Installa netperf

Per le distribuzioni basate su Debian, esegui questi 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 dei prerequisiti

  1. Assicurati che le dimensioni collegamento VLAN siano configurate correttamente. Per ulteriori informazioni, consulta Modificare i collegamenti VLAN.
  2. Su entrambe le estremità della connessione (ogni terminale), esegui il comando top o htop per monitorare l'utilizzo della CPU.
  3. Raccogli le statistiche di rete utilizzando il comando netstat prima di eseguire qualsiasi test.

    netstat -s >> netstat.log
    
  4. In un altro terminale, esegui il comando tcpdump prima di qualsiasi acquisizione con il valore parametro snaplen di 128.

    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
    
  5. Ottieni le dimensioni della memoria di 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ù flussi paralleli di test iperf3. Ti consigliamo di eseguire un minimo di quattro test e un massimo di dieci per compensare le limitazioni della larghezza di banda e ottenere risultati utili.

  1. In un altro terminale, esegui il server iperf3 su un'estremità della connessione (una VM o una macchina on-premise). Più stream richiedono più server iperf3.

  2. Esegui lo strumento iPerf3 con il flag udp per i test di Cloud Interconnect. Se viene raggiunta la velocità effettiva desiderata con UDP, devi eseguire ulteriori passaggi per la risoluzione dei problemi.

  3. Per eseguire più server iperf3 dalla riga di comando, esegui questi comandi:

    $ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s  -p 5103 &
    
  4. 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, che potrebbe non essere sufficiente per consentire a TCP di 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ù flussi iperf3 UDP

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ù flussi 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

Mentre il test iperf3 è in esecuzione, 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, usa lo strumento Netperf, perché supporta più CPU.

Se non puoi eseguire Netperf, puoi avviare più server e client iPerf3 su diversi terminali e porte contemporaneamente.

Analizzare i risultati del test

Procedi come descritto di seguito.

  1. Controlla i risultati del client iperf3 per verificare la larghezza di banda e la perdita di pacchetti.
  2. Controlla i risultati del server di iperf3 per verificare la presenza di pacchetti non in ordine.
  3. 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
    
  4. Esegui questo comando per ottenere il totale dei pacchetti e dei pacchetti non disponibili.

    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
    
  5. Accedi alla pagina del dispositivo per verificare la velocità effettiva della porta.

  6. Se l'output netstat mostra errori di lettura/scrittura, potrebbe essere necessaria l'ottimizzazione del flusso collettivo TCP/UDP.

  7. Se sono presenti pacchetti non in ordine, le acquisizioni devono essere eseguite nei gateway VPN per ulteriori analisi. Per ulteriori informazioni sull'esecuzione dell'acquisizione di pacchetti nei gateway VPN, apri una richiesta di assistenza.

  8. Se il test UDP iperf3 raggiunge la velocità effettiva desiderata, il problema deve trovarsi altrove e potrebbe essere necessaria l'ottimizzazione TCP.