Some questions about the new TCP congestion control code

Andre Oppermann oppermann at networx.ch
Thu Jan 24 14:12:40 UTC 2013


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



More information about the freebsd-net mailing list