Re: [netmod] comments on revised-datastores-00

Ladislav Lhotka <lhotka@nic.cz> Wed, 16 November 2016 03:34 UTC

Return-Path: <lhotka@nic.cz>
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 7D3251295E4 for <netmod@ietfa.amsl.com>; Tue, 15 Nov 2016 19:34:54 -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] autolearn=ham autolearn_force=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 jziW2dXaybyw for <netmod@ietfa.amsl.com>; Tue, 15 Nov 2016 19:34:52 -0800 (PST)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 9E678129593 for <netmod@ietf.org>; Tue, 15 Nov 2016 19:34:51 -0800 (PST)
Received: from localhost (dhcp-8ee8.meeting.ietf.org [31.133.142.232]) by trail.lhotka.name (Postfix) with ESMTPSA id 01D3E1CC023A; Wed, 16 Nov 2016 04:34:52 +0100 (CET)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20161115061450.GA48891@elstar.local>
References: <m2zil2er5j.fsf@dhcp-8ee8.meeting.ietf.org> <20161114094210.GA45946@elstar.local> <m2eg2d600s.fsf@dhcp-8ee8.meeting.ietf.org> <20161115061450.GA48891@elstar.local>
Date: Wed, 16 Nov 2016 12:34:36 +0900
Message-ID: <m2oa1gqer7.fsf@dhcp-8ee8.meeting.ietf.org>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/njKtAo-utfAGXDV3Ks2pCBayULk>
Cc: netmod@ietf.org
Subject: Re: [netmod] comments on revised-datastores-00
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, 16 Nov 2016 03:34:54 -0000

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Tue, Nov 15, 2016 at 09:48:35AM +0900, Ladislav Lhotka wrote:
>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:
>> 
>> > On Mon, Nov 14, 2016 at 11:23:04AM +0900, Ladislav Lhotka wrote:
>> >> Hi,
>> >> 
>> >> I've read the revised-datastores-00 document, in general I like it, here
>> >> are my initial comments and questions:
>> >> 
>> >> 1. Even if <intended> is valid, it can still be in conflict with the
>> >>    actual content of <applied> that may come from e.g. dynamic
>> >>    configuration protocols. How are such cases supposed to be resolved?
>> >
>> > Yes. The whole idea is to expose these potential differences instead
>> > of hiding them behind a curtain.
>> 
>> That's fine but it doesn't answer my question.
>>
>
> Then I do not understand the question. What does it mean for a
> datastore to be in conflict with a different datastore?

For example:

- the data model has a choice with caseA and caseB. A NC/RC client
  configures caseA, <intended> is valid, but <applied> already contains
  caseB configured by a "dynamic configuration protocol"; or

- a leafref refers to a leaf that exists in <intended> but not in
  <applied>.

>
>> >> 2. What is the distinction between dynamic configuration protocols and
>> >>    control-plane protocols?
>> >
>> > Good question. I believe this to be at the end implementation specific.
>> > The question I think really is whether a control-plane protocol interacts
>> > with the configuration management component or not.
>> 
>> OK, perhaps it can be said that dynamic configuration protocols modify
>> "config true" data. Maybe a term like "configuration interface" may be
>> better because it needn't be a communication protocol, and it needn't be
>> any more dynamic than NETCONF/RESTCONF is.
>
> Yes, we know that 'dynamic' is potentially misleading.

My take from yesterday's discussion is that in fact the classification
is implementation-dependent. For example, if I use standard Linux
command-line tools such as "ip", their result can be seen only in
operational state, so they are like control-plane protocols. However, if
an implementation patches these tools so as to write to <applied>, then
they are dynamic configuration protocols.

>
>> >> 5. Is it necessary that "<operational-state> datastore contains all
>> >>    configuration data actually used by the system"? For example, static
>> >>    routes should appear in RIBs, so having them separately in operational
>> >>    state seems redundant.
>> >
>> > I do not understand your question. Is the RIB exposed or not? Anyway,
>> > we need a general model and not a model for specific aspects such as
>> > routing. Yes, there can be redundancy but there can also be semantic
>> > differences. The <operational-state> datastore tells me what is
>> > actually used (regardless of what has happened with the statically
>> > configured values). In other words, if I want to debug what my box is
>> > actually doing, looking at the <operational-state> datastore is
>> > probably a good idea.
>> 
>> But could this part of operational state be possibly different from
>> what's already in <applied>?
>
> This is subtle since we are not really able to define precisely what
> the boundaries of a datastore are. Is something applied if the
> responsible daemon accepted information? Or is it applied if the
> daemon communicated information to the kernel? Or is it applied if the
> linecard accepted the information from the kernel? Or is it applied if
> the specific registers of the linecard have been programmed?

In my view, at some point the configuration system hands over the data
to the backend that's responsible for performing the changes, and the
data passed to the backend should be the content of <applied>. Whether
the changes take effect in the system or not may be discovered from
operational state data but the configuration processing should be
already over.  

> Similarily, how is operational state obtained? It is likely that an
> implementation does not read linecard registers on every operational
> state request. As a consequence, we might have systems where applied
> really is just a subset of operational state and this may be true for
> a large number of systems but I would not rule out the possibility of
> having differences between applied and operational state.

We don't currently have static routes in routing-state, despite all
criticism about duplication of config and state values, so it seems
rather backwards to duplicate it in the new datastore model. What's
important for an operator is to see whether a static route appears in a
RIB or not.

Lada

>
> /js
>
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C