[Top][All Lists]

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

[lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout

From: Joel Cunningham
Subject: [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout
Date: Fri, 4 Aug 2017 15:16:41 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

Follow-up Comment #43, bug #50837 (project lwip):

Attached patch re-works the persist timer to make the discussed changes.  From
commit message:

This re-works the persist timer to have the following behavior:

  1) Only start persist timer when a buffered segment doesn't fit within
     the current window and there is no in-fligh data.  Previously, the
     persist timer was always started when the window went to zero even
     if there was no buffered data (since timer was managed in receive
     pathway rather than transmit pathway)
  2) Upon first fire of persist timer, fill the remaining window if
     non-zero by splitting the unsent segment.  If split segment is sent,
     persist timer is stopped, RTO timer is now ensuring reliable window
  3) If window is already zero when persist timer fires, send 1 byte probe
  4) Persist timer and zero window probe should only be active when the
     following are true:
       * no in-flight data (pcb->unacked == NULL)
       * when there is buffered data (pcb->unsent != NULL)
       * when pcb->unsent->len > pcb->snd_wnd

I also found a really helpful way to exercise a full window.  Download a large
file (hosted by LwIP device with HTTP server) via curl but use rate limiting,
which only reads from the socket buffer according to the defined rate:

curl --limit-rate 1024k http://lwip-server/video.mp4

I'd appreciate any testing and code review, especially on the new function
tcp_split_unsent_seg().  I have exercised both TCP_CHECKSUM_ON_COPY and
!TCP_CHECKSUM_ON_COPY cases with full windows to ensure split is working

(file #41415)

Additional Item Attachment:

File name: 0001-tcp-persist-timer-re-work-bug-50837.patch Size:21 KB


Reply to this item at:


  Message sent via/by Savannah

reply via email to

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