Comment puis-je régler le délai de retransmission TCP initial?

14

La valeur TCP RTO initiale de 3 s est trop longue pour la plupart des applications LAN. Comment puis-je le régler plus bas? Existe-t-il un sysctl?

claymation
la source

Réponses:

12

Non, tu ne peux pas; il est codé en dur dans le noyau. Alors changez le noyau et recompilez.

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

C'est ce que vous devriez obtenir dans votre include / net / tcp.h.

Mais je peux voir que quelqu'un a fourni un patch , même si je ne l'ai jamais essayé moi-même

Marco Bizzarri
la source
4

Le paramètre initial ne devrait pas affecter beaucoup vos performances globales, car RTO s'adapte automatiquement aux conditions du réseau. Si vous changez RTO, vous pouvez le régler sur 1 seconde (mais pas plus bas).

Il y a une discussion à ce sujet dans la RFC 1122 :

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

La RFC 6298 est une mise à jour proposée (publiée en juin 2011) qui dit que le RTO peut être initialisé à une valeur inférieure (mais pas inférieure à 1 seconde), et contient une annexe contenant des données qui justifient 1 seconde comme valeur initiale raisonnable.

Jay Elston
la source
1 seconde DEVRAIT, pas DOIT; btw vous pouvez regarder la rto d'un des front-end de moteur de recherche bien connu =)
SaveTheRbtz
Je ne suis pas d'accord avec cette affirmation "Le paramètre initial ne devrait pas affecter beaucoup vos performances globales". Cela peut affecter votre taux d'erreur pour l'application lors de la communication initiale. Lorsque l'application principale définit un délai de lecture à 3 secondes ou moins, les pertes de paquets (événement normal avec n'importe quelle congestion) sur le réseau pendant la communication TCP initiale ne permettront pas une retransmission correcte d'un paquet abandonné. la valeur initiale doit être inférieure au délai de lecture défini par l'extrémité de réception et doit être définie en fonction de la qualité de service du réseau sur lequel vous travaillez.
Joe
3 secondes est une éternité sur les réseaux locaux et les pertes de paquets se produisent très rapidement sur un réseau où le temps d'aller-retour est en millisecondes.
Joe
Je suis d'accord que les processeurs modernes peuvent faire beaucoup de choses en 3 secondes. Ma compréhension est que ce délai initial n'est appliqué que lors de l'initialisation du pilote, ce qui se produit uniquement lors du premier démarrage d'un système.
Jay Elston