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

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

Descarte do excedente pelo policer Traffic policing

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

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

Planos de operadora, limites de instâncias na nuvem e equipamentos de proteção contra DDoS podem descartar na hora, sem colocar na fila, os pacotes que passam da taxa definida.

Por quê O volume enviado em um instante passa da taxa ou do burst permitido → Efeito O excedente é descartado na hora, sem fila (policing) → Na tela Vários pacotes somem a cada burst grande: travamento e depois avanço rápido, enquanto a taxa média parece abaixo do limite

Sintomas
Travamento, Avanço rápido, Teleporte
Fatores
Perda de pacotes
Quem é afetado
Servidor inteiro, Região ou operadora específica, Só eu
Quando
Quando junta muita gente, Horário de pico à noite
Responsável
Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura), Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Distribuir ao longo do tick o que sai de uma vez a cada tick, para manter o volume instantâneo abaixo do burst permitido; se bater no limite de pacotes por segundo, juntar as mensagens de um tick em um só pacote.
O que fazer (Equipe de infraestrutura)
Rede: verificar os contadores de excesso do policer nos equipamentos, usar shaper no lugar de policer, aumentar o burst permitido. Servidores/SO: verificar as métricas de excesso de limite da nuvem (na AWS, bw_out_allowance_exceeded e pps_allowance_exceeded no ethtool -S), subir o tipo da instância, fazer pacing no servidor (fila fq do Linux).
Números de referência
O shaper (que enfileira e atrasa) aumenta a latência; o policer (que descarta na hora) aumenta a perda. Uma conexão TCP de jogo pode ficar centenas de ms parada a cada perda, então, quando o limite é ultrapassado só por instantes, em geral o policer causa mais estrago.
No gráfico
Achata ao bater no limite · Volume enviado em intervalos curtos, contadores de excesso do policer e de allowance
Onde olhar
Ver os contadores de excesso (exceed) e de descarte do equipamento onde está o policer; na nuvem, ver bw_out_allowance_exceeded e pps_allowance_exceeded no ethtool -S. Nas conexões com perda, ver o RTT logo antes da perda pelo rtt do ss -ti ou por captura de pacotes
Confirma se
Os contadores de excesso aumentam, e o volume enviado, visto em intervalos curtos, fica achatado como se fosse cortado em um valor. O RTT não sobe antes da perda, e vários pacotes somem de uma vez só nos momentos de burst grande
Descarta se
O RTT sobe antes da perda: estouro de fila (“Estouro de fila no gargalo”, “Estouro de buffers rasos por bursts de envio”). Contadores de excesso parados: outra causa
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. RFC 2475: An Architecture for Differentiated Services IETF
    Definição: o shaping atrasa os pacotes para adequá-los ao perfil de tráfego, e o policing descarta os pacotes que excedem o perfil
  2. An Internet-Wide Analysis of Traffic Policing Google
    Transferências sob policing têm em média 6 vezes mais perda, e pacing ou shaping podem atingir o mesmo objetivo. Diferença: o policing descarta o excedente sem aumento do RTT, e no estouro de fila o RTT sobe antes da perda (SIGCOMM 2016)
  3. Monitor network performance for ENA settings on your EC2 instance AWS
    bw_out_allowance_exceeded e pps_allowance_exceeded no ethtool -S: número de pacotes enfileirados ou descartados por ultrapassar o limite da instância
  4. tc-fq(8) — Linux manual page iproute2
    Pacing por conexão na fila fq do Linux
  5. ss(8) — Linux manual page iproute2
    rtt no ss -i (tempo médio de ida e volta)

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