Comment résoudre des problèmes de performance réseau entre des instances EC2 Linux ou Windows dans un VPC et sur un hôte sur site via la passerelle Internet ?

Lecture de 13 minute(s)
0

Il existe des problèmes de perte de paquets ou de latence entre mes instances Amazon Elastic Compute Cloud (Amazon EC2) et l'hôte sur site via la passerelle Internet. Comment résoudre ces problèmes de performances réseau ?

Brève description

Pour diagnostiquer les problèmes de réseau tels que la perte de paquets ou la latence, commencez par tester le réseau afin d'isoler la source du problème. La résolution suivante peut aider à déterminer si la source du problème est un réseau ou une application. Il est recommandé de comparer les résultats de performances afin de pouvoir comparer les résultats lorsque vous observez les problèmes de performances.

Avant de procéder au dépannage, vérifiez les éléments suivants :

  • Veillez à ce que les utilitaires réseau soient installés sur les deux points de terminaison (l'instance EC2 et l'hôte sur site).
  • Utilisez une instance EC2 qui prend en charge les réseaux améliorés et assurez-vous que les pilotes soient à jour. Les réseaux améliorés fournissent des E/S plus élevées avec une faible utilisation de l'UC, ce qui permet d'éviter les problèmes au niveau de l'instance lors de l'exécution des tests de performances. Si les réseaux améliorés ne sont pas activés, consultez Réseaux améliorés sous Linux ou Réseaux améliorés sous Windows.
  • Connectez-vous à votre instance EC2 pour accéder aux instances et assurez-vous qu'il existe une connectivité de bout en bout entre votre instance EC2 et votre hôte sur site.

Résolution

Installez les outils suivants pour dépanner et tester votre réseau :

  • AWSSupport-SetupIPMonitoringFromVPC pour collecter des métriques réseau telles que la perte de paquets, la latence, le MTR, le tcptraceroute et le tracepath.
  • MTR pour vérifier la perte de paquets ICMP ou TCP et les problèmes de latence.
  • Traceroute pour déterminer les problèmes de latence ou de routage.
  • Hping3 pour déterminer la perte de paquets TCP de bout en bout et les problèmes de latence.
  • Tcpdump pour analyser les échantillons de capture de paquets.

Examinez les sauts sur traceroute ou les rapports MTR en adoptant une approche de bas en haut. Par exemple, vérifiez les pertes sur le dernier saut ou la dernière destination, puis examinez les sauts suivants. Si le problème de perte de paquets ou de latence continue jusqu'au dernier saut, il s'agit éventuellement d'un problème de réseau ou de routage. La perte de paquets ou la latence sur un saut du chemin peut se produire s'il y a un problème avec la limitation de débit du plan de contrôle sur ce nœud. Vérifiez si le dernier saut signalé correspond à la destination indiquée dans la commande. Si ce n'est pas le cas, il s'agit peut-être d'un problème provoqué par un groupe de sécurité restrictif.

Testez les performances avec AWSSupport-SetupIPMonitoringFromVPC

Cet outil intégré collecte de nombreuses métriques dont vous avez besoin pour dépanner votre réseau. Pour plus d'informations, consultez Outil de débogage pour la connectivité depuis Amazon VPC.

Dépannage des problèmes de performances pour les instances Linux

Consultez les statistiques de performances de Linux

Si vous avez accès à l'instance source ou de destination, vérifiez s'il y a des problèmes liés à l'UC, à l'utilisation de la mémoire et à la charge moyenne.

Testez les performances à l’aide de MTR

La commande MTR Linux fournit une sortie continue et mise à jour. Cette sortie vous permet d'analyser les performances du réseau. Cet outil de diagnostic combine les fonctionnalités des utilitaires traceroute et ping. Dans la plupart des distributions Linux traceroute et MTR sont préinstallés. Vous pouvez également les télécharger depuis le gestionnaire de package de logiciels de votre distribution.

Pour installer MTR, exécutez les commandes suivantes:

Amazon Linux :

sudo yum install mtr

Ubuntu :

sudo apt-get install mtr-tiny

Pour tester les performances de votre réseau à l’aide de MTR, exécutez ce test de manière bidirectionnelle entre l’adresse IP publique de vos instances EC2 et votre hôte sur site. Le chemin entre les nœuds d’un réseau TCP/IP peut changer si la direction est inversée. Par conséquent, il est important d’obtenir des résultats MTR dans les deux directions. Vous pouvez utiliser un traçage basé sur TCP au lieu d'ICMP car la plupart des appareils Internet annulent la priorité des demandes trace basées sur ICMP.

Examiner votre perte de paquets. La perte de paquets sur un seul saut n’indique généralement pas un problème. La perte peut résulter de la stratégie d’un plan de contrôle entraînant l’émission de messages «ICMP time exceeded ». Si vous remarquez une perte de paquets durable allant jusqu’au saut de destination, ou une perte de paquets sur plusieurs sauts, cette perte peut-être indiquer l’existence d’un problème.

Remarque : il est courant que certaines requêtes expirent.

MTR basé sur ICMP :

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report

MTR basé sur TCP :

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

L’argument -T exécute un MTR basé sur TCP et l’option --report place le MTR en mode rapport. MTR s’exécute pour le nombre de cycles spécifié par l’option -c. Imprimez les statistiques, puis quittez.

Remarque : Le MTR basé sur le TCP teste le port TCP de destination 80, puis un port TCP de destination spécifique, ajouté par -P, suivi du numéro de port. Voici un exemple du port TCP 443 de destination MTR :

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> -P 443 --report

Tester les performances à l'aide de traceroute

L'utilitaire traceroute de Linux identifie le chemin suivi entre un nœud client et le nœud de destination. L’utilitaire enregistre pour chaque routeur le temps de réponse en millisecondes à la requête. L'utilitaire calcule également le temps que met chaque saut pour atteindre sa destination.

Pour installer traceroute, exécutez les commandes suivantes :

Amazon Linux :

sudo yum install traceroute

Ubuntu :

sudo apt-get update
sudo apt-get install traceroute

Remarque : traceroute n'est pas nécessaire si vous exécutez un rapport MTR. MTR fournit des statistiques en matière de latence et de perte de paquets vers une destination.

Assurez-vous que le port 22 ou le port que vous testez est ouvert dans les deux sens. Pour résoudre les problèmes de connectivité réseau à l'aide de traceroute, exécutez la commande du client vers le serveur et du serveur vers le client. Le chemin entre les nœuds d’un réseau TCP/IP peut changer si la direction est inversée. Utilisez un traçage basé sur TCP au lieu (du port de votre application) d'ICMP, car la plupart des appareils Internet annulent la priorité des demandes trace basées sur ICMP.

traceroute basé sur ICMP :

sudo traceroute -I <Public IP of EC2 instance/on-premises host>

traceroute basé sur TCP :

sudo traceroute -n -T -p 22 <Public IP of EC2 instance/on-premises host>

L'argument -T -p 22 -n effectue un traçage basé sur TCP sur le port 22.

Remarque : vous pouvez utiliser le port spécifique à votre application pour les tests. Utilisez le port spécifique pour savoir s'il existe des appareils intermédiaires dans le chemin d'accès qui prend en charge le trafic de votre application.

Tester les performances à l'aide de hping3

Hping3 est un assembleur et un analyseur de paquets TCP/IP utilisable en ligne de commandes qui mesure la latence et la perte de paquets de bout en bout sur une connexion TCP. En plus des requêtes d'écho ICMP, hping3 prend en charge les protocoles TCP, UDP et RAW-IP. Hping3 inclut également un mode traceroute qui peut envoyer des fichiers entre un canal couvert. Hping3 est conçu pour analyser les hôtes, contribuer à la réalisation de tests d’intrusion, tester les systèmes de détection d’intrusion et envoyer des fichiers entre hôtes.

MTR et traceroute capturent la latence par saut. Toutefois, hping3 récolte des résultats indiquant la latence min/moy/max bout en bout sur TCP en plus de la perte de paquets. Pour installer hping3, exécutez les commandes suivantes :

Amazon Linux 2. installez le package de version EPEL pour RHEL 7 et activez le référentiel EPEL.

sudo amazon-linux-extras install epel -y

Amazon Linux 2 :

sudo yum --enablerepo=epel install hping3

Ubuntu :

sudo apt-get install hping3

La commande suivante envoie 50 paquets TCP SYN sur le port 0. Par défaut, hping3 envoie des en-têtes TCP au port 0 de l'hôte cible avec un paramètre winsize de 64 sans balise TCP :

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host>

La commande suivante envoie 50 paquets TCP SYN sur le port 22 :

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -p 22

Remarque : veillez à ce que le port 22 ou le port que vous testez soit bien ouvert.

Tester des exemples de captures de paquets à l'aide de tcpdump

Il est recommandé d'effectuer des captures simultanées de paquets sur votre instance EC2 et sur votre hôte sur site lors du diagnostic des problèmes de perte de paquets ou de latence. Cela peut aider à identifier les paquets de demandes et de réponses afin que nous puissions isoler le problème au niveau des couches réseaux et applications. Il est également recommandé de démarrer d'abord la capture de paquets, puis d'initier le trafic. Cela permet de capturer tous les paquets pour le flux. Pour installer tcpdump, exécutez les commandes suivantes :

Amazon Linux :

sudo yum install tcpdump

Ubuntu :

sudo apt-get install tcpdump

Une fois tcpdump installé, vous pouvez exécuter la commande suivante pour capturer le trafic du port TCP 22 et l'enregistrer dans un fichier pcap.

sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap

Remarque : l'indicateur tcpdump -i indique l'interface sur l'instance où tcpdump capture le trafic. Il se peut que vous deviez remplacer l'interface eth0 par l'interface configurée dans votre environnement.

Dépannage des problèmes de performances pour les instances Windows

Vérifier la fonctionnalité ECN

1.    Exécutez la commande suivante pour déterminer si la fonctionnalité de notification explicite de congestion (ECN) est activée :

netsh interface tcp show global

2.    Si la fonctionnalité ECN est activée, exécutez la commande suivante pour la désactiver :

- netsh interface tcp set global ecncapability=disabled

3.    Si vous ne constatez pas une amélioration des performances, vous pouvez réactiver la fonctionnalité ECN à l'aide de la commande suivante :

netsh interface tcp set global ecncapability=enabled

Vérifier les sauts et dépanner les problèmes de connectivité du port TCP

Commencez par utiliser MTR ou tracert pour examiner les sauts :

Méthode MTR :

1.    Téléchargez et installez WinMTR.

2.    Saisissez l'IP de destination dans la section « Host » (Hôte), puis choisissez « Start » (Démarrer).

3.    Laissez le test s'exécuter pendant une minute, puis choisissez « Stop » (Arrêter).

4.    Choisissez « Copy text to clipboard »(Copier le texte dans le presse-papiers) et collez la sortie dans un fichier texte.

5.    Recherchez d'éventuelles pertes dans la colonne % qui sont propagées vers la destination.

Remarque : ignorez tous les sauts avec le message No response from host (Aucune réponse de l'hôte). Ce message indique que ces sauts ne répondent pas aux sondes ICMP.

6.    Examinez les sauts sur les rapports MTR à l'aide d'une approche de bas en haut. Par exemple, observez la perte sur le dernier saut ou la dernière destination, puis examinez les sauts précédents.

Méthode tracert :

Vous pouvez utiliser l'utilitaire de commande tracert si vous ne souhaitez pas installer MTR.

1.    Effectuez un tracert vers l'URL ou l'adresse IP de destination.

2.    Recherchez n'importe quel saut présentant un pic soudain dans le temps de l'aller-retour (RTT). Un pic soudain dans RTT peut indiquer l'existence d'un nœud surchargé responsable d'une latence ou de pertes de paquets dans votre trafic.

Remarque : l'option -d ne résout pas les adresses IP en noms d'hôtes. Supprimez -d si la résolution IP en nom d'hôte est requise.

tracert -d <Public IP of EC2 instance/on-premises host>

Ensuite, vérifiez la connectivité du port TCP.

Remarque : comme WinMTR et tracert sont tous deux basés sur ICMP, vous pouvez utiliser tracetcp pour dépanner la connectivité du port TCP.

1.    Téléchargez WinPcap et tracetcp.

2.    Extrayez le fichier ZIP tracetcp.

3.    Copiez tracetcp.exe sur votre lecteur C.

4.    Installez WinPcap.

5.    Ouvrez l'invite de commande et WinPcap racine sur votre lecteur C à l'aide de la commande **C:\Users\username>cd **.

6.    Exécutez tracetcp à l'aide des commandes suivantes : tracetcp.exehostname:port ou tracetcp.exe ip:port.

Passer en revue le gestionnaire de tâches Windows

Si vous avez accès à l'instance source ou à l'instance de destination, vérifiez le Gestionnaire des tâches Windows. Recherchez les problèmes d'utilisation du processeur et de la mémoire, ou la charge moyenne.

Effectuer une capture de paquets

Remarque : il est recommandé d'effectuer des captures simultanées de paquets sur votre instance EC2 et sur votre hôte sur site lors du diagnostic des problèmes de perte de paquets ou de latence. Cela peut aider à identifier les paquets de demandes et de réponses pour isoler le problème au niveau des couches réseaux et applications. Il est également recommandé de démarrer d'abord la capture de paquets et puis d'initier le trafic. Cela permet de capturer tous les paquets pour le flux.

1.    Installez Wireshark et effectuez une capture de paquet.

2.    Utilisez le filtre suivant pour isoler le trafic entre des sources particulières dans la capture des paquets : (ip.addr eq source_IP) &&(tcp.flags.syn == 1). La sortie affiche tous les flux tcp initiés par cette adresse IP source.

3.    Sélectionnez la ligne avec l'adresse IP source et l'adresse IP de destination appropriées.

4.    Choisissez le menu contextuel (clic droit), puis choisissez « Follow » (Suivre), « TCP Stream » (Flux TCP). Cette action déclenche un flux TCP entre l'adresse IP source et l'adresse IP de destination que vous souhaitez examiner.

5.    Recherchez les retransmissions, les paquets en double ou les notifications de taille de fenêtre TCP comme la fenêtre TCP pleine ou la taille de fenêtre zéro. Ces notifications peuvent indiquer que les tampons TCP manquent d'espace.

Si vous constatez une perte de paquets ou si le nombre de sauts change de manière significative par rapport à vos valeurs de référence, consultez la documentation du fournisseur de votre équipement réseau. Si vous travaillez dans un environnement réseau à plusieurs hébergements, effectuez ces tests en utilisant un autre fournisseur de services Internet.


Informations connexes

Réseaux améliorés sous Linux

Réseaux améliorés sous Windows

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an