Maximum Segment Size
Maximum Segment Size (MSS ou longueur maximum de segment en français) désigne la quantité de données utiles en octets qu'un ordinateur ou tout équipement de communication peut recevoir dans un segment TCP seul et non fragmenté. Pour obtenir le meilleur rendement possible, la taille du segment de données plus celles des en-têtes IP et TCP doit être inférieure à la MTU.
Utilisation
[modifier | modifier le code]La MSS est annoncée par chacun des correspondants dans leur premier paquet d'établissement d'une session TCP (SYN). Chaque correspondant doit s'y conformer et ne doit pas envoyer de segment dont la taille dépasse la MSS annoncée par son correspondant (RFC 9293[1]).
La MTU courante dans le cadre d'un réseau Ethernet est de 1 500 octets. Sachant que l'en-tête TCP/IP fait 40 octets, la MSS annoncée par les machines sera de 1 460 octets.
Lors du routage d'un paquet IP, si la MTU de l'interface de sortie est plus petite que la taille du paquet, il sera fragmenté en plusieurs paquets IP. Cela ralentit considérablement les connexions en introduisant de la latence venant du temps nécessaire pour fragmenter plus le temps pour réassembler à l'arrivée. La fragmentation peut être évitée pour les flux TCP en abaissant la MSS. Cette modification peut-être réalisée par les équipements intermédiaires. Par exemple en cas de traversée d'un tunnel qui ajoute une encapsulation inconnue de la machine cliente ou serveur.
Option adjust-mss sur les routeurs Cisco
[modifier | modifier le code]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
[modifier | modifier le code]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 :
config firewall policy
edit <ID de la policy>
...
set tcp-mss-sender <valeur>
set tcp-mss-receiver <valeur>
...
next
end
Option mss clamping sur les routeurs Linux accélérés par 6WINDGate
[modifier | modifier le code]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).
Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- (en) TCP MSS Adjustment [PDF]
- iptables cible Linux TCPMSS