Re: [Rtg-yang-coord] Operational State Modeling
Anees Shaikh <aashaikh@google.com> Wed, 13 May 2015 07:51 UTC
Return-Path: <aashaikh@google.com>
X-Original-To: rtg-yang-coord@ietfa.amsl.com
Delivered-To: rtg-yang-coord@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1])
by ietfa.amsl.com (Postfix) with ESMTP id C3FD11A1A76
for <rtg-yang-coord@ietfa.amsl.com>; Wed, 13 May 2015 00:51:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level:
X-Spam-Status: No, score=-1.388 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,
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 ywHnajv69QiD for <rtg-yang-coord@ietfa.amsl.com>;
Wed, 13 May 2015 00:51:42 -0700 (PDT)
Received: from mail-ob0-x236.google.com (mail-ob0-x236.google.com
[IPv6:2607:f8b0:4003:c01::236])
(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 3312C1A1A6E
for <Rtg-yang-coord@ietf.org>; Wed, 13 May 2015 00:51:42 -0700 (PDT)
Received: by obblk2 with SMTP id lk2so23911645obb.0
for <Rtg-yang-coord@ietf.org>; Wed, 13 May 2015 00:51:41 -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=jJGAfsgMtwrHuMaJ2YDlb3gdoujTchM0VrzIKKtCvZs=;
b=ptuja1voFRpOJPaQq7mQ211GMq1Tlv6bVPd7fC40Fn/HjPokn9TnZz2hBMde4v1kFR
AI8I6MAaAq+tBcmaMGEUgNESbzZMtXOOom8zRvbWWFTeQz81GpoJ9q7TdprL67RnZKWh
/oMP5D+PwkqzEF8YDvSRU0VdgaPCD+aRFNGFbcGVpBQ6aHU5QUJ94S6PMOBEiUYbj1qJ
htK4BQqwSFF0F+ubQKa0MOq0hWhABDfH3Kjuho6yk5l37hw4qeLXRa64ukOHrKknzOgF
rsVIZjJCGFRmgyxhwDg3QY6OZIh57alPU7dzO+IfcZy1p0Gt9Q8HoJ98cBsjn0SyW+Mg
yrCg==
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=jJGAfsgMtwrHuMaJ2YDlb3gdoujTchM0VrzIKKtCvZs=;
b=CKL9C73q+NIdPMyXKmcTjENvYLuB7sYXxxEJTrw8n47Bahb2KORq9hTl9lVf1Zs7Va
yxQHQppQd1LCZYByDTAcEdykKxJl0jQv6eHjD5T44rrpxZz2nhEcp4SAar5YXSDIKnlj
yBNSPCxEBbjM6kFuc3AvIYNgqFInBEnTKZH6Ll8YcDVhBXXWAg0gJ8e5endFdAEV3H+3
CK3/8omLo0o5fWfCUgREVYGRK+KiLjccjhH+DunglHdcUzBxu98aHUmCcoBm6xndCKz5
6rQu22V9sSlOPWKhnLsKdmr+5gVf7M29c/QxMyihZFuEPQ9Qw+03lRydaTLDhIDkTU0/
GA3Q==
X-Gm-Message-State: ALoCoQl1CfHbSjqzsld28m1yAAu4Exn6Cw0Umm4Thqgxp6dL4U2IVI65ui5zc5wsGjAH6AJ11h/l
MIME-Version: 1.0
X-Received: by 10.202.201.3 with SMTP id z3mr14282385oif.130.1431503501558;
Wed, 13 May 2015 00:51:41 -0700 (PDT)
Received: by 10.182.220.200 with HTTP; Wed, 13 May 2015 00:51:41 -0700 (PDT)
In-Reply-To: <D177E7E1.1AC4C%acee@cisco.com>
References: <D177E7E1.1AC4C%acee@cisco.com>
Date: Wed, 13 May 2015 00:51:41 -0700
Message-ID: <CAJK7ZqLp4_dOVMcSMXP3juZHHeQJ6iLGkryJ8t6gs2Mcn=Ez5Q@mail.gmail.com>
From: Anees Shaikh <aashaikh@google.com>
To: "Acee Lindem (acee)" <acee@cisco.com>
Content-Type: multipart/alternative; boundary=001a1134e9a0b4bd780515f1e1d6
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtg-yang-coord/vPvY7aahBu-cW6H55ieoHGwK7c8>
Cc: "Rtg-yang-coord@ietf.org" <Rtg-yang-coord@ietf.org>,
Xufeng Liu <xufeng.liu@ericsson.com>
Subject: Re: [Rtg-yang-coord] Operational State Modeling
X-BeenThere: rtg-yang-coord@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "\"List to discuss coordination between the Routing related YANG
models\"" <rtg-yang-coord.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtg-yang-coord>,
<mailto:rtg-yang-coord-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtg-yang-coord/>
List-Post: <mailto:rtg-yang-coord@ietf.org>
List-Help: <mailto:rtg-yang-coord-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtg-yang-coord>,
<mailto:rtg-yang-coord-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 May 2015 07:51:47 -0000
Xufeng, thanks very much for taking the time to do this systematic analysis -- much appreciated. We've also talked to a subset of the MPLS/TE DT just today about opstate to reiterate the reasons for the OpenConfig proposal. I will just comment on your rationale section. 1.1 Performance requirements Implementations today already support the retrieval of operational state and configuration data together. In fact, platforms that support NETCONF would need to handle both simultaneously in a <get> request. The <get-config> request does not return opstate at all. There is no option today for <get-operational> to retrieve only state (though our draft proposes, or more accurately, re-proposes it). The performance implications may be due to the datastore design for the different types of data, but where the data lives in the *schema* should not have a major impact on the performance to read it. In other words, if you accept the requirement that configuration needs to be part of state (which you seem to in the beginning of the note), then the location in the schema really shouldn't matter. It does matter for other reasons (see below). 1.2 Data type requirements -- agree with your conclusions 1.3 Operation requirements You mention, "*For option 2, to check the state value for a specific configuration attribute, the client software can simply add the “-state” suffix to the name of the top container*" The question that this doesn't answer is what is the top container? It may be clear in an individual model, but I don't manage a device using just routing, or just interfaces. I want to compose a set of models into a coherent whole and be able to access config and corresponding state in a consistent way. When I compose the models, what I thought was the "top" container is no longer top -- it shows up somewhere in the middle, and my paths are now totally dependent on how modelers have decided to combine or separate their individual models and modules. From our perspective, option 2 doesn't meet this requirement. Rather than debate what the real top of a usable model is, we take the approach of pushing the separation to leaves of the tree, which works no matter how models are composed structurally. 1.4 Other requirements Regarding system-created tunnels, why is it necessary to consider them part of read-only state? I can just as well consider them as configured, only they are configured by some agent on the system -- they should in fact be configured using the same mechanism as a tunnel configured by an operator. If they are not writable, *and you want to enforce this in the model*, they could show up in only the state part of the tree -- I agree this does raise the issue with list keys that you mention. But list keys (and lists in general) are a bit broken in YANG 1.0/1.1 as we explain briefly in the draft. We can discuss the issues with lists in a separate thread given more time. Regarding compatibility with existing models, I really don't agree at all that the existing RFC models should constrain what we do when trying to meet the requirements of people trying to build real systems that use YANG models. With all respect to the authors of those few models (which we leverage considerably in our models), YANG models are software code, and should be treated as such IMO. We don't say that software is "done" and can't change -- it evolves and improves over time, sometimes in non-backward-compatible ways. And we don't issue a final version of software without considerable experience using and testing it in production. thanks. -- Anees On Tue, May 12, 2015 at 2:26 PM, Acee Lindem (acee) <acee@cisco.com> wrote: > Hi Xufeng, > > My interpretation of the OpenConfig draft is that it recommends option > 1. Actually, option 3 seems like a variation of 1 with some superfluous > levels. > > Thanks, > Acee > > From: Xufeng Liu <xufeng.liu@ericsson.com> > Date: Tuesday, May 12, 2015 at 4:56 PM > To: Routing YANG <rtg-yang-coord@ietf.org> > Subject: [Rtg-yang-coord] Operational State Modeling > > During the YANG MPLS/TE design team discussions, the topic of > operational state modeling was brought up. We discussed the proposal > presented in http://www.ietf.org/id/draft-openconfig-netmod-opstate-00.txt > and some various approaches. Here are some thoughts and questions. > 1. Requirements > > We agree with the requirements presented in > draft-openconfig-netmod-opstate. These requirements are summarized as > followings. > 1.1.Performance Requirement > > · Operational state access is much more frequent than > configuration > > · State data is generally higher volume than configuration data > 1.2.Data Type Requirements > > · Representing intended configuration (actual vs. configured) > > · Derived, negotiated, and system assigned data > > · Counters or statistics > 1.3.Operation Requirements > > · Separate configuration and operational state data > > · Retrieve configuration and operational state data > independently > > · Retrieve derived state and statistics state independently > > · Consistent schema locations for configuration and > corresponding operational state data > 2. Some Options 2.1.Option 1 > > > > /routing/routing-instance: > > +--rw te! > > +--rw globals > > +--rw interfaces > > | +--rw interface* [interface] > > | +--rw interface if:interface-ref > > +--rw config > > | +--rw switching-capabilities* [switching-capability] > > +--rw config > > | | +--rw capability? identityref > > | | +--rw encoding? identityref > > *+--ro state* > > * | +--ro capability? identityref* > > * | +--ro encoding? identityref* > > | +--rw te-metric? ietf-te-types:te-metric > > *+--ro state* > > * | +--ro te-metric? ietf-te-types:te-metric* > > +--ro oper-status? enumeration > > +--ro counters > > +--ro pkts-sent? yang:counter32 > > +--rw tunnels > > +--rw tunnel* [name type] > > +--rw name string > > +--rw config > > | +--rw admin-status? identityref > > | +--rw forwarding > > +--rw config > > | +--rw load-share? uint32 > > * +--ro state* > > * | +--ro load-share? uint32* > > * +--ro state* > > * +--ro admin-status? identityref* > > +--ro oper-status? enumeration > > +--ro counters > > +--ro events? yang:counter32 > 2.2.Option 2 > > > > /routing/routing-instance: > > +--rw te! > > +--rw globals > > +--rw interfaces > > | +--rw interface* [interface] > > | +--rw interface if:interface-ref > > | +--rw switching-capabilities* [switching-capability] > > | | +--rw capability? identityref > > | | +--rw encoding? identityref > > | +--rw te-metric? ietf-te-types:te-metric > > +--rw tunnels > > +--rw tunnel* [name type] > > +--rw name string > > +--rw admin-status? identityref > > +--rw forwarding > > +--rw load-share? uint32 > > /routing-state/routing-instance: > > +--ro te! > > +--ro globals > > +--ro interfaces > > | +--ro interface* [interface] > > | +--ro interface if:interface-ref > > * | +--ro switching-capabilities* [switching-capability]* > > * | | +--ro capability? identityref* > > * | | +--ro encoding? identityref* > > * | +--ro te-metric? ietf-te-types:te-metric* > > +--ro oper-status? enumeration > > +--ro counters > > +--ro pkts-sent? yang:counter32 > > +--ro tunnels > > +--ro tunnel* [name type] > > +--ro name string > > * +--ro admin-status? identityref* > > * +--ro forwarding* > > * +--ro load-share? uint32* > > +--ro oper-status? enumeration > > +--ro counters > > +--ro events? yang:counter32 > > > 2.3.Option 3 > > > > /routing/routing-instance: > > +--rw te! > > +--rw globals > > +--rw interfaces > > | +--rw interface* [interface] > > | +--rw interface if:interface-ref > > +--rw config > > | +--rw switching-capabilities* [switching-capability] > > +--rw config > > | | +--rw capability? identityref > > | | +--rw encoding? identityref > > * +--ro state* > > * | +--ro capability? identityref* > > * | +--ro encoding? identityref* > > | +--rw te-metric? ietf-te-types:te-metric > > * +--ro state* > > * | +--ro te-metric? ietf-te-types:te-metric* > > +--rw tunnels > > +--rw tunnel* [name type] > > +--rw name string > > +--rw config > > | +--rw admin-status? identityref > > | +--rw forwarding > > +--rw config > > | +--rw load-share? uint32 > > * +--ro state* > > * | +--ro load-share? uint32* > > *+--ro state* > > * +--ro admin-status? identityref* > > > > /routing-state/routing-instance: > > +--ro te! > > +--ro globals > > +--ro interfaces > > | +--ro interface* [interface] > > | +--ro interface if:interface-ref > > +--ro oper-status? enumeration > > +--ro counters > > +--ro pkts-sent? yang:counter32 > > +--ro tunnels > > +--ro tunnel* [name type] > > +--ro name string > > +--ro oper-status? enumeration > > +--ro counters > > +--ro events? yang:counter32 > > > 3. Approach Rationales 1.1.Performance Requirement > > · Separating configuration and state branches allows > implementing state data through a separate fast channel to deliver high > frequent and high volume data. > > · In this aspect, Option 2 has a clearer separation between > configuration and state data, and easier to achieve better performance by > using separate channels. > 1.2.Data Type Requirements > > · Duplicating all configuration attributes makes actual > configuration settings available > > · Derived, negotiated, and system assigned data are added to > the state branch > > · Counters or statistics are added to the state branch > > · All three options satisfy these requirements > 1.3.Operation Requirements > > · Separating configuration and operational state data allows > retrieving configuration and operational state data independently. > > · Separating derived state and statistics state allows > retrieving them independently > > · The state branch is an exact mirror of the configuration > branch, so the schema locations are consistent. > > · In this aspect, all three options satisfy the requirements. > For option 1, to check the state value for a specific configuration > attribute, the client software can simply add the “state” to the end of the > schema node path. For option 2, to check the state value for a specific > configuration attribute, the client software can simply add the “-state” > suffix to the name of the top container. Option 1 seems to be easiest in > this regard, but others are acceptable? > 1.4.Other Requirements > > · Model system created read-only objects (e.g. TE tunnels). > When state data and config data share the same parent, they share the same > key for the parent list. Even though that the state branch is read-only, > its parent is not and the key of the parent is not. Therefore, we will have > difficulty to achieve this in Option 1. > > · Compatible with the existing models. The related models > include RFC7223, RFC7277 and draft-ietf-netmod-routing-cfg-18. In this > aspect, Option 2 seems to do better. > > Your comments and preferences are appreciated. > > Thanks, > > > > - Xufeng > > > > > _______________________________________________ > Rtg-yang-coord mailing list > Rtg-yang-coord@ietf.org > https://www.ietf.org/mailman/listinfo/rtg-yang-coord > >
- [Rtg-yang-coord] Operational State Modeling Xufeng Liu
- Re: [Rtg-yang-coord] Operational State Modeling Russ White
- Re: [Rtg-yang-coord] Operational State Modeling Juergen Schoenwaelder
- Re: [Rtg-yang-coord] Operational State Modeling Acee Lindem (acee)
- Re: [Rtg-yang-coord] Operational State Modeling Anees Shaikh
- Re: [Rtg-yang-coord] Operational State Modeling Juergen Schoenwaelder
- Re: [Rtg-yang-coord] Operational State Modeling Thomas D. Nadeau
- Re: [Rtg-yang-coord] Operational State Modeling Andy Bierman
- Re: [Rtg-yang-coord] Operational State Modeling Xufeng Liu
- Re: [Rtg-yang-coord] Operational State Modeling Xufeng Liu
- Re: [Rtg-yang-coord] Operational State Modeling aldrin ietf
- Re: [Rtg-yang-coord] Operational State Modeling Anees Shaikh
- Re: [Rtg-yang-coord] Operational State Modeling Juergen Schoenwaelder
- Re: [Rtg-yang-coord] Operational State Modeling Christian Hopps
- Re: [Rtg-yang-coord] Operational State Modeling Ladislav Lhotka
- Re: [Rtg-yang-coord] Operational State Modeling Juergen Schoenwaelder
- Re: [Rtg-yang-coord] Operational State Modeling Acee Lindem (acee)
- Re: [Rtg-yang-coord] Operational State Modeling Nadeau Thomas
- Re: [Rtg-yang-coord] Operational State Modeling Andy Bierman
- Re: [Rtg-yang-coord] Operational State Modeling aldrin ietf
- Re: [Rtg-yang-coord] Operational State Modeling Juergen Schoenwaelder
- Re: [Rtg-yang-coord] Operational State Modeling Nadeau Thomas
- Re: [Rtg-yang-coord] Operational State Modeling aldrin ietf