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

Michael Welzl <michawe@ifi.uio.no> Fri, 07 August 2020 08:49 UTC

Return-Path: <michawe@ifi.uio.no>
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 07A933A07F4 for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 01:49:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 Hc4pRtnCsPdv for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 01:49:51 -0700 (PDT)
Received: from mail-out01.uio.no (mail-out01.uio.no [IPv6:2001:700:100:10::50]) (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 E55BD3A0DA8 for <quic@ietf.org>; Fri, 7 Aug 2020 01:49:50 -0700 (PDT)
Received: from mail-mx11.uio.no ([129.240.10.83]) by mail-out01.uio.no with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93.0.4) (envelope-from <michawe@ifi.uio.no>) id 1k3y47-00037P-2r; Fri, 07 Aug 2020 10:49:27 +0200
Received: from ti0182q160-0624.bb.online.no ([109.189.132.119] helo=[192.168.1.5]) by mail-mx11.uio.no with esmtpsa (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.93.0.4) (envelope-from <michawe@ifi.uio.no>) id 1k3y45-0002gr-H9; Fri, 07 Aug 2020 10:49:26 +0200
From: Michael Welzl <michawe@ifi.uio.no>
Message-Id: <22295A0B-DA58-4810-A9E6-4B2075E2C82C@ifi.uio.no>
Content-Type: multipart/alternative; boundary="Apple-Mail=_E351F7AC-6061-4566-969A-839A8528B93F"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.14\))
Subject: Re: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)
Date: Fri, 07 Aug 2020 10:49:20 +0200
In-Reply-To: <CAC7UV9bFS8-xc6WphNRc4yc=01YehX4vVfcPq6HxbzPw3=QaZA@mail.gmail.com>
Cc: Christian Huitema <huitema@huitema.net>, Paul Vixie <paul@redbarn.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>, David Schinazi <dschinazi.ietf@gmail.com>, Lars Eggert <lars@eggert.org>, quic <quic@ietf.org>, Martin Duke <martin.h.duke@gmail.com>
To: Robin MARX <robin.marx@uhasselt.be>
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> <CAC7UV9bFS8-xc6WphNRc4yc=01YehX4vVfcPq6HxbzPw3=QaZA@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.14)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx11.uio.no: 109.189.132.119 is neither permitted nor denied by domain of ifi.uio.no) client-ip=109.189.132.119; envelope-from=michawe@ifi.uio.no; helo=[192.168.1.5];
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, HTML_MESSAGE=0.001, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 507B2F4A21FBF8BFCFB89F99EEF1AEDCB04941D9
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/p1GPGyesX0_a6hy_T-xbHDKK2-o>
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:49:54 -0000

> On Aug 7, 2020, at 10:17 AM, Robin MARX <robin.marx@uhasselt.be> wrote:
> 
> 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 <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. 

+1

Lucas mentioned RFC 6458. I regularly used this particular RFC as an example to motivate TAPS prior to its “birth”, as the whole point was to make the job easier for application programmers (while enabling protocol evolution below the API).

We did this by identifying what really must be exposed (vs. what can be automated below an API), as opposed to offering absolutely everything a protocol can do (which is what RFC 6458 does). This led to an analysis of the API-relevant bits of TCP, MPTCP, UDP(-Lite), LEDBAT and SCTP (yes, RFC 6458), in RFCs 8303 and 8304, followed by a systematic approach to throw out things that may be automatable (draft-ietf-taps-minset-11, in the RFC Editor queue). This “minimum set” now forms the core of the current TAPS drafts (the API being in draft-ietf-taps-interface). You may notice that QUIC is missing in the list above, because it was still very much in flux at the time these RFCs were done. However, we’re doing our best to support QUIC in a similar way with TAPS.

Some programmers will want fine grain control of everything - the kind of control that RFC 6458 offers. Indeed, for this, I’d also ask whether defining it all in an RFC is worth the effort. Either way, it’s a different egg.

Cheers,
Michael



> 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 <mailto: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 <http://www.uhasselt.be/>
> Universiteit Hasselt - Campus Diepenbeek
> Agoralaan Gebouw D - B-3590 Diepenbeek
> Kantoor EDM-2.05
>  
>