Verbessern Sie die Netzwerkleistung zwischen EC2 Instanzen mit ENA Express - Amazon Elastic Compute Cloud

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.

Verbessern Sie die Netzwerkleistung zwischen EC2 Instanzen mit ENA Express

ENAExpress basiert auf der AWS Scalable Reliable Datagram (SRD) -Technologie. SRDist ein leistungsstarkes Netzwerktransportprotokoll, das dynamisches Routing verwendet, um den Durchsatz zu erhöhen und die Latenz am Ende zu minimieren. Mit ENA Express können Sie zwischen zwei EC2 Instances in derselben Availability Zone kommunizieren.

Vorteile von ENA Express
  • Erhöht die maximale Bandbreite, die ein einzelner Flow innerhalb der Availability Zone nutzen kann, von 5 Gbit/s auf 25 Gbit/s, bis zum Gesamtlimit für Instanzen.

  • Reduziert die Latenz des Netzwerkverkehrs zwischen EC2 Instances am Ende, insbesondere in Zeiten hoher Netzwerklast.

  • Erkennt und vermeidet überlastete Netzwerkpfade.

  • Führt einige Aufgaben direkt auf der Netzwerkebene aus, z. B. die Neuordnung von Paketen auf der Empfängerseite und die meisten erforderlichen Neuübertragungen. Dadurch wird die Anwendungsebene für andere Arbeiten freigegeben.

Anmerkung
  • Wenn Ihre Anwendung ein hohes Volumen an Paketen pro Sekunde sendet oder empfängt und die meiste Zeit auf Latenz optimiert werden muss, insbesondere in Zeiten ohne Überlastung des Netzwerks, ist Enhanced Networking möglicherweise besser für Ihr Netzwerk geeignet.

  • ENAExpress-Verkehr kann nicht über Subnetze in einer lokalen Zone gesendet werden.

Nachdem Sie ENA Express für den Anschluss an eine Netzwerkschnittstelle auf einer Instance aktiviert haben, initiiert die sendende Instance die Kommunikation mit der empfangenden Instance und SRD erkennt, ob ENA Express sowohl auf der sendenden als auch auf der empfangenden Instance läuft. Wenn ENA Express in Betrieb ist, kann die Kommunikation Übertragung verwendenSRD. Wenn ENA Express nicht funktioniert, fällt die Kommunikation auf die ENA Standardübertragung zurück.

In Zeiten mit geringem Netzwerkverkehr stellen Sie möglicherweise einen leichten Anstieg der Paketlatenz (mehrere zehn Mikrosekunden) fest, wenn das Paket ENA Express verwendet. In diesen Zeiten können Anwendungen, die bestimmten Leistungsmerkmalen des Netzwerks Priorität einräumen, wie folgt von ENA Express profitieren:

  • Prozesse können von einer erhöhten maximalen Single-Flow-Bandbreite von 5 Gbit/s auf 25 Gbit/s innerhalb derselben Availability Zone bis hin zum aggregierten Instance-Limit profitieren. Wenn ein bestimmter Instance-Typ beispielsweise bis zu 12,5 Gbit/s unterstützt, ist die Single-Flow-Bandbreite ebenfalls auf 12,5 Gbit/s begrenzt.

  • Länger ausgeführte Prozesse sollten in Zeiten der Netzwerküberlastung eine geringere Latenz aufweisen.

  • Prozesse können von einer gleichmäßigeren und einheitlicheren Verteilung der Reaktionszeiten des Netzwerks profitieren.

Wie funktioniert Express ENA

ENAExpress basiert auf der AWS Scalable Reliable Datagram (SRD) -Technologie. Sie verteilt Pakete für jeden Netzwerkfluss auf verschiedene AWS Netzwerkpfade und passt die Verteilung dynamisch an, wenn Anzeichen einer Überlastung erkannt werden. Sie verwaltet auch die Neuordnung von Paketen auf der Empfängerseite.

Um sicherzustellen, dass ENA Express den Netzwerkverkehr wie vorgesehen verwalten kann, müssen die sendenden und empfangenden Instances sowie die Kommunikation zwischen ihnen alle folgenden Anforderungen erfüllen:

  • Sowohl sendende als auch empfangende Instance-Typen werden unterstützt. Weitere Informationen finden Sie in der Unterstützte Instance-Typen für ENA Express-Tabelle.

  • Sowohl für sendende als auch für empfangende Instances muss ENA Express konfiguriert sein. Wenn es Unterschiede in der Konfiguration gibt, kann es zu Situationen kommen, in denen der Datenverkehr standardmäßig auf die ENA Standardübertragung umgestellt wird. Das folgende Szenario zeigt, was in diesem Fall passieren kann.

    Szenario: Unterschiede in der Konfiguration

    Instance ENAExpress aktiviert UDPverwendet ENA Express
    Instance 1 Ja Ja
    Instance 2 Ja Nein

    In diesem Fall kann für den TCP Verkehr zwischen den beiden Instanzen ENA Express verwendet werden, da beide Instanzen dies aktiviert haben. Da eine der Instances jedoch nicht ENA Express für den UDP Datenverkehr verwendet, UDP verwendet die Kommunikation zwischen diesen beiden Instanzen die ENA Standardübertragung.

  • Die sendenden und empfangenden Instances müssen in derselben Availability Zone ausgeführt werden.

  • Der Netzwerkpfad zwischen den Instances darf keine Middleware-Boxen enthalten. ENAExpress unterstützt derzeit keine Middleware-Boxen.

  • (Nur Linux-Instanzen) Verwenden Sie die Treiberversion 2.2.9 oder höher, um das volle Bandbreitenpotenzial auszuschöpfen.

  • (Nur Linux-Instances) Verwenden Sie die Treiberversion 2.8 oder höher, um Metriken zu erstellen.

Wenn eine Anforderung nicht erfüllt ist, verwenden die Instanzen das UDP StandardprotokollTCP/, ohne jedoch SRD zu kommunizieren.

Lesen Sie die empfohlenen Best Practices für Treiber, um sicherzustellen, dass Ihr ENA Instance-Netzwerktreiber für optimale Leistung konfiguriert ist. Diese bewährten Methoden gelten auch für ENA Express. Weitere Informationen finden Sie im Leitfaden zu bewährten Methoden und zur Leistungsoptimierung für ENA Linux-Treiber auf der GitHub Website.

Anmerkung

Amazon EC2 bezeichnet die Beziehung zwischen einer Instance und einer Netzwerkschnittstelle, die an sie angehängt ist, als Anlage. ENADie Express-Einstellungen gelten für den Anhang. Wenn die Netzwerkschnittstelle von der Instanz getrennt wird, ist die Anlage nicht mehr vorhanden, und die ENA Express-Einstellungen, die für sie galten, sind nicht mehr gültig. Das Gleiche gilt, wenn eine Instance beendet wird, auch wenn die Netzwerkschnittstelle erhalten bleibt.

Nachdem Sie ENA Express für die Netzwerkschnittstellenanhänge sowohl auf der sendenden als auch auf der empfangenden Instance aktiviert haben, können Sie mithilfe von ENA Express-Metriken sicherstellen, dass Ihre Instances die Leistungsverbesserungen, die die SRD Technologie bietet, in vollem Umfang nutzen. Weitere Informationen zu ENA Express-Metriken finden Sie unterMetriken für ENA Express.

Unterstützte Instance-Typen für ENA Express

Die folgenden Tabs zeigen Instanztypen, die ENA Express unterstützen.

General purpose
Instance-Typ Architektur
m6a.12xlarge x86_64
m6a.16xlarge x86_64
m6a.24xlarge x86_64
m6a.32xlarge x86_64
m6a.48xlarge x86_64
m6a.metal x86_64
m6i.8xlarge x86_64
m6i.12xlarge x86_64
m6i.16xlarge x86_64
m6i.24xlarge x86_64
m6i.32xlarge x86_64
m6i.metal x86_64
m6id.8xlarge x86_64
m6id.12xlarge x86_64
m6id.16xlarge x86_64
m6id.24xlarge x86_64
m6id.32xlarge x86_64
m6id.metal x86_64
m7a.12xlarge x86_64
m7a.16xlarge x86_64
m7a.24xlarge x86_64
m7a.32xlarge x86_64
m7a.48xlarge x86_64
m7a.metal-48xl x86_64
m7g.12xlarge arm64
m7g.16xlarge arm64
m7g.metal arm64
m7gd.12xlarge arm64
m7gd.16xlarge arm64
m7gd.metal arm64
m7i.12xlarge x86_64
m7i.16xlarge x86_64
m7i.24xlarge x86_64
m7i.48xlarge x86_64
m7i.metal-24xl x86_64
m7i.metal-48xl x86_64
m8g.12xlarge arm64
m8g.16xlarge arm64
m8g.24xlarge arm64
m8g.48xlarge arm64
m8g.metal-24xl arm64
m8g.metal-48xl arm64
Compute optimized
Instance-Typ Architektur
c6a.12xlarge x86_64
c6a.16xlarge x86_64
c6a.24xlarge x86_64
c6a.32xlarge x86_64
c6a.48xlarge x86_64
c6a.metal x86_64
c6gn.16xlarge arm64
c6i.8xlarge x86_64
c6i.12xlarge x86_64
c6i.16xlarge x86_64
c6i.24xlarge x86_64
c6i.32xlarge x86_64
c6i.metal x86_64
c6id.8xlarge x86_64
c6id.12xlarge x86_64
c6id.16xlarge x86_64
c6id.24xlarge x86_64
c6id.32xlarge x86_64
c6id.metal x86_64
c7a.12xlarge x86_64
c7a.16xlarge x86_64
c7a.24xlarge x86_64
c7a.32xlarge x86_64
c7a.48xlarge x86_64
c7a.metal-48xl x86_64
c7g.12xlarge arm64
c7g.16xlarge arm64
c7g.metal arm64
c7gd.12xlarge arm64
c7gd.16xlarge arm64
c7gd.metal arm64
c7i.12xlarge x86_64
c7i.16xlarge x86_64
c7i.24xlarge x86_64
c7i.48xlarge x86_64
c7i.metal-24xl x86_64
c7i.metal-48xl x86_64
c8g.12xlarge arm64
c8g.16xlarge arm64
c8g.24xlarge arm64
c8g.48xlarge arm64
c8g.metal-24xl arm64
c8g.metal-48xl arm64
Memory optimized
Instance-Typ Architektur
r6a.12xlarge x86_64
r6a.16xlarge x86_64
r6a.24xlarge x86_64
r6a.32xlarge x86_64
r6a.48xlarge x86_64
r6a.metal x86_64
r6i.8xlarge x86_64
r6i.12xlarge x86_64
r6i.16xlarge x86_64
r6i.24xlarge x86_64
r6i.32xlarge x86_64
r6i.metal x86_64
r6id.8xlarge x86_64
r6id.12xlarge x86_64
r6id.16xlarge x86_64
r6id.24xlarge x86_64
r6id.32xlarge x86_64
r6id.metal x86_64
r7a.12xlarge x86_64
r7a.16xlarge x86_64
r7a.24xlarge x86_64
r7a.32xlarge x86_64
r7a.48xlarge x86_64
r7a.metal-48xl x86_64
r7g.12xlarge arm64
r7g.16xlarge arm64
r7g.metal arm64
r7gd.12xlarge arm64
r7gd.16xlarge arm64
r7gd.metal arm64
r7i.12xlarge x86_64
r7i.16xlarge x86_64
r7i.24xlarge x86_64
r7i.48xlarge x86_64
r7i.metal-24xl x86_64
r7i.metal-48xl x86_64
r8g.12xlarge arm64
r8g.16xlarge arm64
r8g.24xlarge arm64
r8g.48xlarge arm64
r8g.metal-24xl arm64
r8g.metal-48xl arm64
u7i-12tb.224xlarge x86_64
u7in-16tb.224xlarge x86_64
u7in-24tb.224xlarge x86_64
u7in-32tb.224xlarge x86_64
x2idn.16xlarge x86_64
x2idn.24xlarge x86_64
x2idn.32xlarge x86_64
x2idn.metal x86_64
x2iedn.8xlarge x86_64
x2iedn.16xlarge x86_64
x2iedn.24xlarge x86_64
x2iedn.32xlarge x86_64
x2iedn.metal x86_64
x8g.12xlarge arm64
x8g.16xlarge arm64
x8g.24xlarge arm64
x8g.48xlarge arm64
x8g.metal-24xl arm64
x8g.metal-48xl arm64
Accelerated computing
Instance-Typ Architektur
g6.48xlarge x86_64
g6e.12xlarge x86_64
g6e.24xlarge x86_64
g6e.48xlarge x86_64
Storage optimized
Instance-Typ Architektur
i4g.4xlarge arm64
i4g.8xlarge arm64
i4g.16xlarge arm64
i4i.8xlarge x86_64
i4i.12xlarge x86_64
i4i.16xlarge x86_64
i4i.24xlarge x86_64
i4i.32xlarge x86_64
i4i.metal x86_64
im4gn.4xlarge arm64
im4gn.8xlarge arm64
im4gn.16xlarge arm64

Voraussetzungen für Linux-Instances

Um sicherzustellen, dass ENA Express effektiv arbeiten kann, aktualisieren Sie die Einstellungen für Ihre Linux-Instance wie folgt.

  • Wenn Ihre Instance Jumbo-Frames verwendet, führen Sie den folgenden Befehl aus, um Ihre maximale Übertragungseinheit (MTU) auf 8900 einzustellen.

    [ec2-user ~]$ sudo ip link set dev eth0 mtu 8900
  • Erhöhen Sie die Ringgröße des Empfängers (Rx) wie folgt:

    [ec2-user ~]$ ethtool -G device rx 8192
  • Um die ENA Express-Bandbreite zu maximieren, konfigurieren Sie Ihre TCP Warteschlangenlimits wie folgt:

    1. Legen Sie das Limit für TCP kleine Warteschlangen auf 1 MB oder höher fest. Dadurch erhöht sich die Datenmenge, die für die Übertragung auf einem Socket in der Warteschlange steht.

      sudo sh -c 'echo 1048576 > /proc/sys/net/ipv4/tcp_limit_output_bytes'
    2. Deaktivieren Sie Byte-Warteschlangenlimits auf dem ETH-Gerät, wenn diese für Ihre Linux-Distribution aktiviert sind. Dadurch erhöht sich die Anzahl der für die Übertragung in der Gerätewarteschlange anstehenden Daten.

      sudo sh -c 'for txq in /sys/class/net/eth0/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'
      Anmerkung

      Der ENA Treiber für die Amazon Linux-Distribution deaktiviert standardmäßig Byte-Warteschlangenlimits.

Optimieren Sie die Leistung der ENA Express-Einstellungen auf Linux-Instances

Um Ihre Linux-Instance-Konfiguration auf optimale ENA Express-Leistung zu überprüfen, können Sie das folgende Skript ausführen, das im GitHub Amazon-Repository verfügbar ist:

https://github.com/amzn/amzn-ec2-ena-.sh utilities/blob/main/ena-express/check ena-express-settings

Das Skript führt eine Reihe von Tests durch und schlägt sowohl empfohlene als auch erforderliche Konfigurationsänderungen vor.