Re: [netconf] Adoption-suitability for draft-tao-netconf-data-export-capabilities

Qin Wu <> Wed, 12 August 2020 04:10 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 240F13A0F1A for <>; Tue, 11 Aug 2020 21:10:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id RJiThfQqH2vh for <>; Tue, 11 Aug 2020 21:10:37 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 775C13A0F0F for <>; Tue, 11 Aug 2020 21:10:37 -0700 (PDT)
Received: from (unknown []) by Forcepoint Email with ESMTP id EAB77F3AD646C33FEDA9 for <>; Wed, 12 Aug 2020 05:10:32 +0100 (IST)
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1913.5; Wed, 12 Aug 2020 05:10:32 +0100
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256) id 15.1.1913.5 via Frontend Transport; Wed, 12 Aug 2020 05:10:32 +0100
Received: from ([]) by ([fe80::74d9:c659:fbec:21fa%31]) with mapi id 14.03.0487.000; Wed, 12 Aug 2020 12:10:28 +0800
From: Qin Wu <>
To: Andy Bierman <>
CC: Kent Watsen <>, "" <>
Thread-Topic: [netconf] Adoption-suitability for draft-tao-netconf-data-export-capabilities
Thread-Index: AdZwV1YcWPgLrGpwQAqxiw25SWb4Pw==
Date: Wed, 12 Aug 2020 04:10:28 +0000
Message-ID: <>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_B8F9A780D330094D99AF023C5877DABAAD900F4Bdggeml511mbschi_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <>
Subject: Re: [netconf] Adoption-suitability for draft-tao-netconf-data-export-capabilities
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETCONF WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 12 Aug 2020 04:10:40 -0000

发件人: Andy Bierman []
发送时间: 2020年8月12日 2:10
收件人: Qin Wu <>
抄送: Kent Watsen <>et>;
主题: Re: [netconf] Adoption-suitability for draft-tao-netconf-data-export-capabilities

On Mon, Aug 10, 2020 at 7:09 PM Qin Wu <<>> wrote:
发件人: netconf [<>] 代表 Andy Bierman
发送时间: 2020年8月11日 3:39
收件人: Kent Watsen <<>>
主题: Re: [netconf] Adoption-suitability for draft-tao-netconf-data-export-capabilities


I am trying to understand the problem this draft is attempting to solve.
The premise seems to be that the error handling and "hints" mechanism
in RFC 8639 and RFC 8641 do not work
[Qin]: The data export capabilities is not designed to replace error handling and is positioned as capability negotiation and used before netconf connection to be setup,  they are complementary,
error handling will be the last resort
When dynamic subscription request is declined or rejected. Error handling is only applicable to dynamic subscription
based on section 3.2 of RFC8641.

Our argument is why not prevent the problem to happen in the first place instead of waiting for the server making mistake and remedy it.
One of principle set by RFC8641 is:
minimize the number of subscription iterations between subscriber and publisher, discourage Random guessing of different parameters by a subscriber.

The solution being provided is generic, targeted to address this challenge, not only applicable to dynamic subscription, but also configured subscription.

IMO the solution approach does not scale well.
There is very little value for too much complexity.

[Qin]: I respectfully disagree, ;-),error handling doesn’t provide the client any hint about which transport protocol, which security schemes you should use.
We see draft-ietf-netconf-notification-capabilities-13 provides server capability advertisement which serve as a good basis for this draft and can be used not only at implementation time but also run time.
We also see draft-ietf-netconf-https-notif-04 provides Receiver Capabilities learning.

I also remember notification capability model defined in draft-ietf-netconf-notification-capabilities-13 has been refactored to make it more generic motivated by some new capability drafts and therefore can be used to accommodate
Other capabilities extension. This helps provide telemetry automation solution.

A set of capabilities for every possible data node that can be used with YANG Push
will be very large. Any yet, that is still mostly useless, since it is very likely that
the particular instances of the data node affect the push capabilities.
The filter used in the subscription will have a huge impact on the capabilities.

Take the most obvious entry -- for the "interface" list.  It is very likely that the
type of interface, or firmware revision of the line card, or any of a 1000 proprietary
details could change the push parameters supported for that interface.

[Qin]: In reality, we can not assume all data objects defined in the YANG data models support threshold handling capability
e.g., only integer built-in type data object support threshold handling,
another examples, we may need to suppress redundant data value reporting, so we may indicate to the client which set of data object has redundant suppress capability.
For some data object, they may support timer based trigger, we also need to indicate them to the client.

There are also very vendor-specific capabilities that impose an implementation design.
This is way out of scope. Example below: Does this mean all vendors need to change their server code
so it has a set limit per update, based on some new concept you made up called sensor groups??

[Qin]: These two parameters are debatable, Similar to max-nodes-per-update defined in draft-ietf-netconf-notification-capabilities-13:
max-nodes-per-sensor-group and max-sensor-group-per-update are two optional parameters. The reason to introduce these two parameters is
to align with gNMI implementation, which has sensor group concept, we think it is useful, that’s why we add them.
But they can be taken out if they introduce complexity.

     leaf max-nodes-per-sensor-group {

        type uint32 {

          range "1..max";



          "Maximum number of selected data nodes that can be sent

           per sensor group.";


      leaf max-sensor-group-per-update {

        type uint32 {

          range "1..max";



          "Maximum number of sensor groups that can be sent

           in an update.";


[Qin]:What do we define for max-nodes-per-sensor-group and max-sensor-group-per-update, is per system capability, not per node capability. You don’t need to expect each node to support such capability.

For per node capability, we only define three parameters, counter threshold support, timer based trigger support and suppress redundant support.
Which help you design appropriate subscription policy and send it through subscription request.


and the client needs to retrieve
extensive monitoring info to determine how to setup notifications on the server.

In theory this data could be used to prevent an <rpc-error> to be returned
for <establish_subscription> or <edit-config>

IMO the current approach is much better than this proposed approach.
The server can provide the hints based on the exact request from the client.
[Qin]: It may be late, still require multiple subscription iterations between subscriber and publisher. But data export has no intention to replace it. Error handling have its value in many different cases.
The static "per-node" monitoring data can be quite large, and yet not provide
the correct answer for a specific combination of subscription parameters..

[Qin]: It is server capability exposure, check early implantation time information of the capability what the server support (e.g., GRPC transport, TCP support, UDP transport support),
not targeted to keep track of dynamic change data.
These capabilities seldom change. In addition, to allow the client compose various different subscription policy (e.g., adaptive subscription), we require the server to indicate whether specific data object supports
Thresholds handling.
This is missing pieces to support event based telemetry solution.


On Wed, Aug 5, 2020 at 3:17 PM Kent Watsen <<>> wrote:


Per the previous email sent moments ago, the chairs would like to solicit input on the following draft:

   Title: Telemetry Data Export capability
      This document proposes a YANG module for telemetry data export
      capability which augments system Capabilities model and provides
      additional telemetry data export attributes associated with system
      capability for transport dependent capability negotiation.

In particular, please discuss adoption-suitability as it regards to the following questions:

    1) is the problem important for the NETCONF WG to solve?
    2) is the draft a suitable basis for the work?

PS: this message is itself not an adoption poll, but rather an attempt to gauge interest/support for a potential future adoption poll.

netconf mailing list<>