Comment résoudre les problèmes de performances réseau entre les instances Linux Amazon EC2 dans un VPC et un hôte sur site sur une Passerelle Internet ?

Dernière mise à jour : 24/09/2019

Je rencontre des problèmes de performances réseau entre mes instances Linux Amazon Elastic Compute Cloud (Amazon EC2) et mon hôte sur site sur une Passerelle Internet. Comment résoudre ces problèmes de perte de paquets ou de latence ?

Résolution

Remarque : avant de démarrer le dépannage, identifiez les adresses IP source et de destination. Si la destination est une URL, utilisez la commande dig pour déterminer l'adresse IP. Sachez que certaines URL utilisent des adresses IP dynamiques. Il se peut donc que l'adresse IP soit changeante. Exécutez la commande plusieurs fois pour voir si l'adresse IP est constante.

Vérifier les problèmes de réseau à l'aide de traceroute

1.    Exécutez la commande suivante pour installer traceroute.

Linux :

sudo yum install traceroute

Ubuntu :

sudo apt-get install traceroute

2.    Exécutez la commande suivante pour exécuter traceroute.

Traceroute basé sur ICMP :

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

Traceroute basé sur TCP :

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

3.    Regardez la sortie traceroute.

  • Déterminez si la latence provient d'un saut dans votre réseau interne.
  • Si vous observez un pic soudain de latence qui progresse vers la destination, il se peut qu'il y ait un problème au niveau du saut où le pic a commencé.
  • Si vous observez une latence élevée dans les sauts intermédiaires, mais aucune latence au début ou à la fin de la sortie, il se peut qu'il n'y ait pas de problème. Dans ce cas, la latence élevée peut être le résultat d'un saut intermédiaire qui a annulé la priorité du trafic traceroute.

Résoudre les problèmes de perte de paquets à l'aide de MTR

1.    Exécutez la commande suivante pour installer MTR.
 
Linux :
sudo yum install mtr

Ubuntu :

sudo apt-get install mtr

2.    Exécutez la commande suivante pour exécuter MTR.

MTR basé sur ICMP :

mtr -n -c <number of packets> <Public IP EC2 instance/on-premises host>

MTR basé sur TCP :

mtr -n -t -p <destination port> -c <number of packets> <Public IP EC2 instance/on-premises host>

3.    Regardez la sortie MTR. Observez les sauts avec une approche de bas en haut. Par exemple, observez la perte sur le dernier saut ou la dernière destination et observez les sauts précédents.

Vérifier les problèmes liés à l'hôte source ou à l'hôte de destination

Si vous avez accès à l'hôte source ou de destination :

1.    Exécutez la commande top pour identifier les problèmes liés à l'utilisation de l'UC et de la mémoire ou à la charge moyenne.

2.    Regardez le début de la sortie :

  • La troisième ligne de la sortie indique le pourcentage de l'UC en cours d'utilisation. Un pourcentage d'UC élevé se traduit par une dégradation des performances.
  • La quatrième ligne indique l'utilisation de la RAM, y compris la mémoire totale en cours d'utilisation, la mémoire totale libre et le nombre total de tampons mis en cache.
  • Si l'utilisation de l'UC ou de la mémoire est élevée, déterminez la cause, puis effectuez des ajustements si possible.

Vérifier les problèmes liés à l'application

Si les sorties MTR et traceroute n'affichent rien de suspect, la latence peut provenir de l'application. Pour voir si le problème vient de l'application, utilisez l'outil hping3 pour envoyer des paquets créés vers le port sur lequel l'application écoute.

1.    Exécutez la commande suivante pour installer hping3.

Linux :

sudo yum --enablerepo=epel install hping3

Ubuntu :

sudo apt-get install hping3

2.    Exécutez la commande suivante pour envoyer des paquets TCP SYN sur le port de destination.
Remarque : par défaut, hping3 envoie les en-têtes TCP au port 0 de l'hôte de destination, avec une taille de fenêtre de 64 et aucun indicateur TCP.

hping3 -S -c <number of packets> -V <Public IP of EC2 instance/on-premises host> -P <destination port>

3.    Regardez la sortie hping3 pour voir le nombre de paquets transmis, de paquets reçus et de paquets perdus, le cas échéant. Grâce à ces données, vous pouvez déterminer si l'application tient compte de la totalité ou d'une partie des demandes qui lui sont adressées.

Effectuer des captures de paquets simultanées sur l'hôte source et l'hôte de destination à l'aide de tcpdump

Si aucune des étapes ci-dessus ne vous aide à déterminer la cause du problème de performances, vous pouvez effectuer une capture de paquets pour poursuivre la résolution. Vous pouvez utiliser les captures de paquets pour déterminer les problèmes au niveau de l'hôte ou avec la pile TCP. Les captures de paquets peuvent également afficher des quantités importantes de retransmission, de fragmentation ou de paquets mal formatés.

1.    Exécutez la commande suivante pour installer tcpdump.

Linux :

sudo yum install tcpdump

Ubuntu :

sudo apt-get install tcpdump

2.    Exécutez la commande tcpdump pour tester des exemples de capture de paquets.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?