Menu Fermer

Qu’est-ce que le MTU et MSS et comment l’optimiser

Lorsque l’on cherche à optimiser les réglages réseaux, on peut tomber sur des notions comme le MSS (maximum segment size) et MTU (maximum transmission unit).
Ce sont des mesures et réglages de taille de paquets ou segment du protocole TCP.

Dans cet article, nous allons voir en détails ce qu’est le MSS et MTU.
Comment doit-on le régler.

Qu'est-ce que le MTU et MSS et comment l'optimiser

Introduction au protocole TCP

Le protocole de contrôle de transport, ou TCP, est un protocole qui garantit que les paquets de données sont livrés et reçus dans l’ordre, sans paquets perdus.
Pour cela, il embarque donc une vérification du contrôle de flux (Flow control en anglais).

Une connexion est établie puis un flux passe.
Cela se caractérise par des paquets.
Les paquets sont associés à plusieurs en-têtes contenant des informations sur leur contenu et leur destination.

Pour plus d’informations, lire cet article qui explique comment une connexion TCP s’établit :

Enfin cet article qui donne la structure d’un paquet TCP :

Trame, paquet et segment TCP

Les paquets de données comportent deux parties principales: l’en-tête (header) et la charge utile (payload).
Les tailles des paquets et leurs en-tête sont fixés, ainsi :

  • La taille de l’en-tête est de 20 bytes
  • La taille maximum d’un paquet TCP/IP est 64K (65535 bytes) mais dans la réalité, les réseaux ont des limites de taille que nous allons voir en détails

Qu’est-ce que le MTU

En réseau, l’unité de transmission maximale (MTU) est une mesure représentant le plus gros paquet de données qu’un appareil connecté au réseau acceptera.
Imaginez-le comme une limite de hauteur pour les passages inférieurs ou les tunnels d’autoroute: les voitures et les camions qui dépassent la limite de hauteur ne peuvent pas passer, tout comme les paquets qui dépassent le MTU d’un réseau ne peuvent pas passer par ce réseau.

Dans ce cas là, le paquet est divisé en plusieurs morceaux.
On parle de fragmentation du paquet.
Cela nécessite plus de temps et le destinataire doit rassembler les paquets.

Ainsi une version optimum de MTU correspond à la valeur maximale que le réseau accepte.
S’il est trop bas, cela ajoute de la latence.

Qu’est-ce que le MSS

MSS (taille de segment maximale) limite la taille des paquets, ou petits morceaux de données, qui voyagent sur un réseau, tel qu’Internet.
Toutes les données qui transitent sur un réseau sont divisées en paquets. Les paquets sont associés à plusieurs en-têtes contenant des informations sur leur contenu et leur destination.
MSS mesure la partie non-en-tête d’un paquet, qui est appelée la charge utile.

Plus précisément, MSS est la plus grande taille de segment TCP (Transport Control Protocol) qu’un périphérique connecté au réseau peut recevoir. MSS définit le «segment» comme étant uniquement la longueur de la charge utile, et non les en-têtes attachés.
il se est mesur en octets.

TCP MSS et IP/Ethernet MTU

MSS mesure la partie non-en-tête d’un paquet, qui est appelée la charge utile.
On utilise la formule suivante pour définir le MSS qui consiste à retirer les en-tête au MTU :

MTU - (TCP header + IP header) = MSS

Certains protocoles ajoutent des données dans les paquets TCP.
C’est le cas de IPsec (Internet Protocol security) qui permet de chiffrer les paquets IP utilisés notamment par des solutions de VPN.
Ainsi la formule devient :

MTU - (TCP header + IP header + IPsec) = MSS

Dans un réseau Ethernet le MTU maximale est de 1500, ce qui signifie qu’il n’accepte que des paquets d’une longueur maximale de 1 500 octets.
Au delà, les paquets plus longs seront fragmentés.
Le MSS du routeur doit être défini sur 1 460 octets.
Ainsi les paquets avec une taille de charge utile supérieure à 1 460 octets seront supprimés.
Un périphérique peut envoyer un paquet trop volumineux comme celui-ci par erreur s’il ne connaît pas les paramètres MTU et MSS des routeurs entre lui et un autre périphérique.
Un processus appelé path MTU discovery permet d’éviter de tels incidents.

Qu’est-ce que le path MTU discovery (PMTUD) ?

MTU discovery (PMTUD) est une méthode qui permet d’obtenir le MTU de tous les équipements que traversent un paquet.

Pour déterminer le meilleur MTU, on envoie des paquets jusqu’à ce que ce dernier ne soit plus droppé par un des routeurs le long du chemin.
Lorsqu’un périphérique le long du chemin abandonne le paquet, il renvoie un message ICMP avec son MTU.
Le périphérique source abaisse son MTU et envoie un autre paquet de test. Ce processus est répété jusqu’à ce que les paquets de test soient suffisamment petits pour traverser tout le chemin du réseau sans être abandonnés.

Le site speedguide vous permet d’obtenir vos réglages MTU et MSS ainsi que d’autres paramètres TCP/IP.

Le site speedguide vous permet d'obtenir vos réglages MTU et MSS ainsi que d'autres paramètres TCP/IP

Comment optimiser le MTU ?

Pour déterminer le meilleur MTU, on peut utiliser le même principe que le path MTU discovery.
Le but étant d’envoyer des paquets fragmentés de différentes tailles pour voir si un équipement drop ou le fragmente.

Avec la commande ping

La commande ping et envoyer des paquets non fragmentés avec l’option -f et une taille de mtu différent avec -l :

ping www.yahoo.com -f -l 1450
ping www.yahoo.com -f -l 1500

Ci-dessous, on voit qu’avec une taille de MTU 1500 et 1400, les paquets doivent être fragmenté.
A 1300, le ping passe.
Ainsi le meilleur MTU se situe entre 1300-1400, il faut alors entourer ces valeurs pour déterminer le MTU optimum.

Déterminer et optimiser le meilleur MTU avec la commande ping

Une fois le MTU optimal déterminé, Windows permet de modifier les réglages MTU depuis le registre Windows ou via la commande CMD netsh.
L’article suivant vous guide pour le faire :

Avec TCP Optimizer

Le programme gratuit TCP Optimizer permet de déterminer le meilleur réglage MTU et de le modifier le MTU.

  • Télécharger TCP Optimizer
  • Lance le par un clic droit puis exécuter en tant qu’administrateur
  • Cliquez sur MTU/Lancety
  • puis en bas sur Largest MTU. Les ping s’affichent en liste et en bas, le meilleur MTU est indiqué. Ici la valeur est de 1420.
Déterminer et optimiser le meilleur MTU avec TCP Optimizer