Path MTU Discovery (PMTUD) découvre dynamiquement la plus petite MTU sur un chemin réseau, permettant aux hôtes d'ajuster la taille des paquets pour éviter la fragmentation IP et réduire les pertes de paquets.
Avantages
PMTUD limite la taille des paquets à la PMTU, améliorant ainsi l'efficacité et la fiabilité du réseau en évitant la fragmentation.
Évite la fragmentation IP : PMTUD garantit que chaque paquet respecte la MTU de chaque saut, empêchant la fragmentation qui augmente la latence et les pertes de paquets. Consultez la section Éviter la fragmentation IP sur les connexions TCP.
Améliore l'efficacité du réseau : PMTUD détermine la taille optimale des paquets, réduisant la surcharge des en-têtes et augmentant le débit sans dépasser la MTU d'aucun équipement.
Réduit les pertes de paquets et la latence : La fragmentation impose de retransmettre tous les fragments si l'un d'eux est perdu. PMTUD évite cette surcharge.
Ajuste automatiquement la taille des paquets : PMTUD permet à l'hôte émetteur de redimensionner dynamiquement les paquets selon la PMTU découverte, sans connaissance préalable de la configuration réseau.
Renforce la robustesse du réseau : PMTUD s'adapte à divers types de liaisons et configurations, améliorant la flexibilité du réseau.
Composants et systèmes pris en charge
-
Systèmes d'exploitation : La plupart des systèmes d'exploitation modernes, y compris Linux et Windows, prennent en charge PMTUD.
ImportantLes instances Alibaba Cloud Elastic Compute Service (ECS) des familles de 6e génération ou antérieures, qui ne prennent pas en charge les Jumbo Frames, ne prennent pas en charge PMTUD. Assurez-vous que la taille des paquets transitant par les instances ECS ne dépasse pas 1 500 octets.
Équipements réseau : Certains routeurs et commutateurs intègrent la prise en charge de PMTUD. Un équipement incompatible avec PMTUD peut renvoyer un message ICMP sans information sur la MTU lorsqu'il reçoit un paquet trop volumineux dont l'indicateur Don't Fragment (DF) est défini sur 1.
Middleware ou bibliothèques : Certains environnements de programmation fournissent des bibliothèques ou des middleware spécialisés pour PMTUD.
Applications : Certaines applications réseau implémentent leur propre logique PMTUD pour redimensionner dynamiquement les paquets sortants.
Protocoles réseau : PMTUD fonctionne avec les protocoles de la couche transport IPv4 et IPv6, y compris TCP, UDP et ICMP.
Fournisseurs de services cloud : Les composants de transfert Alibaba Cloud exécutent PMTUD conformément aux normes RFC. Consultez la section Fonctionnement de PMTUD.
Fonctionnement de PMTUD
L'indicateur DF des paquets IP joue un rôle clé dans PMTUD. Définir l'indicateur DF sur 1 empêche la fragmentation. PMTUD utilise des messages ICMP pour découvrir la PMTU entre deux hôtes et limite les paquets à cette valeur, évitant ainsi la fragmentation pendant la transmission.
Définissez l'indicateur DF sur l'hôte émetteur. L'hôte émetteur définit l'indicateur DF de l'en-tête IP sur 1, empêchant la fragmentation sur le chemin réseau.
-
La limite de MTU est atteinte. Lorsqu'un paquet avec DF=1 arrive sur un équipement réseau dont la MTU est inférieure à la taille du paquet, l'équipement supprime le paquet.
-
En IPv4, les équipements réseau vérifient l'indicateur DF. Si DF=0 et que l'équipement prend en charge la fragmentation, il peut fragmenter les paquets trop volumineux au lieu de les supprimer.
RemarqueCertains composants de transfert Alibaba Cloud, tels que les passerelles périphériques dans des scénarios interdomaines ou interrégionaux, ne prennent pas en charge la fragmentation. Ils suppriment les paquets trop volumineux et envoient des messages d'erreur ICMP même si DF=0.
En IPv6, PMTUD est obligatoire. Tous les hôtes et routeurs doivent le prendre en charge. L'indicateur DF est implicitement défini sur 1 pour tous les paquets IPv6.
-
-
Envoi d'un message d'erreur ICMP. Si l'équipement prend en charge PMTUD, il envoie un message d'erreur ICMP contenant sa MTU à l'hôte émetteur.
En IPv4, l'équipement envoie : Destination Unreachable: Fragmentation Needed and Don't Fragment was Set (Type 3, Code 4).
En IPv6, l'équipement envoie : ICMPv6 Packet Too Big (PTB) (Type 2, Code 0).
-
Traitez le message d'erreur ICMP. L'hôte émetteur analyse et met en cache la PMTU issue du message, puis gère les paquets comme suit :
Par défaut, le noyau du système d'exploitation fragmente le paquet selon la PMTU et renvoie les fragments.
-
Redimensionnement au niveau de l'application. Une application compatible avec PMTUD redimensionne les paquets selon la MTU indiquée dans le message d'erreur ICMP et les renvoie. Cela évite la fragmentation, mais nécessite généralement des modifications de l'application.
RemarquePour les connexions TCP, la couche TCP ajuste le MSS selon la PMTU découverte pour éviter la fragmentation des segments. Consultez la section Adapter dynamiquement le MSS à la PMTU pendant la transmission des données.
Mettez en cache la PMTU. L'hôte émetteur stocke la PMTU dans sa table de routage pour l'adresse IP de destination et limite les paquets suivants à cette taille.
Mettez à jour la PMTU périodiquement. La PMTU peut changer lorsque les chemins réseau évoluent ou lorsque les caches de routage expirent. L'hôte réexécute PMTUD pour mettre à jour la PMTU.
Configurer PMTUD
Activer PMTUD
Vérifiez que tous les équipements du réseau prennent en charge PMTUD et qu'il est activé. Sous Linux, activez PMTUD en écrivant zéro dans /proc/sys/net/ipv4/ip_no_pmtu_disc.
Les anciennes versions du noyau ou certains systèmes d'exploitation peuvent ne pas prendre en charge PMTUD. Les équipements incompatibles avec PMTUD ne peuvent pas traiter les messages ICMP lors du processus, ce qui entraîne son échec.
Les instances Alibaba Cloud Elastic Compute Service (ECS) des familles de 6e génération ou antérieures, qui ne prennent pas en charge les Jumbo Frames, ne prennent pas en charge PMTUD. Assurez-vous que la taille des paquets transitant par les instances ECS ne dépasse pas 1 500 octets.
Si un équipement sur le chemin ne prend pas en charge PMTUD, découvrez manuellement la PMTU. Par exemple, exécutez la commande ping pour découvrir la PMTU. Ensuite, ajustez la taille des paquets ou modifiez la MTU d'une interface réseau (NIC).
Assurez-vous que les messages d'erreur ICMP atteignent l'hôte
Vérifiez et configurez les pare-feu et les équipements de sécurité pour autoriser les messages ICMP, en particulier Destination Unreachable: Fragmentation Needed (Type 3, Code 4). Le blocage des messages ICMP empêche PMTUD de fonctionner.
Configurez les groupes de sécurité pour autoriser le trafic ICMP. Les instances ECS ne reçoivent les paquets de négociation ICMP lors de PMTUD que si leurs groupes de sécurité autorisent le trafic ICMP. Consultez la section Règles de groupe de sécurité pour contrôler l'accès aux instances ECS à l'aide de protocoles spécifiques.
-
Vérifiez l'existence d'une limitation du débit réseau. Les messages ICMP peuvent être supprimés lorsque le trafic atteint le seuil de limitation.
Pour les instances Linux, consultez la section Résoudre les problèmes de bande passante réseau élevée sur une instance Linux.
Pour les instances Windows, utilisez le Task Manager pour vérifier l'utilisation du réseau.
Modifiez les applications pour répondre aux messages ICMP
Modifiez les applications pour qu'elles répondent aux messages d'erreur ICMP lors de PMTUD et réduisent la taille des paquets selon la PMTU découverte.
Si une application n'adapte pas la taille de ses paquets à la PMTU découverte après réception d'un message d'erreur ICMP, le noyau du système d'exploitation peut fragmenter les paquets, ce qui peut entraîner des échecs de transmission.
Pour résoudre ce problème, spécifiez un MSS plus petit dans l'application afin qu'il corresponde à la PMTU.
Éviter la fragmentation IP sur les connexions TCP
TCP est un protocole de couche transport fiable et orienté connexion qui garantit l'intégrité et l'ordre des données. La fragmentation IP peut entraîner la perte de fragments ou des erreurs de réassemblage qui affectent la fiabilité de TCP. La négociation MSS et PMTUD aident les connexions TCP à éviter la fragmentation IP.
Éviter la fragmentation IP grâce à la négociation MSS lors de l'établissement de la connexion
Le MSS est un paramètre TCP qui spécifie la plus grande charge utile de données dans un segment TCP, hors en-tête TCP.
La négociation MSS se produit dans la pile TCP/IP sans intervention de l'utilisateur. Elle garantit que les tailles des segments de données correspondent aux environnements réseau des deux points de terminaison, évitant ainsi la fragmentation due à des paquets trop volumineux ou l'inefficacité due à des paquets trop petits.
Le MSS est négocié lors de la poignée de main TCP en trois étapes. L'hôte émetteur inclut l'option MSS dans le paquet SYN. La valeur MSS est égale à la MTU de l'hôte émetteur moins la longueur de l'en-tête TCP. L'hôte récepteur détermine un MSS approprié selon sa propre MTU et le renvoie dans le paquet SYN-ACK. Les deux hôtes utilisent ensuite le MSS convenu pour la connexion.
Adapter dynamiquement le MSS à la PMTU pendant la transmission des données
La négociation MSS ne garantit pas que tous les équipements intermédiaires ont des MTU supérieures ou égales au MSS négocié. Si un équipement sur le chemin a une MTU plus petite, la fragmentation IP peut toujours se produire. Les protocoles sans connexion tels que UDP et ICMP ne disposent pas de négociation MSS. PMTUD résout ce problème en découvrant dynamiquement la PMTU, permettant aux applications d'ajuster le MSS en conséquence.