Netzwerkdurchsatz über Interconnect berechnen

In dieser Anleitung wird beschrieben, wie Sie den Netzwerkdurchsatz berechnen, sowohl innerhalb von Google Cloud als auch zu Ihren lokalen oder Drittanbieter-Cloud-Standorten, die über Cloud Interconnect verbunden sind. In diesem Dokument wird beschrieben, wie Sie Ergebnisse analysieren, welche Variablen sich auf die Netzwerkleistung auswirken können und welche Tipps zur Fehlerbehebung es gibt.

Einschränkungen und Überlegungen

  • Es gelten die Einschränkungen für Cloud Interconnect. Weitere Informationen finden Sie unter Cloud Interconnect-Kontingente.
  • NIC-Limits: Google Cloud berücksichtigt die Bandbreite jeder VM-Instanz, nicht für jede Netzwerkschnittstelle (NIC) oder IP-Adresse. Der Maschinentyp einer VM definiert seine maximale Rate für ausgehenden Traffic. Diese Rate kann jedoch nur in bestimmten Situationen erreicht werden. Die Anzahl der vCPUs pro Maschinentyp finden Sie in dieser Tabelle.
  • Andere Geräte im Pfad (Firewall, Switch mit kleinen Zwischenspeichern und Geräte anderer Anbieter) und ihre Einschränkungen gelten. Führen Sie die folgenden Aufgaben aus, um diese Einschränkungen zu verringern.

    • Erfassen Sie Netzwerkstatistiken zu Firewalls und Switches im Pfad.
    • Um Cloud Interconnect zu testen, umgehen Sie so viele Geräte wie möglich zwischen dem lokalen Host und dem Google Edge-Gerät.
    • Identifizieren und prüfen Sie alle Geräte im Pfad zwischen dem lokalen Netzwerk und der Google Cloud-VM darauf, ob sie die Ursache für Durchsatzprobleme sein können.

Übersicht über Tools zur Messung des Netzwerkdurchsatzes

In dieser Anleitung werden die folgenden Tools zur Berechnung des Netzwerkdurchsatzes veranschaulicht:

  • iPerf3: Ein Netzwerktesttool, das TCP/UDP-Datenströme (mit einzelnen oder mehreren Threads) erstellen und den Durchsatz des Netzwerks messen kann, in dem sie fließen.

    Hinweis: iPerf3 wird nur für Maschinen mit einer einzelnen CPU empfohlen.

  • Netperf: Ein Tool, das iPerf3 ähnelt, aber für Durchsatztests von Instanzen mit mehreren CPUs geeignet ist, die auf einer einzelnen CPU CPU-gebunden sind.

  • tcpdump: Ein Befehlszeilen-Paketanalysator, der Paketdetails und TCP/IP-Kommunikation für eine erweiterte Fehlerbehebung erfasst. Das Tool „tcpdump“ ist mit anderen Tools wie Wireshark kompatibel.

  • Netstat: Ein Befehlszeilen-Netzwerkdienstprogramm, das Netzwerkverbindungen für das Transmission Control Protocol (eingehend und ausgehend), Routingtabellen und mehrere Netzwerkschnittstellen (Netzwerkschnittstellen-Controller oder softwarebasierte Netzwerkschnittstellen) und Netzwerkprotokollstatistiken anzeigt.

  • mtr: Ein Netzwerkdiagnosetool, das sowohl Traceroute- als auch Ping-Funktionen ausführt. Es prüft Router auf dem Routenpfad, indem die Anzahl der Hops begrenzt wird, die einzelne Pakete durchlaufen können, und überwacht die Antworten auf ihr Ablaufdatum.

Durchsatz mit iPerf3 messen

Führen Sie diese Schritte aus, um den Durchsatz einer einzelnen VM-Instanz zu messen.

Großen Maschinentyp auswählen

Verwenden Sie einen großen Maschinentyp wie n1-standard-8, um Durchsatztests auszuführen. Dieser Maschinentyp bietet ein maximales Durchsatzlimit für ausgehenden Traffic von 16 Gbit/s, sodass der Durchsatz von ausgehendem Traffic pro VM nicht die Tests beeinträchtigt.

Tools installieren

iPerf3, mtr, netstat und tcpdump auf einer Linux-VM-Instanz installieren

Führen Sie für Debian-basierte Distributionen die folgenden Befehle aus:

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

Führen Sie für Redhat-basierte Distributionen die folgenden Befehle aus:

    yum update
    yum install iperf3 tcpdump mtr netstat

netperf installieren

Führen Sie für Debian-basierte Distributionen die folgenden Befehle aus:

    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

Führen Sie für Redhat-basierte Distributionen die folgenden Befehle aus:

    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

Erforderliche Tests ausführen

  1. Achten Sie darauf, dass die Größen der VLAN-Anhänge richtig konfiguriert sind. Weitere Informationen finden Sie unter VLAN-Anhänge ändern.
  2. Führen Sie an beiden Enden der Verbindung (jedem Terminal) den Befehl top oder htop aus, um die CPU-Nutzung zu überwachen.
  3. Erfassen Sie mit dem Befehl netstat Netzwerkstatistiken, bevor Sie Tests ausführen.

    netstat -s >> netstat.log
    
  4. Führen Sie in einem anderen Terminal den Befehl tcpdump vor jeder Erfassung mit dem snaplen-Parameterwert von 128 aus.

    Führen Sie diesen Befehl auf beiden Endpunkten aus.

    sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
    
  5. Rufen Sie die Größe des Lese- und Schreibspeichers auf den Quell- und Zielhosts ab.

    $ 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
    

iperf3-Tests ausführen

Aufgrund der Beschränkung auf 3 Gbit/s pro Datenfluss empfehlen wir, mehrere parallele Streams von iperf3-Tests auszuführen. Wir empfehlen, mindestens vier und maximal zehn Tests auszuführen, um die Bandbreitenbeschränkungen auszugleichen und nützliche Ergebnisse zu erhalten.

  1. Führen Sie in einem anderen Terminal iperf3-Server an einem Ende der Verbindung aus (auf einer VM oder einem lokalen Computer). Für mehrere Streams sind mehrere iperf3-Server erforderlich.

  2. Führen Sie das iPerf3-Tool mit dem Flag udp zum Testen von Cloud Interconnect aus. Wenn der gewünschte Durchsatz mit UDP erreicht wird, müssen Sie weitere Schritte zur Fehlerbehebung ausführen.

  3. Führen Sie die folgenden Befehle aus, um die mehreren iperf3-Server über die Befehlszeile auszuführen:

    $ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s  -p 5103 &
    
  4. Verwenden Sie das folgende Bash-Skript, um mehrere iperf3-Server auszuführen:

    #!/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
    

Die iperf3 client läuft standardmäßig 10 Sekunden, was möglicherweise nicht ausreicht, damit TCP den maximalen Durchsatz erreicht. Legen Sie den Wert für DURATION auf mindestens 30 Sekunden fest, um zuverlässigere Ergebnisse zu erzielen.

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

Bash-Skript zum Ausführen mehrerer iperf3-UDP-Streams

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

Bash-Skript zum Ausführen mehrerer iperf3-TCP-Streams

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

Beobachten Sie während des iperf3-Tests die CPU-Auslastung auf beiden Geräten. Wenn die CPU-Auslastung fast 100 % beträgt, ist die CPU ein Engpass für einen iperf3-Thread. Verwenden Sie in diesem Fall das Netperf-Tool, da es mehrere CPUs unterstützt.

Wenn Sie Netperf nicht ausführen können, können Sie mehrere iPerf3-Server und ‑Clients auf verschiedenen Terminals und Ports gleichzeitig starten.

Testergebnisse analysieren

Führen Sie die folgenden Schritte aus.

  1. Prüfen Sie die iperf3-Clientergebnisse auf Bandbreite und Paketverlust.
  2. Prüfen Sie die iperf3-Serverergebnisse auf fehlerhafte Pakete.
  3. Führen Sie eine Paketerfassungsanalyse durch. Führen Sie den folgenden Befehl aus, um die pcap-Datei in eine Textdatei zu konvertieren.

    tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
    
  4. Führen Sie den folgenden Befehl aus, um die Gesamtzahl der Pakete und fehlerhaften Pakete zu erhalten.

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

    Die Ausgabe sieht so aus:

    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
    

    Die folgende Analyse zeigt Paketverluste während eines Leistungstests:

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

    Die Ausgabe sieht so aus:

    "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. Rufen Sie die Geräteseite auf, um den Portdurchsatz zu prüfen.

  6. Wenn die netstat-Ausgabe Lese-/Schreibfehler anzeigt, ist möglicherweise eine TCP/UDP-Bulk-Datenflussabstimmung erforderlich.

  7. Wenn fehlerhafte Pakete vorhanden sind, sollten die Paketerfassungen zur weiteren Analyse in den VPN-Gateways durchgeführt werden. Weitere Informationen zum Ausführen von Paketerfassungen in den VPN-Gateways öffnen Sie eine Supportanfrage.

  8. Wenn der iperf3-UDP-Test den gewünschten Durchsatz erreicht, muss das Problem an einer anderen Stelle liegen und möglicherweise ist eine TCP-Abstimmung erforderlich.