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

Guia do Lag em Jogos › Causas-raiz da retransmissão TCP

Incompatibilidade de duplex Duplex mismatch

ID da causa rt-duplex · Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)

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

Quando um lado usa autonegociação e o outro tem velocidade e duplex fixos, um dos lados passa a operar em half-duplex e perde pacotes por colisão sempre que a carga aumenta.

Por quê Só um dos equipamentos tem velocidade e duplex fixados na configuração → Efeito Um lado opera em full-duplex e o outro em half-duplex, com colisões e colisões tardias → Na tela Tudo normal até o tráfego aumentar; aí todos que passam por esse equipamento têm travamentos seguidos de avanço rápido

Sintomas
Travamento, Avanço rápido
Fatores
Perda de pacotes
Quem é afetado
Servidor inteiro, Local ou canal específico
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)
O que fazer (Equipe de infraestrutura)
Usar autonegociação nos dois lados ou fixar o mesmo valor nos dois lados. Rede: verificar velocidade e duplex no estado da porta do switch e, nos contadores da porta, ver se aumentam as colisões tardias no lado half-duplex e os erros de CRC e os frames curtos demais (runts) no lado full-duplex. Servidores/SO: verificar velocidade e duplex com ethtool.
Números de referência
Em cabo de cobre de 1 Gbps a autonegociação é obrigatória, e a partir de 10 Gbps nem existe half-duplex. Por isso, hoje o problema aparece principalmente em equipamentos antigos de até 100 Mbps, em portas de gerência e em alguns trechos de interconexão de links.
No gráfico
Sobe com a carga · Colisões tardias e erros de CRC por porta, taxa de retransmissão
Onde olhar
Ver a velocidade e o duplex reais nas duas pontas do link. No servidor, ethtool só com o nome da interface; no switch, o estado da porta ou dot3StatsDuplexStatus via SNMP. Ver também as colisões tardias (tx_window_errors no servidor, dot3StatsLateCollisions no switch) e os erros de CRC
Confirma se
Um lado aparece em half-duplex e o outro em full-duplex. Sempre que o tráfego aumenta, sobem juntos as colisões tardias no lado half-duplex e os erros de CRC no lado full-duplex
Descarta se
Velocidade e duplex iguais nos dois lados e só o CRC aumentando: “Erros físicos”. Links de 10 Gbps ou mais não têm half-duplex, então esta causa fica descartada
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. Linux Base Driver for Intel(R) Ethernet Network Connection Linux kernel
    A norma 1000BASE-T exige autonegociação
  2. IEEE 802.3ae 10 Gigabit Ethernet: HSSG Objectives IEEE
    Ethernet de 10 gigabits só suporta full-duplex
  3. IEEE P802.3ba Objectives IEEE
    Ethernet de 40 e 100 gigabits também só suporta full-duplex
  4. Interface statistics Linux kernel
    tx_window_errors é o número de transmissões que falharam por colisão tardia (late collision); rx_crc_errors é o número de pacotes recebidos com erro de CRC
  5. ethtool(8) — Linux manual page ethtool
    speed, duplex e autoneg do ethtool -s configuram velocidade, duplex e autonegociação; só com o nome da interface, o ethtool mostra a configuração atual
  6. RFC 3635: Definitions of Managed Objects for the Ethernet-like Interface Types IETF
    dot3StatsDuplexStatus (mostra o duplex atual como halfDuplex ou fullDuplex), dot3StatsLateCollisions (número de colisões tardias)

Veja também

Mesma camada: Causas-raiz da retransmissão TCP

Mesmo sintoma (Travamento) em outras camadas

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