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
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
Interface statisticsLinux kernel tx_window_errors counts transmissions that failed from late collisions; rx_crc_errors counts packets received with CRC errors
ethtool(8) — Linux manual pageethtool ethtool -s sets speed, duplex, and autonegotiation (speed, duplex, autoneg); given only the interface name, ethtool shows the current settings