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

Lars Eggert <lars@eggert.org> Wed, 22 July 2020 06:17 UTC

Return-Path: <lars@eggert.org>
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 11DB13A0E30 for <quic@ietfa.amsl.com>; Tue, 21 Jul 2020 23:17:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, 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=eggert.org
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 j0OBFoVykaZL for <quic@ietfa.amsl.com>; Tue, 21 Jul 2020 23:17:43 -0700 (PDT)
Received: from mail.eggert.org (mail.eggert.org [IPv6:2a00:ac00:0:35:211:32ff:fe22:186f]) (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 3D9203A0E2F for <quic@ietf.org>; Tue, 21 Jul 2020 23:17:43 -0700 (PDT)
Received: from [IPv6:2a00:ac00:0:35:b1a0:61d5:fc38:9118] (unknown [IPv6:2a00:ac00:0:35:b1a0:61d5:fc38:9118]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.eggert.org (Postfix) with ESMTPSA id 7DF2265072D; Wed, 22 Jul 2020 09:17:35 +0300 (EEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eggert.org; s=dkim; t=1595398655; bh=o1CKTVl36fEatuDWVt3VXiUh11d/wkxF4fQDj5dn/Sg=; h=From:Subject:Date:In-Reply-To:Cc:To:References; b=FUgHmSu2wcJq2q/kCO8DvhmuEXR6peoHoIZWkBWjHfOLvq4FQ+Ov+zmSkAhHXu8xq 0wBYW+7NTuePvZlCK9odfrQuEjXdcg5zds7fPHMfshPUgPx+TNCZYwiTaNaE3XnA50 YAtI6LJETvFpxx7aAGQepJ7kAjqcJ4gojLBOQo10=
From: Lars Eggert <lars@eggert.org>
Message-Id: <3D493D2B-BC8D-4CE9-B189-48770C3FA06F@eggert.org>
Content-Type: multipart/signed; boundary="Apple-Mail=_14C625FF-C365-43DF-80ED-EEEAAA578165"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\))
Subject: QUIC API (was: Re: Small size of core QUIC library to replace TCP for embedded system)
Date: Wed, 22 Jul 2020 09:17:33 +0300
In-Reply-To: <2499749.AO4zfZtjs8@linux-9daj>
Cc: quic <quic@ietf.org>
To: Paul Vixie <paul@redbarn.org>
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>
X-MailScanner-ID: 7DF2265072D.A4B5D
X-MailScanner: Found to be clean
X-MailScanner-From: lars@eggert.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/GqPJv1rSMPa4doFtZJ_9AeCltXM>
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, 22 Jul 2020 06:17:47 -0000

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