Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim

Anees Shaikh <aashaikh@google.com> Thu, 25 June 2015 02:57 UTC

Return-Path: <aashaikh@google.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C91F01A8F4C for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 19:57:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.188
X-Spam-Level:
X-Spam-Status: No, score=-0.188 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=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 TxrIq49jnxWt for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 19:57:16 -0700 (PDT)
Received: from mail-ob0-x231.google.com (mail-ob0-x231.google.com [IPv6:2607:f8b0:4003:c01::231]) (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 C69E51A8AFC for <netmod@ietf.org>; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
Received: by obctg8 with SMTP id tg8so38871125obc.3 for <netmod@ietf.org>; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ycMVexFYGQiWeijgRnNwCxcd4dRirY+QupAFPTsfWD4=; b=n1JvVcVszRu8ky8qqjff9IiirqphFotTRbODXqU5stgQYpUCG/Q77tB75RoSCQQ6Fv rVN/9hE9hJQeg29FnxUUpRdzVZpnPcMQ8QX9zeyg7O7Jag4+40/85FnxHN1VUDXcIcqW VAeRENnb+zHiiadH18XjA++5e8uCIuR8MxGhkcGeekf6ewKjQ3hV4ti4c10+1L5Cytdi KRiAIDHFij3eyOxs0mit6eQYGlKmVXBHKu/Efwet4oMxGJN1OXF3L04ZP8OrFkkDLoz/ 18bp+Ud0lTQ0hB/g1ZdWOciO5NPRSXf2i2QyAwNbLdR2/97I9LZ9HmwTujo4uP811kW5 Dkaw==
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:date :message-id:subject:from:to:cc:content-type; bh=ycMVexFYGQiWeijgRnNwCxcd4dRirY+QupAFPTsfWD4=; b=RzDBgZpR0i9j00XcEkVw3U6yUfvT1+0SFvAJfidL0NWizrNeNImgcaorlYFSui/6gY l6xjvvH/q9FtxL0wCpCp3ZzSavEbmfKDhPQn0ylUyEJ3mIs+BmkzS1hy/kUYJZ/m2upW t+k6/R/b3pgJ9cUSHQORUwc7NX6tArGzMpxPdFbiWROOm2CxeyjZoe1aHwYQefEMrEJ4 S4Lvr0x1hhJQEoROuIBed2SI20ODmnkbfiDxl9+pGpE1UbB/SrJ2fpdDk2NEX3EnQ10c BVwpoPI159S2f+0LLelTtvchWD7Uz/5ExXhtIDlMvJBj4p1skT2inkdwQJRgh3lm1Azl 9ufw==
X-Gm-Message-State: ALoCoQmln5Z004JAaKC3Ct7zgoX5OJhz2/koM7AcgPcwK7xvTwLD5LoYaM8gwpEQKxT6Fj2aAovf
MIME-Version: 1.0
X-Received: by 10.60.155.132 with SMTP id vw4mr23098446oeb.51.1435201035062; Wed, 24 Jun 2015 19:57:15 -0700 (PDT)
Received: by 10.182.52.199 with HTTP; Wed, 24 Jun 2015 19:57:14 -0700 (PDT)
In-Reply-To: <D1B06CD7.B38CA%kwatsen@juniper.net>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local> <D1B06CD7.B38CA%kwatsen@juniper.net>
Date: Wed, 24 Jun 2015 19:57:14 -0700
Message-ID: <CAJK7ZqKifH-OLtikDG8_y8RDLoWtV82AVnn1bZBo3gM1S=FZtw@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: Kent Watsen <kwatsen@juniper.net>
Content-Type: multipart/alternative; boundary="047d7bd74feae07db505194ec778"
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/qtkuF1DjUV15EatyC2KUc3f-JkI>
Cc: NETMOD Working Group <netmod@ietf.org>
Subject: Re: [netmod] Follow up on the openconfig oper status and the NETMOD interim
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: Thu, 25 Jun 2015 02:57:19 -0000

Hi Kent,


<snip>

>
>
>
> > If I can make some slight tweaks to the diagrams that have
> > been distributed:
>
> This looks like a variant of the picture I posted here:
> http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html.   On
> one hand I'm happy to see this because no one had acknowledged the pic
> previously, but on the other hand, I'm concerned that you felt the need to
> draw another picture, implying there still being a gap...
>
> Actually, when looking at your picture, substituting running for intended,
> I think your picture is essentially the same as represented here:
> http://www.ietf.org/mail-archive/web/netmod/current/msg12729.html.  Of
> course, without ephemeral, running==intended, so your picture isn't wrong
> either.  I think the only difference is that your picture shows slides 2-4
> together, whereas mine had distinct slides.  Is there a more significant
> difference in your mind?
>

we actually took your followup picture as the basis for the one we drew,
i.e., the one with slides 3 and 4 combined (
http://www.ietf.org/mail-archive/web/netmod/current/msg12738.html).  You'll
see the main difference is that the applied config (what you call actual)
is part of the state (i.e., config: false
data).



> > * Intended and applied/actualised state are views of
> > the running configuration.
>
> Yes, but more precisely, running==intended when there is no ephemeral
> config, right?
>

I guess that's right, but as Rob said, we have not really considered a
separate type of config called ephemeral.  I personally view what we are
calling ephemeral as just control coming through a config channel (e.g.,
the i2rs case)



>
>
> > * All intention is written to the intended configuration
> > (whether it be by CLI, a human, an NMS via NETCONF, a
> > system agent, etc.) ­ which then transitions to becoming
> > the applied/actualised configuration. This is based on
> > either an explicit request to do so (Œcommit¹) or may be
> > implicit. The success of the intended configuration
> > becoming the applied configuration may be due to time
> > deltas or condition, as Kent drew.
>
> Yes but, again, the clients are interacting with the "running" and/or
> "ephemeral" (not directly to "intended").  The important bit is that
> "ephemeral" can override "running", so the "intended" is actually the
> result of a merge operation of sorts...
>

here by intended config, we mean what the intended change to the running
config is.


>
> > * In what we referred to as a Œsynchronous¹ system ­ we
> > expect the attempt to make the intended state transition
> > to the actual state to be completed when the operation
> > returns (e.g., after a <commit />) then the <ok /> should
> > return only when this intention has been applied.
>
> I see.  As stated on the call last week, NETCONF/RESTCONF are currently
> only "asynchronous" by this definition, as neither has any statement
> regarding *when* intended becomes operational wrt <ok/> or 200 OK.
> Dipping into design for a sec, it might be interesting to add an optional
> commit flag indicating that the server should not respond until
> actual==intended...
>

yes ... this is really down to implementations.  In some platforms, the
response comes back
once all involved downstream services have validated and applied the
requested config -- that would be considered synchronous in the way we have
been thinking about it.


>
> > * We require the ability for an NMS to be able to see both
> > the intended and the actual configuration ­ such that it
> > can check whether its intention is currently the applied
> > configuration, or has not yet been applied due to some
> > external dependency (e.g., line card not plugged in).
>
> Understood, at least for leafs that get a protocol negotiated value, which
> may account for just 1% of the configuration.   Dipping again into design,
> I was hoping we might use [XML/JSON] attributes, for instance:
>
>      leaf duplex {
>        type enumeration {
>          enum "half";
>          enum "full";
>          enum "auto";
>        }
>        config true;
>      }
>
>   get-config from running:
>        <duplex>auto</duplex>
>
>   get-operational:
>        <duplex intended="auto">full</duplex>
>

In the proposal laid out in the draft, you would be able see any
differences between intended, actual, and operational with <get> operation
since it would return config: true (intended) and config: false (actual +
negotiated) nodes.   I would view this a little differently as  (not really
netconf syntax):

get-config from running:
  <duplex>auto</duplex>

get:
  <duplex path=config/>auto</duplex>
  <duplex path=state/>auto</duplex>
  <negotiated-duplex path=state/>full</negotiated-duplex>

get-operational:
  <negotiated-duplex path=state/>full</negotiated-duplex>

In particular, notice that the actual config part of the state reflects the
intended value (either immediately or eventually), and if there is
additional state required to reflect a negotiated value, that is a separate
leaf marked operational: true in the model.



>
>
> Less understood is how to support the conditional enablement cases
> (https://tools.ietf.org/html/draft-kwatsen-conditional-enablement-00) such
> as plugging in a line card, or installing a license, or time-of-day.  For
> these, it's not clear what <get-operational> would return...
>
>
>
> > * A portion of the operational state date (marked
> > operational: true) is the set of variables that
> > are not related to state that an external system
> > can assert the value of ‹ for example, a counter,
> > or a negotiated protocol timer.
>
> This is what I think config=false should be used for going forwards.  That
> is, as the example above shows, config=true simultaneously defines some
> nodes returned by <get-operational/>, thus we only need config=false to
> define the non-config based nodes like counters.
>

Agree this label makes sense, but if we agree that the applied (actual)
config is part of the state, then we would still need a way to get the
different types of state separately, i.e., the applied config vs. the
counters, negotiated values, etc.


>
> > * We believe that there is an important advantage
> > in being able to syntactically / structurally
> > retrieve the set of state that is associated with
> > some set of intended state. This is not Œeasy¹
> > today, as there is no common way to link the two
> > ­ especially as models are composed. This does
> > not imply that we understand the semantics of that
> > set of state ­ but simply that we can retrieve
> > all state data that relates to a particular entity
> > that we expressed some intention about (e.g., all
> > state data that corresponds to a particular
> > interface or BGP peer). This division is very
> > important, since there is separation between
> > elements of the NMS that interact with the network,
> > and those that do need to understand the semantics/
> > contents of the data leaves.  For some OpenConfig
> > operators, this separation of concerns is part of
> > their current NMS software architecture.
>
> Thanks for clarifying the motivation.  Looking at
> draft-openconfig-netmod-opstate, this requirement appears to be supported
> through tree-structure alone.  Is this solution sufficient or is there
> also a need to have something more explicit like XPath pointers in the
> data-model?
>

We've been able to make a good deal of progress with the data model pattern
in the draft and, at least at here internally, our NMS exploits that
structure to set and retrieve the different types of data we want to
compare.  We're still gaining experience with it.

thanks!
-- Anees



>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>