Re: Need your help: different connection IDs in the same datagram

Ian Swett <ianswett@google.com> Wed, 15 July 2020 19:31 UTC

Return-Path: <ianswett@google.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 AAD273A0E91 for <quic@ietfa.amsl.com>; Wed, 15 Jul 2020 12:31:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level:
X-Spam-Status: No, score=-17.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 Ig91tJJBnzwy for <quic@ietfa.amsl.com>; Wed, 15 Jul 2020 12:31:09 -0700 (PDT)
Received: from mail-yb1-xb36.google.com (mail-yb1-xb36.google.com [IPv6:2607:f8b0:4864:20::b36]) (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 0035B3A0C56 for <quic@ietf.org>; Wed, 15 Jul 2020 12:31:08 -0700 (PDT)
Received: by mail-yb1-xb36.google.com with SMTP id y13so1674253ybj.10 for <quic@ietf.org>; Wed, 15 Jul 2020 12:31:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=O7QCeMURXQBB4I1cS949dFHNTIIPV6AeuIX6J8KzMvM=; b=ihYwmuOO+DNBENgWHeNrwcUX0PDsPrWQmLalLZ6/poN3MX2ZFutLz0R9As7HJsrbRT cub1+qr5gU873ALtHPuAsS8AgtYezHhVdh4+8KQQIkX1VtIoevDyTWAyXs4Jbou/l1GD y6s73OOdVuxVr/uPzf6UO2XTt6J07mqmM9UcvkhUWAS58E4CyCa/1AiQLdFBDNEhMC7u AA7jX2pj5lYN/Cta3YBgg+9iQppE1pDLSD07kfKgdwn0NFDimObQXNT20ROSE28jqx5k fqh4OE5xgLsYrmyXSANiyq3zlj5H4Xo78Kvb366+NVl6uueafZ6+/vfyrnIzhJ/BaqgJ l6qg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=O7QCeMURXQBB4I1cS949dFHNTIIPV6AeuIX6J8KzMvM=; b=Qk1ZjMBSlP0RPSOaEWdX8l/LEulGE/4Q1tEh+zeU9vFQuWIgcmkKufnQlbQIyxM86C +jDI/JxN28qBhNWRpJ1rVJb8UBYLo6Ys9rYl4fWdEDmYF90UUDnSGhQVrxP1X8bNFnGo BJ8NWnqRlu22lqGSSZkLMLcQEe8o+L5NOrtxNvD2zDesJSpBazW0vkv4zuj2XdZ2wuCd XQ8OrfUy75wBLdXaCHRY/7Dr67vjlzLY1ALTfMB0S//4SJxopWIZ+gz8WEj6ukIv2wp4 7xbiZeciokZMywS0f/KZ/HINu69l5l26BMbYn7Czfq6mXQiOLl0IQ3x3SXWHr2uZe2lx eR2A==
X-Gm-Message-State: AOAM532O61p8+qRBSZQOZZAqrOORMyY9Pp1mcldypAbuzF4IBCNJ1gty uSUVkVsM5dh8kfb0kUu4JzFL0Uexg2baV48GMD30RQ==
X-Google-Smtp-Source: ABdhPJxHYbstNWXJgh6HSS9OEKXZyV1kAAi1N4zlT3YU5K0pCt+dZXa4ilG4ZxZOSHvgV4uB+QgauUpWPoPi2b10M1M=
X-Received: by 2002:a25:da8c:: with SMTP id n134mr770961ybf.389.1594841467721; Wed, 15 Jul 2020 12:31:07 -0700 (PDT)
MIME-Version: 1.0
References: <ae21cc02-3357-40c8-a1e9-3966fdf575a5@www.fastmail.com> <20200715180231.GB9808@lubuntu>
In-Reply-To: <20200715180231.GB9808@lubuntu>
From: Ian Swett <ianswett@google.com>
Date: Wed, 15 Jul 2020 15:30:56 -0400
Message-ID: <CAKcm_gPfc3sFy0kuyTzUFk2XFMZ8NdXTd7CuNf0o0v+RXDG=xg@mail.gmail.com>
Subject: Re: Need your help: different connection IDs in the same datagram
To: Martin Thomson <mt@lowentropy.net>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000288c0a05aa7ff7f2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/XQTLZXrtc3siGfSi5RSqu2isKU8>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 15 Jul 2020 19:31:11 -0000

I don't think this change would be difficult for our implementation, but I
also don't see it as necessary.  Given where we are in the process, that
alone argues for not changing it I believe.

On Wed, Jul 15, 2020 at 2:02 PM Dmitri Tikhonov <dtikhonov@litespeedtech.com>
wrote:

> On Wed, Jul 15, 2020 at 05:23:57PM +1000, Martin Thomson wrote:
> > There has been some opposition to the proposed resolution in PR 3870.
> >
> > Apparently, for some, having multiple connection IDs in the same
> > datagram complicates processing.  I don't understand this objection.
> > It seems to me more difficult to retain state across packets than it
> > is to process each atomically.  I was hoping that Christian or Nick
> > can explain more about how this affects them.
>
> I can provide an example from lsquic.  The datagram is parsed into
> QUIC packets in one function, lsquic_engine_packet_in():
>
>
> https://github.com/litespeedtech/lsquic/blob/v2.18.1/src/liblsquic/lsquic_engine.c#L2781L2816
>
> Each QUIC packet is processed by process_packet_in(), where a
> connection is looked up:
>
>
> https://github.com/litespeedtech/lsquic/blob/v2.18.1/src/liblsquic/lsquic_engine.c#L1352L1360
>
> The DCID check is performed lsquic_engine_packet_in(), before
> process_packet_in() is called:
>
>
> https://github.com/litespeedtech/lsquic/blob/v2.18.1/src/liblsquic/lsquic_engine.c#L2793L2806
>
> The DCID information is readily available in the datagram parsing
> loop, while connection information is not.
>
> For lsquic to support the proposed change, it would have to remember
> the current connection and then query it whether it is indeed the
> owner of the next DCID (A) or look up DCID in the global hash (B):
>
>     conn = NULL;
>     while (quic_packet = parse_udp(pointers)) {
>         dcid = parse(quic_packet);
>         if (conn)
>         {
>   #if VARIANT_A
>             if (!conn_owns_scid(conn, dcid))
>   #else
>             if (conn != lookup_by_dcid(dcid))
>   #endif
>                 continue;
>         }
>         conn = process_packet(quic_packet);
>     }
>
> Not that it could not be done, of course, but it is both extra work
> to modify lsquic and a more inefficient mechanism: what was a simple
> CID comparison is now a hash lookup.
>
> That's why I argued [1] for having solid rationale behind the change
> rather than a personal preference.
>
>   - Dmitri.
>
> 1.
> https://github.com/quicwg/base-drafts/issues/3800#issuecomment-656851626
>
>