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, die Variablen auflisten, die sich auf die Netzwerkleistung auswirken können, und bietet Tipps zur Fehlerbehebung.

Einschränkungen und Überlegungen

  • Es gelten Cloud Interconnect-Einschränkungen. 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. In dieser Tabelle finden Sie die Anzahl der vCPUs pro Maschinentyp.
  • 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 minimieren.

    • Netzwerkstatistiken für Firewalls und Switches im Pfad erfassen.
    • 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.

Tools zur Messung des Netzwerkdurchsatzes

In dieser Anleitung wird die Verwendung der folgenden Tools zur Berechnung des Netzwerkdurchsatzes erläutert:

  • 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 erfasst, um eine erweiterte Fehlerbehebung zu ermöglichen. Das tcpdump-Tool 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 Netzwerkdiagnose-Tool, das sowohl Traceroute- als auch Ping-Funktionen ausführt. Sie prüft Router auf dem Routenpfad, indem sie die Anzahl der Hops begrenzt, die einzelne Pakete durchlaufen können, und überwacht die Antworten ihres Ablaufs.

Durchsatz mit iPerf3 messen

Mit diesem Verfahren können Sie den Durchsatz von einer einzelnen VM-Instanz 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. Prüfen Sie, ob die Größen der VLAN-Anhänge korrekt 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. Sammeln Sie Netzwerkstatistiken mit dem Befehl netstat, 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 Lese- und Schreibspeichergröße 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 von 3 Gbit/s für jeden Ablauf empfehlen wir die Ausführung mehrerer paralleler Streams von iperf3-Tests. Wir empfehlen, mindestens vier Tests 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 den iperf3-Server an einem Ende der Verbindung aus (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 für Cloud Interconnect-Tests 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
    

iperf3 client wird standardmäßig 10 Sekunden lang ausgeführt. Dies reicht für TCP möglicherweise nicht aus, um den maximalen Durchsatz zu erreichen. Setzen Sie den Wert DURATION auf mindestens 30 Sekunden, um zuverlässigere Ergebnisse zu erhalten.

    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 der Ausführung des Tests iperf3 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 auf verschiedenen 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 Paketerfassungs-Analyse 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 den Paketverlust 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. Für 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.