RE: QUIC API

Nick Banks <nibanks@microsoft.com> Thu, 06 August 2020 23:25 UTC

Return-Path: <nibanks@microsoft.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 425583A00F7 for <quic@ietfa.amsl.com>; Thu, 6 Aug 2020 16:25:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.99
X-Spam-Level:
X-Spam-Status: No, score=-1.99 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=microsoft.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 UuWmtui3dFJg for <quic@ietfa.amsl.com>; Thu, 6 Aug 2020 16:25:41 -0700 (PDT)
Received: from NAM06-DM3-obe.outbound.protection.outlook.com (mail-eopbgr640139.outbound.protection.outlook.com [40.107.64.139]) (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 68C703A002C for <quic@ietf.org>; Thu, 6 Aug 2020 16:25:41 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wa7/wo0FEmYJPlGYWELy0dO1+8/MqcI4FWdoeZeEKPKpJuVE/zYVuQ5okS/kVtfOs25Jg8DC9+Kr3EPlOQw+lU+VQ/gWVhOxdE6l46mjAWUYEPIOsoNvLESXmJf3YQN1paoPshZXBj18pctSsEzjZ9hGABBTPUhWvFg91eY+ltJVT4m2c/Pr5GP6S0pAPx3jzrP20PBkERdhCgjAMeNpCyVFdH8Zz/UwWfZakZ8M7bY83eVNLCxBlIedQILXZnWfWKoHRlaf6BkZSkTZcXMyGPsNB2D3mzv9cCd/qyB1V056Jf7KFMqZN1qM4n+L9cffk+QmF5m6lLdZYglimpRrGA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sGyTAY6Ppy5uePdhAJTJLC6zo0/bJBsoNUYwa6q29ww=; b=UAvwkpVP1sK1kSE5gnMyNpSW1bqCM3nOFJI3FECAj/XLs2Iby/rPeNcmFnaOsRViXoQDLzvEn0LRiow6X4HM0sa7THgpkaAlM75sPQK/E3lCF/kK/XqvevidT4VWCwVptok9aRCgNoLknQEGWLFhyi5Lq7ehMotz6xAAW+Bty5b3UwX8tz7GDqlIDIbm3rFoEoXRFQC55JYA8vaM361N+74rLOlU9EhhC2YNCNIbF3U1hB0xmN+eBEbIr/nyBOaeyblxUG7ljTjiMZHjQcFkItxYwdtLu50acByS/eRAcDWcKa/a8uNT/qZujB93GdK5dlzDxRwdYY+3E/Vm5tTS7Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sGyTAY6Ppy5uePdhAJTJLC6zo0/bJBsoNUYwa6q29ww=; b=Zgk7QP4lZkDnLQ4yp0v6X6jDAtRIKoJvHwnd6CKIkhQEywWS3WANUcoeYaQaEQvLImhREfumxfc9P5QJkMpamXHF8dY258zP9ER87Bax13lNlckMT3NUJ7Ml6JAmvFIhCcwdup9u9FEQh9GIc//TDLEL7yTqCoLXRwcATPaApTo=
Received: from CH2PR00MB0764.namprd00.prod.outlook.com (2603:10b6:610:63::8) by CH2PR00MB0679.namprd00.prod.outlook.com (2603:10b6:610:af::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3306.0; Thu, 6 Aug 2020 23:25:35 +0000
Received: from CH2PR00MB0764.namprd00.prod.outlook.com ([fe80::999:f830:ecfc:77a2]) by CH2PR00MB0764.namprd00.prod.outlook.com ([fe80::999:f830:ecfc:77a2%8]) with mapi id 15.20.3306.000; Thu, 6 Aug 2020 23:25:35 +0000
From: Nick Banks <nibanks@microsoft.com>
To: Paul Vixie <paul@redbarn.org>, Martin Duke <martin.h.duke@gmail.com>
CC: Lars Eggert <lars@eggert.org>, quic <quic@ietf.org>
Subject: RE: QUIC API
Thread-Topic: QUIC API
Thread-Index: AQHWbEdCtBNLzPjRxk22TGI2PFGeLKkrtv+g
Date: Thu, 06 Aug 2020 23:25:35 +0000
Message-ID: <CH2PR00MB0764F66A5CDFF5C98C84C4D5B3480@CH2PR00MB0764.namprd00.prod.outlook.com>
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> <cafecddc-4f00-7345-ade6-e506cdeae17c@redbarn.org>
In-Reply-To: <cafecddc-4f00-7345-ade6-e506cdeae17c@redbarn.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2020-08-06T23:25:31Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=b27b81b9-3bc5-44c5-b37b-fd73e761334b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0
authentication-results: redbarn.org; dkim=none (message not signed) header.d=none;redbarn.org; dmarc=none action=none header.from=microsoft.com;
x-originating-ip: [66.235.1.136]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: 7452ebaa-4e8d-4daa-3784-08d83a60053d
x-ms-traffictypediagnostic: CH2PR00MB0679:
x-microsoft-antispam-prvs: <CH2PR00MB06798BCA20F15378E09FC401B3481@CH2PR00MB0679.namprd00.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: jicIWzVgPPWKm5syUXodXn9jvIgfa0BZiyLbRf3lhLJ/g26vSsyXaMBhZGeQpvz1Hs0OOi0R1sMXkw4ZEajvyGYvLAB9fU7418gx4U4o7y0RSkSYE1qW++rGnUIGFgQihOR8JwRjwTtWUXnYJpiSnuQVW0VqnIegALvbwKJsu3qK0wkZcNbSTsXrfduX62s8eS90ERAMjlHohiUNV4zzfz2Fnw9AE/N9QcIpgwlqxYj6nbYuDz9dOaLbQQ65obityxFrUM/dVNplps2NhcjkeH0pAgu3WQkgNHx8f3U3ZVbpDcg8D4VTFXrofUWMFHqRLtD9/1erCjL96PZ5C9BkysmlBT0hJuGR+4g2nIqqOC9Fo8slYLNUyRnMT7ria1kAO0d4tSDy8JiI5L5K2ZlP3g==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR00MB0764.namprd00.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(396003)(366004)(346002)(136003)(39860400002)(52536014)(66946007)(76116006)(966005)(5660300002)(478600001)(82950400001)(82960400001)(3480700007)(86362001)(66476007)(66556008)(66446008)(64756008)(2906002)(4326008)(166002)(66574015)(8936002)(8990500004)(83380400001)(33656002)(7116003)(26005)(55016002)(8676002)(316002)(54906003)(110136005)(9686003)(6506007)(186003)(71200400001)(10290500003)(53546011)(7696005); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata: yHlx1GKLzx9WVYAWP2isKLnuIs3d7iIeS1bulo3lL8Rd9SeJhiFlicxL3bp/93nhWZZnQjsC/k9c5K3go0tSGy4EHdeIz6n163e0qRGT1Ifkf3i36TTpH8GQ9ZP4UAuRsT4qTLBUyBJhAx3vd7VFQBbxMoBDArr/aQ/+Q+hok6/uIxm8KMISQqD+3Z75Svs4uga8diASO6yKIAQtCK+53aGfH96WHjD92ST/GjuXD1Cey0TphYiYybp1D/OVCQ5Sl40w89QwfKOVh/9Db59o0cGV4WFnHWTQRGbdj38y9Tgchl8o+avGMFxgZ2BmBw/rSnwYkEFRv0CxRGD9sghWxgmD0pTBSQ0yQPIu3PGKwyGP0Gimk98f63bqfe1kqIFRdZy0bR1o/i5t3aYRU4M3C+SkFFJ3uGED+oTQKWUwwa0DtBxGy15aAEhu1dd+Gwr4ka4hOS/Wxsp+zN16klzdFVQEL/zcKGg1i8oMhIwkPXPmbmT6Iy56O7bI9CfML7kIgCZTf6SV7IPk2I6xe6fv37V4JxLG4EJYdz97qVMot3sRIq4vxNh/MHP78MfElCiJ0c7EGlfAJFqYXZSqR7vJZzlNSVZPyXGszy52txaDeWsfwIFoSmM6MhmjTpSazhhQmgwCYfjDJuNYnYc2Df1v0Q==
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_CH2PR00MB0764F66A5CDFF5C98C84C4D5B3480CH2PR00MB0764namp_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH2PR00MB0764.namprd00.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7452ebaa-4e8d-4daa-3784-08d83a60053d
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Aug 2020 23:25:35.1029 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: NhXB6MZ/1fgDjs2pikFvTCImHdfohxb7gQcv4Gfkj/H3S25dEtCWa8jh1BgiyJdpEA9QAhBp1FyvZD7YFIrtVQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR00MB0679
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/aRnkPkT0bhIqci7FCPe08n795vU>
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: Thu, 06 Aug 2020 23:25:43 -0000

MsQuic has a fairly generic (msquic.h<https://github.com/microsoft/msquic/blob/master/src/inc/msquic.h#L992>) API that is used in Windows by two completely different production protocols (HTTP & SMB), a number of tools/tests and several prototypes. It’s also a WIP to be exposed in .NET core. It has some documentation (start here<https://github.com/microsoft/msquic/blob/master/docs/API.md>). It’s still a work in progress, but probably about 90% complete. I’d like to think that our API exposes pretty much the entire QUIC spec’s worth of functionality in a general purpose way. It uses all async IO (which I know quite a few aren’t a fan of) and it’s completely separate from sockets. I’d be happy to work with any group that wishes to try to outline a general API for QUIC. Also, if you have any questions or comments on our API, feel free to file issues on our GitHub repo: https://github.com/microsoft/msquic.

Thanks,
- Nick

From: QUIC <quic-bounces@ietf.org> On Behalf Of Paul Vixie
Sent: Thursday, August 6, 2020 4:12 PM
To: Martin Duke <martin.h.duke@gmail.com>
Cc: Lars Eggert <lars@eggert.org>; quic <quic@ietf.org>
Subject: Re: QUIC API



Martin Duke wrote on 2020-08-06 15:57:

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/<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Frfc6458%2F&data=02%7C01%7Cnibanks%40microsoft.com%7C42ecbc69fb5744fd4c4808d83a5e2e0a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637323524361871926&sdata=4Y9dkOYeSsWkZMPYWGWwCA%2Br7Bw2BpLx6ws1ErWPOFo%3D&reserved=0>) and the idea that an application would have to be written separately for each quic implementation is silly.

i agree, in two ways. first, something like getdns (see https://getdnsapi.net/<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgetdnsapi.net%2F&data=02%7C01%7Cnibanks%40microsoft.com%7C42ecbc69fb5744fd4c4808d83a5e2e0a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637323524361871926&sdata=Amdt0pV4oLxGtZvF%2FEpuMoZMp9WRKUth3iCul%2FEa%2Bg4%3D&reserved=0>) to describe the core functions and standard language-specific bindings would be good. as with dns, there may be more than one instance of this kind of thing, but it would be good to see shared libraries generally available so that a quic app (and perhaps also HoQ, DoQ, and other layerings) could be normal dependencies of packages we install. RFC 6458 assumes that the the sockets API will be involved, which does not facilitate the kind of user-mode transport that QUIC anticipates.

second, something like RFC 2292 (see https://tools.ietf.org/html/rfc3542<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc3542&data=02%7C01%7Cnibanks%40microsoft.com%7C42ecbc69fb5744fd4c4808d83a5e2e0a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637323524361881882&sdata=9ygGCiFbsP9phEF78igkzrUWP%2FBaX0aPyw0kfeckhqA%3D&reserved=0>) or RFC 6458 [ibid] that explains how to access quic through the socket interface if some of us want to use the system call interface as a monitoring point (so, like dtrace) or a control point (so, like anti-malware), and where UDP sockets might be restricted to privileged processes and the kernel, but not generally available to apps who want to avoid the kernel operator's monitoring and/or controls. as a kernel operator i don't plan to trust my apps to do things that are not transparent to me.

if anybody decides to work on either one, i promise to review, comment/discuss, test where possible, and perhaps implement/prototype.

vixie
--
Sent from Postbox<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.postbox-inc.com%2F%3Futm_source%3Demail%26utm_medium%3Dsiglink%26utm_campaign%3Dreach&data=02%7C01%7Cnibanks%40microsoft.com%7C42ecbc69fb5744fd4c4808d83a5e2e0a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637323524361881882&sdata=LSRr0XnJj65RuVVXzwwdKbA7kverhGC5nzMugqrcLQ0%3D&reserved=0>