Hi,

Having a problem with retransmission from my client due to lwIP stack seams to 
miss the first
transmission.

Below is a copy from wireshark when the problem happens. The circumstances when 
it happens
are always the same. ACK from client in a segment without payload directly 
followed by a
segment with payload. I do not get a tcp_sent callback for the data sent in seg 
36271.
The retransmission clears the situation and everything continues smoothly until 
next time it
happens. About every three or four minutes or so.

Any ideas what can cause this?

Best regards,
Mats

26394                 18:58:22.683205000                   192.168.0.2      
192.168.0.1      TCP                     71                        50032 > 
26486 [PSH, ACK] Seq=314015327 Ack=36230 Win=798 Len=17
26395                 18:58:22.691749000                   192.168.0.1      
192.168.0.2      TCP                     60                        26486 > 
50032 [ACK] Seq=36230 Ack=314015344 Win=2048 Len=0
26396                 18:58:25.649621000                   192.168.0.1      
192.168.0.2      TCP                     95                        26486 > 
50032 [PSH, ACK] Seq=36230 Ack=314015344 Win=2048 Len=41
26397                 18:58:25.649743000                   192.168.0.2      
192.168.0.1      TCP                     71                        50032 > 
26486 [PSH, ACK] Seq=314015344 Ack=36271 Win=757 Len=17
26398                 18:58:28.660107000                   192.168.0.1      
192.168.0.2      TCP                     95                        26486 > 
50032 [PSH, ACK] Seq=36271 Ack=314015361 Win=2031 Len=41
26399                 18:58:28.660231000                   192.168.0.2      
192.168.0.1      TCP                     60                        50032 > 
26486 [ACK] Seq=314015361 Ack=36312 Win=1460 Len=0
26400                 18:58:28.660381000                   192.168.0.2      
192.168.0.1      TCP                     71                        50032 > 
26486 [PSH, ACK] Seq=314015361 Ack=36312 Win=1460 Len=17
26401                 18:58:35.210206000                   192.168.0.2      
192.168.0.1      TCP                     71                        [TCP 
Retransmission] 50032 > 26486 [PSH, ACK] Seq=314015361 Ack=36312 Win=1460 Len=17
26402                 18:58:35.218385000                   192.168.0.1      
192.168.0.2      TCP                     60                        26486 > 
50032 [ACK] Seq=36312 Ack=314015378 Win=2014 Len=0
26403                 18:58:37.666125000                   192.168.0.1      
192.168.0.2      TCP                     95                        26486 > 
50032 [PSH, ACK] Seq=36312 Ack=314015378 Win=2014 Len=41
26404                 18:58:37.666321000                   192.168.0.2      
192.168.0.1      TCP                     71                        50032 > 
26486 [PSH, ACK] Seq=314015378 Ack=36353 Win=1419 Len=17
26405                 18:58:40.678446000                   192.168.0.1      
192.168.0.2      TCP                     95                        26486 > 
50032 [PSH, ACK] Seq=36353 Ack=314015395 Win=1997 Len=41
26406                 18:58:40.678710000                   192.168.0.2      
192.168.0.1      TCP                     71                        50032 > 
26486 [PSH, ACK] Seq=314015395 Ack=36394 Win=1378 Len=17


Trace from lwIP with TCP_DEBUG, TCP_INPUT_DEBUG and TCP_OUTPUT_DEBUG turned on.


TCP header:<LF><CR>
+-------------------------------+<LF><CR>
|    50032      |    26486      | (src port, dest port)<LF><CR>
+-------------------------------+<LF><CR>
|           0314015344          | (seq no)<LF><CR>
+-------------------------------+<LF><CR>
|           0000036271          | (ack no)<LF><CR>
+-------------------------------+<LF><CR>
|  5 |   |011000|       757     | (hdrlen, flags, win)<LF><CR>
+-------------------------------+<LF><CR>
|    0x6ba8     |         0     | (chksum, urgp)<LF><CR>
+-------------------------------+<LF><CR>
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags <CR>
-+-+-+-+-+-+-+-+-+-+-+-+-+-+<LF><CR>
tcp_receive: ACK for 36271, unacked->seqno 36230:36271<LF><CR>
tcp_receive: removing 36230:36271 from pcb->unacked<LF><CR>
tcp_write(pcb=20001d14, data=200058d8, len=41, apiflags=0)<LF><CR>
tcp_enqueue(pcb=20001d14, arg=200058d8, len=41, flags=0, apiflags=0)<LF><CR>
tcp_enqueue: queueing 36271:36312 (0x0)<LF><CR>
tcp_output_segment: 36271:36312<LF><CR>
TCP header:<LF><CR>
+-------------------------------+<LF><CR>
|    50032      |    26486      | (src port, dest port)<LF><CR>
+-------------------------------+<LF><CR>
|           0314015361          | (seq no)<LF><CR>
+-------------------------------+<LF><CR>
|           0000036312          | (ack no)<LF><CR>
+-------------------------------+<LF><CR>
|  5 |   |010000|      1460     | (hdrlen, flags (<CR>
), win)<LF><CR>
+-------------------------------+<LF><CR>
|    0xded4     |         0     | (chksum, urgp)<LF><CR>
+-------------------------------+<LF><CR>
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags <CR>
-+-+-+-+-+-+-+-+-+-+-+-+-+-+<LF><CR>
TCP header:<LF><CR>
+-------------------------------+<LF><CR>
|    50032      |    26486      | (src port, dest port)<LF><CR>
+-------------------------------+<LF><CR>
|           0314015361          | (seq no)<LF><CR>
+-------------------------------+<LF><CR>
|           0000036312          | (ack no)<LF><CR>
+-------------------------------+<LF><CR>
|  5 |   |011000|      1460     | (hdrlen, flags (<CR>
), win)<LF><CR>
+-------------------------------+<LF><CR>
|    0x68af     |         0     | (chksum, urgp)<LF><CR>
+-------------------------------+<LF><CR>
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags <CR>
-+-+-+-+-+-+-+-+-+-+-+-+-+-+<LF><CR>
<LF>
TCP header:<LF><CR>
+-------------------------------+<LF><CR>
|    50032      |    26486      | (src port, dest port)<LF><CR>
+-------------------------------+<LF><CR>
|           0314015361          | (seq no)<LF><CR>
+-------------------------------+<LF><CR>
|           0000036312          | (ack no)<LF><CR>
+-------------------------------+<LF><CR>
|  5 |   |011000|      1460     | (hdrlen, flags (<CR>
), win)<LF><CR>
+-------------------------------+<LF><CR>
|    0x68af     |         0     | (chksum, urgp)<LF><CR>
+-------------------------------+<LF><CR>
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags <CR>
-+-+-+-+-+-+-+-+-+-+-+-+-+-+<LF><CR>
tcp_receive: ACK for 36312, unacked->seqno 36271:36312<LF><CR>
tcp_receive: removing 36271:36312 from pcb->unacked<LF><CR>
tcp_receive: duplicate seqno 314015361<LF><CR>
tcp_output: sending ACK for 314015378<LF><CR>
tcp_write(pcb=20001d14, data=200058d8, len=41, apiflags=0)<LF><CR>
tcp_enqueue(pcb=20001d14, arg=200058d8, len=41, flags=0, apiflags=0)<LF><CR>
tcp_enqueue: queueing 36312:36353 (0x0)<LF><CR>
tcp_output_segment: 36312:36353<LF><CR>
TCP header:<LF><CR>
+-------------------------------+<LF><CR>
|    50032      |    26486      | (src port, dest port)<LF><CR>
+-------------------------------+<LF><CR>
|           0314015378          | (seq no)<LF><CR>
+-------------------------------+<LF><CR>
|           0000036353          | (ack no)<LF><CR>
+-------------------------------+<LF><CR>
|  5 |   |011000|      1419     | (hdrlen, flags (<CR>
), win)<LF><CR>
+-------------------------------+<LF><CR>
|    0x689e     |         0     | (chksum, urgp)<LF><CR>
+-------------------------------+<LF><CR>
+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags <CR>
-+-+-+-+-+-+-+-+-+-+-+-+-+-+<LF><CR>
tcp_receive: ACK for 36353, unacked->seqno 36312:36353<LF><CR>
tcp_receive: removing 36312:36353 from pcb->unacked<LF><CR>
<LF>



_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to