[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: |
Sun, 2 Jul 2017 12:41:33 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (iPad; CPU OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.0 Mobile/14F89 Safari/602.1 |
Follow-up Comment #39, bug #50837 (project lwip):
Simon,
I spent some time investigating how NetBSD uses its persist timer and have
found some similar behavior to the proposed delayed small send. It takes some
spinning up, but the logic is contained within the Sender Silly Window check:
https://github.com/jsonn/src/blob/trunk/sys/netinet/tcp_output.c#L996
When the connection is idle (i.e. no in-flight data) and the window doesn't
allow a full segment and Nagles is on AND there is more data in the socket
buffer, rather than sending a small segment, sending is skipped and the
persist timer is started (follow down to line 1075).
When persist timer fires
(https://github.com/jsonn/src/blob/trunk/sys/netinet/tcp_timer.c#L435) , it
sets tp->t_force to 1 and calls tcp_output(), which will now forces sending of
the small segment. See
https://github.com/jsonn/src/blob/trunk/sys/netinet/tcp_output.c#L819 for
logic of t_force being 1 and window being zero vs small
So while there isn't behavior indefinitely treating the window as closed,
delaying sending in this case and using the persist timer is done by at least
NetBSD
_______________________________________________________
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 <=