Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Oct 2016 23:28:10 -0700
From:      hiren panchasara <hiren@strugglingcoder.info>
To:        Randall Stewart <rrs@netflix.com>
Cc:        FreeBSD Transports <transport@FreeBSD.org>, lstewart@FreeBSD.org
Subject:   Re: Exiting from loss recovery
Message-ID:  <20161012062810.GO20670@strugglingcoder.info>
In-Reply-To: <1BC53E8D-08B9-4C4C-8E7B-6346CA83F66E@netflix.com>
References:  <20161007002211.GO50669@strugglingcoder.info> <1BC53E8D-08B9-4C4C-8E7B-6346CA83F66E@netflix.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--s9pXJW6w71JX4l3T
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Randall,

I am a bit confused. :-)
Can you please clarify what you mean here? Are you
talking about=20
cc_ack_received(tp, th, nsegs, CC_ACK); ?

Probably I am being a bit slow here but any explanation around how
stretch acks can be a problem here would be great. :-)

Thanks,
Hiren

On 10/10/16 at 09:56P, Randall Stewart wrote:
> Hiren:
>=20
> I have a bit of experience now with this code.
>=20
> If you exit recovery where Lawerence has marked, then when you go
> down a few lines and credit the ack to the cwnd it can be a very
> large ?stretch? ack.. making cwnd spike up incorrectly by standard
> new-reno terms?=20
>=20
> If you do move exit recover to there, you probably need to have a limit
> on how big the cwnd can move? i.e. some sort of segment limit.
>=20
> R
>=20
> > On Oct 6, 2016, at 8:22 PM, hiren panchasara <hiren@strugglingcoder.inf=
o> wrote:
> >=20
> > In tcp_do_segment():
> >=20
> >                /*
> >                 * If the congestion window was inflated to account
> >                 * for the other side's cached packets, retract it.
> >                 */
> >                if (IN_FASTRECOVERY(tp->t_flags)) {
> >                        if (SEQ_LT(th->th_ack, tp->snd_recover)) {
> >                                if (tp->t_flags & TF_SACK_PERMIT)
> >                                        tcp_sack_partialack(tp, th);=20
> >                                else
> >                                        tcp_newreno_partial_ack(tp, th);=
=20
> >                        } else=20
> >                                cc_post_recovery(tp, th);=20
> >                }
> >=20
> > Here, if we get an ack that marks recovery from loss i.e. >=3D
> > snd_recovery, we call cc_post_recovery() which in-turn calls CC specific
> > post_recovery routine. But we don't reset TF_FASTRECOVERY |
> > TF_CONGRECOVERY flags by calling EXIT_RECOVERY()=20
> >=20
> > Later in the code we do this check again in 'process_ACK:'
> >=20
> >                /* XXXLAS: Can this be moved up into cc_post_recovery? */
> >                if (IN_RECOVERY(tp->t_flags) &&
> >                    SEQ_GEQ(th->th_ack, tp->snd_recover)) {
> >                        EXIT_RECOVERY(tp->t_flags);
> >                }
> >=20
> > And as it can be seen, Lawrence marked it as something that could
> > possibly be done here and at the end of cc_post_recovery().=20
> >=20
> > So, should we do it? i.e call EXIT_RECOVERY() at the end of
> > cc_post_recovery() and remove the block from 'process_ACK' section? or
> > there is something subtle I am not seeing?
> >=20
> > Cheers,
> > Hiren
>=20
> --------
> Randall Stewart
> rrs@netflix.com
> 803-317-4952
>=20
>=20
>=20
>=20
>=20

--s9pXJW6w71JX4l3T
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQF8BAABCgBmBQJX/df2XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4
QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/lzssH/j6iDwkhb5ROOglhGY3leuKG
MlI2x12+aTvZ7I4fLHtrvpm1kPbxxXbtXEkueaYLW+J/Cq0GnmZg+cmUQg5gg73t
u8P3DvU1/xGQsLZW/ij3diyfiNDiLUt4SkudTiHUQI72pkn0eY2QUo6C+HcMcgBY
lg1MmgR4QKor68da1c+NFmZ7lfpX7NzpBV8pTEhxlWzU2zUKePYlvTbp75MPwtEI
2urB1tA2uEbPpflDLAU5hl3EpqaOkMbxRm3hscbkDnW1aKtUjPaapRFTkQFEjrjp
4asQeRmch0Rt/7QJhwPt3ffFUazc78QNZn+A2A6Obw9RM3CoJQDtLSkG7sFXRE4=
=R6XX
-----END PGP SIGNATURE-----

--s9pXJW6w71JX4l3T--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20161012062810.GO20670>