Re: Prioritizing QUIC DATAGRAMs (was: Re: [Masque] Prioritizing HTTP DATAGRAMs)

Lucas Pardue <lucaspardue.24.7@gmail.com> Wed, 23 June 2021 10:53 UTC

Return-Path: <lucaspardue.24.7@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 556BE3A334E; Wed, 23 Jun 2021 03:53:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level:
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham 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 uK1CsgR5Vwj9; Wed, 23 Jun 2021 03:53:19 -0700 (PDT)
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (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 B24333A334C; Wed, 23 Jun 2021 03:53:18 -0700 (PDT)
Received: by mail-ej1-x62d.google.com with SMTP id he7so3263029ejc.13; Wed, 23 Jun 2021 03:53:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rIzKe15X3M+jMiVrB1cDFvjMn9H3UbtRnIF89kKsUm8=; b=fqlvYFGC4zcQEmoAT6B67YER33fT6xrHY7+ij6k3haja4MWzSBqO4uhMXx7MaANtjz ZnvvZ8jsTdCPKaTJmmgQeP85EDEONMJqAJPQwgdWMoHzQHWyAo8KVq0d+0bEoKJToh/e eMOsWAAeC8DchZLOLbf+P2Tc/n6Fgi/puyXETeRbtJVhnvFuaKytEbnMS4LYBdYswcfh 6K3JG4SQCyq/3D9rDJagsvMypYqqYesCvzOLT6j0jxJiqRpltKcsXSEvus/8Q5nSgBGw YiwbadXHgnFsCBW1MN9MP0GOkAAoa5HKBdxdCySNv+opvRLqr64wSlflRCok9lCKF1MF kVhw==
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:cc; bh=rIzKe15X3M+jMiVrB1cDFvjMn9H3UbtRnIF89kKsUm8=; b=slTu97mb8kCt8f8IMkDkbjctpOqkQiZbbvqlTO9b+E6Q/tk/CjbeCoZ/6UaMf51Qmd EF1t7BwB40C7NnVGzSVDA004MRGrxfdLC4uy1F/BjO0W8LSQl6qjgkDMp6wIVR2KzmEI ypmuYDpwdfDNSAr+YsXMjFL3exQmeWZAwpM20sNIw+EEB+rDBtfTXXk4aGppvkp9TURt y/SImKHa3Ow33ptDKKEgk8zTVBcD7aK7ogU3n8Ro+67nv8++hRfSiDLLXzWUXsfkiG8P HnEXVSHGpCuzEgWMQqP/CPOTgjgS7l349Hk4h6OoE7zuXi7qD08D5pjA7O9MY4ok6snn LN5A==
X-Gm-Message-State: AOAM531cgCYqBpzFlgSfG9gZ/MNes6J0TLZLIqFpTOZVTZ8imZTjNCUq qFSuo9VqPtyxPJbqZKY+QdgGQ9QBL6h1E/DWFOs=
X-Google-Smtp-Source: ABdhPJz086wQj2GLsBidT7WRsAfXwhR1clQmeM5r5XQpQr4mgtZTNxV02QUu3P6odecrE5xvkYuIrHJVQ8uRxVZpd4c=
X-Received: by 2002:a17:906:b2cb:: with SMTP id cf11mr9407394ejb.448.1624445596460; Wed, 23 Jun 2021 03:53:16 -0700 (PDT)
MIME-Version: 1.0
References: <CALGR9ob=3CywgYvLJpSba6xCGwDEBzdJbuco28BMk9ayMcFe6Q@mail.gmail.com> <CAKKJt-d0srxhm==cxyXuJuDiqUk0sEgOAJRY+6ejq21LQVPsgQ@mail.gmail.com> <CALGR9oZOp5YWMWx61Etq42McOi02LOjxtRLL+xHhDpHKS94ukA@mail.gmail.com> <b9d7e589-df4a-0440-b5d4-847cca5a6908@rd.bbc.co.uk>
In-Reply-To: <b9d7e589-df4a-0440-b5d4-847cca5a6908@rd.bbc.co.uk>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Wed, 23 Jun 2021 11:53:06 +0100
Message-ID: <CALGR9oYRE0hBap+=VEr-KPD7Qp6gZZ_gg_0bcaDoquthKikMJg@mail.gmail.com>
Subject: Re: Prioritizing QUIC DATAGRAMs (was: Re: [Masque] Prioritizing HTTP DATAGRAMs)
To: Samuel Hurst <samuelh@rd.bbc.co.uk>
Cc: Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>, QUIC WG <quic@ietf.org>, David Schinazi <dschinazi.ietf@gmail.com>, Kazuho Oku <kazuhooku@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>, MASQUE <masque@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000bbea6d05c56cb6aa"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/Q5qZ3cN7VvZPz68UOi00hQphJh8>
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, 23 Jun 2021 10:53:21 -0000

Hey Sam,

On Wed, 23 Jun 2021, 09:36 Samuel Hurst, <samuelh@rd.bbc.co.uk> wrote:

>
> The primary issue that I can see with this is that it potentially leads
> to the inability to use DATAGRAMs for multiple application protocols in
> an interoperable way. While it's fully possible for one application to
> de/multiplex it's own traffic on the DATAGRAM channel, multiple
> applications sharing the same tunnel might have different (and
> incompatible) ideas on how to use an identifier that multiplexes
> traffic, or may use different mechanisms entirely.
>

Right. But having an identifier in the transport doesn't help much here.
Streams have such an identifier (split into 4 types) and don't solve the
problem you describe IIUC.

To give an example, an application mapping like HTTP/3 makes use of 3
types, using the up to the entirety of the values permitted. There isn't
currently a way for multiple completely independent HTTP/3 connections to
share a QUIC connection. HTTP/3 connection coalescing achieves sharing to
some degree, it relies on the demultiplexing occurring in the HTTP
messages. Similarly, CONNECT and CONNECT-UDP methods use HTTP to signal the
intent of streams or HTTP/3 datagrams, and applications can build context
state around this to decide how to dispatch received data.


> It's this danger of lack of interoperability that I don't like. I don't
> like the idea of having to write lots of application notes saying "you
> can do A but not with B, but B and C can coexist", which leads to
> applications exploding when someone does something unexpected with
> option D down the line, that I didn't foresee.
>
> Of course, I don't know exactly how much call there is for doing this.
> For example, with regards to my RTP Tunnelling draft [1] that Spencer
> linked to above I haven't encountered a need to run something alongside
> RTP/RTCP in DATAGRAMs yet, but that's not to say that it isn't a
> possibility.
>

The challenge is that if you want to mix usage intents for a shared
transport resource, you probably need some way to signal that. Since QUIC
delegates using streams and DATAGRAMs to upper layers applications, it's
very tricky to design anything at the lower layer to accommodate this.

One approach to allow general purpose indiscriminate resource sharing would
be to design a virtualization layer that sits just below actual mappings.
Such a thing would fool upper layers into thinking they had access to
native QUIC. The layer of indirection would probably require a "hypervisor"
to manage things properly. MASQUE is vaguely an instantion of this design
that relies on HTTP. WebTransport is vaguely another example, we used to
have a QuicTransport protocol but pivoted away from it back to HTTP.

The potential solution space is large. However, I'm not sure the problem
space you describe is broad enough to activate building something else. It
would be interesting to hear otherwise. At the end of the day, there needs
to be strong motivation for building complexity and/or runtime overhead in
order to share QUIC connection resources. Otherwise, isn't it just easier
to use multiple separate connections?


>
> I'm certainly interested in some form of prioritisation for my RTP
> Tunnelling draft [1], as protocols like RTP run in real-time and other
> things getting in the way can easily cause poor quality of service. This
> could be by making the application use longer receive buffers than
> necessarily to ensure smooth audio and video playback at the receiver,
> or random pauses and glitches in the stream.
>

Makes sense. Would you design that into your RTP tunneling mapping?

Cheers
Lucas

>
>