Re: [netmod] OpsState Direction Impact on Recommended IETF YANG Model Structure

Andy Bierman <andy@yumaworks.com> Wed, 27 July 2016 20:29 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 7423B12DAF8 for <netmod@ietfa.amsl.com>; Wed, 27 Jul 2016 13:29:38 -0700 (PDT)
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, 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 CDnecb9D4xWh for <netmod@ietfa.amsl.com>; Wed, 27 Jul 2016 13:29:35 -0700 (PDT)
Received: from mail-ua0-x22f.google.com (mail-ua0-x22f.google.com [IPv6:2607:f8b0:400c:c08::22f]) (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 848BC12D935 for <netmod@ietf.org>; Wed, 27 Jul 2016 13:29:35 -0700 (PDT)
Received: by mail-ua0-x22f.google.com with SMTP id l32so25625624ual.2 for <netmod@ietf.org>; Wed, 27 Jul 2016 13:29:35 -0700 (PDT)
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=x/rE7/Cp69GYmQrrLME74dlAyD+4a3zujD+oIbswZT8=; b=RVq8KA1MKlPJAOd2tMRZXIg9tDnhI6oBncdEKbSfMlIu3FURZ6e8m28ldnKHMjHLRo gYM83ptq0z7ESiTEl8n2LxDa1UGFWxzBFWpKQun+WSiy8x39UNkurrafheZBmwVlCVwI cDIjwRuaKaZrqgQesB3S8oeDGKBJf/auRJwnEUiBIAdnLEBsmwZL2+ZAgRqbc5wcV3Fi 9uk16Vo0ghikDLa2jPBnH6yj/AsMV8Mo9MtEgsT+NSVS7OGhbFYC9l1Vf3qf2tyIarc8 tu9XT+rvpJT5naK4fcTVUL6aNFKXcMSM4QaQQVd+fUbdxFW5H6rnEoWfrAdCDi7DNGnr hzIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=x/rE7/Cp69GYmQrrLME74dlAyD+4a3zujD+oIbswZT8=; b=PDi7N5Pc/Bkfg662oMpOPbmNMZ/LDRoCnBUoVswZvTTfWXM3XUYPyW96s5VqF+Qxo/ VOh2ogLc+OwTk0kZo3jvwFYxWwHiRzjHYydYz+iGxM4wiYfqpQVL/H5Y6k8MNdLCCJkr cLZDRjbc3vB/LqScFcOkV9mwnjr/V7y6EbRd/TFQdrf6cpF7aQ+0IaNLC8bs8dTJbF3/ HXf+S7Iqf2ejcwagkwkYCfKkvq874xuEq8fVbEBboL4TnvCmZFaO7uQwAbnahtkn55R1 bRcF0zBSkptcvK1fOWPEy4GX7yYwzrXhLwRT+2HLBgx3jZxKm+EfiqN69kn46iSSjTYs zJbw==
X-Gm-Message-State: AEkoouukt9Zi/J1DWqaVb47Iun3alZuQmHGbUF1SxdrU3bxxeEW76f6MI43e47nxaNrHeFG+LqojVkliQwzDYg==
X-Received: by 10.159.35.112 with SMTP id 103mr13717442uae.55.1469651374604; Wed, 27 Jul 2016 13:29:34 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.4.198 with HTTP; Wed, 27 Jul 2016 13:29:33 -0700 (PDT)
In-Reply-To: <5209ADAB-F74E-4F1A-9652-57F0BDD0E359@juniper.net>
References: <D3A935F0.6A4DC%acee@cisco.com> <eb15fd23-2c0a-50c4-1ebc-7c0e4867dfd8@cisco.com> <20160721174033.GB54646@elstar.local> <d18f5dd0-64d0-e223-88a9-faa4df4b7866@cisco.com> <DCB3EBBF-5EB1-4C8E-AA55-F59C4B5A8E4D@juniper.net> <bed9398c-0e6a-450e-d2ac-b381b6bebf87@cisco.com> <5296754B-8178-4B1B-B4A6-FE228ABB8E7F@juniper.net> <9367f4b1-7814-e175-32e8-d518438b841d@cisco.com> <5209ADAB-F74E-4F1A-9652-57F0BDD0E359@juniper.net>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 27 Jul 2016 13:29:33 -0700
Message-ID: <CABCOCHRj7RmewnfeJxZnZMDZwGuGq7Bvz93DedmaQbgFSOmVDg@mail.gmail.com>
To: Kent Watsen <kwatsen@juniper.net>
Content-Type: multipart/alternative; boundary="001a113ab81a2099b50538a3e00a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/hJ3Oa9CjRVEIT8hzFnGN7BUTnHQ>
Cc: netmod WG <netmod@ietf.org>
Subject: Re: [netmod] OpsState Direction Impact on Recommended IETF YANG Model Structure
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.17
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, 27 Jul 2016 20:29:38 -0000

Hi,

*Re: - Any models that augment RFC 7223 and have config false nodes will be
impacted.*

There are many such vendor modules already.
They augment the /interfaces container with config
and the /interfaces-state container with non-config.
Nobody is complaining this is broken, AFAIK.
If you tell them to throw it out and start over, the request
is likely to be ignored.


Andy


On Wed, Jul 27, 2016 at 1:09 PM, Kent Watsen <kwatsen@juniper.net> wrote:

> >> Firstly, I’m trying to get a sense of how big a problem this
>
> >> foo/foo-state thing is.  [Note: by foo-state, I’m only referring
>
> >> to counters, not opstate].
>
>
>
> RW:
> By counters, I think that we also mean any config false nodes that don't
> directly represent "applied configuration", right?  E.g. is an interface
> operationally up or down.
>
> KW:  Yes, the term “counters” is a misnomer.  We are indeed talking about
> regular old config false nodes, whether they be used for counters, gauges,
> or whatever.   It is what the opstate-reqs draft refers to as derived state.
>
>
>
>
>
>
>
> >> I know about RFC 7223, which was done out of consideration
>
> >> for system-generated interfaces, but how many other such models
>
> >> are there envisioned to be?
>
>
>
> RW:
> - Any models that augment RFC 7223 and have config false nodes will be
> impacted.
> - I thought that quite a lot of other IETF models that are in the process
> of being standardized have a top level split between "foo" and
> "foo-state".  E.g the ISIS model (draft-ietf-isis-yang-isis-cfg-08) has
> this split.  I suspect that all the routing models will be structured
> similarly.
>
>
>
> KW: I also notice that draft-ietf-netmod-routing-cfg does this and, to
> your point, you know the ietf-routing module is intended to be augmented by
> many other modules.  This issue is not easily isolated.
>
>
>
> RW:
> The current guidance for "intended vs applied" is clear.  I.e. there must
> not be "config false" leaves in the IETF YANG data models to represent
> "applied config".  But there is no clear guidance for the rest of
> operational state that isn't applied config.  The other WGs need clear
> guidance (effectively now) to ensure that they can start publishing models
> as RFCs.
>
> KW: indeed.
>
>
>
>
>
> RW:
> Personally, I would like one common convention that applies to all IETF
> YANG models.
>
> Idealistically I would like foo and foo-state to be merged because I think
> that will make the models easier to use and maintain in the long term, but
> I don't know if we are just too late to go in that direction.  It seems to
> me that the NETMOD WG really should try to come to a decision quite quickly
> on this, but I don't know how to encourage that.  A virtual interim on just
> this topic perhaps?
>
> KW: I was going to suggest the same - will discuss with Lou.
>
>
>
>
>
> >> Next, regarding paths forward (assuming 7223 is not an outlier), I’m
>
> >> thinking the opposite.  I’m quite sure that we would never merge the
>
> >> 600+ models with separate subtrees back together again.  So I’m
>
> >> thinking we immediately merge foo and foo-state in all active YANG
>
> >> models (so that the YANG “conceptual” models are stable and good)
>
> >> *and* then we use your idea to programmatically generate the
>
> >> “foo-state” tree, presumably only when needed.  This foo-state tree
>
> >> could be generated offline by tools and provided as a second YANG
>
> >> module in drafts.  In this way, servers (opstate aware or not) can
>
> >> advertise if clients can access the foo-state tree (an opstate-aware
>
> >> server may still advertise it for business reasons, and it can
> ‘deprecate’
>
> >> the tree when no longer needed).   We could do the same without tools
>
> >> today by just using a feature statement on, for instance, the
> interfaces-
>
> >> state container, but I like pushing for tooling upfront so that we’re
>
> >> guaranteed mergeability later.  Thoughts?
>
>
>
>
>
> RW:
> So the generated "foo-state" tree would contain a copy of all config false
> nodes in the YANG schema and a "config false copy" of any config true nodes
> in the YANG schema that are required to provide parental structure for the
> descendant config false nodes.
> - The Xpath expressions would also need to be adjusted, and possibly some
> of those might break (or need to be fixed by hand).
> - Groupings might be a problem, but potentially they could be expanded.
>
>
>
> KW: all good points.
>
> Technically this solution might work, but is it possible to get everyone
> to agree that this is the right direction to go in before we spend time on
> this?
>
> KW: it was just an idea.   I’m trying to strike a balance between having
> the YANG models we want, and what is possible today (while waiting for the
> opstate solution to roll out).
>
>
>
>
>
>
>
> To flesh this idea out just a bit more, let’s say we have module
> “ietf-foo” as follows:
>
>
>
> module ietf-foo {
>
>   namespace “foo-namespace”;
>
>   container foo {
>
>     list bar {
>
>       key a;
>
>       leaf a {
>
>         type string;
>
>       }
>
>       leaf b {
>
>          type int8;
>
>          config false;
>
>       }
>
>    }
>
>   }
>
> }
>
>
>
> whereby it’s possible that the system may generate some bars as well.  To
> address this, the module is run through a TBD-tool to generate second
> module foo-state as follows:
>
>
>
> module ietf-foo-state {
>
>   namespace “foo-state-namespace”;
>
>   container foo-state {
>
>     list bar {
>
>       config false;    <-- everything below is config false
>
>       key a;
>
>       leaf a {    <-- this config true node kept only because it’s the key
>
>         type string;
>
>       }
>
>       leaf b {
>
>          type int8;
>
>          config false;
>
>       }
>
>    }
>
>   }
>
> }
>
>
>
> Now, here are the choices:
>
>
>
> 1) an opstate-unaware server might only support “ietf-foo”, as it is
> deemed unnecessary to provide the operational state for system-generated
> bars.
>
>
>
> 2) an opstate-unaware server might support both “ietf-foo” and
> “ietf-foo-state” as follows:
>
>
>
>        <get-config>
>
>          <source>
>
>            <running/>
>
>          </source>
>
>          <filter type="subtree">
>
>            <foo xmlns="foo-namespace"/>
>
>          </filter>
>
>        </get-config>
>
>
>
> returns the derived state for just configured bars, while:
>
>
>
>        <get-config>
>
>          <source>
>
>            <running/>
>
>          </source>
>
>          <filter type="subtree">
>
>            <foo-state xmlns="foo-state-namespace"/>
>
>          </filter>
>
>        </get-config>
>
>
>
> returns the derived state for both configured and system-generated bars.
>
>
>
> 3) an opstate-aware server only support “ietf-foo”, as it is expected that
> the derived state for system-generated bars can be obtained another way
> (e.g., via the “operational” datastore).
>
>
>
> 4) an opstate-aware server supports both “ietf-foo” and “ietf-foo-state”,
> most likely for backwards compatibility reasons.   The examples provided
> under (2) above continue to work and, later in time, the vendor can
> deprecate support for ietf-foo-state.
>
>
>
>
>
> Kent  // as a contributor
>
>
>
>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>
>