Re: [netmod] Proposal for minimalist full NMDA support in schema mount

Robert Wilton <> Fri, 23 February 2018 14:03 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id BE82612E6D7 for <>; Fri, 23 Feb 2018 06:03:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id b5GzJ-MkXCVg for <>; Fri, 23 Feb 2018 06:03:13 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 6F83112706D for <>; Fri, 23 Feb 2018 06:03:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=13509; q=dns/txt; s=iport; t=1519394592; x=1520604192; h=subject:to:references:from:message-id:date:mime-version: in-reply-to:content-transfer-encoding; bh=iUHWgF+Dkauv8wbCLAl+YkuUGoyiEvGSd1xZLckOOY0=; b=e1t3bP4a5wXv7b8/oRnttCR0SjS/5puloK5SWUNXnCfAqE1k5f115UdU 6WiecCDY8ZPalHRoSoUkHDlTXFKeUI+poyHfc0Tk6G6cvjT/95MYxMjnr vZQMZcCWj7vrWAo2gfe4YxvcdJfmp7dbzf4KpdV3pZGqNhHKBtpiXDmzw 0=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B2AQDjHpBa/xbLJq1SCgEYAQEBAQEBA?= =?us-ascii?q?QEBAQEBBwEBAQEBgyKBE3Aog2iLGY5jJ4EWllGCFgoYDYQ/TwKDDRcBAgEBAQE?= =?us-ascii?q?BAQJrKIUjAQEBAwEBASEECwEFNhsJAg4KAgImAgInMAYBDAYCAQEXigAIEI1hn?= =?us-ascii?q?XSBbTqFAIN3gh4BAQEBAQEBAwEBAQEBAQEBAQEBGAWBD4QJg36BZikMgWqBDoM?= =?us-ascii?q?uAQEDgUMLAQEIFoMXgmUFklaRbAmIKY1ngh+GKYNyJodljg2CAYRlgziBPCABN?= =?us-ascii?q?4FRMxoIGxU6gkODegECeAFBN4oSgj4BAQE?=
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="2253615"
Received: from (HELO ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Feb 2018 14:03:06 +0000
Received: from [] ( []) by (8.14.5/8.14.5) with ESMTP id w1NE35r3023797; Fri, 23 Feb 2018 14:03:05 GMT
To: Lou Berger <>, Martin Bjorklund <>,
References: <> <> <> <> <>
From: Robert Wilton <>
Message-ID: <>
Date: Fri, 23 Feb 2018 14:03:05 +0000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <>
Subject: Re: [netmod] Proposal for minimalist full NMDA support in schema mount
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 23 Feb 2018 14:03:16 -0000

Hi Lou,

I also don't agree that this is a rewrite of the draft.  My view is that 
it is really just an obvious simplification of the YANG module given the 
YLbis work.

For the use-schema version, the -08 version splits the *same* YANG 
library information into two separate places depending on whether it is 
mounted at the root, or below.  The PRE-09 version says that a root 
schema and a mounted schema are really the same thing and should be 
handled in exactly the same way.

On 23/02/2018 13:18, Lou Berger wrote:
> Martin,
> On 2/23/2018 7:55 AM, Martin Bjorklund wrote:
>> Hi,
>> Lou Berger <> wrote:
>>> Martin/Rob,
>>>      Back when the topic was raised for the first time publicly
>>> (Yokahama) and discussed in the WG [1] *any* solution would have been
>>> workable.  At this point > 2 years later, do you really think it is
>>> reasonable to do a rewrite of the solution ?
>> I don't agree that this is a rewrite of the solution.  I want to keep
>> the mountpoint statement.  I want to keep the two mechanisms inline
>> and use-schema.  The only change we're talking about is alinging the
>> read-only data that the server makes available with YLbis.
> The requirement to use YL-bis is enough for me classifying the change 
> as a rewrite.  The current draft is usable with both RFC7895 and 
> YL-bis.  This is a pretty major change, particularly for anyone 
> working on a client or server implementation now, or who wants to soon.
If semantic versioning, or other stuff (e.g. server/datastore 
capabilities) gets augmented into YLbis then that should just work with 
the pre-09 version, with no further changes.  This will not necessarily 
be the case with the -08 version because it will be using deprecated 
groupings, those deprecated groupings would need to be updated or it 
would force a new version of the SM YANG module.

To support pre NMDA implementations, I see that the solution should be 
the same as all other current YANG model drafts, i.e. if necessary, we 
publish a pre NMDA version of the YANG module in the appendix that works 
with existing implementations.  In this case I would use the model in 
the -08 version, put them both in different namespaces and label them 

>>   This is
>> quite trivial.
> From *your* perspective.  There are other's that disagree (See Dean's 
> and Chris' mail - they don't want *any* changes and are perfectly 
> happy with -08).
>>   We have documented this in the pre09 branch, and this
>> is imo ready to be published.
> It would still need to go through normal working processing which 
> would, hopefully, garner some review from some/any of the users or 
> operator who contributed to the development of -08.   For example, in 
> PRE09 I see some complexities in how mount points with different 
> schema in different DS works that seem unnecessary, also the recursive 
> case is not documented - even if I'm wrong and all that is needed is 
> better understanding (by me) or clarification (in the doc),  it still 
> would need to addressed as part of normal WG processing.
Please can you elaborate, or provide an example of the perceived 
different schema in different datastore complexity.

For the recursive mount case, Juergen has previously posted a useful 
diagram that shows how the -09 model fits with YLbis, that I think would 
be a useful addition.

Perhaps a second WG LC would be sufficient?

> Lou
>>> Are you really not
>>> willing to live with a compromise that addresses the issue albeit in
>>> way that you/some view as suboptimal?
I think that the YLbis based version is significantly simpler than what 
you/Chris proposed.  If we can't ship a YLbis version now then I prefer 
that the -08 version has no support for NMDA based servers and we 
immediately start SMbis using the YLbis version (i.e. not backwards 

I also think that longer term schema mount will end up with a lot more 
usage, which is why I want the -09 model published.


>>> Keep in mind that we had lots of discussions on what is
>>> optimal/preferred and there are/were different view points on this,
>>> compromises were made that increased complexity for others and these
>>> were accepted in interest of progressing *any* deployable solution.
>> Yes.  I don't want to give up these compromises.  I know that others
>> want to, and/or explore other solutions.  That's *not* what I'm
>> proposing.
>> /martin
>>> Lou
>>> [1]
>>> On 2/23/2018 4:36 AM, Martin Bjorklund wrote:
>>>> Hi,
>>>> Robert Wilton <> wrote:
>>>>> Hi Lou,
>>>>> I think that this solution is inferior to the model presented in
>>>>> pre-09.
>>>> I agree.  Servers that are NMDA-compliant, or implements YANG Library
>>>> bis will have to present schemas in two different structures,
>>>> depending on where the schema is used, and clients will have to code
>>>> for both.  With the solution in pre-09, there is just one structure.
>>>> A single structure also has other benefits (apart from being simpler),
>>>> e.g., if we augment it with the meta data that has been discussed
>>>> recently, we can augment a single structure.
>>>> /martin
>>>>> I would prefer that we publish pre09 instead, potentially including
>>>>> the -08 model in the appendix if that helps progress the document 
>>>>> in a
>>>>> more expedient fashion.
>>>>> Thanks,
>>>>> Rob
>>>>> On 22/02/2018 16:18, Lou Berger wrote:
>>>>>> Hi,
>>>>>> (I have a bunch of different roles WRT this work.  This mail is 
>>>>>> being
>>>>>> sent as an individual - as chair, I fully support the previous chair
>>>>>> statements on this draft.)
>>>>>> Chris and I have come up with a proposal on how to provide full NMDA
>>>>>> as part the existing schema-mount module.  Our motivation was to
>>>>>> enable full NMDA support with *minimal* change to the model and
>>>>>> disruption to the LC'ed work.  The key NMDA limitation, with -08, 
>>>>>> that
>>>>>> we are aiming to address is the ability to support different mounted
>>>>>> schema in different datastores for non-inline mount points. (See 
>>>>>> more
>>>>>> detailed description below if interested full nuances of limitations
>>>>>> of -08)
>>>>>> What we came up with was  to simply add a (leaf)list to identify in
>>>>>> which datastores a
>>>>>> schema-mount schema is valid/present. This is somewhat similar to
>>>>>> YL-bis schema/module-set. Specifically we're proposing (see below 
>>>>>> for
>>>>>> full tree below):
>>>>>>              +--ro schema* [name]
>>>>>>                 +--ro name           string
>>>>>> ADD          +--ro datastore*    ds:datastore-ref 
>>>>>> {revised-datastores}
>>>>>> This approach has the advantages of supporting different mounted
>>>>>> schema in different DSes, working with both NMDA and non-NMDA
>>>>>> implementations, supporting all of the extensively discussed 
>>>>>> features
>>>>>> of schema mount (including recursive mounts), and having 
>>>>>> minor/scoped
>>>>>> impact on all dependent work.  The main downside is that it isn't 
>>>>>> the
>>>>>> most optimal/compact solution possible if we were to base this 
>>>>>> work on
>>>>>> YL-bis/pre09 draft.  Of course -08 isn't necessarily optimal from 
>>>>>> all
>>>>>> perspectives, but it is what was agreed to as sufficient by those 
>>>>>> who
>>>>>> contribute to the WG discussion.
>>>>>> In short, we see this as a solution to  addresses the raised last 
>>>>>> call
>>>>>> issue with the minimal impact on -08 and dependent work -- which is
>>>>>> what is appropriate given where we are in the process.
>>>>>> So our/my question really is:
>>>>>>       Is this a solution that you/all can live with?
>>>>>> Note: optimization, design preference and perfect alignment with use
>>>>>> or YL-bis are not part of our question as we both don't think 
>>>>>> that is
>>>>>> the right question given where we are in the WG process.
>>>>>> Lou (with ideas developed with Chris, and chair hat off)
>>>>>> ======
>>>>>> Details -- for those who want
>>>>>> ======
>>>>>> As background, my understanding/view is that the -08 version of the
>>>>>> both NMDA and non-NMDA supporting implementations, but there are
>>>>>> limitations in its NMDA applicability. Used with Yang Library,
>>>>>> [rfc7895], only non-NMDA implementations can be supported.  When 
>>>>>> used
>>>>>> with the revised Yang Library defined in
>>>>>> [I.D.ietf-netconf-rfc7895bis-],  NMDA implementations can be
>>>>>> supported with certain limitations. Specifically, this document
>>>>>> requires use of the now deprecated module-list grouping, and the 
>>>>>> same
>>>>>> schema represented in schema list of the Schema Mount module MUST be
>>>>>> used in all datastores.  Inline type mount points, which don't 
>>>>>> use the
>>>>>> schema list,  can support different schema in different data stores
>>>>>> not by instantiating the [I.D.ietf-netconf-rfc7895bis-] version of
>>>>>> YANG library under the inline mount point.
>>>>>>       module: ietf-yang-schema-mount
>>>>>>           +--ro schema-mounts
>>>>>>              +--ro namespace* [prefix]
>>>>>>              |  +--ro prefix    yang:yang-identifier
>>>>>>              |  +--ro uri?      inet:uri
>>>>>>              +--ro mount-point* [module name]
>>>>>>              |  +--ro module        yang:yang-identifier
>>>>>>              |  +--ro name          yang:yang-identifier
>>>>>>              |  +--ro config?       boolean
>>>>>>              |  +--ro (schema-ref)?
>>>>>>              |     +--:(inline)
>>>>>>              |     |  +--ro inline?       empty
>>>>>>              |     +--:(use-schema)
>>>>>>              |        +--ro use-schema* [name]
>>>>>>              |           +--ro name
>>>>>>              |           |       -> /schema-mounts/schema/name
>>>>>>              |           +--ro parent-reference* yang:xpath1.0
>>>>>>              +--ro schema* [name]
>>>>>>                 +--ro name           string
>>>>>> ADD          +--ro datastore*    ds:datastore-ref 
>>>>>> {revised-datastores}
>>>>>>                 +--ro module* [name revision]
>>>>>>                 |  +--ro name yang:yang-identifier
>>>>>>                 |  +--ro revision            union
>>>>>>                 |  +--ro schema?             inet:uri
>>>>>>                 |  +--ro namespace           inet:uri
>>>>>>                 |  +--ro feature* yang:yang-identifier
>>>>>>                 |  +--ro deviation* [name revision]
>>>>>>                 |  |  +--ro name yang:yang-identifier
>>>>>>                 |  |  +--ro revision    union
>>>>>>                 |  +--ro conformance-type    enumeration
>>>>>>                 |  +--ro submodule* [name revision]
>>>>>>                 |     +--ro name yang:yang-identifier
>>>>>>                 |     +--ro revision    union
>>>>>>                 |     +--ro schema?     inet:uri
>>>>>>                 +--ro mount-point* [module name]
>>>>>>                    +--ro module yang:yang-identifier
>>>>>>                    +--ro name yang:yang-identifier
>>>>>>                    +--ro config?       boolean
>>>>>>                    +--ro (schema-ref)?
>>>>>>                       +--:(inline)
>>>>>>                       |  +--ro inline?       empty
>>>>>>                       +--:(use-schema)
>>>>>>                          +--ro use-schema* [name]
>>>>>>                             +--ro name
>>>>>>                             |       -> /schema-mounts/schema/name
>>>>>>                             +--ro parent-reference* yang:xpath1.0
>>>>>> We would expect that the revised-datastores feature would be used
>>>>>> (perhaps required) for any implementation that supports
>>>>>> ietf-datastores
>>>>>> and yl-bis.
>>>>>> _______________________________________________
>>>>>> netmod mailing list
>>>>> _______________________________________________
>>>>> netmod mailing list
> .