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

Guia do Lag em Jogos › L3 Rede doméstica

Expiração do mapeamento NAT NAT mapping timeout

ID da causa hn-nat · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)

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

O roteador apaga da tabela NAT as conexões ociosas, sem tráfego por um tempo. É uma causa comum de a conexão cair no instante em que o jogador volta a se mexer depois de ficar parado.

Por quê O roteador registra a conexão “dispositivo de dentro ↔ servidor de fora” na tabela NAT (tabela de tradução de endereços) → Efeito Sem pacotes por um tempo, a entrada é apagada da tabela (no UDP, em geral 30–120 s) → Na tela Os pacotes do servidor não conseguem entrar na casa, e a conexão cai

Sintomas
Desconexão
Fatores
Perda de pacotes
Quem é afetado
Só eu, Mesma casa
Quando
Depois de ficar parado
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Cliente: enviar heartbeats em intervalo de no máximo metade do menor timeout de inatividade (o mapeamento UDP só é renovado com certeza por pacotes que saem de dentro da casa, por isso quem envia é o cliente), reconectar automaticamente se cair. Servidor: responder aos heartbeats, encerrar a conexão por conta própria se ficar um tempo sem recebê-los e, mesmo que o mapeamento seja apagado e o endereço e a porta externos mudem, confirmar pelo token de sessão (o código de confirmação recebido na conexão) que é o mesmo jogador e retomar a sessão.
No gráfico
Queda de conexões em massa · Desconexões (timeout de heartbeat), tempo ocioso antes da queda
Onde olhar
Reunir os motivos de desconexão no servidor e o tempo decorrido desde o último pacote trocado naquela conexão antes da queda (tempo ocioso) e ver a distribuição. Para testar, aumentar o intervalo entre pacotes UDP para 30 s, 60 s e 120 s e medir em qual intervalo as respostas param
Confirma se
Só caem conexões que estavam paradas, e o tempo ocioso se concentra logo acima de um valor específico (algo entre 30 e 120 s). Com heartbeats em intervalo menor que esse, o problema some
Descarta se
Cai mesmo em movimento: aponta para a conexão ou a rota. Concentrado em valores curtos só em certa operadora móvel: “IP compartilhado pela operadora (CGNAT)”
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo

Fontes

  1. RFC 4787: Network Address Translation (NAT) Behavioral Requirements for Unicast UDP IETF
    O timer de mapeamento UDP não pode expirar antes de 2 minutos, e o padrão recomendado é de 5 minutos ou mais; a renovação por pacotes de saída é obrigatória, e a renovação por pacotes de entrada é opcional
  2. An Experimental Study of Home Gateway Characteristics (IMC 2010) ACM
    Medição em 34 roteadores domésticos: o mapeamento UDP durou 30–691 s, com mediana de 90 s, e mais da metade ficou abaixo de 2 minutos; no TCP, mediana de cerca de 60 minutos
  3. RFC 9308: Applicability of the QUIC Transport Protocol IETF
    Na internet com NAT no caminho, um keep-alive a cada 30 s, mais ou menos, é adequado; com mais frequência, há desperdício de tráfego e de energia

Veja também

Mesma camada: L3 Rede doméstica

Mesmo sintoma (Desconexão) em outras camadas

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