Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überlegungen zum Nitro-System zur Leistungsoptimierung
Das Nitro-System ist eine von AWS
entwickelte Sammlung von Hardware- und Softwarekomponenten, die eine hohe Leistung, Verfügbarkeit und Sicherheit ermöglichen. Das Nitro-System bietet Bare-Metal-ähnliche Funktionen, die den Virtualisierungsaufwand eliminieren und Workloads unterstützen, die vollen Zugriff auf die Host-Hardware erfordern. Ausführlichere Informationen finden Sie unter Nitro System.AWS
Alle EC2 Instance-Typen der aktuellen Generation führen die Verarbeitung von Netzwerkpaketen auf EC2 Nitro-Karten durch. Dieses Thema behandelt die Paketverarbeitung auf hoher Ebene auf der Nitro-Karte, allgemeine Aspekte der Netzwerkarchitektur und -konfiguration, die sich auf die Leistung der Paketverarbeitung auswirken, und welche Maßnahmen Sie ergreifen können, um Spitzenleistung für Ihre Nitro-basierten Instances zu erzielen.
Nitro-Karten verarbeiten alle Eingangs- und Ausgangsschnittstellen (I/O), wie sie beispielsweise für Virtual Private Clouds () benötigt werden. VPCs Für alle Komponenten, die Informationen über das Netzwerk senden oder empfangen, fungieren die Nitro-Karten als eigenständiges Computergerät für den I/O-Verkehr, das physisch von der System-Hauptplatine getrennt ist, auf der die Workloads der Kunden ausgeführt werden.
Netzwerk-Paketfluss auf Nitro-Karten
EC2Instances, die auf dem Nitro-System basieren, verfügen über Hardwarebeschleunigungsfunktionen, die eine schnellere Paketverarbeitung ermöglichen, gemessen an den Durchsatzraten von Paketen pro Sekunde (PPS). Wenn eine Nitro-Karte die erste Evaluierung für einen neuen Flow durchführt, speichert sie Informationen, die für alle Pakete im Flow identisch sind, wie Sicherheitsgruppen, Zugriffskontrolllisten und Routentabelleneinträge. Wenn sie zusätzliche Pakete für denselben Datenfluss verarbeitet, kann sie die gespeicherten Informationen verwenden, um den Overhead für diese Pakete zu reduzieren.
Ihre Verbindungsrate wird anhand der Metrik Verbindungen pro Sekunde (CPS) gemessen. Jede neue Verbindung erfordert zusätzlichen Verarbeitungsaufwand, der bei den Schätzungen der Arbeitslastkapazität berücksichtigt werden muss. Es ist wichtig, bei der Gestaltung Ihrer Workloads CPS sowohl die als auch die PPS Metriken zu berücksichtigen.
Wie wird eine Verbindung hergestellt
Wenn eine Verbindung zwischen einer Nitro-basierten Instanz und einem anderen Endpunkt hergestellt wird, bewertet die Nitro-Karte den gesamten Datenfluss für das erste Paket, das zwischen den beiden Endpunkten gesendet oder empfangen wird. Bei nachfolgenden Paketen desselben Datenflusses ist eine vollständige Neubewertung normalerweise nicht erforderlich. Es gibt jedoch Ausnahmen. Weitere Informationen zu den Ausnahmen finden Sie unterPakete, die keine Hardwarebeschleunigung verwenden.
Die folgenden Eigenschaften definieren die beiden Endpunkte und den Paketfluss zwischen ihnen. Diese fünf Eigenschaften zusammen werden als 5-Tupelfluss bezeichnet.
-
Quell-IP
-
Quell-Port
-
Ziel-IP
-
Ziel-Port
-
Kommunikationsprotokoll
Die Richtung des Paketflusses wird als Eingang (eingehend) und Ausgang (ausgehend) bezeichnet. Die folgenden allgemeinen Beschreibungen fassen den gesamten Paketfluss im Netzwerk zusammen.
-
Eingang — Wenn eine Nitro-Karte ein eingehendes Netzwerkpaket verarbeitet, bewertet sie das Paket anhand von statusbehafteten Firewallregeln und Zugriffskontrolllisten. Sie verfolgt die Verbindung, misst sie und führt gegebenenfalls weitere Aktionen durch. Dann leitet es das Paket an sein Ziel auf dem Host CPU weiter.
-
Ausgang — Wenn eine Nitro-Karte ein ausgehendes Netzwerkpaket verarbeitet, sucht sie nach dem Ziel der Remote-Schnittstelle, bewertet verschiedene VPC Funktionen, wendet Ratenbegrenzungen an und führt gegebenenfalls andere Aktionen durch. Anschließend leitet sie das Paket an das nächste Hop-Ziel im Netzwerk weiter.
Gestalten Sie Ihr Netzwerk für optimale Leistung
Um die Leistungsfähigkeit Ihres Nitro-Systems optimal nutzen zu können, müssen Sie wissen, was Ihre Anforderungen an die Netzwerkverarbeitung sind und wie sich diese Anforderungen auf die Arbeitslast Ihrer Nitro-Ressourcen auswirken. Anschließend können Sie die optimale Leistung für Ihre Netzwerklandschaft entwerfen. Ihre Infrastruktureinstellungen sowie der Entwurf und die Konfiguration der Anwendungs-Workloads können sich sowohl auf die Paketverarbeitung als auch auf die Verbindungsraten auswirken. Wenn Ihre Anwendung beispielsweise eine hohe Verbindungsaufbaurate aufweist, z. B. ein DNS Dienst, eine Firewall oder ein virtueller Router, hat sie weniger Möglichkeiten, die Hardwarebeschleunigung zu nutzen, die erst nach dem Verbindungsaufbau erfolgt.
Sie können Anwendungs- und Infrastruktureinstellungen konfigurieren, um Workloads zu rationalisieren und die Netzwerkleistung zu verbessern. Allerdings sind nicht alle Pakete für eine Beschleunigung geeignet. Das Nitro-System verwendet den gesamten Netzwerkfluss für neue Verbindungen und für Pakete, die nicht für eine Beschleunigung in Frage kommen.
Der Rest dieses Abschnitts konzentriert sich auf Überlegungen zum Anwendungs- und Infrastrukturdesign, um sicherzustellen, dass Pakete so weit wie möglich innerhalb des beschleunigten Pfads fließen.
Überlegungen zum Netzwerkdesign für das Nitro-System
Wenn Sie den Netzwerkverkehr für Ihre Instance konfigurieren, müssen Sie viele Aspekte berücksichtigen, die sich auf die PPS Leistung auswirken können. Nachdem ein Datenfluss eingerichtet wurde, kommen die meisten Pakete, die regelmäßig ein- oder ausgehen, für eine Beschleunigung in Frage. Es gibt jedoch Ausnahmen, um sicherzustellen, dass Infrastrukturdesigns und Paketflüsse weiterhin den Protokollstandards entsprechen.
Um die beste Leistung aus Ihrer Nitro-Karte herauszuholen, sollten Sie die Vor- und Nachteile der folgenden Konfigurationsdetails für Ihre Infrastruktur und Anwendungen sorgfältig abwägen.
Überlegungen zur Infrastruktur
Ihre Infrastrukturkonfiguration kann sich auf Ihren Paketfluss und Ihre Verarbeitungseffizienz auswirken. Die folgende Liste enthält einige wichtige Überlegungen.
- Netzwerkschnittstellenkonfiguration mit Asymmetrie
-
Sicherheitsgruppen verwenden die Verbindungsverfolgung, um Informationen über den Datenverkehr zu und von der Instance nachzuverfolgen. Asymmetrisches Routing, bei dem der Datenverkehr über eine Netzwerkschnittstelle in eine Instance eingeht und über eine andere Netzwerkschnittstelle wieder austritt, kann die Spitzenleistung verringern, die eine Instance erzielen kann, wenn Datenflüsse verfolgt werden. Weitere Informationen zur Verbindungsverfolgung von Sicherheitsgruppen, nicht verfolgten Verbindungen und automatisch verfolgten Verbindungen finden Sie unter. Verbindungsverfolgung EC2 für Amazon-Sicherheitsgruppen
- Netzwerktreiber
-
Netzwerktreiber werden regelmäßig aktualisiert und veröffentlicht. Wenn Ihre Treiber veraltet sind, kann dies die Leistung erheblich beeinträchtigen. Halten Sie Ihre Treiber auf dem neuesten Stand, um sicherzustellen, dass Sie über die neuesten Patches verfügen und Leistungsverbesserungen nutzen können, z. B. die Funktion für beschleunigte Pfade, die nur für die neueste Treibergeneration verfügbar ist. Frühere Treiber unterstützen die Funktion für den beschleunigten Pfad nicht.
Um die Vorteile der Funktion für beschleunigte Pfade nutzen zu können, empfehlen wir Ihnen, den neuesten ENA Treiber auf Ihren Instanzen zu installieren.
Linux-Instanzen — ENA Linux-Treiber 2.2.9 oder höher. Informationen zur Installation oder Aktualisierung des ENA Linux-Treibers aus dem Amazon GitHub Drivers-Repository finden Sie im Abschnitt Treiberkompilierung
der Readme-Datei. Windows-Instances — ENA Windows-Treiber 2.0.0 oder höher. Informationen zur Installation oder Aktualisierung des ENA Windows-Treibers finden Sie unterInstallieren Sie den ENA Treiber auf EC2 Windows-Instanzen.
- Entfernung zwischen Endpunkten
-
Eine Verbindung zwischen zwei Instances in derselben Availability Zone kann mehr Pakete pro Sekunde verarbeiten als eine regionsübergreifende Verbindung. Das TCP liegt an der Anwendungsebene, die bestimmt, wie viele Daten zu einem bestimmten Zeitpunkt übertragen werden können. Große Entfernungen zwischen Instanzen erhöhen die Latenz und verringern die Anzahl der Pakete, die die Endgeräte verarbeiten können.
Überlegungen zum Anwendungsdesign
Es gibt Aspekte des Anwendungsdesigns und der Konfiguration, die sich auf Ihre Verarbeitungseffizienz auswirken können. Die folgende Liste enthält einige wichtige Überlegungen.
- Größe des Pakets
-
Größere Paketgrößen können den Durchsatz für die Daten erhöhen, die eine Instanz im Netzwerk senden und empfangen kann. Kleinere Paketgrößen können die Paketverarbeitungsrate erhöhen, aber dadurch kann die maximal erreichte Bandbreite reduziert werden, wenn die Anzahl der Pakete die PPS zulässigen Grenzwerte überschreitet.
Wenn die Größe eines Pakets die maximale Übertragungseinheit (MTU) eines Netzwerk-Hops überschreitet, wird es möglicherweise von einem Router entlang des Pfads fragmentiert. Die resultierenden Paketfragmente gelten als Ausnahmen und werden mit der Standardrate (nicht beschleunigt) verarbeitet. Dies kann zu Leistungsschwankungen führen. Amazon EC2 unterstützt Jumbo-Frames von 9001 Byte, dies wird jedoch nicht von allen Diensten unterstützt. Wir empfehlen Ihnen, Ihre Topologie bei der Konfiguration zu bewerten. MTU
- Kompromisse zwischen Protokollen
-
Zuverlässige Protokolle TCP haben beispielsweise mehr Overhead als unzuverlässige Protokolle wie. UDP Der geringere Overhead und die vereinfachte Netzwerkverarbeitung für das UDP Transportprotokoll können zu einer höheren PPS Geschwindigkeit führen, allerdings auf Kosten der zuverlässigen Paketzustellung. Wenn eine zuverlässige Paketzustellung für Ihre Anwendung nicht entscheidend ist, ist UDP dies möglicherweise eine gute Option.
- Mikro-Bursting
-
Micro-Bursting tritt auf, wenn der Verkehr in kurzen Zeiträumen die zulässigen Grenzwerte überschreitet und nicht gleichmäßig verteilt wird. Dies geschieht in der Regel im Mikrosekundenbereich.
Nehmen wir zum Beispiel an, Sie haben eine Instanz, die bis zu 10 Gbit/s senden kann, und Ihre Anwendung sendet die vollen 10 Gbit/s in einer halben Sekunde. Dieser Micro-Burst überschreitet in der ersten halben Sekunde den zulässigen Wert und für den Rest der Sekunde bleibt nichts übrig. Auch wenn Sie in der ersten Sekunde 10 Gbit gesendet haben, können Freigaben in der ersten halben Sekunde dazu führen, dass Pakete in die Warteschlange gestellt oder verworfen werden.
Sie können einen Netzwerkplaner wie Linux Traffic Control verwenden, um Ihren Durchsatz zu beschleunigen und zu vermeiden, dass Pakete aufgrund von Micro-Bursting in die Warteschlange gestellt oder verworfen werden.
- Anzahl der Datenflüsse
-
Ein einzelner Datenfluss ist auf 5 Gbit/s begrenzt, es sei denn, er gehört zu einer Cluster-Platzierungsgruppe, die bis zu 10 Gbit/s unterstützt, oder er verwendet ENA Express, das bis zu 25 Gbit/s unterstützt.
In ähnlicher Weise kann eine Nitro-Karte mehr Pakete über mehrere Datenflüsse verarbeiten, anstatt einen einzigen Datenfluss zu verwenden. Um die maximale Paketverarbeitungsrate pro Instance zu erreichen, empfehlen wir mindestens 100 Flows auf Instances mit einer Gesamtbandbreite von 100 Gbit/s oder mehr. Mit zunehmender Gesamtbandbreitenkapazität steigt auch die Anzahl der Datenflüsse, die zur Erreichung der Spitzenverarbeitungsraten erforderlich sind. Mithilfe von Benchmarking können Sie ermitteln, welche Konfiguration Sie benötigen, um Spitzenraten in Ihrem Netzwerk zu erreichen.
- Anzahl der Elastic Network Adapter (ENA) -Warteschlangen
-
Standardmäßig wird einer Netzwerkschnittstelle die maximale Anzahl von ENA Warteschlangen zugewiesen, die auf Ihrer Instance-Größe und Ihrem Instance-Typ basiert. Wenn Sie die Anzahl der Warteschlangen reduzieren, kann sich die erreichbare PPS Höchstrate verringern. Wir empfehlen, die standardmäßige Warteschlangenzuweisung zu verwenden, um eine optimale Leistung zu erzielen.
Für Linux ist eine Netzwerkschnittstelle standardmäßig mit dem Maximum konfiguriert. Für Anwendungen, die auf dem Data Plane Development Kit (DPDK) basieren, empfehlen wir, die maximale Anzahl verfügbarer Warteschlangen zu konfigurieren.
- Mehraufwand für den Funktionsprozess
-
Funktionen wie Traffic Mirroring und ENA Express können den Verarbeitungsaufwand erhöhen, wodurch die absolute Paketverarbeitungsleistung reduziert werden kann. Sie können die Nutzung von Funktionen einschränken oder Funktionen deaktivieren, um die Paketverarbeitungsraten zu erhöhen.
- Verbindungsverfolgung zur Aufrechterhaltung des Zustands
-
Ihre Sicherheitsgruppen verwenden die Verbindungsverfolgung, um Informationen über den Verkehr zur und von der Instance zu speichern. Die Verbindungsverfolgung wendet Regeln auf jeden einzelnen Netzwerkdatenverkehr an, um festzustellen, ob der Datenverkehr zugelassen oder verweigert wird. Die Nitro-Karte verwendet Flow-Tracking, um den Status des Datenflusses aufrechtzuerhalten. Je mehr Sicherheitsgruppenregeln angewendet werden, desto mehr Arbeit ist erforderlich, um den Flow auszuwerten.
Anmerkung
Nicht alle Netzwerkverkehrsflüsse werden verfolgt. Wenn eine Sicherheitsgruppenregel mit konfiguriert istUnverfolgte Verbindungen, ist keine zusätzliche Arbeit erforderlich, mit Ausnahme von Verbindungen, die automatisch nachverfolgt werden, um symmetrisches Routing zu gewährleisten, wenn mehrere gültige Antwortpfade vorhanden sind.
Pakete, die keine Hardwarebeschleunigung verwenden
Nicht alle Pakete können die Hardwarebeschleunigung nutzen. Die Behandlung dieser Ausnahmen ist mit einem gewissen Verarbeitungsaufwand verbunden, der erforderlich ist, um die Integrität Ihrer Netzwerkflüsse sicherzustellen. Netzwerkflüsse müssen zuverlässig den Protokollstandards entsprechen, Änderungen im VPC Design entsprechen und Pakete nur an zulässige Ziele weiterleiten. Der Overhead reduziert jedoch Ihre Leistung.
- Fragmente von Paketen
-
Wie unter Überlegungen zu Anwendungen erwähnt, MTU werden Paketfragmente, die aus Paketen resultieren, die das Netzwerk überschreiten, als Ausnahmen behandelt und können die Vorteile der Hardwarebeschleunigung nicht nutzen.
- Verbindungen im Leerlauf
-
Wenn eine Verbindung eine Zeit lang nicht aktiv ist, kann das System ihre Priorität herabsetzen, auch wenn die Verbindung ihr Timeout-Limit noch nicht erreicht hat. Wenn dann Daten eingehen, nachdem die Verbindung nicht mehr priorisiert wurde, muss das System sie ausnahmsweise behandeln, um die Verbindung wieder herzustellen.
Um Ihre Verbindungen zu verwalten, können Sie Timeouts für die Verbindungsverfolgung verwenden, um inaktive Verbindungen zu schließen. Sie können TCP Keepalives auch verwenden, um inaktive Verbindungen aufrechtzuerhalten. Weitere Informationen finden Sie unter Timeout für die Nachverfolgung von Leerlaufverbindungen.
- VPCMutation
-
Aktualisierungen von Sicherheitsgruppen, Routing-Tabellen und Zugriffskontrolllisten müssen alle während des Verarbeitungspfads neu bewertet werden, um sicherzustellen, dass Routeneinträge und Sicherheitsgruppenregeln weiterhin wie erwartet gelten.
- ICMPFlüsse
-
Das Internet Control Message Protocol (ICMP) ist ein Protokoll auf Netzwerkebene, das Netzwerkgeräte zur Diagnose von Netzwerkkommunikationsproblemen verwenden. Diese Pakete verwenden immer den vollen Datenfluss.
Maximieren Sie die Netzwerkleistung auf Ihrem Nitro-System
Bevor Sie Designentscheidungen treffen oder Netzwerkeinstellungen auf Ihrer Instance anpassen, empfehlen wir Ihnen, die folgenden Schritte durchzuführen, um sicherzustellen, dass Sie das beste Ergebnis erzielen:
-
Machen Sie sich mit den Vor- und Nachteilen der Maßnahmen vertraut, die Sie ergreifen können, um die Leistung zu verbessern, indem Sie sie überprüfenÜberlegungen zum Netzwerkdesign für das Nitro-System.
Weitere Überlegungen und bewährte Methoden für Ihre Instanzkonfiguration unter Linux finden Sie unter Bewährte Methoden und Leitfaden zur Leistungsoptimierung für ENA Linux-Treiber unter
GitHub. -
Vergleichen Sie Ihre Workloads anhand der Anzahl der aktiven Datenflüsse zu Spitzenzeiten, um einen Basiswert für Ihre Anwendungsleistung zu ermitteln. Anhand einer Leistungsbasislinie können Sie Variationen in Ihren Einstellungen oder Ihrem Anwendungsdesign testen, um herauszufinden, welche Überlegungen die größte Wirkung haben werden, insbesondere, wenn Sie eine Hochskalierung oder Skalierung planen.
Die folgende Liste enthält Maßnahmen, die Sie je nach Ihren Systemanforderungen ergreifen können, um Ihre PPS Leistung zu optimieren.
-
Reduzieren Sie die physische Entfernung zwischen zwei Instanzen. Wenn sich sendende und empfangende Instances in derselben Availability Zone befinden oder Cluster-Platzierungsgruppen verwenden, können Sie die Anzahl der Hops reduzieren, die ein Paket zurücklegen muss, um von einem Endpunkt zum anderen zu gelangen.
-
Verwenden Sie Unverfolgte Verbindungen.
-
Verwenden Sie das UDP Protokoll für den Netzwerkverkehr.
-
Verteilen Sie bei EC2 Instances mit einer Gesamtbandbreite von 100 Gbit/s oder mehr die Arbeitslast auf 100 oder mehr einzelne Datenflüsse, um die Arbeit gleichmäßig auf die Nitro-Karte zu verteilen.
Überwachen Sie die Leistung auf Linux-Instances
Sie können Ethtool-Metriken auf Linux-Instances verwenden, um Leistungsindikatoren für das Instance-Netzwerk wie Bandbreite, Paketrate und Verbindungsverfolgung zu überwachen. Weitere Informationen finden Sie unter Überwachen Sie die Netzwerkleistung für ENA Einstellungen auf Ihrer EC2 Instance.