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

Andy Bierman <andy@yumaworks.com> Wed, 13 July 2016 19:10 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 03E8A12D0B2 for <netmod@ietfa.amsl.com>; Wed, 13 Jul 2016 12:10:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 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_LOW=-0.7, 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 tfNlslOHPfN9 for <netmod@ietfa.amsl.com>; Wed, 13 Jul 2016 12:10:44 -0700 (PDT)
Received: from mail-vk0-x235.google.com (mail-vk0-x235.google.com [IPv6:2607:f8b0:400c:c05::235]) (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 BD40712B05C for <netmod@ietf.org>; Wed, 13 Jul 2016 12:10:43 -0700 (PDT)
Received: by mail-vk0-x235.google.com with SMTP id o63so79358734vkg.1 for <netmod@ietf.org>; Wed, 13 Jul 2016 12:10:43 -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=Qm1NpQeD4MOh3anFEyqvY89neJ2IWYJ5TcPJpy6KQmA=; b=gxRtEgV6kwqF1r+LsHrER/zza4PKA4tiSBUS9m8nFiBGUkJQVpGYW/UIdLtyMXbPJM VSAXsFROZBzlilrUXs/hcm7pNXSFhFt3TQTcJK20g7aYFZEL3LUib+BKvkkfNucrpK1B tptP06CjYMaiPvKebILXOxdylnyTgegr928TFp6ajzLcH8zdc2j07N3cRNPkscsu7cNM 6sBTZbxcFkX1FfvA/7L6J4HmEmW7l9GitbX3Sy9yLov2ifIqOU2IQh1/Fl1iZxiH7pI1 rX+eB36s39exgyfmkFyGFeO3BIAlRGRVpCsOODxBkvPH26NRBYGJoZEExyLy3FpNwH4L 5LSA==
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=Qm1NpQeD4MOh3anFEyqvY89neJ2IWYJ5TcPJpy6KQmA=; b=OrPFPqYNWmeQzSYjFlsb/CAvQYNQoO+vL/Y0/JZ1MPq1YfgY1WDv0gmJZO/Z62Oe+a 7sJNz+GWlPLlVfeH0dZGKvmsG1zEsnq9/P4AClns+PdRHpLAraxmUVVbJ6cWQSya5fGU fDaYB8cRhiCtGQ2WtEYOCGJq7Zq2EHqO2aQtq4Uds1ZSYHRFWP5tCFYqt8v1PJdCM3eM lwb36VobiUi17PxvFbSczQbkYLlHW1TJfga94Uf0xWlLqpGxx/P/NEfGT3r/YfuHFYC2 yoDiYihBFhxtbRkwIutvNqKhozMKHAwJoOQmrzBemOrvdIoRwORwNCDk1gtSfdOzJwG5 c25w==
X-Gm-Message-State: ALyK8tI2nqcUZYcvKPDEoYbSAgqrZpdVZjZ5cd6nrFtWt2WOv37tz7uiW/NT3QFAnXsIV3/zz20Y+ESYb8NGPA==
X-Received: by 10.31.70.193 with SMTP id t184mr4888817vka.123.1468437042840; Wed, 13 Jul 2016 12:10:42 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.20.2 with HTTP; Wed, 13 Jul 2016 12:10:41 -0700 (PDT)
In-Reply-To: <0534179e-41f9-89a4-e8d7-f4c41cb6140e@cisco.com>
References: <D3A935F0.6A4DC%acee@cisco.com> <02b5661f-22e0-6ccc-89d2-ef0370c4e87c@labn.net> <CABCOCHSH5wC3-VbAF6tXOc+3tSxpC3a0MA23YEkUFEBojoo25w@mail.gmail.com> <2b35a279-3c13-8b39-6e93-6c5e9d3ba2c2@cisco.com> <CABCOCHTOEY4dZM+bduWZ5N-k8dB_uO8=mdqtYQV0ktC6-TPyBw@mail.gmail.com> <3deb9416-e012-e8e3-43e2-be0d090a707a@cisco.com> <CABCOCHSnWaiUPqtpQpND0m3WYy6aYOTJJfJNEe5295bttuy_zw@mail.gmail.com> <D3AAA2CF.6B279%acee@cisco.com> <CABCOCHSa5ECo-j42uMFCqQOU7hUf4qYiDACu+269zd9Rgthafg@mail.gmail.com> <20160712190709.GA36335@elstar.local> <CABCOCHTSshuiihRkpzG=ppMROYcg0AFqtDM=t9A2==mT7gqvrQ@mail.gmail.com> <0534179e-41f9-89a4-e8d7-f4c41cb6140e@cisco.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 13 Jul 2016 12:10:41 -0700
Message-ID: <CABCOCHS+8LXFQeZAY-TiZ82n2guCyA4j3zj_beuuJ9ztkHHFog@mail.gmail.com>
To: Robert Wilton <rwilton@cisco.com>
Content-Type: multipart/alternative; boundary="001a11489076505ab50537892484"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/ObrUAyHiAx-iVhm-njujLe9Bt0k>
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, 13 Jul 2016 19:10:46 -0000

On Wed, Jul 13, 2016 at 2:43 AM, Robert Wilton <rwilton@cisco.com> wrote:

> Please see RW: inline
>
> On 12/07/2016 20:15, Andy Bierman wrote:
>
>
>
> On Tue, Jul 12, 2016 at 12:07 PM, Juergen Schoenwaelder <
> <j.schoenwaelder@jacobs-university.de>j.schoenwaelder@jacobs-university.de
> > wrote:
>
>> On Tue, Jul 12, 2016 at 11:36:03AM -0700, Andy Bierman wrote:
>> > Yes there is value in modeling conventions in general.
>> > I am trying to understand the value of this specific convention.
>> >
>> > If I have an RPC that asks for applied state, then it doesn't really
>> matter
>> > how the config and state is organized.  There is only overlap in the
>> objects
>> > if the data model is designed that way.
>> >
>> > Whether or not an edit is applied yet is a property of the
>> implementation,
>> > not the data model.
>>
>> The current /foo and /foo-state approach requires some amount of
>> duplication. If the trees contain some nested lists of lists, you have
>> to at least replicate all the key leafs in the schema definition. For
>> a small model, this is not a bit deal; for more complex models, this
>> becomes complex and there are possible sources of errors. If it is
>> possible to simply data models, this may be a long-term win.
>>
>>
>
> It only requires duplication if you insist on modeling opstate objects.
> IMO an RPC + notification approach is far superior.
>
> RW:
>
> Are you thinking of a single global notification of convergence?
>


No

I think the client would request a notification for its edit.
There would be a long-form and short-form notification.

The interaction model is simple:
   A) at the time of the request the client opt-in for being notified
   B) the server will send the short form (all-ok) ASAP or even return the
short-form all-ok
        in the response and skip the notifications if possible
    C) if the timeout occurs, then the server sends the long-form
notification, which lists
         all the intended config operations not yet applied.  (This is
easier to do for YANG Patch
        where the edits are identified, than with <edit-config> that has an
unordered blob of XML).


Parameters would be added to the edit request:

    - want-notif:  (boolean: default false)
    - notif-timeout: how long the server should wait before sending the
long-form notification
    - trace-id:  string provided by the client similar to persist-id that
will identify this edit
       in the notifications


This approach does not deal with multi-client conflicts.
If client A does "create /foo" then the server ACKs that edit even if
client B
has started a subsequent "delete /foo" edit before the first edit was ACKed.

A separate RPC to retrieve the long-form notification for all pending edits
would
also be needed to allow for a notification to be lost or a client to query
the entire
list of unapplied edits.


Andy




> Although such a scheme may be sufficient if the configuration is changing
> infrequently, it is not sufficient for a system in which configuration is
> changing frequently (e.g. say to provision very short lived tunnels across
> a data center network).
>
> If the client is interested when a particular config change has converged
> then a global converged flag:
>  (i) may be delayed a long time (if at all) after the config change has
> completed (because other subsequent config operations are in progress)
>  (ii) may be hard to relate back to the original config change
>
> Hence, I think that there are only 2 technical solutions to this problem:
> (a) reporting/notifying the state of the applied configuration nodes (as
> per the requirements stated in draft-ietf-netmod-opstate-reqs, and covered
> by the all the various solution drafts)
> (b) report the success/failure of the particular config operation.
>
> My opinion, is that as network configuration becomes more dynamic, and
> programmatically controlled then (a) is the easier solution and more robust
> to failure over (b).  But both approaches can be supported by devices.
>
>
> In this approach I only need to identify the intended config object
> and retrieve (or be notified) of the applied-state transition.
>
> RW:
>
> This is only part of the solution, since metadata can only be used when
> nodes exist in the YANG data tree.  So, this method alone cannot indicate
> configuration that is applied by the device and is in the process of being
> deleted.
>
> That is primarily why draft-wilton-netconf-opstate-metadata-00 offers
> metadata both on the "persistent" datastore and "operational state
> datastore".
>
>
>
>
>
>
>> The reason why we have the /foo and /foo-state convention is, I
>> believe, the design of the NETCONF <get/> operation, which assumes
>> state and config can be represented together in a single tree. And we
>> have carried this further into YANG (e.g., the way contexts are
>> constructed for xpath expressions). In hindsight, I am not sure the
>> consequences of the <get/> design were that well thought through - but
>> I am not complaining, at that time we did not have YANG nor did we
>> have experience with bigger data models written in YANG. Is it worth
>> fixing it? This is a tough question and I understand that people have
>> different opinions and also different views on where we are on the
>> lifecycle of this technology. The challenge, as always, is to evolve a
>> technology along with its usage and upcoming new requirements. If the
>> evolution is too fast, you risk fragmentation since people will then
>> run many different versions. If evolution is too slow or stops
>> entirely, you pave the way for complete replacements of the
>> technology.
>>
>> I think it is worth to step back for a moment and to think about where
>> we like to be in 5 or 10 years from now when we discuss architectural
>> questions.
>>
>
>
> We have read-only foo-state because we have only been standardizing
> monitoring data for the last 30 years.  I completely agree that if the
> state depends
> on the config in order for an instance to exist, then co-locate the config
> and
> state and share the node naming.
>
>
> But modeling admin-state and oper-state with the same object is not a
> requirement.
>
> RW:
>
> I agree, but when the oper-state exactly of a node reflects the applied
> admin-state then I see no benefit in having a separate duplicate "config
> false" node.
>
> Rob
>
>
> Being able to determine if the intended config is applied yet is a
> requirement.
> This can be done with protocol operations so it is 100% data model neutral.
>
>
>
>
>>
>> /js
>>
>
> Andy
>
>
>>
>> --
>> 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/>
>> http://www.jacobs-university.de/>
>>
>
>
>
> _______________________________________________
> netmod mailing listnetmod@ietf.orghttps://www.ietf.org/mailman/listinfo/netmod
>
>
>