Re: [netmod] <running> vs <intended> [was Re: WG Last Call: draft-ietf-netmod-revised-datastores-04 updates]

Robert Wilton <rwilton@cisco.com> Mon, 18 September 2017 15:34 UTC

Return-Path: <rwilton@cisco.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 3F0D41321A2; Mon, 18 Sep 2017 08:34:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Level:
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 XumZhzQvpxxn; Mon, 18 Sep 2017 08:34:21 -0700 (PDT)
Received: from aer-iport-4.cisco.com (aer-iport-4.cisco.com [173.38.203.54]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 709BF134291; Mon, 18 Sep 2017 08:34:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=25102; q=dns/txt; s=iport; t=1505748860; x=1506958460; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=g+21SKw1oMc2CtuQ9zs+VYoBLRoubGPPewDmWwJLS3o=; b=mOYcHkOaQpz+r7lJ492vwXllx0/e0d80Xsz+upI6loW/FC7luqj2qNe+ Cm9vHlQj3Gb0d8xOaSYoEnQ5PYobUSrQNsnsB4g4o1sZJh2mvd+2OHfIV A9tjGD5BdlKWAajpi1lVwiYAQgy0UnLPGe0/OTlQvaCQIAIsbeNsN+HwQ E=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0C1AQD25r9Z/xbLJq1dGQEBAQEBAQEBAQEBBwEBAQEBhSwng3WLFJBLCSKWJoISCoQrgRAChQcXAQIBAQEBAQEBayiFGAEBAQECASNPBxAJAhACBiADBAMCAkYDDgYNBgIBAYonCIwxnWaCJyeLBQEBAQEBAQEBAQEBAQEBAQEBAQEBAR2DK4NSgWMrC4JyhGJMgl2CYAWYQIhIlFWCE4lEJIZ9igCDXodXgTkhATVBTDIhCBwVhheBTz82hVQrghQBAQE
X-IronPort-AV: E=Sophos;i="5.42,413,1500940800"; d="scan'208,217";a="657553748"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-4.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Sep 2017 15:34:18 +0000
Received: from [10.63.23.66] (dhcp-ensft1-uk-vla370-10-63-23-66.cisco.com [10.63.23.66]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id v8IFYHNT000481; Mon, 18 Sep 2017 15:34:17 GMT
To: Andy Bierman <andy@yumaworks.com>
Cc: Martin Bjorklund <mbj@tail-f.com>, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, "t.petch" <ietfc@btconnect.com>, Berger Lou <lberger@labn.net>, "netmod@ietf.org" <netmod@ietf.org>, NetMod WG Chairs <netmod-chairs@ietf.org>, draft-ietf-netmod-revised-datastores@ietf.org
References: <CABCOCHQcSUSUZMvzVGyaXObHadZqksKge89_6YcH9PCbxMCG=g@mail.gmail.com> <20170916072403.xp37556z6g7b42gr@elstar.local> <CABCOCHT8CMCAnqf6Oe1bKMzQ-B_0GjrQiQ8YXgQJvCo-NBOBBA@mail.gmail.com> <20170917.154115.791964858062115650.mbj@tail-f.com> <CABCOCHQeQYU+zBpFvVRqCc02nrtyS6Jix1=43it1fn9i9xrD6Q@mail.gmail.com> <c39dced6-9cd5-a7e6-db00-b121bc6de07c@cisco.com> <CABCOCHQYSpRrG93YCb6WxFkuRKNM2e8bjZrVpfDw2kDF1Q7uSQ@mail.gmail.com>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <70a5b659-83a3-5952-b5e7-b8e991c84ef1@cisco.com>
Date: Mon, 18 Sep 2017 16:34:17 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <CABCOCHQYSpRrG93YCb6WxFkuRKNM2e8bjZrVpfDw2kDF1Q7uSQ@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------26DC4F0C8AFF300D3BDE436C"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/bON4UzhNIiwR7qgywToTOFsksFs>
Subject: Re: [netmod] <running> vs <intended> [was Re: WG Last Call: draft-ietf-netmod-revised-datastores-04 updates]
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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: Mon, 18 Sep 2017 15:34:24 -0000


On 18/09/2017 15:21, Andy Bierman wrote:
>
>
> On Mon, Sep 18, 2017 at 2:28 AM, Robert Wilton <rwilton@cisco.com 
> <mailto:rwilton@cisco.com>> wrote:
>
>     Hi Andy,
>
>     At the moment, NMDA does not change the definition of <running>
>     for a standards compliant implementation of
>     YANG/NETCONF/RESTCONF.  It is still the same as in 7950, and
>     <running> must still be a "valid configuration data tree" for a
>     standards complaint implementation.
>
>     However, the draft acknowledges that proprietary extensions exist
>     that can modify the behaviour of <running> in ways that means that
>     <running> is not always a valid configuration data tree.  The
>     draft gives two examples of how <running> could be manipulated
>     (inactive config, and templates).
>
>
> I don't see how NMDA can both acknowledge and violate the MUST be 
> valid in RFC 7950.
> That statement is quite clear in RFC 7950.
I think that NMDA acknowledges non standard extensions could exist that 
would violate RFC 7950 if/when those features are used, and provides a 
standard architecture (i.e. the definition of <intended>) to allow 
devices to expose the effects of those bespoke features in a standard way.

Phil had proposed adding the following text on validation:

+The implication of the existence of templating mechanisms is that
+<running> is now explicitly allowed to be invalid, since the
+templating mechanism may be supplying additional data that satisfies
+constraints that may not be satisfied by <running> itself.

Do you think that text like this would help?  Or perhaps more 
generically, something like this:

The implication of the existence of mechanisms that can allow
<intended> to differ from <running> means that <running> is no
longer guaranteed to always be valid.  However, when any
change is made to <running>, <intended> must also be updated at
the same time and be successfully validated before the operation
on <running> can be completed.

Obviously this would then need to update 7950.

>
>     If those extensions are standardized then I think it is likely
>     that those RFCs would need to update 7950 to indicate that
>     <running> isn't necessarily a "valid configuration data tree" when
>     those extensions are used.  But I don't think that needs to be
>     stated in the NMDA architecture at this time.
>
>
>  Right -- because 7950 still holds any any server that does not have a 
> valid <running>
> is non-compliant to 7950.
I agree.

Thanks,
Rob

>
>
> Andy
>
>     So, what is <intended>?
>      - this is meant to represent the configuration that the system
>     will actually attempt to apply after any and all manipulation
>     (e.g. by templates, inactive removal, perhaps system scripts, etc)
>     of the configuration has been performed.
>      - it must always be a valid configuration data tree.
>      - If <running> is updated then <intended> is always updated at
>     the same time.  Hence, any successful change to <running> requires
>     that <intended> has also been updated and validated. E.g. in
>     RESTCONF terms, I think that both <running> and  <intended> should
>     get the same last-change timestamp whenever <running> is updated.
>      - It provides a known fixed point so that any client can see the
>     full validated config, i.e. even for devices that implement
>     proprietary manipulations of the configuring in <running>.
>      - If the device doesn't support any extra proprietary config
>     manipulations, then <intended> is identical to <running>.
>
>     I think that we can possibly do a bit more to better define what
>     <intended is>.  My previous suggestion as an improvement was below
>     (perhaps you think it needs more clarification)?:
>
>     *OLD:*
>
>     4.4.  The Intended Configuration Datastore (<intended>)
>
>        The intended configuration datastore (<intended>) is a read-only
>        configuration datastore.  It is tightly coupled to <running>.  When
>        data is written to <running>, the data that is to be validated is
>        also conceptually written to <intended>.  Validation is
>     performed on
>        the contents of <intended>.
>
>        For simple implementations, <running> and <intended> are identical.
>
>        <intended> does not persist across reboots; its relationship with
>        <running> makes that unnecessary.
>
>        ...
>
>     *NEW:*
>
>     4.4.  The Intended Configuration Datastore (<intended>)
>
>        The intended configuration datastore (<intended>) is a read-only
>        configuration datastore.  It represents the configuration after all
>        configuration transformations to <running> are performed (e.g.
>        template expansion, inactive configuration removal), and is the
>        configuration that the system attempts to apply.
>
>        It is tightly coupled to <running>. When data is written to
>        <running>, the data that is to be validated is also conceptually
>        written to <intended>.  Validation is performed on the contents of
>        <intended>.
>
>        For simple implementations, <running> and <intended> are identical.
>
>        The contents of <intended> is also related to the 'config true'
>        subset of <operational>, and hence a client can determine to what
>        extent the intended configuration is currently applied by checking
>        whether the contents of <intended> also appears in <operational>.
>
>        <intended> does not persist across reboots; its relationship with
>        <running> makes that unnecessary.
>
>        ...
>
>     Thanks,
>     Rob
>
>
>     On 17/09/2017 16:31, Andy Bierman wrote:
>>     Hi,
>>
>>     My concern is that the definition of <running> is being changed to
>>     include undefined and undeclared proprietary extensions.
>>     This is counter-productive to the IETF's stated goal of
>>     interoperability.
>>
>>
>>     Andy
>>
>>
>>     On Sun, Sep 17, 2017 at 6:41 AM, Martin Bjorklund <mbj@tail-f.com
>>     <mailto:mbj@tail-f.com>> wrote:
>>
>>         Andy Bierman <andy@yumaworks.com <mailto:andy@yumaworks.com>>
>>         wrote:
>>         > On Sat, Sep 16, 2017 at 12:24 AM, Juergen Schoenwaelder <
>>         > j.schoenwaelder@jacobs-university.de
>>         <mailto:j.schoenwaelder@jacobs-university.de>> wrote:
>>         >
>>         > > On Fri, Sep 15, 2017 at 02:07:58PM -0700, Andy Bierman wrote:
>>         > > > Hi,
>>         > > >
>>         > > > I strongly agree with Tom that the current draft is an
>>         update to RFC
>>         > > 7950.
>>         > > > I also strongly disagree with the decision to omit RFC
>>         2119 in a
>>         > > standards
>>         > > > track document. IMO RFC 2119 terms need to be used in
>>         normative text,
>>         > > > especially when dealing with XPath and YANG compiler
>>         behavior.
>>         > > >
>>         > >
>>         > > RFC 8174:
>>         > >
>>         > >    o  These words can be used as defined here, but using
>>         them is not
>>         > >       required.  Specifically, normative text does not
>>         require the use
>>         > >       of these key words.  They are used for clarity and
>>         consistency
>>         > >       when that is what's wanted, but a lot of normative
>>         text does not
>>         > >       use them and is still normative.
>>         > >
>>         > >
>>         > So what?
>>         > Existing YANG specifications use RFC 2119 terms.
>>         > This draft uses those terms, just with lower-case.
>>
>>         Actually, section 5.1 XPath Context in the revised datastore
>>         draft
>>         uses the same language as section 6.4.1 XPath Context in RFC
>>         7950.  In
>>         fact, the text in the draft is copied (and adjusted) from RFC
>>         7950.
>>
>>
>>         /martin
>>
>>
>
>