embedded
network_error
ai_generated
partial
lwIP:TCP连接丢失,过多重复ACK导致套接字3重传超时
lwIP: TCP connection lost, too many duplicate ACKs triggered retransmit timeout on socket 3
ID: embedded/lwip-tcp-dup-ack-retransmit
75%修复率
86%置信度
1证据数
2024-09-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| lwIP v2.1.3 | active | — | — | — |
| FreeRTOS+TCP v3.1.0 | active | — | — | — |
| STM32F769 | active | — | — | — |
根因分析
由于网络拥塞或有故障的PHY导致持续丢包,使lwIP TCP进入重传超时并关闭连接。
English
Persistent packet loss due to network congestion or faulty PHY, causing lwIP TCP to enter retransmission timeout and close the connection.
官方文档
https://www.nongnu.org/lwip/2_1_x/index.html解决方案
-
Enable lwIP TCP keepalive to detect stale connections early and implement application-level retry logic.
-
Improve PHY stability by adding external pull-up resistors on TX and RX lines and verifying MDC/MDIO timing per datasheet.
无效尝试
常见但无效的做法:
-
Increase TCP retransmission timeout in lwIP config (TCP_RTO_MIN)
65% 失败
Delays detection of genuine connection loss and may cause application-level timeouts; does not fix underlying packet loss.
-
Disable TCP Nagle algorithm to send smaller packets
70% 失败
Reduces throughput and may increase ACK overhead; does not address duplicate ACK cause.
-
Replace PHY chip with a different model
50% 失败
Expensive and time-consuming; the issue may be due to PCB layout or driver configuration, not the PHY itself.