Les congestions peuvent survenir sur un réseau de plusieurs façons. Elles peuvent aussi bien survenir à la suite d’une surcharge de trafic qu’à cause d’un équipement mal configuré ou encore un câble qui cesse de fonctionner. C’est pourquoi, on peut les regrouper en plusieurs catégories.
Les boucles de routage
Une boucle de routage se produit lorsqu’un paquet n’arrive plus à trouver sa destination. Elle va transiter à travers le réseau jusqu’à l’expiration de son TTL13 qui peut aller de 1 à 255. A un certain moment, il y aura beaucoup trop de paquets ne trouvant pas de route de destination et une congestion peut survenir. Une boucle de routage peut se produire lorsque le réseau n’est pas convergé, lorsqu’un équipement tombe en panne, lorsqu’un câble est mal branché, etc. Il existe plusieurs techniques pour pallier aux boucles de routage comme par exemple la route poisoning qui va, lorsqu’une route tombe, avertir le réseau d’une métrique de distance infinie. Ainsi, les paquets seront directement abandonnés.
Une boucle de routage peut également se produire sur la couche 2 lorsqu’il y a plusieurs chemins possibles entre deux équipements du réseau. La résolution de ces boucles se fait par l’implémentation du Spanning Tree Protocol14 sur les commutateurs concernés.
Les boucles de routage peuvent survenir suite à une mauvaise configuration de notre schéma réseau et seront donc détectables assez rapidement. Celles-ci peuvent aussi se produire lorsqu’un équipement tombe en panne (on débranche un câble accidentellement par exemple), les données ne sauront plus où transiter puisqu’elles ne trouvent plus leur chemin de destination.
Bande passante insuffisante
La bande passante est insuffisante, les données n’arrivent pas à joindre leur destination à temps, le réseau est saturé. Dans ce cas, c’est la façon la plus courante de déclencher une congestion. On fait appel à plus de ressources que notre réseau peut en fournir, ce qui provoque le ralentissement de celui-ci. Il n’y a pas de solution miracle à ce problème, on peut augmenter la bande passante, mais, cela coûte de l’argent. L’autre solution est simplement de réduire sa consommation de trafic en diminuant sa vitesse de téléchargement par exemple. S’il y a plusieurs utilisateurs sur le même réseau local, il faudrait gérer la bande passante de la meilleure façon possible pour que chaque personne puisse en bénéficier au mieux.
Les collisions
On appelle généralement un domaine de collision une partie du réseau ou les données transmises peuvent entrer en collision. Les informations qui transitent proviennent d’hôtes différents, mais, font partie du même réseau. Si les données entrent en collision elles deviennent inutilisables, il faut alors les retransmettre. Pour pallier à ce problème, on va segmenter au maximum les domaines de collision de notre réseau grâce aux routeurs, commutateurs ou bridge. Ceci permettra d’une part l’isolement du trafic entre les différents domaines de collisions, d’autre part d’offrir une bande passante réservée à chaque segment du réseau. On peut également, utiliser le mode full-duplex (permet de transporter les paquets simultanément dans les deux sens) qui empêche les collisions de se produire s’il n’y a que deux équipements dans le domaine de collisions.
L’exemple typique pour illustrer ce problème est l’utilisation du talkie-walkie où deux personnes ne peuvent pas parler en même temps car le signal se brouille (il y a des collisions, on est en bidirectionnel alterné). A l’inverse, avec un téléphone, deux personnes peuvent parler simultanément (il n’y a pas de collisions, on est en bidirectionnel simultané).
Mauvaise gestion des MTU
Maximum transmission unit (MTU) est la taille maximale d’un paquet pouvant être transmis en une seule fois (sans fragmentation) sur une interface. (Source Wikipédia https://fr.wikipedia.org/wiki/Maximum_transmission_unit)
Lorsque deux entités vont communiquer, par exemple un client et un serveur, on peut utiliser ce qu’on appelle le Path MTU discovery qui est une technique permettant de déterminer le bon MTU entre deux hôtes IP. Cette technique fonctionne en définissant un bit DF (Dont’t Fragment) dans les paquets sortants. Chaque équipement ayant un MTU plus petit qu’un paquet reçu va alors l’abandonner et envoyer un message d’erreur de type ICMP (Internet Control Message Protocol) spécifiant que le paquet est trop grand. L’émetteur va alors retransmettre avec un MTU plus petit jusqu’à qu’il soit capable de traverser l’hôte en question sans avoir à fragmenter le paquet. Si on ne définit pas de bit DF, les paquets trop gros pourront alors être fragmentés avant d’être envoyés. Cette technique n’est pas optimale car les paquets fragmentés seront alors plus nombreux, ce que va augmenter le nombre de bytes transmis. De plus, les paquets fragmentés peuvent potentiellement arriver à destination dans le désordre.
Le problème qui survient est que de nombreux équipements bloquent par défaut (entièrement ou partiellement) le trafic ICMP ce qui peut empêcher les redimensionnements du MTU de se produire. Si les messages ICMP sont bloqués, l’émetteur va continuellement envoyer des paquets trop gros et ils seront jetés. L’émetteur ne sera pas notifié des messages d’erreurs suit au blocage d’ICMP. Les décisions relatives à ICMP peuvent être également prises par des administrateurs, il faut donc être conscient du problème des MTU afin d’éviter une congestion réseau de se produire.
1. Introduction |