Re: [netconf] Adoption poll for draft-tgraf-netconf-yang-notifications-versioning

Andy Bierman <andy@yumaworks.com> Fri, 26 May 2023 16:34 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 A4127C151B0A for <netconf@ietfa.amsl.com>; Fri, 26 May 2023 09:34:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5fJs0tKtmoE3 for <netconf@ietfa.amsl.com>; Fri, 26 May 2023 09:34:33 -0700 (PDT)
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6E244C151996 for <netconf@ietf.org>; Fri, 26 May 2023 09:34:33 -0700 (PDT)
Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-4f00c33c3d6so1056732e87.2 for <netconf@ietf.org>; Fri, 26 May 2023 09:34:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks.com; s=google; t=1685118871; x=1687710871; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KawX0XgLRzHfPEbf5TBgoPYdw0N243xauUbrRs1KWIY=; b=I+7j1qKJdesSjIKICzbpWubo11ycwLH1NeT8POKJ1AckBYCAllQ1F8XlwPfUceotbB akYGasPaeqzi48tgXDiAR7Y6x3bv6gS1B0T82UHrE65CIiuRCftRgNSxYUYFsuWzGi5J E3bXtwSRHTquZgt/iBAgJGBeEa2tR4pWSrFuzNcXDudGs05GJfUH4B7JX3/FZpq3N6Gp lRrg+X3mRCztKKQW8E8VuLsWCcYoFLejT793FVkaaMD2Bc+7d5Ins4aawT5Odj2R7fCT n9pB8s3eYYyNHfTEaGKvtRtiyo4EJvKP00bk/HE8X1ffO1ph6tUU6yQsTRzifacRhu3z 2h3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685118871; x=1687710871; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KawX0XgLRzHfPEbf5TBgoPYdw0N243xauUbrRs1KWIY=; b=kUT911yT64Wd/dqvN3W92oBuAx/H21Ndpz5AVGFiKfOMWfWBjveD5wVis/c+k30UZE r2LfiTFpNi7nbxXomWoUBDcey967rZwYx+EjC6KJggF5cZDkF/LucIjAkyJ+rGERWyMf iF+NZom4UnmnmI+tlhdyjH8OMWg67njvEsyLuxUhyNYcpV1llLFsQ0jnHNmEDyrgwBHH 6cw9otB8VLouJgjRsJn21XaJUpMoTaDku9W084BPCsDVhyT5CjQ7uVwSHUsqiLbvLUTd lo8zKHJy7W4ul7/imVVK/2R84A54UWv+FbhsqxLLQYkFzGWEnfgtN1AbgStzKdCdtain EmBw==
X-Gm-Message-State: AC+VfDx+kS8VkC33y5q0KFiEMDO4Z6LwJjd1Mh1mm+8gvigISVdviD6g I9Y3H9MWJZEBFgbtEpamqnnGGUEEDosgqV8YiwEKdQ==
X-Google-Smtp-Source: ACHHUZ7kUwDao88OKlfL1LimFyn+7cTxQrmRxkicB7UFMWt/pD2SS2stOVeVD4BuxVkIYqBoNiQv5PFR3Ru21xMIURk=
X-Received: by 2002:ac2:5a09:0:b0:4f0:18e2:c0d7 with SMTP id q9-20020ac25a09000000b004f018e2c0d7mr737131lfn.60.1685118870866; Fri, 26 May 2023 09:34:30 -0700 (PDT)
MIME-Version: 1.0
References: <E78B3C0B-B415-4E8C-9080-ADFB69D4464E@gmail.com> <AM8PR06MB776465A8890FA1FF944F7249957E9@AM8PR06MB7764.eurprd06.prod.outlook.com> <fxqbpxqt4uddzynsqu7nrphks4ffdbcet2s4mzgq5kjybc7h5r@34fjvmua6eva> <AM8PR06MB77647944C3C804FB22E38B50957E9@AM8PR06MB7764.eurprd06.prod.outlook.com> <ibonfs57tsr2ymul4wsns5jhpoiofkciz7zw27udzixtt7olrx@zh5p3tjohxoo> <CABCOCHRmnOw_Tex1ixcyA=bjdHptHVyQ1nN1UKOfyC9nPqdxpQ@mail.gmail.com> <1d7ff7ee90cb441f843b460bdb216ff2@swisscom.com> <CABCOCHTJZFxY1YYpagz2wc-q8ki4AKb+B-3GOtJOG=hPkDRATg@mail.gmail.com> <CABCOCHQw13rH1WVrLvt25RWdUcESH_Y1PfaKC8B=jo4Jb52o4g@mail.gmail.com> <aac1c6d8ed664e5fa552e535e29b9cc3@swisscom.com>
In-Reply-To: <aac1c6d8ed664e5fa552e535e29b9cc3@swisscom.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Fri, 26 May 2023 09:34:19 -0700
Message-ID: <CABCOCHQa1tfYZcC6AzXx34VFfCp=9seBVOvzK4Di2oWDj9RykA@mail.gmail.com>
To: Thomas.Graf@swisscom.com
Cc: jschoenwaelder@constructor.university, ignacio.dominguezmartinez@telefonica.com, mjethanandani@gmail.com, netconf@ietf.org, netconf-chairs@ietf.org
Content-Type: multipart/alternative; boundary="000000000000b3e5eb05fc9b4fe8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/j6ExdzGYsDi2vnr6e0WJnMTc6wE>
Subject: Re: [netconf] Adoption poll for draft-tgraf-netconf-yang-notifications-versioning
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: NETCONF WG 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: Fri, 26 May 2023 16:34:37 -0000

On Thu, May 25, 2023 at 11:05 PM <Thomas.Graf@swisscom.com> wrote:

> Dear Andy,
>
>
>
> Thanks a lot for the comment. Let me answer chronological.
>
>
>
> I assume you are referring to section 3 of the document which augments the
> xpath/sub-tree filter in the subscription state change notification
> messages with the revision and revision-label information.
>

I cannot find any such augment.

I was referring to the augments which modify the RPC operations:

  // Subscription parameters
  augment "/sn:establish-subscription/sn:input/sn:target" {
    description
      "Augment the establish-subscription RPC from the
ietf-subscribed-notifications
      YANG module with the yang-push-module-version-config grouping.";
    uses ypm:yang-push-module-version-config;
  }
  augment "/sn:modify-subscription/sn:input/sn:target" {
  description
      "Augment the modify-subscription RPC from the
ietf-subscribed-notifications
      YANG module with the yang-push-module-version-config grouping.";
          uses ypm:yang-push-module-version-config;
  }



These augments look incorrect.
The 'sn:target' node is a choice, which can only be augmented with a case
(not 2 leafs).
You probably mean to augment the 'datastore' case in RFC 8641.



>
> With netconf-capability-change you are referring to RFC 6470 correct? To
> my current understanding, and please correct me here, module revision is
> not a capability.
>

The server is required to send this event out if the loaded modules changes.
 It also send the YANG library events, which are more directly related to a
module change.


>
> With yang-library-change you are referring to RFC 7895 correct? To my
> understanding it has been superseded by RFC 8525. According to
> https://datatracker.ietf.org/doc/html/rfc8525#appendix-A,
> yang-library-update is a replacement for yang-library-change notification.
> A yang-library-change notification is sent when a change in YANG library
> such as a new module was added or the revision of the module occurred. If a
> change occurred, a notification is sent with the content-id to the YANG
> receiver. The YANG push receiver then needs to obtain the new information
> from the YANG library.
>


That is correct.
A YANG client is expected to use the server YANG library information to
determine all
module/revision/feature/deviation settings for the server.



>
>
> To my current knowledge, and please correct me if I understood it wrong,
> this mechanism does not prevent that the YANG push messages are published
> even though the semantics have changed. Nor does it prevent when the
> network node is being reloaded into a new software version where a YANG
> module revision has changed. It does address the case where during runtime
> the YANG module revision changes, however the described workflow is more
> complex to implement. Would you agree with my summary?
>
>
>

You are saying a dynamic subscription to a datastore will block an operator
from making software
changes to the device?  I would not have expected that. I expected
the subscription
would be suspended if the revision changed.

The server is not expected to manage module revision changes.
I am not sure how a client would use your proposed augments

The revision-date is really only needed if there is a new module revision
with NBC changes.
Otherwise, a normal YANG client is expected to handle any BC changes to the
read-only data
retrieved from the server.   It seems fragile to force a specific revision
and break if BC changes
are introduced.



Going back to section 2. You raised the point that a subscription filter is
> not limited to 1 module. From the sentence " Only a single selection
> filter can be applied to a subscription at a time" in Section 3.6 of RFC
> 8641 https://datatracker.ietf.org/doc/html/rfc8641#section-3.6 we
> understood it is actually limited to one filter. Otherwise the semantic
> reference in the Subscription State Change Notification Messages would be
> vague. It would not be clear which filter applies to which subscription id
> which is the key in the push-update notification. What I believe, and
> please correct me if I misunderstood, you are referring to the case where a
> xpath is referencing to more than one YANG module. Correct? If that would
> be the case then we are back at the point similar to initial proposal (
> https://datatracker.ietf.org/doc/html/draft-tgraf-netconf-yang-notifications-versioning-00)
> where we proposed to add the module name for each revision as well.
>


No.  The 1 filter refers to a subtree or XPath filter.
There is no requirement that a filter is only limited to 1 module.

   <A:top>
      <B:list1 />
      <C:container1 />
   <A:top>

Does the revision-date refer to module A, B, or C?

   Xpath  "/interfaces"

Does the XPath filter refer to oc:interfaces or if:interfaces?
(XPath can get really complex -- the expression is not limited to an
absolute path).




>
>
> Regarding latest and latest-compatible-semversion from section 2 not
> matching YANG model in section 4.1 valid point. Thanks for spotting this.
> Noted to be corrected in -04 version.
>
>
>
>
> https://author-tools.ietf.org/iddiff?url1=https://raw.githubusercontent.com/network-analytics/draft-tgraf-netconf-yang-notifications-versioning/main/draft-tgraf-netconf-yang-notifications-versioning-03.txt&url2=https://raw.githubusercontent.com/network-analytics/draft-tgraf-netconf-yang-notifications-versioning/main/draft-tgraf-netconf-yang-notifications-versioning-04.txt
>
>
>


How would server code deployed in 2023 know it wasn't the 'latest' anymore
in 2026?
The client should decide if the revision is acceptable.



> Best wishes
>
> Thomas
>


Andy


>
>
> *From:* Andy Bierman <andy@yumaworks.com>
> *Sent:* Friday, May 19, 2023 5:25 PM
> *To:* Graf Thomas, INI-NET-VNC-HCS <Thomas.Graf@swisscom.com>
> *Cc:* jschoenwaelder@constructor.university;
> ignacio.dominguezmartinez@telefonica.com; mjethanandani@gmail.com;
> netconf@ietf.org; netconf-chairs@ietf.org
> *Subject:* Re: [netconf] Adoption poll for
> draft-tgraf-netconf-yang-notifications-versioning
>
>
>
>
>
>
>
> On Fri, May 19, 2023 at 7:42 AM Andy Bierman <andy@yumaworks.com> wrote:
>
>
>
>
>
> On Fri, May 19, 2023 at 4:05 AM <Thomas.Graf@swisscom.com> wrote:
>
> Dear Andy, Jürgen, Nacho and Frank,
>
>
>
> Thanks a lot for the feedback and comments. I understand your concerns
> that they are targeting section 2, extending the YANG push subscription
> capability to not only subscribing to an xpath but also be capable to
> select with revision or revision-label.
>
>
>
> In section 1 we introduce the problem statement, here an excerpt:
>
>
>
> ---
>
> This semantic reference is available when the subscription is being
> establish as described in Section 3.6 of [RFC8641] and being streamed from
> the publisher to receiver with the subscription state change notifications
> described in Section 2.7 of [RFC8639] where for each subscription a locally
> unique subscription ID described in Section 4.3.2 of [RFC8641] is being
> issued and streamed as metadata with the notification message in the YANG
> push message header.
>
>
>
> The semantics can change between different YANG module revisions. The YANG
> module version statement is specified in Section 7.1.2 of [RFC6020] and
> states that the newer revision needs to be backward compatible to the
> previous revision. Section 3.1 of [I-D.ietf-netmod-yang-module-versioning]
> specifies that newer semantic versions introduced in
> [I-D.ietf-netmod-yang-semver] MAY not be backward compatible to the
> previous version when indicated with non-backwards-compatible keyword.
>
> ---
>
>
>
> When the software of a network node is being upgraded, possibly the YANG
> module revisions might change. Thanks to the extension describes in section
> 3 of the document, the YANG push receiver is now able to learn through the
> subscription state change notification message that the revision or/and
> revision-label has changed and through netconf <get-schema> the new YANG
> module must be obtained outband to retrieve the new semantics for the
> push-update notification message.
>
>
>
> So far so good. With this we prevented that the end to end data processing
> chain breaks because semantics can be maintained across network node
> software upgrades, YANG module changes, in configured subscription as well.
> However if the YANG module change involved a non-backward compatible
> change, messages are being dropped within the data processing chain. A
> network operator might ask, why should we publish YANG push messages from a
> network node when they cant be processed further down the data processing
> chain? Why shouldn't we give the network engineer the ability to express in
> the YANG push subscription that only YANG push messages complying to a
> certain revision or revision-label (semantic revision) should be published.
> This is what section 2 of the document tries to address.
>
>
>
> I understood in the mail thread that it was assumed that the YANG data
> store would need to support more than one revision per YANG module. This is
> not the case. The point is that when the configured subscription is
> established and while the messages are being published, the revision or
> revision-label might change. Today we do not have the ability to subscribe
> to a specific revision nor to a specific compatible revision-label. This is
> what we try to enable in this document.
>
>
>
>
>
>
>
>
>
> These are the network operators concerns and needs. From an implementer
> point of view, do you believe this makes sense and is implementable?
>
>
>
>
>
>
> Good news: you are not trying to undo the 'implement 1 revision'
> requirement in RFC 7950.
>
> Not so good news: There are already 2 events (netconf-capability-change
> and yang-library-change)
>
> to notify the client of the extremely rare module update event.
>
>
>
> In the rare event a module is updated, the subscriber gets a 3rd
> notification for this change,
>
> and the data from the module starts to be filtered by the server so the
> subscriber is prevented
>
> from receiving the "unwanted" data.  This can be quite complicated to
> implement,
>
> forcing special processing for each subscription.
>
>
>
> I am not in favor of changing YANG Push in this way.
>
>
>
>
>
>
>
> I do not see any clear YANG definition or examples for these augments:
>
>
>
> module: ietf-yang-push-revision
>
>
>
>   augment /sn:establish-subscription/sn:input/sn:target:
>
>     +--rw revision?         rev:revision-date-or-label
>
>     +-- revision-label?   ysver:version
>
>   augment /sn:modify-subscription/sn:input/sn:target:
>
>     +--rw revision?         rev:revision-date-or-label
>
>     +-- revision-label?   ysver:version
>
>   augment /sn:subscription-started/sn:target:
>
>     +--ro revision          rev:revision-date-or-label
>
>     +-- revision-label?   ysver:version
>
>   augment /sn:subscription-modified/sn:target:
>
>     +--ro revision          rev:revision-date-or-label
>
>     +-- revision-label?   ysver:version
>
>   augment /sn:subscriptions/sn:subscription/sn:target:
>
>     +--ro revision          rev:revision-date-or-label
>
>     +--rw revision-label?   ysver:version
>
>
>
> Since a subscription filter is not limited to 1 module, It is unclear how
>
> this draft would be implemented.
>
>
>
> The augment is not a module-name + revision, just a revision.
>
> The purpose is unclear. These leafs are added to the
> establish-subscription input.
>
>
>
>     leaf revision {
>
>       type rev:revision-date-or-label;
>
>       description
>
>         "This references the YANG module revision to be sent in the subscription.";
>
>     }
>
>     leaf revision-label {
>
>       type ysver:version;
>
>       description
>
>         "This references the YANG module semversion to be sent in the subscription.";
>
>     }
>
>
>
>
>
> The subscription never specifies a module, so what module name do these
> parameters affect?
>
>
>
> Sec 2 describes some parameter values that do not exist (latest,
> latest-compatible-semversion)
>
> The YANG module defines a yang-push-revision-supported feature, but there
> are no if-feature
>
> statements that reference it.
>
>
>
> Andy
>
>
>
>
>
>
>
> Looking forward for your feedback and comments.
>
>
>
> Best wishes
>
> Thomas
>
>
>
>
>
> Andy
>
>
>
>
>
> *From:* netconf <netconf-bounces@ietf.org> *On Behalf Of *Andy Bierman
> *Sent:* Wednesday, May 17, 2023 7:27 PM
> *To:* Jürgen Schönwälder <jschoenwaelder@constructor.university>; IGNACIO
> DOMINGUEZ MARTINEZ-CASANUEVA <ignacio.dominguezmartinez@telefonica.com>;
> Mahesh Jethanandani <mjethanandani@gmail.com>; netconf <netconf@ietf.org>;
> netconf-chairs <netconf-chairs@ietf.org>
> *Subject:* Re: [netconf] Adoption poll for
> draft-tgraf-netconf-yang-notifications-versioning
>
>
>
>
>
>
>
> On Wed, May 17, 2023 at 1:42 AM Jürgen Schönwälder <
> jschoenwaelder@constructor.university> wrote:
>
> All of this has been pointed out before and does not come as a
> surprise. So we should have a general answer how to handle the
> "damage" created by an NBC update of YANG that according to some does
> not even require a YANG version number change.
>
>
>
> It is more than just a conformance issue.
>
> It is hard to overstate the importance of RFC 7950 as the 1 well-written
>
> document needed to learn YANG.  It may be OK to distribute the
>
> YANG data model in lots of ad-hoc specifications, but not the
>
> data modeling language definition.
>
>
>
> People (way outside the IETF) will be expected to learn and use the "new"
> YANG correctly,
>
> and that will be much more difficult without even a name, let alone a
> version number.
>
> What is the new YANG called? "NBC YANG"?
>
>
>
>
>
> Andy
>
>
>
>
>
> ..
> /js
>
> ...
>
>
>
>