Vous avez les symptômes d'un problème MTU : certaines connexions TCP se bloquent, de manière plus ou moins reproductible pour une commande ou une URL donnée, mais sans schéma global facilement discernable. Un symptôme révélateur est que les sessions interactives ssh fonctionnent bien mais que les transferts de fichiers échouent presque toujours. De plus, pppoe est le premier fournisseur de problèmes de MTU pour les utilisateurs à domicile. Je vous prescris donc un chèque MTU.
Qu'Est-ce que c'est?
Le m aximum t ransmission u nit est la taille maximale d'un paquet sur une liaison de réseau. Le MTU varie d'un support de transport à un autre, par exemple Ethernet câblé et wifi (802.11) ont des MTU différents, et les liaisons ATM (qui constituent la plupart de l'infrastructure longue distance) ont chacune leur propre MTU.
PPPOE est un protocole encapsulé, ce qui signifie que chaque paquet se compose de quelques octets d'en-tête suivis du paquet sous-jacent - il réduit donc la taille maximale du paquet de la taille de l'en-tête.
IP permet aux routeurs de fragmenter les paquets s'ils détectent qu'ils sont trop gros pour le prochain saut, mais cela ne fonctionne pas toujours. En théorie, le MTU approprié doit être découvertautomatiquement , mais cela ne fonctionne pas toujours non plus. En particulier, la recherche sur Google suggère que Network Manager n'agit pas toujours correctement sur les informations MTU obtenues à partir de la découverte MTU, mais je ne sais pas quelles versions sont affectées ni quels sont les cas d'utilisation problématiques.
Comment le mesurer.
Si vous avez tracepath
des iputils Linux , exécutez tracepath 8.8.8.8
pour voir le MTU sur le chemin vers le serveur DNS de Google. Si votre version de traceroute
possède une --mtu
option, exécutez traceroute -n --mtu 8.8.8.8
. Voir Découvrir MTU entre moi et l'IP de destination pour plus d'options.
En l'absence d'outils automatisés, vous pouvez mesurer manuellement. Essayez d'envoyer des paquets ping d'une taille donnée à des hôtes externes qui leur répondent, par exemple ping -c 1 -s 42 8.8.8.8
(sous Linux; sur d'autres systèmes, consultez la documentation de votre ping
commande). Vos paquets devraient passer pour des valeurs suffisamment petites de 42 (si 42 ne fonctionne pas, quelque chose bloque les pings.). Pour des valeurs plus importantes, le paquet ne passera pas. 1464 est une valeur maximale typique si l'élément limitatif de l'infrastructure est votre réseau Ethernet local. Si vous avez de la chance, lorsque vous envoyez un trop gros paquet, vous verrez un message comme Frag needed and DF set (mtu = 1492)
. Si vous n'êtes pas chanceux, continuez à expérimenter avec la valeur jusqu'à ce que vous trouviez le maximum, puis ajoutez 28 ( -s
spécifie la taille de la charge utile, et il y a 28 octets d'en-têtes en plus de cela). Voir égalementComment optimiser votre connexion Internet en utilisant MTU et RWIN sur les forums Ubuntu.
Comment le configurer (remplacez 1454 par le MTU que vous avez déterminé et eth0
par le nom de votre interface réseau)
- En une seule fois (Linux): exécutez
ifconfig eth0 mtu 1454
- En permanence (Debian et dérivés tels que Ubuntu, si vous n'utilisez pas Network Manager): Modifier
/etc/network/interfaces
. Juste après l'entrée de votre interface réseau (après la iface eth0 …
directive), ajoutez une ligne avec pre-up ifconfig $IFACE mtu 1454
. Alternativement, si votre adresse IP est statique, vous pouvez ajouter le mtu 1454
paramètre à la iface eth0 inet static
directive.
En permanence (Debian et dérivés tels que Ubuntu, avec ou sans Network Manager): créez un script appelé /etc/network/if-pre-up.d/mtu
avec le contenu suivant et rendez-le exécutable ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Autres ressources