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

Guia do Lag em Jogos › L8 Sockets e protocolos

Fragmentação IP de pacotes UDP IP fragmentation of large UDP

ID da causa sk-fragment · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento)

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

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

Sintomas
Teleporte
Fatores
Perda de pacotes
Quem é afetado
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

  1. RFC 8085: UDP Usage Guidelines IETF
    Perder um fragmento impede a remontagem e o pacote inteiro se perde; apps UDP devem evitar a fragmentação IP
  2. RFC 8900: IP Fragmentation Considered Fragile IETF
    Casos de firewalls e de algumas redes que descartam fragmentos IP
  3. 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

Veja também

Mesma camada: L8 Sockets e protocolos

Mesmo sintoma (Teleporte) em outras camadas

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