Déterminer la taille du MTU à l'aide de Ping
Dans les réseaux informatiques, un chemin est un itinéraire entre deux points ou nœuds quelconques : il connecte un nœud source à un nœud de destination.
Un chemin réseau peut contenir des liens rendus possibles par des routeurs et d'autres périphériques réseau. Par exemple, selon votre emplacement, le chemin entre votre ordinateur et le serveur hébergeant le site Comparitech peut contenir plusieurs liens et des périphériques réseau tels que des routeurs qui connectent chaque lien au suivant.
Si un ou plusieurs liens le long de ce chemin particulier échouent, ils peuvent basculer dynamiquement vers un chemin différent qui inclut un ensemble différent de liens et de routeurs. Chaque périphérique, lien ou chemin réseau est limité par la taille en octets d'un seul paquet IP qu'il peut transmettre. Cette contrainte est appelée laUnité de transmission maximale (MTU).
MTU en quelques mots
MTU est une mesure représentant le paquet de données maximal qu'un chemin réseau, un périphérique ou une interface acceptera. Considérez-le comme une limite de hauteur pour les véhicules traversant une autoroute ou un tunnel particulier. Les véhicules qui dépassent la limite de hauteur ne peuvent pas passer, tout comme les paquets qui dépassent la MTU d'un réseau ne peuvent pas traverser ce réseau. IPv4 et IPv6 exiger que chaque lien prenne en charge une MTU spécifiée. Celles-ci sont appelées MTU de liaison minimale IPv4 et IPv6. Les paramètres MTU apparaissent généralement en association avec une interface de périphérique réseau telle qu'une carte réseau et un port série. Les liens tels que les réseaux point à point décident généralement de la MTU au moment de la connexion ; tandis que les protocoles réseau tels qu'Ethernet ont une taille MTU fixe.
Le MTU Ethernet est fixé à 1 500 octets. Cela signifie que le plus gros paquet IP ou charge utile qu’une trame Ethernet peut contenir est de 1 500 octets. Les protocoles de communication réseau ajoutent généralement une surcharge (séquence de vérification d'en-tête et de trame) à la charge utile à transporter. Considérez l’en-tête comme une étiquette d’expédition attachée à un colis et la charge utile comme le contenu réel du colis. L’en-tête contient des informations sur les adresses source et de destination du paquet. La structure de trame Ethernet est définie dans la norme IEEE 802.3. Le tableau 1.0 ci-dessous est une représentation graphique d'une structure de trame Ethernet, comprenant une description de chaque champ de la trame :
Préambule 7 octets | SFD 1 octet | MAC de destination 6 octets | MAC source 6 octets | Taper 2 octets | Données et Pad 46-1500 octets | FCS 4 octets |
Tableau 1.0 | Structure de trame Ethernet
- Préambule : informe le système de réception qu'une trame démarre et active la synchronisation.
- SFD (Start Frame Delimiter) : signifie que le champ d'adresse MAC de destination commence par l'octet suivant.
- Destination MAC : identifie le système de réception.
- Source MAC : identifie le système expéditeur.
- Type : définit le type de protocole à l'intérieur de la trame, par exemple, IPv4 ou IPv6.
- Data and Pad : contient les données de charge utile. Les données de remplissage sont ajoutées pour répondre à la longueur minimale requise pour ce champ (46 octets).
- FCS (Frame Check Sequence) : contient un contrôle de redondance cyclique (CRC) de 32 bits qui permet la détection des données corrompues.
Ainsi, le MTU définit essentiellement la taille de la zone de charge utile, y compris la TCP/IP en-têtes. Cette valeur est configurable, ce qui signifie que vous pouvez la modifier si vous le souhaitez. Mais il reviendra généralement à sa taille par défaut si vous ne le modifiez pas.
Alors, qu’est-ce qui est mieux, demandez-vous, une charge utile plus grande ou une charge utile plus petite ? D'une manière générale, des paquets plus gros peuvent être beaucoup plus efficaces que l'utilisation de paquets plus petits. Avec des paquets plus gros, vous savez que vous transmettez essentiellement plus de données, mais vous supportez les mêmes frais généraux : les mêmes en-têtes Ethernet et la même séquence FCS qu'avec un paquet plus petit.
Cependant, un problème majeur auquel vous devrez faire face est le fait que les paquets de données dépassant la MTU ne seront pas autorisés à passer, et vous devrez faire quelques ajustements pour que cela fonctionne. Pour contourner ce problème, IPv4 a introduit un mécanisme qui permet aux paquets d'être divisés en morceaux plus petits afin qu'ils puissent passer. Ce mécanisme est appelé fragmentation.
Le problème de la fragmentation
Aussi nouvelle que puisse paraître l’idée de fragmentation, elle n’est pas sans défis. La fragmentation ajoute un certain degré d'insécurité, de latence et d'inefficacité aux communications réseau. Au moment de la rédaction de cet article, La fragmentation de la propriété intellectuelle est considérée comme fragile et souvent chargés de failles de sécurité qui peuvent être utilisées pour exploiter la fragmentation. Les acteurs malveillants peuvent utiliser des attaques telles que des attaques par fragments superposés, des attaques par épuisement des ressources, des attaques en forme de larme, des pings de mort, etc. attaques liées aux dénis de service , pour exploiter ces vulnérabilités.
Tous les fragments d'un paquet doivent arriver pour que le paquet soit considéré comme reçu. Les paquets fragmentés sont réassemblés une fois arrivés à destination. Si un hôte récepteur reçoit un paquet fragmenté, il doit réassembler le paquet, et tout cela ajoute à la latence. Lorsque le nombre de paquets à fragmenter ou le nombre de fragments est important, cela peut entraîner une surcharge inutile. Et si le réseau laisse tomber un fragment, le paquet entier est perdu. La fragmentation IP peut provoquer des retransmissions excessives lorsque des fragments subissent une perte de paquets et que des protocoles tels que TCP doivent retransmettre tous les fragments afin de récupérer de la perte d'un seul fragment.
Dans certains cas, les paquets ne peuvent pas être fragmentés et ne seront donc pas livrés s'ils dépassent la MTU d'un routeur ou d'un périphérique situé sur le chemin réseau. Par exemple, les routeurs qui implémentent le protocole IPv6 abandonneront tous les paquets IPv6 dépassant la MTU, car ils ne peuvent pas être fragmentés en IPv6. Deuxièmement, dans les réseaux IPv4, lorsque l’indicateur « Ne pas fragmenter » est défini dans l’en-tête IP d’un paquet, le paquet joint ne peut pas être fragmenté. Si le paquet dépasse la MTU, le routeur abandonne le paquet au lieu de le fragmenter et renvoie immédiatement un « paquet trop gros ». Message ICMP (mise à jour du statut) au nœud source.
Afin de surmonter ces défis, vous devez déterminer la taille optimale des paquets IP à envoyer sur le réseau. Ces paquets doivent être ajustés manuellement ou automatiquement afin de ne pas dépasser la MTU. Il existe deux manières possibles d'y parvenir :
- L'approche manuelle consiste pour le périphérique d'envoi à envoyer la taille de paquet optimale ou MTU requise par le chemin ou le périphérique de réception.
- L'approche automatique est une technique appelée Path MTU Discovery, qui permet de découvrir automatiquement le chemin MTU entre deux hôtes afin d'éviter la fragmentation IP.
Découverte du chemin MTU et ses limites
Path MTU Discovery (PMTUD), comme son nom l'indique, est le processus de découverte de la MTU sur le chemin réseau entre deux nœuds, généralement dans le but d'éviter la fragmentation IP. Lorsque PMTUD est en place, un ordinateur essayant d'envoyer des paquets à un routeur devra identifier les exigences MTU du routeur et ajuster la taille du paquet en conséquence pour éviter la fragmentation. PMTUD fonctionne légèrement différemment pour les réseaux IPv4 et IPv6.
La découverte MTU du chemin IPv4 fonctionne en définissant le bit d'indicateur « Ne pas fragmenter (DF) » dans les en-têtes IP des paquets sortants. Ensuite, tout périphérique le long du chemin dont la MTU est inférieure à celle du paquet le supprimera et renverra un message ICMP « Le paquet doit être fragmenté.»message. Cela permet à l'hôte source de réduire sa MTU de chemin de manière appropriée. Le processus est répété jusqu'à ce que la MTU soit suffisamment petite pour parcourir l'intégralité du chemin sans fragmentation.
IPv6 ne permet pas la fragmentation, et donc l’option « Ne pas fragmenter » n’existe même pas. Par conséquent, les routeurs qui implémentent IPv6 ne fragmenteront pas les paquets IPv6, donc si les paquets dépassent la MTU, les routeurs abandonnent les paquets et renvoient les messages ICMP correspondants sans vérifier l'indicateur « Ne pas fragmenter ». Cela permet à l'hôte source de réduire sa MTU de chemin de manière appropriée. Le processus est répété jusqu'à ce que la MTU soit suffisamment petite pour parcourir tout le chemin sans fragmentation.
Dans des situations idéales, PMTUD fonctionne comme décrit ci-dessus. Cependant, dans certains cas, PMTUD échoue. Selon l'Internet Engineering Task Force (IETF), l'échec peut être attribué à des facteurs tels que :
- Messages ICMP bloqués : PMTUD s'appuie sur la capacité du réseau à transmettre des messages ICMP au nœud source. Cependant, de nombreux dispositifs de sécurité réseau bloquent les messages ICMP pour des raisons de sécurité. Si le réseau ne peut pas transmettre de messages ICMP au nœud source, PMTUD échoue.
- Attaques malveillantes : PMTUD est susceptible d'être attaqué car les messages ICMP sont facilement falsifiés et ne sont pas authentifiés par le destinataire. De telles attaques peuvent amener PMTUD à produire des estimations PMTU inutilement conservatrices.
Une solution de contournement courante mise en œuvre dans certains routeurs consiste pour les périphériques réseau à convenir et à communiquer la taille maximale du segment (la plus grande charge utile de données qu'un périphérique accepte à partir d'une connexion réseau) des paquets qu'ils peuvent recevoir. C'est ce qu'on appelle le serrage de la taille maximale du segment (MSS).
Cependant, il existe une autre technique qui peut être utilisée pour déterminer la MTU du chemin sans nécessairement dépendre de la découverte de la MTU du chemin. Cette technique utilise l'utilisation du Commande ping pour déterminer la taille MTU d'un chemin réseau. Dans la section suivante, nous allons vous montrer comment utiliser cette technique pour déterminer la taille du MTU.
Trouver le chemin MTU avec une commande Ping
Si PMTUD ne fonctionne pas et que vous pensez qu'il y a un problème avec la taille de la MTU, vous pouvez résoudre le problème en déterminant quelle est la taille de la MTU pour le chemin réseau. Pour ce faire, vous utilisez la commande « Ping » pour envoyer des paquets avec le bit « Don’t Fragment » activé (IPv4 uniquement). Cela simulera le processus Path MTU Discovery à l’aide de la commande ICMP Ping. Vous devrez ensuite ajuster la taille du paquet par essais et erreurs jusqu'à ce que vous trouviez la taille MTU. Voici un processus étape par étape permettant de déterminer une MTU de chemin à l'aide de la commande Ping :
Étape 1: Effectuez un ping vers la destination cible (il peut s'agir d'une passerelle locale ou distante), en utilisant les indicateurs Ping supplémentaires suivants :
- -f : définit l'indicateur « Ne pas fragmenter » dans l'en-tête du paquet
- -l : définit la taille du paquet
Dans la capture d'écran de la figure 1.0 ci-dessus, vous pouvez voir que nous envoyons une taille de paquet ICMP de 2 000 octets à une passerelle avec l'adresse IP 192.168.43.1. La taille des paquets de 2 000 octets est généralement supérieure à celle de la plupart des MTU d'un réseau Ethernet classique. Comme vous pouvez le constater, le paquet a réussi à parcourir le chemin et a atteint sa destination car il est fragmenté par les routeurs le long du chemin.
Étape 2: Maintenant, définissez l'indicateur « Ne pas fragmenter » à l'aide de la commande ci-dessous et voyons ce qui se passe : ping 192.168.43.1 -f -l 2000.
Comme vous pouvez le voir sur la capture d'écran de la figure 2.0 ci-dessus, le périphérique de destination renvoie un message indiquant : « Le paquet doit être fragmenté mais DF défini ». Puisque nous avons choisi de ne pas fragmenter les paquets, tous les routeurs le long du chemin n’auront d’autre choix que d’abandonner le paquet.
Étape 3: Répétez le processus ci-dessus et continuez à ajuster la taille du paquet jusqu'à ce que vous trouviez le chemin MTU. Dans la capture d'écran de la figure 3.0 ci-dessus, nous avons commencé avec 1 700 octets et avons descendu par étapes de 100 octets jusqu'à ce que nous obtenions une réponse ping réussie. Cela signifie que le chemin MTU entre notre source et notre destination se situe entre 1 400 et 1 500 octets.
Étape 4: L'étape suivante consisterait à déplacer la taille de haut en bas par étapes de 10 et 1, comme le montre la figure 4.0 ci-dessus, jusqu'à ce que nous trouvions la bonne taille de MTU. Nous recherchons essentiellement la plus grande taille de paquet qui ne renvoie pas d’erreur. Cela nous a finalement conduit à une taille de paquet de 1 472 octets. Comme vous pouvez le constater, une taille de paquet de 1 473 était trop grande, mais 1 472 octets s’avère être la taille de paquet idéale. La taille de paquet de 1 472 représente la taille de la charge utile ou la taille maximale du segment (MSS), comme le montre la figure 5.0 ci-dessous.
Conclusion
En conclusion, notez que la taille réelle du MTU inclut la taille des en-têtes TCP et IP, qui peut varier entre 20 et 60 octets au total, selon le support de transmission. Pour nos supports de transmission, les en-têtes TCP et IP représentent au total 28 octets (8 octets + 20 octets). Par conséquent, 1472 octets + 28 octets nous donnent la taille réelle de la MTU, qui est 1500 octets . Il s'agit généralement de la taille MTU autorisée par la plupart des réseaux Ethernet au niveau de la couche réseau.
FAQ MAN
Qu’est-ce que le MTU en ping ?
MTU signifieUnité de transmission maximale. Il s'agit de la longueur maximale d'un paquet qu'un commutateur ou un routeur peut gérer. L'expéditeur d'un paquet vérifie le MTU du récepteur et divisera ensuite ses paquets s'ils sont plus longs que ce maximum, de sorte que votre transmission voyage en deux fois plus de paquets que nécessaire. Un plus grand nombre de paquets prennent plus de temps à traiter et doivent être réassemblés à l'extrémité de réception. Par conséquent, l'apparition de disparités de MTU sur une route ralentira les temps de transmission.
Comment est calculé le MTU ?
Ce qui prête à confusion, c'est que différents systèmes ont des définitions différentes de ce qui est inclus dans un calcul de MTU. Sur un réseau privé, le MTU standard est de 1 500 bits. Il s'agit du contenu d'une trame et n'inclut pas l'en-tête de la trame ni la somme de contrôle de la trame (FCS). Le MTU Ethernet inclut l'en-tête TCP/IP dans cet en-tête et cette queue de trame. Ping compressera le contenu d'un paquet à une longueur donnée, puis ajoutera les en-têtes TCP/IP. Cette longueur de charge utile de données est en réalité ce qu'on appelle la taille du segment, vous pouvez donc déterminer la taille maximale du segment (MSS) avec Ping. Comme la longueur d'en-tête IP standard est de 20 et que l'en-tête TCP est de 8 bits, vous pouvez vous attendre à ce que la longueur maximale acceptable que vous découvrez avec Ping soit 28 bits plus courte que la taille réelle du paquet. Donc, si vous en déduisez avec Ping un MSS de 1482, vous avez un MTU de 1500.
Comment puis-je envoyer une requête ping au MTU 9000 ?
Pour vérifier si une route empruntera un paquet d'une longueur de 9 000 bits, vous devez émettre une commande Ping qui interdit la fragmentation et regroupe la charge utile des données. Cette longueur de charge utile devrait être de 8972 bits. Lorsque les en-têtes de paquet sont ajoutés (28 bits), la longueur totale du paquet que Ping enverra sera de 9 000. Alors, lancez la commande :
pinger
Remplacez l'adresse IP ou le nom de domaine de la cible par