Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

"Rob Wilton (rwilton)" <rwilton@cisco.com> Tue, 14 January 2020 12:02 UTC

Return-Path: <rwilton@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 ADA3B120052 for <netmod-ver-dt@ietfa.amsl.com>; Tue, 14 Jan 2020 04:02:55 -0800 (PST)
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=D3i20sHj; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=cL7ij0pt
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 LfQBjtU4QRIr for <netmod-ver-dt@ietfa.amsl.com>; Tue, 14 Jan 2020 04:02:50 -0800 (PST)
Received: from alln-iport-1.cisco.com (alln-iport-1.cisco.com [173.37.142.88]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3EF61120018 for <netmod-ver-dt@ietf.org>; Tue, 14 Jan 2020 04:02:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=62914; q=dns/txt; s=iport; t=1579003370; x=1580212970; h=from:to:subject:date:message-id:references:in-reply-to: mime-version; bh=/Wmb/bLVhupz+ydXyLD+5/YrHbSBNdoL1+afCq1xkNo=; b=D3i20sHjCJd/1LdO+RDyAwbFVCxtJ4s4mlG1PjdWQXJT0FbB494gOk12 pCsFsnjQbExc6f5j71WnEWBHq/Nt8gdLGEwNNuevhxVzZB1UEm5SGs5qp mipzVcPDcIY37qAezBxzLvdcgtYWvwCwdmgn4ZeZyD1GD7IUdGvJGBbbF g=;
IronPort-PHdr: 9a23:8bhyCRJmOc45ngynTNmcpTVXNCE6p7X5OBIU4ZM7irVIN76u5InmIFeBvad2lFGcW4Ld5roEkOfQv636EU04qZea+DFnEtRXUgMdz8AfngguGsmAXFfkLfr2aCoSF8VZX1gj9Ha+YgBY
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CNGQCrrR1e/4QNJK1bCh4BCxyDIC8kLAVsWCAECyoKhAODRgOLBU6CEZgOgUKBEANUCQEBAQwBAS0CAQGBTIJ0AheBZiQ4EwIDDQEBBAEBAQIBBQRthTcMhV4BAQEBAxIRChMBATAIDwIBBgIRAwEBASEBBgMCAgIwFAkIAgQBEggTB4MFgX1NAy4BAo9bkGQCgTiIYXWBMoJ+AQEFhRIYggwJgTaMGRqBQT+BWIJMPoQWAQcLAQkYDBIWgloygiyNVQEyA4JDhVeJb48uCoI4lkiCR4gChESLYI5bmncCBAIEBQIOAQEFgWkiZ3FwFYMnUBgNiAEMF4NQilN0gSiJR4EiAYEPAQE
X-IronPort-AV: E=Sophos;i="5.69,432,1571702400"; d="scan'208,217";a="404424830"
Received: from alln-core-10.cisco.com ([173.36.13.132]) by alln-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 14 Jan 2020 12:02:48 +0000
Received: from XCH-RCD-002.cisco.com (xch-rcd-002.cisco.com [173.37.102.12]) by alln-core-10.cisco.com (8.15.2/8.15.2) with ESMTPS id 00EC2lbT017492 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL) for <netmod-ver-dt@ietf.org>; Tue, 14 Jan 2020 12:02:48 GMT
Received: from xhs-rtp-002.cisco.com (64.101.210.229) by XCH-RCD-002.cisco.com (173.37.102.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 14 Jan 2020 06:02:47 -0600
Received: from xhs-aln-003.cisco.com (173.37.135.120) by xhs-rtp-002.cisco.com (64.101.210.229) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 14 Jan 2020 07:02:46 -0500
Received: from NAM11-BN8-obe.outbound.protection.outlook.com (173.37.151.57) by xhs-aln-003.cisco.com (173.37.135.120) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 14 Jan 2020 06:02:46 -0600
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZWMzl3CgBIpF0T4zeEq106afEOYvltQYax0KUV7Sz2iptXBIoYjYsFkCSmt0BCJPgZzyXjX3IVsOYv+bwF0B7ofY2ZYsfUwU5uXY15ngdE8EwoPngAYWkAyTdOHKa0EIr2NRIKPfQmHIC9N9UtyPqN9LvJUIreUAeydCVcd13WwQVGh2M2vSVyySvKBYBH4pjsjooN4fKMZOzPSCrDXJbWywIYj4MnupqBtiKj34RczWzjcbhkSKabd8x3ZGyfQeBkcHBwExs28ue7UQlQrovTC556Soc97B0s5QLmRVO5EFBUhgtes41Nx+fUrPmMNsNTC5SfxdeXDGitXth2Hsug==
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=/Wmb/bLVhupz+ydXyLD+5/YrHbSBNdoL1+afCq1xkNo=; b=hUSC7VON/gCPi8vS8XgpbVNyCUNoDwbOenum+VbqRYUQZ8umwz6S577s7MuRohi0PzoT3FJIPBt68fsIEwpcJMhwNtgptAsEMQLj9iiuG2UOy1FRY3Piyur/KbthulnuYTKX6LsGLeM0X6yDnBX1CWPK1o1+8FQTLoZLEEVV9hZM6WaLPMGSisnO5DcyNjbw/EHySrANu2p7erXw1/LM1sT83cCPVa4n/ZcmkU+Vh/P3udCzdFJhq/yMAgW58A/H/L2lT6ni8MgprPcdD40wSvdUHhf/56zGjkMnEt9dKi0M+SO8fRhdDLAkJ2JPYk8LkD3lDNA1K9AgBySRWkB+bg==
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=/Wmb/bLVhupz+ydXyLD+5/YrHbSBNdoL1+afCq1xkNo=; b=cL7ij0ptu/cXr6aeS/R4Fd7UR3Dmg9rZDZK7Yxo7Hdzwzl7fzP8yu8FkfL96Mxftvw+r4h9eYda7DmKrIWDHqIxpO5G3Ay+2Rme6mPu//4T49QFeMW+oKQF4pZt58/DclNpQluQk5OqPLJD6/1MMuH1kxXtNkgMxL9ryrDJ8e2Q=
Received: from MN2PR11MB4366.namprd11.prod.outlook.com (52.135.38.209) by MN2PR11MB3712.namprd11.prod.outlook.com (20.178.253.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2623.9; Tue, 14 Jan 2020 12:02:44 +0000
Received: from MN2PR11MB4366.namprd11.prod.outlook.com ([fe80::b9ce:1058:5fa6:44a1]) by MN2PR11MB4366.namprd11.prod.outlook.com ([fe80::b9ce:1058:5fa6:44a1%7]) with mapi id 15.20.2623.015; Tue, 14 Jan 2020 12:02:44 +0000
From: "Rob Wilton (rwilton)" <rwilton@cisco.com>
To: "Reshad Rahman (rrahman)" <rrahman@cisco.com>, "netmod-ver-dt@ietf.org" <netmod-ver-dt@ietf.org>
Thread-Topic: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]
Thread-Index: AQHVymqtHoGPI5gXy0aClQ4LN59Fwafp82Ug
Date: Tue, 14 Jan 2020 12:02:44 +0000
Message-ID: <MN2PR11MB436692E20E99093E95764C63B5340@MN2PR11MB4366.namprd11.prod.outlook.com>
References: <894526A8-4D71-4A20-ADA9-0569356C8387@cisco.com>
In-Reply-To: <894526A8-4D71-4A20-ADA9-0569356C8387@cisco.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=rwilton@cisco.com;
x-originating-ip: [173.38.220.47]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 477b14c4-9038-4994-8683-08d798e9aa33
x-ms-traffictypediagnostic: MN2PR11MB3712:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <MN2PR11MB37122BE640A4F10F7505FEC1B5340@MN2PR11MB3712.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 028256169F
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(376002)(346002)(366004)(39860400002)(136003)(189003)(199004)(64756008)(66476007)(8936002)(9326002)(2906002)(86362001)(81166006)(81156014)(316002)(8676002)(76116006)(66446008)(66946007)(66556008)(110136005)(53546011)(5660300002)(186003)(71200400001)(33656002)(478600001)(55016002)(52536014)(26005)(6506007)(9686003)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3712; H:MN2PR11MB4366.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A: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: ph2ltpcmgRcG/no4VX0qvGuCE6bYSB8F8pJOSTC2hAqOGRgsvD8giUDwOm3kZABlggGlZGyvSt+9xeBd4g0I1x9dpxYy52nzg6HLbmoyu8XXvtDKQFqAO6FWMTtla0Xb9VGgLJiuHWTiUEVg5oiAS3OweVWhAE/eB3csfJztBaCy6V9/x+hajKVDKu6iWBlL+IolAsk4OCP5rWSWU8VZhg/qLNAy5Nq/0Guhk579NFqz+2RWtEuUEEdZN2aSgd/2rLD7+hghecnxGN/H8Ahh/IymTkekHC041sFEXYoZuavxqrytOZfv1mObmGDjAZsKVgZ13TbPdLwFL32IiUnG4a5wEoss8+aoTgIIg1yPVtjOs3B/VmucMNwXLp7/U5aePsIgggCwY+7dZHODCLYScyLf7vBW++Pi22jKWiUs9z5MTyZMqM1Ne0SpxZ55nxKK
Content-Type: multipart/alternative; boundary="_000_MN2PR11MB436692E20E99093E95764C63B5340MN2PR11MB4366namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 477b14c4-9038-4994-8683-08d798e9aa33
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2020 12:02:44.4970 (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: HyoGfNTyo9fBYJxZag7yjIIIA3gv9f8Z0NbUZAmedDfDGfASS4aDzEx26copdjFbW4bXjgbqgJmY83EVQFeByQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3712
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.12, xch-rcd-002.cisco.com
X-Outbound-Node: alln-core-10.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod-ver-dt/lLjP-ohFhGm7pbz0_lxSk93XycQ>
Subject: Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]
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: Tue, 14 Jan 2020 12:02:56 -0000

Hi Reshad,

Please see inline …

From: Reshad Rahman (rrahman) <rrahman@cisco.com>
Sent: 13 January 2020 23:39
To: Rob Wilton (rwilton) <rwilton@cisco.com>; netmod-ver-dt@ietf.org
Subject: Re: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

Hi Rob, all,

PSI.

From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org<mailto:netmod-ver-dt-bounces@ietf.org>> on behalf of "Rob Wilton (rwilton)" <rwilton@cisco.com<mailto:rwilton@cisco.com>>
Date: Friday, January 10, 2020 at 5:10 AM
To: "netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>" <netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>>
Subject: [Netmod-ver-dt] Meeting minutes [was Today's Ver DT meeting]

Points from the meeting what would be good for further discussion.  I think that a lot of these issues are probably still open and require further discussion:


1)     It is clear that we need to standardize supporting different versions of a schema, but do we also want to support different schema families (e.g. vendor vs IETF vs OC)?

a.       My personal view is that it would be good if the model is general enough that this can be described (and I think that it might be useful if there are some examples given in the appendix).

2)     For supporting non-native schema, there seem to be two approaches:

                                                                        i.     always translate into the native schema, reads from say OC convert back from the native schema

                                                                       ii.     store/persist configuration in the external schema (e.g. OC).  E.g. so a get-config on OC would only get back what had been written to the OC schema, not any other schema.

b.      Do we need to describe these two approaches?  For secondary schema does the model need to indicate which method is being performed, or is that purely an implementation detail?
<RR> We could give examples of how this could be implemented but I’m not sure there will be consensus on this. And I’m worried this could be opening a can of worms for no perceived benefit. But maybe there’s no way out of discussing how it could be implemented.
[RW]
Perhaps this could go in an appendix as non-normative text, or may be in the introduction sections?

My concern is that readers will think that this solution is too complex, my thoughts on how to mitigate that are two fold:

  1.  To give implementations a lot of choice in terms of what they choose to support.
  2.  To give some clues on how the version selection could be implemented.

The draft might also need to talk about datastores, in that the secondary-schema probably implicitly create a separate set of datastores (with different schema) that map into the datastores using the primary schema.  The externally visible names of the secondary datastores are effectively the same as the primary datastores that they map to (and are aliasing).

Also from a client perspective, when a client accesses a secondary schema, I think they may want to know whether (i) they are just seeing a subset of the configuration, or (ii) they are seeing all of the configuration translated into that secondary schema.  E.g. if the OpenConfig case, will the client only see interfaces that have been configured in OpenConfig, or will they also see interfaces configured in the native schema?  Given that this could impact client behaviour, can this just be left as an implementation detail?  Maybe this issue should be deferred to a future revision.




3)     Can both of the approaches described in (2) above work for different versions of the schema?  Or must these always be handled by dynamic translation.

4)     What is the schema that the configuration is persisted in?  Should this automatically be tied to the default schema, or should this a separate data node, that could potentially be configurable?

a.      Related to this, how does the system handle changing the default schema?  Can that be done as part of a config request?  Does the connection have to be closed and re-opened?  Or should it be an RPC outside of configuration?
<RR> Should that exercise be left to the reader ☺.
[RW]
Perhaps.  It probably requires further discussion. 😉

What I mean is that some of this could be implementation specific (e.g. what schema is used to persist config).
[RW]
My hunch is that defining an explicit primary schema that is used to persist the configuration probably makes it easier to understand from both a client and server perspective.  I.e. if this doesn’t make the solution too restrictive then having this constraint seems software helpful.

For changing the default schema let’s try to see how it can be done with config request and if that doesn’t fly we go to RPC. One issue with config we had discussed before is that the config for default schema has to be in all schemas.
[RW]
I think that changing the default (primary) schema via direct configuration has various issues (as per my prior reply to Joe) that potentially seem to go away if we use a separate RPC instead.



5)     We need a concise way of describing the relationship between schema and datastores.  The current approach in the model is somewhat verbose, if every datastore needs to be described separately (but is somewhat aligned to YANG library style).

a.      Should we allow schema to only support some datastores (e.g. only operational, or only conventional configuration)?

6)     Do we need secondary schema to have the ability to be defined or described as only being read-only?

a.      E.g. I can see a requirement to allow a client a configure a device using an older version of the schema.  I can also see a requirement of allowing a client to see what the instance data against a older version of a schema would look like in a more current version.  But I’m less convinced of the need to be able to convert a current configuration back into an older format.
<RR> If the secondary schema is read-only then that diminishes its usefulness so we should strive to have it writable. Converting config to an older format shouldn’t be a requirement IMO.
[RW]
I wasn’t intending to require all secondary schema-sets to be read-only, but allow implementations where they want particular secondary schema-sets to be read-only.  E.g. so a device can be setup such that it allows a client to see older config translated into a new config version, but does not support the reverse translation.

Thanks,
Rob



Regards,
Reshad.

Perhaps we can discuss some of these over email, and try and reach consensus, or otherwise we will pick up discussion in next week’s meeting.

Was there anything else that I missed?

Thanks,
Rob


From: Netmod-ver-dt <netmod-ver-dt-bounces@ietf.org<mailto:netmod-ver-dt-bounces@ietf.org>> On Behalf Of Rob Wilton (rwilton)
Sent: 09 January 2020 14:11
To: netmod-ver-dt@ietf.org<mailto:netmod-ver-dt@ietf.org>
Subject: [Netmod-ver-dt] Today's Ver DT meeting

Happy New Year!

From the last meeting I did say that I would work on producing some concrete examples of version selection 😊

I’ve started working on this, but more work is required.  I have attached one example that we can discuss in the meeting, more may be forthcoming before the meeting.

As part of that work, I’ve been thinking more about the default/secondary schema.

As a recap, I think that this is roughly where I am at:


(1)   The default schema:

o   is the schema that is used if a client doesn’t specify a secondary schema during their connection (i.e. NETCONF capabilities negotiation, or RESTCONF path).

o   is also the schema used for the persistent configuration (and the <startup> datastore). [I think that this is probably right, but might need further thought/discussion]


(2)   Secondary schema:

o   are additional schema that clients can choose to use, and are specified during their session (i.e. NETCONF capabilities negotiation, or RESTCONF path).

o   can probably take several forms:

§  A filtered view on the default schema (e.g. if the default schema supported vendor native + IETF + OC schema) then a filtered schema view might just be the OC subset.  This should be simple to support since it broadly equivalent to a subtree filter on any get operations.

§  A translated view on the default schema (e.g. perhaps a different version of a schema),  All reads/writes to a translated schema are converted to/from the default schema.  The configuration is persisted in the “default schema”.

o   It might be useful if some of the secondary schema could be labelled as read-only views on the data.  E.g. it might be reasonable to see the configuration using a secondary schema non native version, but not allow it to be modified.

Attached example:

Example 1, a simple example of a server supporting two schema versions, and the client can choose between which version is used for the primary schema.

-        One question related to this example is what happens to the current configuration if a client changes the default schema to a different version.  Does that configuration also automatically get translated as well?  What happens if that translation fails?

-        Do we need a simpler way to reporting the per datastore schema?  E.g. should we have a special value to identify all datastores, or all conventional datastores?

Thanks,
Rob