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
- Achten Sie darauf, dass die Größen der VLAN-Anhänge richtig konfiguriert sind. Weitere Informationen finden Sie unter VLAN-Anhänge ändern.
- Führen Sie an beiden Enden der Verbindung (jedem Terminal) den Befehl
top
oderhtop
aus, um die CPU-Nutzung zu überwachen. Erfassen Sie mit dem Befehl
netstat
Netzwerkstatistiken, bevor Sie Tests ausführen.netstat -s >> netstat.log
Führen Sie in einem anderen Terminal den Befehl
tcpdump
vor jeder Erfassung mit demsnaplen
-Parameterwert von128
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
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.
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 mehrereiperf3
-Server erforderlich.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.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 &
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.
- Prüfen Sie die
iperf3
-Clientergebnisse auf Bandbreite und Paketverlust. - Prüfen Sie die
iperf3
-Serverergebnisse auf fehlerhafte Pakete. 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
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
Rufen Sie die Geräteseite auf, um den Portdurchsatz zu prüfen.
Wenn die
netstat
-Ausgabe Lese-/Schreibfehler anzeigt, ist möglicherweise eine TCP/UDP-Bulk-Datenflussabstimmung erforderlich.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.
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.