[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [bug #25882] TCP hangs on MSS > pcb->snd_wnd
From: |
Simon Goldschmidt |
Subject: |
[lwip-devel] [bug #25882] TCP hangs on MSS > pcb->snd_wnd |
Date: |
Sun, 22 Jan 2012 15:40:46 +0000 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0.1) Gecko/20100101 Firefox/8.0.1 |
Follow-up Comment #13, bug #25882 (project lwip):
I have been working on this and came to a solution with 2 changes:
1) track the biggest snd_wnd we received and use its half as an additional
limit on mss (i.e. when we create segments in tcp_write, the maximum size is
now "MIN(pcb->mss, pcb->snd_wnd_max/2)" instead of "pcb->mss"); this ensures
we always need 2 segments for one window.
2) Using the persist timer in a 2nd mode: if we have a segment that starts
inside the window but doesn't fit into it, start persist timer in a mode
that:
a) sends what fits into the window on timeout (instead of only 1 byte) and
b) doesn't prevent the pcb from timing out
While 1) solves the original problem (and lwIP now should behave as linux does
in the attached pcap trace), 2) solves the potential problem where the remote
side waits for the window to grow but lwIP doesn't send because a pre-created
segment is too big.
As this is (once again) the last open bug to delay the next release, please
comment :-)
Code follows as soon as my development machine is running again...
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?25882>
_______________________________________________
Nachricht geschickt von/durch Savannah
http://savannah.nongnu.org/
- [lwip-devel] [bug #25882] TCP hangs on MSS > pcb->snd_wnd,
Simon Goldschmidt <=