Comment évaluer le débit réseau entre les instances Linux Amazon EC2 dans un même Amazon VPC ?

Dernière mise à jour : 22/09/2020

Je veux 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). Comment faire ?

Brève description

Voici quelques facteurs qui peuvent affecter les performances réseau d'Amazon EC2 lorsque les instances se trouvent dans le même Amazon VPC :

  • Proximité physique des instances EC2. Des instances situées dans la même zone de disponibilité sont géographiquement plus proches les unes des autres. Des instances situées dans différentes zones de disponibilité d'une même région, des instances situées dans différentes régions du même continent et des instances situées dans différentes régions sur différents continents sont de plus en plus éloignées les unes des autres.
  • Unité de transmission maximale (MTU) des instances 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 une MTU de 1 500 octets. Toutes les instances Amazon EC2 de la génération actuelle prennent en charge les trames jumbo. En outre, les instances de la génération précédente, C3, G2, I2, M3 et R3, utilisent également les trames jumbo. Les trames Jumbo autorisent une MTU supérieure à 1 500 octets. Toutefois, dans certains cas, votre instance sera limitée à une MTU de 1 500 octets, même avec des trames jumbo. Pour plus d'informations, consultez la section Trames Jumbo (MTU de 9 001 octets).
  • Taille de votre instance EC2. Les grandes tailles d'instance pour un type d'instance offrent généralement de meilleures performances réseau que les tailles d'instance inférieures de même type. Pour plus d'informations, consultez la section Types d'instances Amazon EC2.
  • Prise en charge de la mise en réseau améliorée Amazon EC2 pour Linux, à l'exception des types d'instances T2 et M3. Pour en savoir plus, consultez la section Réseaux améliorés sur Linux. Pour plus d'informations sur l'activation de la mise en réseau améliorée sur votre instance, consultez la section Comment activer et configurer la mise en réseau améliorée sur mes instances EC2 ?
  • Prise en charge du calcul haute performance (HPC) Amazon EC2 en utilisant des groupes de placement. Le HPC offre une bande passante entièrement bisectionnelle et une faible latence permettant de prendre en charge les vitesses réseau maximales de 100 gigabits, en fonction du type d'instance. Pour connaître les performances réseau de chaque type d'instance, consultez la matrice des types d'instance AMI Linux Amazon. Pour plus d'informations, consultez la section Lancement d'instances dans un groupe de placement.
  • Instance à capacité extensible (instances T3, T3a et T2). Lorsqu'une instance extensible fonctionne en dessous de son niveau de performances de débit réseau de base, les crédits CPU s'accumulent. Ces crédits permettent aux instances à capacité extensible de dépasser temporairement leur débit réseau de base. Pour plus d'informations, consultez Instances à capacité extensible.

Les facteurs précédents peuvent entraîner une différence de performances réseau importante entre les différents environnements de cloud. Une bonne pratique consiste à évaluer et comparer régulièrement les performances réseau de votre environnement afin d'améliorer les performances des applications. Le test des performances réseau fournit de précieuses informations pour déterminer les types d'instances EC2, les tailles et les configurations qui correspondent le mieux à vos besoins. Vous pouvez exécuter des tests de performances réseau sur n'importe quelle combinaison d'instances de votre choix.

Pour plus d'informations, lancez une demande de support et demandez des spécifications de performances réseau supplémentaires pour les types d'instances spécifiques qui vous intéressent.

Solution

Avant de commencer les tests d'évaluation, lancez et configurez vos instances Amazon Linux EC2:

1.    Lancez deux instances Linux à partir desquelles vous pouvez exécuter le test des performances 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 VPC Amazon.

3.    (Facultatif) Si vous testez les performances réseau entre des instances qui ne prennent pas en charge les trames jumbo, suivez les étapes de la sectionUnité de transmission maximale (MTU) du réseau pour votre instance EC2 afin de vérifier et définir la MTU de votre instance.

4.    Connectez-vous aux instances pour vérifier que vous pouvez y accéder.

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

Dans certaines distributions, comme Amazon Linux, iperf fait partie du référentiel EPEL (Extra Packages for Enterprise Linux). Pour activer le référentiel EPEL, consultez la section Comment activer le référentiel EPEL de 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. Utilisez la version 2.x pour définir des points de référence pour les instances EC2 avec un débit élevé, car la version 2.x fournit une prise en charge multithread. Bien que la version 3.x prenne également en charge les flux parallèles en utilisant l'indicateur -P, la version 3.x est mono-thread et limitée par un seul processeur. Pour cette raison, la version 3.x nécessite plusieurs processus s'exécutant en parallèle pour générer le débit nécessaire sur des instances EC2 plus grandes. Pour plus d'informations, 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 des hôtes Linux RHEL 6, exécutez la commande suivante :

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

Pour installer iperf sur des 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 des hôtes Debian/Ubuntu, exécutez la commande suivante :

# apt-get install -y iperf

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

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

Test des performances réseau TCP entre les instances

Par défaut, iperf communique sur le port 5001 lors du test des performances TCP. Toutefois, vous pouvez configurer ce port en utilisant le 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 écoutant sur le port par défaut, ou spécifiez un autre port d'écoute à l'aide du commutateur -p. Remplacez 5001 par votre port, s'il est différent.

$ sudo iperf -s [-p 5001]

2.    Configurez une seconde instance en tant que client et exécutez 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 deux connexions parallèles :

#iperf -c 172.31.1.152 --parallel 2 -i 1 -t 2

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

En utilisant ces paramètres iperf spécifiés, la sortie affiche l'intervalle par flux client, les données transférées par flux client et la bande passante utilisée par chaque flux client. La sortie iperf suivante affiche les résultats des tests pour deux instances Linux EC2 c5n.18xlarge. La bande passante totale transmise entre toutes les connexions était de 9,6 Gbit/s :

------------------------------------------------------------
Client connecting to 172.31.1.152, TCP port 5001
TCP window size: 4.00 MByte (default)
------------------------------------------------------------
[ 3] local 172.31.8.116 port 43582 connected with 172.31.1.152 port 5001
[ 4] local 172.31.8.116 port 43584 connected with 172.31.1.152 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 597 MBytes 5.01 Gbits/sec
[ 3] 0.0- 1.0 sec 598 MBytes 5.02 Gbits/sec
[SUM] 0.0- 1.0 sec 1.17 GBytes 10.0 Gbits/sec
[ 3] 1.0- 2.0 sec 597 MBytes 5.01 Gbits/sec
[ 3] 0.0- 2.0 sec 1.17 GBytes 5.01 Gbits/sec
[ 4] 1.0- 2.0 sec 596 MBytes 5.00 Gbits/sec
[SUM] 1.0- 2.0 sec 1.16 GBytes 10.0 Gbits/sec
[ 4] 0.0- 2.0 sec 1.17 GBytes 5.00 Gbits/sec
[SUM] 0.0- 2.0 sec 2.33 GBytes 10.0 Gbits/sec

Test des performances réseau UDP entre les instances

Par défaut, iperf communique sur le port 5001 lors du test des performances UDP. Toutefois, le port que vous utilisez est configurable à l'aide du commutateur -p. Veillez à configurer vos groupes de sécurité pour autoriser la communication sur le port utilisé par iperf.

Remarque : la valeur par défaut pour UDP est de 1 Mbit/s par seconde, sauf si une autre bande passante est spécifiée.

1.    Configurez une instance en tant que serveur écoutant sur le port UDP par défaut, ou spécifiez 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, puis exécutez un test contre le serveur avec les paramètres souhaités. Par exemple, la commande suivante lance un test UDP sur l'instance de serveur spécifiée avec le paramètre -b ayant la valeur 5g, les performances réseau maximales qu'une instance c5n18xlarge peut fournir.

#iperf -c 172.31.1.152 -u -b 5g

La sortie affiche l'intervalle (de temps), le volume de données transférées, la bande passante atteinte, l'instabilité (l'écart de temps pour les arrivées régulières de datagrammes) et les pertes/le nombre total de datagrammes UDP :

Output:
------------------------------------------------------------
Client connecting to 172.31.1.152, UDP port 5001
Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 172.31.8.116 port 38942 connected with 172.31.1.152 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 5.70 GBytes 4.90 Gbits/sec
[ 3] Sent 4163756 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 5.68 GBytes 4.88 Gbits/sec 0.002 ms 14124/4163756 (0.34%)