Follow-up Comment #6, patch #6537 (project lwip):
I encountered an issue with this patch. I observed data loss and
performance
degradation when receiving data over TCP connections with large
window
sizes
(e.g. TCP_WND=120KBytes). My shift is set at 7 (but it could be
anything
else).
This is the problem: suppose window is usually filled for about 70K,
caused
by the bandwidth*delay principle. Imagine that the link works
well, and at
a
certain moment a single packet is dropped. The OOSEQ code queues
packets,
but
there is a little gap in the sequence number for the first ooseq
packet.
When
that gap is filled by a retransmit of the missing data, all the
out-of-sequence queued packets, amounting to 70K of data in our
example,
is
concatenated in one pbuf (it is called recv_data). But the
tot_len field
of a
pbuf is only 16bit.... The result I observe is that there is a
64K gap in
the
received data stream.
Isn't the intention of this patch to allow TCP_WND to be > 64K?
Any hints
on
how to solve this? I have the feeling that simply changing
tot_len to a
u32_t
will not be sufficient. Using multiple pbufs is probably easier?
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/patch/?6537>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/