O valor inicial do TCP RTO de 3s é muito longo para a maioria dos aplicativos baseados em LAN. Como posso afinar mais? Existe um sysctl?
O valor inicial do TCP RTO de 3s é muito longo para a maioria dos aplicativos baseados em LAN. Como posso afinar mais? Existe um sysctl?
Respostas:
Não, você não pode; está codificado no kernel. Então mude o kernel e recompile.
#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ)) /* RFC 1122 initial RTO value */
É isso que você deve obter em seu include / net / tcp.h.
Mas posso ver que alguém forneceu um patch , mesmo que nunca tenha tentado
A configuração inicial não deve afetar muito o desempenho geral, pois o RTO se ajusta automaticamente às condições da rede. Se você alterar o RTO, poderá defini-lo como 1 segundo (mas não inferior).
Há uma discussão sobre isso na 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.
O RFC 6298 é uma atualização proposta (publicada em junho de 2011) que diz que o RTO pode ser inicializado com um valor mais baixo (mas não inferior a 1 segundo) e contém um apêndice contendo dados que justificam 1 segundo como um valor inicial razoável.