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

Michael Tuexen <Michael.Tuexen@lurchi.franken.de> Fri, 07 August 2020 09:20 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
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 F30353A0E0F for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 02:20:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.686
X-Spam-Level:
X-Spam-Status: No, score=-1.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, KHOP_HELO_FCRDNS=0.212, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=no 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 mYfrPz1YP9KS for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 02:20:16 -0700 (PDT)
Received: from drew.franken.de (mail-n.franken.de [193.175.24.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6B6233A0E0E for <quic@ietf.org>; Fri, 7 Aug 2020 02:20:15 -0700 (PDT)
Received: from mb.fritz.box (ip4d15f5fc.dynamic.kabel-deutschland.de [77.21.245.252]) (Authenticated sender: lurchi) by mail-n.franken.de (Postfix) with ESMTPSA id 9CAF87220B80D; Fri, 7 Aug 2020 11:20:12 +0200 (CEST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\))
Subject: Re: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)
From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <CALGR9oacxe3EvYjeR_5yLpCga6EWcK_MLgvW_QCwidoH4Fjrzw@mail.gmail.com>
Date: Fri, 07 Aug 2020 11:20:09 +0200
Cc: Martin Duke <martin.h.duke@gmail.com>, Lars Eggert <lars@eggert.org>, quic <quic@ietf.org>, Paul Vixie <paul@redbarn.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <20E8EB0E-57C0-4C96-9CD6-DB0B69E94486@lurchi.franken.de>
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>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
X-Mailer: Apple Mail (2.3608.120.23.2.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/zw6P0toptJK1Qmzn8gboBqxc2bM>
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 09:20:19 -0000

> On 7. Aug 2020, at 02:16, Lucas Pardue <lucaspardue.24.7@gmail.com> wrote:
> 
> 
> 
> On Fri, 7 Aug 2020, 00:37 Martin Duke, <martin.h.duke@gmail.com> wrote:
> I am all for using TAPS concepts wherever possible, but I am not sure we should put all of our eggs in that basket.
> 
> I'm no TAPS or SCTP aficionado so take my view with a pinch of salt.
> 
> It's just that looking at RFC 6458 and seeing a 100 page document makes me wonder what would be required to do something for QUIC, who would implement that, and who would pick up the pen.
> 
> It seems like a possible divergent effort from other API work, which seems like a fragmented outcome.
> 
> How successful is RFC 6458?
Not sure what the criteria for success is. However, the implementers of SCTP for the
FreeBSD, Linux, and Solaris kernel used this document to come up with an API, which
is supported by the three SCTP kernel implementations. As an implementer, you had a spec
to know the application programmer expects.
You can now write a program and it should compile and run on all three platforms.
After the implementation phase, the document has been used by application program
developers to figure out how they can do what they want. When questions come up,
I regularly point application programmers to the relevant section.

Best regards
Michael
> 
> Also, I think it help would me to understand the incentives. The supposition was about an application wanting to use different QUIC stacks? Curl is already doing this and it doesn't seem too onerous. I'm sure there are other incentives though.
> 
> Lucas 
> 
> 
> 
> 
> 
> On Thu, Aug 6, 2020 at 4:27 PM Lucas Pardue <lucaspardue.24.7@gmail.com> wrote:
> Would TAPS fit your bill?
> 
> https://tools.ietf.org/html/draft-ietf-taps-interface-09
> 
> On Thu, 6 Aug 2020, 23:57 Martin Duke, <martin.h.duke@gmail.com> wrote:
> On this subject, (speaking as individual) I think it would be useful to define a QUIC application API. SCTP did one (https://datatracker.ietf.org/doc/rfc6458/) and the idea that an application would have to be written separately for each quic implementation is silly.
> 
> On Tue, Jul 21, 2020 at 11:18 PM Lars Eggert <lars@eggert.org> wrote:
> Hi,
> 
> On 2020-7-21, at 20:02, Paul Vixie <paul@redbarn.org> wrote:
> > my question is, has any QUIC implementor been thinking along these lines? i
> > believe that the parameters to a QUIC "connect" syscall would be larger and
> > more numerous than for a TCP or SCTP or UDP "connect" syscall, for example.
> 
> most QUIC implementations have an API that is at a high level pretty similar to the socket API, but different in all the details. And they are all different from each other.
> 
> Since you asked about a "connect" equivalent, here is what some of the C stacks offer:
> 
> quant: https://github.com/NTAP/quant/blob/master/lib/include/quant/quant.h#L110-L118
> 
> msquic: https://github.com/microsoft/msquic/blob/master/src/inc/msquic.h#L745-L757
> 
> quicly: https://github.com/h2o/quicly/blob/master/include/quicly.h#L892-L900
> 
> Pretty different.
> 
> Lars