Re: [netmod] schema-mount pre09 branch

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Tue, 06 February 2018 08:33 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 41009126BF6 for <netmod@ietfa.amsl.com>; Tue, 6 Feb 2018 00:33:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level:
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=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 IKC5EmsIOJYY for <netmod@ietfa.amsl.com>; Tue, 6 Feb 2018 00:33:49 -0800 (PST)
Received: from atlas5.jacobs-university.de (atlas5.jacobs-university.de [212.201.44.20]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E3B48120727 for <netmod@ietf.org>; Tue, 6 Feb 2018 00:33:48 -0800 (PST)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas5.jacobs-university.de (Postfix) with ESMTP id 1119CEFE; Tue, 6 Feb 2018 09:33:47 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas5.jacobs-university.de ([10.70.0.217]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10032) with ESMTP id LDuzrD6jFV_E; Tue, 6 Feb 2018 09:33:44 +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 atlas5.jacobs-university.de (Postfix) with ESMTPS; Tue, 6 Feb 2018 09:33:47 +0100 (CET)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id EB1CE20149; Tue, 6 Feb 2018 09:33:46 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id rQgKcfhe79pq; Tue, 6 Feb 2018 09:33:44 +0100 (CET)
Received: from elstar.local (unknown [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id A5B8620147; Tue, 6 Feb 2018 09:33:44 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id 629A04239CBF; Tue, 6 Feb 2018 09:33:44 +0100 (CET)
Date: Tue, 06 Feb 2018 09:33:44 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Kent Watsen <kwatsen@juniper.net>
Cc: "netmod@ietf.org" <netmod@ietf.org>
Message-ID: <20180206083344.o5vqjwwtkq7awrxy@elstar.local>
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
Mail-Followup-To: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>
References: <53639272-C297-4757-A225-E1DAE123CBFB@juniper.net>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <53639272-C297-4757-A225-E1DAE123CBFB@juniper.net>
User-Agent: NeoMutt/20171215
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/H4ZBLT8E26SZCTQmz5OTSCDUp8c>
Subject: Re: [netmod] schema-mount pre09 branch
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
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: Tue, 06 Feb 2018 08:33:52 -0000

On Wed, Jan 31, 2018 at 09:36:07PM +0000, Kent Watsen wrote:
> 
> The authors created a "pre09" branch on GitHub a few weeks back.  On this branch, they completed a full update of the draft.  While waiting for details on how to proceed with regards to a SM-bis, we thought it would be helpful to make this text available now so that the technical parts can be discussed.  With this in mind, can folks please have a quick look and post any technical comments they have?  
>

I have reviewed draft-ietf-netmod-schema-mount-pre-09 that I fetched
today from GitHub. Here are my comments:

* Perhaps the abstract can be improved. The single sentence that we
  have is not even quite correct.

   This document defines a mechanism to combine YANG modules into the
   schema defined in other YANG modules.

  According to YL bis, a datastore has a schema, which consists of a
  set of YANG modules. The terminology used in RFC 7950 is 'schema
  node' and 'schema tree'. Perhaps this sentence can be rewritten to
  better explain the purpose of this document.

* The following text is not consistent with what YLbis says:

   2.  Implementation-time: the mounted schema is defined by a server
       implementor and is as stable as YANG library information, i.e.,
       it may change after an upgrade of server software but not after
       rebooting the server.  Also, a client can learn the entire schema
       together with YANG library data.

  YLbis does allow YANG library to change. I think this text should
  change as follows:

   2.  Implementation-time: the mounted schema is defined by a server
       implementor and is as stable as YANG library information of the
       server. A client can learn the entire schema by reading the
       server's YANG library data.

   I think 3. should also be changed. The phrase 'is part of the
   mounted data model' may not be exactly true with NMDA - well
   depending what the 'mounted data model' really means. Perhaps
   something like this:

   3.  Run-time: the mounted schema is defined by instance data that
       is associated with the mount point and reported outside the
       server's YANG library information. If there are multiple
       instances of the same mount point (e.g., in multiple entries of
       a list), the mounted data model may be different for each
       instance.

* Terminology - should this document import the terms client, server,
  notification from the NMDA document instead of the NETCONF document?
  I assume the terms are understood more broadly than just NETCONF
  client and server.

* Definition of inline schema:

   o  inline schema: a mounted schema whose definition is provided as
      part of the mounted data, using YANG library
      [I-D.ietf-netconf-rfc7895bis].

   I am not sure 'as part of the mounted data, using YANG library' is
   a good definition. Which YANG library? I think what this term means
   is a mount point specific YANG library, not the master server's
   YANG library.

   This is also why I was largely confused about the inline case; the
   schema used by the mountpoint is not defined inline from the master
   server's point of view, from which the document is written. From
   the master server's point of view, the 'inline schema' is actually
   the opposite, it is an 'external schema' since I have to pull the
   schema information from an external source; the schema is not
   reported with the server's schema information - this is what I
   would consider inline.

   It may be too late to change this term but at least for me 'inline'
   has been very confusing since we describe everything from the
   perspective of the master server.

  Later on, the phrase "use-schema" case is used as well. Perhaps this
  should also be a defined term and a better term should be used. The
  terms should describe the concepts and the YANG model should follow;
  what we have is kind of backwards, there is a YANG model and then
  model names are used a conceptual terms.

* YANG library stability

  I reported this already. The statement 'In particular, it SHOULD NOT
  change during the same management session.' is not consistent with
  what YL and YLbis say.

* YANG library has a drawing of the underlying conceptual model. It
  may help to agree on how schema mount is extending the model. Here
  is a drawing that I created for myself:

        +-----------+
        | datastore |
        +-----------+
             |
             | has a
             V
        +-----------+            +--------+                +------------+
        | datastore |  union of  | module |  consists of   | modules +  |
 .----->|  schema   |----------->|  set   |--------------->| submodules |
 |      +-----------+            +--------+                +------------+
 |           |
 |           | has
 |           v
 |      +-----------+
 '------|   mount   |------>  external YANG library
   uses |   points  | uses	schema reference
        +-----------+

  Note that this makes drawing makes my struggle with the term
  'inline' even more obvious. If you look at this figure, then inline
  would mean the exact opposite of what 'inline' means today.

* Where is the schema defined in the external aka 'inline' case?
  The current text says:

   In case 1, the mounted schema is determined at run time: every
   instance of the mount point that exists in the parent tree MUST
   contain a copy of YANG library data [I-D.ietf-netconf-rfc7895bis]
   that defines the mounted schema exactly as for a top-level data
   model.  A client is expected to retrieve this data from the instance
   tree, possibly after creating the mount point.  Instances of the same
   mount point MAY use different mounted schemas.

  I think this does not work for datastores except the operational
  datastore. In fact, I think the model must be that if /foo is an
  external 'inline' mountpoint, then the /foo instance in the
  operational state datastore must include a YANG library
  instantiation in which a client can find the schema definition for
  /foo in any datastore where /foo is supported. In other words, if
  /foo is config true and a client wants to know how the /foo schema
  in <running>, then the client has to fetch the YANG library residing
  under /foo in <operational> in order to obtain the schema
  information for the <running> datastore. The text does not say any
  of this.

* Where is the schema defined in the inline aka 'not inline' case?
  The current text says:

   In case 2, the mounted schema is defined by the combination of all
   "schema" entries referred to in the "use-schema" list.

  I think the YANG model refers to a single schema. I think this text
  needs to be revised and aligned with the new data model. This like
  applies to other places in the document where "use-schema" is
  discussed.

  I do not understand the following statement:

   [...] Note, that in this case a mount point may include a mounted
   YANG library module and the data contained in the mounted module MUST
   exactly match the data contained in the "schema" entries associated
   with the mount point.

  There is text about a "schema" list in 3.2 that I think is not
  needed anymore.

* RPC operations and notifications

  "clients can invoke this operation by representing it as an action
  defined for the corresponding mount point"

  The wording 'invoke ... by representing" seems wrong. I think this
  should be "clients can invoke this operation as if it were defined
  as an action for the corresponding mount point" or something like
  this.

  Should there be additional text discussing how parameters of
  operations and notification content is interpreted? I assume
  everything is scoped to the mount point but perhaps this needs to be
  stated explicitly.

* Data model

  The model is augmenting /yanglib:yang-library/yanglib:schema. In
  the case where I had two different schemas defined for say the
  operational state datastore and conventional datastores, this
  implies that I have to duplicate the schema-mounts specific
  definitions even in the likely case where the schema mounts are
  identical in both datastores. (For the extern 'inline' case they
  actually have to be the same or at least the operational state
  datastore schema-mounts have to be a superset of the conventional
  datastore schema-mounts since otherwise I can't get the schema
  information. So the question is whether schema-mount should be a
  list directly under /yanglib:yang-library and then
  /yanglib:yang-library/yanglib:schema would be augmented by a leaf
  (or a leaf-list) referring to schema-mount entries.

* YANG definitions

  I think the description of the leaf 'inline' [yeah, this should be
  'external'] needs to be updated to explain where in an NMDA system
  the YANG library information can be found.

  And yes, 'use-schema' is really what I call 'inline' - the schema
  information is provided as part of the YANG library defining the
  mount point.

* Security considerations

  I was expecting text that explains how NACM works on a server that
  has schema mounts, discussing both cases, the inline and external
  schema mount cases.

* Examples

  I have not reviewed the examples.

/js

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