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

Game Lag White Paper › Root causes of TCP retransmission

Duplex mismatch Duplex mismatch

Cause ID rt-duplex · Primary owner Infra team (Network infrastructure) · Also Infra team (Server infrastructure)

Open the interactive card with figures and simulations →

If one end autonegotiates while the other has speed and duplex hard-set, one side runs half duplex and loses packets to collisions whenever load picks up.

Why Speed and duplex hard-set on only one of the two devices → Effect One side runs full duplex and the other half duplex, causing collisions and late collisions → On screen Fine normally, but as traffic grows, everyone going through that device freezes then fast-forwards

Symptoms
Freeze, Fast-forward
Factors
Packet loss
Who’s affected
Whole server, Specific zone/channel
When
When crowds gather, Evening peak hours
Owner
Primary owner Infra team (Network infrastructure) · Also Infra team (Server infrastructure)
Infra team action items
Set both ends to autonegotiate, or hard-set both ends to the same values. Network: check speed and duplex in the switch port status, and in the port counters check whether late collisions grow on the half-duplex side and CRC errors and runts (frames that are too short) grow on the full-duplex side. Servers/OS: check speed and duplex with ethtool.
Ballpark numbers
Autonegotiation is mandatory on 1 Gbps copper, and half duplex doesn’t exist at all at 10 Gbps and above. So these days it mostly happens on old gear at 100 Mbps or below, on management ports, and on some carrier circuit hand-offs.
On the graph
Rises with load · Port late collisions and CRC errors, retransmission rate
Where to look
Actual speed and duplex on both ends of the link: on servers, ethtool run with just the interface name; on switches, port status or dot3StatsDuplexStatus via SNMP. Late collisions (tx_window_errors on servers, dot3StatsLateCollisions on switches) and CRC errors alongside
Confirmed if
One side reports half duplex and the other full duplex. Every time traffic grows, late collisions rise on the half-duplex side and CRC errors rise on the full-duplex side
Ruled out if
Speed and duplex match on both ends and only CRC errors rise: “Physical errors (bad cable, optics, connectors).” Links at 10 Gbps and above have no half duplex, so rule this cause out for them
Check with
Infra tools (no game code needed)

Sources

  1. Linux Base Driver for Intel(R) Ethernet Network Connection Linux kernel
    The 1000BASE-T standard requires autonegotiation
  2. IEEE 802.3ae 10 Gigabit Ethernet: HSSG Objectives IEEE
    10 Gigabit Ethernet supports full duplex only
  3. IEEE P802.3ba Objectives IEEE
    40 and 100 Gigabit Ethernet also support full duplex only
  4. Interface statistics Linux kernel
    tx_window_errors counts transmissions that failed from late collisions; rx_crc_errors counts packets received with CRC errors
  5. ethtool(8) — Linux manual page ethtool
    ethtool -s sets speed, duplex, and autonegotiation (speed, duplex, autoneg); given only the interface name, ethtool shows the current settings
  6. RFC 3635: Definitions of Managed Objects for the Ethernet-like Interface Types IETF
    dot3StatsDuplexStatus (current duplex as halfDuplex or fullDuplex), dot3StatsLateCollisions (late collision count)

See also

Same layer: Root causes of TCP retransmission

Same symptom (Freeze), other layers

View the interactive card with figures and simulations