Wie behebe ich Probleme mit der Netzwerkleistung zwischen EC2-Linux- oder Windows-Instances in einer VPC und einem lokalen Host über das Internet-Gateway?

Lesedauer: 11 Minute
0

Zwischen meinen Amazon Elastic Compute Cloud (Amazon EC2)-Instances und dem lokalen Host bestehen über das Internet-Gateway Probleme mit Paketverlust oder Latenz. Wie kann ich dieses Problem mit der Netzwerkleistung beheben?

Kurzbeschreibung

Um Netzwerkprobleme wie Paketverluste oder Latenzzeiten zu diagnostizieren, testen Sie zunächst das Netzwerk, um die Ursache des Problems zu identifizieren. Mit der folgenden Lösung können Sie ermitteln, ob die Ursache des Problems im Netzwerk oder in der Anwendung liegt. Es empfiehlt sich, einen Leistungsvergleich durchzuführen, damit Sie die Ergebnisse vergleichen können, wenn Sie die Leistungsprobleme feststellen.

Bevor Sie mit der Fehlerbehebung beginnen, überprüfen Sie Folgendes:

  • 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. Enhanced Networking bietet eine höhere E/A (In/Out)-Leistung bei geringer CPU-Auslastung, wodurch Probleme auf Instance-Ebene bei der Ausführung von Leistungstests vermieden werden. Wenn das Enhanced Networking nicht aktiviert ist, finden Sie weitere Informationen unter Enhanced Networking auf Linux oder Enhanced Networking auf Windows.
  • Stellen Sie eine Verbindung zu Ihrer EC2-Instance her, um auf die Instanzen zuzugreifen, und stellen Sie sicher, dass eine durchgängige Konnektivität zwischen Ihrer EC2-Instance und Ihrem lokalen Host besteht.

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.

Prüfen Sie die Hops in Traceroute- oder MTR-Berichten mit einem Bottom-up-Ansatz. Prüfen Sie z. B., ob beim letzten Hop oder Ziel Verluste vorliegen und überprüfen Sie dann die folgenden Hops. Wenn die Paketverluste oder Latenzprobleme bis zum letzten Hop anhalten, liegt möglicherweise ein Netzwerk- oder Routing-Problem vor. Paketverluste oder Latenzzeiten auf einem Hop im Pfad können auftreten, wenn es ein Problem mit der Ratenbegrenzung auf der Steuerebene auf diesem Knoten gibt. Prüfen Sie, ob der zuletzt gemeldete Hop das im Befehl angegebene Ziel ist. Ist dies nicht der Fall, 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. Mit dieser Ausgabe können Sie die Netzwerkleistung analysieren. Dieses Diagnose-Tool kombiniert die Funktionen der Hilfsprogramme Traceroute- und Ping. Bei den meisten Linux-Distributionen sind Traceroute und MTR bereits vorinstalliert. Sie können es ü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. Der Pfad zwischen Knoten in einem TCP/IP-Netzwerk kann sich ändern, wenn die Richtung umgekehrt wird. Daher ist es wichtig, 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.

ICMP-basiertes MTR:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report

TCP-basiertes MTR:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --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 EC2 instance/on-premises host> -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: Traceroute ist nicht erforderlich, wenn Sie einen MTR-Bericht erstellen. 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. Um mithilfe von Traceroute Probleme mit der Netzwerkverbindung zu beheben, führen Sie den Befehl vom Client zum Server und 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 of EC2 instance/on-premises host>

TCP-basierte Traceroute:

sudo traceroute -n -T -p 22 <Public IP of EC2 instance/on-premises host>

Das Argument -T -p 22 -n führt einen TCP-basierten Trace 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 End-to-End-Paket- und Latenzverluste über eine TCP-Verbindung misst. 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 zwischen einem abgedeckten Kanal gesendet werden können. Hping3 wurde entwickelt, um Hosts zu scannen, bei Penetrationstests zu helfen, Systeme zur Erkennung von Eindringlingen zu testen und Dateien zwischen Hosts zu senden.

MTRs und Traceroute erfassen die Latenzzeit pro Hop. Hping3 liefert jedoch Ergebnisse, die neben den Paketverlusten auch die minimale/durchschnittliche/maximale Latenz von Ende zu Ende über TCP zeigen. Um hping3 zu installieren, führen Sie die folgenden Befehle aus:

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 of EC2 instance/on-premises host>

Der folgende Befehl sendet 50 TCP-SYN-Pakete über Port 22:

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -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/Latenzproblemen gleichzeitig Paketaufzeichnungen auf Ihrer EC2-Instance und Ihrem lokalen Host durchzuführen. Auf diese Weise können die Anfrage- und Antwortpakete identifiziert werden, sodass wir 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. Dies hilft, 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 tcpdump installiert worden ist, können Sie den folgenden Befehl ausführen, um den Verkehr an TCP-Port 22 zu erfassen und in einer PCAP-Datei zu speichern.

sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap

Hinweis: Das **tcpdump-**Flag -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

1.Führen Sie den folgenden Befehl aus, um festzustellen, ob die ECN-Funktion (Explicit Congestion Notification, Explizite Überlastungsbenachrichtigung) aktiviert ist:

netsh interface tcp show global

2.Wenn die ECN-Funktion aktiviert ist, führen Sie den folgenden Befehl aus, um sie zu deaktivieren:

- netsh interface tcp set global ecncapability=disabled

3.Wenn Sie keine Verbesserung der Leistung feststellen, können Sie die ECN-Funktion mit dem folgenden Befehl erneut aktivieren:

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:

1.Laden Sie WinMTR herunter und installieren Sie es.

2.Geben Sie die Ziel-IP in den Bereich Host ein und wählen Sie dann Start.

3.Lassen Sie den Test eine Minute lang laufen und wählen Sie dann Stopp.

4.Wählen Sie Text in die Zwischenablage kopieren und fügen Sie die Ausgabe in eine Textdatei ein.

5.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 zeigt an, dass diese bestimmten Hops nicht auf die ICMP-Sonden reagieren.

6.Überprüfen Sie die Hops in den MTR-Berichten nach einem Bottom-up-Ansatz. Prüfen Sie z. B., 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, können Sie das tracert-Dienstprogramm verwenden.

1.Führen Sie einen tracert auf die Ziel-URL oder IP-Adresse durch.

2.Achten Sie auf jeden Hop, der einen abrupten Anstieg der Rundlaufzeit (RTT, Round-Trip-Time) aufweist. Ein abrupte Spitze in der RTT kann darauf hindeuten, dass ein Knoten stark belastet ist, was wiederum zu Latenzzeiten oder Paketverlusten in Ihrem Datenverkehr führt.

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 of EC2 instance/on-premises host>

Ü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.

1.Laden Sie WinPcap und tracetcp herunter.

2.Extrahieren Sie die tracetcp-ZIP-Datei.

3.Kopieren Sie tracetcp.exe auf Ihr Laufwerk C.

4.Installieren Sie WinPcap.

5.Öffnen Sie die Befehlszeile und legen Sie WinPcap mit dem Befehl *C:\Users\benutzername >cd* auf Ihrem Laufwerk C ab.

6.Führen Sie tracetcp mit den folgenden Befehlen aus: 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 empfiehlt es sich, gleichzeitig Paketerfassungen auf Ihrer EC2-Instance und Ihrem lokalen Host durchzuführen. Dies 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. Dies hilft, alle Pakete für den Flow zu erfassen.

1.Installieren Sie Wireshark und führen Sie eine Paketerfassung aus.

2.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.

3.Wählen Sie die Zeile mit der entsprechenden Quell- und Ziel-IP.

4.Wählen Sie das Kontextmenü (Rechtsklick) und wählen Sie dann Folgen, TCP-Stream. Dies führt zu einem TCP-Fluss zwischen der Quell-IP und der Ziel-IP, den Sie untersuchen möchten.

5.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.


Verwandte Informationen

Verbesserter Netzwerkbetrieb auf Linux

Verbesserter Netzwerkbetrieb auf Windows

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr