embedded network_error ai_generated partial

lwIP: TCP connection lost, too many duplicate ACKs triggered retransmit timeout on socket 3

ID: embedded/lwip-tcp-dup-ack-retransmit

Also available as: JSON · Markdown · 中文
75%Fix Rate
86%Confidence
1Evidence
2024-09-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
lwIP v2.1.3 active — — —
FreeRTOS+TCP v3.1.0 active — — —
STM32F769 active — — —

Root Cause

Persistent packet loss due to network congestion or faulty PHY, causing lwIP TCP to enter retransmission timeout and close the connection.

generic

中文

由于网络拥塞或有故障的PHY导致持续丢包,使lwIP TCP进入重传超时并关闭连接。

Official Documentation

https://www.nongnu.org/lwip/2_1_x/index.html

Workarounds

  1. 80% success Enable lwIP TCP keepalive to detect stale connections early and implement application-level retry logic.
    Enable lwIP TCP keepalive to detect stale connections early and implement application-level retry logic.
  2. 70% success Improve PHY stability by adding external pull-up resistors on TX and RX lines and verifying MDC/MDIO timing per datasheet.
    Improve PHY stability by adding external pull-up resistors on TX and RX lines and verifying MDC/MDIO timing per datasheet.

中文步骤

  1. Enable lwIP TCP keepalive to detect stale connections early and implement application-level retry logic.
  2. Improve PHY stability by adding external pull-up resistors on TX and RX lines and verifying MDC/MDIO timing per datasheet.

Dead Ends

Common approaches that don't work:

  1. Increase TCP retransmission timeout in lwIP config (TCP_RTO_MIN) 65% fail

    Delays detection of genuine connection loss and may cause application-level timeouts; does not fix underlying packet loss.

  2. Disable TCP Nagle algorithm to send smaller packets 70% fail

    Reduces throughput and may increase ACK overhead; does not address duplicate ACK cause.

  3. Replace PHY chip with a different model 50% fail

    Expensive and time-consuming; the issue may be due to PCB layout or driver configuration, not the PHY itself.