Re: TCP Initial Window 10 MFC
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
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
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
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
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
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)
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
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
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
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)
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
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)
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