[regext] Re: RDAP versioning - on client-server interactions and 2-RTT flow

Mario Loffredo <mario.loffredo@iit.cnr.it> Thu, 09 January 2025 11:23 UTC

Return-Path: <mario.loffredo@iit.cnr.it>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E421C151992 for <regext@ietfa.amsl.com>; Thu, 9 Jan 2025 03:23:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.004
X-Spam-Level:
X-Spam-Status: No, score=-2.004 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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 (2048-bit key) header.d=iit.cnr.it
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 xpBh-6dDkQdd for <regext@ietfa.amsl.com>; Thu, 9 Jan 2025 03:23:30 -0800 (PST)
Received: from mx5.iit.cnr.it (mx5.iit.cnr.it [146.48.58.12]) by ietfa.amsl.com (Postfix) with ESMTP id D9BDEC15152D for <regext@ietf.org>; Thu, 9 Jan 2025 03:23:29 -0800 (PST)
DKIM-Filter: OpenDKIM Filter v2.11.0 mx5.iit.cnr.it EDEC5C0356
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iit.cnr.it; s=mx520231221; t=1736421807; bh=N8g9ZcgEITLe63a4kF5BTVaI0xNfp/LCM4vQ2kMyItE=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=gt77NqnJLvmui07xwd2ZCIChziZ7WcOoO5CJeq5heD94XsHvJdg1OZPuy7nbsFSZI H0BPhIpDSLCdPTmooawC+lHLou3oAEKCWdOU3sSpqvm06iXiRh4GjXF4ubNwziXrAy P3K0BGSKg1iqvcbpS0LqVbo1O9LqqY+cVEHRdFmQQrE7BF22CcttAJAlH0w4mtJhmB xcFLTlHwcbfk7sT68xEz/PIOgw1vof5RrFHHIWlQPhz5mXTc7+SZQbKqLv3lFQpTZu 5fEJJT0kgCs+P1gTrMBlykuSpRUsGCF6qkw43RXwf47MPkxjxwrj6a1pQYQwCmN2+G lhUQEL2DR/f7Q==
Received: from localhost (localhost [127.0.0.1]) by mx5.iit.cnr.it (Postfix) with ESMTP id EDEC5C0356; Thu, 9 Jan 2025 12:23:26 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at mx5.iit.cnr.it
Received: from mx5.iit.cnr.it ([127.0.0.1]) by localhost (mx5.iit.cnr.it [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id bT27_D-9D8-s; Thu, 9 Jan 2025 12:23:26 +0100 (CET)
X-Relay-Autenticated: yes
Message-ID: <7216918c-22d6-4817-987a-870c97d926db@iit.cnr.it>
Date: Thu, 09 Jan 2025 12:17:21 +0100
Mime-Version: 1.0
Content-Language: it
To: "kowalik@denic.de" <kowalik@denic.de>, "Andrew Newton (andy)" <andy@hxr.us>
References: <10ba3faa-8bf7-4202-81bf-e2c99473c3db@denic.de> <10BE3B85-4538-49C5-AB98-4EDDCDCF2B5F@verisign.com> <a872a3d3-ca80-4fbc-b747-b3738e857dae@denic.de> <F6BD2F41-C0E6-4892-B9DA-920A62A46CC5@verisign.com> <7fc24d8e-f845-4e62-b164-cf6dcaa39915@denic.de> <02044771-6C63-466D-88F4-FD08B270F4F3@verisign.com> <beb2763a-97ea-4e71-b144-45c5a3501042@denic.de> <EFD94C63-7AA1-400A-9A38-F7696409686A@verisign.com> <ba62eea0-6861-4b7b-9d5b-75ae4fae571c@iit.cnr.it> <CAAQiQRf+erCuYquLN25nAEcExe1CqEyhhF8pTX-SvVM-5TnYsw@mail.gmail.com> <38d4f728-44f3-49bb-b52f-037a806c2d68@iit.cnr.it> <a8e01119-2f44-4eef-a7cb-0016a2e91467@denic.de>
From: Mario Loffredo <mario.loffredo@iit.cnr.it>
In-Reply-To: <a8e01119-2f44-4eef-a7cb-0016a2e91467@denic.de>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
Message-ID-Hash: NFYTRJPQBVIUK2ZQJ6OXC52W7643KRNU
X-Message-ID-Hash: NFYTRJPQBVIUK2ZQJ6OXC52W7643KRNU
X-MailFrom: mario.loffredo@iit.cnr.it
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-regext.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "Gould, James" <jgould@verisign.com>, "regext@ietf.org" <regext@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [regext] Re: RDAP versioning - on client-server interactions and 2-RTT flow
List-Id: Registration Protocols Extensions Working Group <regext.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/36ifNdLPZwe5bl1UDM-r4jzVsiI>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Owner: <mailto:regext-owner@ietf.org>
List-Post: <mailto:regext@ietf.org>
List-Subscribe: <mailto:regext-join@ietf.org>
List-Unsubscribe: <mailto:regext-leave@ietf.org>

Hi Pawel,

Il 08/01/2025 09:57, kowalik@denic.de ha scritto:
>
> [PK] This is all true, assuming there is always 100% match between the 
> client and the server on the version. Note that here, because we 
> version a specification not an implementation, we may face an unusual 
> situation that the client may be ahead of the server. In this case if 
> client depends on 0.8 functionality, it would not be fine with 0.4 
> response (missing fields added between 0.4 and 0.8). So, if the server 
> eventually would ramp up 0.9 (not default yet) the client would not 
> get 0.9 response which would be working for him, unless it makes 2-RTT 
> flow and discovers 0.9 version, which it does not know (yet), but 
> which may serve a compatible response for it.
>
> The bottom line is, that the clients would either need the implement 
> 2-RTT flow to get an optimum answer, or always support somehow the 
> lowest version that may come from the server missing functionality 
> that may have come from a better version.
>
> This could be solved if the client would be able to make range version 
> requests. For me it would be one of the reasons to bother with 
> semantic versioning at all if machines could figure out on their own 
> the best fit.
>
> If it is not a goal and semantics behind versioning is just for 
> humans, then I would return to my previous position that we shouldn't 
> bother defining any semantics at all and let each extension define 
> their own stuff how they like. It is a waste in my eyes to define and 
> maintain strict rules for versioning with a new IANA registry and all 
> processes around it.
>
[ML] At any time a client version of a given specification may be ahead 
of a server version and vice versa.

I wouldn't worry if the mismatch was due to a chain of backward 
compatible changes as the client can still process the response. Since 
we are talking about backward compatible versions, if the client is 
ahead of the server, all missing fields should be optional and the 
client would interpret their absence as a lack of information, vice 
versa, the client would ignore fields it doesn't recognize due to JSON 
being schemaless. Anyway, if both the client and the server supported 
the rdap-versioning spec, the client would get from the response the 
information about the version currently supported by the server. In a 
way, this is what happens when the client gets a redacted response. The 
only difference is that, if the server supports RFC 9537, the client can 
know that a missing field is not returned but supported.


If the mismatch is due to a breaking change, both clients and servers 
are expected to play their part in the transition process :

- The breaking version is supported as default by the client but not by 
the server

The client should previously check if that version is supported before 
asking the server for it or submitting a request anyway. If the new 
version is not supported, the client should be able to switch to the old 
version as long as all the servers it usually deals with are alligned to 
the new version. Please note that the client knows that it is asking for 
and expecting a version related to a breaking change with regard to the 
previous version.

-  The breaking version is supported as default by the server but not by 
the client

Similarly, the server should have previously planned a transition 
process to switch to that version to mitigate the risk of returning a 
breaking response. Such a transition should consist in first, announcing 
the sunrise of the new version, then serving the old version by default 
and the new version on request, finally returning the new version as 
default after giving appropriate time to all (or almost all of) the 
clients it deals with to switch to the new version. This is explained in 
the rdap-jscontact document.


Generally, this is expected to happen for every version upgrade but in 
case of mismatches due to non-breaking versions both clients and servers 
never risk to break interoperability.

I also think that since managing a transition process could be very 
cumbersome for both clients and servers depending on the scope of the 
breaking change, I think introducing a breaking version as the default 
should reset the sequence of non-breaking versions supported by both of 
them.

In conclusion, I do believe that the RTT-flow is needed to efficiently 
implement a possible transition process and the rdap-versioning spec is 
helpful in this respect.


Best,

Mario




-- 
Dott. Mario Loffredo
Senior Technologist
Technological Unit “Digital Innovation”
Institute of Informatics and Telematics (IIT)
National Research Council (CNR)
Address: Via G. Moruzzi 1, I-56124 PISA, Italy
Phone: +39.0503153497
Web: http://www.iit.cnr.it/mario.loffredo