Gestion de la MTU et du MSS

Lorsque l’on cherche à optimiser les réglages réseaux backbone, on peut tomber sur des notions comme la MTU (maximum transmission unit) et le MSS (maximum segment size).

Lorsque l’on cherche à optimiser les réglages réseaux backbone, on peut tomber sur des notions comme la MTU (maximum transmission unit) et le MSS (maximum segment size).

Ce sont des mesures et réglages de taille de paquets ou segment du protocole TCP.

Le protocole TCP

TCP (Transmission Control Protocol) est un protocole qui garantit que les paquets de données sont livrés et reçus dans l’ordre, sans paquets perdus.

On dit que c’est un protocole qui travaille “en mode connecté”.

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.

Qu’est ce que la MTU ?

En réseau, l’unité de transmission maximale (MTU) est une mesure représentant le plus gros paquet de données que l’on puisse envoyer sans fragmentation sur un support de transmission et qu’un appareil connecté au réseau acceptera.

Si un paquet dépasse cette mesure 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.

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 est mesuré en octets.

Pourquoi utiliser du MSS ?

Dans certains cas, les liens (cuivre et fibre) dont la MTU est plus faible que les traditionnels 1500 octets ****rencontrent souvent de nombreux problèmes, qui frappent particulièrement les transferts TCP.

Nous allons pouvoir retrouver également des soucis de performances sur les connexions de type PPP sur lesquels la MTU est généralement de 1492 (celle-ci peut varier en fonction des types d’usages).

Pour cela, des règles MSS peuvent être mises en place afin de ne pas rencontrer ce type de problématique.

Sur notre offre mobile data, et pour nos clients en Virtual Access, nous disposons donc une règle de TCP MSS afin de conserver les performances attendues.

Pour les opérateurs de services terminant les connexions dans leurs backbone, il vous revient de configurer du TCP MSS si nécessaire. En effet, ce n’est pas toujours le cas car cela dépend de plusieurs facteurs (clients, serveurs, routeurs, protocoles…)

Exemple :

  1. L'hôte A envoie sa valeur MSS de 1380 à l'hôte B.
  2. L'hôte B reçoit la valeur 1380 MSS envoyée par l'hôte A.
  3. Le routeur B définit sa valeur MSS à 1360.
  4. L'hôte B envoie sa valeur MSS de 1360 à l'hôte A.
  5. L'hôte A reçoit la valeur 8K MSS envoyée par l'hôte A.
  6. L'hôte A définit sa valeur MSS à 1360.

Quelques exemples de règles de MSS :

💡 Exemple avec iptable : root@netwo :~# iptables -t filter -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1460