Date: Fri, 06 Aug 2010 11:47:36 +0200 From: Andre Oppermann <andre@freebsd.org> To: Charles Logan <cybercorecentre@gmail.com> Cc: freebsd-net@freebsd.org Subject: Re: net.inet.tcp.slowstart_flightsize in 8-STABLE Message-ID: <4C5BDA38.8020408@freebsd.org> In-Reply-To: <AANLkTimreO=mAOzzULK7N-RK3mY_eGd8vs5yixnv1-Uw@mail.gmail.com> References: <20100512124702.GJ2679@rambler-co.ru> <20100713140051.GV99657@mdounin.ru> <4C5BCE48.5070504@freebsd.org> <AANLkTimreO=mAOzzULK7N-RK3mY_eGd8vs5yixnv1-Uw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 06.08.2010 11:00, Charles Logan wrote: > Sorry but this is not a bug. You set bad sysctl flags. Care to explain in more detail? For example which sysctl flag was set wrong? > We won't add it to our database and this is the final decison. Which database? > Regards, > Freebsd Team Which team? What is your @FreeBSD.ORG address? -- Andre > On Fri, Aug 6, 2010 at 10:56 AM, Andre Oppermann<andre@freebsd.org> wrote: >> On 13.07.2010 16:01, Maxim Dounin wrote: >>> >>> Hello! >>> >>> On Wed, May 12, 2010 at 04:47:02PM +0400, Igor Sysoev wrote: >>> >>>> It seems that net.inet.tcp.slowstart_flightsize does not work in >>>> 8-STABLE. >>>> For a long time I used slowstart_flightsize=2 on FreeBSD 4, 6, and 7 >>>> hosts. >>>> However, FreeBSD-8 always starts with the single packet. >>>> I saw this on different versions of 8-STABLE since 8 Oct 2009 till >>>> 04 Apr 2010. >>> >>> Finally I had some time to look into it (sorry for long delay). >>> >>> 1. Slow start isn't used on recent FreeBSD versions for initial snd_cwnd >>> calculations as long as you have rfc3390 support switched on (default >>> since >>> Jan 06 23:29:46 2004, at least in 7.*). It effectively sets initial >>> snd_cwnd to 3*MSS on common networks and shouldn't cause any problems. >>> Slowstart_flightsize only affects connection restarts. >>> >>> 2. Due to bug in syncache code (patch below) all accepted connections has >>> their snd_cwnd reset to 1*MSS (since r171639, 7.0+ AFAIR). >>> >>> 3. Support for rfc3465 introduced in r187289 uncovered (2) as >>> ACK to SYN/ACK no longer causes snd_cwnd increase by MSS (actually, this >>> increase shouldn't happen as it's explicitly forbidden by rfc 3390, but >>> it's another issue). Snd_cwnd remains really small (1*MSS + 1) and this >>> causes really bad interaction with delayed acks on other side. >>> >>> As a workaround to delayed acks interaction problems you may disable >>> rfc3465 by setting net.inet.tcp.rfc3465 to 0. Correct fix would be to >>> apply >>> the patch below. >>> >>> To Andre Oppermann: could you please take a look at the patch and >>> commit it if found appropriate? >> >> I've committed your fix with svn r210666. In a few days I will MFC it back >> to the stable branches. Thanks for reporting the bug and a patch for it. >> >> -- >> Andre >> >>> # HG changeset patch >>> # User Maxim Dounin<mdounin@mdounin.ru> >>> # Date 1279028684 -14400 >>> # Node ID 93699203f408fa8e22c971769bde9c26bd14d410 >>> # Parent e2cf8c51a6294a0d09d5628d96c6ab3ab626957e >>> Fix cwnd resetting problem introduced in r171639. >>> >>> Sc_rxmits counts timer engagements, not actual retransmits, and value 1 >>> corresponds to no retransmits. Revert check to correct one as present >>> before r171639. >>> >>> diff --git a/netinet/tcp_syncache.c b/netinet/tcp_syncache.c >>> --- a/netinet/tcp_syncache.c >>> +++ b/netinet/tcp_syncache.c >>> @@ -804,8 +804,10 @@ syncache_socket(struct syncache *sc, str >>> >>> /* >>> * If the SYN,ACK was retransmitted, reset cwnd to 1 segment. >>> + * Note that sc_rxmits counts timer engagements, not actual >>> + * retransmits. >>> */ >>> - if (sc->sc_rxmits) >>> + if (sc->sc_rxmits> 1) >>> tp->snd_cwnd = tp->t_maxseg; >>> tcp_timer_activate(tp, TT_KEEP, tcp_keepinit); >>> >>> >>> Maxim Dounin >>> _______________________________________________ >>> freebsd-net@freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/freebsd-net >>> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >>> >>> >> >> _______________________________________________ >> freebsd-net@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >> > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C5BDA38.8020408>