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

Guia do Lag em Jogos › L5 Equipamentos de rede do data center

MTU incompatível (só os pacotes grandes somem) MTU black hole

ID da causa dc-mtu · 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 →

Se o MTU (o tamanho máximo que dá para enviar de uma vez) diminui em algum trecho do caminho e os avisos de pacote grande demais são bloqueados, só os pacotes grandes continuam sumindo.

Por quê O MTU diminui em um trecho de túnel ou VPN → Efeito Um firewall bloqueia os avisos de pacote grande demais (ICMP), e quem envia nunca fica sabendo → Na tela Trava e depois vem a desconexão, só ao abrir telas grandes como o inventário ou a lista de personagens

Sintomas
Travamento, Desconexão, Não conecta / loading infinito
Fatores
Perda de pacotes
Quem é afetado
Região ou operadora específica, Só eu
Quando
Ao fazer ações específicas, Logo após login ou manutenção
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)
Para reduzir direto no servidor, configurar o tamanho máximo de segmento do socket com TCP_MAXSEG (só dividir as mensagens em pedaços menores no código do jogo não evita o problema), manter os pacotes UDP em até 1.200 bytes.
O que fazer (Equipe de infraestrutura)
Rede: reduzir o tamanho dos pacotes TCP nos trechos de túnel (MSS clamping), liberar os avisos de pacote grande demais (ICMP) nos firewalls e nas ACLs de rede da nuvem. Servidores/SO: liberar os avisos de pacote grande demais (ICMP) também nos firewalls dos servidores e nos grupos de segurança da nuvem, ligar a sondagem de MTU no kernel do servidor (tcp_mtu_probing=1), uma última rede de segurança que só entra em ação depois que a conexão fica alguns segundos parada.
Números de referência
Normalmente 1.500 bytes, caindo para cerca de 1.400 ao passar por um túnel.
No gráfico
Alto só em alguns · Desconexões por região/operadora, falhas em respostas grandes
Onde olhar
No PC do jogador afetado, enviar ping ao servidor com a flag de não fragmentar (DF) ligada, variando o tamanho. No Windows, ping /f /l 1472 SERVER_IP; no Linux, ping -M do -s 1472 SERVER_IP (1.472 é o MTU de 1.500 menos 20 bytes do cabeçalho IP e 8 bytes do cabeçalho ICMP). Reduzir o tamanho aos poucos para achar o maior que passa, e verificar se os grupos de segurança e firewalls do lado do servidor permitem o aviso ICMP de pacote grande demais (Fragmentation Needed)
Confirma se
Pings pequenos passam, mas o ping DF de 1.472 bytes falha (sem resposta ou com erro dizendo que é preciso fragmentar), e o maior tamanho que passa é pequeno, por volta de 1.400. Jogadores da mesma região só travam ao abrir telas grandes
Descarta se
O ping DF de 1.472 bytes também passa: não é problema de MTU do caminho. Nem pings pequenos passam: o próprio ICMP está bloqueado, e este método não permite concluir
Como verificar
Verificação no ambiente do jogador

Fontes

  1. RFC 2923: TCP Problems with Path MTU Discovery IETF
    Se um firewall bloqueia o ICMP (Fragmentation Needed), a descoberta do MTU do caminho falha e só os pacotes grandes continuam sumindo (black hole); pings e mensagens pequenas funcionam, o que dificulta o diagnóstico
  2. Maximum transmission unit and maximum segment size Cloudflare
    MTU do caminho na internet de 1.500, 1.476 ao passar por um túnel GRE; recomenda-se limitar o MSS do TCP a no máximo 1.436
  3. IP Sysctl Linux kernel
    Com tcp_mtu_probing=1, a descoberta do MTU do caminho feita pelo próprio TCP (sondagem de MTU) fica desligada normalmente e só é ligada quando um black hole de ICMP é detectado
  4. ping(8) — Linux manual page iputils
    -M do liga a flag DF e recusa pacotes maiores que o MTU do caminho; -s define o tamanho dos dados (padrão de 56 bytes, mais 8 bytes do cabeçalho ICMP)
  5. ping Microsoft
    /f liga a flag DF e serve para achar problemas de MTU do caminho; /l define o tamanho dos dados

Veja também

Mesma camada: L5 Equipamentos de rede do data center

Mesmo sintoma (Travamento) em outras camadas

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