lwip-devel
[Top][All Lists]
Advanced

[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/




reply via email to

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