We're using lwIP in raw mode on a MicroBlaze and are seeing instances of very 
slow ACK's. Other than disabling UDP, our configuration parameters were 
unchanged from the 'standard' installation. Grasping at straws we tried setting 
TCP_WND to 8192 and TCP_MSS to 1450 but it didn't help. Any idea what could be 
going on or how we could tune the stack to speed things up? A WireShark trace 
is shown below.

192.168.81.1 is our client, 192.168.86.1 is the MicroBlaze device running lwIP. 
Data is sent from the client to the server in frame 10 and the corresponding 
ACK arrives over a second later in frame 12.

No.     Time        Source                Destination           Protocol Info
      7 5.557890    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [SYN] Seq=0 Win=32768 Len=0 MSS=1460 WS=0 SACK_PERM=1 TSV=0 TSER=0
      8 5.560238    192.168.86.1          192.168.81.1          TCP      11002 
> 65463 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1450
      9 5.560241    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [ACK] Seq=1 Ack=1 Win=33580 Len=0
     10 5.560244    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [PSH, ACK] Seq=1 Ack=1 Win=33580 Len=1
     11 6.579581    192.168.81.1          192.168.86.1          TCP      [TCP 
Keep-Alive] 65463 > 11002 [PSH, ACK] Seq=1 Ack=1
     12 6.581536    192.168.86.1          192.168.81.1          TCP      11002 
> 65463 [ACK] Seq=1 Ack=2 Win=8192 Len=0
     13 6.636343    192.168.86.1          192.168.81.1          TCP      11002 
> 65463 [PSH, ACK] Seq=1 Ack=2 Win=8192 Len=2
     14 6.638403    192.168.86.1          192.168.81.1          TCP      [TCP 
Keep-Alive ACK] 11002 > 65463 [ACK] Seq=3 Ack=2 Win=8192 Len=0
     15 6.829526    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [ACK] Seq=2 Ack=3 Win=33580 Len=0
     16 7.637363    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [FIN, ACK] Seq=2 Ack=3 Win=33580 Len=0
     17 7.639507    192.168.86.1          192.168.81.1          TCP      11002 
> 65463 [FIN, ACK] Seq=3 Ack=3 Win=8191 Len=0
     18 7.639511    192.168.81.1          192.168.86.1          TCP      65463 
> 11002 [ACK] Seq=3 Ack=4 Win=33580 Len=0

Interestingly, at least for us, if we do back-to-back server accesses without 
closing the connection, the slow ACK is only there for the first exchange. 
Here's the WireShark trace for that scenario. Slow ACK for frame 304, 'fast' 
ACK for frame 310.

No.     Time        Source                Destination           Protocol Info
    301 1237.342429 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [SYN] Seq=0 Win=32768 Len=0 MSS=1460 WS=0 SACK_PERM=1 TSV=0 TSER=0
    302 1237.344687 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1450
    303 1237.344691 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [ACK] Seq=1 Ack=1 Win=33580 Len=0
    304 1237.344694 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [PSH, ACK] Seq=1 Ack=1 Win=33580 Len=1
    305 1238.361179 192.168.81.1          192.168.86.1          TCP      [TCP 
Keep-Alive] 65451 > 11002 [PSH, ACK] Seq=1 Ack=1 Win=33580 Len=1
    306 1238.363151 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [ACK] Seq=1 Ack=2 Win=8192 Len=0
    307 1238.417927 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [PSH, ACK] Seq=1 Ack=2 Win=8192 Len=2
    308 1238.419985 192.168.86.1          192.168.81.1          TCP      [TCP 
Keep-Alive ACK] 11002 > 65451 [ACK] Seq=3 Ack=2 Win=8192 Len=0
    309 1238.611125 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [ACK] Seq=2 Ack=3 Win=33580 Len=0
    310 1239.418975 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [PSH, ACK] Seq=2 Ack=3 Win=33580 Len=1
    311 1239.420951 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [ACK] Seq=3 Ack=3 Win=8192 Len=0
    312 1239.475760 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [PSH, ACK] Seq=3 Ack=3 Win=8192 Len=2
    313 1239.710900 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [ACK] Seq=3 Ack=5 Win=33580 Len=0
    314 1240.476744 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [FIN, ACK] Seq=3 Ack=5 Win=33580 Len=0
    315 1240.478900 192.168.86.1          192.168.81.1          TCP      11002 
> 65451 [FIN, ACK] Seq=5 Ack=4 Win=8191 Len=0
    316 1240.478904 192.168.81.1          192.168.86.1          TCP      65451 
> 11002 [ACK] Seq=4 Ack=6 Win=33580 Len=0

Any insights would be greatly appreciated. Thanks.

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

Reply via email to