Re: [Netmod-ver-dt] Version selection

"Reshad Rahman (rrahman)" <rrahman@cisco.com> Wed, 23 October 2019 22:24 UTC

Return-Path: <rrahman@cisco.com>
X-Original-To: netmod-ver-dt@ietfa.amsl.com
Delivered-To: netmod-ver-dt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D59651200D6 for <netmod-ver-dt@ietfa.amsl.com>; Wed, 23 Oct 2019 15:24:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.499
X-Spam-Level:
X-Spam-Status: No, score=-14.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=f3DJUAWY; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=sSOLlGgw
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CgyYuU9eh0Pp for <netmod-ver-dt@ietfa.amsl.com>; Wed, 23 Oct 2019 15:24:40 -0700 (PDT)
Received: from rcdn-iport-1.cisco.com (rcdn-iport-1.cisco.com [173.37.86.72]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0A913120096 for <netmod-ver-dt@ietf.org>; Wed, 23 Oct 2019 15:24:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=42925; q=dns/txt; s=iport; t=1571869479; x=1573079079; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=m32yvVcWeQUwpmuATrHDYMc0zUxU8fZKi1bU1aLME5Y=; b=f3DJUAWYdA6B2/+c7gzZrVv6IFdxwh+7ZW/e3HvmFvsNF66ySVsz3FH8 c4wjm0EcBcO61l2ltIW9inXfnGU5iP8K7J8ITWiqoKzxWju5dWDAHIGoc m8QhYOY5mdQoJPvyQuq1jZQw/7SYUpnv02DeNPpew9vXJ3BQdlEVrbIVx o=;
IronPort-PHdr: 9a23:+Lngrh3aj3fF62DVsmDT+zVfbzU7u7jyIg8e44YmjLQLaKm44pD+JxKHt+51ggrPWoPWo7JfhuzavrqoeFRI4I3J8RVgOIdJSwdDjMwXmwI6B8vQE1fyLPvjaQQxHd9JUxlu+HToeUU=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AtAABp0rBd/5tdJa1lGgEBAQEBAQEBAQMBAQEBEQEBAQICAQEBAYFpAwEBAQELAYEbL1AFbFcgBAsqCoQdg0cDilxOghCYA4EugSQDVAkBAQEMAQEtAgEBhEACF4MdJDYHDgIDCQEBBAEBAQIBBQRthTcMhVABAQEBAxIRHQEBKQ8PAgEIEQMBAQEhAQYDAgICMBQJCAIEARIigwABgXlNAy4BqCsCgTiIYXWBMoJ+AQEFgkmCQxiCFwmBNgGMDhiBQD+BEScfgU5+PoQvNhaCWjKCLI1EgjSFOiSJD45+CoIklScbgjuHVIQuhl+ENI42gT+ULINdAgQCBAUCDgEBBYFYATKBWHAVOyoBgkFQEBSDBoNzilN0gSmNegGBKQEB
X-IronPort-AV: E=Sophos;i="5.68,222,1569283200"; d="scan'208,217";a="648974920"
Received: from rcdn-core-4.cisco.com ([173.37.93.155]) by rcdn-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 23 Oct 2019 22:24:38 +0000
Received: from XCH-ALN-020.cisco.com (xch-aln-020.cisco.com [173.36.7.30]) by rcdn-core-4.cisco.com (8.15.2/8.15.2) with ESMTPS id x9NMOcml010404 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL) for <netmod-ver-dt@ietf.org>; Wed, 23 Oct 2019 22:24:38 GMT
Received: from xhs-aln-001.cisco.com (173.37.135.118) by XCH-ALN-020.cisco.com (173.36.7.30) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 23 Oct 2019 17:24:38 -0500
Received: from xhs-rtp-002.cisco.com (64.101.210.229) by xhs-aln-001.cisco.com (173.37.135.118) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 23 Oct 2019 17:24:37 -0500
Received: from NAM05-BY2-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-002.cisco.com (64.101.210.229) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 23 Oct 2019 18:24:37 -0400
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nK/9PmVelzAd3Q3rADpABSKkk1tjolX6HXhwGJDCGXk6pxZ8sKLUrzx/LZY+zhh2no3DeNy4UgYdvCWbWDlZVjKJ5CB0NsW63qW6W92dTHEVTyMh5iMFS/Xhpc+XuSejNDNNN1/nT6U40Jbg9EIN0/Nr3M5fdLxLS+tJKeoTQzMtw+sgjdmGZf7wdOPXzBp29PKkJG96xgWuDP5TRnXh9GxDzciyR3O88tT/pH8z7Uw4BdBFchMwa0kS1PqUiVMH9fGw1vN6U0ahfv1+ghasuTFO0xKkqsXwJo8/bgA2jQGNHJWuHVkTDyiDt7f1hCUlrBGZIPig8LNgckUrNqr9Ug==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m32yvVcWeQUwpmuATrHDYMc0zUxU8fZKi1bU1aLME5Y=; b=dFuSIHSr1sljgJCW2ODJIBv5xHCeESRQKr7PWylqxKvxopyE5sUcNT+Xx18hj8PIPz9/0kTti01+VnHwVHM3oDgtRMknhdTlYql68DwToG97WBRJH+iTKN+W9/yio00yby1WLbH0PeCOTtjAA6MRBdljMupnmIs7EEDDo7jlZdlOjHS+59zGfYddkYpgFMQ6DBgKTlfqKu0ZJPh3uhKkCAyXXwL3DVsdNDzvAnNa3JoQXvCEycjNXgmA66eKu/j/BirNmx+rCFW5pZm4IiO8v2Wgu8A2UHoFmCQwD+Lr9E0SjBhyytcZRjynTHd1WAIe5IcgOC1JuXJPanoKxBMjeQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m32yvVcWeQUwpmuATrHDYMc0zUxU8fZKi1bU1aLME5Y=; b=sSOLlGgw8mtYZgxIYzbM24ZwSgBq0Q8lila8wr1pHTd3zsNpYl24g5D4aKsowGkYwFSFeacPymjm+dd0MqO57A5qfa0/LfZzsktIxf26N8KLx3pChrB3qS3wT/uPhBfq56ZEf4shxcqFejOTHi0bup7aNAgZC178PnYZ7BXqKwA=
Received: from MN2PR11MB4157.namprd11.prod.outlook.com (10.255.181.213) by MN2PR11MB4254.namprd11.prod.outlook.com (52.135.38.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.20; Wed, 23 Oct 2019 22:24:33 +0000
Received: from MN2PR11MB4157.namprd11.prod.outlook.com ([fe80::88cb:fcc7:df90:124]) by MN2PR11MB4157.namprd11.prod.outlook.com ([fe80::88cb:fcc7:df90:124%5]) with mapi id 15.20.2387.021; Wed, 23 Oct 2019 22:24:33 +0000
From: "Reshad Rahman (rrahman)" <rrahman@cisco.com>
To: "Rob Wilton (rwilton)" <rwilton@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Thread-Topic: Version selection
Thread-Index: AQHViQkOvI26xPMrfUK7KEA4CIpe+adoAhqggACKDgA=
Date: Wed, 23 Oct 2019 22:24:33 +0000
Message-ID: <4AAD7886-973D-4B3B-98F6-0A84421A7637@cisco.com>
References: <E1941124-CBFE-4522-9DB2-37F8C92D44FF@cisco.com> <MN2PR11MB4366AFA861CD8EC4D8525747B56B0@MN2PR11MB4366.namprd11.prod.outlook.com>
In-Reply-To: <MN2PR11MB4366AFA861CD8EC4D8525747B56B0@MN2PR11MB4366.namprd11.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.1c.0.190812
authentication-results: spf=none (sender IP is ) smtp.mailfrom=rrahman@cisco.com;
x-originating-ip: [173.38.117.68]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3928a409-18c9-4970-2eac-08d75807c7f9
x-ms-traffictypediagnostic: MN2PR11MB4254:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <MN2PR11MB42545DB5DDBA95A046A49140AB6B0@MN2PR11MB4254.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:8273;
x-forefront-prvs: 019919A9E4
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(366004)(396003)(39860400002)(346002)(136003)(53754006)(199004)(189003)(51914003)(51444003)(256004)(76176011)(9326002)(2501003)(14444005)(6486002)(236005)(110136005)(5660300002)(71190400001)(71200400001)(3480700005)(2906002)(7116003)(58126008)(316002)(3846002)(66066001)(6116002)(99286004)(81166006)(8676002)(81156014)(8936002)(221733001)(33656002)(6246003)(25786009)(478600001)(36756003)(26005)(54896002)(229853002)(6436002)(486006)(86362001)(186003)(476003)(14454004)(2616005)(11346002)(6306002)(76116006)(6506007)(66946007)(7736002)(64756008)(66476007)(102836004)(6512007)(66446008)(446003)(53546011)(66556008)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB4254; H:MN2PR11MB4157.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: jt+A+FFSwfbFveH8cHwW/fcPqevs3bqZ8Qfhn1xNkLzeL+kUzlWBZ5ixtDWo185V65Un8lRAjdL8NRt/i7Er/H6ZhIX54n3/yHtx9qgzuj6nPE9Ue4d4nIoniRK8FUxfO/eYzW1SzjWHZc7kvQh1TJAPJ7/9Stv0JGQ0UTDyTeoGM5GOh6DPuX6onT++XLyziAJEDUzonbJ/xksWgHdBQHJu1Adp4NiAmyktjGL3O3fNaBxZ1/LJINBsayek5D8i5CfglB7qY6vF3vW/kW7stesMmD2rXNuHDtQi52xns1BOfSSZJSBkOcINBE075CElA6FdV1rPwj782YsLsHidDrHd1lZtXIcI9dDft2EOq1GIQ2onL3m88N6ifh9BTsIoN2kpvnzUi7ENoUr0LTxp4nh3HSZgDhLFjb77yZ0xvp2+B3uyqeOSsXn3ocIOESXk
Content-Type: multipart/alternative; boundary="_000_4AAD7886973D4B3B98F60A84421A7637ciscocom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 3928a409-18c9-4970-2eac-08d75807c7f9
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2019 22:24:33.8176 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: DyENY7cA3R+pkgShzEloa8Hu1u+RSj5eZL+/hMPID3buICgtb8Vba/V4/lee6rjYM/zsb6JEO0GovEfWZkEbZw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4254
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.36.7.30, xch-aln-020.cisco.com
X-Outbound-Node: rcdn-core-4.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/7nVBgUHtx0_N0YNT43Nq12a2nIk>
Subject: Re: [Netmod-ver-dt] Version selection
X-BeenThere: netmod-ver-dt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NetMod WG YANG Model Versioning Design Team <netmod-ver-dt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod-ver-dt/>
List-Post: <mailto:netmod-ver-dt@ietf.org>
List-Help: <mailto:netmod-ver-dt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod-ver-dt>, <mailto:netmod-ver-dt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Oct 2019 22:24:43 -0000

Hi Rob,

Thanks for the detailed response, inline. Looks like we’ll be discussing these points during the meeting.

From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
Date: Wednesday, October 23, 2019 at 9:13 AM
To: "Reshad Rahman (rrahman)" <rrahman@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Subject: RE: Version selection

Hi Reshad, all,

Personally, I think that the number one requirement here is allow a device to be configured such that the entire device uses a particular schema family at a particular version.
<RR> So basically what default-schema-set does (but probably with something else than schema-sets)? I agree.
<RR> One schema family at a particular version or multiple schema families each at their version? E.g. let’s say we have  2 schema families (vendor and IETF), so  e.g. top-level schemas are example-ietf-routing-top and example-vendor-xxx-top, are you suggesting we need to select one schema family or the other but not both? Some implementations may support 1 schema family at a time, others may concurrently support multiple schema families.
<RR> Also, when you say “configured”,  so we have config for default schema/version(s) and that can be overridden per “session” via the NETCONF/RESTCONF mechanisms? This is the equivalent of default-schema-set then?

Ideally, I would like the selection of this schema be written into configuration, and to be able to boot from this configuration (which may mean that I want the schema selection YANG module to be able to exist in all schema families).
<RR> If this config is for default behaviour, I agree.
<RR> I had thought about the schema selection YANG module needing to be in all schema families, that could be problematic. Instead of that, can we have a schema-family just for YANG version selection?

Regarding schema-sets, the issue that this was trying to solve is that a device may use slightly different schema for different datastores (e.g., perhaps most plausibly, the schema for <operational> may have deviations that don’t apply to the conventional configuration datastores), but the server may require clients to always use consistent schema for the configuration vs operational datastores.

However, RFC 8342 has this text:

   The datastore schema for <operational> MUST be a superset of the
   combined datastore schema used in all configuration datastores,
   except that configuration data nodes supported in a configuration
   datastore MAY be omitted from <operational> if a server is not able
   to accurately report them.

I think that this effectively means that a device must have a single logical schema that is superset of all datastore schema.  Datastore schema are effectively allowed to choose subsets of that schema.
<RR> Is the superset schema the combination of all schema families or 1 superset schema per schema family? If it’s the latter (which seems to be the case from your example below), how does the superset package differ from top-level package for a schema family? Or is it the same thing?

Given this, it is plausible that we don’t need schema-sets (or at least they can be renamed/repurposed), and instead we can rely on a device defining a package definition for the “superset schema”, which will implicitly select the appropriate package to be used for each datastore schema.  E.g. perhaps the package for the superset schema is example-ietf-routing-pkg@2.1.0<mailto:example-ietf-routing-pkg@2.1.0> and then the conventional configuration datastores use the package “example-ietf-routing-cfg-pkg@2.1.0” , and the operational state datastore uses “example-ietf-routing-state-pkg@2.1.0”.  Only the superset packages are advertised in the capabilities.  For devices that are fully compliant with NMDA, then it is plausible that they will use exactly the same schema (and hence package) for all configuration datastores and operational.
<RR> I agree that only the superset packages (which I understand to be same as top level packages) should be advertised in capabilities, that was the plan.

I think that this will cover the mainline case, where a client only wants to use one schema for all connections, and they just want to be able to choose the family and version of the schema that they are using to control the device.
<RR> So the superset package+version is the default schema/version pair then?


The second use case, is where a vendor may want to allow different clients to interact with different schema families, or different schema versions at the same time (e.g. on separate connections).  I see that for this mechanism the RPC is probably the best way to go for NETCONF, and the path is the best way to go for RESTCONF.

Based on the text about, my suggestions are:

  1.  Define “datastore superset schema” as the schema that is a superset of all datastore schema (yes, we may need better names here).
  2.  Define “datastore superset package” as the associated YANG package that defines the “datastore superset schema”.
  3.  Perhaps rename schema-sets (or at least the per datastore parts of them) (see below)
  4.  Update the ietf-schema-version-selection YANG model:
     *   Perhaps rename “schema-sets” to “schema-superset”:
        *   Change to be read-only
        *   Do we need to advertise the restconf root path, or can then just be done via using “<package-name>@<version>” in the path?
        *   Probably change the list to be keyed by (package name, package version)
           *   The package here is both the superset package and also the default package/version used for each datastore unless a more explicit entry is listed in the datastore list.
     *   Keep the configurable “default-schema-set” leaf, but perhaps rename it.

<RR> Let’s discuss in the meeting.

Regards,
Reshad.


Thoughts?  You may want to discuss some of this first before jumping into making changes?

Thanks,
Rob


From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org> On Behalf Of Reshad Rahman (rrahman)
Sent: 22 October 2019 19:47
To: netmod-ver-dt@ietf.org
Subject: [Netmod-ver-dt] Version selection

Hi all,

Here’s take 1 of the client version selection draft update, I still need to add text, review text etc based on what we agree on. Here are some questions and open items, we need to close on some of those before I send next revision. I’ll track issues in github subsequently.

  1.  Use of schema-sets? In the previous version we had config for both NETCONF/RESTCONF using schema-set via port and root-path. We’re now using capability and new RPC/operation for NETCONF, and these work on YANG packages which are in YL (packages draft). I’m proposing that we remove schema-sets for now (for simplification), and have the version selection draft use “top level packages”.
  2.  If we keep schema-sets,  the YANG model has been updated to have a schema-set consist of a list of YANG packages. The question then is whether we want schema-sets to be configurable by the user or not.
  3.  NETCONF experts please take a look at the NETCONF update.
  4.  I’ve used @ as the separator for YANG package and version, e.g. example-ietf-routing@1.3.1<mailto:example-ietf-routing@1.3.1>, this is because @  cannot be in the revision-label and looks like it can’t be in the package-name either (pkg-identifier is of type yang:yang-identifier)
  5.  Joe had raised the issue of default package version if none is selected. Any suggestions on how to advertise the default version(s) in capabilities, what about @D after the revision-label e.g. “example-ietf-routing@1.3.1<mailto:example-ietf-routing@1.3.1>@D”? Rob, I don’t think your YL extensions has default for YANG package versions right now?

Regards,
Reshad,