Re: [Masque] MASQUE extensibility

Mirja Kuehlewind <mirja.kuehlewind@ericsson.com> Fri, 08 January 2021 14:19 UTC

Return-Path: <mirja.kuehlewind@ericsson.com>
X-Original-To: masque@ietfa.amsl.com
Delivered-To: masque@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9520A3A0FB9 for <masque@ietfa.amsl.com>; Fri, 8 Jan 2021 06:19:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.35
X-Spam-Level:
X-Spam-Status: No, score=-2.35 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.25, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-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=ericsson.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 3D2cZpsm3HFc for <masque@ietfa.amsl.com>; Fri, 8 Jan 2021 06:19:38 -0800 (PST)
Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40086.outbound.protection.outlook.com [40.107.4.86]) (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 54B1A3A0FBB for <masque@ietf.org>; Fri, 8 Jan 2021 06:19:38 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OM6jsEZHqZ1tE3dU30aXbNlWRuDb5gFgh/OV0Nyt4w3dXCxFhWGNb8oipRaEJyyz0NsdXF6Qkat17mTutkig4z1nxVt0AnmqKAv/KqHCnlLRNfO5xO22PZGwCqoXOnZ22nxhyIDCqzAIDheXZiCwLYdN6HaG5UqgcV30W7f8in6r2M1YpktZ/YJfy3/Lo0bw+A5goz3YRcp5j6jBgvmwFnR+IQdFqFIpHSYTu9YbkgSrWzy4qd2avg8ilYqousemJWzHdl5EZ8pKACuPRIPYBCojsIkRP/w/OPVyUkLXlV6sKOnaovSVL02Krx+HZY4pF+76aIigc41ROfQRlvzmnQ==
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=rSb4OoJ+6ROMuKf1Wyy7tZalHGs5lwfAqDQYtj8Qm50=; b=KvWPi4zja3J9Pmf+v+CQtA1uxPNIZXUZtBR/V1mnqsU7w/P7aNU1An9MwFwo0ZhXehiTHrYi6rHBJqj6p0xJEVD4IUUzk/rR72vFhBrE1TT1M0PvpDtVWCpkAMcMrYIN+Vihz1FwJFdy7ZY7UwBbNGmVR3/+T8mmhmt/MV6g3RtNiEVQI4DN/MTSwt5qCJU+o6ughq5QQxxYCs21KMruB0qUNRr5HTxeN149BjHa2VG6eP1SxZ4XyGHPV+IL+kFW4sOymUwSuAfba1Wscz8urtFAN63wLKXJxd41Wt+O71bQ4AEUVKE2qIMmQYtfQmtfU0rKKQRuqdbDCobRoOa0Jw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rSb4OoJ+6ROMuKf1Wyy7tZalHGs5lwfAqDQYtj8Qm50=; b=hHIaMz/bGUQIKrIgnekWMhRq7yuXHjT4cbsojUb5mU38LanWDK4wVF5IOZgMjMy8G9VnpwIBAv0hwkyMDU1jHhVMZoaOfdOUqDwi6UisCchEbZZf+FuX9VT9YEYc9iJRzIQE/HSzR+3Ivaw+SdvAJVTqheBvKxzIgZU5EKjCfK0=
Received: from AM0PR07MB3939.eurprd07.prod.outlook.com (2603:10a6:208:40::14) by AM0PR0702MB3554.eurprd07.prod.outlook.com (2603:10a6:208:1e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.5; Fri, 8 Jan 2021 14:19:35 +0000
Received: from AM0PR07MB3939.eurprd07.prod.outlook.com ([fe80::d1a5:d2f1:5d62:ee4b]) by AM0PR07MB3939.eurprd07.prod.outlook.com ([fe80::d1a5:d2f1:5d62:ee4b%2]) with mapi id 15.20.3763.004; Fri, 8 Jan 2021 14:19:35 +0000
From: Mirja Kuehlewind <mirja.kuehlewind@ericsson.com>
To: Martin Duke <martin.h.duke@gmail.com>, David Schinazi <dschinazi.ietf@gmail.com>
CC: Ben Schwartz <bemasc@google.com>, Christopher Wood <caw@heapingbits.net>, "masque@ietf.org" <masque@ietf.org>
Thread-Topic: [Masque] MASQUE extensibility
Thread-Index: AQHWynrAyUiy9ZHmKECb+w2B6Bew26nvJm8AgAARZgCAKm9PAIAA2m0AgABZH4CAAAE1AIAAHUKAgABlnQCAAALIAIAAC3mAgAKhXAA=
Date: Fri, 08 Jan 2021 14:19:34 +0000
Message-ID: <2A58C2A6-406A-4F12-91B1-C3FDD8543544@ericsson.com>
References: <c0c5a81a-4b96-4d8e-87b6-958323cda14d@www.fastmail.com> <DB1145E2-F51E-46BB-9E06-0E87416E8715@ericsson.com> <CAM4esxQOVpkwb4SFiZhg_SRhEwV9QThaBiAT_LOUVsNRkBDkWA@mail.gmail.com> <de4f5b94-3bdb-4a18-bfc3-9c864e47041a@www.fastmail.com> <CAPDSy+5hJvP=i5SEzMczsxT-OixwU54sdCJoAd6Nmrfj-OBc4A@mail.gmail.com> <8f1e39b4-afde-4cf4-8168-61d6c52c4271@www.fastmail.com> <CAPDSy+7o3K_4RnijrOmrrs=DaJeGKRz35H2OBjaGsuj-SgC6aw@mail.gmail.com> <CAHbrMsBECD7oFP+VMWcesS+OtUBsotyd=3B3kyw8VYPEfpzUiA@mail.gmail.com> <CAM4esxQurncJfpBSmWNueZ2imedALcQNnZ7r699U9JOGmAPWpQ@mail.gmail.com> <CAPDSy+4wTQ8w+x25RghMw+TYNm=ZNov+rxWZd6XPROh8YWk8sA@mail.gmail.com> <CAM4esxQ_E8jgx_jF2Tkep_6PBMDvWUmWCKFFtihpjMRc0QMkjQ@mail.gmail.com>
In-Reply-To: <CAM4esxQ_E8jgx_jF2Tkep_6PBMDvWUmWCKFFtihpjMRc0QMkjQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.44.20121301
authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=ericsson.com;
x-originating-ip: [93.195.65.185]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 116de1a4-c021-4b40-666a-08d8b3e06cb3
x-ms-traffictypediagnostic: AM0PR0702MB3554:
x-microsoft-antispam-prvs: <AM0PR0702MB355464EC285A6E16B4F13755F4AE0@AM0PR0702MB3554.eurprd07.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:4941;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 73hne/xVk1R2TDoEYo6OFO2CBadNkyFFLMdQx7SsM66ESulEAYJuVDxcbfVyIER9J12ul/Flns9zX2rBGAXw20PqX9tneSn3/pp/c0pKaYyLuxbjuNiSmyTZsCtv/RAGZGi9FCVBRP2WQVcn9otXyIYkbLWeFU7IHAvw12CuTJM2PKTl6wFdzOrPPhW29q1i9ND6pj8I7M5MkOCsMFpMLhrCcNEm5oLcV/rXUvlvd2V//0ulnY16iGwKHv93LIz0vyL6WsPH9lFf6t3bz73V8KT0eP7EFzs82qooq6BxrIK5aPFty4vtwOgmgY/cQ43dIgsGKTw91NQ4dOF+MjEd8tVaQtIpLE0HfIRl9jiT9K9LHvaIC1oL6Ge6vjl05NcHBGFH6ocIcPzQJ6eT4anVa4ndMoRM3U5FBm+ye4PY9TowHhcTinqAdGYrlQ2xnc7/C4k0bu3pNTG58wQlZHU5HJ4j1oYgP31VIhp0bj/n4vB7zME2SGV5MVWfNgKABuyDWsgkeVn2CznBjrfs3eJMIQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR07MB3939.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(366004)(376002)(396003)(346002)(2616005)(66476007)(8936002)(76116006)(66556008)(83380400001)(36756003)(53546011)(66446008)(66946007)(71200400001)(6486002)(64756008)(2906002)(6506007)(110136005)(30864003)(66574015)(478600001)(4326008)(166002)(26005)(8676002)(86362001)(33656002)(54906003)(316002)(966005)(5660300002)(44832011)(6512007)(186003)(45980500001); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata: l5SkklRvrvixUw7/cJB/v9dKal1bINyq71W5dfDJuCBXsfbbKgNt9iFDuaGc6ugGu0h9tqsuJk2CCsmB22FD/UVR6Dmu94BFtkJeQUS8E2Y+zoBuxju2LDis0iGKv4eC/zMFoQ+0pwBRbdczMu9Whg8Yef7C/HRQf2z9AG42/71XywefPNQDfYQlrWPPKeox5cTNbeBbX0nYZHin25NVY2AidN4uQalfs8i0DDA4b0zXmA3rxVXfwOkt97gQkSL7ViXX+lgiFvEHIiOdW6c69ljYZUhZFuL1lxbd99cMWGWpRx/NqqJG/B+GfRaGfVX0jdxsMvEhOh9nr/VnXgur1Lt8fMfxn4aDiiZ2rGF8e2xQB/y7H6VaBMMaFWYMihW70sMVPkgOE0GBq/OdpLAJZCQsnF90m4voxK8Eeklftt73k8Dtyo99GqNBtjTQM2C8Qt8KvoFRdaIJ79kTv+tneFU3RfqxMca5kd/1m8kSib69we7MD4DX4WqjYJ5yyfYgKxzebMe6UCvjl7N9XhHwF/bPG/IKwSJ/EaWoNyV4IB4UcxHL0jEojZVlbp0BXkn8cU2i5mjOj7EjNnSEAsCJBqJ4fZHJfjRI37Lj+LPFNdcnSR0OUDOHmnerijOg/dj2Fyk0ULdNuJyWbMiFRr0g8LAmz+Vd4tjgbjdKn7t8NF+rUTV0Yfpvb3FkLrV7258WjUEP4Eye2ldm9B2JYa4sH7mCUtjZ9Mb0+83/XyUKK80KZWkWeVb0nChooSpVs8QUAyRO9tOKIWH1g93Fteml8JBiu7ogHBCm4zFP8Vqwm+na6k3zjwdJ32fJGKnlKJs4M9/K/79DLybgyPzgjE5MkgOwgAoYIPmBFCLd4QX0wf19dI6KsXAHwFLLmkxal+3B9v/CfDTXgJ/WEKryrubuQxyVrJFooOyN5fXfhSOMIXNYqb8KI2b5mf3iKM5W0bSxJlSebRuTHoLFBYn8y0e1WEqzAyjmVpvschLtKP7tkw/4Kxz+hFIIT8q0KeAs2IrC
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_2A58C2A6406A4F1291B1C3FDD8543544ericssoncom_"
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM0PR07MB3939.eurprd07.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 116de1a4-c021-4b40-666a-08d8b3e06cb3
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2021 14:19:34.9438 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: J9qpyzkI8HaxnKpho3QxeXvroVLD2NZOi9EWi88KWEVo8+PQ2RE2EvsEnQ/aAAm4g5huTeeb78f/oM7rua1fAD9tHsmnzy+SbISJwRJ6BxU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0702MB3554
Archived-At: <https://mailarchive.ietf.org/arch/msg/masque/7BtmJl5R0XH6ImQKN6f9HB9OIME>
Subject: Re: [Masque] MASQUE extensibility
X-BeenThere: masque@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Multiplexed Application Substrate over QUIC Encryption <masque.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/masque>, <mailto:masque-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/masque/>
List-Post: <mailto:masque@ietf.org>
List-Help: <mailto:masque-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/masque>, <mailto:masque-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 08 Jan 2021 14:19:43 -0000

Hi all,

what David described as repeatable or non-repeatable data, I would rather distinguish based on the fact if the information is need per packet or per flow. For ECN there are two approaches to provide the information one or the other way (of course enabling a different granularity):


  1.  You can provide the information per packet by indicating for all packets from the client the IP ECN codepoint that should be set on outgoing packets and for all packet to the client which IP ECN codepoint was set when received by the proxy. This information is needed for each and every packet (of course you can define some default but that might not safe much) and provides the client the most information. So you can simply request support with the CONNECT-UDP request and prefix very datagram/stream frame with a field.
  2.  You can also just provide ECN feedback based one accumulated counters similar as QUIC ECN feedback is provided anyway and also how Accurate ECN works. Given this is the same granularity as provided in the transport feedback to the sender, this feedback granularity is sufficient for congestion control. However, for setting the ECN IP codepoint on outgoing packet the client might want to specify more specifically which codepoint should be set on which packet, e.g. for probing. However, there are ways to realize that as well, e.g. probing could actually also be done by the proxy and reported to the client, or the client could have defined point where the codepoint can be changed in a flow. Anyway this kind of signal would not be specifically related to a certain packet and could be done based on a request-reply scheme between the client and the proxy on the stream that has been used to request the CONNECT-UDP.

I’m not sure yet which is the better design for ECN, however, not matter what we decide for ECN, I believe we need both signaling scheme for different uses.

Mirja




From: Martin Duke <martin.h.duke@gmail.com>
Date: Thursday, 7. January 2021 at 00:09
To: David Schinazi <dschinazi.ietf@gmail.com>
Cc: Ben Schwartz <bemasc@google.com>, Christopher Wood <caw@heapingbits.net>, Mirja Kuehlewind <mirja.kuehlewind@ericsson.com>, "masque@ietf.org" <masque@ietf.org>
Subject: Re: [Masque] MASQUE extensibility

I'm increasingly optimistic that this will work. For a while I was concerned that including DSCP + ECN would use up 8 bits, but in practice you'd use no more than a handful of codepoints and:
1) As David suggests, the extension can always define that a flow ID contains some metadata before the payload
2) In the method you can ad hoc define some flow IDs to correspond to the DSCPs you want to use: eg, Datagram-Flow-Id = 42; AF13, 44; AF23, 46; other [other would be used by the proxy if it receives something besides AF13/AF23 from the server]

On Wed, Jan 6, 2021 at 2:28 PM David Schinazi <dschinazi.ietf@gmail.com<mailto:dschinazi.ietf@gmail.com>> wrote:
+1 to what Martin said, WebRTC can be supported by making multiple CONNECT-UDP requests.

Regarding Ben's example of many bits, I'd regard that as what I called non-repeatable-metadata earlier. Let's say that you want to build an extension to CONNECT-UDP that optionally encodes a 32bit timestamp, some datagrams carry a timestamp and some don't. You would send:
    Datagram-Flow-Id = 42, 44; timestamp
This would have the following semantics:
- all datagrams with flow ID 42 just contain the UDP payload
- all datagrams with flow ID 44 contain a 32bit timestamp followed by the UDP payload

I'm not suggesting to encode all metadata in the flow ID, only metadata that is very often repeated like ECN bits. If you have a large number of bits, then Ben's right than encoding it in the flow ID is a bad idea because it would use up 2^N flow IDs. I'm suggesting to use flow IDs for repeatable-metadata, and the payload for non-repeatable-metadata. Sorry if this wan't clear from my earlier message.

David


On Wed, Jan 6, 2021 at 11:18 PM Martin Duke <martin.h.duke@gmail.com<mailto:martin.h.duke@gmail.com>> wrote:
I'm not sure I understand, Ben.

I imagine binding a client port to each of those endpoints is a separate UDP-CONNECT exchange -- they are different IP flows. Or are you asking for a "UDP Listen" where the peer IP/Port is unknown?

On Wed, Jan 6, 2021 at 8:15 AM Ben Schwartz <bemasc@google.com<mailto:bemasc@google.com>> wrote:
One important use case that I think is missing here is WebRTC (i.e. ICE).  For ICE to work efficiently, the user needs to be able to bind a single "client port" and use it to communicate with several (~3-10) distinct endpoints.  These endpoints are typically not known until _after_ connection setup.

At a minimum, this would require a way to add new flow IDs, bound to distinct destinations, after the tunnel is up.  That would exactly parallel TURN's ChannelBind request.  This is possible within the current CONNECT-UDP draft's framework.

My main concern with using flow IDs for metadata is that it invites a combinatorial explosion: encoding N bits of metadata requires allocating O(2^N) flow IDs in the Datagram-Flow-Id header.  With 2 bits of ECN, we're OK, but it's not hard to see how we could get to 10+ bits over time.  However, if flow IDs can be allocated as needed via new commands in Stream Chunks, this makes the problem much less pressing (only combinations actually used must be allocated).

Regarding lifetimes, cleaning up unused flow IDs can also be handled within the current framework, by adding another new command in a Stream Chunk.

On Wed, Jan 6, 2021 at 9:31 AM David Schinazi <dschinazi.ietf@gmail.com<mailto:dschinazi.ietf@gmail.com>> wrote:
Thanks! Yes, that's exactly what I meant by "repeatable" - perhaps "repeated" would have been a better choice of word here.

David

On Wed, Jan 6, 2021 at 3:26 PM Christopher Wood <caw@heapingbits.net<mailto:caw@heapingbits.net>> wrote:
On Wed, Jan 6, 2021, at 1:06 AM, David Schinazi wrote:
> Hi Chris,
>
> Thanks for your note, I think that we should strive to reach consensus
> on extensibility goals, requirements, and means around our upcoming
> interim. However, I don't understand all of your individual questions
> (for example, I don't understand what the word "fixed" means in the
> first question). Perhaps allow me to try to phrase these questions
> differently, to attempt to distill fundamental concepts.
>
> What we're mainly building is a way to convey data (e.g. the payload of
> a UDP packet) and metadata (e.g. the UDP port number); I'll further
> subdivide metadata into two categories: repeatable-metadata (e.g. the
> IP address of the target-server, ECN-ECT(0) vs CE) and
> non-repeatable-metadata (e.g. the timestamp of when the UDP packet was
> received). One way we could have built CONNECT-UDP was to send all
> repeatable-metadata and non-repeatable-metadata in every single packet,
> i.e. every single DATAGRAM frame carries the target-server IP and port.
> But, in order to improve efficiency and simplify management on the
> proxy, we decided to associate repeatable-metadata with a flow ID, and
> then only transmit the flow ID in DATAGRAM frames. This introduced the
> need for managing lifetimes (how long does the proxy maintain the
> mapping between flow ID and target-server IP+port?). We decided to tie
> this lifetime to the existence of the bidirectional stream that carried
> the CONNECT-UDP request. We did this because it resembled how CONNECT
> worked, but also because it was efficient and relatively simple to
> implement.

Am I correct in assuming that "repeatable" here means "possibly sent more than once across different packets"? I assume so, given that the target address is one such example.

Either way, this is a *much better* phrasing of the fundamental problem. Thanks for writing it up. :-)

> Now, to dive into your questions, let's focus on the example of
> CONNECT-UDP with ECN support. ECN adds two more bits of metadata per
> packet, and those bits are repeatable-metadata. From my point of view,
> the most logical way to encode those is to reuse the mechanism we built
> for vanilla CONNECT-UDP: we associate this repeatable-metadata with a
> flow ID. The latest version of the drafts (see links below) does this
> by having the CONNECT-UDP request/response negotiate four flow IDs. But
> we could have built this differently.
>
> Question 1: should repeatable-metadata be sent in each DATAGRAM frame,
> or associated with something like a flow ID?
>     The efficiency benefits lead me to conclude that associated is
> preferable.
>
> Question 2: should the lifetimes of these mapping be distinct or tied?
> I.e., should we be able to get in a state where we have a mapping for
> ECN-CE but not for ECN-ECT(0)?
>     Separate lifetimes can lead to odd bugs, so I'd prefer to tie them.
> This means not using four bidirectional streams per CONNECT-UDP with
> ECN flow.
>
> Question 3: Where do we encode this mapping? Flow ID or new QUIC or H3
> frames?
>     The flow ID is a simple concept that is simple to implement,
> especially if you don't control the underlying QUIC stack, so I prefer
> those.
>
> With this reasoning, I think that the current proposal is a good
> solution to our constraints. But if someone disagrees with these
> conclusions, please let me know - perhaps there are other concerns that
> I'm not aware of.
>
> draft-schinazi-masque-h3-datagram-04
> <https://tools.ietf.org/html/draft-schinazi-masque-h3-datagram-04>
> draft-ietf-masque-connect-udp-03
> <https://tools.ietf.org/html/draft-ietf-masque-connect-udp-03>
> draft-schinazi-masque-connect-udp-ecn-01
> <https://tools.ietf.org/html/draft-schinazi-masque-connect-udp-ecn-01>
>
> Cheers,
> David
>
> On Tue, Jan 5, 2021 at 9:05 PM Christopher Wood <caw@heapingbits.net<mailto:caw@heapingbits.net>> wrote:
> > Happy New Year, all!
> >
> > Thanks to everyone who chimed in on this thread! To summarize responses we received so far, it seems clear that we want extensibility for CONNECT-UDP and the future IP proxying mechanism, and that these should exist in separate documents. David’s draft specifying an ECN extension [1] is one such example. It also seems clear that HTTP headers make for a perfectly fine extension point for CONNECT-X requests.
> >
> > What remains unclear is how to support extensions within a proxy context, i.e., a CONNECT-UDP stream. Martin nicely outlined some of the variants, such as encoding things in per-datagram framing bits, negotiating and encoding information in flow IDs, or using different frame types entirely. We should try to converge on which of these options we need for generic tunneling or proxying use cases.
> >
> > To that end, here’s a couple questions that might help us get there:
> >
> > - Should flow ID interpretation be negotiated as part of an extension, or should it be fixed for CONNECT-UDP? (The latter is the approach taken in [1].)
> > - What are the tradeoffs between per-datagram signalling state versus, say, a different datagram frame type for different use cases? And which of these is maximally useful for CONNECT-UDP use cases?
> > - What are the tradeoffs between per-datagram and flow ID signalling?
> >
> > We hope these (or related questions) can be discussed before and during the interim.
> >
> > Thanks,
> > Chris and Eric
> >
> > [1] https://tools.ietf.org/html/draft-schinazi-masque-connect-udp-ecn-00
> >
> > On Wed, Dec 9, 2020, at 12:03 PM, Martin Duke wrote:
> > > Thanks for starting this discussion, Chris.
> > >
> > > With my AD hat on, I would personally interpret the charter to allow
> > > CONNECT-UDP to provide all the functionality one might have in a UDP
> > > socket, except those (like multicast) explicitly forbidden. This
> > > includes ECN, DSCP, etc, although the WG is welcome to decide that some
> > > or all of these functions aren't important. As AD, I don't have a
> > > strong opinion today as to whether these end up as one draft or
> > > multiple drafts. Certainly, it makes sense to spell out the design in a
> > > separate draft first and later decide whether or not to integrate it
> > > into the base design, as quicwg did with the spin bit and ECN support.
> > >
> > > If the CONNECT-UDP method is designed so as to be literally not
> > > extensible to support these use cases, I would consider that a
> > > significant flaw. I don't think that's the case.
> > >
> > > Speaking as an individual, the hardest extensibility problem would seem
> > > to be per-datagram information. There are four different resources we
> > > could use for this:
> > > - an additional QUIC frame type codepoint, with the second type having
> > > additional per-datagram information
> > > - an additional H3 frame type codepoint, with the second type having
> > > additional per-datagram information
> > > - flow ID codepoints, as David suggests. If we want to support DSCP,
> > > this means we need 8 bits per flow just for this (but then, we have
> > > 2^62 of them!)
> > > - Make every H3 datagram frame encode this information -- if we were to
> > > choose this option, we will probably end up using more H3 frame types
> > > as Webtransport, etc. will probably not want the overhead.
> > >
> > > To me, the first two are the least profligate, and the second option
> > > (another H3 frame) is the right layer to do it. But none of these
> > > resources are scarce and this is mainly an aesthetic preference.
> > >
> > > Broadening from the per-datagram issue, we are likely filling up some
> > > sort of HTTP or H3 registry with whatever extension points we specify,
> > > so that community's opinion is valuable here.
> > >
> > > Martin
> > >
> > > On Wed, Dec 9, 2020 at 10:01 AM Mirja Kuehlewind
> > > <mirja.kuehlewind=40ericsson.com@dmarc.ietf.org<mailto:40ericsson.com@dmarc.ietf.org>> wrote:
> > > > 1) Yes, every new protocol should be extensible. Lucas and others mentioned that H3 provides already some extensibility, however, as soon as you have send the CONNECT there is not much H3 "left" and therefore we should make sure that we consider options for additional extension mechanisms later in the life time of a CONNECT request.
> > > >
> > > > 2) People did mention in-stream (or I would say in-forwarding-association - I  think we need to agree on terminology here to make sure we talk about the same thing) control data. So I think there is information that you want to signal that is associated to a forwarding stream or even a certain packet, where it probably make sense to send this data within the respective forwarding stream, however, there might be other cases where you want to signal something based on some event in the proxy, including negotiation when or before the CONNECT is sent, or general information about proxy state or capabilities which maybe be independent of any active forwarding association. We also need to consider appropriate ways to signal such information and I think all (new) signaling we define should be extensible.
> > > >
> > > > 3) I think the extension points itself need to be described in the base spec. I also still think that ECN handling should be part of the base spec as this is an important functionality that is in my view not optional if we ever want to see it used. However we can of course start with separate documents and merge in when ready. Still, we first must agree about the kind of extension points we want to use.
> > > >
> > > > Mirja
> > > >
> > > >
> > > > On 04.12.20, 21:19, "Masque on behalf of Christopher Wood" <masque-bounces@ietf.org<mailto:masque-bounces@ietf.org> on behalf of caw@heapingbits.net<mailto:caw@heapingbits.net>> wrote:
> > > >
> > > >     One point raised during our IETF 109 meeting was extensibility. A number of different extensions have already been discussed, including: IP header compression, ECN signals, and QUIC-aware proxy support. It seems clear that the MASQUE use-cases require some amount of extensibility in the core mechanism. What we’d like to determine is how much extensibility is needed.
> > > >
> > > >     Given that our charter is somewhat vague on what extensions are in scope [1], there seem to be (at least) three questions we should answer if we are to embark on this extension work:
> > > >
> > > >     1) Do we want CONNECT-UDP and a future mechanism for IP proxying to be extensible?
> > > >     2) If yes, which parts of each protocol need extensibility, and to what extent?
> > > >     3) If yes, do we want to adopt these extensions as distinct documents? (An ECN signal, for example, might be included as an extension in the CONNECT-UDP document, or it might be part of a separate document. Conversely, extensions for QUIC-aware proxying seem likely to be a separate document.)
> > > >
> > > >     We'd like to hear answers to these three questions from the WG. Converging here will help us better determine what is in scope going forward. To that end, please share your thoughts on these questions before December 18. We'll assess and see where we are at that time.
> > > >
> > > >     Thanks,
> > > >     Chris and Eric
> > > >
> > > >     [1] Relevant text in the charter (https://datatracker.ietf.org/doc/charter-ietf-masque/) reads as follows:
> > > >
> > > >     The primary goal of this working group is to develop mechanism(s) that allow configuring and concurrently running multiple proxied stream- and datagram-based flows inside an HTTPS connection. These mechanism(s) are collectively called MASQUE. ***The group will specify HTTP and/or HTTP/3 extensions to enable this functionality.***
> > > >
> > > >     (emphasis ours)
> > > >
> > > >     --
> > > >     Masque mailing list
> > > >     Masque@ietf.org<mailto:Masque@ietf.org>
> > > >     https://www.ietf.org/mailman/listinfo/masque
> > > >
> > > > --
> > > > Masque mailing list
> > > > Masque@ietf.org<mailto:Masque@ietf.org>
> > > > https://www.ietf.org/mailman/listinfo/masque
> >
> > --
> > Masque mailing list
> > Masque@ietf.org<mailto:Masque@ietf.org>
> > https://www.ietf.org/mailman/listinfo/masque
--
Masque mailing list
Masque@ietf.org<mailto:Masque@ietf.org>
https://www.ietf.org/mailman/listinfo/masque