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).