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

Kent Watsen <kwatsen@juniper.net> Wed, 24 June 2015 19:29 UTC

Return-Path: <kwatsen@juniper.net>
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 7C2751B2D24 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:29:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.702
X-Spam-Level:
X-Spam-Status: No, score=-0.702 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_64=0.6, J_CHICKENPOX_65=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 dhFv_rzvJbk2 for <netmod@ietfa.amsl.com>; Wed, 24 Jun 2015 12:29:28 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0142.outbound.protection.outlook.com [207.46.100.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9C221B2D28 for <netmod@ietf.org>; Wed, 24 Jun 2015 12:29:28 -0700 (PDT)
Received: from CO1PR05MB458.namprd05.prod.outlook.com (10.141.72.140) by CO1PR05MB460.namprd05.prod.outlook.com (10.141.72.152) with Microsoft SMTP Server (TLS) id 15.1.195.15; Wed, 24 Jun 2015 19:29:27 +0000
Received: from CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) by CO1PR05MB458.namprd05.prod.outlook.com ([169.254.10.100]) with mapi id 15.01.0195.005; Wed, 24 Jun 2015 19:29:27 +0000
From: Kent Watsen <kwatsen@juniper.net>
To: Rob Shakir <rjs@rob.sh>, NETMOD Working Group <netmod@ietf.org>
Thread-Topic: [netmod] Follow up on the openconfig oper status and the NETMOD interim
Thread-Index: AQHQrqTV5K6j5l4Rs0+/OvyIvmQISp27x9CA
Date: Wed, 24 Jun 2015 19:29:27 +0000
Message-ID: <D1B06CD7.B38CA%kwatsen@juniper.net>
References: <55897ED5.2080809@cisco.com> <etPan.558aeb61.2c1c2992.123@piccolo.local>
In-Reply-To: <etPan.558aeb61.2c1c2992.123@piccolo.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.4.4.140807
authentication-results: rob.sh; dkim=none (message not signed) header.d=none;
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [66.129.239.12]
x-microsoft-exchange-diagnostics: 1; CO1PR05MB460; 5:TAF8xp+R3QT28GcN5C8+rL6ro4lX/tyC0yquRnVXXpihg8rMcB/R5Zy66VJpXKx2aySbsixifPOCbEt9ZcEUOqtwe2JegX88F2DRumaaKHEzMIiknN7ozleR4Aizxt6bVKlTqkFhjPLjVCcDehlFwQ==; 24:GYdznfz74z2gFS7xv5BtBO53yYNYW0TZXzKaugYg9nlj/Zpk8wScVjKLqyUglwDsc1GDjWxlhny9GAzf1nAcuFNxPXyEReMtYrTpwNS1JjE=; 20:+26Uc6m0r+z38u5Nm+k+n9bmicQIKktz5DrGMniGtBBViNSXYGy5kCTKe9tY+qU8CVSN5V+K4iaxTy0Zt0p1zQ==
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO1PR05MB460;
x-microsoft-antispam-prvs: <CO1PR05MB46087FE5798CBE9532D950AA5AF0@CO1PR05MB460.namprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CO1PR05MB460; BCL:0; PCL:0; RULEID:; SRVR:CO1PR05MB460;
x-forefront-prvs: 061725F016
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(52604005)(43784003)(122556002)(5001960100002)(36756003)(5002640100001)(189998001)(40100003)(106116001)(102836002)(92566002)(5001770100001)(2950100001)(50986999)(77156002)(2900100001)(107886002)(15975445007)(76176999)(4001350100001)(54356999)(46102003)(99286002)(87936001)(2656002)(19580395003)(86362001)(83506001)(62966003)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR05MB460; H:CO1PR05MB458.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en;
Content-Type: text/plain; charset="Windows-1252"
Content-ID: <4ED4F1EE2C36774881C21AA5F9444248@namprd05.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: juniper.net
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2015 19:29:27.4369 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB460
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/32DC3wjK4T_aVVwGB3vprL88DfE>
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: Wed, 24 Jun 2015 19:29:30 -0000

[As an individual contributor]


Hi Rob and OC team,


> Thanks very much to everyone that has considered the problem
> that we laid out on the last interim call. I think we¹re
> starting to reach a common understanding.

Indeed!


> 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 have not been considering ephemeral and startup as
> separate items. As far as we see these, the startup is
> simply a subset of the intended state that happens to
> persist after a system reboot, or seed the initial set
> of intended states when the system restarts. Ephemeral
> state is simply intended state that is not persistent.

Yup


> * Intended and applied/actualised state are views of
> the running configuration.

Yes, but more precisely, running==intended when there is no ephemeral
config, right?


> * 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...


> * 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...


> * 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>


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.


> * 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?


Thanks again,
Kent