Um pacote UDP maior que o MTU (o tamanho máximo que dá para enviar de uma vez) é fragmentado na camada IP, e perder um só fragmento faz o pacote inteiro ser descartado.
Por quê Em lugares lotados, o snapshot passa de 1.500 bytes → Efeito Vai dividido em vários fragmentos, e perder qualquer um descarta o pacote inteiro → Na tela Pacotes grandes têm taxa de perda várias vezes maior. Teleporte só nos lugares lotados
Local ou canal específico, Região ou operadora específica
Quando
Quando junta muita gente
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Dividir os pacotes no próprio jogo em até 1.200 bytes, enviar só as mudanças.
Números de referência
Numa conexão com 2% de perda, um pacote dividido em 4 fragmentos se perde cerca de 8% das vezes. Alguns firewalls e operadoras descartam todos os pacotes fragmentados, e esses jogadores não recebem nenhum pacote grande.
No gráfico
Sobe com a carga · Fragmentações IP (IpFragCreates), tamanho do snapshot
Onde olhar
Ver no servidor o aumento de IpFragCreates (fragmentos criados no envio) no nstat -az e, no lado que recebe, IpReasmFails (falhas de remontagem). Conferir a distribuição de tamanho dos pacotes UDP nos logs do servidor do jogo ou numa captura de pacotes
Confirma se
IpFragCreates sobe nos lugares lotados, há pacotes UDP acima de 1.500 bytes, e os reports de teleporte aumentam nesse momento
Descarta se
IpFragCreates não sobe: não há fragmentação no envio do servidor
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Fontes
RFC 8085: UDP Usage GuidelinesIETF Perder um fragmento impede a remontagem e o pacote inteiro se perde; apps UDP devem evitar a fragmentação IP
net/ipv4/proc.c (Linux v6.12)Linux kernel Nomes dos contadores mostrados pelo nstat: FragCreates (fragmentos criados) e ReasmFails (falhas de remontagem) do grupo Ip