[netconf] Re: Francesca Palombini's Discuss on draft-ietf-netconf-http-client-server-23: (with DISCUSS)

Kent Watsen <kent+ietf@watsen.net> Wed, 18 September 2024 17:50 UTC

Return-Path: <0100019206419089-61fd041b-6c56-49d7-ab46-b73c305ec629-000000@amazonses.watsen.net>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 14FFBC1D6202; Wed, 18 Sep 2024 10:50:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.907
X-Spam-Level:
X-Spam-Status: No, score=-1.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=amazonses.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 p6QYwFCIYHhP; Wed, 18 Sep 2024 10:50:14 -0700 (PDT)
Received: from a8-88.smtp-out.amazonses.com (a8-88.smtp-out.amazonses.com [54.240.8.88]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 421B8C1D876F; Wed, 18 Sep 2024 10:50:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1726681813; h=From:Message-Id:Content-Type:Mime-Version:Subject:Date:In-Reply-To:Cc:To:References:Feedback-ID; bh=BFf5JOkNDe/Sa2k0ZizojCbPpKwxwukp8n0tVLKethk=; b=UuHIh1EshJsGz+/akRCluHFUr4VrhQZOcDcF7ZcZ2gfyWk7rJ8fqKTG5kFKzlykR dLpGEBVeMfmv6gHVFGvumd9iw659Kkty/T0bo0pX0qmcbSmGMx8j639nHbO2NGmnSk4 7eswqUY9kxMeoyGQkZ8CgvpvFz7WfAYrkxgZVfbU=
From: Kent Watsen <kent+ietf@watsen.net>
Message-ID: <0100019206419089-61fd041b-6c56-49d7-ab46-b73c305ec629-000000@email.amazonses.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_A441F9BB-07A0-47A4-9A4F-24AB2D8DD833"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.400.31\))
Date: Wed, 18 Sep 2024 17:50:13 +0000
In-Reply-To: <PAXPR07MB78381E22931ABEEFC500DAD098602@PAXPR07MB7838.eurprd07.prod.outlook.com>
To: Francesca Palombini <francesca.palombini@ericsson.com>
References: <172416794310.2072814.8838102958915521258@dt-datatracker-6df4c9dcf5-t2x2k> <01000191716a91f5-134569c8-7097-4beb-a83c-1e533c72cb92-000000@email.amazonses.com> <B930CFB9-0827-4A04-B3DE-103253048DE1@mnot.net> <010001917276c9a9-61d073c7-2edc-4fb6-8397-6bf11b2cf243-000000@email.amazonses.com> <DC395793-7357-45E3-BF94-E99280A66C0C@mnot.net> <010001917365fcca-e582458e-7aa7-4c46-bf31-fbcbccefb210-000000@email.amazonses.com> <BBA38183-A666-4CCF-BB89-D552B7BC6B44@gmail.com> <ABDB4C56-8A51-4FCC-B4B5-D6F80118D3E9@mnot.net> <B1FCA958-C784-4995-95E3-4B6775B3E198@gmail.com> <PAXPR07MB78381E22931ABEEFC500DAD098602@PAXPR07MB7838.eurprd07.prod.outlook.com>
X-Mailer: Apple Mail (2.3774.400.31)
Feedback-ID: ::1.us-east-1.DKmIRZFhhsBhtmFMNikgwZUWVrODEw9qVcPhqJEI2DA=:AmazonSES
X-SES-Outgoing: 2024.09.18-54.240.8.88
Message-ID-Hash: 5G6Y3KSPSR3LG7ZQ3GE7RHOI2N7GP7JY
X-Message-ID-Hash: 5G6Y3KSPSR3LG7ZQ3GE7RHOI2N7GP7JY
X-MailFrom: 0100019206419089-61fd041b-6c56-49d7-ab46-b73c305ec629-000000@amazonses.watsen.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-netconf.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Mark Nottingham <mnot@mnot.net>, The IESG <iesg@ietf.org>, "draft-ietf-netconf-http-client-server@ietf.org" <draft-ietf-netconf-http-client-server@ietf.org>, "netconf-chairs@ietf.org" <netconf-chairs@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [netconf] Re: Francesca Palombini's Discuss on draft-ietf-netconf-http-client-server-23: (with DISCUSS)
List-Id: NETCONF WG list <netconf.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/JWG_5jon5jc3ugtDN62FJh42U6U>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Owner: <mailto:netconf-owner@ietf.org>
List-Post: <mailto:netconf@ietf.org>
List-Subscribe: <mailto:netconf-join@ietf.org>
List-Unsubscribe: <mailto:netconf-leave@ietf.org>

Hi Francesca,

It was the NETCONF WG's idea (not mine) to add the ability to configure what protocol versions a client wishes to use.   The ability to do so is not uncommon, e.g., to support test automation, resulting in a pattern of YANG models constraining versions when versions exist.  This is normal operation and so it’s surprising/alarming that constraining available versions may harm the HTTP ecosystem.  This opinion is inconsistent with experience, and seems to be in the rough.  It is hard to understand/accept when no concrete example is provided.  Adding text regarding possible impact may be important for future maintainers of this work, depending on the nature of the issue.

Mark’s other suggestion to remove the "Support is provided for HTTP/1.1, HTTP/2, and HTTP/3.” sentence from both the Abstract and the Introduction sections is fine, and can be considered done (will be part of the next update).  Here’s the GitHub diff:  https://github.com/netconf-wg/http-client-server/commit/ee514fcb49406c58bc515432d6c96772b766ae4a.

Thanks,
Kent



> On Sep 16, 2024, at 6:12 AM, Francesca Palombini <francesca.palombini@ericsson.com> wrote:
> 
> Hi Mahesh,
>  
> I believe the question here is why this configuration is needed at all. Mark has made a constructive suggestion that will get the doc unstuck, that protocol-versions for the client is removed as well as specific talk about the different versions, rather than additional text be added about the possible impact.
>  
> Thanks,
> Francesca
>  
> From: Mahesh Jethanandani <mjethanandani@gmail.com <mailto:mjethanandani@gmail.com>>
> Date: Wednesday, 11 September 2024 at 22:28
> To: Mark Nottingham <mnot@mnot.net <mailto:mnot@mnot.net>>
> Cc: Francesca Palombini <francesca.palombini@ericsson.com <mailto:francesca.palombini@ericsson.com>>, The IESG <iesg@ietf.org <mailto:iesg@ietf.org>>, draft-ietf-netconf-http-client-server@ietf.org <mailto:draft-ietf-netconf-http-client-server@ietf.org> <draft-ietf-netconf-http-client-server@ietf.org <mailto:draft-ietf-netconf-http-client-server@ietf.org>>, NETCONF WG Chairs <netconf-chairs@ietf.org <mailto:netconf-chairs@ietf.org>>, NETCONF WG <netconf@ietf.org <mailto:netconf@ietf.org>>, Kent Watsen <kent+ietf@watsen.net <mailto:kent+ietf@watsen.net>>
> Subject: Re: Francesca Palombini's Discuss on draft-ietf-netconf-http-client-server-23: (with DISCUSS)
> 
> Hi Mark,
>  
> Thanks for the suggestion.
> 
> 
> On Aug 28, 2024, at 6:22 PM, Mark Nottingham <mnot@mnot.net <mailto:mnot@mnot.net>> wrote:
>  
> It doesn't.
> 
> Concretely, I suggest - 
> 
> * In the Abstract, remove "Support is provided for HTTP/1.1, HTTP/2, and HTTP/3."
> * Remove protocol-versions from http-client-common-grouping
>  
> Apparently, the question of the impact of client choosing a HTTP version is still not clear.  I am specifically referring to this exchange between you and Kent.
>  
> No; I'm only attempting to make sure that your specification doesn't actively harm the HTTP ecosystem.
> 
> 
> Good - and thank you!
> 
> 
> 
> Constraining the available versions is one way that can happen.
> 
> Can you provide a scenario where the client being configured to use specific versions harms the HTTP ecosystem?
>  
> It would help for Kent to document in the draft why choosing a particular version of HTTP in this particular case is a bad idea.
>  
> Thanks.
> 
> 
> 
> Also, I noticed that the Abstract says:
> 
> 
> It is intended that these groupings will be used to help define the configuration for simple HTTP-based protocols (not for complete web servers or browsers).
> 
> If this is indeed intended to be a configuration mechanism for HTTP-based protocols, that would seem to be more in-scope with the HTTPAPI WG - has any coordination been done with them? In particular, the relationship to OpenAPI <https://swagger.io/specification/> should be considered, as it has considerable adoption and overlaps this use case.
> 
> Cheers,
> 
> 
> 
> 
> On 27 Aug 2024, at 10:54 AM, Mahesh Jethanandani <mjethanandani@gmail.com <mailto:mjethanandani@gmail.com>> wrote:
> 
> Hi Mark,
> 
> Francesca’s DISCUSS, which is a proxy for your HTTPDIR review was discussed in the telechat last Thursday. I am following up to find out if Kent’s reply below addresses your concerns or not. If my understanding is correct, the main sticking point is the client trying to specify a HTTP version it wants to use, and its possible impact on the HTTP ecosystem. 
> 
> Let us know. Thanks.
> 
> 
> On Aug 20, 2024, at 10:25 PM, Kent Watsen <kent+ietf@watsen.net <mailto:kent+ietf@watsen.net>> wrote:
> 
> 
> Negotiating version at runtime (startup handshake) is common practice.   The way it usually goes is that the client has a list of what it allows, and the server has a list of what it supports, and the latest/newest common version is selected.  This is how it works in HTTP also, yes?
> 
> No. See:
> 
> https://httpwg.org/specs/rfc9112.html#http.version
> https://httpwg.org/specs/rfc9113.html#starting
> https://httpwg.org/specs/rfc9114.html#discovery
> 
> Fine, but your point is only made because HTTP keeps changing its transport  ;)
> 
> Assuming HTTP/4 stays with QUIC, then RFC 7301, Section 1 says:
> 
> With ALPN, the client sends the list of supported application
> protocols as part of the TLS ClientHello message. The server
> chooses a protocol and sends the selected protocol as part of
> the TLS ServerHello message.
> 
> 
> In such a case, the client’s ALPN list would be [h3, h4], and the server returns one or the other, depending on what it supports, which is effectively what I wrote. 
> 
> I also note that RFC 9114 Section 3.1 says:
> 
>   A client MAY attempt access to a resource with an "https" URI by
>   resolving the host identifier to an IP address, establishing a
>   QUIC connection to that address on the indicated port (including
>   validation of the server certificate as described above), and
>   sending an HTTP/3 request message targeting the URI to the server
>   over that secured connection. 
> 
> This optimization is possible if the client knows it only wants QUIC-based HTTP.   This is faster than first establishing an HTTP/2 connection and switching after receiving the "alt-svc” header.  This is also faster than the client optimistically switching after receiving a "TCP RST”, assuming the server isn't listening on tcp/443.
> 
> 
> 
> Let’s say there exists an HTTP-client that requires multiplexing, so it requires at least HTTP/2.  But it connects to a server that only supports HTTP/1.1.  IMO the negotiation should fail, letting the HTTP-client to try another server.  Isn’t this proper?
> 
> A "HTTP-client that requires multiplexing" (i.e., an application using HTTP that wants to multiplex) can use multiple HTTP/1 connections, or HTTP/2, or HTTP/3, or...
> 
> It was just an example.  The general point is that each HTTP version comes with a set of features (e.g., scalability, performance, security, etc.) and a client may require a specific feature-set.
> 
> 
> 
> The configuration -23 regards setting the client’s "list of what it allows".  It can be a list of versions, or the special wildcard value “any”.   It is expected that this “list of versions" will feed into the negotiation.  IDK, maybe you thought that the draft was always setting the client to a single version?
> 
> No; I'm only attempting to make sure that your specification doesn't actively harm the HTTP ecosystem.
> 
> 
> Good - and thank you!
> 
> 
> 
> Constraining the available versions is one way that can happen.
> 
> Can you provide a scenario where the client being configured to use specific versions harms the HTTP ecosystem?
> 
> 
> 
> I continue to be concerned that you're defining a configuration language for HTTP without a strong understanding of the protocol's core concepts or common implementation patterns.
> 
> It could also be that you don’t appreciate that, by nature of this being “configuration”, it is not a "first contact” scenario.  That is, this is much more like a script using `curl` than a user using a browser.
> 
> 
> Thanks again!
> Kent
> 
> 
> 
> 
> Mahesh Jethanandani
> mjethanandani@gmail.com <mailto:mjethanandani@gmail.com>
> 
> 
> 
> 
> 
> 
> --
> Mark Nottingham   https://www.mnot.net/
> 
>  
> 
> Mahesh Jethanandani
> mjethanandani@gmail.com <mailto:mjethanandani@gmail.com>