lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [bug #47305] slow load time, DupACK-Problem in TCPIP Thread


From: Martin Datzmann
Subject: [lwip-devel] [bug #47305] slow load time, DupACK-Problem in TCPIP Thread
Date: Mon, 29 Feb 2016 14:43:06 +0000
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0

URL:
  <http://savannah.nongnu.org/bugs/?47305>

                 Summary: slow load time, DupACK-Problem in TCPIP Thread
                 Project: lwIP - A Lightweight TCP/IP stack
            Submitted by: martin5523
            Submitted on: Mo 29 Feb 2016 14:43:05 GMT
                Category: TCP
                Severity: 3 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 
            lwIP version: 1.4.1

    _______________________________________________________

Details:

Dear all,

in my project, I use the lwIP-Stack with FreeRTOS on an ARM-Cortex M4
Mikrocontroller.
There is no problem, to serve a small html-page. (web page load time: 3 ms)
When I try to serve a slightly more complex page (html and two pictures), the
following problem can occur resulting 

in very slow load time:

In response to a request the webserver sends two data-packets
(Con1_data1.1/data1.2) as usual and gets an ACK from 

the Browser (Con1_ACK1). If an ACK for another TCP-connection (Con2_ACK1) is
received between Con1_data1.1/data1.2 

and Con1_ACK1, then Con2_ACK1 is handled correctly.

But now, instead of processing Con1_ACK1 and therefore removing
Con1_data1.1/data1.2 from the unacked-list, the 

TCP/IP-thread is terminating and still waits for an ACK for
Con1_data1.1/data1.2. After timeout (ca. 2 s), the 

TCP/IP-thread resends Con1_data1.1, gets an ACK again (Con1_ACK1dup) and
removes Con1_data1.1 from the unacked-list 

and Con1_data1.2 from the unsent-list and everything seems ok.

After this the next two packets are sent (Con1_data2.1/data2.2) and Con1_ACK2
is received. Now in tcp_receive() the 

dupack routine is entered probably because of Con1_ACK1dup ( a) dupacks < 3:
do nothing) and the TCP/IP-thread is 

terminating without removing Con1_data2.1/data2.2 from the unacked-list. From
now on the process is repeating again 

with resending Con1_data2.1 after timeout and receiving Con1_ACK2dup as
described above.

Once the problem occured, it repeats again and again and one has to do a
restart to reset the behaviour.
I used lwip 1.4.1 and also latest source from git.savannah.gnu.org (commit
#70f3e5e). In both versions the problem 

exists.

Has anybody experienced a similar problem with DupACKs here?
What could be the reason for this behaviour?


Thanks! 



    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Mo 29 Feb 2016 14:43:05 GMT  Name: wireshark.jpg  Size: 486kB   By:
martin5523

<http://savannah.nongnu.org/bugs/download.php?file_id=36504>

    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?47305>

_______________________________________________
  Nachricht gesendet von/durch Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]