Retransmissão rápida espúria por pacotes fora de ordem Reordering triggers spurious fast retransmit
ID da causa rt-reorder · Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
Quando a ordem dos pacotes muda ao passar por vários caminhos ou links agregados, quem recebe avisa com ACKs duplicados que “falta um pacote”, e quem envia reenvia um pacote que tinha chegado sem problema.
Por quê Equipamentos que dividem o caminho pacote a pacote, LAGs (agregação de links) que distribuem pacote a pacote e o momento da troca de rota embaralham a ordem → Efeito Um pacote posterior chega antes e se acumulam 3 ACKs duplicados → retransmissão rápida → Na tela Os pacotes de jogo, esparsos, quase não são afetados. As atualizações grandes em lugares lotados e o download de patches ficam lentos, com engasgos de vez em quando
Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de infraestrutura)
Rede: distribuir por conexão (ECMP e LAG com hash de endereço e porta), sem dividir pacote a pacote. Servidores/SO: usar RACK (detecção de perda por tempo, resistente a pacotes fora de ordem; quando detecta retransmissão espúria via DSACK, aumenta sozinho a tolerância a pacotes fora de ordem), verificar o grau de desordem que o Linux estima automaticamente para cada conexão (valor reordering no ss -ti, inicial tcp_reordering=3).
No gráfico
Sempre alto desde o início · Detecções de pacotes fora de ordem, DSACKs recebidos
Onde olhar
Ver TcpExtTCPSACKReorder e TcpExtTCPTSReorder (vezes em que se detectaram pacotes fora de ordem) e TcpExtTCPDSACKRecv no nstat e, por conexão, reordering (aparece quando é diferente de 3) e reord_seen no ss -ti. Na captura de pacotes, usar o filtro do Wireshark tcp.analysis.out_of_order
Confirma se
Os contadores de pacotes fora de ordem e de DSACK sobem de forma constante, sem relação com o horário, e o valor reordering das conexões que passam por um caminho ou equipamento específico está acima de 3. Na captura do lado que recebe, o pacote posterior chega antes e o anterior chega logo em seguida
Descarta se
Contadores de pacotes fora de ordem parados e TcpExtTCPLostRetransmit aumentando: perda real. DSACK subindo só nos momentos de pico de RTT: “Retransmissão espúria por pico de latência”
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
IP SysctlLinux kernel Valor inicial de tcp_reordering 3 (ajustado automaticamente por conexão até tcp_max_reordering), configuração do RACK em tcp_recovery
misc/ss.ciproute2 ss -ti mostra reordering:valor quando o reordering da conexão é diferente do padrão 3, e reord_seen:vezes quando a conexão já viu pacotes fora de ordem
SNMP counterLinux kernel TcpExtTCPSACKReorder e TcpExtTCPTSReorder (detecção de pacotes fora de ordem), TcpExtTCPDSACKRecv (DSACKs recebidos), TcpExtTCPLostRetransmit (pacote reenviado perdido de novo)
include/uapi/linux/tcp.hLinux kernel tcpi_reord_seen no tcp_info: quantas vezes a conexão viu pacotes fora de ordem