Re: [Netconf] In an update, when is a delete a delete?

"Eric Voit (evoit)" <evoit@cisco.com> Thu, 18 May 2017 20:40 UTC

Return-Path: <evoit@cisco.com>
X-Original-To: netconf@ietfa.amsl.com
Delivered-To: netconf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 04E9E129ACC for <netconf@ietfa.amsl.com>; Thu, 18 May 2017 13:40:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.522
X-Spam-Level:
X-Spam-Status: No, score=-14.522 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 FnssCx5tpKDL for <netconf@ietfa.amsl.com>; Thu, 18 May 2017 13:40:03 -0700 (PDT)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EFCA3129445 for <netconf@ietf.org>; Thu, 18 May 2017 13:33:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=5429; q=dns/txt; s=iport; t=1495139594; x=1496349194; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=snMwtVML/gaVohDWDp2SZAkYDn8ZNTJpO1jCNRKrihI=; b=Jb3tUj9cZr3Qhmg8TYrzYRc6h96LRtvbv6UdEjyArDHzALsMgoyc9jY9 Y5tRuR+uP32z0gaMJfBTzaBahbQk3qL5cDextgshjMKfV72OlhKG0uUIa 1uJoWD2ErqwfJbumsGjtDkGIfQT1sWfJZ0QsqPrj3vrJnvmD4372Nituu 4=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AmAQCnBB5Z/49dJa1cGQEBAQEBAQEBAQEBBwEBAQEBg1ViMloHjX6RbpV2gg8hC4UuSgKFcD8YAQIBAQEBAQEBayiFGAEBAQECAQEBODQLBQsCAQgOBwMMAREQJwslAQEEAQ0FCIoTCA6xMosZAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAWGX4RFNIQzhiIFnhMBkxGCDY9qiQGLRAEfOIEKcBVGhHccgWN2hyWBDQEBAQ
X-IronPort-AV: E=Sophos;i="5.38,360,1491264000"; d="scan'208";a="426696728"
Received: from rcdn-core-7.cisco.com ([173.37.93.143]) by alln-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 May 2017 20:33:02 +0000
Received: from XCH-RTP-013.cisco.com (xch-rtp-013.cisco.com [64.101.220.153]) by rcdn-core-7.cisco.com (8.14.5/8.14.5) with ESMTP id v4IKX1vb011443 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 18 May 2017 20:33:02 GMT
Received: from xch-rtp-013.cisco.com (64.101.220.153) by XCH-RTP-013.cisco.com (64.101.220.153) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Thu, 18 May 2017 16:33:01 -0400
Received: from xch-rtp-013.cisco.com ([64.101.220.153]) by XCH-RTP-013.cisco.com ([64.101.220.153]) with mapi id 15.00.1210.000; Thu, 18 May 2017 16:33:01 -0400
From: "Eric Voit (evoit)" <evoit@cisco.com>
To: Martin Bjorklund <mbj@tail-f.com>, "alexander.clemm@huawei.com" <alexander.clemm@huawei.com>
CC: "netconf@ietf.org" <netconf@ietf.org>
Thread-Topic: [Netconf] In an update, when is a delete a delete?
Thread-Index: AdLPVDqN5ppCqKOrQVCrK5qvBNQM2AAcDdsAABPNCiA=
Date: Thu, 18 May 2017 20:33:01 +0000
Message-ID: <bd24cfd00810475093cab0e07602127e@XCH-RTP-013.cisco.com>
References: <644DA50AFA8C314EA9BDDAC83BD38A2E0DFAE8C1@SJCEML701-CHM.china.huawei.com> <20170518.084938.2164174821851630928.mbj@tail-f.com>
In-Reply-To: <20170518.084938.2164174821851630928.mbj@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.82.247.169]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/nuc2ohuxi_IfgDuqXS-ZBTk-A3I>
Subject: Re: [Netconf] In an update, when is a delete a delete?
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Network Configuration WG mailing list <netconf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netconf>, <mailto:netconf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf/>
List-Post: <mailto:netconf@ietf.org>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netconf>, <mailto:netconf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 May 2017 20:40:06 -0000

> From: Martin Bjorklund, May 18, 2017 2:50 AM
> 
> Hi,
> 
> Alexander Clemm <alexander.clemm@huawei.com> wrote:
> > Hello all,
> >
> > In updating the YANG-Push document (draft-ietf-netconf-yang-push), we
> > have come across one issue that we wanted to raise with the working
> > group.
> >
> > As part of an on-change subscription, update records reflect the type
> > of change (e.g. whether the value of an object has changed, or whether
> > an object was created or deleted); a subscription allows also to
> > specify whether interested only in specific types of changes (for
> > example, only creates and deleted but no value changes).
> >
> > At the same time, a subscription filter specifies which objects to
> > include as part of a subscription and which not.
> 
> Hmm, which filter are you talking about?  The only XPath filter I find in the
> current set of documents is the "ietf-subscribed-notifications:xpath" filter
> type (which btw is sorely underspecified).  Section 2.2 of
> draft-ietf-netconf-subscribed-notifications-02 says:
> 
>    Events which evaluate to "true" as a
>    result of the evaluation by the filter must traverse the filter in
>    their entirety.
> 
> It's not clear what this means, but my guess is that this is supposed to work
> like the old RFC 5277 filters, where the filter expression is evaluated on the
> notification contents, and if the expression returns "true" (for XPath filters this
> means converting the results to a boolean), then the notification is sent,
> otherwise not.

This is the case for events.  For these, the filter should result in a yes/no for any event in a stream.
 
> But it seems you are referring to some other filter which would be used to
> select a node set for which changes are reported?

For datastores, I suspect the RFC6241 selection filter should be the dominant one.   But it is conceivable that an XPATH selection filter (i.e., not a boolean result) could be provided. 

Eric

> I would like to understand which filter mechanism you mean before having an
> opinion in this matter.
> 
> 
> /martin
> 
> 
> 
> 
> > (Really, it is not
> > so much of a "filter" on a stream that is generated independently of
> > the filter, than it is a policy of which objects to include as part of
> > subscribed update records.)  However, a subscription filter (such as
> > XPath) can be used to also specify a value filter, which will include
> > or exclude objects based on their current value. This makes it
> > possible to e.g. subscribe to an object "foo" but only if its value is
> > 5.
> >
> > Now, this means that the same object could be included in one update,
> > but excluded in another update, due to its value no longer meeting the
> > filter criteria.  For example, if foo's value changes from 5 to 3 in
> > one cycle, a periodic subscription will no longer include foo in its
> > next update.  The question now concerns how to properly handle this in
> > the case of an on-change subscription.
> >
> > One possibility concerns reporting the fact that "foo" no longer meets
> > the subscription criteria and is no longer included in the update
> > record as a "delete" event.  If foo's value again becomes "5" at a
> > later point in time, that would be reported as a "create" event.  If
> > foo's value changes again from 5 at a later point in time and then
> > changes back to 3 before the time of the update (perhaps because the
> > value changed during the dampening interval), it would be reported as
> > another "delete" event (without ever reporting a create event).  On
> > the other hand, if foo's value changed from 3 to 6 and back again,
> > nothing would be reported because it did not meet the filter criteria
> > at any point in time.
> >
> > >From the perspective of the receiver this may make sense if it is
> > >synching its copy of the state.  However, from the perspective of the
> > >publisher, the object was never created or deleted - only its value
> > >changed, and the case when the object was truly created or deleted
> > >can no longer be distinguished from the case when its value changed.
> > >A "create" simply means "an object now meets a filter criteria, that
> > >was not reported in the previous cycle" (which does not mean that the
> > >object was actually created - it may have been created, or it may
> > >have simply undergone a value change).
> >
> > An alternative (let's call it alternative 2) is therefore to make a
> > distinction between whether an object was created or deleted, or
> > whether its value fell in or out of a filter range.  This appears
> > semantically cleaner.  However, it will require modifying the encoding
> > to allow for distinction between those cases (currently, just plain
> > patch encoding is used).
> >
> > A third alternative is to let filters select only data nodes to
> > subscribe to, and separate out the value filter (or disallow it as a
> > feature altogether).  This alternative has the drawback of being less
> > conceptually powerful, even if it may be easier to implement.
> >
> > Thoughts?  Any preferences between 1, 2, and 3?
> > --- Alex
> >
> 
> _______________________________________________
> Netconf mailing list
> Netconf@ietf.org
> https://www.ietf.org/mailman/listinfo/netconf