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

Jean Quilbeuf <> Fri, 02 June 2023 11:24 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5F573C15108E; Fri, 2 Jun 2023 04:24:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.894
X-Spam-Status: No, score=-1.894 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=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=unavailable autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ma6v7wCYsjNI; Fri, 2 Jun 2023 04:24:25 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 17982C151094; Fri, 2 Jun 2023 04:24:25 -0700 (PDT)
Received: from (unknown []) by (SkyGuard) with ESMTP id 4QXgZz401nz67bMk; Fri, 2 Jun 2023 19:22:35 +0800 (CST)
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Fri, 2 Jun 2023 13:24:22 +0200
Received: from ([]) by ([]) with mapi id 15.01.2507.023; Fri, 2 Jun 2023 13:24:22 +0200
From: Jean Quilbeuf <>
To: "Rob Wilton (rwilton)" <>
CC: netconf <>, netconf-chairs <>
Thread-Topic: [netconf] Adoption poll for draft-tgraf-netconf-yang-notifications-versioning
Thread-Index: AQHZh23oZ5CiVAtuM0GdJ/xr3h5msa9meWgAgAALlYCADBkigIAEz9tw
Date: Fri, 02 Jun 2023 11:24:22 +0000
Message-ID: <>
References: <> <> <ghneulz67ajhfmlvs4kkx2ixvtl54ycjtr63dp6diqkqth5hdp@dt3zayd4keas> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <>
Subject: Re: [netconf] Adoption poll for draft-tgraf-netconf-yang-notifications-versioning
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: NETCONF WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 02 Jun 2023 11:24:29 -0000


I think this draft is needed to simplify the metric collection and I support its adoption.

I have the same comment as Rob and Andy about a single filter (subtree or xpath) potentially touching several modules and thus a list of involved modules is necessary.


-----Original Message-----
From: netconf <> On Behalf Of Rob Wilton (rwilton)
Sent: Tuesday, May 30, 2023 12:10 PM
Cc: netconf <>; netconf-chairs <>
Subject: Re: [netconf] Adoption poll for draft-tgraf-netconf-yang-notifications-versioning


I think that it would be helpful to decouple the discussion about whether the YANG version number should be changed to the NETMOD WGLC review of the module versioning draft.  I don't think that part of the discussion is particularly relevant to the adoption call for this document.

My understanding of the goal here is to make it easier to export network device telemetry data (exposed via YANG push) in a way that can integrate well with message bus services like Kafka.  I think that this is a good aim for the industry, and thus I support efforts (like this draft) to try and achieve this.

I'm not intimately familiar with Kafka but I understand that it assumes that schema for the data being published can changed over time (e.g., perhaps due to a software upgrade on a publisher, or different instances of publishers running slightly different versions of software).  Hence Kafka maintains a schema registry and allows a reference to the schema to be associated with the published data records.  This allows entities in the data pipeline to check and confirm that the telemetry data conforms to the schema, and potentially to handle the data differently, if needed.

I appreciate that RFC 6020 and RFC 7950 both are defined to try and ensure that YANG definitions only evolve in a backwards compatible way, but I see many examples within the wider industry and some examples in standards bodies where definitions are changed in ways that may impact clients. 

Hence, I think that this problem space, and draft, is about how to easily/robustly connect YANG data sources into Kafka data buses:
- one choice is to do this entirely off the box, having the entities managing the subscriptions also tracking changes to the device schema (e.g., through subscribing to YANG library updates).  Perhaps this can be made to work, but probably adds additional timing complexity relating to when the subscriptions actually start sending data relative to receiving notifications that the content in YANG library has changed.  Another choice here could be to always tear down all subscriptions if the device schema changes at all.
- the alternative is to augment the subscription-started/modified notifications to give an indication that the data for that subscription has changed.  All data sent before this notification uses a previous schema, and all data sent after that notification uses the new schema.  This allows the schema to change without completely tearing down existing subscriptions.

I'm less sure about the ability to restrict subscription requests to particular versions.  At a minimum I would suggest putting this under a feature statement, but I'm not quite sure whether it should be needed at all.

I also agree with Andy's comment that we need to resolve how the revision-date/label applies to all the potential data under a subscription.  To reuse part of Andy's example:

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

If the subscription is to B/list1, but during upgrade the only change was to the contents of C:container1 then for the subscription the revision-date/label for B:list1 wouldn't have changed, but the data received in the subscription would have changed.  I.e., at the moment, YANG has no way to version everything under a subscription.  Hence, I think that the notification would need to list all the module versions that are being used by the subscription, but I'm not convinced that is easy to do in practice.  The alternative would be to just version the entire schema of the datastore (e.g., either a YANG library checksum, or a version label for a YANG package instance that represents the datastore schema), but this has the downside that all subscriptions would see a reported change in schema if any single module is changed on the device, even one that isn't being used (directly or indirectly) by the subscription.  But then an off-device tool can figure out if the actual schema for the subscription has changed.

In summary, I support NETCONF working in this space, and I believe that this draft is a reasonable starting point, but it still requires some refinement, which could be done as part of the WG work on this problem.


// As an individual contributor.

> -----Original Message-----
> From: netconf <> On Behalf Of Jürgen 
> Schönwälder
> Sent: 22 May 2023 19:25
> To: Camilo Cardona <>
> Cc: netconf <>; netconf-chairs 
> <>
> Subject: Re: [netconf] Adoption poll for 
> draft-tgraf-netconf-yang-notifications-
> versioning
> On Mon, May 22, 2023 at 12:43:20PM -0500, Camilo Cardona wrote:
> > - I like the insights shared by Jürgen and Andy regarding how hacky
> >   versioning is for YANG 1.1. It makes sense, but I guess nobody
> >   wants to start a 1.2 project..
> If it is too hard to change the YANG version number, why should I 
> believe it will be easy to change all the future module version 
> numbers?
> If people are serious about versioning, the first thing they should do 
> is proposing to bump the YANG version number when they make 
> incompatible changes.
> /js
> --
> Jürgen Schönwälder              Constructor University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <>
> _______________________________________________
> netconf mailing list
netconf mailing list