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

Andy Bierman <andy@yumaworks.com> Thu, 18 May 2017 16:35 UTC

Return-Path: <andy@yumaworks.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 3AEEC12420B for <netconf@ietfa.amsl.com>; Thu, 18 May 2017 09:35:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 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, URIBL_BLOCKED=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 4wfzJYcMSGmO for <netconf@ietfa.amsl.com>; Thu, 18 May 2017 09:35:15 -0700 (PDT)
Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (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 BCD3712949A for <netconf@ietf.org>; Thu, 18 May 2017 09:29:37 -0700 (PDT)
Received: by mail-wm0-x22a.google.com with SMTP id 70so52783439wmq.1 for <netconf@ietf.org>; Thu, 18 May 2017 09:29:37 -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=MCORifo80eZ2mrejptKKDMV1blNKO50I35We3yvYoF0=; b=AVlkT0739l7r2wJCdkMzkV8oQkR+jV6GUTkCmgJHXn5e5Fpzhx4mk6P1ua7v7z/AIk jfEl7kvhmeRN5bpWBlCMfh6nizjw6WM1etERje5HVcpLC+HlchbZZ6xrpnPYOCL1crm7 t6R/thiM0BbL0952raiVQD+FNj2lQwsuFMVaq3FEmj5pakOObWLR/Uqthqp5KnJPDvcp VAZBDDZModin6iNv4KfTuZK+5JkLeYKauyNjsjr8LRsNj4fhO4228Cwcz7tES8lVVZnG VZL4Pc3NA/HY2dZn+PE33YFHuTgpxicV0d+Gped4BTkLEWpv/xXou1w0FotfdvS57qfQ bb5Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=MCORifo80eZ2mrejptKKDMV1blNKO50I35We3yvYoF0=; b=SxYF8qQXCCaNQZYsmj81QJu1ogHPkpK6pVdVAl7tv/zdggUtOjC3LObTt/8a0j0Glq laLi//ghExfUUn/bBtV/tEbjRBVa6BxEQybKBYG8gkIBA1/90CU2+QOuYNSFJr7UD96j tdc4YVbmqfrsoklZ4YVR5jYoqUby8p7M6UCTkJwlqwvSCSUuiBLksqagr/8N2UfDYNIp FAL2c1xmOHRAfMs6iieuDJXXmcEiu1jJdTQ4IfOr89ASA2XI/AkNEX+5ZMWEsxp9r7iR iw6N9C05A7eK4aBppuBunB6QCJgsXG/xB6AJ5OyUBqCMe8wJBD804c1XfJqwwMzrWtlU 6Kdg==
X-Gm-Message-State: AODbwcCpRu03rTVOZOMI2v+zS8/KcadkUcvATY78UIX/qd7a3EyRgMSS 2BZU85NkeChwoZM04kgZqCzDVGPCd+0k
X-Received: by 10.28.138.73 with SMTP id m70mr13766146wmd.99.1495124976309; Thu, 18 May 2017 09:29:36 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.155.2 with HTTP; Thu, 18 May 2017 09:29:35 -0700 (PDT)
In-Reply-To: <644DA50AFA8C314EA9BDDAC83BD38A2E0DFAE8C1@SJCEML701-CHM.china.huawei.com>
References: <644DA50AFA8C314EA9BDDAC83BD38A2E0DFAE8C1@SJCEML701-CHM.china.huawei.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 18 May 2017 09:29:35 -0700
Message-ID: <CABCOCHSrZAPbF6VNF1R2-6+CPeQOi51U9KOcSXu_P0_5nbit2A@mail.gmail.com>
To: Alexander Clemm <alexander.clemm@huawei.com>
Cc: Netconf <netconf@ietf.org>
Content-Type: multipart/alternative; boundary="001a114449361bb07b054fcee940"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/rmKpDfvOFqHZUBfQ64qb1VmmkRI>
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 16:35:19 -0000

Hi,

I wonder why we really need the client to choose to subscribe to
"micro-events".
It makes sense to me for subscriptions to instance data using keys and
static leafs like if:type.
Subscribing to "foo=5" does not seem that useful for replicating state or
anything else.
YANG Push should not include RMON Alarms & Events type of functionality.

The trick to good standards writing is to support the use-cases in a way
that
does not introduce massive implementation complexity for functionality
outside those use-cases.

So I would pick (3) and add a warning about avoiding filters for volatile
data nodes
such as counters.


Andy


On Wed, May 17, 2017 at 2:29 PM, 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.  (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
>
>