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

"Eric Voit (evoit)" <evoit@cisco.com> Thu, 25 May 2017 00: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 C05451200C5 for <netconf@ietfa.amsl.com>; Wed, 24 May 2017 17:40:17 -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, HTML_MESSAGE=0.001, 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, 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 Ru6LJu0T587q for <netconf@ietfa.amsl.com>; Wed, 24 May 2017 17:40:13 -0700 (PDT)
Received: from rcdn-iport-8.cisco.com (rcdn-iport-8.cisco.com [173.37.86.79]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 33E5C129427 for <netconf@ietf.org>; Wed, 24 May 2017 17:40:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=88242; q=dns/txt; s=iport; t=1495672813; x=1496882413; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=JeUKjpKq6+jr7+tcBXaW+RjPk6shScGCaezLlyV9R5w=; b=hdwW3/zC4wGui4wL/1eibC3Dc7dPeAyypmzh5CZ44VuJzmbwGLtd+Oz4 GpiYGYRLUJEk0zR3WWh8C+wT1oz1tLYVOsftbmVCo1/lv+9jJn3/FFiEn CCAwOA/r7dW8kMIe7Y5OS9o2th43DooWJ74SGyPcpYi4MIdkCyvwFk+jA 0=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0BdAQCDJyZZ/5xdJa1TAQkZAQEBAQEBAQEBAQEHAQEBAQGCbjwrYjEBWgeDaIoYkVyVd4IMAyEBCoUuSgIaglk/GAECAQEBAQEBAWsohRgBAQEBAgEBARgBCApBCwUHBAIBCBEEAQEBDAETAQYDAgICJQsUCQgCBAENBQiKFggOri2CJotSAQEBAQEBAQEBAQEBAQEBAQEBAQEBHYZfhEY0hDQIAREtH4JcgmAFlnmHKgGTHoIPhTyKNYkBi0wBHzg/S3EVRoR3HIFjdog1gQ0BAQE
X-IronPort-AV: E=Sophos;i="5.38,389,1491264000"; d="scan'208,217";a="247682466"
Received: from rcdn-core-5.cisco.com ([173.37.93.156]) by rcdn-iport-8.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 May 2017 00:40:10 +0000
Received: from XCH-RTP-013.cisco.com (xch-rtp-013.cisco.com [64.101.220.153]) by rcdn-core-5.cisco.com (8.14.5/8.14.5) with ESMTP id v4P0eAEu001920 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 25 May 2017 00:40:10 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; Wed, 24 May 2017 20:40:10 -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; Wed, 24 May 2017 20:40:09 -0400
From: "Eric Voit (evoit)" <evoit@cisco.com>
To: Andy Bierman <andy@yumaworks.com>, Alexander Clemm <alexander.clemm@huawei.com>
CC: Martin Bjorklund <mbj@tail-f.com>, "netconf@ietf.org" <netconf@ietf.org>
Thread-Topic: [Netconf] In an update, when is a delete a delete?
Thread-Index: AdLPVDqN5ppCqKOrQVCrK5qvBNQM2AAiVy4AANCNThAADN/oAAAg/5SAAA4QmwAAAGPesAAcMVmAAB8SZAAAAQmwgAAGxH+g
Date: Thu, 25 May 2017 00:40:09 +0000
Message-ID: <47461c951d934b399c6ae58c3bb731b3@XCH-RTP-013.cisco.com>
References: <adbaf2b697434bf4b44a1910af6e677c@XCH-RTP-013.cisco.com> <20170523.195720.334918098247517091.mbj@tail-f.com> <98ef4c64e750467ca9a35b66b359dc8d@XCH-RTP-013.cisco.com> <20170524.093545.1590430256406536052.mbj@tail-f.com> <644DA50AFA8C314EA9BDDAC83BD38A2E0DFB052A@SJCEML701-CHM.china.huawei.com> <CABCOCHQhje=Eat-mHOjZi0Dk4yek0+meXyXMv2m0xVG-wH2WxA@mail.gmail.com>
In-Reply-To: <CABCOCHQhje=Eat-mHOjZi0Dk4yek0+meXyXMv2m0xVG-wH2WxA@mail.gmail.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.118.56.228]
Content-Type: multipart/alternative; boundary="_000_47461c951d934b399c6ae58c3bb731b3XCHRTP013ciscocom_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/5jr10Kw36JXHt6hihNbXw8xTvSk>
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, 25 May 2017 00:40:18 -0000

Hi Andy, Alex, & Martin,

From: Andy Bierman, May 24, 2017 6:55 PM

Hi,

Let's compare to what 5277 already has defined.
I agree with Martin that new functionality should be defined with
new terms and new specs.

First, RFC 5277 allows the event-type to be filtered.
This is basic functionality every server should support.
(e.g., select netconf-config-change, ignore netconf-session-start)
This event type test is not separate from the event content filter.
Both are boolean tests.

<eric> Agree that event tests of both boolean and selection are needed (like RFC-5277), and that both may allow events to pass.  I have a proposal for some text to cover this below (see green).

Notification filters for YANG Push need to select the event-types used,
such as push-change-update.  It would be nice if this was handled automatically,
instead of listing them in the <establish-subscription>.

<evoit> Either you provide a stream or a datastore as a target for the filter.  Even then, a filter-type remains needed to decode the syntax of the filter anyxml.

Traditional notification filters would require that the structure of an event such
as push-change-update be known to the developer in full detail.
IMO this is a bad approach.  A new filter type that selects data nodes
would be much better.  The current proposal is easy to under-specify
and (IMO) nearly impossible for operators to use.

<evoit> Agree that a subtree filter for events is needed.

Andy



On Wed, May 24, 2017 at 3:25 PM, Alexander Clemm <alexander.clemm@huawei.com<mailto:alexander.clemm@huawei.com>> wrote:
Let me briefly summarize where I think we are. The thread has clearly moved on from the initial issue of how to distinguish between causes for updates to no longer include a given data node (because it was deleted, or because it changed its value to no longer match a filter) to other issues.

For those other issues, I think there are in fact two separate items that we are trying to discuss at the same time, which are really orthogonal to one another:

- The first item concerns the concept of a "filter" vs a "selector".  A filter is what gets specified for any subscription to notifications, which defines which notifications a subscriber wants to receive.  The filter is applied to the notification as a whole, i.e. either the notification is delivered or it is not.  It does not apply to subsets of contents within the notification.  A selector, on the other hand, is used to specify updates of which data nodes to include in a YANG-push subscription.  The same update notification could include updates of several data nodes, hence a filter applied to the notification as a whole would be inappropriate here - the semantics is slightly different: as a subscriber, "of  which data nodes would you like to receive updates", not "which notifications would you like to receive".

<evoit> fully agree.

Filters and selectors can be specified using the same syntax.  We are faced with a choice between specifying a single construct as part of a subscription, which is treated as a filter (in case of a "regular" subscription for notification updates) or as a selector (in case of a subscription to datastore updates) , or having separate objects, i.e. adding a separate "selector" construct for YANG-push.  Using a single object amounts to overloading.  It is more compact but with arguably a more complex semantics.  Using separate object results in a model that is more verbose, but has arguably simpler semantics.

<evoit> I don’t think the semantics are simpler.  In all cases, you already need a filter-type to be able to interpret the filter syntax (e.g., xpath vs. subtree). With this as a given, the current draft’s overloading does have a few benefits:

·        Prohibits population of both an event and a selection filter – there is only filter object.

·        Simple: 1:1 mapping from RPC filter to the single yang data node filter object.

·        It turns out that moving to filter identities from a strict explicit-case based hierarchy simplified the model groupings.  This removed a full page from the YANG model from the previous version.  This is goodness.

·        Nicely extensible via identity hierarchies (rather than also adding a parallel case structure which needs independent treatment).

I can live with it if people want to add an explicit subtyping based on ‘selection’ and ‘test’.  But it seems to add complexity and rigidity to me.

- The second item concerns the issue of whether the filter/selector construct has a dynamic type or a static type.  This is where the issue of identity vs case statement etc comes in.  In case of a dynamic type, we use two objects:  One object of a generic type (anydata) holds the filter/selector construct itself, the second object specifies how to interpret it, i.e. which type it is.  (In case of "overloading, we can also make explicit the distinction whether it is a filter or a selector).  That second object is an identityref, referencing one of the identities that designates the filter/selector type.  In case of a static type, we use a case statement (to distinguish which specific type it is).

<evoit> There are so many variations of filter types, having two independent, intersecting constructs doesn’t seem beneficial to me.


The argument that Eric is making is that we should have a single overloaded object that can serve as a filter or a selector depending on the context and whether it is used in a notification subscription or a YANG-push subscription, and that we use a dynamic type including an identityref that indicates whether the object serves as a selector or a filter.  From my perspective, I feel that not overloading may be conceptually a bit "cleaner", but at the end of the day I am fine either way.  And I am not entirely sure, Martin, what you are proposing.  Either way, we should document the issue and our choice clearly.

<eric> Yes.  If we do go with the overloading, here is how I would construct it…:

(a) In subscribed-notifications, update the identity filters so the following are covered:

Identity filter;
    Identity test-filter {base filter;}
       Identity xpath-test-filter {base  test-filter;}
       Identity  subtree-test-filter {base test-filter;}

(b) In YANG Push, update the identity filters so the following are covered:

Identity node-selection-criteria {base sn:filter;}
    Identity subtree-node-selection-criteria {base node-selection-criteria;}
    Identity xpath-node-selection-criteria {base node-selection-criteria;}

(c) in subscribed-notifications, improve the definition of  “anyxml filter” to
"Evaluation criteria encoded in a syntax of a filter-type.  If the filter is applied against an event stream and there is a non-empty or positive result, the event is passed along.  If the filter is applied against a datastore for periodic extracts, the resulting node-set result is passed along. If the filter is applied against a datastore looking for changes, deltas from the last update in the form of a patch result are passed along."


--- Alex


-----Original Message-----
From: Martin Bjorklund [mailto:mbj@tail-f.com<mailto:mbj@tail-f.com>]
Sent: Wednesday, May 24, 2017 12:36 AM
To: evoit@cisco.com<mailto:evoit@cisco.com>
Cc: Alexander Clemm <alexander.clemm@huawei.com<mailto:alexander.clemm@huawei.com>>; netconf@ietf.org<mailto:netconf@ietf.org>
Subject: Re: [Netconf] In an update, when is a delete a delete?

"Eric Voit (evoit)" <evoit@cisco.com<mailto:evoit@cisco.com>> wrote:
> > From: Martin Bjorklund, May 23, 2017 1:57 PM
> >
> > "Eric Voit (evoit)" <evoit@cisco.com<mailto:evoit@cisco.com>> wrote:
> > > > Martin Bjorklund, May 22, 2017 3:30 PM
> > > >
> > > > Alexander Clemm <alexander.clemm@huawei.com<mailto:alexander.clemm@huawei.com>> wrote:
> > > > > Hi Martin,
> > > > >
> > > > > Almost overlooked your question below.  What is meant by the
> > > > > filter is specified in section 3.5 of the YANG-Push document.
> > > > >
> > > > > "Only a single filter can be applied to a subscription at a time.
> > > > > The following filter types are included in the yang-push data model:
> > > > > [subtree] [xpath]"
> > > >
> > > > Actually, only "subtree" is defined in yang-push, "xpath" is
> > > > defined in subscribed-notifications.
> > >
> > > At the top of yang-push page 7, xpath selection is described.  Is
> > > there something you feel missing?
> >
> > Yes.  First of all, the YANG module defines an identity called
> > "xpath", based on "sn:filter".  So this filter has nothing to do
> > with selecting nodes in a datastore; this filter is used to match
> > against a generated notification record.
>
> To address this we could split the xpath identity into two types:
> "xpath-selection" and "xpath-boolean".  These would have different
> definitions, but both reference
> http://www.w3.org/TR/1999/REC-xpath-19991116 .  The difference is that
> one results in a xpath node-set expression, and the other an xpath
> Boolean expression.  Make sense?

Not really.  In subscribed-notifications you have defined a generic filter mechanism, that is used to block/allow the sending of generated notifications to a subscriber.  This filter mechanism cannot be used to select nodes to subscribe to for changes in a datastore.  You need to define a separate mechansim for that in yang-push.  (Maybe not even call it "filter", but perhaps "selection").

<evoit> see above.  Selection is now part of the filter identify hierarchy.

Some comments on subscribed-notifications: This generic mechanism allows various filter syntaxes.  This generic mechanism needs to explain what is required by a filter syntax definition (an identity, evaluation rules).  In section 2.2 the document says that two filter syntaxes are supported, but only one is defined (xpath).  It needs to explain that a filter is supposed to return true or false (this part RFC 5277 got right, see section 3.6).  Also, the current module has the filter in an anyxml node; it is not clear how an XPath expression is encoded in anyxml.

I am hoping to leave xpath expression encoding up to the vendor.  I suspect that attempting to come up with some cross-vendor parseable encoding mechanism is unlikely to make the xpath filter definitions themselves cross-vendor anyway.  We should wait for someone who wants to pick up general filtering as a topic rather than addressing this piecemeal.


> > Second, the XPath filter is sorely underspecified.  The XPath
> > context is not described,
>
> I understand and agree on your comment about the context.  The intent
> here is to provide equivalent capabilities of a GET.

I understand that.

> As it would be a
> huge undertaking to try to consolidate an industry-wide view of the
> minimal xpath syntax and capabilities in networking

Ehh... yes?  What does this have to do with specifiying the XPath context?

> , I am hoping this
> doesn't fall under the umbrella of YANG subscription.  I would be glad
> to support someone who wishes to take this up though.
>
> > the expected result data type is not defined, and it is not
> > described how the result is supposed to be used.
>
> As for the result, the anydata output should be provided to the
> subscriber (with appropriate security applied).

I was referring to the output of the filter evaluation.

> They can determine
> how to use it.  The preferred embodiment would be to maintain a local
> extract of the Publisher's datastore (as defined by the filter).
>
> > > >  [Side note - I think this is wrong, subscribed-notifications
> > > > should also define "subtree".]
> > > >
> > > > But these filters are used by the server to decide if a certain
> > > > notification that has been generated will be sent to the client
> > > > or not.
> > >
> > > Yes, the filters in subscribed-notification are supposed to give a
> > > boolean indication as to whether a specific event should traverse
> > > the filter in its entirety. RFC6241 section 6 subtree filters are
> > > written to provide a subset of content.  I suppose it would be
> > > possible to define an event-based subtree-filter-type where a
> > > non-null result of the subtree filter means that a particular
> > > event should traverse that filter.  Is this what you are suggesting?
> >
> > Yes.  Note that this is already provided by RFC 5277, and I have
> > always assumed that this new work will provide at least the same
> > functions as RFC
> > 5277 (and more).  (But note that the XPath filter is underspecified
> > also in RFC
> > 5277...)
>
> I also want to make sure that a non-null result from a filter allows
> the event to pass.  I suspect that an xpath Boolean filter could be
> designed to do this, but I will tweak the subscribed-notifications
> text so that unnecessary filtering expression complexity is not
> artificially required.

Please make sure you understand how subtree filters and XPath filters work in RFC 5277.  There is nothing wrong with that functionality.

<evoit> 100% agree.  I will make sure the text covers this.

Eric


> > > > If you want to define filters to specifify which nodes to
> > > > subscribe to, I think you need to define new filters, not try to
> > > > reuese these notification filters.
> > >
> > > Filtering syntax is hard, so we have been trying to adopt whatever
> > > is available for GET.  This way we don't have to educate users on
> > > a new universe of what is possible.  I fully expect that lots of
> > > learnings are going to come in the industry here over time, and
> > > this will be revisited in the future.
> >
> > ?
> >
> > I am not proposing any new filter syntax.  I am saying that the
> > current filter nodes as defined in subscribed-notification cannot be
> > used to select nodes to subscribe to for changes.
>
> Understand.  Hopefully with the "xpath-selection" change proposed
> above, this will be covered.

No, see above.


/martin



>
> Eric
>
> > > > As for your question, I think such a filter should be defined to
> > > > return a node- set to which the client subscribe to changes.  If
> > > > any node (or subnode
> > > > to) in
> > > > this node-set changes, the notif will be sent.  Then the
> > > > question about value comparision is not relevant anymore.
> > >
> > > Excellent, on-change should only send an update if the results of
> > > the subscription filter have changed since the previous push.  It
> > > is quite possible that an object has been created and then deleted
> > > since the last push.
> >
> > I don't understand what you're trying to say with these sentences
> > (but since the first word was "Excellent" maybe it's ok ;)
> >
> >
> > /martin
> >
> >
> > > Representing this was the genesis of Alex's question.
> > >
> > > Eric
> > >
> > > > /martin
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > >
> > > > > In effect, the filter specifies which data nodes to consider
> > > > > when sending updates.
> > > > >
> > > > > ---Alex
> > > > >
> > > > >
> > > > > -----Original Message-----
> > > > > From: Martin Bjorklund [mailto:mbj@tail-f.com<mailto:mbj@tail-f.com>]
> > > > > Sent: Wednesday, May 17, 2017 11:50 PM
> > > > > To: Alexander Clemm <alexander.clemm@huawei.com<mailto:alexander.clemm@huawei.com>>
> > > > > Cc: netconf@ietf.org<mailto:netconf@ietf.org>
> > > > > Subject: Re: [Netconf] In an update, when is a delete a delete?
> > > > >
> > > > > Hi,
> > > > >
> > > > > Alexander Clemm <alexander.clemm@huawei.com<mailto: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.
> > > > >
> > > > > But it seems you are referring to some other filter which
> > > > > would be used to select a node set for which changes are reported?
> > > > >
> > > > > 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<mailto:Netconf@ietf.org>
> > > > https://www.ietf.org/mailman/listinfo/netconf
> > >
>

_______________________________________________
Netconf mailing list
Netconf@ietf.org<mailto:Netconf@ietf.org>
https://www.ietf.org/mailman/listinfo/netconf