[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
updates
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
correctly
(file #41415)
_______________________________________________________
Additional Item Attachment:
File name: 0001-tcp-persist-timer-re-work-bug-50837.patch Size:21 KB
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?50837>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout,
Joel Cunningham <=
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Joel Cunningham, 2017/08/11
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Simon Goldschmidt, 2017/08/11
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Joel Cunningham, 2017/08/11
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Simon Goldschmidt, 2017/08/21
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Joel Cunningham, 2017/08/22
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Simon Goldschmidt, 2017/08/22
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Joel Cunningham, 2017/08/22
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Simon Goldschmidt, 2017/08/24
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Joel Cunningham, 2017/08/25
- [lwip-devel] [bug #50837] TCP: zero window probe doesn't timeout, Simon Goldschmidt, 2017/08/25