Sous Linux, comment définir la taille de segment maximale autorisée sur une connexion TCP? Je dois définir ceci pour une application que je n'ai pas écrite (donc je ne peux pas utiliser setsockopt
pour le faire). Je dois placer ceci AU-DESSUS du mtu dans la pile de réseau.Comment définir la taille maximale du segment TCP maximum sous Linux?
J'ai deux flux partageant la même connexion réseau. On envoie périodiquement de petits paquets, qui nécessitent une latence minimale absolue. L'autre envoie des tonnes de données - J'utilise SCP pour simuler ce lien.
J'ai mis en place le contrôle du trafic (tc) pour donner priorité au trafic de latence minimum. Le problème que je rencontre, cependant, est que les paquets TCP qui descendent de SCP finissent avec des tailles allant jusqu'à 64K bytes. Oui, ils sont divisés en paquets plus petits basés sur mtu, mais cela se produit malheureusement APRÈS la priorisation des paquets. Ainsi, mon paquet à faible latence est bloqué derrière jusqu'à 64K octets de trafic SCP.
This article indique que sous Windows, vous pouvez définir cette valeur.
Y at-il quelque chose sur Linux que je peux définir? J'ai essayé ip route et iptables, mais ceux-ci sont appliqués trop bas dans la pile réseau. J'ai besoin de limiter la taille du paquet TCP avant tc, donc il peut donner la priorité aux paquets de haute priorité de manière appropriée.
J'ai du mal à croire que les paquets finissent avec 64k dans la file d'attente tc, tc ne fonctionne pas au niveau TCP, il se soucie des paquets, pas des segments TCP – nos
Je suis d'accord. De ma lecture les segments de TCP devraient être cassés avant tc. Cependant, ce n'est pas ce que je vois (à la fois dans la latence et dans tcpdump). Lorsqu'un segment TCP volumineux s'éteint, il retarde le canal prioritaire jusqu'à ce que tous les segments (jusqu'à 64 Ko) du grand segment soient envoyés. – Eric