web-dev-qa-db-fra.com

Comment puis-je régler l'initial TCP Retransmit Timeout?

La valeur initiale TCP RTO de 3S est trop longue pour la plupart des applications à base de réseau local. Comment puis-je le régler plus bas? Y a-t-il une SYSCTL?

14
claymation

Nope, tu ne peux pas; Il est codé dans le noyau. Alors changez le noyau et recompilez-vous.

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

C'est ce que vous devriez entrer dans votre incluant/net/tcp.h.

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

12
Marco Bizzarri

Le réglage initial ne devrait pas beaucoup affecter votre performance globale, car RTO s'adapte à vous-même aux conditions du réseau. Si vous modifiez RTO, vous pouvez la définir sur 1 sec (mais pas moins).

Il y a une discussion sur cette question 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.

RFC 6298 est une mise à jour proposée (publiée juin 2011) indiquant que [~ # ~ # ~] rto [~ # ~] Peut être initialisé à une valeur inférieure (mais pas inférieure à 1 seconde) et contient une annexe contenant des données qui justifie 1 sece comme une valeur initiale raisonnable.

4
Jay Elston