Re: Connection ID lengths 1, 2 and 3

"Deval, Manasi" <manasi.deval@intel.com> Sun, 15 July 2018 16:41 UTC

Return-Path: <manasi.deval@intel.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CC719130E3E for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 09:41:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 XiOjshdI6sGH for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 09:41:51 -0700 (PDT)
Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 A3FFD130E12 for <quic@ietf.org>; Sun, 15 Jul 2018 09:41:51 -0700 (PDT)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Jul 2018 09:41:48 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos; i="5.51,357,1526367600"; d="scan'208,217"; a="57853279"
Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga006.jf.intel.com with ESMTP; 15 Jul 2018 09:41:46 -0700
Received: from orsmsx111.amr.corp.intel.com ([169.254.12.141]) by ORSMSX106.amr.corp.intel.com ([169.254.1.85]) with mapi id 14.03.0319.002; Sun, 15 Jul 2018 09:41:46 -0700
From: "Deval, Manasi" <manasi.deval@intel.com>
To: Ian Swett <ianswett@google.com>
CC: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, IETF QUIC WG <quic@ietf.org>, Marten Seemann <martenseemann@gmail.com>
Subject: Re: Connection ID lengths 1, 2 and 3
Thread-Topic: Connection ID lengths 1, 2 and 3
Thread-Index: AQHUEsvAi91oX8DVaUqbcldKc5Rk06R97QgAgBGLlvCAAOSi4IAAh0AA//+rWH8=
Date: Sun, 15 Jul 2018 16:41:45 +0000
Message-ID: <0EA7393D-B7EC-4755-B13E-5177E24AA57A@intel.com>
References: <1F436ED13A22A246A59CA374CBC543998B86DF5E@ORSMSX111.amr.corp.intel.com>, <CAKcm_gPmp=5pcM-UFWWU4UvNuuCOwbcj7s1=Qb4GW3cGhF3Bbw@mail.gmail.com>
In-Reply-To: <CAKcm_gPmp=5pcM-UFWWU4UvNuuCOwbcj7s1=Qb4GW3cGhF3Bbw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Content-Type: multipart/alternative; boundary="_000_0EA7393DB7EC4755B13E5177E24AA57Aintelcom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/7p_gjlr8oEJhRsIa-EYnorz5TXU>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Jul 2018 16:41:54 -0000

I would still prefer if we can reduce the number of sizes supported.

Could a scheme where we support only 5 cids be used? Use a 3 bit size , shift left by 2 and not use the last 2 sizes of 24 and 28.


Thanks,
Manasi


On Jul 15, 2018, at 10:45 AM, Ian Swett <ianswett@google.com<mailto:ianswett@google.com>> wrote:

If one uses existing fast crypto primitives to encode connection ID, then 16 bytes is a natural size, and there was interest in having an extra byte for metadata(key rotation/length signaling/etc).

Unfortunately, that leaves us with a gap somewhere, and a gap at the beginning seemed the most natural at the time.

On Sun, Jul 15, 2018 at 10:35 AM Deval, Manasi <manasi.deval@intel.com<mailto:manasi.deval@intel.com>> wrote:
Another issue I noticed with the size of connection id was with regards to parsing the header field. The current steps are:

•        Parse DCid length,

•        Add 3,

•        Parse DCid length

•        Add 3,

•        Read DCID

•        Read SCID.

I really appreciate the fixed size length fields so we can know both destination and source Cid lengths in parallel. Implementing this in hardware has the following challenges though:

a.      There are 12 unique length types for each of the CiDs. This means either more stages of serial processing, which would be slower. Or it means more logic for parallel processing.

b.      In addition to this, the arithmetic logic to add 3 is a little more specialized than a logical operation, e.g.shift left.

Therefore, I would like to understand the basis for having 12 different lengths and if there is a chance to simplify this logic, we can have a 3 bit length and shift left 1, so we have lengths of 0,2,4… 14. Would the loss of longer CiD values from 15 to 18 be an issue?

Thanks,
Manasi

From: QUIC [mailto:quic-bounces@ietf.org<mailto:quic-bounces@ietf.org>] On Behalf Of Mikkel Fahnøe Jørgensen
Sent: Tuesday, July 03, 2018 6:06 AM
To: QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>; Marten Seemann <martenseemann@gmail.com<mailto:martenseemann@gmail.com>>
Subject: Re: Connection ID lengths 1, 2 and 3

That is correct. Especially in low-power sensor mesh networks.



On 3 July 2018 at 14.45.30, Marten Seemann (martenseemann@gmail.com<mailto:martenseemann@gmail.com>) wrote:
First of all, I realise that I'm bringing this up late in the process, and maybe too late, since this would require a change to the invariants.

The connection IDs can be either 0 bytes or anything between 4 and 18 bytes (inclusive). Lengths of 1, 2 and 3 bytes are not possible.
For p2p applications, and for server deployments that are not doing connection ID based load balancing, it would be interesting to use shorter connection IDs. One might imagine that a peer encodes the length of the connection ID into the first few bits, and then starts using 1 byte connection IDs first, and successively moves to longer lengths only when handling more connections. A p2p host handling several thousand simultaneous connections (which will be enough for many p2p protocols) would never have to use anything longer than 2 byte connection IDs.

In the connection ID length field in the Long Header, we only have to 4 bit to encode a range of 19 values (we want 0 byte connection IDs, and we want to support 18 byte connection IDs), so *some* values have to be left out. However, leaving out 1, 2 and 3 seems a bit unfortunate, as there will be more use cases for these values than e.g. for 13, 14 and 15 bytes.