# TCP：由于在10.0.0.1:443上过度重传，SACK已被禁用

- **ID:** `networking/tcp-sack-perf-downshift`
- **领域:** networking
- **类别:** network_error
- **验证级别:** ai_generated
- **修复率:** 78%

## 根因

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

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Linux kernel 5.15 | active | — | — |
| Linux kernel 6.1 | active | — | — |
| Linux kernel 6.8 | active | — | — |

## 解决方案

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
   ```

## 无效尝试

- **Setting net.ipv4.tcp_sack=0 to prevent the error from appearing.** — This disables SACK entirely, which reduces throughput for all connections, and does not address the root cause (e.g., packet corruption or middlebox interference). (90% 失败率)
- **Increasing tcp_rmem and tcp_wmem to accommodate retransmissions.** — Larger buffers may hide the symptom temporarily but do not fix the underlying issue causing retransmissions (e.g., faulty NIC or cable). (70% 失败率)
