Re: [Gen-art] Genart last call review of draft-ietf-masque-connect-udp-12

David Schinazi <dschinazi.ietf@gmail.com> Tue, 31 May 2022 22:54 UTC

Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: gen-art@ietfa.amsl.com
Delivered-To: gen-art@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E40D6C14F726; Tue, 31 May 2022 15:54:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.108
X-Spam-Level:
X-Spam-Status: No, score=-2.108 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_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] 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 ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WXklVCkpoJN1; Tue, 31 May 2022 15:54:11 -0700 (PDT)
Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 54A63C15AAE6; Tue, 31 May 2022 15:54:11 -0700 (PDT)
Received: by mail-pf1-x436.google.com with SMTP id y196so264553pfb.6; Tue, 31 May 2022 15:54:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=osk9mk1HcMUcswlZIp7aLBoDcUMX5TtaIVY+rwTL6TU=; b=Gp8RQf5Vv2c5ZdcFgj81lfYoYWA6WE80th+kFPdN7vvyuv5cktf5LzRGufwVEO5Cb7 yBXN4NvwLq7iITtGQV3W9Tvd7zSSDyZ3DBiatdFRbkQgSfO4HNZ9xjuIEpeYDxE6tTfT yMZtIzSX/oGjpTbxnj82npStyk+xwwMUWEWLYbOESxPX+2ic/KrgRyFGx98nEPOlJzBC SFx6Hr0VEv+dCZXEyoqwLo68lgeWNkDNk/4E0S7lYiaKmNzcQHw7zhrvjq+eKs1ys7AL 6TfEfLTT0+blni1+L833ePhmqJ3wyFyWJW4ZrJhALKI4ZqPryJoCp/dYL7V1zGzzhERH YkXg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=osk9mk1HcMUcswlZIp7aLBoDcUMX5TtaIVY+rwTL6TU=; b=C8fHN9w79Mk3H6FX6X9sa6YyL2N0XjeUO1+VqLDVLAPvzaPq8O3we8pn1mxKpUv3Wc xNLJSdgZ5yt9nN0hT7Mjn9W2cP+YFg0sk/KsxQBSm0Q0Zj7iunKZBSqGHkQE8/F+/FQo JSmcfLpuZ9LuhikE1p4UBpVrbHDgF+JSD6I/xzraS7mmRKOnp0uummQfu+eKm0iCc9d5 LpHr1vNW32/yu/gMgg7VfzdO/TIbXk1x47LoPOKaVdDJnTzvo1fcxtifIF9mEmJKm7Pu NxPQJyU8qR3GjsAxX8GFC26viINfpofDpPDHhNzNFhmZ4W8X0G4AoG23rMbVyuBkZuQy M7hQ==
X-Gm-Message-State: AOAM5313EBwSZMIM58TD9KEDpgchVCvnqaVnpmf0d0yUDKELTtXkxQ16 Xpop/hcYyB2RLKb4a1/cnrUH3l9bx9L6tCwSkdE/ReCKrZc=
X-Google-Smtp-Source: ABdhPJwhypVV2WjQZmumBgJ94Qk4NHmkgKNkPjjhldpoEVizyM/VzIMmRp20aszJUzqQ5wpIIXIl609Zh6lDc72jeKI=
X-Received: by 2002:a63:2360:0:b0:3fb:ee61:82cf with SMTP id u32-20020a632360000000b003fbee6182cfmr13323844pgm.574.1654037650393; Tue, 31 May 2022 15:54:10 -0700 (PDT)
MIME-Version: 1.0
References: <165376042188.7925.12885270916317718696@ietfa.amsl.com>
In-Reply-To: <165376042188.7925.12885270916317718696@ietfa.amsl.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Tue, 31 May 2022 15:53:59 -0700
Message-ID: <CAPDSy+4WyJOvyQ0pyaEEjhQLiryoXF0ho-Gfz2OgC2Jeg=mnWg@mail.gmail.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Cc: gen-art <gen-art@ietf.org>, draft-ietf-masque-connect-udp.all@ietf.org, last-call@ietf.org, MASQUE <masque@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000098ceaf05e056a677"
Archived-At: <https://mailarchive.ietf.org/arch/msg/gen-art/wnf4uyuScmyDexptzCO_8ZKePyY>
Subject: Re: [Gen-art] Genart last call review of draft-ietf-masque-connect-udp-12
X-BeenThere: gen-art@ietf.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: "GEN-ART: General Area Review Team" <gen-art.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/gen-art>, <mailto:gen-art-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/gen-art/>
List-Post: <mailto:gen-art@ietf.org>
List-Help: <mailto:gen-art-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/gen-art>, <mailto:gen-art-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 31 May 2022 22:54:16 -0000

Hi Christer,

Thank you for your detailed review. I've written up the following PR to
address your comments:
https://github.com/ietf-wg-masque/draft-ietf-masque-connect-udp/pull/173
I also added additional comments inline below.

Thanks,
David


On Sat, May 28, 2022 at 10:53 AM Christer Holmberg via Datatracker <
noreply@ietf.org> wrote:

> GENERAL:
> --------
>
> QG_1:
>
> The document contains a mix of "SHALL", "MUST", "SHALL NOT" and "MUST
> NOT", but
> I can't see any specifc pattern based on whether "SHALL (NOT)" or "MUST
> (NOT)"
> is used.
>

I tend to use SHALL for active requirements and MUST for reactive
requirements.
Since RFC 2119 defines those terms as strictly identical, this doesn't harm
comprehension.

ABSTRACT:
> ---------
>
> QA_1:
>
> The text says:
>
> "This document describes how to proxy UDP in HTTP,"
>
> To me "proxy UDP in HTTP" sounds a little weird. Isn't "tunneling UDP over
> HTTP" more appropriate? That terminology is also used later in the
> document.
>
> (The same comment applies to "proxy TCP in HTTP")
>

The "proxy" terminology is the simple way of referring to these mechanisms
which is suitable to casual readers. The "tunnel" terminology is more
pedantic
and best suited for readers expert in HTTP terminology. This is why we
differentiate using the two by saying "more specifically".

Section 1:
> ----------
>
> Q1_1:
>
> The text says:
>
>    "While HTTP provides the CONNECT method (see Section 9.3.6 of [HTTP])
>    for creating a TCP [TCP] tunnel to a proxy, it lacks a method for
>    doing so for UDP [UDP] traffic."
>
> I suggest to remove the "it lacks..." part, because the following paragraph
> says that the document defines such method.
>

I've added "prior to this specification" to get the best of both worlds.

Q1_2:
>
> The text says:
>
>   "This protocol supports all versions of HTTP"
>
> I think the text should say which is the latest supported, as there is no
> guarantee future versions of HTTP will be supported.
>

Switched to "all existing versions of HTTP".

Section 1.1:
> ------------
>
> Q1_1_1:
>
> The txt says:
>
>    "Note that, when the HTTP version in use does not support multiplexing
>    streams (such as HTTP/1.1), any reference to "stream" in this
>    document represents the entire connection."
>
> I suggest to replace "Note that," with e.g., "In this document,", as in the
> paragraph above.
>

I personally prefer "note that". I'll let the RFC Editor have final say on
such details.

Section 2:
> ----------
>
> Q2_1:
>
> I suggest placing the example URIs after the requirements and procedures
> for
> creating the URL.
>

As a first introduction to a concept, I personally find examples easier to
understand than this very long list of requirements.

Q2_2:
>
> The text says:
>
>    "If the client detects that any of the requirements above are not met
>    by a URI Template, the client MUST reject its configuration and fail
>    the request without sending it to the UDP proxy.  While clients
>    SHOULD validate the requirements above, some clients MAY use a
>    general-purpose URI Template implementation that lacks this specific
>    validation."
>
> It sounds strange to say "MUST reject" while saying "SHOULD validate but
> MAY
> use a general-purpose URI Template implementation".
>
> I suggest to say "SHOULD validate the URI Template and reject it if it
> does not
> fulfil the requirements above".
>

The MUST is prefixed by an if clause. Conceptually this means: "if you
notice an issue
you have to report it, but you don't have to explicitly check for issues".
What you propose
would be "you should check and might report findings" which is not as
strong.

Section 3:
> ----------
>
> Q3_1:
>
> (This comment might apply to other parts of the document too)
>
> The text says:
>
>   "To initiate a UDP tunnel associated with a single HTTP stream,
>    clients issue a request containing the "connect-udp" upgrade token."
>
> I suggest to refer to a single entity for the procedure, i.e., "client"
> instead
> of "clients".
>

Agreed. I've changed this and some other parts of the draft.

Section 3.1:
> ------------
>
> Q3_1_1:
>
> The text says:
>
>    "Upon receiving a UDP proxying request:
>
>    *  if the recipient is configured to use another HTTP proxy, it will
>       act as an intermediary: it forwards the request to another HTTP
>       server.  Note that such intermediaries may need to reencode the
>       request if they forward it using a version of HTTP that is
>       different from the one used to receive it, as the request encoding
>       differs by version (see below).
>
>    *  otherwise, the recipient will act as a UDP proxy: it extracts the
>       "target_host" and "target_port" variables from the URI it has
>       reconstructed from the request headers, and establishes a tunnel
>       by directly opening a UDP socket to the requested target."
>
> It is unclear whether the rest of the Section text applies to both of these
> bullets, or only one of them.
>

The rest of the section specifically mentions the "UDP proxy" and that only
applies to the second bullet. But perhaps we can do better, would you have
a textual suggestion here?

Also, the "(see below)" part in the first bullet refers to the following
> Sections, but it is unclear. If refering to another section, I suggest
> using
> explicit Section references instead of "below".
>

I tried spelling out the four related subsections and it became unwieldy
and less clear than "below".

Sections 3.2, 3.3, 3.4 and 3.5:
> -------------------------------
>
> I suggest to use sub-sections, with e.g., the following structure:
>
> 3.2.     HTTP/1.1 Usage
> 3.2.1.   Request
> 3.2.2.   Response
> 3.3.     HTTP/2 and HTTP/3 Usage
> 3.3.1.   Request
> 3.3.2.   Response
>

I personally prefer the current structure.

Section 4:
> ----------
>
> The text says:
>
>   "This protocol..."
>
> What protocol? :) As this is the first sentence of the Section, please be
> specific.
>

Agreed. Replaced "this protocol" with "The mechanism for proxying UDP in
HTTP defined in this document".