Re: TCP Initial Window 10 MFC

2015-10-09 Thread hiren panchasara
Resurrecting this old thread.

On 04/23/15 at 01:29P, hiren panchasara wrote:
> On 03/04/14 at 10:22P, hiren panchasara wrote:
> > On Tue, Mar 4, 2014 at 7:38 PM, Lawrence Stewart  
> > wrote:
> > 
> > 
> > > I lost the battle of wills on this topic and 10.0 shipped with IW10
> > > enabled by default :(
> > >
> > > As for having it configurable, it is a trivial patch which perhaps,
> > > Hiren, you might be willing to take a stab at? I obviously did not
> > > manage to carve out the time last year to push forward with the agenda I
> > > proposed in this thread, but I will get back to it at some point.
> > 
> > Hi Lawrence,
> > 
> > Let's fix it the right way if possible.
> > 
> > Below is a rough/untested quick patch I came up with. Is this how you
> > were planning to have "nonstandard" sysctl knob designed?
> 
> A bit more updated patch:
> https://people.freebsd.org/~hiren/initcwnd.patch
> 
> How do we go about the existing knob 'sysctl
> net.inet.tcp.experimental.initcwnd10' ?
>

I am going to leave the existing sysctl initcwnd10 as is for now so
people can keep using it.

Here is the review: https://reviews.freebsd.org/D3858

Cheers,
Hiren


pgp6M0tQx4sva.pgp
Description: PGP signature


Re: TCP Initial Window 10 MFC

2015-04-23 Thread hiren panchasara
On 03/04/14 at 10:22P, hiren panchasara wrote:
 On Tue, Mar 4, 2014 at 7:38 PM, Lawrence Stewart lstew...@freebsd.org wrote:
 skip
 
  I lost the battle of wills on this topic and 10.0 shipped with IW10
  enabled by default :(
 
  As for having it configurable, it is a trivial patch which perhaps,
  Hiren, you might be willing to take a stab at? I obviously did not
  manage to carve out the time last year to push forward with the agenda I
  proposed in this thread, but I will get back to it at some point.
 
 Hi Lawrence,
 
 Let's fix it the right way if possible.
 
 Below is a rough/untested quick patch I came up with. Is this how you
 were planning to have nonstandard sysctl knob designed?

A bit more updated patch:
https://people.freebsd.org/~hiren/initcwnd.patch

How do we go about the existing knob 'sysctl
net.inet.tcp.experimental.initcwnd10' ?

cheers,
Hiren


pgpuRi4KXFSHD.pgp
Description: PGP signature


Re: TCP Initial Window 10 MFC

2014-03-04 Thread hiren panchasara
On Wed, Aug 14, 2013 at 8:46 PM, Lawrence Stewart lstew...@freebsd.org wrote:
 On 08/15/13 02:44, Andre Oppermann wrote:
 On 14.08.2013 04:36, Lawrence Stewart wrote:
 Hi Andre,

 [RE team is BCCed so they're aware of this discussion]

 On 07/06/13 00:58, Andre Oppermann wrote:
 Author: andre
 Date: Fri Jul  5 14:58:24 2013
 New Revision: 252789
 URL: http://svnweb.freebsd.org/changeset/base/252789

 Log:
MFC r242266:

 Increase the initial CWND to 10 segments as defined in IETF TCPM
 draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
 window improves the overall performance of many web services without
 risking congestion collapse.

 As long as it remains a draft it is placed under a sysctl marking it
 as experimental:
  net.inet.tcp.experimental.initcwnd10 = 1
 When it becomes an official RFC soon the sysctl will be changed to
 the RFC number and moved to net.inet.tcp.

 This implementation differs from the RFC draft in that it is a bit
 more conservative in the case of packet loss on SYN or SYN|ACK
 because
 we haven't reduced the default RTO to 1 second yet.  Also the
 restart
 window isn't yet increased as allowed.  Both will be adjusted with
 upcoming changes.

 Is is enabled by default.  In Linux it is enabled since kernel 3.0.

 I haven't been fully alert to FreeBSD happenings this year so apologies
 for bringing this up so long after the MFC.

 I don't think this change should have been MFCed, at least not in its
 current form. Enabling the switch to IW=10 on a stable branch is
 inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
 branch is poorly named as per the important discussion we had back in
 February [1]. I would really prefer we didn't get stuck having to keep
 it around by making a stable release with it being present.

 I think this commit should be backed out of stable/9 and more
 importantly, 9.2-RELEASE.

 Backing out the patch isn't really necessary, just flip the switch to
 off having it revert to the RFC5681 defaults.  Those who want it anyway
 can simply enable it again.

 That doesn't address the sysctl tree naming concern or mechanism issue -
 please refer back to the Feb discussion; specifically the proposal to
 rename the experimental branch to net.inet.tcp.nonstandard and add an
 allowed leaf which takes a list of non-standard behaviours to allow
 tweaking in the stack.

 Leaving the sysctl branch named experimental conveys that the things
 which live under the branch are being evaluated in some way for becoming
 a default, which is very different to nonstandard which conveys that
 the user is twiddling things in a way which normally shouldn't be. IW=10
 may become a FreeBSD default at some point, but the mechanism for
 enabling it should be to specify the initial window as a value in
 segments, and as such by allowing any non-standard value (IW=7, IW=50),
 I strongly argue in favour for changing the branch name from
 experimental to nonstandard.

 In order to continue this discussion in the context of what we started
 in Feb, I still request that this change be backed out of releng/9.2 so
 that 9.2-RELEASE doesn't ship with it. We can continue discussion for
 it's future in stable/9 and head after the backout so that 9.2 isn't
 held up.

 IW10 has become RFC6928 (experimental) in April 2013.

 Great for the draft authors, but irrelevant for this discussion.

 As an aside, I am intending to follow up to the Feb discussion with a
 patch that implements the basic infrastructure I proposed so that we can
 continue that discussion.

 Again I'm deeply concerned and opposed to giving end users direct control
 over the IW value.  I've had and seen too many cases of totally bogus
 tuning
 by cranking up random sysctls to insane values and then complaining about
 FreeBSD being slow compared to Linux (and then ditching FreeBSD).

 Sorry, but referring to unspecified cases of stupidity resulting in loss
 of unquantified numbers of users as a reason against providing a
 controlled mechanism to change a default system parameter in a
 potentially harmful way is not a rational argument.

I do not subscribe to the idea of Let's not make life of 98% of users
better because 2% may do something stupid.

I am revisiting this thread because at $work, we need to tweak
initcwnd (other than 10) to see how it behaves but there is no easy
way to tune it. (or am I missing something?)

Can we please make initcwnd a sysctl tunable?

cheers,
Hiren
___
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


Re: TCP Initial Window 10 MFC

2014-03-04 Thread Kubilay Kocak
On 5/03/2014 6:39 AM, hiren panchasara wrote:
 On Wed, Aug 14, 2013 at 8:46 PM, Lawrence Stewart lstew...@freebsd.org 
 wrote:
 On 08/15/13 02:44, Andre Oppermann wrote:
 On 14.08.2013 04:36, Lawrence Stewart wrote:
 Hi Andre,

 [RE team is BCCed so they're aware of this discussion]

 On 07/06/13 00:58, Andre Oppermann wrote:
 Author: andre
 Date: Fri Jul  5 14:58:24 2013
 New Revision: 252789
 URL: http://svnweb.freebsd.org/changeset/base/252789

 Log:
MFC r242266:

 Increase the initial CWND to 10 segments as defined in IETF TCPM
 draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
 window improves the overall performance of many web services without
 risking congestion collapse.

 As long as it remains a draft it is placed under a sysctl marking it
 as experimental:
  net.inet.tcp.experimental.initcwnd10 = 1
 When it becomes an official RFC soon the sysctl will be changed to
 the RFC number and moved to net.inet.tcp.

 This implementation differs from the RFC draft in that it is a bit
 more conservative in the case of packet loss on SYN or SYN|ACK
 because
 we haven't reduced the default RTO to 1 second yet.  Also the
 restart
 window isn't yet increased as allowed.  Both will be adjusted with
 upcoming changes.

 Is is enabled by default.  In Linux it is enabled since kernel 3.0.

 I haven't been fully alert to FreeBSD happenings this year so apologies
 for bringing this up so long after the MFC.

 I don't think this change should have been MFCed, at least not in its
 current form. Enabling the switch to IW=10 on a stable branch is
 inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
 branch is poorly named as per the important discussion we had back in
 February [1]. I would really prefer we didn't get stuck having to keep
 it around by making a stable release with it being present.

 I think this commit should be backed out of stable/9 and more
 importantly, 9.2-RELEASE.

 Backing out the patch isn't really necessary, just flip the switch to
 off having it revert to the RFC5681 defaults.  Those who want it anyway
 can simply enable it again.

 That doesn't address the sysctl tree naming concern or mechanism issue -
 please refer back to the Feb discussion; specifically the proposal to
 rename the experimental branch to net.inet.tcp.nonstandard and add an
 allowed leaf which takes a list of non-standard behaviours to allow
 tweaking in the stack.

 Leaving the sysctl branch named experimental conveys that the things
 which live under the branch are being evaluated in some way for becoming
 a default, which is very different to nonstandard which conveys that
 the user is twiddling things in a way which normally shouldn't be. IW=10
 may become a FreeBSD default at some point, but the mechanism for
 enabling it should be to specify the initial window as a value in
 segments, and as such by allowing any non-standard value (IW=7, IW=50),
 I strongly argue in favour for changing the branch name from
 experimental to nonstandard.

 In order to continue this discussion in the context of what we started
 in Feb, I still request that this change be backed out of releng/9.2 so
 that 9.2-RELEASE doesn't ship with it. We can continue discussion for
 it's future in stable/9 and head after the backout so that 9.2 isn't
 held up.

 IW10 has become RFC6928 (experimental) in April 2013.

 Great for the draft authors, but irrelevant for this discussion.

 As an aside, I am intending to follow up to the Feb discussion with a
 patch that implements the basic infrastructure I proposed so that we can
 continue that discussion.

 Again I'm deeply concerned and opposed to giving end users direct control
 over the IW value.  I've had and seen too many cases of totally bogus
 tuning
 by cranking up random sysctls to insane values and then complaining about
 FreeBSD being slow compared to Linux (and then ditching FreeBSD).

 Sorry, but referring to unspecified cases of stupidity resulting in loss
 of unquantified numbers of users as a reason against providing a
 controlled mechanism to change a default system parameter in a
 potentially harmful way is not a rational argument.
 
 I do not subscribe to the idea of Let's not make life of 98% of users
 better because 2% may do something stupid.
 
 I am revisiting this thread because at $work, we need to tweak
 initcwnd (other than 10) to see how it behaves but there is no easy
 way to tune it. (or am I missing something?)
 
 Can we please make initcwnd a sysctl tunable?
 
 cheers,
 Hiren

+1 - We'd like to at least be able to measure the difference and impact
of different values @ work, with the choice to make informed
configuration decisions too.
___
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


Re: TCP Initial Window 10 MFC

2014-03-04 Thread Lawrence Stewart
On 03/04/14 13:10, Kubilay Kocak wrote:
 On 5/03/2014 6:39 AM, hiren panchasara wrote:
 On Wed, Aug 14, 2013 at 8:46 PM, Lawrence Stewart lstew...@freebsd.org 
 wrote:
 On 08/15/13 02:44, Andre Oppermann wrote:
 On 14.08.2013 04:36, Lawrence Stewart wrote:
 Hi Andre,

 [RE team is BCCed so they're aware of this discussion]

 On 07/06/13 00:58, Andre Oppermann wrote:
 Author: andre
 Date: Fri Jul  5 14:58:24 2013
 New Revision: 252789
 URL: http://svnweb.freebsd.org/changeset/base/252789

 Log:
MFC r242266:

 Increase the initial CWND to 10 segments as defined in IETF TCPM
 draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
 window improves the overall performance of many web services without
 risking congestion collapse.

 As long as it remains a draft it is placed under a sysctl marking it
 as experimental:
  net.inet.tcp.experimental.initcwnd10 = 1
 When it becomes an official RFC soon the sysctl will be changed to
 the RFC number and moved to net.inet.tcp.

 This implementation differs from the RFC draft in that it is a bit
 more conservative in the case of packet loss on SYN or SYN|ACK
 because
 we haven't reduced the default RTO to 1 second yet.  Also the
 restart
 window isn't yet increased as allowed.  Both will be adjusted with
 upcoming changes.

 Is is enabled by default.  In Linux it is enabled since kernel 3.0.

 I haven't been fully alert to FreeBSD happenings this year so apologies
 for bringing this up so long after the MFC.

 I don't think this change should have been MFCed, at least not in its
 current form. Enabling the switch to IW=10 on a stable branch is
 inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
 branch is poorly named as per the important discussion we had back in
 February [1]. I would really prefer we didn't get stuck having to keep
 it around by making a stable release with it being present.

 I think this commit should be backed out of stable/9 and more
 importantly, 9.2-RELEASE.

 Backing out the patch isn't really necessary, just flip the switch to
 off having it revert to the RFC5681 defaults.  Those who want it anyway
 can simply enable it again.

 That doesn't address the sysctl tree naming concern or mechanism issue -
 please refer back to the Feb discussion; specifically the proposal to
 rename the experimental branch to net.inet.tcp.nonstandard and add an
 allowed leaf which takes a list of non-standard behaviours to allow
 tweaking in the stack.

 Leaving the sysctl branch named experimental conveys that the things
 which live under the branch are being evaluated in some way for becoming
 a default, which is very different to nonstandard which conveys that
 the user is twiddling things in a way which normally shouldn't be. IW=10
 may become a FreeBSD default at some point, but the mechanism for
 enabling it should be to specify the initial window as a value in
 segments, and as such by allowing any non-standard value (IW=7, IW=50),
 I strongly argue in favour for changing the branch name from
 experimental to nonstandard.

 In order to continue this discussion in the context of what we started
 in Feb, I still request that this change be backed out of releng/9.2 so
 that 9.2-RELEASE doesn't ship with it. We can continue discussion for
 it's future in stable/9 and head after the backout so that 9.2 isn't
 held up.

 IW10 has become RFC6928 (experimental) in April 2013.

 Great for the draft authors, but irrelevant for this discussion.

 As an aside, I am intending to follow up to the Feb discussion with a
 patch that implements the basic infrastructure I proposed so that we can
 continue that discussion.

 Again I'm deeply concerned and opposed to giving end users direct control
 over the IW value.  I've had and seen too many cases of totally bogus
 tuning
 by cranking up random sysctls to insane values and then complaining about
 FreeBSD being slow compared to Linux (and then ditching FreeBSD).

 Sorry, but referring to unspecified cases of stupidity resulting in loss
 of unquantified numbers of users as a reason against providing a
 controlled mechanism to change a default system parameter in a
 potentially harmful way is not a rational argument.

 I do not subscribe to the idea of Let's not make life of 98% of users
 better because 2% may do something stupid.

 I am revisiting this thread because at $work, we need to tweak
 initcwnd (other than 10) to see how it behaves but there is no easy
 way to tune it. (or am I missing something?)

 Can we please make initcwnd a sysctl tunable?

 cheers,
 Hiren
 
 +1 - We'd like to at least be able to measure the difference and impact
 of different values @ work, with the choice to make informed
 configuration decisions too.

I lost the battle of wills on this topic and 10.0 shipped with IW10
enabled by default :(

As for having it configurable, it is a trivial patch which perhaps,
Hiren, you might be willing to take a stab 

Re: TCP Initial Window 10 MFC

2014-03-04 Thread hiren panchasara
On Tue, Mar 4, 2014 at 7:38 PM, Lawrence Stewart lstew...@freebsd.org wrote:
skip

 I lost the battle of wills on this topic and 10.0 shipped with IW10
 enabled by default :(

 As for having it configurable, it is a trivial patch which perhaps,
 Hiren, you might be willing to take a stab at? I obviously did not
 manage to carve out the time last year to push forward with the agenda I
 proposed in this thread, but I will get back to it at some point.

Hi Lawrence,

Let's fix it the right way if possible.

Below is a rough/untested quick patch I came up with. Is this how you
were planning to have nonstandard sysctl knob designed?

Index: sys/netinet/tcp_input.c
===
--- sys/netinet/tcp_input.c (revision 260833)
+++ sys/netinet/tcp_input.c (working copy)
@@ -164,6 +164,19 @@
 VNET_NAME(tcp_do_initcwnd10), 0,
 Enable RFC 6928 (Increasing initial CWND to 10));

+SYSCTL_NODE(_net_inet_tcp, OID_AUTO, nonstandard, CTLFLAG_RW, 0,
+Nonstandard TCP extensions);
+
+VNET_DEFINE(int, tcp_nonstandard_allowed) = 0;
+SYSCTL_VNET_INT(_net_inet_tcp_nonstandard, OID_AUTO, allowed, CTLFLAG_RW,
+VNET_NAME(tcp_nonstandard_allowed), 0,
+Allow nonstandard TCP extensions);
+
+VNET_DEFINE(int, tcp_nonstandard_initcwnd) = 0;
+SYSCTL_VNET_INT(_net_inet_tcp_nonstandard, OID_AUTO, initcwnd, CTLFLAG_RW,
+VNET_NAME(tcp_nonstandard_initcwnd), 0,
+Slow-start flight size (initial congestion window));
+
 VNET_DEFINE(int, tcp_do_rfc3465) = 1;
 SYSCTL_VNET_INT(_net_inet_tcp, OID_AUTO, rfc3465, CTLFLAG_RW,
 VNET_NAME(tcp_do_rfc3465), 0,
@@ -368,6 +381,8 @@
 */
if (tp-snd_cwnd == 1)
tp-snd_cwnd = tp-t_maxseg;/* SYN(-ACK) lost */
+   else if (V_tcp_nonstandard_allowed  V_tcp_nonstandard_initcwnd)
+   tp-snd_cwnd = V_tcp_nonstandard_initcwnd * tp-t_maxseg;
else if (V_tcp_do_initcwnd10)
tp-snd_cwnd = min(10 * tp-t_maxseg,
max(2 * tp-t_maxseg, 14600));
Index: sys/netinet/tcp_var.h
===
--- sys/netinet/tcp_var.h   (revision 260833)
+++ sys/netinet/tcp_var.h   (working copy)
@@ -610,6 +610,7 @@
 VNET_DECLARE(int, tcp_delack_enabled);
 VNET_DECLARE(int, tcp_do_rfc3390);
 VNET_DECLARE(int, tcp_do_initcwnd10);
+VNET_DECLARE(int, tcp_nonstandard_allowed);
+VNET_DECLARE(int, tcp_nonstandard_initcwnd);
 VNET_DECLARE(int, tcp_sendspace);
 VNET_DECLARE(int, tcp_recvspace);
 VNET_DECLARE(int, path_mtu_discovery);
@@ -622,6 +623,7 @@
 #defineV_tcp_delack_enabledVNET(tcp_delack_enabled)
 #defineV_tcp_do_rfc3390VNET(tcp_do_rfc3390)
 #defineV_tcp_do_initcwnd10 VNET(tcp_do_initcwnd10)
+#defineV_tcp_nonstandard_allowed   VNET(tcp_nonstandard_allowed)
+#defineV_tcp_nonstandard_initcwnd  VNET(tcp_nonstandard_initcwnd)
 #defineV_tcp_sendspace VNET(tcp_sendspace)
 #defineV_tcp_recvspace VNET(tcp_recvspace)
 #defineV_path_mtu_discoveryVNET(path_mtu_discovery)
___
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


Re: TCP Initial Window 10 MFC (was: Re: svn commit: r252789 - stable/9/sys/netinet)

2013-08-14 Thread Eggert, Lars
Hi,

On Aug 14, 2013, at 10:36, Lawrence Stewart lstew...@freebsd.org wrote:
 I don't think this change should have been MFCed, at least not in its
 current form.

FYI, Google's own data as presented in the HTTPBIS working group of the recent 
Berlin IETF shows that 10 is too high for ~25% of their web connections: see 
slide 2 of http://www.ietf.org/proceedings/87/slides/slides-87-httpbis-5.pdf

(That slide shows a CDF of CWND values the server used at the end of a web 
transaction.)

Lars


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: TCP Initial Window 10 MFC

2013-08-14 Thread Lawrence Stewart
Hi Lars,

On 08/14/13 18:46, Eggert, Lars wrote:
 Hi,
 
 On Aug 14, 2013, at 10:36, Lawrence Stewart lstew...@freebsd.org wrote:
 I don't think this change should have been MFCed, at least not in its
 current form.
 
 FYI, Google's own data as presented in the HTTPBIS working group of the 
 recent Berlin IETF shows that 10 is too high for ~25% of their web 
 connections: see slide 2 of 
 http://www.ietf.org/proceedings/87/slides/slides-87-httpbis-5.pdf
 
 (That slide shows a CDF of CWND values the server used at the end of a web 
 transaction.)

Thanks for the pointer - very interesting. Do you recall if they said
how many flows made up the CDF?

Cheers,
Lawrence
___
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


Re: TCP Initial Window 10 MFC

2013-08-14 Thread Andre Oppermann

On 14.08.2013 04:36, Lawrence Stewart wrote:

Hi Andre,

[RE team is BCCed so they're aware of this discussion]

On 07/06/13 00:58, Andre Oppermann wrote:

Author: andre
Date: Fri Jul  5 14:58:24 2013
New Revision: 252789
URL: http://svnweb.freebsd.org/changeset/base/252789

Log:
   MFC r242266:

Increase the initial CWND to 10 segments as defined in IETF TCPM
draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
window improves the overall performance of many web services without
risking congestion collapse.

As long as it remains a draft it is placed under a sysctl marking it
as experimental:
 net.inet.tcp.experimental.initcwnd10 = 1
When it becomes an official RFC soon the sysctl will be changed to
the RFC number and moved to net.inet.tcp.

This implementation differs from the RFC draft in that it is a bit
more conservative in the case of packet loss on SYN or SYN|ACK because
we haven't reduced the default RTO to 1 second yet.  Also the restart
window isn't yet increased as allowed.  Both will be adjusted with
upcoming changes.

Is is enabled by default.  In Linux it is enabled since kernel 3.0.


I haven't been fully alert to FreeBSD happenings this year so apologies
for bringing this up so long after the MFC.

I don't think this change should have been MFCed, at least not in its
current form. Enabling the switch to IW=10 on a stable branch is
inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
branch is poorly named as per the important discussion we had back in
February [1]. I would really prefer we didn't get stuck having to keep
it around by making a stable release with it being present.

I think this commit should be backed out of stable/9 and more
importantly, 9.2-RELEASE.


Backing out the patch isn't really necessary, just flip the switch to
off having it revert to the RFC5681 defaults.  Those who want it anyway
can simply enable it again.

IW10 has become RFC6928 (experimental) in April 2013.


As an aside, I am intending to follow up to the Feb discussion with a
patch that implements the basic infrastructure I proposed so that we can
continue that discussion.


Again I'm deeply concerned and opposed to giving end users direct control
over the IW value.  I've had and seen too many cases of totally bogus tuning
by cranking up random sysctls to insane values and then complaining about
FreeBSD being slow compared to Linux (and then ditching FreeBSD).

--
Andre


Cheers,
Lawrence

[1] http://lists.freebsd.org/pipermail/freebsd-net/2013-February/034698.html


___
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


Re: TCP Initial Window 10 MFC

2013-08-14 Thread Eggert, Lars
Hi,

On Aug 14, 2013, at 17:27, Lawrence Stewart lstew...@freebsd.org
 wrote:
 Do you recall if they said
 how many flows made up the CDF?

I think very many - check out the audio archive or the minutes of the 
meeting, it should have the details.

Lars


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: TCP Initial Window 10 MFC (was: Re: svn commit: r252789 - stable/9/sys/netinet)

2013-08-14 Thread Eggert, Lars
Oh: The other interesting bit is that Chrome defaulted to telling the server to 
use IW32 if it had no cached value...

I think Google are still heavily tweaking the mechanisms.

Lars

On Aug 14, 2013, at 16:46, Eggert, Lars l...@netapp.com wrote:

 Hi,
 
 On Aug 14, 2013, at 10:36, Lawrence Stewart lstew...@freebsd.org wrote:
 I don't think this change should have been MFCed, at least not in its
 current form.
 
 FYI, Google's own data as presented in the HTTPBIS working group of the 
 recent Berlin IETF shows that 10 is too high for ~25% of their web 
 connections: see slide 2 of 
 http://www.ietf.org/proceedings/87/slides/slides-87-httpbis-5.pdf
 
 (That slide shows a CDF of CWND values the server used at the end of a web 
 transaction.)
 
 Lars



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: TCP Initial Window 10 MFC

2013-08-14 Thread Lawrence Stewart
On 08/15/13 02:44, Andre Oppermann wrote:
 On 14.08.2013 04:36, Lawrence Stewart wrote:
 Hi Andre,

 [RE team is BCCed so they're aware of this discussion]

 On 07/06/13 00:58, Andre Oppermann wrote:
 Author: andre
 Date: Fri Jul  5 14:58:24 2013
 New Revision: 252789
 URL: http://svnweb.freebsd.org/changeset/base/252789

 Log:
MFC r242266:

 Increase the initial CWND to 10 segments as defined in IETF TCPM
 draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
 window improves the overall performance of many web services without
 risking congestion collapse.

 As long as it remains a draft it is placed under a sysctl marking it
 as experimental:
  net.inet.tcp.experimental.initcwnd10 = 1
 When it becomes an official RFC soon the sysctl will be changed to
 the RFC number and moved to net.inet.tcp.

 This implementation differs from the RFC draft in that it is a bit
 more conservative in the case of packet loss on SYN or SYN|ACK
 because
 we haven't reduced the default RTO to 1 second yet.  Also the
 restart
 window isn't yet increased as allowed.  Both will be adjusted with
 upcoming changes.

 Is is enabled by default.  In Linux it is enabled since kernel 3.0.

 I haven't been fully alert to FreeBSD happenings this year so apologies
 for bringing this up so long after the MFC.

 I don't think this change should have been MFCed, at least not in its
 current form. Enabling the switch to IW=10 on a stable branch is
 inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
 branch is poorly named as per the important discussion we had back in
 February [1]. I would really prefer we didn't get stuck having to keep
 it around by making a stable release with it being present.

 I think this commit should be backed out of stable/9 and more
 importantly, 9.2-RELEASE.
 
 Backing out the patch isn't really necessary, just flip the switch to
 off having it revert to the RFC5681 defaults.  Those who want it anyway
 can simply enable it again.

That doesn't address the sysctl tree naming concern or mechanism issue -
please refer back to the Feb discussion; specifically the proposal to
rename the experimental branch to net.inet.tcp.nonstandard and add an
allowed leaf which takes a list of non-standard behaviours to allow
tweaking in the stack.

Leaving the sysctl branch named experimental conveys that the things
which live under the branch are being evaluated in some way for becoming
a default, which is very different to nonstandard which conveys that
the user is twiddling things in a way which normally shouldn't be. IW=10
may become a FreeBSD default at some point, but the mechanism for
enabling it should be to specify the initial window as a value in
segments, and as such by allowing any non-standard value (IW=7, IW=50),
I strongly argue in favour for changing the branch name from
experimental to nonstandard.

In order to continue this discussion in the context of what we started
in Feb, I still request that this change be backed out of releng/9.2 so
that 9.2-RELEASE doesn't ship with it. We can continue discussion for
it's future in stable/9 and head after the backout so that 9.2 isn't
held up.

 IW10 has become RFC6928 (experimental) in April 2013.

Great for the draft authors, but irrelevant for this discussion.

 As an aside, I am intending to follow up to the Feb discussion with a
 patch that implements the basic infrastructure I proposed so that we can
 continue that discussion.
 
 Again I'm deeply concerned and opposed to giving end users direct control
 over the IW value.  I've had and seen too many cases of totally bogus
 tuning
 by cranking up random sysctls to insane values and then complaining about
 FreeBSD being slow compared to Linux (and then ditching FreeBSD).

Sorry, but referring to unspecified cases of stupidity resulting in loss
of unquantified numbers of users as a reason against providing a
controlled mechanism to change a default system parameter in a
potentially harmful way is not a rational argument.

Cheers,
Lawrence
___
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


TCP Initial Window 10 MFC (was: Re: svn commit: r252789 - stable/9/sys/netinet)

2013-08-13 Thread Lawrence Stewart
Hi Andre,

[RE team is BCCed so they're aware of this discussion]

On 07/06/13 00:58, Andre Oppermann wrote:
 Author: andre
 Date: Fri Jul  5 14:58:24 2013
 New Revision: 252789
 URL: http://svnweb.freebsd.org/changeset/base/252789
 
 Log:
   MFC r242266:
   
Increase the initial CWND to 10 segments as defined in IETF TCPM
draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
window improves the overall performance of many web services without
risking congestion collapse.
   
As long as it remains a draft it is placed under a sysctl marking it
as experimental:
 net.inet.tcp.experimental.initcwnd10 = 1
When it becomes an official RFC soon the sysctl will be changed to
the RFC number and moved to net.inet.tcp.
   
This implementation differs from the RFC draft in that it is a bit
more conservative in the case of packet loss on SYN or SYN|ACK because
we haven't reduced the default RTO to 1 second yet.  Also the restart
window isn't yet increased as allowed.  Both will be adjusted with
upcoming changes.
   
Is is enabled by default.  In Linux it is enabled since kernel 3.0.

I haven't been fully alert to FreeBSD happenings this year so apologies
for bringing this up so long after the MFC.

I don't think this change should have been MFCed, at least not in its
current form. Enabling the switch to IW=10 on a stable branch is
inappropriate IMO. I also think the net.inet.tcp.experimental sysctl
branch is poorly named as per the important discussion we had back in
February [1]. I would really prefer we didn't get stuck having to keep
it around by making a stable release with it being present.

I think this commit should be backed out of stable/9 and more
importantly, 9.2-RELEASE.

As an aside, I am intending to follow up to the Feb discussion with a
patch that implements the basic infrastructure I proposed so that we can
continue that discussion.

Thoughts?

Cheers,
Lawrence

[1] http://lists.freebsd.org/pipermail/freebsd-net/2013-February/034698.html
___
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