RE: Connection ID lengths 1, 2 and 3

"Deval, Manasi" <manasi.deval@intel.com> Sun, 15 July 2018 14:33 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 8E97E130F65 for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 07:33:58 -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 d9HtV_Ke1UQS for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 07:33:55 -0700 (PDT)
Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 30CA6130EDD for <quic@ietf.org>; Sun, 15 Jul 2018 07:33:55 -0700 (PDT)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Jul 2018 07:33:54 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos; i="5.51,357,1526367600"; d="scan'208,217"; a="54511577"
Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by fmsmga007.fm.intel.com with ESMTP; 15 Jul 2018 07:33:13 -0700
Received: from orsmsx113.amr.corp.intel.com (10.22.240.9) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 15 Jul 2018 07:33:13 -0700
Received: from orsmsx111.amr.corp.intel.com ([169.254.12.141]) by ORSMSX113.amr.corp.intel.com ([169.254.9.96]) with mapi id 14.03.0319.002; Sun, 15 Jul 2018 07:33:13 -0700
From: "Deval, Manasi" <manasi.deval@intel.com>
To: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, 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: AQHUEsvAi91oX8DVaUqbcldKc5Rk06R97QgAgBGLlvCAAOSi4A==
Date: Sun, 15 Jul 2018 14:33:12 +0000
Message-ID: <1F436ED13A22A246A59CA374CBC543998B86DF5E@ORSMSX111.amr.corp.intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZWQzZGY3YjEtZjRlNC00OWI1LTkxMjktNDBmYzRhOWUxNjgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiU05XUWJFWFMzVEY2NjVhRFNQa1BaTnpXaUdpbDlrczZJUUVXdFp2RkFCYzB2V1l1cFdvVWljdTNmXC9CbE03SG4ifQ==
x-ctpclassification: CTP_NT
x-originating-ip: [10.22.254.139]
Content-Type: multipart/alternative; boundary="_000_1F436ED13A22A246A59CA374CBC543998B86DF5EORSMSX111amrcor_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/3PmgW4pRyFGdWFqv0nIdqEdvT0A>
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 14:34:12 -0000

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] On Behalf Of Mikkel Fahnøe Jørgensen
Sent: Tuesday, July 03, 2018 6:06 AM
To: QUIC WG <quic@ietf.org>; Marten Seemann <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.