highProductionUSE#tso#gso#offload#corruption#ring-buffer

Offload corruption -- TSO/GSO/ring buffer corrupting frames, causing retransmissions

High TCP retransmissions but mtr shows no packet loss on the path

Likely source:performanceconnectivity

Focused incident mode — strips away everything but this runbook.

Symptoms

  • High TCP retransmissions but mtr shows no packet loss on the path
  • iperf3 reports corrupted or out-of-order segments at high throughput
  • Kernel log shows 'eth0: tx ring buffer corrupted' or similar NIC driver messages

Offload corruption is a hardware-level issue that mimics network packet loss. The key diagnostic is seeing retransmissions with zero loss on mtr -- this points to a NIC or driver problem, not the network path.

Evidence to grab

Collect these artifacts before you change anything — they prove (or rule out) each cause.

  • NIC offload settings

    ethtool -k <INTERFACE> | grep -E 'tcp-segmentation|generic-segmentation|generic-receive'
  • Ring buffer and error counters

    ethtool -S <INTERFACE> | grep -iE 'error|drop|crc|corrupt|miss'

Diagnostic flow

Run the steps in order, marking each claim confirmed or refuted. The evidence you gather feeds the ranked causes below.

Guided decision tree is ready.

Steps with commands, expected output, and pass/fail branches.

Ranked root causes

Evidence checklist

  • Retransmissions only at high throughput (>1Gbps)
  • Disabling TSO resolves the issue
  • Kernel log shows NIC driver errors

Confirm before fixing

ethtool -k <INTERFACE> | grep tcp-segmentation-offload
READ

Check if TSO is currently enabled

Fix

ethtool -K <INTERFACE> tso off && ethtool -K <INTERFACE> gso off
CHANGE

Disable TSO and GSO to test if offload is the root cause

Resolution runbook

Apply from top to bottom after the cause is confirmed. Review every command before running it — risk tags are shown on each.

1
ethtool -k <INTERFACE> | grep -E 'tcp-segmentation|generic-segmentation'
READ

Check offload settings

2
ethtool -S <INTERFACE> | grep -iE 'error|drop|crc|corrupt'
READ

Check NIC error counters

3
ethtool -K <INTERFACE> tso off gso off
CHANGE

Disable offload to test

4
iperf3 -c <SERVER> -t 30 -P 4 2>&1 | tail -10
READ

Verify with a throughput test

Prevention

  • Update NIC drivers to the latest stable version.
  • Monitor ethtool -S error counters in production.
  • Test throughput with iperf3 after NIC or driver changes.
  • Keep ring buffer sizes at the maximum for high-traffic servers.

Commands marked READ CHANGE DESTRUCTIVE — never run DESTRUCTIVE commands against production data you cannot restore. Copy → verify → execute.