Resumo

  • O RFC 6298 calcula o tempo de retransmissão com RTT suavizado e sua variação, recusando amostras ambíguas que poderiam atribuir o ACK à cópia errada.
  • A primeira espera pode começar em um segundo; um SYN perdido restaura três segundos para os dados e cada expiração posterior dobra o prazo.

O silêncio é evidência fraca. O segmento pode ter sumido, o ACK pode ter sumido ou nenhum dos dois. Retransmitir cedo demais cria duplicata e aumenta a carga de uma rota talvez congestionada. Esperar demais deixa uma perda real sem reparo. O RTO escolhe entre esses erros sem fingir saber a causa.

A estimativa carrega tempo e incerteza

Antes da primeira medição, o RFC recomenda RTO de um segundo, permitindo valor mais conservador. Com a primeira amostra R, define SRTT = R, RTTVAR = R/2 e RTO = SRTT + max(G, 4*RTTVAR), sendo G a granularidade do relógio.

Nas amostras seguintes, RTTVAR é atualizado primeiro com o SRTT antigo; beta vale um quarto, alfa um oitavo e K quatro. Só depois SRTT muda. A ordem mede quão surpreendente foi a nova amostra diante da estimativa anterior. O RTO continua sendo o tempo suavizado mais o maior valor entre G e quatro vezes a variação.

Resultado inferior a um segundo deveria subir para um. Um máximo só é permitido se tiver pelo menos 60 segundos. A implementação pode ser mais conservadora, nunca retransmitir com mais agressividade que o algoritmo.

Nem todo ACK ensina o relógio

O algoritmo de Karn é obrigatório. Depois de uma retransmissão, o ACK pode confirmar a primeira cópia ou a segunda; não pode virar amostra RTT, salvo quando TCP Timestamps elimina a ambiguidade. Sem timestamps, normalmente se coleta ao menos uma amostra por RTT. Com eles, várias são possíveis, sem abolir as regras do estimador.

Esse uso é diferente de PAWS: o timestamp identifica qual envio foi reconhecido, não rejeita números antigos após a volta da sequência.

Um temporizador para o dado pendente mais antigo

Ao enviar dados novos com o temporizador parado, inicia-se com o RTO atual. Um ACK que cobre tudo o interrompe. Um ACK que avança a confirmação enquanto restam dados o reinicia com o mesmo RTO.

Na expiração, TCP retransmite o segmento não reconhecido mais antigo, dobra RTO e reinicia com o valor dobrado. O backoff exponencial torna cada silêncio repetido mais caro. Uma amostra limpa posterior pode reduzir RTO; após vários recuos, SRTT e RTTVAR podem ser apagados se já não descrevem a rota.

O segundo inicial tem exceção específica. Se um SYN expirar com RTO menor que três segundos, o valor deve voltar a três segundos quando a conexão estiver estabelecida e os dados começarem. A rota refutou a hipótese rápida.

O temporizador controla, não diagnostica

Um atacante pode atrasar pacote medido para inflar RTO ou tentar reduzi-lo com tráfego falsificado. Suavização e backoff limitam persistência, mas não autenticam atraso. Uma expiração é ação sob incerteza, não prova de perda específica.

A única fonte é o RFC 6298, publicado na trilha de padrões em junho de 2011. Ele define o algoritmo e sua justificativa histórica, não configurações atuais ou RTTs de uma rede concreta.