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

David Schinazi <dschinazi.ietf@gmail.com> Thu, 02 June 2022 15:55 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 789D6C14F740; Thu, 2 Jun 2022 08:55:05 -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 9Hk_7nB4FiMn; Thu, 2 Jun 2022 08:55:03 -0700 (PDT)
Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) (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 27126C14F745; Thu, 2 Jun 2022 08:55:03 -0700 (PDT)
Received: by mail-pf1-x42b.google.com with SMTP id e11so5091095pfj.5; Thu, 02 Jun 2022 08:55:03 -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=vt4KRJm5z9U4T8mCYozfBVw0Hb/HUuEKpsWpjtN7hvA=; b=nF4ovDn5jkaXaqTPzycz5sSnFexZ8Vn7J+q5RALuajVw9i0uphIGoN9ltEEAfYx8fx 0SyfqlrujtLksIy/2D5u0UbM36N7cX8eisJsi3gEnttDLl1LeaF92RMzex2UThGdr1m0 Q7wKlDwNyaMlT0p+gZZFrFMzdRb5bMqO2L3fc8THLobjJM9QERZdH3/XFO7Mo7sCDKEs GOVc/n4MaV6fHpDlVsMSl5HFFeXtPaH64NbelkAbFwQvHzlGbVMrOn/8Fds3u8gblVwa 9fnkaMoXbAJNcc2DD54+ha+3XS2L4Ji33gkkaH4fUExIZd3c/j8FlMZWwYcUx9LMP8h2 /6zw==
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=vt4KRJm5z9U4T8mCYozfBVw0Hb/HUuEKpsWpjtN7hvA=; b=XBZt0vxe4OB7Nl0by5vlP342uUdnLLB+U/LelNrYCFv3ZUeV4COhITtPvQRAkCQ/xu bQRF5VANWWdUWbBUa9AWunb4RRXVqOrhUNTc1ciLS22kauLn/MHF/e/4Y6z8myLLFXDG LYcGFAGczaFkBLew1FAjVP2YjS/wvP9GwRa0oowXLnp3o+80hGd2qpuv+s37x1smyHjb X/jQDT6SMUEVJrdNRHTNSTgb2/LGQS8D1pcSib1RKTi8XvjdwnCMx3qHIta8dSqVi4Kj iVOAB3q8DOdaoOeGY+nwRicBwTPnkbPNwQGybeH6ZhnyJW1cekhf649TRd3flgG9TKq9 qDqw==
X-Gm-Message-State: AOAM532DEiNElP0dnRs4MCvNseIth7XckLvlARcHYpMilK70BVSSgFe+ BnzsOyLyQc8vtYIaoc3k/KzTMZTpqS5n4rhqZXAsV6j/Rkg=
X-Google-Smtp-Source: ABdhPJwuEEM3sPRBfbc8m0bdyF6SKLsSZzVaOc+cV/CRn344DX5K6EmC/MibIFRIq/JQKdAkCyqk3kJJ2ITm7aknvA4=
X-Received: by 2002:a63:2360:0:b0:3fb:ee61:82cf with SMTP id u32-20020a632360000000b003fbee6182cfmr4774778pgm.574.1654185302419; Thu, 02 Jun 2022 08:55:02 -0700 (PDT)
MIME-Version: 1.0
References: <165376042188.7925.12885270916317718696@ietfa.amsl.com> <CAPDSy+4WyJOvyQ0pyaEEjhQLiryoXF0ho-Gfz2OgC2Jeg=mnWg@mail.gmail.com>
In-Reply-To: <CAPDSy+4WyJOvyQ0pyaEEjhQLiryoXF0ho-Gfz2OgC2Jeg=mnWg@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Thu, 02 Jun 2022 08:54:50 -0700
Message-ID: <CAPDSy+6dH+BV+p=oXn4EukB-ZTCDLj6ejmViarWEYGUbQ-+STQ@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="00000000000057ee1f05e0790756"
Archived-At: <https://mailarchive.ietf.org/arch/msg/gen-art/BIqSfm8GYEbkrsexWcRhiZgAntQ>
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.39
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: Thu, 02 Jun 2022 15:55:05 -0000

Hi Christer,

Al and I had a productive conversation on one of the points that you had
brought up,
so I wanted to mention that here, see inline below.

Thanks,
David

On Tue, May 31, 2022 at 3:53 PM David Schinazi <dschinazi.ietf@gmail.com>
wrote:

> 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.
>

We've now changed the text to match both the order you were suggesting and
the
normative requirements that I had intended:

    Clients SHOULD validate the requirements above; however, clients MAY
use a
    general-purpose URI Template implementation that lacks this specific
validation.
    If a 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.

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".
>