Maximum Segment Size
# Maximum Segment Size

Maximum Segment Size (MSS ou longueur maximum de segment en français) désigne la quantité de données en octets qu'un ordinateur ou tout équipement de communication peut contenir dans un paquet seul et non fragmenté. Pour obtenir le meilleur rendement possible, la taille du segment de données et de l'en-tête doivent être inférieures au MTU.

## Utilisation

Le MSS est particulièrement important dans le cadre de connexions au réseau Internet, en particulier dans le cas de la navigation sur le web. Lorsque le protocole TCP est utilisé pour ces connexions, chaque partie doit se mettre d'accord et ensuite paramétrer la taille du MTU acceptable par chacun. C'est la raison pour laquelle on peut observer une négociation du MSS lors de l'initialisation de la session TCP.

La taille classique d'un MTU dans le cadre d'une connexion Internet via un ordinateur personnel est soit de 576 octets, soit de 1 500 octets. Sachant que l'en-tête TCP/IP fait 40 octets, le MSS doit être inférieur ou égal à la différence, donc 536 octets ou 1 460 octets.

Comme les données sont routées à travers Internet, elles doivent passer à travers de multiples routeurs et passerelles. Théoriquement, chaque segment devrait pouvoir passer les routeurs sans être fragmenté. Mais certains des nœuds ne supportent pas des MTU aussi élevés. Pour cette raison, les routeurs segmentent les paquets (les découpent en plusieurs sous-paquets). Cela a tendance à ralentir considérablement les connexions (du moins pour l'utilisateur final). L'effet de cette fragmentation peut être atténué en gardant un MSS relativement petit (dans la limite du raisonnable). C'est ce que fait, dans la plupart des cas, le système d'exploitation de la machine cliente.

## Option adjust-mss sur les routeurs Cisco

Les routeurs Cisco sont capables de modifier à la volée la valeur de la MSS des paquets reçus ou envoyés par une interface. Cette configuration se fait au moyen de la commande suivante exécutée dans le sous-mode interface :

(config-if)# ip tcp adjust-mss <valeur>

## Option tcp-mss sur les pare-feux FortiGate

Sur un pare-feu Fortigate la MSS peut être ajustée directement sur une policy. Le paramètre n'est pas modifiable en GUI mais seulement en CLI :

## Option mss clamping sur les routeurs Linux accélérés par 6WINDGate

Les routeurs Linux accélérés par le fast path des produits basés sur le 6WINDGate de 6WIND sont capables de modifier à la volée la valeur de la MSS des paquets TCP transitant par une interface physique ou une interface tunnel. Cette configuration se fait au moyen de la commande suivante directement sur le fast path car le noyau Linux n'a pas d'équivalent:

root# fp-cli tcpmss4-set IFACE MSS

root# fp-cli tcpmss6-set IFACE MSS

Une autre possibilité également supportée et gérée en mode Linux est d'utiliser iptables :

root# iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o IFACE -j TCPMSS --set-mss 1460

IFACE doit être un netdevice géré par Linux (cf ip link show).

