Re: [netconf] Issues with draft-ietf-netconf-udp-notif-04

Andy Bierman <andy@yumaworks.com> Wed, 17 November 2021 19:31 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 C8BC23A0129 for <netconf@ietfa.amsl.com>; Wed, 17 Nov 2021 11:31:23 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.887
X-Spam-Level:
X-Spam-Status: No, score=-1.887 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20210112.gappssmtp.com
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 GTT5nI9wDZB7 for <netconf@ietfa.amsl.com>; Wed, 17 Nov 2021 11:31:18 -0800 (PST)
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 55F9F3A0124 for <netconf@ietf.org>; Wed, 17 Nov 2021 11:31:18 -0800 (PST)
Received: by mail-lf1-x135.google.com with SMTP id b1so13459382lfs.13 for <netconf@ietf.org>; Wed, 17 Nov 2021 11:31:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9uJwdi2tccVg6FAEYrSAA3PdQkmZZCF/9WQYdbAfMCg=; b=yiLjmG61CMG1QPkOwK+bsIUlI3ENMJh6pmhJ7TN28w96exfm8m8bPBYV3cLIHYzZKx AYYjBdsItfQhLkbE8m20MG7+LUNIxnbqdaX4uesZ8GInbCL9qQAgvWZg2HjX/bCOicJ8 veCI+e6Z+KcjkmLHTD+9pfRN6jQgARVETdO5cTryACDhq5lMiasxSF/vILmNL5meCCf3 YJav65ENPEVcSscFZzXvWTYS9Dwa2kF0kv+N8gFq3c9R7kDDRKc+GwyfRV6SKyI3u59A rb9YVmT5BaoQxukQpYOP8AIMTMuF+Cl/hSES780w1epE/Pw9M/y7OzI2jfdYH5P30xh8 Q4Jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9uJwdi2tccVg6FAEYrSAA3PdQkmZZCF/9WQYdbAfMCg=; b=G1sRh4niMKWAmDctmUFHd9/EsbGYm6ey/OiinJvgtGCrUIY3Egzm1BZUnDtXFIpYKt jr9+RSdiuxlWZ7c9wapJsxY/PSOLcv5TmhKJB2NH0OeOL5lTwGjl7ob48JNB5A9iirYK 9Pss/LyTPwV/ZlVAwYaimx8cL7Vu9dRNJxrZSreCSerQpqy4uZ8QrY7qpb35YseXlK7j s4+RlO8Me9R5rcKJe/U8pOo4hrWwRv8pu8NxTromIb9nF9HLqHwRQMG4nqcUYrLDBbwk VsS/EV9e57tStUKcOKufJ0OqwTDhjrfs1APdEn0cWW3MW2B0Yb0ELW43SP8oDJBUquaA Ol4A==
X-Gm-Message-State: AOAM5335MlN4x8oZyYvS/mFJNmNJF6a/8apMx2+A1KBGUdh7jOz0kmoZ njo1ay9wQctaarsFPpbsk1OO8ej9ZYYNl5QEEUB5y6EjliCrXg==
X-Google-Smtp-Source: ABdhPJwFgSrsrIgaYSjmvd7Z8HdPDHzwwjbR4jKWHpecRX5/x8XxDVx+OMnKAMUoRXHH2df9tDnQfNjNoE2hlD571y4=
X-Received: by 2002:a05:6512:68c:: with SMTP id t12mr17474483lfe.10.1637177474593; Wed, 17 Nov 2021 11:31:14 -0800 (PST)
MIME-Version: 1.0
References: <CABCOCHTnEh-d00ZDumUFZcwEjim3GCrgR85-+8n_g=XyEhXQbg@mail.gmail.com> <CAFNmoOFMLSDkKb5CW2gU2mZQwWfhLs2pmuT9Qc-UNaEr1hXk6Q@mail.gmail.com>
In-Reply-To: <CAFNmoOFMLSDkKb5CW2gU2mZQwWfhLs2pmuT9Qc-UNaEr1hXk6Q@mail.gmail.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Wed, 17 Nov 2021 11:31:03 -0800
Message-ID: <CABCOCHSdgt18CUnsq4WSXiN_E+2dBQkHzb9ydH8BEt0HVaimkA@mail.gmail.com>
To: Pierre Francois <pierre.francois.ietf@gmail.com>
Cc: Netconf <netconf@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000cec9f805d1011594"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/CliIt6GhD0Civjcoj3hL5tevAIU>
Subject: Re: [netconf] Issues with draft-ietf-netconf-udp-notif-04
X-BeenThere: netconf@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 17 Nov 2021 19:31:24 -0000

On Wed, Nov 17, 2021 at 3:03 AM Pierre Francois <
pierre.francois.ietf@gmail.com> wrote:

> Hello Andy,
>
> Thanks for the feedback, answers inline.
>
> Le mar. 16 nov. 2021 à 04:45, Andy Bierman <andy@yumaworks.com> a écrit :
>
>> Hi,
>>
>> I am wondering if there implementations of this draft already.
>> IMO there are problems with in that prevent reasonable and
>> optimal implementations.
>>
>
> There is support of udp-notif publisher in VRP.
> There is a C collector lib for udp-notif in
> https://github.com/insa-unyte/udp-notif-c-collector
>
>
>> 1) Use of UDP as the Application Message Framing
>> UDP is a transport protocol.  Tightly coupling one
>> NETCONF notification message to one UDP frame (+ fragments)
>> is not very optimal.
>>
>
> There is a segmentation option in the protocol, so a udp notif message is
> not tightly coupled to a UDP frame.
>

But this segmentation is optional to implement.
My point is that application protocols like NETCONF have their own message
framing
which does not exist here because the transport framing is used instead.


>
>
>>
>> 1A) wastes space in the UDP frame if the NETCONF notification
>>     happens to be short
>>
>
> I don't get it, I'm sorry. To me a UDP header + small udp-notif header is
> rather short.
>

If I can fit 100 notification messages in 1 UDP frame then I save 99% of
the redundant headers.



>
>
>> 1B) imposes an application-level max-message-size
>>
>
> Not with the segmentation option, do we agree?
>

https://datatracker.ietf.org/doc/html/draft-ietf-netconf-udp-notif#section-4.1

There can be 32767 segments of a max 65535 each: about 2G of data.
However the segment-size is allowed to be smaller and segmentation is
completely optional-to-implement.

Application layer framing allows unlimited message size without any need
to support UDP segmentation at all,



>
>>
>> 2) Not Efficient for Streaming Servers (no Message Chunking)
>> The application framing in NETCONF and RESTCONF (HTTP) is not
>> coupled to any transport protocol. Instead, a sender may emit as
>> many message chunks as desired. This is how a streaming server works.
>> Content comes from many different sources and it is sent on-the-fly
>> in chunks, instead of constructing large replies.
>>
>>     - Application framing allows multiple notifications in one UDP frame
>>     - Application framing does not need a max-message-size.
>>       Streaming servers often do not know the size of the data that will
>> be sent
>>       in a notification.
>>
>
> I think we meet these goals. Let me think about this further.
>


I agree, by ignoring the idea that this protocol provides any normative
information
about the application layer protocol in use.  This draft should remove any
hint
that the application payload is defined in this document.  It is OK to say
a different RFC (or spec) defines the content for a particular Encoding
Type.

The "notification" in Figure 1 implies that the payload is one NETCONF
notification.
The draft should be clear that there is no structure to the payload defined
in this document.


>
>>
>> Q1) Should proprietary encoding be used to support application-layer
>> framing
>>        or should the standard support it?
>>
>
> I think we'd need to meet on this or else it will end up with thousands of
> long emails ;)
>


I think the draft should let other documents define the exact content
expected in the payload.
I am used to application protocols defining specific message flows. Since
this draft does
not do that, it should not attempt to impose any rules on the application
payload at all.



>
>
>>
>> 3) Protocol Message Encoding for CBOR
>> The NETCONF notification message is not modelled in YANG.
>> This is an open issue for YANG to CBOR encoding.
>> https://github.com/core-wg/yang-cbor/issues/96
>>
>> The "notification" and "eventTime" elements do not have YANG definitions.
>> SID assignments for these elements will be needed.
>> This draft is the likely place for these SID assignment requests to
>> the IESG and IANA.
>>
>
> Shouldn't these be transport agnostic? I don't see why this would be bound
> to udp-notif only and not, say, https-notif.
>

This is related to application/yang-data+cbor.
A separate document for the SID assignments can be done.



>
>>
>> 4) Subscription-ID Missing from Header
>> It is quite possible for one message generator to create
>> messages for multiple subscriptions.  The subscription-ID
>> will be needed to dispatch notifications to subscribers correctly.
>> The Observation-Domain-ID is not sufficient.
>>
>
> Same answer as above, we understand obs-domain-id to be used in the
> transport to meet load-balancing goals, but thought it would violate layers
> to place subscription-IDs in the transport itself.
>


So I will put the Subscription-ID here instead I guess because a common
use-case is to allow a Collector to support subscriptions from client
applications.
Only datastore subscriptions include a subscription-id, not event stream
notifications.


>
>>
>> 5) Private Encoding Option does not seem interoperable
>>
> The "Enc. Descr" field is completely opaque.
>>
>
> Correct.
>


Then perhaps there is no need for this at all since it does not
attempt to provide any interoperability?


>
>
>> This field could be structured to provide the "ET number space owner"
>> e.g, urn [wsp description]
>>
>
> Mmm it's a valid option. Our opinion was that once you want it
> interoperable, you should make it standard instead of private.
> If the wg thinks we should kinda standardize private options, I'm
> personally okay to add that to the draft.
>

Use of structured strings like URNs does not seem like a bad thing that
should be discouraged.
The ET field is not interopable if every implementation can define their
own 4-bit values
and there is no standard way to tell them apart. Perhaps just a domain name
if a URN is too much of a burden.



>
>>
>> Andy
>>
>
> Thanks a lot for your comments,
>
> Pierre.
>
>
Andy



> Le mar. 16 nov. 2021 à 04:45, Andy Bierman <andy@yumaworks.com> a écrit :
>
>> Hi,
>>
>> I am wondering if there implementations of this draft already.
>> IMO there are problems with in that prevent reasonable and
>> optimal implementations.
>>
>> 1) Use of UDP as the Application Message Framing
>> UDP is a transport protocol.  Tightly coupling one
>> NETCONF notification message to one UDP frame (+ fragments)
>> is not very optimal.
>>
>> 1A) wastes space in the UDP frame if the NETCONF notification
>>     happens to be short
>> 1B) imposes an application-level max-message-size
>>
>> 2) Not Efficient for Streaming Servers (no Message Chunking)
>> The application framing in NETCONF and RESTCONF (HTTP) is not
>> coupled to any transport protocol. Instead, a sender may emit as
>> many message chunks as desired. This is how a streaming server works.
>> Content comes from many different sources and it is sent on-the-fly
>> in chunks, instead of constructing large replies.
>>
>>     - Application framing allows multiple notifications in one UDP frame
>>     - Application framing does not need a max-message-size.
>>       Streaming servers often do not know the size of the data that will
>> be sent
>>       in a notification.
>>
>> Q1) Should proprietary encoding be used to support application-layer
>> framing
>>        or should the standard support it?
>>
>> 3) Protocol Message Encoding for CBOR
>> The NETCONF notification message is not modelled in YANG.
>> This is an open issue for YANG to CBOR encoding.
>> https://github.com/core-wg/yang-cbor/issues/96
>>
>> The "notification" and "eventTime" elements do not have YANG definitions.
>> SID assignments for these elements will be needed.
>> This draft is the likely place for these SID assignment requests to
>> the IESG and IANA.
>>
>> 4) Subscription-ID Missing from Header
>> It is quite possible for one message generator to create
>> messages for multiple subscriptions.  The subscription-ID
>> will be needed to dispatch notifications to subscribers correctly.
>> The Observation-Domain-ID is not sufficient.
>>
>> 5) Private Encoding Option does not seem interoperable
>> The "Enc. Descr" field is completely opaque.
>> This field could be structured to provide the "ET number space owner"
>> e.g, urn [wsp description]
>>
>>
>> Andy
>>
>>
>>
>> _______________________________________________
>> netconf mailing list
>> netconf@ietf.org
>> https://www.ietf.org/mailman/listinfo/netconf
>>
>