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

Thomas.Graf@swisscom.com Thu, 18 July 2024 15:09 UTC

Return-Path: <Thomas.Graf@swisscom.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 CDE6BC14CE30 for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 08:09:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.103
X-Spam-Level:
X-Spam-Status: No, score=-2.103 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_NONE=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=swisscom.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 HoQ-r80ZCZQa for <netconf@ietfa.amsl.com>; Thu, 18 Jul 2024 08:09:18 -0700 (PDT)
Received: from mail.swisscom.com (mailout120.swisscom.com [138.188.166.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B7E98C14F6BF for <netconf@ietf.org>; Thu, 18 Jul 2024 08:09:17 -0700 (PDT)
Received: by mail.swisscom.com; Thu, 18 Jul 2024 17:09:15 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=swisscom.com; s=iscm; t=1721315355; bh=Pkhxs39mA/nZW0CFK/nFmA6+gFoSA6fsAB1QHfonYww=; h=From:To:Subject:Date:References:In-Reply-To; b=FU0NgmblUABYLAxSSGe21T80NkERiJ4Z2HpQCX2S1IzNBIUSX3KH/mHJnjBQ0ohPI x2Al8BspZENgeSU1xfs/ebcZQLEDksUeHizl397mvZC4E8lZGQTXEiBjoOxLSN5cwX +itVVMPLSPkzbzbHj1PCNVlw8Tr01jkW/iLZs8KYbR7AwyNI8V7jvt/n2cp9HHUF+T JuwwU/HGmsNw9gIBMksHoQYSvePgPa7Ke7kHgYz/NOKI+K9ZQQVh8y5AQUAylGaDYE zEfPX/bKk8i49+049Ry049FnV6Wl4aswffv3D1dbPHprD4ZUt+b/+Xk/a8E1zaRm8x a8i4XY9fxV8pg==
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-256"; boundary="----=_Part_301300_245089299.1721315354743"
X-Mailer: Totemo_TrustMail_(Notification)
From: Thomas.Graf@swisscom.com
To: andy@yumaworks.com, netconf@ietf.org
Thread-Topic: [netconf] questions about draft-udp-notif-14
Thread-Index: AQHa0u6Q8ZYy/sY2XU+9E0yhiZeP9rH8li7g
Date: Thu, 18 Jul 2024 15:09:12 +0000
Message-ID: <bc4ef728fba1446ebb91871e041f16f1@swisscom.com>
References: <CABCOCHRgebXZ6hpe=Tdifenr7TAi7GqxL8TyWoPvFjeejnwnpw@mail.gmail.com>
In-Reply-To: <CABCOCHRgebXZ6hpe=Tdifenr7TAi7GqxL8TyWoPvFjeejnwnpw@mail.gmail.com>
Accept-Language: en-US, de-CH
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_ActionId=236b50b5-bbb1-428b-871a-0e4d4c0a25d2;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_ContentBits=0;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_Enabled=true;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_Method=Standard;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_Name=C2 Internal;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_SetDate=2024-07-18T14:23:12Z;MSIP_Label_2e1fccfb-80ca-4fe1-a574-1516544edb53_SiteId=364e5b87-c1c7-420d-9bee-c35d19b557a1;
x-originating-ip: [138.188.161.184]
X-CFilter-Loop: Reflected
X-Trustmail: processed
Message-ID-Hash: SVZ6XAIVNFIKB7YKLGZP6PTXJMLUAZ44
X-Message-ID-Hash: SVZ6XAIVNFIKB7YKLGZP6PTXJMLUAZ44
X-MailFrom: Thomas.Graf@swisscom.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
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/wRaq7TKUxQgPYQlaXKIY0tRrIf4>
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 a lot for giving us feedback on the implementation of the document. This is very much appreciated.

Before answering your comments, please be aware that we requested and received an early transport directorate review https://datatracker.ietf.org/doc/review-ietf-netconf-udp-notif-11-tsvart-early-tuexen-2023-11-15/ with revision -11 of the document. It is worth to review their feedback. We requested this feedback because we felt that some of the comments we received on the netconf mailing lists prior did not reflect what has been discussed and defined in other areas and working groups of the IETF.

Regarding to "IP fragmentation". I would take https://datatracker.ietf.org/doc/html/rfc2460#section-5 as a guidance on MSS. 1280 is the minimum for IPv6. 576 for IPv4 networks. However, with the introduction of gigabit ethernet, the default MTU in service provider networks today is 9160.

Regarding to "Segmentation option". You are raising two questions. Wherever the 15-bit size of the sequent number field https://datatracker.ietf.org/doc/html/draft-ietf-netconf-udp-notif#section-4.1 should be increased or not. TCP defined 32-bit (https://datatracker.ietf.org/doc/html/rfc2385#section-4.3) And wherever turning off segmentation is a valid option or not. It is clear that JSON or XML encoding is not the right encoding for transferring large amount of data. For this purpose CBOR has been defined. From my >5 years experience with YANG notifications, I usually observe the average message size in production networks is between 500 bytes up to 2 Mbytes on small routers and large distributed routers combined. Therefore I conclude that increasing the sequence number field to 32-bit would not bring added benefit. I agree that having segmentation not turned on, is rather a corner case when the YANG-Push publisher does not support segmentation. I have seen segmentation not supported on network processors and SmartSFPs. But even in these cases there was not technical reason not to implement. However for the sake of applicability, I suggest to keep segmentation optional but have it turned on by default makes perfectly sense. Will address in -015.

    leaf enable-segmentation {
      if-feature segmentation;
      type boolean;
      default false;
      description
        "The switch for the segmentation feature. When disabled, the
        publisher will not allow fragment for a very large data";
    }

Regarding "Overflow indication". I think this is addressed well in https://datatracker.ietf.org/doc/html/draft-ietf-netconf-udp-notif#section-5.2 and in https://www.rfc-editor.org/rfc/rfc8085.html#section-3.2. In case there is something missing, please let me know.

Regarding "Application Layer". Udp-notif is used as transport for YANG-Push configured subscriptions as defined in https://datatracker.ietf.org/doc/html/rfc8639#section-2.5.

Regarding "Implementation details". There already many similar alternate propriety YANG-Push transport implementations out there. To name two: Cisco (https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/24xx/telemetry/configuration/guide/b-telemetry-cg-asr9000-24xx/dial-out-telemetry-session-from-router-to-destination.html) and Juniper (https://www.juniper.net/documentation/us/en/software/junos/interfaces-telemetry/topics/concept/junos-telemetry-interface-oveview.html) We have currently 3 vendor implementations of udp-notif. Feedback from their implementers where that it is relatively easy to apply due to its simplicity.

Best wishes
Thomas

From: Andy Bierman <andy@yumaworks.com>
Sent: Wednesday, July 10, 2024 10:27 AM
To: Netconf <netconf@ietf.org>
Subject: [netconf] questions about draft-udp-notif-14


Be aware: This is an external email.


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.ΒΆ<https://www.ietf.org/archive/id/draft-ietf-netconf-udp-notif-14.html#section-4.1-6>
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.

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.

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.

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".

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.

Andy



[https://lh3.googleusercontent.com/a/ACg8ocLGN7e1p8cvZjsVLsDVpiwRansEvdaE1jEQoPAGRVi_RlIjsw=s40-p-mo]

ReplyForward