Ce document décrit la fragmentation et le réassemblage de liens L2TP et explique comment le réglage de Maximum Transmission Unit (MTU) peut aider à atténuer certains des problèmes qui y sont liés.
Les lecteurs de ce document doivent connaître :
Commandes de configuration VPDN (Virtual Private Dialup Network) générales
Rubriques IP générales telles que fragmentation, réassemblage, MTU, encapsulation, en-têtes, etc.
La plupart des améliorations apportées à la configuration et aux fonctionnalités décrites ici sont disponibles dans les versions 12.1T ou 12.2T et ultérieures du logiciel Cisco IOS®. Toutefois, consultez les différentes sections ci-dessous pour plus d'informations.
Les informations présentées dans ce document ont été créées à partir de périphériques dans un environnement de laboratoire spécifique. All of the devices used in this document started with a cleared (default) configuration. Si vous travaillez dans un réseau opérationnel, assurez-vous de bien comprendre l'impact potentiel de toute commande avant de l'utiliser.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Vous devez parfois fragmenter des paquets encapsulés en tunnel pour pouvoir les transmettre sur le câble. En voici un exemple.
Dans le cas de L2TP sur UDP, la surcharge de tous les protocoles inclut un ensemble supplémentaire d’en-têtes IP, UDP et L2TP. L’en-tête IP est de 20 octets, l’en-tête UDP est de 8 octets et l’en-tête L2TP est généralement de 12 octets. Les 12 octets de l’en-tête L2TP sont les suivants :
les champs version et indicateur (2 octets)
les champs id de tunnel et id de session (2 octets chacun)
Décalage de remplissage de 2 octets
4 octets d’encapsulation PPP (Point-to-Point Protocol)
Ce diagramme présente plus de détails :
Si vous activez le séquençage des données (il est désactivé par défaut sur les périphériques Cisco), vous devez ajouter 4 octets supplémentaires pour les champs Ns et Nr. Ajoutez les en-têtes IP, UDP et L2TP pour voir que L2TP sur UDP ajoute 40 octets d’encapsulation de protocole au paquet.
Lorsque vous encapsulez un paquet IP de 1 500 octets dans L2TP, le paquet encapsulé devient 1 540 octets (1 500 + 40 octets d'en-têtes IP, UDP et L2TP). Vous devez fragmenter le paquet afin de le transmettre sur une interface de type Ethernet standard (qui a une MTU de 1500 octets). Le paquet encapsulé est fragmenté en deux. Le premier fragment se compose de 1 500 octets (1 460 octets du paquet IP d’origine + 40 octets de l’encapsulation L2TP). Le deuxième fragment est constitué de 60 octets (les 40 derniers octets du paquet IP initial + 20 octets de surcharge IP).
Note : Seul le premier fragment contient l'en-tête L2TP ; le deuxième fragment contient uniquement un en-tête IP. Cela permet à l'homologue L2TP, qu'il s'agisse d'un LAC ou d'un LNS, de réassembler les deux fragments dans le paquet encapsulé par tunnel d'origine de 1 540 octets.
L'un des problèmes auxquels le protocole L2TP (Layer 2 Tunneling Protocol) sur le protocole UDP (User Datagram Protocol) et d'autres protocoles de tunnellisation IP de couche 2 et de couche 3 est confronté est que la surcharge du protocole de tunnellisation augmente la taille du paquet encapsulé par tunnel. Lorsque le paquet d'origine est déjà de taille complète, vous devez fragmenter le paquet encapsulé par tunnel afin de le transmettre sur le câble.
L'un des problèmes que la fragmentation et le réassemblage du paquet L2TP sur le concentrateur d'accès L2TP (LAC) et le serveur de réseau L2TP (LNS) provoquent est que la fragmentation et le réassemblage sont effectués au niveau du processus dans le logiciel Cisco IOS. Lors de l'agrégation d'un grand nombre de sessions L2TP et de flux de trafic sur un LNS, la commutation de processus peut réduire considérablement les performances. Pour cette raison, il est fortement souhaitable de réduire ou d'éliminer la nécessité de fragmentation et de réassemblage dans le chemin de commutation L2TP.
Utilisez l'une des méthodes décrites dans ce document pour ajuster l'unité de transmission maximale (MTU) afin de résoudre ce problème.
Diverses configurations et fonctions du logiciel Cisco IOS ont été conçues pour éviter la fragmentation et le réassemblage dans le chemin de commutation L2TP en ajustant le MTU.
Configurez une MTU IP inférieure sur l'interface virtual-template à l'aide de la commande ip mtu. La configuration d'une MTU IP inférieure force le routeur à abandonner tous les paquets IP qui dépassent la MTU IP et dont le bit DF (Don't Fragment) est défini dans l'en-tête IP. Le routeur génère ensuite un message ICMP (Internet Control Message Protocol) de type 3 Hôte inaccessible, de fragmentation de code 4 nécessaire vers la source du paquet (l’hôte d’origine). Ce message indique le MTU IP de l'interface, afin que la source puisse réduire la taille du paquet pour qu'il s'adapte à l'interface. Ce processus est également appelé PMTUD (Path MTU Detection). Pour plus d'informations, reportez-vous à la RFC 1191 . Configurez le MTU IP sur la taille de paquet IP la plus grande qui ne dépassera pas le PMTU entre le LAC et le LNS lorsque l'en-tête L2TP complet est ajouté. Pour un PMTU de 1 500 octets et un en-tête L2TP de 40 octets standard, définissez le MTU IP sur 1 460 (en-tête de 1 500 à 40 octets).
Si le PMTU est inconnu (ou change) entre le LAC et le LNS, vous pouvez configurer la commande ip pmtu sous le vpdn-group. La commande ip pmtu a été ajoutée dans le logiciel Cisco IOS Version 12.2(4)T en utilisant l'ID de bogue CSCds72714 (non visible pour les utilisateurs externes). La fonctionnalité ip pmtu copie le bit DF du paquet interne vers l'en-tête L2TP externe et active PMTUD entre le routeur et son point de terminaison de tunnel L2TP.
Microsoft Windows dispose d'un paramètre de Registre qui vous permet d'activer une fonction de désactivation pour leur détection PMTU. Pour plus d'informations sur Windows NT, consultez l'article suivant sur le site Web de Microsoft : Modification de l'algorithme de détection des trous noirs PMTU pour Windows NT 3.51 (Q136970) .
Pour Windows 2000/XP, l'article de Microsoft How to Troubleshoot Black Hole Router Issues (Q314825) décrit différentes méthodes de Windows pour éviter ce problème. Cet article définit le terme de routeur à trou noir, décrit une méthode de localisation des routeurs à trou noir et suggère trois façons d'éviter la perte de données qui peut se produire en raison d'un routeur à trou noir.
Vous pouvez également activer l'ajustement automatique du MTU IP. Cette fonctionnalité permet au routeur de régler automatiquement le MTU IP sur l'interface d'accès virtuel pour compenser la taille de l'en-tête L2TP et du MTU de l'interface de sortie. Cette fonctionnalité a été ajoutée dans le logiciel Cisco IOS Version 12.1(5)T en utilisant l'ID de bogue CSCdr01713 (clients enregistrés uniquement).
Remarque : Le MTU IP n'est réglé automatiquement que s'il n'y a pas de MTU IP configuré manuellement sur l'interface de modèle virtuel (en utilisant l'option de la section précédente).
Initialement, cette fonctionnalité était activée par défaut sans méthode pour la désactiver. L'ID de bogue CSCdt67753 (clients enregistrés uniquement) dans les versions 12.2(3) et 12.2(4)T du logiciel Cisco IOS a ultérieurement ajouté la commande [no] ip mtu adjust sous vpdn-group pour activer et désactiver la fonctionnalité. La fonction devait être activée par défaut. Cette fonctionnalité ne dispose pas d'interface de ligne de commande (CLI) pour modifier la valeur par défaut uniquement pour les connexions L2X, qui ne se lient pas à un groupe vpdn (tel qu'un tunnel L2F ou L2TP initié par SGBP). L'incapacité à la désactiver pour les topologies MMPPP (Multichassis Multilink PPP), combinée aux problèmes PMTUD décrits ci-dessous, a provoqué de nombreuses plaintes de la part des utilisateurs. Pour cette raison, la valeur par défaut a été modifiée pour que la fonctionnalité d'ajustement automatique de MTU IP soit désactivée à partir des versions 12.2(6) et 12.2(8)T du logiciel Cisco IOS et ultérieures à l'aide de l'ID de bogue CSCdu69834 (clients enregistrés uniquement).
Le réglage manuel et automatique du MTU dépend de la PMTUD entre les hôtes finaux. Bien qu'en théorie, PMTUD ne fonctionne pas bien sur Internet. Voir RFC 2923 pour une description détaillée de la façon dont la PMTUD se brise sur Internet. Le plus gros problème est la présence de « trous noirs » qui font que les téléchargements de pages web semblent être suspendus en cours de flux. Ces trous noirs sont généralement causés par des pare-feu ou des routeurs configurés pour filtrer les messages ICMP. Lorsque la source des paquets volumineux n'est pas en mesure de recevoir le message ICMP Host Unreachable du routeur, indiquant que le MTU a été dépassé, il ne peut pas réduire la taille du paquet. Au lieu de cela, il continue à essayer de retransmettre le même paquet encore et encore avec le bit DF défini. Ces paquets sont abandonnés par le LNS car ils dépassent PMTU et la connexion cesse de répondre.
En raison de problèmes liés à PMTUD pour détecter que la MTU IP est plus petite sur un tunnel L2TP, Cisco a ajouté la fonctionnalité d'ajustement de la taille maximale de segment TCP (MSS) dans le logiciel Cisco IOS Version 12.2(4)T.
La fonctionnalité TCP Maximum Segment Size adjust (Réglage de la taille maximale du segment TCP), ajoutée par l'ID de bogue CSCds69577 (clients enregistrés uniquement) disponible dans le logiciel Cisco IOS Version 12.2(4)T et ultérieure, permet au routeur de modifier le MSS TCP annoncé dans les paquets SYN entrants et sortants envoyés par les hôtes finaux. En modifiant le MSS TCP à une valeur inférieure à la valeur par défaut habituelle de 1460, vous pouvez éliminer TCP comme source de paquets de taille réelle. Le MSS TCP doit être ajusté à une valeur telle qu'un segment TCP avec un en-tête TCP/IP et encapsulé dans L2TP sur UDP ne dépasse pas le MTU IP de l'interface de sortie. Un en-tête TCP/IP est généralement de 40 octets et l’en-tête L2TP sur UDP est de 40 octets supplémentaires. Par conséquent, en général, le MSS TCP doit être réglé sur 1420 (1500 - 40 octets en-tête TCP/IP - 40 octets L2TP sur en-tête UDP).
La commande utilisée pour cela est ip tcp adjust-mss <mss>, qui est une commande de niveau interface.
La dernière option pour réduire la fragmentation dans un réseau L2TP nécessite la prise en charge de la négociation d'unité de réception maximale (MRU) sur le client de protocole point à point. L'option MRU dans PPP permet à un homologue d'annoncer quelle est son unité de réception maximale. Par exemple, si un homologue annonce une unité MRU de 1 460, cet homologue ne traitera pas une trame PPP avec une charge utile supérieure à 1 460 octets. La mise en oeuvre PPP de Cisco utilise le MTU de l'interface comme valeur MRU annoncée lors de la négociation PPP. Si le MTU est défini comme valeur par défaut de 1 500 octets, aucune unité MRU n'est annoncée, car il s'agit de la valeur par défaut standard pour PPP. Cependant, si le MTU est défini sur 1460, une MRU PPP de 1460 est annoncée. Si l'homologue PPP écoute l'unité de données de protocole annoncée lors de la négociation PPP et ajuste son unité de transmission maximale (MTU) (et indirectement l'unité de transmission maximale (MTU) IP) pour cette liaison PPP, nous pouvons éviter la fragmentation. Avec une MRU PPP annoncée de 1460, l'homologue doit définir la MTU IP sur 1460. Ceci, à son tour, modifie le MSS TCP que l'homologue annonce lors de l'ouverture des connexions TCP et évite la fragmentation sur le réseau L2TP.
Utilisez la commande mtu <bytes> pour configurer une MTU inférieure sur l'interface virtual-template. Encore une fois, cela nécessite la prise en charge du client PPP pour écouter l'unité MRU annoncée lors de la négociation PPP. Un client connu qui écoute l'option MRU est le client PPP de Windows XP. Malheureusement, d'autres clients PPP couramment déployés n'adhèrent pas à l'unité MRU PPP annoncée comme ils le devraient. Reportez-vous à la documentation du client PPP pour déterminer s’il utilise correctement l’unité MRU PPP annoncée. Lors de l'exécution de L2TP avec proxy-LCP, la renégociation LCP doit avoir lieu puisque l'option MRU est négociée pendant la phase LCP. Pour activer la renégociation LCP, configurez la renégociation lcp en cas d'incompatibilité ou la renégociation lcp toujours sous le groupe vpdn.
Un problème avec la réduction de la MTU est que la MTU IP est automatiquement diminuée également. Il est actuellement impossible de configurer un MTU IP supérieur au MTU sur une interface de modèle virtuel. Ceci est suivi par l'ID de bogue CSCdx39828 en tant que demande de fonctionnalité/amélioration (non visible pour les utilisateurs externes).
Cette méthode nécessite que les clients écoutent l'option MRU lors de la négociation LCP. Il y a souvent un mélange de clients : certains écoutent les MRU, d'autres non. Les clients qui ignorent MRU rencontrent les problèmes PMTUD décrits dans la section Réglage automatique de la MTU IP. Pour ces clients, vous pouvez utiliser une solution de contournement différente en désactivant efficacement PMTUD en effaçant le bit DF sur le paquet IP interne. Vous pouvez effectuer cette opération avec la configuration suivante :
interface virtual-template1 ip policy route-map clear-df ! route-map clear-df permit 10 match ip address 101 set ip df 0 ! access-list 101 permit tcp any any
La plate-forme logicielle Cisco IOS offre de nombreuses manières d’optimiser les performances de commutation L2TP. La PMTUD est une solution idéale. Cependant, en raison de problèmes sur Internet, il n'est pas toujours fiable. La plate-forme logicielle Cisco IOS propose d'autres mécanismes pour maintenir les performances de commutation L2TP élevées et optimiser la connectivité des utilisateurs.