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)
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
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)
An Internet-Wide Analysis of Traffic PolicingGoogle 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)