On 06/01/2010 16:46, address@hidden wrote:
Hafiz Bashir wrote:
Any help would be greatly appricated.
Since we do not know anything about the internals of your application
and haven't seen the problem yet, you should try to debug, starting
with enabling debug output for TCP by adding these lines in your
lwipopts.h:
#define LWIP_DEBUG
#define TCP_DEBUG LWIP_DBG_OFF
#define TCP_INPUT_DEBUG LWIP_DBG_OFF
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
#define TCP_RTO_DEBUG LWIP_DBG_OFF
#define TCP_CWND_DEBUG LWIP_DBG_OFF
#define TCP_WND_DEBUG LWIP_DBG_OFF
#define TCP_FR_DEBUG LWIP_DBG_OFF
#define TCP_QLEN_DEBUG LWIP_DBG_OFF
#define TCP_RST_DEBUG LWIP_DBG_OFF
You should then see debug output which you might be able to relate to
the wireshark log and see at which point duplicate ACKs are sent.
Simon
I have attached the debug log from the application and the wireshark
capture file. Here is a snippet of the debug showing duplicate ACK's
being sent ?
State: ESTABLISHED
tcp_recved: recveived 1460 bytes, wnd 2920 (14600).
TCP header:
+-------------------------------+
| 80 | 4099 | (src port, dest port)
+-------------------------------+
| 3649346719 | (seq no)
+-------------------------------+
| 0000006617 | (ack no)
+-------------------------------+
| 5 | |011000| 64240 | (hdrlen, flags (
PSH
ACK
), win)
+-------------------------------+
| 0x79e4 | 0 | (chksum, urgp)
+-------------------------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags
PSH
ACK
-+-+-+-+-+-+-+-+-+-+-+-+-+-+
State: ESTABLISHED
tcp_receive: window update 64240
tcp_receive: pcb->rttest 0 rtseq 6521 ackno 6617
tcp_output: nothing to send (0x0)
tcp_output: snd_wnd 64240, cwnd 4380, wnd 4380, seg == NULL, ack 6617
State: ESTABLISHED
tcp_recved: recveived 1460 bytes, wnd 2920 (14600).
tcp_output: sending ACK for 3649348179
tcp_recved: recveived 1460 bytes, wnd 4380 (13140).
tcp_recved: recveived 1460 bytes, wnd 5840 (11680).
tcp_recved: recveived 1460 bytes, wnd 7300 (10220).
tcp_output: sending ACK for 3649348179
tcp_recved: recveived 1460 bytes, wnd 8760 (8760).
tcp_recved: recveived 1460 bytes, wnd 10220 (7300).
tcp_recved: recveived 1460 bytes, wnd 11680 (5840).
tcp_output: sending ACK for 3649348179
tcp_recved: recveived 1460 bytes, wnd 13140 (4380).
TCP header:
+-------------------------------+
| 80 | 4099 | (src port, dest port)
+-------------------------------+
| 3649348179 | (seq no)
+-------------------------------+
| 0000006617 | (ack no)
+-------------------------------+
| 5 | |010000| 64240 | (hdrlen, flags (
ACK
), win)
+-------------------------------+
| 0x7be6 | 0 | (chksum, urgp)
+-------------------------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags
ACK
-+-+-+-+-+-+-+-+-+-+-+-+-+-+