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

Alex Huang Feng <alex.huang-feng@insa-lyon.fr> Thu, 18 July 2024 15:40 UTC

Return-Path: <alex.huang-feng@insa-lyon.fr>
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 E8A2FC14F736 for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 08:40:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.435
X-Spam-Level:
X-Spam-Status: No, score=-0.435 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_HELO_IP_MISMATCH=2.368, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=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=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=insa-lyon.fr
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 D08I_WM4ebeg for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 08:40:46 -0700 (PDT)
Received: from smtpout01-ext2.partage.renater.fr (smtpout01-ext2.partage.renater.fr [194.254.240.33]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 95735C151524 for <netconf@ietf.org>; Thu, 18 Jul 2024 08:40:44 -0700 (PDT)
Received: from zmtaauth01.partage.renater.fr (zmtaauth01.partage.renater.fr [194.254.240.25]) by smtpout10.partage.renater.fr (Postfix) with ESMTP id 9AE46644CF; Thu, 18 Jul 2024 17:40:40 +0200 (CEST)
Received: from zmtaauth01.partage.renater.fr (localhost [127.0.0.1]) by zmtaauth01.partage.renater.fr (Postfix) with ESMTPS id 88D8F140013; Thu, 18 Jul 2024 17:40:40 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1]) by zmtaauth01.partage.renater.fr (Postfix) with ESMTP id 791601400EC; Thu, 18 Jul 2024 17:40:40 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 zmtaauth01.partage.renater.fr 791601400EC
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=insa-lyon.fr; s=CB289C06-95B8-49FE-9C4B-D197C6D2E7CB; t=1721317240; bh=cBDnblQxR4jBd4rCBmVd/em8s/074RlHorkqPZ9CTnU=; h=From:Message-Id:Mime-Version:Date:To; b=IWnXFaulxXrYB7Br1E0kp/0MmKRiIa9nLq2aJ1f4qe3NYPiunSB+uGUIfxirmZxGI qhoXgf4VdHmAXoNn1hEqzf8667Zy/3UU8bEp38ec+tND4pjCf+vw8Op+ePrPmcs1kG 3fMTTdbyUrcYQvWojJSU+YQe/8PQmXFMhFp5Bd7lOSx6IGw1H0vbnvFvVWCDO/heUm ENCKuju7GksBeFzFuRIr6r4OeE01oRYuBh39jST/iZPU9Dnl3P9QflXLrmH8t4r9Ki vHkkYBDe8gffVLUMX1e5fW4vSqsLSUezaRyt4lacRpIuq0+hgPRsc/VIxSgEbeiit7 VOjpMF/wBK+sw==
Received: from zmtaauth01.partage.renater.fr ([127.0.0.1]) by localhost (zmtaauth01.partage.renater.fr [127.0.0.1]) (amavis, port 10026) with ESMTP id PcvZJY8EJrG9; Thu, 18 Jul 2024 17:40:40 +0200 (CEST)
Received: from 24.109.167.30 (unknown [194.254.241.250]) by zmtaauth01.partage.renater.fr (Postfix) with ESMTPA id DB8F5140013; Thu, 18 Jul 2024 17:40:38 +0200 (CEST)
From: Alex Huang Feng <alex.huang-feng@insa-lyon.fr>
Message-Id: <C5ED9DBE-520E-48C0-93D1-44155B909E56@insa-lyon.fr>
Content-Type: multipart/alternative; boundary="Apple-Mail=_785214EC-A379-4B65-967D-6EDB04F7846B"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\))
Date: Thu, 18 Jul 2024 08:40:25 -0700
In-Reply-To: <CABCOCHRgebXZ6hpe=Tdifenr7TAi7GqxL8TyWoPvFjeejnwnpw@mail.gmail.com>
To: Andy Bierman <andy@yumaworks.com>
References: <CABCOCHRgebXZ6hpe=Tdifenr7TAi7GqxL8TyWoPvFjeejnwnpw@mail.gmail.com>
X-Mailer: Apple Mail (2.3774.600.62)
X-Virus-Scanned: clamav-milter 0.103.8 at clamav01
X-Virus-Status: Clean
X-Renater-Ptge-SpamState: clean
X-Renater-Ptge-SpamScore: -70
X-Renater-Ptge-SpamCause: gggruggvucftvghtrhhoucdtuddrgeeftddrgeelgdeltdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucftgffptefvgfftnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenogfuuhhsphgvtghtkfhmghffohhmrghinhculdeftddmnecujfgurhephffktgggufffjgevvfhfofesrgdtmherhhdtjeenucfhrhhomheptehlvgigucfjuhgrnhhgucfhvghnghcuoegrlhgvgidrhhhurghnghdqfhgvnhhgsehinhhsrgdqlhihohhnrdhfrheqnecuggftrfgrthhtvghrnhepieekvdfgudduuddvfefgffegkeelfeetvdethfehiedvffdulefhfedugfetfedunecuffhomhgrihhnpehivghtfhdrohhrghdpghhithhhuhgsrdgtohhmpdhgihhthhhusghushgvrhgtohhnthgvnhhtrdgtohhmnecukfhppeduleegrddvheegrddvgedurddvhedtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepudelgedrvdehgedrvdeguddrvdehtddphhgvlhhopedvgedruddtledrudeijedrfedtpdhmrghilhhfrhhomheprghlvgigrdhhuhgrnhhgqdhfvghnghesihhnshgrqdhlhihonhdrfhhrpdhnsggprhgtphhtthhopedvpdhrtghpthhtoheprghnugihseihuhhmrgifohhrkhhsrdgtohhmpdhrtghpthhtohepnhgvthgtohhnfhesihgvthhfrdhorhhg
Message-ID-Hash: LHABWAYZIXFJYTNOVPY3JRRDB2NL4UXP
X-Message-ID-Hash: LHABWAYZIXFJYTNOVPY3JRRDB2NL4UXP
X-MailFrom: alex.huang-feng@insa-lyon.fr
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/2yyRhMNUk0yBEDxJaDlRPgM49Vg>
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>

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:

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
> 
> 
> 
> 	
> Reply
> Forward
> _______________________________________________
> netconf mailing list -- netconf@ietf.org
> To unsubscribe send an email to netconf-leave@ietf.org