[netconf] Re: questions about draft-udp-notif-14

Andy Bierman <andy@yumaworks.com> Thu, 18 July 2024 17:43 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 DE9BFC14F6E4 for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 10:43:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.105
X-Spam-Level:
X-Spam-Status: No, score=-2.105 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, T_SCC_BODY_TEXT_LINE=-0.01, 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 w4SEHaR5-va6 for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 10:43:51 -0700 (PDT)
Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (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 B3BEFC14F617 for <netconf@ietf.org>; Thu, 18 Jul 2024 10:43:51 -0700 (PDT)
Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-70b702be5e4so86158b3a.0 for <netconf@ietf.org>; Thu, 18 Jul 2024 10:43:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks.com; s=google; t=1721324631; x=1721929431; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sXxIQQfqdE5PPNn4K7om7sFuk0DCnP31eSJxxpHnfxk=; b=mG1Fc9j666gDm4qRDRvRP8LvtX1nzu46xOH9ik+1HVjI/D85hVjzbR7DICqj+qgUoM V+8pxER4Uze5Fup9SBGd0DVqRFSleyAnNlRZWuXUYvnpGFdJMN/e2g/ejRVaaLTi98PT UtlS/pk8h5Y5UIbSBqL7tSv8ulQiS4TgUefRlLM3kOlktHLIENEyeuI1lLem0xDYdWrt 4qTXf0FqeCST1ztq+UvGNpM3VWwZHNwPdmZAssufAn7V3GJvaecLrWxlVi7WOHUEfOAi KblqHIGcKQ3f6bPrL42FT+qu6BscoX+4UEkZPYM4WIEm3M8wSxt2UpTxP2TYTNDkdzHZ ZqRw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721324631; x=1721929431; 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=sXxIQQfqdE5PPNn4K7om7sFuk0DCnP31eSJxxpHnfxk=; b=R1UB62NKyHTQqASXkNB/STKI99DaDEPNNWTvVwWr0bHyorAb8VJuuARXplkqo/buH2 SRp1CQbqy8Mab90wTNOgAYCxN1peDEnEtdpLOTRtX1sGlNDHWzeJrgmDBiES7ZRDFz3p ex6Cyi+I3tYC+lOIQZonfkgTw8BEdmnRDqPpXUF/YS8yHC52f4/X5DOglPNbmADod2of t/4nkrYoOmNxBo0ZcHXNzDgZixo5er8Vcmup5hmLYPNSjyQ7AP7uJYbPIJm+sr79de6P HLBsdsArq9fokfFnjBX6vN7vH+9YcftXpQUu6IMY09o5Dyj7rdv/lSuP9TOKu8EE0ERU CJbQ==
X-Gm-Message-State: AOJu0YxoYS1BwRWatHM7VHw7j8HtYbbpMYguTCLLWjnSmfuVclOmBfAL ksmT5Bu/IVdRxvBOkXczZGg7xT68G6HPGG4Ih8TBkOb5qXODZeJYqYCTmxpHmBSiF/XyHyQNQ6t VFGSnmm/SR0C9tIs3XBgByQzREroD06x1saLzVSwcqXw9LhyXLlQ=
X-Google-Smtp-Source: AGHT+IFSsIqHp7OZWwivoyz0Dz0HYCyygfm/hTJkmm1bCJLW+fAStHAEw3n0lYucR9XVwVLQmwiNyuvO+uRYfhc/HLE=
X-Received: by 2002:aa7:888a:0:b0:708:11f:d151 with SMTP id d2e1a72fcca58-70ce4fb0b8cmr7164335b3a.16.1721324630801; Thu, 18 Jul 2024 10:43:50 -0700 (PDT)
MIME-Version: 1.0
References: <CABCOCHRgebXZ6hpe=Tdifenr7TAi7GqxL8TyWoPvFjeejnwnpw@mail.gmail.com> <C5ED9DBE-520E-48C0-93D1-44155B909E56@insa-lyon.fr>
In-Reply-To: <C5ED9DBE-520E-48C0-93D1-44155B909E56@insa-lyon.fr>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 18 Jul 2024 10:43:39 -0700
Message-ID: <CABCOCHS=S2tUVqTRJ8WUmGQb4KrXi3X2uAF4wdKYv6JQZfKC1g@mail.gmail.com>
To: Alex Huang Feng <alex.huang-feng@insa-lyon.fr>
Content-Type: multipart/alternative; boundary="00000000000029a003061d891fda"
Message-ID-Hash: RU36FMRQDJ6QE23SKEPB4FCT5CTYMIDX
X-Message-ID-Hash: RU36FMRQDJ6QE23SKEPB4FCT5CTYMIDX
X-MailFrom: andy@yumaworks.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-netconf.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Netconf <netconf@ietf.org>
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [netconf] Re: questions about draft-udp-notif-14
List-Id: NETCONF WG list <netconf.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/xJx2hVeUgfl0cz0-4agbQ5PW9j0>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netconf>
List-Help: <mailto:netconf-request@ietf.org?subject=help>
List-Owner: <mailto:netconf-owner@ietf.org>
List-Post: <mailto:netconf@ietf.org>
List-Subscribe: <mailto:netconf-join@ietf.org>
List-Unsubscribe: <mailto:netconf-leave@ietf.org>

On Thu, Jul 18, 2024 at 8:40 AM Alex Huang Feng <
alex.huang-feng@insa-lyon.fr> wrote:

> Dear Andy,
>
> Thanks for the review and comments.
>
> Here my comments and proposal on top of Thomas’ comments.
>
> Please see inline.
>
> On 10 Jul 2024, at 19:27, Andy Bierman <andy@yumaworks.com> wrote:
>
> Hi,
>
> I am trying to implement this draft
> https://www.ietf.org/archive/id/draft-ietf-netconf-udp-notif-14.html
>
> General:
>
> The intended use of this protocol seems to be where a server creates fixed
> size reports
> and the server knows the report size. This is difficult if a report
> includes nested
> YANG list entries.
>
> YANG Push is used for multiple purposes, including datastore replication.
> Initial or resych payloads can be very large.  Datastore changes are
> subject
> to YANG validation so they cannot be refactored into many tiny
> transactions.
>
> Streaming servers may not know the exact entries or the sizes in advance.
>
>
> 1) IP fragmentation
>
> Even though a UDP segment is about 64K bytes, the max-segment-size
> is the real fragment length. (e.g. about 1200 bytes)
>
> An implementation of this specification SHOULD NOT rely on IP
> fragmentation by default to carry large messages. An implementation of this
> specification SHOULD either restrict the size of individual messages
> carried over this protocol, or support the segmentation option. The
> implementor or user SHOULD take into account the IP layer header size when
> setting the max-segment-size parameter to avoid fragmentation at the IP
> layer.
>
>
> The max-segment-size is the size of a UDP-notif segment.
>
> Definition in the YANG module:
>
> UDP-Notif provides a configurable max-segment-size to
>         control the size of each segment (UDP-Notif header, with
>         options, included).
>
>
> The last sentence about taking into account the IP layer header size is
> because a user might set the max-segment-size to the MTU of the interface.
> Given that the segment+IP header might be bigger than the MTU, the
> interface might perform IP fragmentation.
>
> Proposal:
>
>

I think it is too complicated to have this configuration.
This parameter should only apply if the segmentation feature is advertised.

 I am OK with a mandatory 1 datagram solution for unreliable use-cases.
I guess dynamic subscriptions can still be used for reliable use-cases.

UDP works for periodic updates where a missed or duplicate update does not
really cause any problems.
It is not so good for on-change subscriptions where any error causes a full
resync.

Some examples given, like monitoring interface operStatus changes, are
better handled with reliable transports.


Andy


OLD:
> Consequently, implementations of the mechanism SHOULD provide a
> configurable max-segment-size option to control the maximum size of a
> payload.
>
> NEW:
> Consequently, implementations of the mechanism SHOULD provide a
> configurable max-segment-size option to control the maximum size of a
> UDP-Notif segment.
>
> OLD:
> The implementor or user SHOULD take into account the IP layer header size
> when setting the max-segment-size parameter to avoid fragmentation at the
> IP layer.
>
> NEW:
> The implementor or user SHOULD configure the max-segment-size so that the
> size of a UDP-Notif segment and the size of the IP layer together does not
> exceed the MTU of the egress interface.
>
> 2) Segmentation option
>
> Only 32767 segments are allowed for the entire message which is about 40MB
> if IP fragmentation is being avoided.
>
> Segmentation can be disabled by the client on a per-receiver basis.
> Each receiver can set its own max-segment-size.
> This is difficult and expensive to implement.
> Expect that servers will reject complex configurations and clients will
> need to read the user documentation (not the RFC) to know what is
> supported.
>
>
> Yes, we do expect the user to read the documentation of an implementation
> to know if the max-segment-size is supported. And yes if it is not
> supported, we expect the server to reject the configuration.
>
>
> If enable-segmentation=false then the server may reject this setting.
> IMO the protocol is not useful with a max payload of 1 IP packet.
> The YANG Patch overhead alone can take up 100s of bytes.
> Expect that a server will reject a configuration attempting to set this
> parameter to false.
>
>
> The default statement of the leaf enable-segmentation should be set to
> True given the guidelines defined in RFC8085. I propose to change the
> default to True.
> Regarding setting enable-segmentation=false, we expect that in this case,
> the message will be fragmented at IP layer if the UDP-Notif message is
> bigger than the MTU.
>
>
> 3) Overflow indication
> There is no way for the server to indicate that the push update is
> truncated
> and should be discarded. A streaming server may not know how many segments
> are left for the current push update.
>
>
> This is correct. In our implementation (
> https://github.com/network-analytics/udp-notif-c-collector) we use
> timers to tackle this problem.
> The user can set after how much time, if some segments are still missing,
> to discard the received segments.
>
>
> 4) Application Layer
> NETCONF already has an application layer and application message framing.
> The UDP "application' is not clearly defined. It seems to just be "the
> notification message from NETCONF".
>
>
> UDP-Notif is a transport protocol for RFC8639 and RFC8641. We expect to
> use the application layer defined in RFC8641.
>
>
> 5) Implementation details
> For client/server tools that already support notifications, there
> is very little code reuse possible.  Code that uses the base:1.0 or
> base:1.1 message framing cannot rely at all on the transport protocol
> for proper framing.
>
> We are looking at using the NETCONF base:1.1 encoding with enhancements.
> The "NETCONF stream" encoding solves every problem mentioned above,
> except overflow indication, because that can never happen.
>
>
> I am not aware of NETCONF stream as a solution. Could you provide more
> references on this?
>
> I reflected these changes in -15:
> https://author-tools.ietf.org/diff?doc_1=draft-ietf-netconf-udp-notif-14&url_2=https://raw.githubusercontent.com/netconf-wg/udp-notif/main/draft-ietf-netconf-udp-notif-15.txt
>
> Regards,
> Alex
>
>
> Andy
>
>
>
> ReplyForward
> _______________________________________________
> netconf mailing list -- netconf@ietf.org
> To unsubscribe send an email to netconf-leave@ietf.org
>
>
>