Re: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)

Robin MARX <robin.marx@uhasselt.be> Fri, 07 August 2020 08:17 UTC

Return-Path: <robin.marx@uhasselt.be>
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 967093A0D1C for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 01:17:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=uhasselt.be
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 YplaYl8kwy6e for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 01:17:46 -0700 (PDT)
Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) (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 76F8B3A0D18 for <quic@ietf.org>; Fri, 7 Aug 2020 01:17:46 -0700 (PDT)
Received: by mail-wr1-x441.google.com with SMTP id c15so829995wrs.11 for <quic@ietf.org>; Fri, 07 Aug 2020 01:17:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uhasselt.be; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3ZM1P+4CNBAF+sNvj0kURcuA+0LTHwZoxqjR2QMQdN8=; b=sjNkD8OcjGwdFyH1VknEhKZvIW4rWpFoFG+xT2+/vThBzw2g6H41wu0J8ar4tFCXlx +BNNnTqmWlal25Mp8C8Bn23qQd1NXGtXKySIMR4Du5n4di8ZL9CL6p88a0b/CHxoQ6VP A6k+gl6o2yiLtJRag+3UVKJOCCtnjJEqmp1zE=
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=3ZM1P+4CNBAF+sNvj0kURcuA+0LTHwZoxqjR2QMQdN8=; b=mDpreuPyaRgTg3WraGhWABeIrx+leHbHpAqcS6W4Swk5gt3xPY5DnCsM1rWcvbxCBc 3HOnucPnjdUB/Tipj40O1Iv8CoYVsHXks7yQjt6BL9DUTP2fBfRip55eFuTFUy0lQ4PL I8fCEWH32q+ajXCRDYcy4Ve4nzfpUQhYUfRXQZKkG87IKr4ZTNGxRi79Oa8yOWB1RVyK k3OE3xpL08lHyv2XGhiKvEwbnVcMAr/9IeXUW3cdodrpL4EBocyxNmvSpS98Hpdyladq 0T42Uirr1ENrDD9aMuMnyygmZ04YYiH4Pw1KBM6FtyPfdgn8PDFPen+BBnv0nRhll6Mt Z5NQ==
X-Gm-Message-State: AOAM533zVo82xunU5jJI046SXFRyoU9DA+Qvr+LyCzgVkoCN3TtkN4BJ GArQzBr0w0+rwE7Jm8L8NLOnJzPYGMQkTh1clp22FQ==
X-Google-Smtp-Source: ABdhPJyziw/SVXPkWevY84SraWQrEzfh6hw+BxqsLo09dScIrMiKDomqLOBFGrpkPtld5Zbp1oWrqjNTwHY1H129yoU=
X-Received: by 2002:a5d:540c:: with SMTP id g12mr10728571wrv.120.1596788264733; Fri, 07 Aug 2020 01:17:44 -0700 (PDT)
MIME-Version: 1.0
References: <CAA=hcWS0V8ipsoAEFK3ejdA++Vzi+czth37=ntP4mnt8d=mtRg@mail.gmail.com> <F384B33C-70F8-45EF-AB5C-30D0A145659A@eggert.org> <CAA=hcWQ60GH2TnjvqBEGvVQ1whxNYwEWjQ+b9FW948GKvN570Q@mail.gmail.com> <2499749.AO4zfZtjs8@linux-9daj> <3D493D2B-BC8D-4CE9-B189-48770C3FA06F@eggert.org> <CAM4esxR+s-SCVOWb_-3TciVRk8Sp5NVWtjggqXM_XD2r3jup=Q@mail.gmail.com> <CALGR9oYDtdRyGAQ50OMFH2CTo=PR0ZwButK2DC26JkUhoifj1g@mail.gmail.com> <CAM4esxSkzijT8PMW7m2SY1j5c_AW=8L9tuq17RXWy+mmp4a0SA@mail.gmail.com> <CALGR9oacxe3EvYjeR_5yLpCga6EWcK_MLgvW_QCwidoH4Fjrzw@mail.gmail.com> <CAPDSy+4XZRFb6t_-caiH52TuaFib2dK8Ur8r3f8PhJGqL62JSg@mail.gmail.com> <fb0490e8-f275-13a7-2f08-0b5b179ceb68@huitema.net>
In-Reply-To: <fb0490e8-f275-13a7-2f08-0b5b179ceb68@huitema.net>
From: Robin MARX <robin.marx@uhasselt.be>
Date: Fri, 07 Aug 2020 10:17:33 +0200
Message-ID: <CAC7UV9bFS8-xc6WphNRc4yc=01YehX4vVfcPq6HxbzPw3=QaZA@mail.gmail.com>
Subject: Re: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)
To: Christian Huitema <huitema@huitema.net>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, Lucas Pardue <lucaspardue.24.7@gmail.com>, Lars Eggert <lars@eggert.org>, quic <quic@ietf.org>, Paul Vixie <paul@redbarn.org>, Martin Duke <martin.h.duke@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000004d2aed05ac453d2c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/_BT5Rzb2hNG615TdzUjzme3kLBE>
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: Fri, 07 Aug 2020 08:17:49 -0000

Personally, I would agree that creating a general purpose API just for QUIC
would be difficult.
I'm mainly thinking about what the interface for steering stream
multiplexing/prioritization would look like, seeing as the specs are very
light on details for these.
Speccing something out for HTTP/3 should be do-able (and is being
contemplated by some, e.g., https://github.com/hyperium/h3/pull/1), though
potentially not as useful.

I would echo Lucas' reference in thinking that abstracting from QUIC to a
more high-level view of transport features with something like TAPS is more
logical in the long run.
Rather than putting all eggs in one basket, it would be good to get at
least this one egg into that particular basket imo.

Like Lucas and David, I'm also not sure how common/realistic of a use case
the "I want to switch ad-hoc between QUIC implementations" argument will
be.
To me, a common API would be mostly interesting in writing re-usable
high-level coding tutorials and teaching materials to help new devs use the
protocol more quickly.
>From that perspective, you can make an even stronger argument for TAPS imo.

With best regards,
Robin



On Fri, 7 Aug 2020 at 08:39, Christian Huitema <huitema@huitema.net> wrote:

>
> On 8/6/2020 5:58 PM, David Schinazi wrote:
> > In theory, it could mean that one could write an application
> > in such a way that it could swap QUIC implementations.
> > I don't see that happening in practice. The application
> > developer would have to periodically test against these
> > implementations for them to work reliably, so the idea
> > of a drop-in replacement sounds unreal to me.
>
> Yes. We had an example of that when testers wanted to plug their tools
> to different QUIC stacks. Not impossible, but there was a lot of glue
> required.
>
> >
> > Additionally, in 2020, networking APIs are asynchronous.
> > That means that a QUIC API would need to be tied to
> > a specific asynchronous IO model, and those are tied
> > to programming language and library choices. So any
> > API would only work for applications that pick the same
> > language and standard libraries.
>
>
> People today are experimenting with a variety of application--stack
> interactions. I think that's a good thing at this point. Take the
> example of out-of-order delivery: really cool potential, but we have
> very little experience. It might require tight integration with the
> application, dealing with the intricacies of video codecs. I think that
> in the next year or two we will gain some experience and maybe see a
> small number of API models emerge. But attempting standardization before
> that seems very premature.
>
> -- Christian Huitema
>
>
>

-- 

Robin Marx
PhD researcher - web performance
Expertise centre for Digital Media

T +32(0)11 26 84 79 - GSM +32(0)497 72 86 94

www.uhasselt.be
Universiteit Hasselt - Campus Diepenbeek
Agoralaan Gebouw D - B-3590 Diepenbeek
Kantoor EDM-2.05