Como posso ajustar o tempo limite de retransmissão TCP inicial?

14

O valor inicial do TCP RTO de 3s é muito longo para a maioria dos aplicativos baseados em LAN. Como posso afinar mais baixo? Existe um sysctl?

    
por claymation 28.07.2011 / 19:48

2 respostas

12

Não, você não pode; é codificado no kernel. Então, mude o kernel e recompile.

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

Isto é o que você deve obter em seu include / net / tcp.h.

Mas posso ver que alguém forneceu um patch , mesmo que nunca tenha tentado isso

    
por 28.07.2011 / 20:14
4

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 mais baixo).

Há uma discussão sobre isso em 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 é uma atualização proposta (publicada em junho de 2011) que diz que RTO pode ser inicializado com um valor mais baixo (mas não inferior a 1 seg) e contém um Apêndice contendo dados que justificam 1 segundo como um valor inicial razoável.

    
por 28.07.2011 / 20:53