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?
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?
Réponses:
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
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.