svn commit: r314155 - head/sys/netinet

Steven Hartland steven.hartland at multiplay.co.uk
Thu Feb 23 20:31:54 UTC 2017


You might also be interested in reviewing my fix for TCP buffer scaling 
too Michael.
https://reviews.freebsd.org/D9668

This fixes slow transfers due to no receive buffer scaling if TCP 
timestamps aren't negotiated.

Its still got debug stuff in it ATM and I'm toying with removing the 
different cases between estimated RTT and timestamps as there appears to 
be no difference in practice.

Tests here show jump from ~3MB/s @ 1Gbps and 17ms latency to 100MB/s, 
pretty much line rate, which is in line with Linux results.

Any feedback welcome.

     Regards
     Steve

On 23/02/2017 18:14, Michael Tuexen wrote:
> Author: tuexen
> Date: Thu Feb 23 18:14:36 2017
> New Revision: 314155
> URL: https://svnweb.freebsd.org/changeset/base/314155
>
> Log:
>    TCP window updates are only sent if the window can be increased by at
>    least 2 * MSS. However, if the receive buffer size is small, this might
>    be impossible. Add back a criterion to send a TCP window update if
>    the window can be increased by at least half of the receive buffer size.
>    This condition was removed in r242252. This patch simply brings it back.
>    PR:			211003
>    Reviewed by:		gnn
>    MFC after:		1 week
>    Sponsored by:		Netflix, Inc.
>    Differential Revision:	https://reviews.freebsd.org/D9475
>
> Modified:
>    head/sys/netinet/tcp_output.c
>
> Modified: head/sys/netinet/tcp_output.c
> ==============================================================================
> --- head/sys/netinet/tcp_output.c	Thu Feb 23 17:56:24 2017	(r314154)
> +++ head/sys/netinet/tcp_output.c	Thu Feb 23 18:14:36 2017	(r314155)
> @@ -696,6 +696,8 @@ after_sack_rexmit:
>   		     recwin <= (so->so_rcv.sb_hiwat / 8) ||
>   		     so->so_rcv.sb_hiwat <= 8 * tp->t_maxseg))
>   			goto send;
> +		if (2 * adv >= (int32_t)so->so_rcv.sb_hiwat)
> +			goto send;
>   	}
>   dontupdate:
>   
>



More information about the svn-src-head mailing list