Re: [Netconf] tRE: Martin's thoughts on subscribed-notifications

Martin Bjorklund <mbj@tail-f.com> Thu, 16 November 2017 10:11 UTC

Return-Path: <mbj@tail-f.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 4C2F81201F2 for <netconf@ietfa.amsl.com>; Thu, 16 Nov 2017 02:11:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=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 pPdn0ge6pEbk for <netconf@ietfa.amsl.com>; Thu, 16 Nov 2017 02:11:27 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 42CDE1200CF for <netconf@ietf.org>; Thu, 16 Nov 2017 02:11:27 -0800 (PST)
Received: from localhost (unknown [173.38.220.60]) by mail.tail-f.com (Postfix) with ESMTPSA id 9592E1AE039A; Thu, 16 Nov 2017 11:11:25 +0100 (CET)
Date: Thu, 16 Nov 2017 11:10:02 +0100
Message-Id: <20171116.111002.1638797974351963946.mbj@tail-f.com>
To: evoit@cisco.com
Cc: netconf@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <821e452591614d80a7405a0318e3d66a@XCH-RTP-013.cisco.com>
References: <821e452591614d80a7405a0318e3d66a@XCH-RTP-013.cisco.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/adYkoxI7FgfxN76gJFQX9DlBCGo>
Subject: Re: [Netconf] tRE: Martin's thoughts on subscribed-notifications
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, 16 Nov 2017 10:11:31 -0000

Hi,

"Eric Voit (evoit)" <evoit@cisco.com> wrote:
> Hi Martin,
> 
> Thanks for the suggestions.   In-line...
> 
> > From: Martin Bjorklund, November 15, 2017 2:33 PM
> > 
> > Hi,
> > 
> > I have reviewed draft-ietf-netconf-subscribed-notifications-07,
> > specifically to ensure that my earlier comments are addressed.  Here are my
> > new comments:
> > 
> > 
> > 
> > o  General
> > 
> >   The document uses the term "RPC" to refer to the operations that
> >   affect dynamic subscriptions.  I think that this term is not quite
> >   correct.  For example the text says:
> > 
> >       a configured subscription cannot be modified or deleted using
> >       RPC.
> > 
> >   But this is not correct, I can delete a configured subscription with
> >   the <edit-config> rpc.
> 
> Will append the clarification:
> "using RPCs from the document."
> 
> > o  Section 1.2
> > 
> >   What is "RPC subscription state signaling messages"?
> 
> Will change "signaling messages" to  "Notifications".   In this case the notifications act as signaling messages.
> 
> > o  Section 2.2
> > 
> >      The subsets of these filtering syntaxes supported are
> >      left to each implementation.
> > 
> >    Juergen has already pointed out that this is not good design - how
> >    will the client know which subset of subtree filtering a certain
> >    device supports?   I think that if the server doesn't support
> >    subtree filtering as defined, then it should not advertise the
> >    "subtree" feature.  It can always advertise another feature.
> 
> Agree,  that was always the intent.  The words just need to match to that.  How about:
> " If [RFC6241] filtering is supported, the full set of Section 6 must be enabled.  If XPATH filtering is supported, the subset of XPATH functionality is left to the implementation "

The same argument applies to XPath.  How would this be interoperable
otherwise?  I suggest you simply remove the sentence

      The subsets of these filtering syntaxes supported are
      left to each implementation.

> > o  Section 2.3
> > 
> >   The state diagram shows an arrow "modify" from "suspended" to
> >   "active".  Is this really correct?  Will a suspended subscription be
> >   resumed if it is modified?  
> 
> Yes. 
> The subscription could immediately be suspended, but this reduces the available knobs.

How does it reduce the available knobs?  I was thinking that if a
modify-subscription rpc was sent to a suspended subscription, it
wouldn't by itself change the suspension status; if the server thinks
it can be resumed it will resume.

With the current solution, the server must send three notifications if
a suspended subscription is modified, and it is still suspended:

  subscription-modified
  subscription-resumed
  subscription-suspended


> > If so, this is not correct:
> >     o  Suspend and resume state changes are driven by internal process
> >        and prioritization.  There are no external controls over suspend
> >        and resume.
> 
> How about: "there are no direct controls over suspend and resume other than modifying a subscription."  
> 
> Right before Figure 2, I will also add the sentence to clarify:
> Modification of a configured subscription will place any suspended receivers into the connecting receiver state.
> 
> > o  Section 3
> > 
> >   The data model is not yet converted to NMDA single tree (and there
> >   is no issue that tracks this).
> 
> We have an umbrella issue for this:
> YP#11: Shift to NMDA compliant structure
> 
> We authors are willing to shift to NMDA constructs (allowing side-by-side comparison) once all other issues are closed and a firm WGLC start date is set for yang push. 

The sooner you get it in the better, since it will speed up
everything.

> > o  Section 4.1.1
> > 
> >      Not all streams will support replay.  Those that do MUST include
> >      they do via the "replay-support" object.
> > 
> >   The second sentence still looks odd.  I propose:
> > 
> >     If a stream supports replay, the "replay-support" leaf is present
> >     in the "/streams/stream" list entry for the stream.
> 
> Will make this change
> 
> > o  Section 4.4
> > 
> >      An operator may find subscription
> >      identifiers which may be used with "kill-subscription" by searching
> >      for the ip address of a receiver within the yang tree.
> > 
> >   s/within the yang tree/in the "subscription" list"/
> > 
> >   or something along those lines.
> 
> Will make this change
> 
> > o  Section 5
> > 
> >      o  One or more receiver IP addresses (and corresponding ports)
> >         intended as the destination for notification messages for each
> >         subscription.  In addition, the transport for each destination MAY
> >         be defined.
> > 
> >    Since the transport is mandatory in the data model, the last
> >    sentence should be removed.
> 
> Will make this change
> 
> > o  Section 5.1
> > 
> >   The text in -07 is an improvement over -05.  But there are still
> >   some things that needs to be specified.
> > 
> >   The text needs to discuss what's supposed to happen if a transport
> >   session goes down. Will the server re-establish the session?  
> 
> As there are transport specific behaviors.  For NETCONF, see Section 5.2 of draft-ietf-netconf-netconf-event-notifications.

Ok, makes sense.  I suggest you add a sentence along the lines of:

  How transport failures are dealt with is out of scope for this
  document.  It is expected that transport-specific documents describe
  how failures are handled.

> >  Will it buffer events during this time?  
> 
> Events are buffered, if available.  If events are lost (rather than just delayed) due to the loss of transport connectivity, a new subscription-started must be sent.  This indicates the discontinuity to the receiver.

I assume this should also be covered by the transport specific
documents.

> Note I will add these two sentences directly above to section 5.1 to clear up any confusion. 
> 
> On a side note: I will tweak the text of " 8.4. subscription-suspended" to 
> " This indicates that a publisher has suspended the sending of event records to a receiver, and indicates the possible loss of events."
> And delete the sentence from both 8.4 and 8.5 saying...
> "Suspensions are notified to the subscriber..."
> .
> >  What happens if the call home
> >   setup due to authentication issues, will it still try to
> >   re-establish?
> 
> For NETCONF, see Section 5.2 of draft-ietf-netconf-netconf-event-notifications.
>  
> >   The new text says:
> > 
> >      Note that is possible to configure replay on a configured
> >      subscription.  This is to allows a configured subscription to
> >      exist on a system so that event records generated during boot can
> >      be buffered and pushed as soon as the transport session is
> >      established.
> > 
> >   I assume this means that the reciever must be prepared to receive
> >   the same events multiple times?  (if the server reboots before the
> >   replay buffer has been overwritten)
> 
> No, boot time is considered.   The proper operation is documented in the YANG model..
> 
>   notification subscription-started {
>     uses subscription-policy {
>       refine "target/stream/replay-start-time"
>            "Indicates the time that a replay using for the streaming of
>            buffered event records.  This will be populated with the most
>            recent of the following: replay-log-creation-time,
>            replay-log-aged-time, replay-start-time, or the most recent
>            publisher boot time.";

Ok.

> > o  Section 9.2
> > 
> >   s/yang/YANG/
> 
> Will fix
> 
> >   Also, the text says:
> > 
> >     In addition support for optional features: encode-xml,
> >     encode-json, configured, and replay MUST also be indicated if
> >     supported.
> > 
> >   I think you should remove this sentence; it is redundant.  If you
> >   decide to keep it, write:
> > 
> > 
> >     In addition support for optional features: "encode-xml",
> >     "encode-json", "configured", "replay", "xpath", and "subtree" MUST
> >     also be indicated if supported.
> 
> Will do this one.  
> 
> >   BTW, why did you rename "configured-subscriptions" to "configured"?
> >   "configured" looks a bit short.
> 
> Due to the YANG tree.   The longer feature name causes make a significant number of the lines exceed the character limit for a row.   And things become very difficult to read.

I think we should pick descriptive names that make sense, and not
names that make the tree diagram or whatever look nice.  I suggest you
keep the original name.

> > o  10 - extension
> > 
> >      extension subscription-state-notif {
> > 
> >   I think you should spell out "notification"; i.e., use
> >   subscription-state-notification.
> > 
> >   (You replied "will do" to this comment in my previous review, so I
> >   suspect you simply forgot this one)
> 
> Yes.  This time I really will do :-)
> 
> > o  10 - filter-spec
> > 
> >   I think both the subtree and XPath filters are not correctly
> >   defined.  I provided text about the XPath filter, but you didn't
> >   include it, so here it is again, updated with your text about
> >   events.
> 
> 
> Thanks for keeping on about this.  The definitions you provide are an upgrade, and I will include.
>  
> >       anydata subtree-filter {
> >         description
> > 
> > 
> >   OLD:
> > 
> >           "Event stream evaluation criteria encoded in a syntax of a
> >            supported type of an RFC 6241, Section 6 filter.  The subtree
> >            filter is applied to the representation of individual,
> >            delineated event records as contained within the event
> >            stream.  For example, if the notification message contains an
> >            instance of a notification defined in YANG, then the top-
> >            level element is the name of the YANG notification.  If the
> >            stream filter matches an event record from the stream, the
> >            event record should be included in a notification message
> >            to the receiver(s).";
> >       }
> > 
> >   NEW:
> > 
> >           "Event stream evaluation criteria encoded in the syntax of
> >            a subtree filter as defined in RFC 6241, Section 6.
> > 
> >            The subtree filter is applied to the representation of
> >            individual, delineated event records as contained within
> >            the event stream.  For example, if the notification message
> >            contains an instance of a notification defined in YANG,
> >            then the top-level element is the name of the YANG
> >            notification.
> > 
> >            If the subtree filter returns a non-empty node set, the
> >            filter matches the event record, and the it is included in
> >            the notification message sent to the receivers.";
> > 
> >         reference "RFC 6241, Section 6.";
> >       }
> > 
> >   and:
> > 
> >       leaf xpath-filter {
> >         type yang:xpath1.0;
> >         description
> > 
> >   OLD:
> > 
> >           "Event stream evaluation criteria encoded in a syntax of xpath
> >            1.0 and applied against an event stream. The result of
> >            applying XPath expression is converted to a boolean value
> >            using the standard XPath 1.0 rules.  If the boolean value is
> >            'true', the stream filter matches an event record within the
> >            stream, and the notification message should be sent to the
> >            receiver(s).";
> > 
> >   NEW:
> > 
> >           "Event stream evaluation criteria encoded in the syntax of
> >            an XPath 1.0 expression.
> > 
> >            The XPath expression is evaluated on the representation of
> >            individual, delineated event records as contained within
> >            the event stream.  For example, if the notification message
> >            contains an instance of a notification defined in YANG,
> >            then the top-level element is the name of the YANG
> >            notification, and the root node has this top-level element
> >            as the only child.
> > 
> >            The result of the XPath expression is converted to a
> >            boolean value using the standard XPath 1.0 rules.  If the
> >            boolean value is 'true', the filter matches the the event
> >            record, and the it is included in the notification message
> >            sent to the receivers.
> > 
> >            The expression is evaluated in the following XPath context:
> > 
> >              o  The set of namespace declarations are those in scope on
> >                 the 'xpath-filter' leaf element where th
> > 
> >              o  The set of variable bindings is empty.
> > 
> >              o  The function library is the core function library, and
> >                 the XPath functions defined in section 10 in RFC 7950.
> > 
> >              o  The context node is the root node.
> > 
> >         reference
> >           "http://www.w3.org/TR/1999/REC-xpath-19991116
> >            RFC 7950, Section 10.";
> >       }
> > 
> > 
> > 
> > o  10 - grouping notification-origin-info
> > 
> >   In your reply tpo my previous review, you wrote that you would
> >   remove the term "push source".  It is still used.
> 
> Yes, will update.




/martin