Re: [tcpm] Thank you for the QUIC session in tcpm

Praveen Balasubramanian <> Tue, 13 November 2018 19:57 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7DBDB130DE0 for <>; Tue, 13 Nov 2018 11:57:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -0.848
X-Spam-Status: No, score=-0.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URI_HEX=1.122, URI_NOVOWEL=0.5] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 4bMfgqDb2zXl for <>; Tue, 13 Nov 2018 11:57:32 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 0085C12D4EA for <>; Tue, 13 Nov 2018 11:57:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jLa0ICcraGZm7HQFggjxoQY++VrlyV02QHPTGfPAtv0=; b=D+cuT93tpGok4ECqQ/w5bpRje+MUugIzqCBtkm63+p4th+1Zd+UEHsLiud12/qw4EkhtTzuiai5ipep0xRlDslBljsyUm4F9ZVkGG1iON16YN6QIVkMsJVz9apS3rznBk0UStbbrPSVTYKkluPhgN/ISmUuZuVOJaEmYcrlTrjM=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.2; Tue, 13 Nov 2018 19:57:27 +0000
Received: from ([fe80::89e4:5371:41cc:d24a]) by ([fe80::89e4:5371:41cc:d24a%4]) with mapi id 15.20.1361.004; Tue, 13 Nov 2018 19:57:27 +0000
From: Praveen Balasubramanian <>
To: Jana Iyengar <>
CC: Yuchung Cheng <>, Bob Briscoe <>, Ian Swett <>, "" <>
Thread-Topic: [tcpm] Thank you for the QUIC session in tcpm
Date: Tue, 13 Nov 2018 19:57:26 +0000
Message-ID: <>
References: <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: [2001:4898:80e8:f:c1d5:5925:c0a1:c266]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; MW2PR2101MB1019; 6:ELDxvI+bpqhclgMlOnFqbuwFh1H3pRTlUwVyowWIT0IKM9HBTWiWJzH194VdjJieN5RLZgEsDbDzIg0o0lQrUGcNO4iINnt+wLLTeilAmSf2bJNsB1/gzJLCWCcNXmB4CUh8xqi8fWVpgtaLN/a/v5pjGf5XDY1ulXyjPZrVAoPFOse3/dQgK8a1xoNvMtYCMrC9kxW/8V7L4nQLUwxe1X1Lqgq/1liLer1LRUK7XSuS2bzRGKvpmgp2u8B5Shvd7Rzecml+3KTH933l6bhGyM2dWnGJU2jfwA6NTfpcZTw9cXEBVjNr/ecP8t+UyjB269QEqbrqO109NSzq8TE9AQpPEFnBTtQWuzyr0JtiUElCaBU61ahaGR7cahBQfuukNbT9BV8DsodXJ9jtEYbSUHlJFfL1/elP0AWPoV5/MqJNkJGm1PsgqIQr3VziDcFcRxE8/DxqlBGVD6hRSuOysA==; 5:0fA2R5Rt//eCLycLHOovrpccKWmUjD6rMFyC087r4XC7Xr2QwJe0LSrtHvcmpAGoLjH7ZxvcOixujVisl0kOZVJT8Eap3jH7vde/7cp09tvLmnLqEpTg8B7b/jOwPDKBpCDdjL9fLJNWaKtjMf2cOR0ChslMekC8AQQ38/CVGRc=; 7:7hgbKkgz8RsL/JJBBjH7yOqzsNvSuzU7S+1rLsDlgB7Hfl0djm9kacSd9WRsFRSqjDLbOIj3JVX9tqwRjv4L3604RhA4h/P8uUnyfeOf8aeyC65kevOZViBesCGI0txObp2pb8vgz/IqZPoSzwh7Vw==
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: ec9a8626-b715-4ab5-29a4-08d649a23caf
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390060)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:MW2PR2101MB1019;
x-ms-traffictypediagnostic: MW2PR2101MB1019:
x-ms-exchange-purlcount: 18
authentication-results: spf=none (sender IP is );
x-microsoft-antispam-prvs: <>
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(8220035)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231409)(944501410)(4982022)(2018427008)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:MW2PR2101MB1019; BCL:0; PCL:0; RULEID:; SRVR:MW2PR2101MB1019;
x-forefront-prvs: 085551F5A8
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(346002)(376002)(136003)(396003)(39860400002)(189003)(199004)(13464003)(55016002)(6306002)(6436002)(9686003)(256004)(54896002)(86612001)(236005)(14454004)(102836004)(71200400001)(86362001)(229853002)(71190400001)(81156014)(14444005)(8676002)(81166006)(97736004)(2900100001)(74316002)(8936002)(5660300001)(478600001)(966005)(53936002)(68736007)(6246003)(6916009)(186003)(46003)(606006)(7736002)(39060400002)(105586002)(486006)(53546011)(6506007)(11346002)(476003)(4326008)(10090500001)(446003)(76176011)(2906002)(22452003)(316002)(106356001)(25786009)(54906003)(345774005)(6116002)(33656002)(93886005)(99286004)(8990500004)(7696005)(10290500003)(790700001); DIR:OUT; SFP:1102; SCL:1; SRVR:MW2PR2101MB1019;; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None ( does not designate permitted sender hosts)
x-microsoft-antispam-message-info: mdb1I+Ovycku8jrr+SuT5Z5v/wccLSGJ1GqJHMU5rOyWSRzUD+jERzhUttyH/IXdwQc73oUfePTfOhsdqDx7UB/ItIhSABiWBvlEoHzE5ElBidf4RW61Cl0mSak1h39t+TCw+tKyslBTMjk+Qck0qZKEJ0Jzov4mWRfb0phNm8IlFyGYgxgSCtHT9QcNPabnwcaVuQtELw5Qo5fLr6f6oj+8ANvJ5N1f/gVmUsz3jrt3xqkUTrZJwnUZ+LItT9SFcawVsHhfDWtxczxkLoCv+10YrAURQkW3uIrXF0Cw1jMLxOQcmCp4j5Fr7XzCngGZ0Er+QTrmkHf91IyL/hvbVUy7GINEWngVlIdQJ4fNJRY=
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_MW2PR2101MB1049E1E97815AA80CDEEFF88B6C20MW2PR2101MB1049_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: ec9a8626-b715-4ab5-29a4-08d649a23caf
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2018 19:57:27.0235 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR2101MB1019
Archived-At: <>
Subject: Re: [tcpm] Thank you for the QUIC session in tcpm
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 13 Nov 2018 19:57:36 -0000

That’s all great assuming that RTT increase was the reason for the prolonged silence. It should be possible to measure both incidences of spurious RTOs and measured RTT increases post spurious RTOs, and that should tell us which side we should err on.

For safety reasons, should we put in the text for reducing the cwnd in absence of pacing to keep consistency with TCP behavior, at least until data shows otherwise? I worry that most app developers without transport background will not have the expertise to realize the issues caused by burst after idle. The other option is to make pacing mandatory in the draft.

From: Jana Iyengar <>
Sent: Monday, November 12, 2018 11:13 PM
To: Praveen Balasubramanian <>
Cc: Yuchung Cheng <>om>; Bob Briscoe <>et>; Ian Swett <>om>;
Subject: Re: [tcpm] Thank you for the QUIC session in tcpm

On what to do with an unconfirmed RTO: So, my thought is that if you've hit an RTO, it's been a REALLY LONG time, because we've gone through TLP(s) by now and failed. (This might change if we decide to combine TLP and RTO, but that's for a later discussion.)  It's not fully clear to me what the right responses here are, but some thoughts follow.

1/ If this was an actual increase in the RTT, it would naturally roll into the SRTT and RTTVAR. We might even consider resetting the RTT estimator, but we already know that the EWMA estimator we love takes just a while to catch on, and I don't want to litigate changing the estimator fundamentally here.

2/ Linux fq uses min_rtt IIRC, which shouldn't change as a result of an increase in RTT. This *might* be a good time to kick the min_rtt estimator to pace more conservatively.

3/ I'm not convinced that it makes sense to change the cwnd. It seems clear that an RTT increase with the same BW should increase the cwnd if anything, so it seems reasonable to continue with the same cwnd at least. If the BW changed, hopefully that'll be reflected in a congestion signal, but in the absence of a congestion signal, I think we should keep the cwnd as is.

On Tue, Nov 13, 2018 at 12:35 AM Praveen Balasubramanian <<>> wrote:
Yuchung this might be worth experimenting with and getting more data on. Maybe there should be some reaction to an unconfirmed RTO even if it is not reduction all the way to LW? I like Jana's suggestion that the implementation SHOULD drop the cwnd even for unconfirmed RTO if not pacing.

I checked the latest draft and pacing is a RECOMMENDED. I am noticing that transport algorithms in Linux and in QUIC are evolving assuming pacing which is a function usually implemented and configured outside of the transport. So the transport is potentially making an assumption which may result in safety issues. For example BBR congestion control may not work very well if pacing was disabled or misconfigured? I don’t know of any robust solution to this other than build pacing into the transport itself. Pacing is also very challenging for low latency flows because of lack of support for fine grained timers.

-----Original Message-----
From: Yuchung Cheng <<>>
Sent: Monday, November 12, 2018 8:37 AM
To: Jana Iyengar <<>>
Cc: Praveen Balasubramanian <<>>; Bob Briscoe <<>>; Ian Swett <<>>;<> Extensions <<>>
Subject: Re: [tcpm] Thank you for the QUIC session in tcpm

On Mon, Nov 12, 2018 at 4:13 AM, Jana Iyengar <<>> wrote:
> Praveen,
> The point you're raising -- that we've lost the ack clock after an RTO
> -- is a reasonable point. My argument is that with pacing, cwnd
> reduction is unwarranted because in the extreme case, this collapses
> to restart after idle, where sending at cwnd with pacing is reasonable
I agree w/ Jana as well - the most generic way to treat burst due to prior_inflight << cwnd is pacing. With QUIC's approach, when RTO fires, cwnd remains unchanged until the ACK of the first retransmission (i.e. a probe packet) comes back. Therefore the delay is one RTT and the potential damage is an additional cwnd-worth of burst.

Yes the worst case is more aggressive, and it can be too much for DC incast case if pacing isn't supported - one idea is to selective enable that if RTT variance is very large vs RTT.

> The draft does not say that a sender should reduce the cwnd if it is
> not pacing, which we should add. Does that make sense?
> - jana
> On Fri, Nov 9, 2018 at 8:34 AM Praveen Balasubramanian
> <<>> wrote:
>> Yuchung I brought that difference up in an email to the quic wg
>> earlier this week.
>> In app send limited case, inflight could be very small compared to cwnd.
>> So in QUIC there is potential to send a burst out after a long idle
>> period (with outstanding data) where TCP wouldn't. The draft claims
>> this is okay to do because RTO may have been a result of RTT increase
>> instead of loss. Is there data to suggest on which side we should
>> err? i.e. data on what are the chances that an RTO is due to an RTT increase versus loss.
>> Do you see any safety concerns with delayed reduction of cwnd in case
>> where the RTO is not spurious?
>> -----Original Message-----
>> From: tcpm <<>> On Behalf Of Yuchung Cheng
>> Sent: Thursday, November 8, 2018 4:38 PM
>> To: Bob Briscoe <<>>
>> Cc: Ian Swett <<>>; tcpm IETF list <<>>
>> Subject: Re: [tcpm] Thank you for the QUIC session in tcpm
>> On Thu, Nov 8, 2018 at 3:14 AM, Bob Briscoe <<>> wrote:
>> >
>> > I just wanted to thank Jana for explaining QUIC loss recovery to us
>> > (and QUIC CC as far as it goes).
>> > And thank you Jana, Ian, the chairs of both WGs (and anyone else
>> > involved) for setting it up.
>> >
>> > If one is not full-time on QUIC, it's very difficult to keep up
>> > with all the changes. But now we have a checkpoint to start from, I
>> > feel I will not be wasting people's time if I try to get involved -
>> > at least I only might say something un-QUIC occasionally, rather
>> > than nearly always. This has allowed people who understand how TCP
>> > cold be improved to help with QUIC, when working on QUIC isn't their day job.
>> >
>> > Again, Thank you.
>> I like particularly that QUIC only reduces cwnd to 1 after the loss
>> is confirmed not upon RTO fires. It should be very feasible for TCP
>> (at least
>> Linux) w/ TCP timestamps. It'll save a lot of spurious cwnd reductions!
>> Also IMHO TCP w/ quality timestamps are almost as good as QUIC pkt-ids.
>> Google internally uses usec. We wish we could upstream it but RFC
>> needs to be updated.
>> >
>> >
>> > Bob
>> >
>> >
>> > --
>> > ________________________________________________________________
>> > Bob Briscoe
>> >
>> ><>%2F&amp;<>%7C3c4d22866
>> > 8444691c16808d648bd2ce9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%
>> > 7C636776374678321324&amp;sdata=T%2BWTEc42VC%2Bz%2BsmMFyjlm37hmAwfee
>> > buPcuMYlVhgDY%3D&amp;reserved=0
>> >
>> > _______________________________________________
>> > tcpm mailing list
>> ><>
>> >
>> > w.i
>> ><>%2Fmailman%2Flistinfo%2Ftcpm&amp;data=02%7C01%7Cpravb%40micr
>> > oso
>> ><>%7Cf0911eeb74d7446f424508d645dbb779%7C72f988bf86f141af91ab2d7
>> > cd0
>> > 11db47%7C1%7C0%7C636773207316711149&amp;sdata=K667a3IQG4rarQ%2FOfAl
>> > yhK
>> > QQ05Cea421rgb64DlEMvs%3D&amp;reserved=0
>> _______________________________________________
>> tcpm mailing list
>> cd011db47%7C1%7C0%7C636776374678321324&amp;sdata=33WxKh5c6qL4ln5jerpx
>> Rhytfrj1iTK284pEqv5fWKY%3D&amp;reserved=0
>> _______________________________________________
>> tcpm mailing list
>> cd011db47%7C1%7C0%7C636776374678321324&amp;sdata=33WxKh5c6qL4ln5jerpx
>> Rhytfrj1iTK284pEqv5fWKY%3D&amp;reserved=0