Considérations relatives au système Nitro en vue de l’optimisation des performances - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Considérations relatives au système Nitro en vue de l’optimisation des performances

Le système Nitro est un ensemble de composants matériels et logiciels conçus pour AWS offrir des performances, une disponibilité et une sécurité élevées. Le système Nitro propose des fonctionnalités de type « métal nu » qui éliminent les frais généraux de virtualisation et prennent en charge les charges de travail qui nécessitent un accès complet au matériel hôte. Pour plus d’informations, consultez la rubrique Système Nitro AWS.

Tous les types d' EC2 instances de la génération actuelle exécutent le traitement des paquets réseau sur les cartes EC2 Nitro. Cette rubrique couvre le traitement de haut niveau des paquets sur la carte Nitro, les aspects communs de l’architecture et de la configuration du réseau qui ont un impact sur les performances du traitement des paquets, et les actions que vous pouvez entreprendre pour atteindre des performances maximales pour vos instances basées sur la carte Nitro.

Les cartes Nitro gèrent toutes les entrées et sorties (I/O) interfaces, such as those needed for Virtual Private Clouds (VPCs). For all of the components that send or receive information over the network, the Nitro cards act as a self-contained computing device for I/Otrafic) physiquement séparées de la carte mère du système sur laquelle s'exécutent les charges de travail des clients.

Flux de paquets sur les cartes Nitro

EC2 les instances basées sur le système Nitro disposent de capacités d'accélération matérielle qui permettent un traitement des paquets plus rapide, tel que mesuré par le débit de paquets par seconde (PPS). Lorsqu’une carte Nitro effectue l’évaluation initiale d’un nouveau flux, elle enregistre des informations qui sont les mêmes pour tous les paquets du flux, comme les groupes de sécurité, les listes de contrôle d’accès et les entrées de la table de routage. Lorsqu’il traite d’autres paquets pour le même flux, il peut utiliser les informations sauvegardées afin de réduire les frais généraux de ces paquets.

Votre débit de connexion est mesuré par le nombre de connexions par seconde (CPS). Chaque nouvelle connexion nécessite des frais généraux de traitement supplémentaires qui doivent être pris en compte dans les estimations de la capacité de charge de travail. Il est important de prendre en compte les mesures CPS et PPS lorsque vous concevez vos charges de travail.

Comment une connexion est-elle établie ?

Lorsqu’une connexion est établie entre une instance basée sur Nitro et un autre point de terminaison, la carte Nitro évalue le flux complet pour le premier paquet envoyé ou reçu entre les deux points de terminaison. Pour les paquets suivants du même flux, une nouvelle évaluation complète n’est généralement pas nécessaire. Il y a cependant des exceptions. Pour plus d’informations sur les exceptions, consultez Paquets n’utilisant pas l’accélération matérielle.

Les propriétés suivantes définissent les deux points de terminaison et le flux de paquets entre eux. L’ensemble de ces cinq propriétés est connu sous le nom de flux composé de 5-uplets.

  • IP Source

  • Port source

  • IP de destination

  • Port de destination

  • Protocole de communication

La direction du flux de paquets est appelée entrée (entrant) et sortie (sortant). Les descriptions de haut niveau suivantes résument le flux de paquets du réseau de bout en bout.

  • Entrée : lorsqu’une carte Nitro traite un paquet réseau entrant, elle l’évalue par rapport aux règles du pare-feu dynamique et aux listes de contrôle d’accès. Elle suit la connexion, la mesure et effectue d’autres actions le cas échéant. Ensuite, elle transmet le paquet à sa destination sur l’unité centrale de l’hôte.

  • Sortie : lorsqu’une carte Nitro traite un paquet réseau sortant, elle recherche la destination de l’interface distante, évalue diverses fonctions VPC, applique des limites de débit et effectue d’autres actions applicables. Ensuite, elle transmet le paquet à sa destination suivante sur le réseau.

Concevez votre réseau pour obtenir des performances optimales

Pour tirer parti des capacités de performance de votre système Nitro, vous devez comprendre quels sont vos besoins en matière de traitement réseau et comment ces besoins affectent la charge de travail de vos ressources Nitro. Vous pouvez alors concevoir des performances optimales pour votre réseau. Les paramètres de votre infrastructure et la conception ainsi que la configuration de la charge de travail de l’application peuvent avoir un impact sur le traitement des paquets et les débits de connexion. Par exemple, si votre application a un débit élevé d’établissement de connexions, comme un service DNS, un pare-feu ou un routeur virtuel, elle aura moins d’occasions de profiter de l’accélération matérielle qui ne se produit qu’après l’établissement de la connexion.

Vous pouvez configurer les paramètres des applications et de l’infrastructure pour rationaliser les charges de travail et améliorer les performances du réseau. Cependant, tous les paquets ne sont pas éligibles à l’accélération. Le système Nitro utilise le flux complet du réseau pour les nouvelles connexions et pour les paquets qui ne sont pas éligibles à l’accélération.

Le reste de cette section se concentre sur les considérations relatives à la conception des applications et de l’infrastructure afin de s’assurer que les paquets circulent le plus possible sur le chemin accéléré.

Considérations relatives à la conception du réseau pour le système Nitro

Lorsque vous configurez le trafic réseau pour votre instance, il y a de nombreux aspects à prendre en compte qui peuvent affecter les performances du PPS. Une fois qu’un flux est établi, la majorité des paquets qui entrent ou sortent régulièrement sont éligibles à l’accélération. Toutefois, des exceptions existent pour garantir que la conception de l’infrastructure et les flux de paquets continuent à respecter les normes du protocole.

Pour obtenir les meilleures performances de votre carte Nitro, vous devez examiner attentivement les avantages et les inconvénients des détails de configuration suivants pour votre infrastructure et vos applications.

Considérations relatives à l’infrastructure

La configuration de votre infrastructure peut affecter le flux de paquets et l’efficacité du traitement. La liste suivante comprend quelques considérations importantes.

Configuration de l’interface réseau avec asymétrie

Les groupes de sécurité utilisent le suivi des connexions pour suivre les informations sur le trafic qui circule vers et depuis l’instance. Le routage asymétrique, où le trafic entre dans une instance par une interface réseau et en sort par une autre interface réseau, peut réduire les performances maximales qu’une instance peut atteindre si les flux sont suivis. Pour plus d’informations sur le suivi des connexions des groupes de sécurité, les connexions non suivies et les connexions suivies automatiquement, consultez Suivi des connexions du groupe de EC2 sécurité Amazon.

Pilotes de réseau

Les pilotes de réseau sont régulièrement mis à jour et publiés. Si vos pilotes sont obsolètes, cela peut nuire considérablement aux performances. Maintenez vos pilotes à jour pour vous assurer que vous disposez des derniers correctifs et que vous pouvez profiter des améliorations de performance, telles que la fonctionnalité de chemin accéléré qui n’est disponible que pour la dernière génération de pilotes. Les pilotes antérieurs ne prennent pas en charge la fonctionnalité de chemin accéléré.

Pour profiter de la fonctionnalité de chemin accéléré, nous vous recommandons d’installer la dernière version du pilote ENA sur vos instances.

Instances Linux : pilote ENA Linux 2.2.9 ou version ultérieure. Pour installer ou mettre à jour le pilote ENA Linux depuis le GitHub référentiel Amazon Drivers, consultez la section Compilation du pilote du fichier readme.

Instances Windows : pilote ENA Windows 2.0.0 ou version ultérieure. Pour installer ou mettre à jour le pilote ENA Windows, consultez Installation du pilote ENA sur les instances EC2 Windows.

Distance entre les points de terminaison

Une connexion entre deux instances situées dans la même zone de disponibilité peut traiter plus de paquets par seconde qu’une connexion entre régions en raison du fenêtrage TCP au niveau de la couche d’application, qui détermine la quantité de données pouvant être transmises à un moment donné. De longues distances entre les instances augmentent la latence et réduisent le nombre de paquets que les points de terminaison peuvent traiter.

Limite de file d'octets (BQL)

BQL est une fonctionnalité qui limite le nombre d'octets transmis à la carte Nitro afin de réduire les files d'attente. BQL est désactivé par défaut dans les pilotes ENA, dans les systèmes d'exploitation Amazon Linux et dans la plupart des distributions Linux. Si le BQL et le remplacement du proxy de fragments sont tous deux activés, cela peut entraîner des limitations de performances en limitant le nombre d'octets transmis à Nitro avant que tous les fragments ne soient traités.

Considérations relatives à la conception de l’application

Certains aspects de la conception et de la configuration de l’application peuvent affecter l’efficacité de votre traitement. La liste suivante comprend quelques considérations importantes.

Taille du paquet

Des paquets de plus grande taille peuvent augmenter le débit des données qu’une instance peut envoyer et recevoir sur le réseau. Amazon EC2 prend en charge les trames jumbo de 9001 octets, mais d'autres services peuvent imposer des limites différentes. Des paquets plus petits peuvent augmenter le taux de traitement des paquets, mais cela peut réduire la largeur de bande maximale atteinte lorsque le nombre de paquets dépasse les autorisations PPS.

Si la taille d’un paquet dépasse l’unité de transmission maximale (MTU) d’un saut de réseau à réseau, un routeur sur le chemin peut le fragmenter. Les fragments de paquets qui en résultent sont considérés comme des exceptions et sont normalement traités au rythme standard (et non accéléré). Cela peut entraîner des variations dans vos performances. Cependant, vous pouvez remplacer le comportement standard des paquets fragmentés sortants par le paramètre du mode proxy fragmenté. Pour de plus amples informations, veuillez consulter Optimisez les performances du réseau sur votre système Nitro. Nous vous recommandons d’évaluer votre topologie lorsque vous configurez la MTU.

Compromis de protocole

Les protocoles fiables comme TCP ont plus de frais généraux que les protocoles non fiables comme UDP. La réduction des frais généraux et le traitement simplifié du réseau dans le cadre du protocole de transport UDP peuvent se traduire par un taux de PPS plus élevé, mais au détriment de la fiabilité de la livraison des paquets. Si la fiabilité de la livraison des paquets n’est pas essentielle pour votre application, le protocole UDP peut être une bonne option.

Micro-éclatement

On parle de micro-éclatement lorsque le trafic dépasse les autorisations pendant de brèves périodes de temps au lieu d’être réparti uniformément. Ce phénomène se produit généralement à l’échelle de la microseconde.

Par exemple, supposons que vous disposiez d’une instance capable d’envoyer jusqu’à 10 Gbit/s, et que votre application envoie la totalité des 10 Gbit/s en une demi-seconde. Ce micro-éclatement dépasse la capacité allouée pendant la première demi-seconde et ne laisse rien pour le reste de la seconde. Même si vous avez envoyé 10 Go dans un délai d’une seconde, les tolérances dans la première demi-seconde peuvent entraîner la mise en file d’attente ou l’abandon de paquets.

Vous pouvez utiliser un planificateur de réseau tel que Linux Traffic Control pour vous aider à rythmer votre débit et éviter de mettre des paquets en file d’attente ou de les abandonner en raison du micro-éclatement.

Nombre de flux

Un flux unique est limité à 5 Gbit/s, sauf s’il fait partie d’un groupe de placement du cluster qui prend en charge jusqu’à 10 Gbit/s, ou s’il utilise ENA Express, qui prend en charge jusqu’à 25 Gbit/s.

De même, une carte Nitro peut traiter plus de paquets à travers plusieurs flux qu’en utilisant un seul flux. Pour atteindre la vitesse maximale de traitement des paquets par instance, nous recommandons d’utiliser au moins 100 flux sur des instances ayant une bande passante agrégée de 100 Gbit/s ou plus. Au fur et à mesure que les capacités de la bande passante globale augmentent, le nombre de flux nécessaires pour atteindre les taux de traitement maximaux augmente également. L’analyse comparative vous aidera à déterminer la configuration dont vous avez besoin pour atteindre des taux de pointe sur votre réseau.

Files d'attente de l'adaptateur réseau Elastic (ENA)

L'ENA (Elastic Network Adapter) utilise plusieurs files d'attente de réception (Rx) et de transmission (Tx) (files ENA) pour améliorer les performances du réseau et l'évolutivité des instances. EC2 Ces files d'attente gèrent efficacement le trafic réseau en équilibrant la charge des données envoyées et reçues entre les files d'attente disponibles.

Pour de plus amples informations, veuillez consulter files d'attente ENA.

Frais généraux liés à la fonctionnalisation

Des fonctionnalités telles que le Traffic Mirroring et ENA Express peuvent ajouter des frais généraux de traitement, ce qui peut réduire les performances absolues de traitement des paquets. Vous pouvez limiter l’utilisation des fonctionnalités ou les désactiver pour augmenter les taux de traitement des paquets.

Suivi des connexions afin de maintenir l’état

Vos groupes de sécurité utilisent le suivi des connexions pour stocker des informations sur le trafic vers et depuis l’instance. Le suivi des connexions applique des règles à chaque flux de trafic réseau afin de déterminer si le trafic est autorisé ou refusé. La carte Nitro utilise le suivi de flux pour maintenir l’état du flux. Au fur et à mesure que des règles de groupe de sécurité sont appliquées, l’évaluation du flux nécessite plus de travail.

Note

Tous les flux de trafic du réseau ne sont pas suivis. Si une règle de groupe de sécurité est configurée avec Connexions non suivies, aucun travail supplémentaire n’est nécessaire, sauf pour les connexions qui sont automatiquement suivies afin de garantir un routage symétrique lorsqu’il existe plusieurs chemins de réponse valides.

Paquets n’utilisant pas l’accélération matérielle

Tous les paquets ne peuvent pas bénéficier de l’accélération matérielle. Le traitement de ces exceptions implique une certaine surcharge de traitement qui est nécessaire afin de garantir l’intégrité des flux de votre réseau. Les flux de réseau doivent répondre de manière fiable aux normes de protocole, se conformer aux changements dans la conception du VPC et acheminer les paquets uniquement vers les destinations autorisées. Cependant, les frais généraux réduisent vos performances.

Fragments de paquets

Comme indiqué dans la section Considérations relatives aux applications, les fragments de paquets qui résultent de paquets dépassant la MTU du réseau sont généralement traités comme des exceptions et ne peuvent pas tirer parti de l'accélération matérielle. Cependant, vous pouvez contourner les limites relatives aux fragments de sortie en utilisant le mode proxy de fragments, en fonction de la version de votre pilote. Pour plus d'informations, consultez les actions que vous pouvez entreprendre dans la Optimisez les performances du réseau sur votre système Nitro section.

Connexions inactives

Lorsqu’une connexion n’a aucune activité pendant un certain temps, même si elle n’a pas atteint son délai d’attente, le système peut la déprioriser. Ensuite, si des données arrivent après que la connexion a été dé-priorisée, le système doit les traiter comme une exception afin de se reconnecter.

Pour gérer vos connexions, vous pouvez utiliser les délais de suivi des connexions afin de fermer les connexions inactives. Vous pouvez également utiliser les messages de maintien de connexion (keepalives) de TCP pour maintenir les connexions inactives ouvertes. Pour de plus amples informations, veuillez consulter Délai de suivi d’inactivité de la connexion.

Mutation VPC

Les mises à jour des groupes de sécurité, des tables de routage et des listes de contrôle d’accès doivent toutes être réévaluées au cours du processus de traitement afin de s’assurer que les entrées de routage et les règles des groupes de sécurité s’appliquent toujours comme prévu.

Flux ICMP

Le protocole ICMP (Internet Control Message Protocol) est un protocole de couche réseau que les appareils réseau utilisent pour diagnostiquer les problèmes de communication du réseau. Ces paquets utilisent toujours le flux complet.

Débits L2 asymétriques

Les plateformes NitroV3 et antérieures n'utilisent pas l'accélération matérielle pour le trafic entre deux ENIs dans le même sous-réseau où un ENI utilise le routeur de passerelle par défaut et l'autre non. Les plateformes NitroV4 et ultérieures utilisent l'accélération matérielle dans ce scénario. Pour de meilleures performances sur NitroV3 ou des plateformes antérieures, assurez-vous que le routeur de passerelle par défaut utilisé correspond aux deux ENIs ou que ceux-ci se ENIs trouvent dans des sous-réseaux différents.

Optimisez les performances du réseau sur votre système Nitro

Vous pouvez optimiser les performances de votre réseau sur le système Nitro en ajustant les paramètres réseau.

Considérations

Avant de prendre des décisions en matière de conception ou d’ajuster les paramètres du réseau sur votre instance, nous vous recommandons de suivre les étapes suivantes afin de vous assurer que vous obtiendrez le meilleur résultat possible :

  1. Découvrez les avantages et les inconvénients des mesures que vous pouvez prendre afin d’améliorer les performances en examinant Considérations relatives à la conception du réseau pour le système Nitro.

    Pour en savoir plus et connaître les meilleures pratiques relatives à la configuration de votre instance sous Linux, consultez le guide des meilleures pratiques et de l'optimisation des performances du pilote ENA Linux sur GitHub.

  2. Comparez vos charges de travail avec le nombre de flux actifs maximaux afin de déterminer une base de référence pour la performance de votre application. Avec une base de performance, vous pouvez tester des variations dans vos paramètres ou la conception de l’application pour comprendre quelles considérations auront le plus d’impact, en particulier si vous prévoyez d’augmenter ou de réduire la taille de l’application.

Régler les performances du PPS

La liste suivante contient des actions que vous pouvez entreprendre afin d’optimiser les performances de votre PPS, en fonction des besoins de votre système.

  • Réduisez la distance physique entre deux instances. Lorsque les instances d’envoi et de réception sont situées dans la même zone de disponibilité ou utilisent des groupes de placement du cluster, vous pouvez réduire le nombre de sauts qu’un paquet doit effectuer pour se déplacer d’un point de terminaison à l’autre.

  • Utilisez Connexions non suivies.

  • Utilisez le protocole UDP pour le trafic réseau.

  • Pour les EC2 instances dont la bande passante cumulée est supérieure ou égale à 100 Gbit/s, répartissez la charge de travail sur au moins 100 flux individuels afin de répartir le travail de manière uniforme sur la carte Nitro.

  • Pour dépasser la limite PPS des fragments de sortie sur les EC2 instances, vous pouvez activer le mode proxy de fragments (en fonction de la version de votre pilote). Ce paramètre permet d'évaluer les paquets fragmentés dans le chemin de traitement, dépassant ainsi la limite PPS de sortie de 1024. Lorsque vous chargez le pilote, exécutez l'une des commandes suivantes pour activer ou désactiver le mode proxy fragmenté :

    Activer le mode proxy de fragments

    sudo insmod ena.ko enable_frag_bypass=1

    Désactiver le mode proxy de fragments

    sudo insmod ena.ko enable_frag_bypass=0

Configurer l'allocation de files d'attente ENA

Sur les types d'instances pris en charge, vous pouvez répartir ces files d'attente de manière dynamique entre les interfaces réseau Elastic (ENIs). L'allocation flexible des files d'attente ENA optimise la distribution des ressources, permettant ainsi une utilisation maximale des vCPU. Les charges de travail à hautes performances réseau nécessitent généralement plusieurs files d'attente ENA. Pour de plus amples informations, veuillez consulter files d'attente ENA.

Surveiller la performance des instances Linux

Vous pouvez utiliser les métriques Ethtool sur les instances Linux afin de surveiller les indicateurs de performance du réseau de l’instance, tels que la bande passante, le taux de paquets et le suivi des connexions. Pour de plus amples informations, veuillez consulter Surveillez les performances du réseau pour les paramètres ENA de votre EC2 instance.