networking network_error ai_generated partial

TCP: SACK has been disabled due to excessive retransmissions on 10.0.0.1:443

ID: networking/tcp-sack-perf-downshift

Also available as: JSON · Markdown · 中文
78%Fix Rate
85%Confidence
1Evidence
2024-03-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Linux kernel 5.15 active — — —
Linux kernel 6.1 active — — —
Linux kernel 6.8 active — — —

Root Cause

The TCP Selective Acknowledgment (SACK) feature is automatically disabled by the kernel when the TCP connection experiences a high rate of retransmissions, often due to packet corruption or a misbehaving intermediate device that drops or corrupts SACK options.

generic

中文

当TCP连接经历高重传率时,内核会自动禁用TCP选择性确认(SACK)功能,这通常是由于数据包损坏或中间设备丢弃/损坏SACK选项所致。

Official Documentation

https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html

Workarounds

  1. 85% success ethtool -S eth0 | grep -i crc
    ethtool -S eth0 | grep -i crc
  2. 75% success ip route change 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1 metric 100 tcp_sack 1
    ip route change 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1 metric 100 tcp_sack 1

中文步骤

  1. ethtool -S eth0 | grep -i crc
  2. ip route change 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1 metric 100 tcp_sack 1

Dead Ends

Common approaches that don't work:

  1. Setting net.ipv4.tcp_sack=0 to prevent the error from appearing. 90% fail

    This disables SACK entirely, which reduces throughput for all connections, and does not address the root cause (e.g., packet corruption or middlebox interference).

  2. Increasing tcp_rmem and tcp_wmem to accommodate retransmissions. 70% fail

    Larger buffers may hide the symptom temporarily but do not fix the underlying issue causing retransmissions (e.g., faulty NIC or cable).