Comment puis-je comparer le débit du réseau entre des instances Amazon EC2 Linux d’un même Amazon VPC ?

Lecture de 10 minute(s)
0

Je souhaite mesurer la bande passante du réseau entre les instances Linux Amazon Elastic Compute Cloud (Amazon EC2) dans le même Amazon Virtual Private Cloud (Amazon VPC).

Brève description

Plusieurs facteurs peuvent affecter les performances du réseau Amazon EC2 lorsque les instances se trouvent dans le même Amazon VPC :

  • ** La proximité physique des instances EC2 :** Les instances de la même zone de disponibilité sont aussi proches les unes des autres sur le plan géographique. Dans les scénarios suivants, les instances sont progressivement éloignées les unes des autres :
    Instances de différentes zones de disponibilité dans la même région AWS
    Instances de différentes régions du même continent
    Instances de différentes régions sur différents continents
  • Unité de transmission maximale (MTU) de l’instance EC2. La MTU d’une connexion réseau est la plus grande taille de paquet autorisée (en octets) que votre connexion peut transmettre. Tous les types d'instances EC2 prennent en charge 1 500 MTU. Toutes les instances Amazon EC2 de la génération actuelle prennent en charge les trames géantes.. Les instances de la génération précédente, C3, G2, I2, M3 et R3, utilisent également des trames géantes. Les trames géantes autorisent plus de 1 500 MTU. Cependant, dans certains cas, votre instance est limitée à 1 500 MTU même avec des trames géantes. Pour en savoir plus, reportez-vous à la section Trames géantes (9001 MTU).
  • Taille de votre instance EC2 : Les instances de plus grande taille pour un type d’instance offrent généralement de meilleures performances réseau que les instances de plus petite taille du même type. Pour en savoir plus, reportez-vous à la section Types d'instances EC2 d'Amazon.
  • Amazon EC2 a amélioré la prise en charge du réseau pour Linux : La prise en charge améliorée de la mise en réseau peut avoir un impact sur les performances des instances autres que les types d’instance T2 et M3. Pour en savoir plus, consultez Mise en réseau améliorée pour Linux. Pour en savoir plus sur la mise en réseau améliorée sur votre instance, reportez-vous à la section Comment puis-je activer et configurer la mise en réseau améliorée sur mes instances EC2 ?
  • Prise en charge de calcul haute performance (HPC) d’Amazon EC2 utilisant des groupes de placement : Le HPC fournit une bande passante à bissection complète et une faible latence. Le HPC permet de prendre en charge des débits réseau allant jusqu’à 100 gigabits, en fonction du type d’instance. Pour examiner les performances du réseau pour chaque type d’instance, consultez Matrice des types d’instance AMI d’Amazon Linux. Pour plus d’informations, consultez Groupes de placement.
  • L’instance utilise un mécanisme de crédit d’E/S réseau pour allouer la bande passante du réseau : Les instances désignées par un symbole dans la colonne Performance réseau dans Instances à usage général – Performance réseau peuvent atteindre la performance réseau maximale désignée. Toutefois, ces instances utilisent un mécanisme de crédit d'E/S réseau pour allouer la bande passante aux instances en fonction de l'utilisation moyenne de la bande passante. Les performances du réseau varient donc pour ces instances.

En raison de ces facteurs, des différences de performances significatives peuvent exister entre les environnements cloud. Une bonne pratique consiste à évaluer régulièrement les performances du réseau de votre environnement et à établir une base de référence afin d’améliorer les performances des applications. Le test des performances du réseau permet de déterminer les types, les tailles, et les configurations d’instances EC2 qui répondent à vos besoins. Les tests de performance réseau peuvent être effectués sur n’importe quelle combinaison d’instances.

Pour en savoir plus, ouvrez un dossier d'assistance AWS et demandez des spécifications de performances réseau supplémentaires pour les types d'instances spécifiques qui vous intéressent.

Résolution

Vous devez lancer et configurer vos instances EC2 Linux avant de commencer les tests de référence :

  1. Lancez deux instances Linux à partir desquelles vous pourrez effectuer des tests de performance réseau.
  2. Vérifiez que les instances prennent en charge la mise en réseau améliorée pour Linux, et qu’elles se trouvent dans le même Amazon VPC.
  3. (Facultatif) Si vous effectuez des tests de réseau entre des instances qui ne prennent pas en charge les trames jumbo, suivez les étapes de Unité de transmission maximale (MTU) du réseau pour votre instance EC2.
  4. Connectez-vous aux instances pour vérifier que vous pouvez y accéder.

Installer l'outil d'analyse comparative du réseau iperf sur les deux instances

Dans certaines distributions comme Amazon Linux, iperf fait partie du référentiel Extra Packages for Enterprise Linux (EPEL). Pour activer le référentiel EPEL, reportez-vous à la section Comment puis-je activer le référentiel EPEL pour mon instance Amazon EC2 qui exécute CentOS, RHEL ou Amazon Linux ?

Remarque : la commande iperf fait référence à la version 2.x. La commande iperf3 fait référence à la version 3.x. La version 2.x prend en charge le multithread et doit donc être utilisée pour évaluer les instances EC2 à haut débit. La version 3.x prend également en charge les flux parallèles avec l’indicateur -P. Cependant, elle est monotâche et limitée par un seul processeur. Pour cette raison, la version 3.x a besoin de plusieurs processus qu’elle exécute en parallèle pour obtenir le débit nécessaire sur des instances EC2 plus importantes. Pour en savoir plus, consultez iperf2/iperf3 sur le site Web d’ESnet.

Connectez-vous à vos instances Linux, puis exécutez les commandes suivantes pour installer iperf.

Pour installer iperf sur les hôtes Linux RHEL 6, exécutez la commande suivante :

# yum -y install  https://dl.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm  && yum -y install iperf

Pour installer iperf sur les hôtes Linux RHEL 7, exécutez la commande suivante :

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && yum -y install iperf

Pour installer iperf sur les hôtes Debian/Ubuntu, exécutez la commande suivante :

# apt-get install -y iperf

Pour installer iperf sur les hôtes CentOS 6/7, exécutez la commande suivante :

# yum -y install epel-release && yum -y install iperf

Amazon Linux 2023

Comme Amazon Linux 2023 (AL2023) ne prend pas en charge EPEL, vous ne pouvez pas télécharger l'utilitaire iperf par le biais du référentiel EPEL. Pour en savoir plus, reportez-vous à la sectionExtra Packages for Enterprise Linux (EPEL).

En revanche, vous pouvez télécharger et installer iperf pour AL2023 manuellement :

  1. Installez les outils de développement et Git :

    sudo yum groupinstall "Development Tools"
    sudo yum install git
  2. Clonez le code iperf :

    cd /usr/local/
    sudo git clone https://git.code.sf.net/p/iperf2/code iperf2-code
  3. Créez et installez le package :

    cd /usr/local/iperf2-codesudo
    ./configure
    sudo make
    sudo make install

Tester les performances du réseau TCP entre les instances

Par défaut, iperf communique au moyen du port 5001 lorsqu'il teste les performances TCP. Vous pouvez toutefois configurer ce port à l'aide du commutateur -p. Veillez à configurer vos groupes de sécurité pour autoriser la communication sur le port utilisé par iperf.

  1. Configurez une instance en tant que serveur pour écouter sur le port par défaut, ou spécifiez un port d'écoute alternatif avec le commutateur -p. Remplacez 5001 par votre port, s'il est différent :

    $ sudo iperf -s [-p 5001]
  2. Configurez une deuxième instance en tant que client et effectuez un test sur le serveur avec les paramètres souhaités. Par exemple, la commande suivante lance un test TCP sur l’instance de serveur spécifiée avec 40 connexions parallèles :

    $ iperf -c 172.31.30.41 --parallel 40 -i 1 -t 2

     
    Remarque : pour un test bidirectionnel avec iperf (version 2), utilisez l'option -r côté client.

La sortie utilise ces paramètres pour montrer l'intervalle par flux de clients, les données transférées par flux de clients et la bande passante qu'utilise chaque flux de clients. La sortie iperf suivante montre les résultats des tests pour deux instances Linux EC2 c5n.18xlarge lancées dans un groupe de placement du cluster. La bande passante totale transmise sur toutes les connexions est de 97,6 Gbit/s/seconde :

------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, TCP port 5001
TCP window size:  975 KByte (default)
------------------------------------------------------------------------------------
[  8] local 172.31.20.27 port 49498 connected with 172.31.30.41 port 5001
[ 38] local 172.31.20.27 port 49560 connected with 172.31.30.41 port 5001
[ 33] local 172.31.20.27 port 49548 connected with 172.31.30.41 port 5001
[ 40] local 172.31.20.27 port 49558 connected with 172.31.30.41 port 5001
[ 36] local 172.31.20.27 port 49554 connected with 172.31.30.41 port 5001
[ 39] local 172.31.20.27 port 49562 connected with 172.31.30.41 port 5001
...
[SUM]  0.0- 2.0 sec  22.8 GBytes  97.6 Gbits/sec

Test des performances du réseau du protocole UDP entre les instances

Par défaut, iperf communique au moyen du port 5001 lorsqu'il teste les performances du protocole UDP. Vous pouvez toutefois utiliser le commutateur -p pour configurer votre port. Veillez à configurer vos groupes de sécurité pour autoriser la communication sur le port utilisé par iperf.

Remarque : la valeur par défaut pour le protocole UDP est de 1 Mbit par seconde, sauf si vous spécifiez une bande passante différente.

  1. Configurez une instance en tant que serveur pour écouter sur le port UDP par défaut. Vous pouvez également spécifier un autre port d’écoute à l’aide du commutateur -p. Remplacez 5001 par votre port, s’il est différent :

    $ sudo iperf -s -u [-p 5001]
  2. Configurez une deuxième instance en tant que client. Exécutez ensuite un test sur le serveur avec les paramètres souhaités. L’exemple suivant exécute un test du protocole UDP sur l’instance de serveur spécifiée avec le paramètre -b défini sur 5g. Le paramètre -b modifie la bande passante à 5g par rapport à la valeur par défaut de 1 Mbit par seconde. 5g est la performance réseau maximale qu’une instance c5n18xlarge peut fournir pour un flux de trafic unique au sein d’un VPC.
    Remarque : le protocole UDP est déconnecté et n'a pas les algorithmes de contrôle de congestion du protocole TCP. Lors des tests avec iperf, la bande passante obtenue avec le protocole UDP peut être inférieure à la bande passante obtenue avec TCIP.

    # iperf -c 172.31.1.152 -u -b 5g

Voici un exemple de sortie du test avec le protocole UDP :

$ iperf -c 172.31.30.41 -u -b 5g
------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, UDP port 5001
Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------------------------------
[  3] local 172.31.20.27 port 39022 connected with 172.31.30.41 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec
[  3] Sent 4251700 datagrams
[  3] Server Report:
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec   0.003 ms 1911/4251700 (0.045%)
[  3] 0.00-10.00 sec  1 datagrams received out-of-order

Cette sortie affiche les valeurs suivantes :

  • intervalle (temps)
  • Quantité de données transférées
  • Bande passante atteinte
  • Jitter (écart dans le temps nécessaire à l'arrivée périodique des grammes de données)
  • perte et total des datagrammes du protocole UDP

Informations connexes

Test de disque à l’aide d’iperf3 sur le site Web d’ESnet

Réglage du réseau sur le site Web d’ESnet

Comparaison des outils de débit sur le site Web d’ESnet

iperf2 sur le site SourceForge

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois