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.i...@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 <
> nore...@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".
>
_______________________________________________
Gen-art mailing list
Gen-art@ietf.org
https://www.ietf.org/mailman/listinfo/gen-art

Reply via email to