Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif

Tianran Zhou <> Fri, 28 August 2020 09:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id ED23C3A0E56 for <>; Fri, 28 Aug 2020 02:01:27 -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 M95lnWjD5DSB for <>; Fri, 28 Aug 2020 02:01:25 -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 B4AA33A0E50 for <>; Fri, 28 Aug 2020 02:01:24 -0700 (PDT)
Received: from (unknown []) by Forcepoint Email with ESMTP id F08C27E48F4699702100 for <>; Fri, 28 Aug 2020 10:01:21 +0100 (IST)
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1913.5; Fri, 28 Aug 2020 10:01:20 +0100
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1913.5; Fri, 28 Aug 2020 17:01:18 +0800
Received: from ([]) by ([]) with mapi id 15.01.1913.007; Fri, 28 Aug 2020 17:01:18 +0800
From: Tianran Zhou <>
To: Andy Bierman <>
CC: "Rob Wilton (rwilton)" <>, "" <>
Thread-Topic: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif
Date: Fri, 28 Aug 2020 09:01:18 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_7b77f6ff39d4430aa549c9b53b902ddehuaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <>
Subject: Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif
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: Fri, 28 Aug 2020 09:01:28 -0000

Hi Andy,

Thanks again for your further comments.


From: Andy Bierman []
Sent: Friday, August 28, 2020 3:14 AM
To: Tianran Zhou <>
Cc: Rob Wilton (rwilton) <>rg>;
Subject: Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif

On Wed, Aug 26, 2020 at 6:50 PM Tianran Zhou <<>> wrote:
Hi Andy,

Thanks for your reply and suggestions.


From: Andy Bierman [<>]
Sent: Thursday, August 27, 2020 1:29 AM
To: Tianran Zhou <<>>
Cc: Rob Wilton (rwilton) <<>>;<>
Subject: Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif

On Wed, Aug 26, 2020 at 1:17 AM Tianran Zhou <<>> wrote:
Hi Andy,

Please see inline.


From: netconf [<>] On Behalf Of Andy Bierman
Sent: Wednesday, August 19, 2020 6:18 AM
To: Rob Wilton (rwilton) <<>>
Subject: Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif

On Tue, Aug 18, 2020 at 6:42 AM Rob Wilton (rwilton) <<>> wrote:

[Also as a contributor]

My comments are broadly similar to Kent’s.

I believe that a UDP transport for dataplane telemetry where getting accurate fresh data quickly is more important than getting every update.  This is particularly true if a subsequent notification will cover any lost values anyway (e.g. periodic statistics).

There is also the resync-subscription mechanism to help recover from missing data.

[ztr] Our intention of using UDP is for data that do not care about occasional loss. Typically for period data, and new data will anyway came and update.
Does the “resync-subscription” mean the retransmission? Here do you want to add the “resync-subscription mechanism” when packet loss is detected in this draft?

This is explained in RFC 8641

ZTR> Yes, I looked into RFC8641. It’s the same as what I understand as “retransmission”. Two key points on “resync-subscription” from my perspective.
1. “This RPC is supported only for on-change subscriptions previously established using an "establish-subscription" RPC.”
2. “On receipt, a publisher must either (1) accept the request and quickly follow with a "push-update" or …”

So, what’s your suggestion here?
To support this? Or not support this and add text explicitly in the document.

Nothing to add to this document.
I was just noting that YANG Push does not rely on every push-change-update
notification to be delivered.  The application layer will re-synch by itself.

ZTR> Agreed. Thanks.

I suspect that having a mechanism to allow for the telemetry data being encrypted is probably also important.  If the WG were to adopt a draft without this, then as Benoit mentioned, I would have to test the water with the IESG to determine whether that would be acceptable.

I suspect the lack of congestion control might get their attention as well.

[ztr] Yes, I agree, both security and congestion considerations need to be described in the document. We have section 4 for congestion control. Do you have any idea on this?

no -- I can't solve problems that IETF creates for itself.
I think the draft says something like "do not use this protocol if congestion is a concern".

I also note that the draft allows for a GPB encoding of the telemetry data, but I’m not aware of any formal standard encoding of YANG data in GPB, and there is a choice between whether the GPB encoding is generic for all YANG data, or specific GPB encodings are useful for the specific data that is being encoded.

I was confused by the same thing.
Is there a YANG schema for a notification element that is used?
Which means the .proto file is hardwired?
If not then how does the receiver know what is sent?
There are some technical issues that can be addressed if the draft is adopted.

[ztr] In this draft we only consider to include a code point to indicate the GPB encoding. How to map YANG to GPB is out of the scope of this draft.
In practice, there are several ways in my opinion.
We can map YANG to proto firstly, and the proto actually describes the data structure. I think YANG can almost translate to proto 1:1.
We can also develop YANG to GPB directly, just like YANG to XML and JSON.
In brief, the receiver can still know what is sent by YANG.

I don't think the protocol should include placeholders for proprietary solutions.
Either leave out GPB completely or support it in an interoperable way.

ZTR> We have no position on this. If the WG agreed, we would like to leave out GPB.

What about just adding a 32-bit report-id field to the header
This is enough. Assignment of the IDs is out of scope.

 ZTR> Sorry, I did not get you on what’s this 32-bit report-id? We have a 4 bit encoding type field, which can support 16 encodings. We can set this as a registry and defer the assignment of GPB.

More issues:

This protocol is not usable by servers that stream data instead of building an entire response
in memory. With a streaming design the server doesn't know what will be sent in advance so
it sure doesn't know the length in advance.  CBOR does a great job of supporting both
types of server design.  NETCONF and HTTP support chunking, which is used extensively by
streaming servers. This draft should mention streaming and explain why it is not supported.

ZTR> If you mean bit streaming like TCP, I think UDP cannot support this. Do you have any pointer on how CBOR can support the streaming. And how NETCONF and HTTP support chunking.
In general, I understand this requirement with small memory or partial data. But do you have any real case in the context of YANG push? So that we can work on an optimal design.

I think it is OK to say that a server is expected to build an entire response
and the length needs to be known in advance, if fragmentation is not enabled.
A server can stream data OK if UDP fragmentation is enabled. CoAP uses the Block option
to support streaming.

ZTR> Got it. Yes, this draft enables UDP fragmentation which can support data streaming.

The generic wrappers (like gNMI and YANG notification schema) do not handle "anydata" very well at all.
The binary payload becomes mostly JSON.  Only CBOR+SID handles anydata efficiently.
The solution (maybe outside the scope of this protocol) should consider how YANG anydata
will be transmitted efficiently and converted from anydata to a real schema correctly by the receiver.





From: netconf <<>> On Behalf Of Kent Watsen
Sent: 07 August 2020 21:16
Subject: Re: [netconf] Adoption-suitability for draft-unyte-netconf-udp-notif

[as a contributor]

   1) is the problem important for the NETCONF WG to solve?

I believe that it is important to enable publishers to send notifications using a UDP-based transport.   This belief is based on my experience from when at Juniper dealing with very high-end firewalls with enormous log output.

I believe that the NETCONF WG is the appropriate WG for this work, having defined RFC 8639 (SN), RFC 8640 (NN), and RFC 8650 (RN).

   2) is the draft a suitable basis for the work?

I have read the current version of the draft and find it to be a reasonable start.

Presuming the “receiver-instances” augmentation defined in takes off, the module defined in this draft should be updated to augment into it instead.

I appreciate Section 5 (Applicability) noting that the UDP-transport is primarily for the data plane (not the control plane), as it doesn’t matter so much if data plane notifications are lost.  This addresses (I think) the issue that Rob Shakir raised before: (search for “Rob S”).  That said, it is unclear to me how a receiver could configure this while, e.g., configuring control plane notifications to be sent via a TCP-based transport such as “https-notif”.

3) regarding Juergen’s questions:

  a) I am willing to substantially review the drafts.
  b) I am willing to contribute to the discussion of any issue.
  c) I do NOT plan to implement the technology defined.

netconf mailing list<>