On 24.01.2013 14:28, Lawrence Stewart wrote:
On 01/16/13 06:27, John Baldwin wrote:
One other thing I noticed which is may or may not be odd during this, is that
if you have a connection with TCP_NODELAY enabled and you fill your cwnd and
then you get an ACK back for an earlier small segment (less than MSS), TCP
will not send out a "short" segment for the amount of window space released.
Instead, it will wait until a full MSS of space is available before sending
a packet.  I'm not sure if that is the correct behavior with TCP_NODELAY or
if we should send "short" segments in that case.

We try fairly hard not to send runt segments irrespective of NODELAY,
but I would be happy to see that change. I'm not aware of any "correct
behaviour" we have to adhere to - I think it would be perfectly
reasonable to have a sysctl set the lowest number of bytes we'd be
willing to send a runt segment for and then key off TCP_NODELAY as to
whether we try hard to send an MSS worth or send as soon as we have the
min number of bytes worth of window available.

This is classic silly window syndrome prevention applied to the CWND.  Sending
a small segment when the window opens just a bit isn't going to help much and
mostly clogs the network.

This is actually a side effect of ABC (appropriate byte counting) where not
the ACK's are counted but the bytes ACK'ed.  Disabling ABC will solve this
problem.

--
Andre

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to