Re: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Ingemar Johansson S <ingemar.s.johansson@ericsson.com> Fri, 22 December 2017 13:20 UTC

Return-Path: <ingemar.s.johansson@ericsson.com>
X-Original-To: ecn-in-quic@ietfa.amsl.com
Delivered-To: ecn-in-quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C42FE12E858 for <ecn-in-quic@ietfa.amsl.com>; Fri, 22 Dec 2017 05:20:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.21
X-Spam-Level:
X-Spam-Status: No, score=-4.21 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ericsson.onmicrosoft.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sEy_ESdUK0aF for <ecn-in-quic@ietfa.amsl.com>; Fri, 22 Dec 2017 05:20:18 -0800 (PST)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B5D612E855 for <ecn-in-quic@ietf.org>; Fri, 22 Dec 2017 05:20:17 -0800 (PST)
X-AuditID: c1b4fb30-d31ff70000006bc7-42-5a3d068fb7fd
Received: from ESESSHC001.ericsson.se (Unknown_Domain [153.88.183.21]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 6A.C9.27591.F860D3A5; Fri, 22 Dec 2017 14:20:16 +0100 (CET)
Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.21) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 22 Dec 2017 14:20:15 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.onmicrosoft.com; s=selector1-ericsson-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=yWfdSoesQeO9/8YGdHhvFKEXFL0RW25t5sGiKJQrT6A=; b=ZBRcIeboYLi+RuEENU3zhS0j8wF6wvPzIo9o9Oiu1e0MJsHjbE4hTU9Gw+TzJn2hdaTXWdvOd9M6OdweQKmoIOwkhEcmkBv2LezCRo9ZZ0SRFBfb5XQA2brUKGXRRFlguM2AMs83VmAI3JPzMm4qiTBMKfEenVDbOId5jepjm4s=
Received: from HE1PR0702MB3625.eurprd07.prod.outlook.com (52.133.6.23) by HE1PR0702MB3769.eurprd07.prod.outlook.com (52.133.7.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.345.10; Fri, 22 Dec 2017 13:20:13 +0000
Received: from HE1PR0702MB3625.eurprd07.prod.outlook.com ([fe80::e1fc:df4e:7d19:561a]) by HE1PR0702MB3625.eurprd07.prod.outlook.com ([fe80::e1fc:df4e:7d19:561a%13]) with mapi id 15.20.0366.003; Fri, 22 Dec 2017 13:20:13 +0000
From: Ingemar Johansson S <ingemar.s.johansson@ericsson.com>
To: "De Schepper, Koen (Nokia - BE/Antwerp)" <koen.de_schepper@nokia-bell-labs.com>, Magnus Westerlund <magnus.westerlund@ericsson.com>, "ecn-in-quic@ietf.org" <ecn-in-quic@ietf.org>
CC: "Jana Iyengar (jri@google.com)" <jri@google.com>, Ian Swett <ianswett@google.com>
Thread-Topic: [Ecn-in-quic] ECN in QUIC, quick review input wanted
Thread-Index: AdN3PPa/yvr2NyHsRX2EXd9I8ZoH0wAzji0AAAhOMvAAUiU3UAAT+y1wAB33OBAAA7vn0AAFCegQADHKq9A=
Date: Fri, 22 Dec 2017 13:20:13 +0000
Message-ID: <HE1PR0702MB3625591F0FAE61175ED1A9E3C2020@HE1PR0702MB3625.eurprd07.prod.outlook.com>
References: <DB4PR07MB348DBDA0FC9745E39C15435C2090@DB4PR07MB348.eurprd07.prod.outlook.com> <a4cac890-941c-571c-7317-eafdce3bdf68@ericsson.com> <DB4PR07MB348EF452B60915233547546C20E0@DB4PR07MB348.eurprd07.prod.outlook.com> <VI1PR0701MB21261FC30B4A57CC8082B05EB90C0@VI1PR0701MB2126.eurprd07.prod.outlook.com> <HE1PR0702MB3625EF3E4A0E94181F5C001CC20C0@HE1PR0702MB3625.eurprd07.prod.outlook.com> <AM4PR0701MB2115A9F200AD1D198E6D826BB90D0@AM4PR0701MB2115.eurprd07.prod.outlook.com> <HE1PR0702MB36253A5E21764DE21D169F0BC20D0@HE1PR0702MB3625.eurprd07.prod.outlook.com> <AM4PR0701MB2115D739744729D230FB1451B90D0@AM4PR0701MB2115.eurprd07.prod.outlook.com>
In-Reply-To: <AM4PR0701MB2115D739744729D230FB1451B90D0@AM4PR0701MB2115.eurprd07.prod.outlook.com>
Accept-Language: sv-SE, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [192.176.1.92]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; HE1PR0702MB3769; 6:RtELHnv13dK629k5qaDcbtXjcxNI2iwXfaXl01j4aw0yvneBqYhMGgKlY2nI1RCxIraPg+4SEnrv1Ior9boQL55CFXJTY17VpXFcYgEAayKH+87vM4qQsBY8JcJd6pySgZ+3Ci/ATXDgWlAaWsX0rXupvODLa3wq0s5Im2b0wncEpPGEk3nXVNvItgqJlM7rVK6gS+fUFswrLCCs2g+/ldOL4DCHQPzXrVhAsUJgE2ZTabgwYmOIB3l+yj7VY+IuDuKOyV3lzuELIryKv+lqUePQQKFMtular0vpUk+bEScQebuC2MaLP8q6HqDjnBhjW71ezCIbvRqkFJoyzEDi/tiyFAFRbV+lHtmS2JYTXOE=; 5:NzhnatAez/TZN9BTwwthEkz3j+mGKCTSBt5w1JOVQqAI6iwbW3EySMc/S+wmc9aWIVvjoGCPX+rwmiJsWP2N5SRj1QtD13XO+ioNvgzqcUgOsFYS8QXIfbnsX4in+XQsi+G8QjKjDNDJ8P41sK8G4mKd4Dp728RE86MAh5QSucE=; 24:oZ6gDgEBWTTdkaPZBUXQ3AKpXuBRYmXlFKP81HrN8XR3gM/HrBJRN8WMs/CyueNE+n9IQ/tu3XrvArYHhWxAHyDthH7Ii6IDZjr72nO6b3Q=; 7:OvldwJ37sO+5iIegkeADULhghUN97Qg9RPR/NAIvmi++WLBXCE0lUpmw1LULlyZ3twwAczFi5Zskoue0Seq7m83mh/4ctvcWIZyhcAD6XFYQajVCxw+TRBugjNIeWv3MzqXjsh22JxKNiefBaLKpjo0wszU3euKng09DrIvQPL4I5L4Q0Knc/vIYxgsVmt48xEcWYJ7iZ8AwOKG1d+TAPNODq8SZjdr1vLirYH3K+M0tQgKlR0voIvCcwHArqaMr
x-ms-exchange-antispam-srfa-diagnostics: SSOS;
x-ms-office365-filtering-correlation-id: 00e86f39-3b26-4d2c-6d92-08d5493ebc3d
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020020)(4534040)(4602075)(4627136)(201703031133081)(201702281549075)(5600026)(4604075)(3008031)(2017052603307)(7153060); SRVR:HE1PR0702MB3769;
x-ms-traffictypediagnostic: HE1PR0702MB3769:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=ingemar.s.johansson@ericsson.com;
x-microsoft-antispam-prvs: <HE1PR0702MB3769F116A1049474E99D82CFC2020@HE1PR0702MB3769.eurprd07.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(37575265505322)(166708455590820)(211936372134217)(202460600054446)(153496737603132)(21748063052155)(211171220733660)(17755550239193);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231023)(920507027)(944501043)(3002001)(10201501046)(6041268)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0702MB3769; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0702MB3769;
x-forefront-prvs: 05299D545B
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(39380400002)(39860400002)(366004)(346002)(396003)(377424004)(199004)(189003)(76104003)(2501003)(4326008)(97736004)(105586002)(478600001)(5250100002)(7736002)(33656002)(966005)(9326002)(14454004)(106356001)(8936002)(561944003)(5660300001)(74316002)(7696005)(34040400001)(230783001)(81166006)(81156014)(4001150100001)(76176011)(25786009)(2906002)(2950100002)(99286004)(3846002)(790700001)(3280700002)(3660700001)(6116002)(8676002)(68736007)(53946003)(6436002)(229853002)(86362001)(6506007)(93886005)(2900100001)(9686003)(6246003)(236005)(53546011)(54906003)(606006)(59450400001)(54896002)(6306002)(110136005)(55016002)(66066001)(316002)(53936002)(102836004)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0702MB3769; H:HE1PR0702MB3625.eurprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en;
received-spf: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts)
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_HE1PR0702MB3625591F0FAE61175ED1A9E3C2020HE1PR0702MB3625_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 00e86f39-3b26-4d2c-6d92-08d5493ebc3d
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Dec 2017 13:20:13.6329 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0702MB3769
X-OriginatorOrg: ericsson.com
X-Brightmail-Tracker: H4sIAAAAAAAAA02SX0hTcRTH/e3eu11Xi9tUdjANGRZibZlEzNBI6UEfrB6yZC869foHdbNd XRo+TA1MTdKhOKX8O8WJf0JTt6mgc5YGoVgPGWih5phlOSFFqtXmXdDb55zzPed7zo8fiQkt RCCZoyyk1UpFnpjLx5uTxwMkddwYeYS54YSsrLKPJztcMxMy3VwHLnu53825hse3DxfFGwyH nPjy/U7uLUzOj86g83I0tPrC1VR+9m5rSIFLTxRP1elxLXo3jVcjXxKoS1C1tISqEZ8UUrMI Nl5PYmwwj+ChcZTnCXCqFoPnRr1X1sQBw5Ner8yOYPqVjecZxqWiwWg9QB72pybd/W/ueBij 7oLR+ZbwsB8VC3N6J8Fq4qD765hbT7o5DXRbpZ40Tp2BrX4n5mEBlQqdptajkUKqgYDZ+gAP +1IKcD19dmSLqGD4eLCGs1Yi+LDZxmFvo8AwuYixHACODRfBcgj8Wl7nshwMy201R4cBZePB WNUIjy1IYbR+B7GcCHutBq9oBoH5cZu3cB4qRwY47BbpsLdS63VQQe/2qrdhCEHLyjbOBhYM Jv5886qCwO6wcOuQpOW/1VlWwSfzZ7zl6AlOwkLzJs7mpfC+sYHL8jno6fiCsSwBvcuK/59v R7w+FMDQTFp+VmSklFbnpDOMSilV0oXDyP2jZl78jDAhhz3WiigSiY8LfIgYuZBQaJiSfCsC EhP7CzTz0XKhIENR8oBWq1LURXk0Y0WnSFwsEiwkCORCKktRSOfSdAGt/lflkL6BWtSiHYqP sWRqSsddGbJ7umRJUuN6ZkKzqNx0pSLsR2FZd+j9vkqdbcoxsFP8G1nCqmXXF61q/lLQTFSi rSmwNWhwa1WzfKyLGDzLC47b7fG1fndeXnjEdCX3m3q7fHSim8bQ8NVRraymIiz39uxpjDex mdLpt56kj9qJsLfdEONMtuJiOKZmFH8BOjsDKk0DAAA=
Archived-At: <https://mailarchive.ietf.org/arch/msg/ecn-in-quic/TBbFL0g7iD1sMdI-pzQlGgOx808>
Subject: Re: [Ecn-in-quic] ECN in QUIC, quick review input wanted
X-BeenThere: ecn-in-quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "ECN in the QUIC protocol discussion list." <ecn-in-quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ecn-in-quic>, <mailto:ecn-in-quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ecn-in-quic/>
List-Post: <mailto:ecn-in-quic@ietf.org>
List-Help: <mailto:ecn-in-quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ecn-in-quic>, <mailto:ecn-in-quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Dec 2017 13:20:25 -0000

Hi
The wiki is now updated (and simplified, based on the last few days discussion)
https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC

To all of you who will take a few days off.. have nice holiday.. and to all of you who will be working.. have a good few days anyway!

/Ingemar

From: Ecn-in-quic [mailto:ecn-in-quic-bounces@ietf.org] On Behalf Of De Schepper, Koen (Nokia - BE/Antwerp)
Sent: den 21 december 2017 14:34
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.com>; Magnus Westerlund <magnus.westerlund@ericsson.com>; ecn-in-quic@ietf.org
Cc: Jana Iyengar (jri@google.com) <jri@google.com>; Ian Swett <ianswett@google.com>
Subject: Re: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi Ingemar,

In that case, and nobody else objects we better focus our description to the running number (not referring to deltas anymore). We have the arguments as below if someone re-proposes the deltas. It is true that it becomes very complex to try to cope with all the side effects of deltas.

Koen.

From: Ingemar Johansson S [mailto:ingemar.s.johansson@ericsson.com]
Sent: Thursday, December 21, 2017 12:13 PM
To: De Schepper, Koen (Nokia - BE/Antwerp) <koen.de_schepper@nokia-bell-labs.com<mailto:koen.de_schepper@nokia-bell-labs.com>>; Magnus Westerlund <magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>; Ingemar Johansson S <ingemar.s.johansson@ericsson.com<mailto:ingemar.s.johansson@ericsson.com>>
Subject: RE: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi Koen

You have a very strong point, and even though one can possibly sort out ambiguities in one way or the other, I begin to wonder if it is worth the extra pain to potentially save a few bytes with the delta encoding alternative.

And I believe that we can compress also the running counters quite well. So I am starting to think that running counters is the best alternative.

PS: I removed the alternative (bytes) options from the Wiki. We can always put it back if there is somehow found out that we really need byte counters.

/Ingemar

From: De Schepper, Koen (Nokia - BE/Antwerp) [mailto:koen.de_schepper@nokia-bell-labs.com]
Sent: den 21 december 2017 11:01
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.com<mailto:ingemar.s.johansson@ericsson.com>>; Magnus Westerlund <magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>
Subject: RE: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi Ingemar,

Related to the duplicates, I'm not referring to duplicate packets (with equal sequence numbers), but duplicate recomposed frames due to assumed lost previous packets. If you do not get an ACK for a previously sent packet, at a certain time you need to decide to retransmit the still relevant contents of that packet in a newly recomposed packet with a new sequence number. I assume you need to still retransmit all unACKed sequence ranges, but usually this is covered by other overlapping ACK ranges in ACK frames in former and later packets which got ACKed. For delta counters, there is no overlap possible, so every delta should carefully be sent only once. The full running counter "does" have an overlap behavior, because a newer value overwrites an older one (so sequence numbers in packets determines the "newest" packet). So counters could even go down (not that we need this).

So the problem case is:
Counter X in receiver is increased by 10 (from 54 to 64).
A packet with sequence number 104 with an ACK frame is sent back to the sender with a delta of 10 for X.
This packet is delayed too long and assumed lost.
The receiver creates a new packet with sequence number 117 with a new ACK frame with again the same delta 10 for X (as X in sender is still assumed 54 and in receiver still 64). He probably will consume the info in 104 and forgets it?
The sender is receiving the packet with sequence number 104 so increments the counter X with 10 -> 64.
The sender is receiving the packet with sequence number 117 so increments the counter X with 10 -> 74.

The receiver is getting ACK frames for his packets 104 and 117 and can see the problem only if he kept the info in 104.
As we cannot send negative deltas the receiver can use this info to not sent further deltas until his counter X goes also above 74.

For congestion control specifically it is not always needed to retransmit deltas I think. As it is a closed loop, the network will further mark packets as long as the end-systems don't respond, so these counters will anyway increase if needed. For high marking probabilities and a high loss rate in the back path this might cause slow response problems though. For classic CC's this might also mean that a loss burst which is normally within one RTT might be spread over several RTTs. Also for more deterministic protocols like our ECN capability check which should detect a single marked packet, this might be more problematic (not retransmitting may cause the sender to conclude that the path does not support ECN; sending also a counter for 00 packets might solve this; detecting a missing ACK packet might delay the decision for one more RTT, ...).

Am I correct that this is the best we can get from the QUIC packet sequence numbers, or are there other mechanisms that I'm missing and resolve this issue?

Is this problematic enough to go for running counters instead of deltas, or can we live with these sporadic imperfections?

What do you think? I'm still open for both approaches, as long as we all are aware of this issue (if it is one).

Koen.

From: Ingemar Johansson S [mailto:ingemar.s.johansson@ericsson.com]
Sent: Wednesday, December 20, 2017 8:26 PM
To: De Schepper, Koen (Nokia - BE/Antwerp) <koen.de_schepper@nokia-bell-labs.com<mailto:koen.de_schepper@nokia-bell-labs.com>>; Magnus Westerlund <magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>
Subject: RE: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi
A few comments inline, marked [IJ]

/Ingemar

From: De Schepper, Koen (Nokia - BE/Antwerp) [mailto:koen.de_schepper@nokia-bell-labs.com]
Sent: den 20 december 2017 16:02
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.com<mailto:ingemar.s.johansson@ericsson.com>>; Magnus Westerlund <magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>
Subject: RE: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi Ingemar, all,

Some comments from my side:

  *   Maybe a bit early to start discussing doc structure, but I would split the structure in receiver and sender functionality. That means we first describe (after an introduction) the ECN-echo/feedback wire-protocol functionality from the receiver. It is the only generic functionality that is required from the receiver. The rest is sender behavior. This draft is making sure that deployed QUIC stacks have this ECN-echo capability build in. For the sender we describe one mandatory sender behavior: ECN-Capability-Check, and one optional: ECN-based congestion control functionality (so below, also +1 from my side).
[IJ] Yes, this makes sense



  *   In ECN Capability check section: "[ED note, should we say 'frame'?]"
No, as we want to couple ECN marking to packets. I assume the max packet sequence number in the ACK is the right total-packet counter (minus sender skipped sequence ranges, etc...).
[IJ] Yes, it should be packets, not frames



  *   The ECN-Capability check figure better shows "ACK + ECN-counters" instead of "ACK + ECN field" Boxes A and B could then show the functions inside of them (B contains [ECN-feedback] and A [ECN capability check]). To avoid confusion, I would also put: "1st packet (ECT set)".
[IJ] Yes, ACK + ECN counters is a better term, the term field was a more generic one from the days when we discussed the use of per packet indication of the ECN bits.



  *   The code example is using the TOS byte. We should avoid the same problem as with DiffServ including the ECN bits, ECN should not include/bleach the DiffServ bits. So better explicitly:

int iptos = ... (0 or optionally initialized with diffserv value, not using the 2 least significant bits)

int ect = ... (2 bit value between 0 and 3)

iptos = (iptos & 0xFC) | (ect & 0x03);

res = setsockopt(fd_out_rtp, IPPROTO_IP, IP_TOS,  &iptos, sizeof(iptos));

Maybe better to also copy the relevant ecn-getter lines in the draft:

ret = getsockopt(sock_fd, IPPROTO_IP, IP_TOS, (void*)&iptos, &optlen);

if(ret == -1) {

// getsockopt/socket failure, clean-up socket state (and/or exit);

...

}

ecn = iptos & 0x03;

diffserv = iptos & 0xFC; // if needed

Also, I'm not sure if we don't need to use a 1 byte type (unsigned char) instead of int. Using int might have a side effect that it might use the 8 MSBits (first byte) on a big indean platform, with all zeroes as a consequence. We better give a CPU-independent, well-tested and bug-free example.

[IJ] You are right, the example is a bit sloppy, should be corrected, even though this part will perhaps not end up in the transport draft, it is nonetheless good to get it right.



  *   Do we still need to describe the 3 alternatives? If we agree, I think it is better to clean-up and don't offer alternatives, to avoid repeating discussions afterwards? If no one objects, we go for the packet counters only?
[IJ] I believe that it is OK to remove the other byte related alternatives. I have so far not heard any arguments against packet counters.


  *   I prefer also having ACK and ECN in the same frame, as they need to be handled at the same level, are both depending on each other and to avoid an extra frame-type header byte. Additionally, section 8.16.2 would be too complex too, otherwise. ECN-frames would have to be considered as equal to ACK-frames, and the spec should say that "Implementations MUST NOT generate packets that only contain ACK and/or ECN frames in response to packets which only contain ACK and/or ECN frames" ... Actually, everywhere in the spec where ACK-frame is mentioned, we would have to extent what is needed for ECN frames.
[IJ] I too believe more in an ACK + ECN counter frame



  *   I am also concerned that delta-based values could cause ambiguous duplication/retransmission cases. As mentioned in the previous mail, I don't think we need to couple the counts to the ACKed ranges in the ACK blocks. This will lead to a master-mind-game-like solver to reproduce the counters as every ACK might have different partly overlapping blocks. By trying to simulate the ACK behavior with reporting deltas on the running counters at the receiver end to those counter values at the previous ACK sent, I saw these 2 possible problems: 1) if assumed lost but reordered ACK packets trigger re-sending a delta, how do we undo them when we realize they have been received anyway? 2) if the ACK for the first packet is lost, how will we detect ECN-capability in a delta based feedback if only the first packet was marked ECT by the sender? As Bob mentioned, it will take another RTT to resend it and detect ECN capability. Maybe not such a problem for detection only, and when used for CC with all packets marked ECT, it will at least increment one counter (ECT or CE, unless it was bleached). Further to be thought about.
[IJ] As I understand from earlier discussion, duplicates should not be a problem, Ian´s argument is that duplicates should be filtered out early in the packet process, and neat thing is that duplicates do not need to be recorded in QUIC,  like is for instance the case with DSACK in TCP.
As regards to packet reordering. The way I see things is that
  ECT(0) packet is received--> increment the ECT(0) counter
  ECT(1) packet is received--> increment the ECT(1) counter
  CE packet is received--> increment the CE counter
When a new ACK+ECN counter frame is generated, the deltas are computed from the difference in how much respective counter has incremented since the previous ACK + ECN counter frame.

Now there are a few possible tricky cases with the delta values that you mention above, and I believe that it is not desired to end up with complex state machines just to save a few bytes overhead.
The best alternative can after all report the counter values as is, without the additional complication with deltas, and it is not strictly necessary to report all bits in the counters, it should be sufficient to expand to 2 or 4 or 8 bytes integers only when the when 6 LSB, 14 LSB and 30LSB counters wrap around.






Koen.

From: Ecn-in-quic [mailto:ecn-in-quic-bounces@ietf.org] On Behalf Of Ingemar Johansson S
Sent: Monday, December 18, 2017 8:40 PM
To: Magnus Westerlund <magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>
Subject: Re: [Ecn-in-quic] ECN in QUIC, quick review input wanted

Hi

Comments on most of the comments, marked [IJ].
/Ingemar

From: Magnus Westerlund
Sent: den 18 december 2017 15:19
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.com<mailto:ingemar.s.johansson@ericsson.com>>; ecn-in-quic@ietf.org<mailto:ecn-in-quic@ietf.org>
Cc: Jana Iyengar (jri@google.com<mailto:jri@google.com>) <jri@google.com<mailto:jri@google.com>>; Ian Swett <ianswett@google.com<mailto:ianswett@google.com>>
Subject: Re: [Ecn-in-quic] ECN in QUIC, quick review input wanted


Hi,

I have done a review. I did edit in some editorial corrections. My comments are:

1. Requirement R.5 Editorial

I did change this requirement to what I assumed it meant to say. "must not be able" didn't make sense in the below.

* R.5 A QUIC implementation may not be able to verify ECN support in the OS network stack. The capability check should cover this case similar as if the network does not support ECN (see R6).

[IJ] OK, makes sense.

2. Comment on below note

"[In case duplicates are asked in QUIC: Once peer A receives the ACK frame it verifies that the number of ECT marked bytes(or packets) is equal to or greater than the number of transmitted ditto [ED note, "equal to or larger" in case duplicates are counted]"

This appear to be an issue we need to work through more. Using byte or packet counter where duplication sneaks in without making clear the level of duplication creates uncertainties in interpretation. At the same time suppressing a CE mark in a duplicated packet is also not without issues. The correct congestion response is knowing the actual number of delivered bytes and how much was congestion marked.

[IJ] Based on an earlier discussion on the tracker (see Ian´s comment in https://github.com/quicwg/base-drafts/issues/805 ) it is possible that this is not an issue. But it needs to be verified in the transport draft that this is indeed the case.

3. Clarification of IETF QUIC 1.0 minimal requirements.

## QUIC v1.0 limitation
Subsequent packets (after the 1st) should set the ECN bits to Not-ECT. This because v1.0 will only verify that the ECN capability exchange and the ACK+ECN frame operates correctly.

Should this be clarified, that initial capability exchange and acking with ECN information is proposed to be MUST be implemented. Where after initial exchange the setting of ECT is OPTIONAL. If a sender sets the ECN field to ECT after the initial one the sender MUST implement a congestion response to ACKs indicating ECN-CE marked packets. It is expected that future QUIC profiles will define if ECN sender capability is mandated.

[IJ] Yes, definitely a +1 one on this, unless somebody objects, I can add this

4. ECN Feedback.

Frankly I don't quite understand why ACK and ECN must be in the same Frame. Yes, they need to be in the same IP packet, and have corresponding information coverage to make them useful. But, that I don't see require combined frames. What am I missing? Is it the case of retransmitting ACK frames, where one may have multiple ACK Frames from different times in the same frame alternatively, need to re-encode the corresponding ACK interval into one new frame?

[IJ] I leave this as a separate discussion topic.

5. ECN Feedback:

I think the text should clarify that the ECN fields covers exactly the same packets that are included in the ACK. Thus these field will normally report on a relative small number of received packets between each ACK. Retransmission of an ACK frame requires corresponding ECN information to be retransmitted to, or is this case simply re-encoded to cover previous non ackwlodeged ACKs + new received packets that are ACKed?

[IJ] The idea is that the ECT(0),ECT(1) an CE deltas are stored for each transmitted ECN feedback. If one ECN feedback is indicated as lost, then the deltas are added to the next transmitted ECN feedback.

6. Editorial inconsistency in ECN Feedback.

"The wire specification below only address the ACK+ECN frame and assumes bytes marked as report metric."

Then alternative 1 is assumed and counts in packets.

[IJ] Right, I will correct

7. ECN Feedback alt 3.

"All in all this alternative would mostly encode the ECN block as 3 octects and sometimes as 4 or 6 octets."

Shouldn't this alternative result in 4 bytes or more. 2 bytes for ECT, 1 byte for the non used ECT codepoint, and 1 byte for CE when nothing is marked. Then larger ACK blocks results in additional bytes for CE and/or ECT(Value Used).

[IJ] Yes, you are right, will correct this

8. Reduction of overhead

Isn't decoupling the ECN reporting from the actual ACK blocks problematic. Then you don't know over which packets the ECN information maps to.

[IJ] The rationale is that it is only strictly necessary with a prompt transmission of ECN feedback when the CE counter increases. It is less urgent to transmit ECN feedback  if the ECT(0) and ECT(1) counters increase as these are only there to detect faults like bleaching. The proposal here is to transmit ECN feedback at least once per RTT if either ECT(0) or ECT(1) increases. In any case this is just an idea and it is possible that it complicates the design more that its worth in overhead reduction.

The reasonable method to reduce for this initial phase is that zero values for the counter corresponding to the ACK block, i.e. only Non-ECT marked packets received are using regular ACK, not including the ECN frame.

[IJ] Yes, that is a possibility



Cheers

Magnus



Den 2017-12-17 kl. 14:43, skrev Ingemar Johansson S:
Hi
I hope that we will be able to write up a draft that describes ECN in QUIC before the Melbourne Interim, but it is getting short on time and the xmas holiday is soon here.

I have now updated the ECN in QUIC wiki, based on my current best understanding. Koen, Stuart and  Praveen have also worked on the wiki + some extra input from experiments by Lars, many thanks!

Please read at your earliest convenience through the sections
https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC#ecn-capability-check

https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC#ecn-feedback-wire-format (it is sufficient to just read about alternative 1)

https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC#handling-of-lost-acks

and

https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC#reduction-of-overhead

Does this make sense ?

/Ingemar
==================================
Ingemar Johansson  M.Sc.
Master Researcher

Ericsson Research
Network Protocols & E2E Performance
Labratoriegränd 11
971 28, Luleå, Sweden
Phone +46-1071 43042
SMS/MMS +46-73 078 3289
ingemar.s.johansson@ericsson.com<mailto:ingemar.s.johansson@ericsson.com>
www.ericsson.com

The world is full of magical things patiently
    waiting for our wits to grow sharper
               Bertrand Russell
==================================



_______________________________________________

Ecn-in-quic mailing list

Ecn-in-quic@ietf.org<mailto:Ecn-in-quic@ietf.org>

https://www.ietf.org/mailman/listinfo/ecn-in-quic


--



Magnus Westerlund



----------------------------------------------------------------------

Media Technologies, Ericsson Research

----------------------------------------------------------------------

Ericsson AB                 | Phone  +46 10 7148287

Torshamnsgatan 23           | Mobile +46 73 0949079

SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com<mailto:magnus.westerlund@ericsson.com>

----------------------------------------------------------------------