Re: [netmod] netmod-revised-datastores: templates, interactions with RFC6243 'report-all'

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Wed, 22 February 2017 10:34 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 605FC1296C4 for <netmod@ietfa.amsl.com>; Wed, 22 Feb 2017 02:34:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.001] autolearn=ham autolearn_force=no
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 tU0T0Ax8pyXd for <netmod@ietfa.amsl.com>; Wed, 22 Feb 2017 02:34:47 -0800 (PST)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 15B0E1294ED for <netmod@ietf.org>; Wed, 22 Feb 2017 02:34:47 -0800 (PST)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id D9D498B9; Wed, 22 Feb 2017 11:34:45 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.205]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id PdoIi_KgLvK4; Wed, 22 Feb 2017 11:34:42 +0100 (CET)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 22 Feb 2017 11:34:45 +0100 (CET)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 0C513200C9; Wed, 22 Feb 2017 11:34:45 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id KRilJHIfX5qG; Wed, 22 Feb 2017 11:34:44 +0100 (CET)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 204D2200CB; Wed, 22 Feb 2017 11:34:43 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id 9DC863E8314C; Wed, 22 Feb 2017 11:34:46 +0100 (CET)
Date: Wed, 22 Feb 2017 11:34:45 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Ladislav Lhotka <lhotka@nic.cz>
Message-ID: <20170222103444.GB44439@elstar.local>
Mail-Followup-To: Ladislav Lhotka <lhotka@nic.cz>, "Sterne, Jason (Nokia - CA)" <jason.sterne@nokia.com>, Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <43B527B5-3C59-452E-9C2D-6A4CF681607E@juniper.net> <m21suthwtk.fsf@birdie.labs.nic.cz> <77633AB4-F300-4036-8255-BCF909FBF0EB@juniper.net> <858A1C84-1A66-4926-B8BD-80B07DDB43DE@nic.cz> <HE1PR07MB0843BAFFC40FEEB6FA9D01059B500@HE1PR07MB0843.eurprd07.prod.outlook.com> <20170222065942.GA43615@elstar.local> <4415860C-AC4B-418B-B1FB-9E14F7E710B2@nic.cz> <20170222083115.GA44118@elstar.local> <9A14C02C-7C00-4F26-8510-7A047D1768B4@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <9A14C02C-7C00-4F26-8510-7A047D1768B4@nic.cz>
User-Agent: Mutt/1.6.0 (2016-04-01)
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/fQ2ndGxlAN6L_Q9yN7J1lPobRs8>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] netmod-revised-datastores: templates, interactions with RFC6243 'report-all'
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Feb 2017 10:34:49 -0000

On Wed, Feb 22, 2017 at 11:22:22AM +0100, Ladislav Lhotka wrote:
> 
> > On 22 Feb 2017, at 09:31, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > On Wed, Feb 22, 2017 at 08:41:55AM +0100, Ladislav Lhotka wrote:
> >> 
> >>> 
> >>> The WG needs to decide what the expectations are for templates and
> >>> whether validity of templated config means just (a), just (b) or both
> >>> (a) and (b). I actually think it should be (a) and (b) but there might
> >>> be implementations that only do (a) or only do (b).
> >> 
> >> We now have:
> >> 
> >> 1. YANG as a language for specifying schema, datatypes and constraints.
> > 
> > YANG also defines when and how constraints are expected to be checked. Are
> 
> The semantics of constraints are mostly defined in terms of a data tree, child nodes etc. that are pretty universal. Accessible trees for evaluating XPath have specific definitions, such as state data + running, but the XPath semantics don't really depend on this - the tree just has to be defined somehow. 
> 
> > you saying we should remove this, i.e., have a language where I can write
> > down must constraints but leave it open when and how they are checked?
> 
> Yes. Even now, you can write a must constraint referring to a node that may not eventually exist in the data model (because the corresponding module isn't implemented). YANG modules are just building blocks, it is the data model that has to make sense as a whole.
>

YANG says very clearly what it means for a configuration datastore to
be valid and we have a common understanding that the <running>
datastore is always kept valid.
 
> >> 2. YANG library as a means for composing YANG modules into data models.
> > 
> > YANG library reports the set of YANG modules implemented. I do not think
> > it does composition of YANG modules into data models.
> 
> So what's your definition of a data model? For me it's exactly what YANG Library says, including supported features etc. Schema mount could be an additional part of this. The point is that implementations and tools that want to do validation have to be able to compose the schema of the entire data tree, and the result is what I call the data model. 
>

OK. Certainly one way to look at things.

> >> What's IMO needed is
> >> 
> >> 3. a formalism for binding data models to specific checkpoints in a network management workflow (such as intended or ephemeral datastore). Different use cases may have different datastores and workflows, and that's why I believe this has to be "parametrised".
> >> 
> >> RFC 6020/7950 does #3 in a relatively rigid way that really works only for the NETCONF protocol (which was of course the original aim).
> > 
> > I do not agree with the statement that the model used by YANG only
> > works for the NETCONF protocol. The question is whether
> 
> Well, yes, you can use it for any protocol as long as it has certain datastores and operations, or if you selectively ignore/reinterpret parts of RFC 7950. Sample from sec. 8.3.3:
> 
> If the datastore is "running" or "startup", these constraints MUST be enforced at the end of the <edit-config> or <copy-config> operation.  If the datastore is "candidate", the constraint enforcement is delayed until a <commit> or <validate> operation takes place.
> 
> > 
> > (a) we can agree on a common datastore model with clearly defined
> >    semantics such that it simplifies implementations of clients and
> >    servers since datastore semantics are predictable (this is what
> >    the datastore design team has been working on)
> 
> I doubt that any particular datastore model can work for everybody. What's in the revised-datastore draft is already way too complex for some use cases but, on the other hand, other use cases may need something different or more complicated. 
>

Not every datastore needs to be in every implementation or accessible over
every protocol. If this is not stated clearly enough, we may need to improve
the writing.

> > (b) or we raise the bar for clients by requiring that clients obtain
> >    sufficient information about the specific workflow supported by a
> >    server so that they can reliably map a configuration change
> >    request to the appropriate datastore the server likes to have
> >    modified.
> > 
> > My fear is that (b) significantly raises the bar and thus many clients
> > in reality will simply assume certain datastore semantics and then
> > fail to interoperate with other servers. We may get back to vendor
> > specific silos.
> 
> I don't mean that implementations will necessarily have to dynamically parse and set up such a workflow - a protocol definition could simply specify a particular workflow, or a few related ones. In fact, already NETCONF covers a number of workflows that are used in the wild, including
> 
> - persistent and writable running
> 
> - persistent startup + writable ephemeral running
> 
> - persistent startup + persistent writable candidate + ephemeral read-only running
> 
> I also suspect that most troubles I2RS folks have had with YANG were due to the need to retrofit their workflow to that of NETCONF.
>

So you want per protocol datastore models? How do you then deal with
implementations that have to support multiple protocols, i.e.,
multiple data store models? How do you ensure that all combinations
you get can be implemented meaningful together?

But then, you wrote 'different use cases' and not 'differnet
protocols' so it did sound like you want even different use cases with
the same protocol to use different datastore semantics and workflows.
It seems there is a flexibility - complexity tradeoff here.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>