Wie behebe ich Probleme mit der Netzwerkleistung zwischen EC2-Linux- oder Windows-Instances in einer VPC und einem lokalen Host über das Internet-Gateway?
Ich möchte Paketverlust- oder Latenzprobleme zwischen meinen Amazon Elastic Compute Cloud (Amazon EC2)-Instances in einer Amazon Virtual Private Cloud (Amazon VPC) und einem lokalen Host über das Internet-Gateway beheben.
Kurzbeschreibung
Um Netzwerkprobleme wie Paketverluste oder Latenzzeiten zu diagnostizieren, testen Sie zunächst das Netzwerk, um die Ursache des Problems zu identifizieren. Bevor Sie das Problem beheben, empfiehlt es sich, die Leistungsergebnisse zu vergleichen.
Voraussetzungen:
- Stellen Sie sicher, dass die Netzwerkdienstprogramme auf beiden Endpunkten (auf der EC2-Instance und dem lokalen Host) installiert sind.
- Verwenden Sie eine EC2-Instance, die Enhanced Networking (erweiterte Netzwerkfunktionen) unterstützt, und stellen Sie sicher, dass die Treiber auf dem neuesten Stand sind. Wenn Enhanced Networking nicht aktiviert ist, finden Sie weitere Informationen unter Problembehandlung für den ENA-Kerneltreiber unter Linux oder Problembehandlung für den Elastic Network Adapter-Windows-Treiber.
- Stellen Sie eine Verbindung zu Ihrer EC2-Instance her, um auf die Instances zuzugreifen. Überprüfen Sie die durchgängige Konnektivität zwischen Ihrer EC2-Instance und Ihrem lokalen Host.
Behebung
Installieren Sie die folgenden Tools, um Probleme zu beheben und Ihr Netzwerk zu testen:
- AwsSupport-SetupIPMonitoringFromVPC zur Erfassung von Netzwerkmetriken wie Paketverlust, Latenz, MTR, tcptraceroute und Tracepath.
- MTR (Mean Time to Recovery) zur Überprüfung auf ICMP (Internet Control Message Protocol, Internet-Kontrollnachrichtenprotokoll)- oder TCP (Transmission Control Protocol, Übertragungskontrollprotokoll)-Paketverluste und Latenzprobleme.
- Traceroute, um Latenz- oder Routing-Probleme zu ermitteln.
- Hping3 zur Bestimmung von end-to-end-TCP-Paketverlusten und Latenzproblemen.
- Tcpdump zur Analyse von Paketerfassungsproben.
Traceroute- oder MTR-Berichte überprüfen
Prüfen Sie die Hops in Traceroute- oder MTR-Berichten mit einem Bottom-up-Ansatz. Bei einem Bottom-up-Ansatz überprüfen Sie zunächst, ob der letzte Hop oder das letzte Ziel verloren gegangen ist, und überprüfen Sie dann die vorherigen Hops.
- Wenn die Paketverluste oder Latenzprobleme bis zum letzten Hop anhalten, liegt möglicherweise ein Netzwerk- oder Routing-Problem vor.
- Wenn es auf diesem Knoten eine Ratenbegrenzung auf der Steuerungsebene gibt, kann es zu Paketverlust oder Latenz auf einem Hop im Pfad kommen.
- Prüfen Sie, ob der zuletzt gemeldete Hop das im Befehl angegebene Ziel ist. Wenn der letzte Hop nicht vermerkt ist, liegt möglicherweise ein Problem vor, das durch eine restriktive Sicherheitsgruppe verursacht wird.
Testen Sie die Leistung mit AWSSupport-SetupIPMonitoringFromVPC
Dieses integrierte Tool sammelt viele der Metriken, die Sie zur Behebung von Netzwerkproblemen benötigen. Weitere Informationen finden Sie unter Debugging-Tool für Netzwerkkonnektivität von Amazon VPC.
Fehlerbehebung bei der Leistung von Linux-Instances
Linux-Leistungsstatistiken überprüfen
Wenn Sie Zugriff auf die Quell- oder Ziel-Instance haben, prüfen Sie, ob es Probleme mit der CPU, der Speicherauslastung und der durchschnittlichen Last gibt.
Leistung mit MTR testen
Der Linux-MTR-Befehl bietet eine kontinuierliche, aktualisierte Ausgabe. Dieses Diagnose-Tool kombiniert die Funktionen der Hilfsprogramme Traceroute- und Ping. Die Ausgabe dieses Tools ermöglicht es Ihnen, die Netzwerkleistung zu analysieren. Bei den meisten Linux-Distributionen sind Traceroute und MTR bereits vorinstalliert. Sie können MTR über den Software-Paketmanager Ihrer Distribution herunterladen.
Um MTR zu installieren, führen Sie die folgenden Befehle aus:
Amazon Linux:
sudo yum install mtr
Ubuntu:
sudo apt-get install mtr-tiny
Um die Leistung Ihres Netzwerks mit MTR zu testen, führen Sie diesen Test bidirektional zwischen der öffentlichen IP-Adresse Ihrer EC2-Instances und Ihrem lokalen Host aus. Wenn die Richtung umgekehrt wird, kann sich der Pfad zwischen Knoten in einem TCP/IP-Netzwerk ändern. Es hat sich bewährt, MTR-Ergebnisse für beide Richtungen zu erhalten. Sie können einen TCP-basierten Ablaufbahn anstelle von ICMP verwenden, da die meisten Internetgeräte ICMP-basierte-Ablaufplananfragen nicht priorisieren.
Überprüfen Sie Ihre Paketverluste. Ein Paketverlust bei einem einzelnen Hop deutet normalerweise nicht auf ein Problem hin. Der Verlust kann auf eine Richtlinie der Steuerungsebene zurückzuführen sein, die dazu führt, dass die Meldungen „ICMP time exceeded“ verworfen werden. Wenn Sie einen anhaltenden Paketverlust bis zum Ziel-Hop oder einen Paketverlust über mehrere Hops feststellen, könnte dies auf ein Problem hinweisen.
Hinweis: Es kommt häufig vor, dass einige Anfragen nicht bearbeitet werden.
Ersetzen Sie PUBLIC_IP durch den lokalen Host der öffentlichen IP-EC2-Instance.
ICMP-basiertes MTR:
mtr -n -c 200 PUBLIC_IP --report
TCP-basiertes MTR:
mtr -n -T -c 200 PUBLIC_IP --report
Das Argument -T führt ein TCP-basiertes MTR durch und die Option --report versetzt MTR in den Berichtsmodus. MTR läuft für die mit der Option -c angegebene Anzahl von Zyklen. Drucken Sie die Statistiken aus und beenden Sie den Vorgang.
Hinweis: Das TCP-basierte MTR testet den Ziel-TCP-Port 80, für MTR wird ein bestimmter Ziel-TCP-Port mit -P, gefolgt von der Port-Nummer angehängt. Das Folgende ist ein Beispiel für den MTR-Ziel-TCP-Port 443:
mtr -n -T -c 200 PUBLIC_IP -P 443 --report
Leistung mit Traceroute testen
Das Hilfsprogramm traceroute auf Linux identifiziert den Pfad, der von einem Client-Knoten zum Zielknoten zurückgelegt wird. Das Dienstprogramm zeichnet die Zeit, die jeder Router benötigt, um auf die Anfrage zu antworten in Millisekunden auf. Das Programm berechnet auch die Zeit, die jeder Hop bis zum Erreichen seines Ziels benötigt.
Zum Installieren von traceroute führen Sie die folgenden Befehle aus:
Amazon Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get update
`sudo apt-get install traceroute`
Hinweis: Wenn Sie einen MTR-Bericht erstellen, ist Traceroute nicht erforderlich. MTR liefert Latenz- und Paketverluststatistiken für ein Ziel.
Stellen Sie sicher, dass Port 22 oder der Port, den Sie testen, in beide Richtungen offen sind. Führen Sie den Befehl vom Client zum Server aus, um Probleme mit der Netzwerkkonnektivität mithilfe von Traceroute zu beheben. Führen Sie dann den Befehl vom Server zurück zum Client aus. Der Pfad zwischen Knoten in einem TCP/IP-Netzwerk kann sich ändern, wenn die Richtung umgekehrt wird. Verwenden Sie anstelle von ICMP einen TCP-basierten Trace (Ihren Anwendungsport), da die meisten Internet-Geräte ICMP-basierte Trace-Anfragen nicht priorisieren.
ICMP-basierte Traceroute:
sudo traceroute -I PUBLIC_IP
TCP-basierte Traceroute:
sudo traceroute -n -T -p 22 PUBLIC_IP
Das Argument -T -p 22 -n führt eine TCP-basierte Verfolgung auf Port 22 durch.
Hinweis: Sie können Ihren anwendungsspezifischen Anschluss für Tests verwenden. Verwenden Sie den spezifischen Port, um festzustellen, ob sich Zwischengeräte im Pfad befinden, die Ihren Anwendungsverkehr unterbrechen.
Leistung mit hping3 testen
Hping3 ist ein befehlszeilenorientierter TCP/IP-Paket-Assembler und Analysator, der den Paketverlust und die Latenz über eine TCP-Verbindung von Ende zu Ende misst. Laden Sie hping3 von der Die.net-Website herunter.
Zusätzlich zu ICMP-Echoanfragen unterstützt hping3 die Protokolle TCP, UDP und RAW-IP. Hping3 enthält auch einen Traceroute-Modus, mit dem Dateien über einen abgedeckten Kanal gesendet werden können. Hping3 kann Hosts scannen, bei Penetrationstests helfen, Systeme zur Erkennung von Eindringlingen testen und Dateien zwischen Hosts austauschen.
MTRs und Traceroute erfassen die Latenz pro Hop. Zusätzlich zum Paketverlust zeigen die hping3-Ergebnisse jedoch eine Ende-zu-Ende-Latenz von min/avg/max über TCP.
Führen Sie die folgenden Befehle aus, um hping3 zu installieren:
Amazon Linux 2:
Installieren Sie das EPEL-Release-Paket für RHEL 7 und aktivieren Sie dann das EPEL-Repository.
sudo amazon-linux-extras install epel -y
Amazon Linux 2:
sudo yum --enablerepo=epel install hping3
Ubuntu:
sudo apt-get install hping3
Der folgende Befehl sendet 50 TCP-SYN-Pakete über Port 0. Standardmäßig sendet hping3 TCP-Header an den Port 0 des Zielhosts mit einer Fenstergröße von 64 und ohne TCP-Flag:
sudo hping3 -S -c 50 -V PUBLIC_IP
Der folgende Befehl sendet 50 TCP-SYN-Pakete über Port 22:
sudo hping3 -S -c 50 -V PUBLIC_IP -p 22
Hinweis: Stellen Sie sicher, dass Port 22 oder der Port, den Sie testen, offen ist.
Proben für die Paketerfassung mit tcpdump testen
Es empfiehlt sich, bei der Diagnose von Paketverlusten oder Latenzproblemen gleichzeitig Paketaufzeichnungen auf Ihrer EC2-Instance und Ihrem lokalen Host durchzuführen. Diese Aufzeichnungen können Ihnen beim Identifizieren der Anfrage- und Antwortpakete helfen, sodass Sie das Problem auf der Netzwerk- und Anwendungsebene eingrenzen können. Es empfiehlt sich auch, erst die Paketaufzeichnung zu starten und dann den Datenverkehr zu initiieren. Diese Reihenfolge der Aktionen hilft dabei, alle Pakete für den Flow zu erfassen.
Um tcpdump zu installieren, führen Sie die folgenden Befehle aus:
Amazon Linux:
sudo yum install tcpdump
Ubuntu:
sudo apt-get install tcpdump
Nachdem Sie tcpdump installiert haben, führen Sie den folgenden Befehl aus, um den Verkehr über TCP-Port 22 zu erfassen, und speichern Sie dann die Ausgabe in einer PCAP-Datei.
sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap
Hinweis: Die Flag tcpdump -igibt die Schnittstelle der Instance an, auf der tcpdump den Datenverkehr aufzeichnet. Möglicherweise müssen Sie die Schnittstelle von eth0in die konfigurierte Schnittstelle in Ihrer Umgebung ändern.
Fehlerbehebung bei der Leistung für Windows
Auf ECN-Fähigkeit überprüfen
-
Um festzustellen, ob die ECN-Funktion (Explicit Congestion Notification, Explizite Überlastungsbenachrichtigung) aktiviert ist, führen Sie den folgenden Befehl aus:
netsh interface tcp show global
-
Wenn die ECN-Funktion aktiviert ist, deaktiviern Sie es und führen Sie den folgenden Befehl aus:
- netsh interface tcp set global ecncapability=disabled
-
Wenn Sie keine Leistungsverbesserung feststellen, führen Sie den folgenden Befehl aus, um die ECN-Funktion zu reaktivieren:
netsh interface tcp set global ecncapability=enabled
Überprüfen von Hops und Fehlerbehebung bei TCP-Port-Konnektivität
Verwenden Sie zunächst MTR oder tracert, um die Hops zu überprüfen.
MTR-Methode:
- Laden Sie WinMTR von der Sourceforge.net-Website herunter und installieren Sie es.
- Geben Sie die Ziel-IP in den Bereich Host ein und wählen Sie dann Start.
- Lassen Sie den Test eine Minute lang laufen und wählen Sie dann Stopp.
- Wählen Sie Text in die Zwischenablage kopieren und fügen Sie die Ausgabe in eine Textdatei ein.
- Suchen Sie in der Spalte % nach Verlusten, die an das Ziel weitergegeben werden.
Hinweis: Ignorieren Sie alle Hops mit der MeldungKeine Antwort vom Host. Diese Meldung gibt an, dass die entsprechenden Hops nicht auf die ICMP-Tests reagieren. - Überprüfen Sie die Hops in den MTR-Berichten mit einem Bottom-up-Ansatz. Prüfen Sie beispielsweise, ob es beim letzten Hop oder Ziel zu einem Verlust gekommen ist, und überprüfen Sie dann die vorangegangenen Hops.
Tracert-Methode:
Wenn Sie MTR nicht installieren wollen, verwenden Sie das Dienstprogramm tracert.
-
Führen Sie tracert für die Ziel-URL oder -IP-Adresse aus.
-
Achten Sie auf jeden Hop, der einen abrupten Anstieg der Rundlaufzeit (RTT, Round-Trip-Time) aufweist. Ein abrupter RTT-Anstieg deutet unter Umständen auf einen stark ausgelasteten Knoten hin. Diese Last kann zu Latenz oder Paketeinbrüchen in Ihrem Datenverkehr führen.
Hinweis: Mit der Option -d werden IP-Adressen nicht in Hostnamen aufgelöst. Entfernen Sie -d, wenn die Auflösung von IP in Hostnamen erforderlich ist.tracert -d PUBLIC_IP
-
Überprüfen Sie dann die TCP-Portkonnektivität.
Hinweis: Da WinMTR und tracert beide ICMP-basiert sind, können Sie tracetcp verwenden, um Probleme mit der TCP-Portkonnektivität zu beheben.
- Laden Sie die ZIP-Datei tracetcp von der NetworkHunt.com-Website herunter.
- Extrahieren Sie die ZIP-Datei tracetcp.
- Kopieren Sie tracetcp.exe auf Ihr Laufwerk C.
- Laden Sie WinPcap von der WinPcap.org-Website herunter und installieren Sie es.
- Öffnen Sie die Befehlszeile und legen Sie WinPcap mit dem Befehl *C:\Users\benutzername>cd auf Ihrem Laufwerk C ab.
- Verwenden Sie die folgenden Befehle, um tracetcp auszuführen:
tracetcp.exehostname:port
-oder-
tracetcp.exe ip:port
Windows Task-Manager überprüfen
Wenn Sie Zugriff auf die Quell- oder Ziel-Instance haben, überprüfen Sie den Windows-Task-Manager. Suchen Sie nach Problemen mit der CPU- und Speichernutzung oder der durchschnittlichen Auslastung.
Ein Datenpaket erfassen
Hinweis: Bei der Diagnose von Paketverlusten oder Latenzproblemen hat es sich bewährt, gleichzeitig Paketerfassungen auf Ihrer EC2-Instance und Ihrem lokalen Host durchzuführen. Diese Aktion hilft bei der Identifizierung der Anfrage- und Antwortpakete, um das Problem auf der Netzwerk- und Anwendungsebene zu isolieren. Es empfiehlt sich auch, erst die Paketaufzeichnung zu starten und dann den Datenverkehr zu initiieren. Diese Aktionen helfen dabei, alle Pakete für den Flow zu erfassen.
- Laden Sie Wireshark von der Wireshark.org-Website herunter und installieren Sie es. Erfassen Sie dann ein Datenpaket.
- Verwenden Sie den folgenden Filter, um den Verkehr zwischen bestimmten Quellen in der Paketerfassung zu isolieren: (ip.addr eq source_IP) && (tcp.flags.syn == 1).
Die Ausgabe zeigt alle TCP-Streams, die von dieser Quell-IP initiiert wurden. - Wählen Sie die Zeile mit der entsprechenden Quell- und Ziel-IP.
- Wählen Sie das Kontextmenü (Rechtsklick) und wählen Sie dann Folgen, TCP-Stream. Diese Aktion führt zu einem TCP-Fluss zwischen der Quell-IP und der Ziel-IP, den Sie untersuchen möchten.
- Suchen Sie nach erneuten Übertragungen, doppelten Paketen oder Benachrichtigungen zur TCP-Fenstergröße wie TCP-Fenster voll oder Fenstergröße null. Diese Meldungen können darauf hinweisen, dass der Platz in den TCP-Puffern knapp wird.
Wenn Sie Paketverluste feststellen oder wenn sich die Anzahl der Hops erheblich von Ihren Benchmarks unterscheidet, schlagen Sie in der Dokumentation des Herstellers Ihrer Netzwerkausrüstung nach. Wenn Sie in einer Netzwerkumgebung mit mehreren Hosts arbeiten, führen Sie diese Tests mit einem anderen ISP durch.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr