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

Lucas Pardue <lucaspardue.24.7@gmail.com> Fri, 07 August 2020 12:50 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 EBBFD3A0CF8 for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 05:50:12 -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 vXcuTI59BRJq for <quic@ietfa.amsl.com>; Fri, 7 Aug 2020 05:50:11 -0700 (PDT)
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) (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 7AC463A0CE5 for <quic@ietf.org>; Fri, 7 Aug 2020 05:50:10 -0700 (PDT)
Received: by mail-wr1-x434.google.com with SMTP id r2so1563752wrs.8 for <quic@ietf.org>; Fri, 07 Aug 2020 05:50:10 -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=DRbi+Adyt9MlhMRexZwDXl2Sll32igbPlW2xSG+KvkI=; b=Nn/Q+nI68SpSxlZH5TsQZxgBl4kMC47ywaqMs/ly1VRsYsXOEe1RL9dhf9dIVOwsce pMIIJkpGg+D2I7ZnGe7MYOcf+cu3ctQg0pPR2otQgYw9yBNGYo1CPIS9ZldSoz8xTScP VUVGXU4VizjOgCNq+TbpSJdpghH+qvKj3iaSBFajPCYgT1gnXh62ZQxCSba+Uk4F9krX FS2bTk3XZtQZ7f+CmomhkF3ffNFkkvZo2rXeQDkny3u2n6nKMf0eHxsjk9E9jFcDp/X0 rMkotQMj2Jjx0ZWQzZ3zGbAcTtQ/3aIQ4pRH52Tbwd0J41CqtPYLqQxIy8NAa1I5h/g9 RoBA==
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=DRbi+Adyt9MlhMRexZwDXl2Sll32igbPlW2xSG+KvkI=; b=NmxuJQT1lfeALxL4aMBE5l+EEgGQyxZ1mXsbGe3i9MC2snRykSlu2Tr1ORuAMJzvkg Hff3KMgUV3aYTA3wQdb6ur1euLzYfEn3tijFyRKn1usQ3sFfo7UMzMIi6DscIE/Qz3al TXx5/cMExjtfL3GuJeJpKIiYwjLH3bArAB2gWQyXHCiwJDRMk4M/x2syit/hnsiAl3rs BVdZle34zaunhHPeBKWHjhoSsYK2PtaVnkmA8wsb6ar5lW90b0em9XII30fAhKm2lX2p FOdmAdF1VQ61lD6T8OIdMf3BNPi9fRcVMGGC0aK691Ubf+Yrexs0wfcIAiO3Qc62Kg7q nDIw==
X-Gm-Message-State: AOAM5335Q6M4xBWtZ89bkzBe/KA2A0zSN7JEUV8fvTjCAk4WjLNann4g iDYW/hrdj4L2S7cBGZ92jsHB7/Al1JYNjOpiA5E=
X-Google-Smtp-Source: ABdhPJyBaTf91NCqmPyT1d4wec8ZoyUJucZ3PH+VsC/4HC8BERpLF096i5dzGn55yuKwrNqR8VXBEb3z/Tal0TrCbRQ=
X-Received: by 2002:a5d:480b:: with SMTP id l11mr11482415wrq.85.1596804608884; Fri, 07 Aug 2020 05:50:08 -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> <20E8EB0E-57C0-4C96-9CD6-DB0B69E94486@lurchi.franken.de>
In-Reply-To: <20E8EB0E-57C0-4C96-9CD6-DB0B69E94486@lurchi.franken.de>
From: Lucas Pardue <lucaspardue.24.7@gmail.com>
Date: Fri, 07 Aug 2020 13:49:59 +0100
Message-ID: <CALGR9oYbRGy-1HGAJqUfT41LbRgANe2rj13uie6zh_SR3qoUTA@mail.gmail.com>
Subject: Re: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)
To: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
Cc: Martin Duke <martin.h.duke@gmail.com>, Lars Eggert <lars@eggert.org>, quic <quic@ietf.org>, Paul Vixie <paul@redbarn.org>
Content-Type: multipart/alternative; boundary="0000000000007d022305ac490b31"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/jEWMLAnb7v3infHi3sJRx5L9DlU>
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 12:50:18 -0000

Thanks for the additional context on TAPS and SCTP.

The interesting thing for me in this context is the diversity of current
QUIC implementations in terms of programming language (and language
bindings), operating system support, and design paradigms. Which were
mentioned up thread by others.

Using Cloudflare quiche as an example, it is written in Rust and provides C
bindings. It is independent of UDP socket and operates a bit like Kazuho's
description of a push encoder; the application sets up a QUIC context
(connection), feeds in application-layer data, and is presented a QUIC
packet to be sent. This happens in the application's event loop of choice.

Quiche provides a transport API layer and an HTTP/3 API layer the
integrates on the top. Rust applications that use quiche can use Rust's
network layer and benefit from it's cross platform support; we have example
applications that work across Linux, Windows, MacOS, iOS, Android.
Applications that use the C bindings have more work to do, mainly due to
the difference between UDP socket programming.

There are a already a large collection of QUIC implementations in different
languages and using different paradigms. I think that diversity has
benefits. I struggle to see how defining a common QUIC layer API would
actually work out in practice but maybe I just lack vision.

To give an example, an HTTP application is unlikely to write its own HTTP/3
mapping on top of QUIC. They'll rely on a mapping layer and chances are
that it has a preferred integration with a QUIC layer. It would be
interesting to poll the maintainers of such libraries to see if they
perceive value in substitution, because chances are they are the ones that
would have to rewrite both sides of the API boundary to make this a reality.

Lucas