Re: [netmod] initial comments on draft-rwilton-netmod-yang-packages

Robert Wilton <rwilton@cisco.com> Wed, 30 January 2019 12:19 UTC

Return-Path: <rwilton@cisco.com>
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 BCEA61311DF for <netmod@ietfa.amsl.com>; Wed, 30 Jan 2019 04:19:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -19.042
X-Spam-Level:
X-Spam-Status: No, score=-19.042 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, 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, T_KAM_HTML_FONT_INVALID=0.01, 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
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 m1-khzRZduNu for <netmod@ietfa.amsl.com>; Wed, 30 Jan 2019 04:19:18 -0800 (PST)
Received: from aer-iport-1.cisco.com (aer-iport-1.cisco.com [173.38.203.51]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A3BD81311DE for <netmod@ietf.org>; Wed, 30 Jan 2019 04:19:17 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=45450; q=dns/txt; s=iport; t=1548850757; x=1550060357; h=subject:to:references:from:message-id:date:mime-version: in-reply-to; bh=LulSfqkJUfqHbtON1gF9f1qHYazQhIw/Lv9Lyn6E/LU=; b=gmgu/i0qeRwl8UxdUamEUI9Jo82cxypKNKABGkZ6bIZ2BGqm2W1TMa2P dbL62Mkrvyh7hL36wSCce8LioCXtONKWskQ8wKapMA2KUzNGk/CEx5FDl d5tZAlBOawUEdVdE581SZ8P+yYI2N2GVz3SDyb903tPzCnMS9J/OH79Hy A=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AsAABblVFc/xbLJq0YAUoaAQEBAQECAQEBAQcCAQEBAYFUAgEBAQELAQGBDIFdUTInhAOIeY0CJZoEBA0YAQqEA0YCgyg3Bg0BAwEBAgEBAm0cDIVKAQEBAQIBAQEYCUsEDAsJAhEEAQEBIAEGAwICJx8JCAYBDAYCAQEXgwcBgXkID41IgUSbYYEvH4QjQUCEcAWMV4FAP4E4DIFhfoMeAQEDAYE3EEyCU4JXAolMUAIDgUuENIZhintcCYcuin4GGIFrhTmDFYd6ihmFLIUFhxiBXCIogS4zGggbFTuCbIsdhT8/AzCNY4JMAQE
X-IronPort-AV: E=Sophos;i="5.56,540,1539648000"; d="scan'208,217";a="9761930"
Received: from aer-iport-nat.cisco.com (HELO aer-core-2.cisco.com) ([173.38.203.22]) by aer-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jan 2019 12:19:14 +0000
Received: from [10.63.23.64] (dhcp-ensft1-uk-vla370-10-63-23-64.cisco.com [10.63.23.64]) by aer-core-2.cisco.com (8.15.2/8.15.2) with ESMTP id x0UCJEhc018760; Wed, 30 Jan 2019 12:19:14 GMT
To: Andy Bierman <andy@yumaworks.com>, "Sterne, Jason (Nokia - CA/Ottawa)" <jason.sterne@nokia.com>, "netmod@ietf.org" <netmod@ietf.org>
References: <DB7PR07MB397887BD6B69B474618FD1469B9A0@DB7PR07MB3978.eurprd07.prod.outlook.com> <98469d28-4d53-c5c5-6487-a873a289e073@cisco.com> <VI1PR07MB39818961D1CA989CD8E1A48A9B900@VI1PR07MB3981.eurprd07.prod.outlook.com> <CABCOCHS-2tJroT2AVF0zLSh7qz5tORe_yp2LkZLf8=AFj4oq2w@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <cd8690ad-1750-917f-d7c4-ba582922037d@cisco.com>
Date: Wed, 30 Jan 2019 12:19:14 +0000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <CABCOCHS-2tJroT2AVF0zLSh7qz5tORe_yp2LkZLf8=AFj4oq2w@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------50060E4727DE96A7758AD551"
Content-Language: en-US
X-Outbound-SMTP-Client: 10.63.23.64, dhcp-ensft1-uk-vla370-10-63-23-64.cisco.com
X-Outbound-Node: aer-core-2.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/L_-gsJxoPQKdYAxAYDMhwd48x9w>
Subject: Re: [netmod] initial comments on draft-rwilton-netmod-yang-packages
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 30 Jan 2019 12:19:22 -0000

Hi Andy,

Thanks for the comments.

On 30/01/2019 01:22, Andy Bierman wrote:
> Hi,
>
> I originally brought up this issue in July 2015
> https://datatracker.ietf.org/doc/draft-bierman-netmod-yang-package/

Yes.

The solution I propose is different in the sense that it uses YANG 
instance data to define YANG packages rather than new YANG keywords.   I 
believe that this should make it a lower cost solution to define and 
implement.


>
> I don't think the WG ever agreed on the problem that needs to be solved,
> and that is still the case.

That wasn't quite my impression.  I also think that folks were busy 
focusing on other WG activity and didn't necessarily have the time to 
concentrate on this.

My draft was aiming on solving two broad problems:

    The main goals of YANG package definitions include, but are not
    restricted to:

    o  To act as a simplified YANG conformance mechanism.  Rather than
       conformance being performed against a set of individual YANG
       module revisions, conformance could also be more simply stated in
       terms of YANG packages, with a set modifications (e.g. additional
       modules, deviations, or features).

    o  To allow YANG datastore schema to be specified in a more concise
       way rather than having to list all modules and revisions.  YANG
       package definitions can be defined in documents that can be
       referenced by a URL rather than requiring explicit lists of
       modules to be shared between client and server.  Hence, a YANG
       package must contain sufficient information to allow a client or
       server to precisely construct the schema associated with the
       package.



>
> In reality each server has 1 package -- its entire library.

This doesn't apply to all servers.  For a long time, as a vendor, we 
have had separate packages that can be independently installed, and 
which extend the management model to cover the new functionality.  E.g. 
BNG functionality could be in a separate, independently installable, 
package on top of the base router functionality.

For a Linux server, the manageability interface will depend on what 
applications have been installed.


> The SEMVER work shows
> that vendors are treating platforms as independent release trains, and 
> not really
> developing loadable packages.

This depends on the vendor.  The YANG versioning work is trying to find 
a solution that works across the industry.  I believe that the 
versioning requirements are different for standards developed modules, 
vs industry developed modules, vs vendor modules.


>
> I think YANG 1.2 improvements for conformance (e.g., YANG-redirects, 
> SEMVER import)
> and  the YANG Catalog can solve the module compatibility issues. It is 
> more of a documentation
> problem than a standards problem.

Having a standard YANG module that can be used to define packages is 
something this is useful and should be standardized.  I believe that 
this is better than each vendor coming up with their own solution for 
this problem.

Thanks,
Rob


>
>
> Andy
>
>
>
>
> On Tue, Jan 29, 2019 at 4:55 PM Sterne, Jason (Nokia - CA/Ottawa) 
> <jason.sterne@nokia.com <mailto:jason.sterne@nokia.com>> wrote:
>
>     Thanks Rob. Please see inline.
>
>     Jason
>
>     *From:*Robert Wilton <rwilton@cisco.com <mailto:rwilton@cisco.com>>
>     *Sent:* Thursday, January 24, 2019 1:16 PM
>     *To:* Sterne, Jason (Nokia - CA/Ottawa) <jason.sterne@nokia.com
>     <mailto:jason.sterne@nokia.com>>; netmod@ietf.org
>     <mailto:netmod@ietf.org>
>     *Subject:* Re: initial comments on draft-rwilton-netmod-yang-packages
>
>     Hi Jason,
>
>     Thanks for the review and comments.
>
>     I've put some responses inline ...
>
>     On 24/01/2019 14:56, Sterne, Jason (Nokia - CA/Ottawa) wrote:
>
>         Hi guys,
>
>         I've gotten most of the way through the draft and have some
>         initial comments. I haven't digested the section 10 open
>         issues yet or the examples.
>
>         Section 5 mentions the following:
>
>         YANG library is augmented to allow servers to report the packages
>
>         that they implement and to associate those packages back to
>
>         particular datastore schema.
>
>         Does the combination of this draft and rfc7895bis somehow
>         allow the same package to be advertised in 2 different
>         datastores, but with different deviations in each datastore?
>         I'm thinking of a case, for example, where a package is fully
>         supported in the running but the package minus a few modules
>         (or parts of modules) is supported in the operational
>         datastore. There seems to be a 1:1 relationship between
>         package and rfc7895bis schema.
>
>     So, the intention is no, not directly.
>
>     My aim here is that <running> would implement package "foo", and
>     <operational> would implement package "modified-foo".  Package
>     "modified-foo" would import package "foo" and also specify the set
>     of modules that contain the deviations "foo".
>
>     I didn't want a server to be able to see that I implement package
>     "foo", but then I have all these deviations that change its
>     behavior.  Instead, it is really implementing a different package
>     that is based on "foo".
>
>         The packages draft doesn't include any specific leaf-list for
>         deviations. Section 7.2 mentions that deviations could be
>         expressed by including modules that happen to contain
>         deviations. That seems a bit inconsistent with rfc7895bis that
>         has a specific leaf-list of deviations (and NETCONF hello that
>         specifically explicitly labels deviation modules).
>
>     I'm conflicted on this one.  I don't really like the deviation
>     list in YANG library because I regard it as a duplicate source of
>     information, and then there is a question of which source of data
>     do you trust.  E.g. do you process a deviation in a module that is
>     not listed in the deviations module list?
>
>     */[>>JTS: ] Good point. I suppose this issue applies today
>     already. i.e. what if one of the modules advertised in the <hello>
>     is a module of deviations (without having been referenced by
>     another module as a deviation module)./*
>
>         Section 5.1 says the package must be referentially complete. I
>         can see the advantages of that although wondering if that
>         might limit flexibility of partitioning modules into packages.
>         I could imagine use cases for dividing a large set of modules
>         into a few packages that might rev independently but can still
>         all work together (especially if they rev in a bc manner). But
>         maybe that just starts to introduce too much complexity?
>
>     Yes, having partial packages may be useful.  Perhaps just adding a
>     leaf to indicate whether a package is referentially complete could
>     be the answer here.
>
>         I didn't understand this part of section 5.1. Can you maybe
>         illustrate with an example?
>
>         The version/revision of a module listed in the package module list
>
>         supercedes any version/revision of the module listed in a imported
>
>         package module list.  This allows a package to resolve any
>
>         conflicting implemented module versions/revisions in imported
>
>         packages.
>
>     Probably best to see example B.3. in the appendix because it
>     exactly illustrates this point.
>
>     Basically:
>     1) Packages must explicitly list all versions of all modules they
>     define/import.
>     2) If two imported packages define different versions of modules,
>     then the package that is importing them needs a way to define
>     which version to use.
>     3) A package needs a way to override the version of module
>     specified in an imported package.
>
>     */[>>JTS: ] Thx. That example does help. I suppose the designer of
>     the package needs to carefully check that the version they select
>     can be successfully used by all the modules in the package. /*
>
>     */I think there is a minor typo in example B.3.  The example-3-pkg
>     is importing "/* */example-import-1" but I believe you meant "/*
>     */example-import-1-pkg" (and some for import-2)./*
>
>         It might be a good idea to add a parent-version to the package
>         module (to allow tracking lineage of packages).
>
>     Agreed, or maybe allowing a revision history like modules.  Not
>     sure which is better here.  Packages could get a lot of updates,
>     and a long revision history would not be helpful at all.
>
>     */[>>JTS: ] I think a minimum of just specifying the direct parent
>     is enough to build the full tree of lineage. We don't need a long
>     history of N revisions./*
>
>         I like the use of groupings. That allows a manager to use this
>         as a building block to compose a model that has a list of
>         packages.
>
>     OK.
>
>         Having a global list of mandatory features (vs having the
>         mandatory feature a per-module list) means inventing the new
>         <module-name>:<feature> format. Should we instead somehow put
>         the mandatory features against each module of the package?
>
>     Perhaps.  My thinking here was to have the list of features high
>     up and very easy to find/parse.
>
>         The location leaf is a uri but then the description says it
>         must be a url (where the model can be retrieved). I do like
>         that the namespace is separate from the location, but maybe we
>         should make location a url type?
>
>     Yes, I was thinking that is should be a URL.
>
>         Do we need a namespace for package names in the model?
>
>     I had them in an earlier version, but I took them out, because I
>     wasn't sure that they are really useful/required.
>
>     Defining a format to make package names themselves globally unique
>     might be sufficient.
>
>     */[>>JTS: ] I'm OK with that. It is similar to how we're finding
>     that it is useful that YANG module names are globally unique (i.e.
>     by naming with ietf-xxxx or companyabc-xxx)./*
>
>         In 7.3 we only reference module-sets and not modules. So the
>         grouping of modules into sets and packages must be the same?
>
>     Not necessarily.
>
>     I am trying to reuse the module-set definitions as much as
>     possible (to avoid duplication).  One issue here is that
>     module-sets are combined then all the modules must not overlap,
>     which doesn't make the mapping to module-sets quite so clean.
>
>         A schema can only have a single package. I think that works
>         but it means a server would advertise multiple schemas if it
>         wants to support multiple packages. I'm not sure if there are
>         some downsides to that (it just surprised me).
>
>     My aim here was:
>      - multiple packages are advertised in yang-library/packages
>      - datastores only report that they "implement" one [top level]
>     package version.  [The package itself might import other packages.]
>
>     If we do package selection, then for a given YANG client session,
>     and the version of YANG library available/reported by that
>     session, it would appear as if the server only implements one top
>     level package for a datastore.  Different clients choosing
>     different versions would see slightly different output depending
>     on which package version they had selected to use.
>
>     Thanks again for the review and the comments!
>
>     Rob
>
>         Jason
>
>         *From:*netmod <netmod-bounces@ietf.org>
>         <mailto:netmod-bounces@ietf.org> *On Behalf Of *Robert Wilton
>         *Sent:* Thursday, December 20, 2018 12:45 PM
>         *To:* netmod@ietf.org <mailto:netmod@ietf.org>
>         *Subject:* [netmod] YANG Packages
>
>         Hi,
>
>         I've written up an ID for a potential solution for YANG
>         packages using instance data:
>
>         Abstract
>
>            This document defines YANG packages, an organizational
>         structure
>
>            holding a set of related YANG modules, that can be used to
>         simplify
>
>            the conformance and sharing of YANG schema.  It describes
>         how YANG
>
>            instance data documents are used to define YANG packages,
>         and how the
>
>            YANG library information published by a server can be
>         augmented with
>
>            additional packaging related information.
>
>         https://datatracker.ietf.org/doc/draft-rwilton-netmod-yang-packages/
>
>         Potentially this work may be of use as part of the YANG
>         versioning design team work.  In addition, if the WG likes
>         this approach of defining YANG packages, then it might also be
>         useful to bind a schema to a YANG instance data document.
>
>         Some questions for members of the WG:
>
>         1) Do members of the WG agree that YANG packages is something
>         that needs to be solved?
>
>         2) Is the approach in this draft of defining these as instance
>         data documents a good starting point?
>
>         3) This approach augments YANG library-bis, reusing
>         module-sets, but not replacing the way that modules are
>         reported in YANG library-bis.  Is this the right approach? 
>         This approach tries to allow module-sets to be reused for both
>         schema and packages, but the YANG library-bis rules for
>         combining module-sets (i.e. no conflicts) may make this harder
>         to really reuse the module-sets for both purposes.
>
>         Of course, any other comments or feedback is welcome and
>         appreciated.
>
>         Thanks,
>         Rob
>
>     _______________________________________________
>     netmod mailing list
>     netmod@ietf.org <mailto:netmod@ietf.org>
>     https://www.ietf.org/mailman/listinfo/netmod
>