Re: Connection ID lengths 1, 2 and 3

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Sun, 15 July 2018 17:08 UTC

Return-Path: <mikkelfj@gmail.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 1A6A51277D2 for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 10:08:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.998
X-Spam-Level:
X-Spam-Status: No, score=-0.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 0r1Uas8uxLfW for <quic@ietfa.amsl.com>; Sun, 15 Jul 2018 10:08:15 -0700 (PDT)
Received: from mail-it0-x234.google.com (mail-it0-x234.google.com [IPv6:2607:f8b0:4001:c0b::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 21FF4130DFA for <quic@ietf.org>; Sun, 15 Jul 2018 10:08:15 -0700 (PDT)
Received: by mail-it0-x234.google.com with SMTP id h2-v6so15849586itj.1 for <quic@ietf.org>; Sun, 15 Jul 2018 10:08:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=aU1VFcoifcJCMkJr0743IATkDt94ilpbxM4NDDThhDI=; b=BWj/La/n9zYFMH+9dvNvRrZdunpo8vV/FmsJn/ydDmVl0drK+2IGCmrC9Pqa6y52bD KeAVmA0JFoIioS/b3lnmQvw6iQUEGYZcd2KRcgs8zcrBeHH6TPe9YUl3O87DM1TR7ky4 kPcOCrCT1gJwnkVooaFcn0caqbB3AkP5wXnHv6i+M37eGQ8yNALGIhUx5jnwxLfM8cf8 XtypdsTLoZqqPezX7EuEpf8BeNgP1NP3If1S5DXahsG2Lid+bzPuGJ0hIz6vrcr14X29 8K+SR8u7cVs/oIjQ+yP5pibu/wjiU1pGIezRL+3cTGIvC5Xxc42y6BVpC6AI3LyOSFSu AjhQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=aU1VFcoifcJCMkJr0743IATkDt94ilpbxM4NDDThhDI=; b=dSdpivdyBWuTDwh5dvtj3/TpNcMC274h8d+dF1hUufUyHLA9iGedK8hNa5+NFrhK6a ipIfKrCHBsVVTloRUc+W0IgMBppTpKzZSX2XeKtKreZL5QEDCvEzCufsFzAP3przDsiM GsNzEHTPtJngb5OAbD58DNdNAoiUJ+2kN438kXIKV4ImRYhJKgyTFvGCJPCYodPJM5Qo ol/4ui9X+0UeAzH+UJrCE6K4WcWiOJDb+BPjp3LpzD1Bu+BHFmLNetGlm0iqWckd8g+X co61McDZ8JJNJ2Mp+GnXTgiS52a98hejs4M6e3YD6iMfAsdXKlFsvtp42mHI04VZdqxI MWtA==
X-Gm-Message-State: AOUpUlFMC6ZNJA3vG2VymgbZeqQx9z7tbkZVCpa5Alp4KA5nFS2YrGyG ac8xxvV46AUo1/Mdz+a61hEjVGiR1VdCBOWpI6M=
X-Google-Smtp-Source: AAOMgpfAIpJu3CBMSgxbVO6VjpuNMEN21xEHVcy1nA6uiHbufviv7UY3LDK2lNwdYvsgpsOQ7RgcNv4tH1ueCGDRkAk=
X-Received: by 2002:a24:534c:: with SMTP id n73-v6mr10641008itb.25.1531674494553; Sun, 15 Jul 2018 10:08:14 -0700 (PDT)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Sun, 15 Jul 2018 13:08:13 -0400
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <4F5BCC2E-4DD0-403F-954A-FB79847E218B@intel.com>
References: <1F436ED13A22A246A59CA374CBC543998B86DF5E@ORSMSX111.amr.corp.intel.com> <CAKcm_gPmp=5pcM-UFWWU4UvNuuCOwbcj7s1=Qb4GW3cGhF3Bbw@mail.gmail.com> <0EA7393D-B7EC-4755-B13E-5177E24AA57A@intel.com> <CAOYVs2q5C370LN4X-xJ4NuMxjt5ALsz4vFwczj6N2j5skvuFKw@mail.gmail.com> <4F5BCC2E-4DD0-403F-954A-FB79847E218B@intel.com>
X-Mailer: Airmail (420)
MIME-Version: 1.0
Date: Sun, 15 Jul 2018 13:08:13 -0400
Message-ID: <CAN1APdcrBShUdK0icLcYQEwF0axcywDDHSpk-ua64KFbT0J6=g@mail.gmail.com>
Subject: Re: Connection ID lengths 1, 2 and 3
To: "Deval, Manasi" <manasi.deval@intel.com>, Marten Seemann <martenseemann@gmail.com>
Cc: Ian Swett <ianswett@google.com>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000028d1d505710cc2e2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/4MyN97UU-KROBiK2-uGfrx7Dx40>
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 17:08:17 -0000

version is only during handshake, CID is on all packets



On 15 July 2018 at 19.04.49, Deval, Manasi (manasi.deval@intel.com) wrote:

There is a 32bit version number that precedes the length field. Until we
have a thousand versions, we are always sending 3 extra bytes on the wire.

Thanks,
Manasi

On Jul 15, 2018, at 12:52 PM, Marten  <martenseemann@gmail.com> wrote:

I don't think we should reduce the number of sizes available. Sending bytes
on the wire is orders of magnitude more expensive than performing a simple
transformation to a parsed value. I'd prefer if we could discuss this
separately, since this is quite the opposite of what I was originally
proposing.

To reiterate my argument, changing the invariants such that the values 1, 2
and 3 can be used would be a big benefit for p2p applications, since they
would be able to use super-short connection IDs. Since this is a change
that requires a change to the invariants, we need to make this decision
very soon, if we want to enable this use case of QUIC.

On Sun, Jul 15, 2018 at 12:41 PM Deval, Manasi <manasi.deval@intel.com>
wrote:

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