한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Guia do Lag em Jogos › Causas-raiz da retransmissão TCP

Mudança de rota ou caminho ECMP com defeito Route change / bad ECMP member

ID da causa rt-path · Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento), Externo (Externo)

Abrir o card interativo, com figuras e simulações →

Pacotes somem durante os segundos em que a rota na internet muda, ou nas conexões que caíram em um caminho com defeito entre vários caminhos ECMP.

Por quê Recálculo de rotas do BGP, ou defeito no equipamento ou link de um dos vários caminhos (ECMP, LAG) → Efeito Perda temporária durante a troca de rota, ou perda constante só nas conexões que passam por esse caminho → Na tela De repente trava por alguns segundos e depois vem o avanço rápido, ou “reconectei e melhorou” (caiu em outro caminho)

Sintomas
Travamento, Avanço rápido, Teleporte
Fatores
Perda de pacotes
Quem é afetado
Região ou operadora específica
Quando
Aleatoriamente, de vez em quando
Responsável
Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento), Externo (Externo)
O que fazer (Equipe de desenvolvimento)
Registrar estatísticas de retransmissão por conexão (TCP_INFO), para poder extrair o IP, a porta e o horário de quem é afetado, não derrubar na hora uma conexão que ficou alguns segundos parada.
O que fazer (Equipe de infraestrutura)
Monitorar a taxa de retransmissão por região e operadora, verificar se a reconexão muda o caminho, contratar links de várias operadoras, inspecionar links com defeito nos caminhos ECMP e LAG dos nossos equipamentos, medir os caminhos com a mesma porta TCP do jogo (mtr --tcp --port; como o caminho é definido por endereço e porta, o ping comum pode seguir outro caminho e dar resultado normal).
O que fazer (Externo)
Reportar o caminho com defeito à operadora, anexando medições feitas com a mesma porta TCP e a comparação antes e depois da reconexão.
No gráfico
Degrau a partir de um momento · RTT (ping), taxa de retransmissão por região e operadora
Onde olhar
Agrupar as retransmissões por conexão com bcc tcpretrans -c para extrair endereço e porta dos jogadores afetados, e rodar mtr com a mesma porta TCP do jogo (mtr -T -P PORT) do servidor para o jogador e do jogador para o servidor, comparando os resultados. Comparar também antes e depois da reconexão
Confirma se
A partir de um certo momento, o RTT de uma região ou operadora muda em degrau, com alguns segundos de perdas concentradas; ou, dentro da mesma operadora, só algumas conexões (combinações de endereço e porta) retransmitem de forma constante e melhoram ao reconectar. Às vezes o ping comum está normal e a perda só aparece no mtr TCP
Descarta se
Todas as conexões da operadora piorando juntas no pico da noite: “Estouro de fila no gargalo”. Só um jogador ruim, com perda já no ping até o roteador: “Perda no trecho sem fio”
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Casos reais
Cloudflare 2020: Perda de tráfego em algumas cidades por erro de configuração no backbone da Cloudflare

Fontes

  1. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    Com vários caminhos, é difícil confiar nos resultados de ferramentas de diagnóstico como ping e traceroute; explica o método de fixar o caminho pelo hash do fluxo
  2. RFC 2992: Analysis of an Equal-Cost Multi-Path Algorithm IETF
    O ECMP escolhe o próximo caminho pelo hash dos campos de cabeçalho que identificam o fluxo (o mesmo fluxo segue o mesmo caminho)
  3. tcp(7) — Linux manual page Linux man-pages
    TCP_INFO: consulta o estado de cada socket (struct tcp_info)
  4. mtr(8) manual page source mtr
    -T (--tcp) usa TCP SYN no lugar de ICMP, e -P (--port) define a porta de destino
  5. Demonstrations of tcpretrans, the Linux eBPF/bcc version IO Visor
    Mostra uma linha por retransmissão, com endereço e porta remotos; -c soma as retransmissões por fluxo

Veja também

Mesma camada: Causas-raiz da retransmissão TCP

Mesmo sintoma (Travamento) em outras camadas

Ver o card interativo, com figuras e simulações