Offload corruption -- TSO/GSO/ring buffer corrupting frames, causing retransmissions
High TCP retransmissions but mtr shows no packet loss on the path
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-offloadCheck if TSO is currently enabled
Fix
ethtool -K <INTERFACE> tso off && ethtool -K <INTERFACE> gso offDisable 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.
ethtool -k <INTERFACE> | grep -E 'tcp-segmentation|generic-segmentation'Check offload settings
ethtool -S <INTERFACE> | grep -iE 'error|drop|crc|corrupt'Check NIC error counters
ethtool -K <INTERFACE> tso off gso offDisable offload to test
iperf3 -c <SERVER> -t 30 -P 4 2>&1 | tail -10Verify 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.
Related runbooks
Same stack, same failure family — worth a skim.
netstat shows high RetransSegs counter increasing rapidly
Small HTTP requests succeed but large responses or file transfers hang or fail
Commands marked READ CHANGE DESTRUCTIVE — never run DESTRUCTIVE commands against production data you cannot restore. Copy → verify → execute.