Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Aug 2010 11:00:58 +0200
From:      Charles Logan <cybercorecentre@gmail.com>
To:        Andre Oppermann <andre@freebsd.org>
Cc:        freebsd-net@freebsd.org, Igor Sysoev <is@rambler-co.ru>, Maxim Dounin <mdounin@mdounin.ru>
Subject:   Re: net.inet.tcp.slowstart_flightsize in 8-STABLE
Message-ID:  <AANLkTimreO=mAOzzULK7N-RK3mY_eGd8vs5yixnv1-Uw@mail.gmail.com>
In-Reply-To: <4C5BCE48.5070504@freebsd.org>
References:  <20100512124702.GJ2679@rambler-co.ru> <20100713140051.GV99657@mdounin.ru> <4C5BCE48.5070504@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Sorry but this is not a bug. You set bad sysctl flags.

We won't add it to our database and this is the final decison.

Regards,
Freebsd Team

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=3D2 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.*). =A0It 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 ha=
s
>> 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). =A0Snd_cwnd remains really small (1*MSS + 1) and th=
is
>> 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. =A0Correct 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 bac=
k
> to the stable branches. =A0Thanks for reporting the bug and a patch for i=
t.
>
> --
> Andre
>
>> # HG changeset patch
>> # User Maxim Dounin<mdounin@mdounin.ru>
>> # Date 1279028684 -14400
>> # Node ID 93699203f408fa8e22c971769bde9c26bd14d410
>> # Parent =A0e2cf8c51a6294a0d09d5628d96c6ab3ab626957e
>> Fix cwnd resetting problem introduced in r171639.
>>
>> Sc_rxmits counts timer engagements, not actual retransmits, and value 1
>> corresponds to no retransmits. =A0Revert 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
>>
>> =A0 =A0 =A0 =A0/*
>> =A0 =A0 =A0 =A0 * If the SYN,ACK was retransmitted, reset cwnd to 1 segm=
ent.
>> + =A0 =A0 =A0 =A0* Note that sc_rxmits counts timer engagements, not act=
ual
>> + =A0 =A0 =A0 =A0* retransmits.
>> =A0 =A0 =A0 =A0 */
>> - =A0 =A0 =A0 if (sc->sc_rxmits)
>> + =A0 =A0 =A0 if (sc->sc_rxmits> =A01)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tp->snd_cwnd =3D tp->t_maxseg;
>> =A0 =A0 =A0 =A0tcp_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"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTimreO=mAOzzULK7N-RK3mY_eGd8vs5yixnv1-Uw>