Resumo

  • A expiração do PTO dispara um ou dois datagramas de sondagem que solicitam ACK e aumenta o backoff.
  • Ela não declara, sozinha, que um pacote se perdeu nem prova congestionamento ou ACK perdido.
  • Temporizador, packet number space, conteúdo da sonda, ACKs posteriores, perda declarada e resultado da aplicação são evidências separadas.

O erro operacional surge quando um pipeline transforma um evento de temporizador em uma conclusão sobre a rede. A expiração do PTO ocorre em um packet number space específico. Ela indica que pacotes que solicitam ACK não produziram o progresso esperado dentro do período calculado, ou que um servidor pode precisar sondar antes da validação do endereço do cliente. A ação prevista é buscar progresso: o endpoint envia pelo menos uma sonda e pode enviar até dois datagramas de tamanho completo que solicitam ACK; depois aumenta o backoff do PTO. Nada nessa sequência identifica um pacote perdido.

O PTO é mantido por packet number space. Initial, Handshake e Application Data não devem ser tratados como uma fila única. O cálculo normal é smoothed_rtt + max(4*rttvar, kGranularity) + max_ack_delay. Nos espaços Initial e Handshake, o termo max_ack_delay é igual a zero. O PTO de Application Data não é armado antes da confirmação do handshake. O envio ou o recebimento de ACK para pacotes que solicitam ACK pode reiniciar o temporizador, assim como o descarte das chaves Initial ou Handshake. Depois da expiração, o próximo período dobra; períodos consecutivos crescem exponencialmente entre os espaços e acabam limitados pelo idle timeout.

A detecção de perda tem uma prova diferente. Um time-threshold loss-detection timer tem precedência, portanto o PTO não deve ser armado enquanto ele estiver configurado. ACKs posteriores podem levar a uma declaração por packet threshold ou time threshold segundo a RFC 9002. Essa declaração posterior não deve ser projetada para trás sobre a expiração. Marcar todos os pacotes não confirmados como perdidos no instante do PTO antecipa uma decisão sem a evidência correspondente.

A palavra “retransmissão” também induz ao erro. Dados novos devem ser usados quando disponíveis. Se não houver dados novos, informações já enviadas podem ser carregadas novamente em um novo frame e em um novo pacote. Sem dados, PING ou outro frame que solicite ACK pode ser usado. A RFC 9000 afirma que pacotes QUIC perdidos não são retransmitidos inteiros: a informação que precisa de reparo é carregada outra vez em novos frames e novos pacotes. Enviar a informação novamente não é reproduzir o mesmo pacote; PING e PADDING não contêm informação retransmissível.

Antes da validação do endereço, as sondas do servidor contam contra o anti-amplification limit. Se o orçamento não permitir mais envio, o servidor não deve armar o PTO até que outro datagrama do cliente aumente esse orçamento. O cliente ainda pode precisar sondar para desbloquear o servidor. Esse é um fato sobre orçamento e estado, não uma prova de perda. A expiração do PTO também não prova que congestionamento causou a falta de progresso, que o receptor processou dados da aplicação, que um serviço respondeu ou que uma operação foi concluída.