Re: [netmod] [Netconf] Alternative YANG library structure for 7895bis

Andy Bierman <andy@yumaworks.com> Wed, 20 December 2017 20:17 UTC

Return-Path: <andy@yumaworks.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 847FF126DC2 for <netmod@ietfa.amsl.com>; Wed, 20 Dec 2017 12:17:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.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 sm-tKIAwhWmO for <netmod@ietfa.amsl.com>; Wed, 20 Dec 2017 12:16:59 -0800 (PST)
Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 23ADE1289B0 for <netmod@ietf.org>; Wed, 20 Dec 2017 12:16:48 -0800 (PST)
Received: by mail-lf0-x241.google.com with SMTP id m20so12315667lfi.6 for <netmod@ietf.org>; Wed, 20 Dec 2017 12:16:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4YHVsCZA4QDakbiFlzIbE5TLMnTAp5pC3e8WEfgX7Oo=; b=Hd31CZ7QZF0OF7HVgIXjEC7Df9bMRDyRLFl45TTsllect4OcQbQuhzV6y/uXBLh6sf H9KqiIq/d6IOavpOOGD6f14QyDP81IB1B7B3syWcy+WpIMVSy1SvH8vvIzjlWW8Gy4v4 fBpaaSuyVZ/gKNgcdtQvpkDV4n6qdi6QCZBvWkfiYgn6UOM0tgslcpTAQTSMqjMgqiJw aqlpJxCYK0rCFObJA441lcDP0hp9kT/8ov+wmlTb1Ay0L1wwSztXg/s7xBBkDsitTZes BhO7g3ddPL/G2vNgMb+mxbxzZzySQG/b6RNBxZKl593cOgEuwHIcpZ1jZ2auW2T0z71T fzVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4YHVsCZA4QDakbiFlzIbE5TLMnTAp5pC3e8WEfgX7Oo=; b=DCI6+7VRu/TV2owpJ3/Fj8PA25wrwsE7fpPPhQCcegp+A1CGD6xlWgcEZTrtNjhNU5 OmXcO7yNo9VUPVIEX0IHZir931O1ABBGBN3DYxX0hLfQglBztCJQ1H+3JXwzuJOcp/J6 QBxJZorQ3HYFqZTEaZp1C+aeII/IqFJ255qo7Mnmh8fO/qcLb4OrusEDYy8ADNSJwj1S Rkl6WaV/b2OAG9I+rbqMEty5zXognKkR+yUKx/83LB4jpKJsr0otKKtR4j4Sxzne8RuE PltRGtDiieidoErTaRqthoTEZjufM+HixI+etg/T5RNUfCphu5MMs4XwtJxuGyOucEIN IiRQ==
X-Gm-Message-State: AKGB3mJgQb4W/f485ICu+NgwnsJCPOjsbSmrn5lR18YraV8vR0VlwvgN kcaJ4KNb1lr4v91GakWCvGIYaHq4RRCyt4Y4wZjxkw==
X-Google-Smtp-Source: ACJfBos7dBFYPbDoswYXDJS19xYRv7/wPc/TDoADLtgZijhjxdYxQI9QpR4uXUrJFhl7Z6iLwz9s3hIAhmbxoZAHBYI=
X-Received: by 10.25.28.9 with SMTP id c9mr4778061lfc.40.1513801006223; Wed, 20 Dec 2017 12:16:46 -0800 (PST)
MIME-Version: 1.0
Received: by 10.25.33.81 with HTTP; Wed, 20 Dec 2017 12:16:44 -0800 (PST)
In-Reply-To: <60876a73-3dec-9a4f-e313-1787b432fb34@cisco.com>
References: <75e91419-9436-d1b7-29f6-02e3ff4ff86d@transpacket.com> <668cc9e1-c006-ce25-1473-549bc0b71a7d@cisco.com> <6cc655e0-1c28-fe75-b854-08e2d878816c@transpacket.com> <20171208.160306.109290175567894287.mbj@tail-f.com> <20171208150614.axuynu4atpg7aaj2@elstar.local> <b3159aa5-93e4-23eb-406e-083289a4767d@transpacket.com> <20171208153442.roomf7rhixtckrfk@elstar.local> <1512750289.11843.3.camel@nic.cz> <C030AD08-2E8B-4248-994B-04C802296024@juniper.net> <CABCOCHQZLirVDqGNysAkRFXruPKxyXrBQ+xyagU9y3QHRV6d0g@mail.gmail.com> <5242d50f-6f9e-b57e-ec1b-64828c456339@cisco.com> <CABCOCHSoa8b8=ieips0QguHovi=-8qATb+A3F+iKFu34ikA8Jw@mail.gmail.com> <60876a73-3dec-9a4f-e313-1787b432fb34@cisco.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 20 Dec 2017 12:16:44 -0800
Message-ID: <CABCOCHSbZARKXFrsC1dUVQu2rSV6LqmJPyCKt2zh=2qzAJjo+Q@mail.gmail.com>
To: Robert Wilton <rwilton@cisco.com>
Cc: Kent Watsen <kwatsen@juniper.net>, "netmod@ietf.org" <netmod@ietf.org>, "netconf@ietf.org" <netconf@ietf.org>
Content-Type: multipart/alternative; boundary="001a114020f03cb0310560cb43b7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/T-2BgZXLBxPURY3SPjmAN1poAFw>
Subject: Re: [netmod] [Netconf] Alternative YANG library structure for 7895bis
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: Wed, 20 Dec 2017 20:17:02 -0000

On Wed, Dec 13, 2017 at 6:55 AM, Robert Wilton <rwilton@cisco.com> wrote:

>
>
> On 11/12/2017 20:55, Andy Bierman wrote:
>
>
>
> On Mon, Dec 11, 2017 at 2:57 AM, Robert Wilton <rwilton@cisco.com> wrote:
>
>> Hi,
>>
>> On 08/12/2017 18:01, Andy Bierman wrote:
>>
>> Hi,
>>
>> A library per datastore sounds too complicated.
>> I prefer the proposal that was made at the IETF meeting that had
>> a 'not-implemented-in' leaf-list and a single module list.
>>
>> The use case that this particular design doesn't work particularly well
>> for is if you have a dynamic datastore that just contains a few modules
>> that are not supported via the conventional datastores.
>>
>> I think that there are future uses cases where the set of modules used
>> for a dynamic datastore could be really quite different and separate from
>> conventional configuration.  E.g. if dynamic subscribers were managed
>> through a dynamic configuration datastore rather than RADIUS.
>>
>>
>> Why is it interesting to have a separate module list for regular modules
>> and imported modules?
>>
>> Several reasons:
>> 1) It means that the list of implemented modules have a single key and
>> hence any references to an implemented module are cleaner/simpler.
>>
>
>
> IMO you are replacing universally meaningful keys  (module-name,
> revision-date) with an arbitrary name,
> It is not cleaner and not simpler for a client.
>
> No, for alternatives A and B, the list key is the module name itself, nor
> an arbitrary name.
> Alternative C uses an arbitrary name.
>
>
>
>
> 2) The model structure naturally more strictly enforces that only a single
>> revision/version of a module is implemented.  (E.g. it prevents a server
>> stating that two revisions of a module are both implemented).
>>
>
>
> How is that the case if the schema list includes its own module list?
> You mean there is a "unique" statement in the outer list that insures that
> a module/revision
> shows up at most once in all instances of the inner module list?
>
> For alt A, each schema represents a single list (so no duplicated
> implemented modules are possible).
>
> For alt B, yes, the rule is that there must be no duplicates in the
> module-sets that are combined into a single schema.
>
>
>

The alt-B approach that seems to be favored is not constrained, but even if
the server does conform
(and not have any overlaps between schema lists) this approach is rather
complicated in order
to answer the simple question "What datastores are supported for module
foo, revision A?"

If the previous design was used, a client could simply retrieve the module
entry and check
the 'not-implemented-in' leaf-list.  Now a client has to retrieve the
entire library, then analyze the
datastore lists (built from the schema entries for the datastore). The
client has to match
instances and look for module "foo" in multiple places.  The client then
assumes that
any missing entry means the module is not supported in that datastore
(assumes read access control
is never applied to the YANG library).

The corner case used as an excuse to redesign the library (ephemeral
datastore with a few modules in it)
is not very interesting, and also not expensive in terms of processing
complexity and bandwidth.
IMO the library should be optimized for conventional + operational, and
also be optimized for
the long-term, not a short-term transition period, biased for server
developers who want
to release partial implementations.


Andy



>
>
>> 3) I genuinely think that the list of implemented modules is more
>> interesting to the client than the imported, but not implemented modules.
>>
>
>
> The conformance leaf was good enough.
> Duplicating the module list and removing the conformance leaf is
> aggressively non-backward compatible.
>
>
>
>>
>> For a server, I would design it to "implement" one revision of every
>> module that it uses (including those that don't contain any data nodes,
>> RPCs, actions, notifications, or deviations), and then the "import-only"
>> list becomes the list of modules that the server implements to satisfy
>> "import-by-revision" and these are stated in the implemented schema anyway.
>>
>>
>> I prefer to keep the conformance leaf and not change the module list.
>>
>> NMDA needs to be possible to implement with a single schema tree such
>> that a module
>> is implemented in all datastores, or a subset of all datastores.
>> Otherwise it probably won't
>> get supported in clients.
>>
>> All solutions accommodate this requirement.
>>
>
>
> Seems to me all new solutions allow a server to violate the MUST in the
> NMDA draft that
> there is a superset of all modules.  A client has to look for every module
> in a server-specific
> set of named schema sets, and then reconcile all these sets.
> I still prefer the single module list with a conformance leaf and a
> leaf-list indicating
> the supported (or unsupported) datastores.
>
> So, this is a trade off between a more expressive model vs a more
> constrained model.
>
> It is worth noting that the existing YANG library (RFC 7895) allows
> servers to produce illegal module lists because they could implement
> multiple revisions of the same module.
>
> Thanks,
> Rob
>
>
>
>
>
>> For me, some of the interesting design questions have revolved around:
>> - is it better to reduce duplication in the list of modules reported at
>> the cost of increased model complexity?
>> - does the solution extend to schema mount?
>> - how well does the solution cope with with configuration datastores that
>> support very different sets of modules?
>>
>> To a lesser extent we have also been considering how well the solution
>> extends to packaging and semantic versioning, but I think that it is quite
>> tricky to know who these are going to pan out.  E.g. I think that the
>> restriction that a given schema will only implement a single revision of a
>> module will end up still holding, but I'm not sure that everyone has that
>> same view point.
>>
>> Thanks,
>> Rob
>>
>>
>>
>
> Andy
>
>
>>
>>
>> Andy
>>
>>
>>
>> On Fri, Dec 8, 2017 at 9:21 AM, Kent Watsen <kwatsen@juniper.net> wrote:
>>
>>> CC-ing NETCONF, where the draft is being worked on.
>>>
>>> Kent
>>>
>>>
>>> On Fri, 2017-12-08 at 16:34 +0100, Juergen Schoenwaelder wrote:
>>> > On Fri, Dec 08, 2017 at 04:19:28PM +0100, Vladimir Vassilev wrote:
>>> > >
>>> > > Yes. The default value for yang-library-datastore leaf is
>>> ds:operational
>>> > > (the only possible one for the ds:operational datastore). This is
>>> backward
>>> > > compatible. If one needs different model for 'running', etc. then a
>>> new
>>> > > datastore identity has to be defined  and set in place of the
>>> default value.
>>> > > Then this identity can be used to read the yang-library data with
>>> > > <get-data>.
>>> > >
>>> >
>>> > Sorry, but I have to ask this: How do I obtain the schema for the
>>> > datastore (lets call it <running-library>) that reports the schema for
>>> > <running>? Is there another <running-library-library> datastore? Will
>>> > the recursion end? Perhaps it does since <running-library-library>
>>> > might have itself listed as the schema defining datastore. I guess
>>> > Lada will like these kind of meta and meta-meta datastores.
>>>
>>> Not really. Metadata needn't be in datastores.
>>>
>>> Lada
>>>
>>> >
>>> > /js
>>> >
>>> --
>>> Ladislav Lhotka
>>> Head, CZ.NIC Labs
>>> PGP Key ID: 0xB8F92B08A9F76C67
>>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.iet
>>> f.org_mailman_listinfo_netmod&d=DwICAg&c=HAkYuh63rsuhr6Scbfh
>>> 0UjBXeMK-ndb3voDTXcWzoCI&r=9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTv
>>> jISlaJdcZo&m=5qj6BQUSwqYmkAVeKz5axFV8k3gxYEPSJ5Cp0RSnxrE&s=I
>>> 7fR1GY5lN2hVMkDuvryrhDeRypike3wPeFRrvQI5l8&e=
>>>
>>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>>>
>>
>>
>>
>> _______________________________________________
>> Netconf mailing listNetconf@ietf.orghttps://www.ietf.org/mailman/listinfo/netconf
>>
>>
>>
>
>