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

"De Schepper, Koen (Nokia - BE/Antwerp)" <koen.de_schepper@nokia-bell-labs.com> Wed, 20 December 2017 15:02 UTC

Return-Path: <koen.de_schepper@nokia-bell-labs.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 2142D126D74 for <ecn-in-quic@ietfa.amsl.com>; Wed, 20 Dec 2017 07:02:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.891
X-Spam-Level:
X-Spam-Status: No, score=-1.891 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_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, 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=nokia.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 MuPTqyrGvN6x for <ecn-in-quic@ietfa.amsl.com>; Wed, 20 Dec 2017 07:02:08 -0800 (PST)
Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0094.outbound.protection.outlook.com [104.47.0.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8BC221252BA for <ecn-in-quic@ietf.org>; Wed, 20 Dec 2017 07:02:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector2-nokia-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Q5CTxncGniq1gd+AV7XF16NwPTsPD1cW9dfWw9HxzkU=; b=FO7Rp5IqeCo64PNYNhjw98YnS/aqeRBcQSQwkgRd+Jma9tGeWyfW1T2cWoySyFltOCzOXxxQrOZXEC9PNXAX7AUrbhTr+H0rgyhVeu9qKsRslS/3kEfEGlgCqYTyVhzuaoJlapiZW3vSB/KIKDU14rMOzLwuRNUw+OYSOJXtApE=
Received: from VI1PR0701MB2126.eurprd07.prod.outlook.com (10.169.137.7) by VI1PR0701MB2125.eurprd07.prod.outlook.com (10.169.137.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.345.10; Wed, 20 Dec 2017 15:02:03 +0000
Received: from VI1PR0701MB2126.eurprd07.prod.outlook.com ([fe80::1d44:14e8:821d:b483]) by VI1PR0701MB2126.eurprd07.prod.outlook.com ([fe80::1d44:14e8:821d:b483%17]) with mapi id 15.20.0345.013; Wed, 20 Dec 2017 15:02:03 +0000
From: "De Schepper, Koen (Nokia - BE/Antwerp)" <koen.de_schepper@nokia-bell-labs.com>
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.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/yvr2NyHsRX2EXd9I8ZoH0wAzji0AAAhOMvAAUiU3UA==
Date: Wed, 20 Dec 2017 15:02:03 +0000
Message-ID: <VI1PR0701MB21261FC30B4A57CC8082B05EB90C0@VI1PR0701MB2126.eurprd07.prod.outlook.com>
References: <DB4PR07MB348DBDA0FC9745E39C15435C2090@DB4PR07MB348.eurprd07.prod.outlook.com> <a4cac890-941c-571c-7317-eafdce3bdf68@ericsson.com> <DB4PR07MB348EF452B60915233547546C20E0@DB4PR07MB348.eurprd07.prod.outlook.com>
In-Reply-To: <DB4PR07MB348EF452B60915233547546C20E0@DB4PR07MB348.eurprd07.prod.outlook.com>
Accept-Language: nl-BE, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=koen.de_schepper@nokia-bell-labs.com;
x-originating-ip: [62.235.177.8]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; VI1PR0701MB2125; 6:16snjon+0sppsnbuhWTXAkvqFTsY7zH7wcQJI1/2LUKVd23/rT7oycsi1vDCv5D9GmyxjbZkYN91onCNxpufKrzCWBAVa6567VrThMKNaXEO6jxTllKjBM/zGDIeS14Fhfb+hICbFwIQ/kA222mtg57lI+h39LaMPsffiViAfBIx5z+/Rf3u40W3htVDKHGRv+kfEo4UHy6wa5QuN/3nkpmGuJDhvJ2t5Qa767saEEdAIBo1v3F38ED2XvPdmM4O99+7kLpfyuDZNQFzwO5Dk4IK0mSLq2T+E7ZgrNBghHDGbobr0HnQdayT5mFEZFKuUqUEe3GlBnhRT+f08RlQTlyRry+Xa1UIiRPPpxgd9so=; 5:dpD/UM8CuKcx+BtYy4SQdawUY2BcCf7/5TdKfkRTLk4Q3yIGp48jDDvMzv7CcRrsCDu390Njc/7O+gEdQwY7F4g4g/CTf3MX46dazyrFSGr5OGSaZdU6S7cgjLWxDkvomSIKoOepx6CWZ6e6cKn6Dxq3w5tVO7Zt4oSbS0OrjmM=; 24:BdYxJXeo3Etmw9PJli5NUXZb/je6HfXAjzPn6IDhuNE8NPTBogVU57db+tKaWw56JVs6C38mA02Xla9aNfQwLRkCyPGqUFOkE2BovksLRbU=; 7:jQQIcpqzFg4tp9Zq5RSDU4obX+sTa6RxsuOcyac3wamOwzRmd6N3bxlyIxaUdiAdWvwKHtlymdXiPtLNXNTUQIff8uCxMndy2VXKw5GSlwA1Ha+71DWCC69SCqtxaMD/Uc4GAmu2Vqfg9rlRFqfv2cFH4oZzL54W+5SgweXdUMuMfggE2w5/QDmnPhBKNk/BqbMhm1MkXhWw02OvzUCOJLc7OxRjGnbiKjjdiTIdZ3gKfo98V5gLEZlyR8tkWalm
x-ms-exchange-antispam-srfa-diagnostics: SSOS;
x-ms-office365-filtering-correlation-id: 0c2e3968-db9f-4d9e-08e1-08d547baa138
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603307); SRVR:VI1PR0701MB2125;
x-ms-traffictypediagnostic: VI1PR0701MB2125:
x-microsoft-antispam-prvs: <VI1PR0701MB2125815E1378C42C271AD8FEB90C0@VI1PR0701MB2125.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)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231023)(11241501184)(920507027)(6055026)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:VI1PR0701MB2125; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR0701MB2125;
x-forefront-prvs: 0527DFA348
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(346002)(376002)(39380400002)(396003)(39860400002)(377424004)(199004)(189003)(966005)(110136005)(105586002)(66066001)(230783001)(316002)(54906003)(2900100001)(7736002)(6436002)(236005)(86362001)(9686003)(74316002)(6306002)(14454004)(2906002)(606006)(55016002)(3280700002)(8676002)(34040400001)(54896002)(4001150100001)(97736004)(106356001)(3660700001)(59450400001)(7696005)(76176011)(68736007)(53936002)(99286004)(33656002)(478600001)(53546011)(6506007)(81156014)(229853002)(2950100002)(25786009)(5250100002)(5660300001)(8936002)(3846002)(6246003)(2501003)(4326008)(790700001)(81166006)(6116002)(561944003)(102836003)(90052001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2125; H:VI1PR0701MB2126.eurprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:0; MX:1; LANG:en;
received-spf: None (protection.outlook.com: nokia-bell-labs.com does not designate permitted sender hosts)
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_VI1PR0701MB21261FC30B4A57CC8082B05EB90C0VI1PR0701MB2126_"
MIME-Version: 1.0
X-OriginatorOrg: nokia-bell-labs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0c2e3968-db9f-4d9e-08e1-08d547baa138
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2017 15:02:03.6305 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5d471751-9675-428d-917b-70f44f9630b0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2125
Archived-At: <https://mailarchive.ietf.org/arch/msg/ecn-in-quic/qat7fnztgWF6_BFqaNwoAR42u2s>
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: Wed, 20 Dec 2017 15:02:14 -0000

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).



  *   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...).



  *   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)".



  *   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.



  *   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?


  *   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.



  *   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.




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>; 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

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>

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