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.