Niveau :      
Résumé : MTU vs MSS ; ip link show ; ip link set mtu

La MTU : Maximum transmission unit est la taille maximum des paquets pouvant être transférés sur un réseau. La MTU dépend de la technologie réseau sur laquelle on se trouve. Pour l'ethernet, elle vaut 1500 (le gigabit ajoute les jumbo frame et elle peut alors valoir 9000). Internet ne garantit officiellement qu'une MTU de 576 (en ipv4), ce qui est la valeur que vous avez avec un modem rtc. En ipv6, la valeur minimale garantie a été augmentée à 1280. Pour information, si votre accès internet se fait en PPPoE vous avez une MTU à 1492, 8 octets servant à la partie PPP.

La MSS : Maximum segment size est la taille maximum d'un segment TCP (et n'est donc pas applicable aux paquets non tcp), c'est la taille utile du paquet. L'en-tête TCP/IP variant rarement, elle vaut en général MTU - 40.

Une MTU étant dépendante du chemin emprunté, elle peut varier au cours d'une communication. Le noyau commence donc par attribuer la valeur correspondant à l'interface sur laquelle il se trouve comme vu plus haut.

# Pour voir la MTU
$ ip link show
# ou (vieille version)
$ ifconfig
# et pour la changer
$ ip link set eth0 mtu 1450

Ensuite, en général, il utilise un algorithme appelé PMTU discovery. C'est du même style que pour un traceroute, il envoie ses paquets avec la taille correspondant à son interface et les réduit lorsqu'il reçoit un paquet icmp lui disant que son paquet est trop gros. Vous pouvez découvrir la MTU de la même façon à la main avec ping :

$ ping -c 1 -M do www.google.com -s 1500

Comme vous savez ce qu'est la dichotomie, vous trouverez rapidement. Attention, ping ajoute une en-tête de 28 octets (icmp/ip) au paquet (mais n'affiche que 8 octets (icmp) de plus).

Il se peut que le noyau réduise la MTU temporairement pour une destination donnée, par exemple vers un modem rtc. Mais il arrive que des administrateurs peu consciencieux empêchent tout paquet ICMP de passer, y compris ceux qui indiquent qu'il faut fragmenter le paquet. Dans ce cas vous êtes bien embêtés et vos connexions ont des problèmes. Typiquement, une connexion ftp ou http se passe bien et certains transferts de fichiers aussi, mais dès qu'un gros fichier est transféré vous perdez la connexion.

À vous alors de découvrir la MTU à la main (ping), vous pouvez alors la forcer. Et comme vous ne voulez pas toucher à celle des autres destinations, vous la changez seulement pour une route.

$ ip route add 10.0.0.0/24 via 192.168.2.1 mtu 1300

Note : C'est la MTU garantie de 576 qui limite la taille des paquets dns et par conséquent le nombre de root server.

Note 2 : si quelqu'un connaît le sexe des mtu et mss ca m'intéresse, vous dites le mtu ou la mtu ?