|Subject:||Re: [lwip-users] problem after a packet loss event|
|Date:||Mon, 11 May 2015 13:09:49 +0000|
We are both struggling with similar issues. We send data in the other direction. We are also using 1.4.x in raw mode without OS. We concluded long ago that the best way to ‘recover’ from a fault like you describe was to disconnect and reconnect the tcp connection. Very similar to a hard reset but of course not the same.
We are still faced with a very difficult defect in the LWIP stack. I am not as convinced as you that it is always packet loss that causes us to have to disconnect. I think the stack periodically ‘misses’ packets. The Wireshark trace shows the packet yet we don’t receive the tcp_sent callback and the on_error callback doesn’t fire either.
From: lwip-users-bounces+address@hidden [mailto:lwip-users-bounces+address@hidden
On Behalf Of address@hidden
my system is composed by a PC sending a large volume of data via tcpip to a board with a Xilinx Zynq. Zynq has LwIP 1.4.0 running in raw mode without OS. I am working with TCP_WND = 8192 and TCP_MSS = 1460, without jumbo frame because Zynq doesn't support them. PC sends 307200 byte in almost 5.5 mSec and all is working good until there is a packet loss event. The ACKs sended by Zynq are very quick, almost tens of microsecond from last packet received from PC.
I have attached a capture file from Wireshark. Ip 10.1.0.10 is PC, embedded board has ip address 10.1.0.20. At packet 651 (time 0.147032) Zynq sends two duplicated ACK (I think that probably there is a packet loss...) and PC performs a fast retransmission, then Zynq send another dup ACK and after the throughput go down from 55 MByte/sec to 15 KB/sec.
I see that the ACKs sended by Zynq are delayed about 120-130 mSec, the tcp_window of Zynq is reduced at 2352 byte, and PC wait for Zynq's ACK to send new packets, even if a window of 2352 can receive a 1.5KB packet.
I don't understand why PC wait for an ACK to send new data and why Zynq acknowledges packtes with a large delay.
This strange (for me) situation is permanent, when transmission ends the tcp window of Zynq remain 2352, and if I perform a new transmission from PC the behaviour is the same, with a throughput very low. To restore system I must reset my board.
I don't know if this is a normal situation, I need to have high throughput even with packet loss event.
Your help will be greatly appreciated
|[Prev in Thread]||Current Thread||[Next in Thread]|