Re: [regext] OK, What Next? (was RDAP Extensions Approach Analysis v2)

"Gould, James" <jgould@verisign.com> Mon, 18 July 2022 14:58 UTC

Return-Path: <jgould@verisign.com>
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 B9099C157B59 for <regext@ietfa.amsl.com>; Mon, 18 Jul 2022 07:58:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.81
X-Spam-Level:
X-Spam-Status: No, score=-2.81 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=verisign.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 iI0b3BoTkWTd for <regext@ietfa.amsl.com>; Mon, 18 Jul 2022 07:57:59 -0700 (PDT)
Received: from mail6.verisign.com (mail6.verisign.com [69.58.187.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 875AFC157B4F for <regext@ietf.org>; Mon, 18 Jul 2022 07:57:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=verisign.com; l=8420; q=dns/txt; s=VRSN; t=1658156280; h=from:to:cc:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=lAVCZs0d/RfWoZKLTF5w4+lFieG3EC5t8xlX7xmPhpE=; b=KoXfh8VZ3NBvlFnUQYUrxYCH91uYKOg7ak/5ligq+J+LzipPA7oI6m/w /uZWnFZ/wAOtmJqv6RKnQestUxfTfu5Wi9PRKy3pqG04lYb019dm5DLKn zdomLCAT5bTqTL29YGgQyoPGAr3W3m3vJsM7+MOZNtdvv73/SY0b+kCwi XLO1Qah326qdTpzR5gGv0tRc48XQJmmKAOKuYBt5bx41dz6OhIUZcc9S3 x6Z1GcZnUwNRzRDCOWMuBXZH/2AEHtsVSAP1ETwyaUV3bM9si13MJj4lU 4UwqUOLbJ0mbImEWSKoXBdVYeScQ8B6sMectgXhSFpUinF4MIfBfNSi2+ Q==;
IronPort-Data: A9a23:s91xkasOEtyRJwz86xKBuDF1SefnVC1fMUV32f8akzHdYApBsoF/q tZmKWGEaPqOY2GmKtgkbd+x90IOsJTXmtA2SVFprCEyRikR9ZOVVN+UEBz9bniYRiHhoOCLz O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfld4YQL9EngZqTVMEU/Nsjo+3b9j6mJUqYLhWVnV5 oqi+5S31GKNgFaYDEpFs8pvlzsy5JweiBtA1rDpTakW1LN2vyB94KM3fcldHVOhKmVnNrfSq 9L48V2M1jixEyEFUYr5z+mhIiXmdZaJVeSGoiI+t6GK3EAe9nRqukoxHKJ0hUx/011lkz3to TnkWFPZpQoBZ8XxdOohvxZwLzwiZIdY0YX9eXWdvNDJlhPIbCvq3KA7ZK02FdVwFudfK1tor MM+BQBVNFadjOWs2PSyRq9ynN8lasLsOevzuFk5lXeAUq1gGM2YBfmbjTNb9G5YasRmH/nZe s4VQSRidhXbYhJJfFwQDfrSmc/x2yanLmMA9Tp5o4IvzDjUwChS3oTOc4LRYuOSBph6rByx8 zeuE2PRR0ty2Mak4SGF9Xaoi+nFkCj4Dd5KCrCi9+Vrj1vVzWsWIBETXEGw5/i0lkD4XMhQQ 2QR8zAvqu4280KlVNTxWDW5oWLCtRgGHdtMe8Uz7g2c4qrE+UCEHQAsVDNOZcw6nM47WTJs0 UWG9+4FHhRlqrvMVnSQ5u/O6CisI24QLHRHbyhCRxEDup/9upo1yBnIS76PDZKIszE8Ihmoq xjikcT0r+x7YRIjv0ljwW36vg==
IronPort-HdrOrdr: A9a23:VIFpEaxDHOwCcy00+B1PKrPwCL1zdoMgy1knxilNoERuA66lf8 DHppgmPYedskdrZJhSo6HkBEDmewKnyXcV2/hoAV7MZmnbUQeTRr2KjrGSvgEIeReOldK1vJ 0IG8ND4bbLYmSS+Pya3ODOKbgdKbe8nZxAzt2uq0uFBTsaDJ2JpW1Ce2Cm+2NNNXB7OaY=
X-IronPort-AV: E=Sophos;i="5.92,281,1650945600"; d="scan'208";a="15705605"
Received: from BRN1WNEX01.vcorp.ad.vrsn.com (10.173.153.48) by BRN1WNEX02.vcorp.ad.vrsn.com (10.173.153.49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Mon, 18 Jul 2022 10:57:57 -0400
Received: from BRN1WNEX01.vcorp.ad.vrsn.com ([10.173.153.48]) by BRN1WNEX01.vcorp.ad.vrsn.com ([10.173.153.48]) with mapi id 15.01.2375.028; Mon, 18 Jul 2022 10:57:57 -0400
From: "Gould, James" <jgould@verisign.com>
To: "shollenbeck=40verisign.com@dmarc.ietf.org" <shollenbeck=40verisign.com@dmarc.ietf.org>, "mario.loffredo@iit.cnr.it" <mario.loffredo@iit.cnr.it>, "andy@hxr.us" <andy@hxr.us>
CC: "regext@ietf.org" <regext@ietf.org>
Thread-Topic: RE: Re: [regext] OK, What Next? (was RDAP Extensions Approach Analysis v2)
Thread-Index: AQHYmrbEyrThhqAtaUmvT/ndBqD/BQ==
Date: Mon, 18 Jul 2022 14:57:57 +0000
Message-ID: <282481D3-F5EC-459B-B4BA-B8A74091D5EB@verisign.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/16.62.22061100
x-originating-ip: [10.170.148.18]
Content-Type: text/plain; charset="utf-8"
Content-ID: <F34833715763B040906492B3BF0266E5@verisign.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/ygoyZNYndjbz56O1DXkdCaHX2dM>
Subject: Re: [regext] OK, What Next? (was RDAP Extensions Approach Analysis v2)
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 18 Jul 2022 14:58:04 -0000

Scott,

I include feedback embedded below.

-- 
 
JG



James Gould
Fellow Engineer
jgould@Verisign.com <applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/jgould@Verisign.com>

703-948-3271
12061 Bluemont Way
Reston, VA 20190

Verisign.com <http://verisigninc.com/>

On 7/18/22, 9:11 AM, "Hollenbeck, Scott" <shollenbeck=40verisign.com@dmarc.ietf.org> wrote:

    > -----Original Message-----
    > From: Mario Loffredo <mario.loffredo@iit.cnr.it>
    > Sent: Monday, July 18, 2022 4:40 AM
    > To: Gould, James <jgould=40verisign.com@dmarc.ietf.org>; andy@hxr.us
    > Cc: Hollenbeck, Scott <shollenbeck@verisign.com>; regext@ietf.org
    > Subject: [EXTERNAL] Re: [regext] OK, What Next? (was RDAP Extensions
    > Approach Analysis v2)
    >
    > Caution: This email originated from outside the organization. Do not click 
    > links
    > or open attachments unless you recognize the sender and know the content
    > is safe.
    >
    > I agree with James.
    >
    > The drawback of Approach A is that even an additive change to an existing
    > extension would result in a breaking change to the RDAP service. As a
    > consequence,  servers should always manage the transition from two
    > subsequent versions of an extension.

    Please explain how there's a breaking change. Let's assume that we have an 
    extension named "foo version 1" identified by the prefix "foov1". "foov1" is 
    registered with IANA, returned in the server's rdapConformance data structure, 
    and used to prefix extension elements.

    Now assume that a second version of the extension (foo version 2) exists, 
    identified by the prefix "foov2". "foov2" is also registered with IANA, 
    returned in the server's rdapConformance data structure, and used to prefix 
    extension elements.

JG - There is an additional case of pointed versioning with an Internet Draft ("0.1", "0.2", "0.N" in EPP or "O_1", "0_2", "0_N" in RDAP), where the pointed versioning will change more frequently than what is reflected in the IANA registry for RFCs.  If changing the hinted version in the RDAP Conformance also requires changing all the extension elements (path segments, query parameters, response members, and objectClassName values), even with backward compatible updates (e.g., inclusion of new optional feature), it will impact all client implementations, or it will discourage the use of pointed versioning to reduce the impact.  Implementation to draft versions does come with risk, but it's important for drafts to get implementation experience, and we want to reduce the impact of making version updates.  Using pointed versioning has become a best practice in the creation of the EPP extensions and should be used as well for RDAP extensions.  

    If the server supports only "foov1" or "foov2", it returns only one of those 
    values in the rdapConformance data structure, accepts only extension elements 
    prefixed with the supported value, and returns only extension elements 
    prefixed with the supported value. If a server supports both "foov1" and 
    "foov2", it returns both values in the rdapConformance data structure, accepts 
    extension elements prefixed with either value, and returns extension elements 
    prefixed with the value that matches the requested value. So how does this 
    transition scenario not work?

    Server supports "foov1" and returns that value in the rdapConformance data 
    structure. The server accepts requests and returns responses prefixed with 
    "foov1". The client sends requests and receives responses prefixed with 
    "foov1".

    At some point in the future a new version of "foo", identified by "foov2", 
    exists. The server enters a transition period and announces support for both 
    extensions by returning both values in the rdapConformance data structure. It 
    accepts extension elements prefixed with either value and returns extension 
    elements prefixed with the value that matches the requested value. The client 
    sends requests and receives responses prefixed with either "foov1" or "foov2" 
    depending on which value of the extension they support.

    Time passes, and the transition period ends. The server deprecates support for 
    "foov1" and announces support for only "foov2" by returning only that value in 
    the rdapConformance data structure. The server accepts requests and returns 
    responses prefixed with "foov2". The client sends requests and receives 
    responses prefixed with "foov2".

    Where's the breakage here? In both cases, the client and server can identify 
    extension elements by doing a simple pattern match for "foov1" or "foov2".

JG - There is no true version negotiation of extensions in RDAP like there is for EPP, where some extensions only include response members and do not include extensions of the path segments or query parameters.  A server would need to remove inclusion of the "foov1" response members and only use the "foov2" response members after some time of overlap.  What is the advantage with potentially breaking the clients that have not been updated to look for "foov2"?  The updated extension could be completely backward compatible.  Support for version 1 and version 2 can be included in the RDAP conformance with the values ("foo_level_1" and "foo_level_2") for clients that are interested, but the response members with "foo" can stay as is.  The same prefix "foo" can be used for the RDAP conformance values and the extension elements for consistency and guaranteed uniqueness.  Non-backward compatible changes should be discouraged, but if needed the signaling in the RDAP conformance should provide the client with versioning information.  The RDAP conformance member is meant for signaling extension support and is well suited to support versioning.  Cascading versioning down to the extension elements can cause interoperability issues with little to no benefit to the clients, such as returning only "foov2" instead of "foov1" or "foov1" with "foov2".    

    Scott