[netconf] comments on pagination drafts

Andy Bierman <andy@yumaworks.com> Thu, 31 October 2024 21:34 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 88D40C14F6A6 for <netconf@ietfa.amsl.com>; Thu, 31 Oct 2024 14:34:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.104
X-Spam-Level:
X-Spam-Status: No, score=-2.104 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_DNSWL_BLOCKED=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 PTTUPMejgPDb for <netconf@ietfa.amsl.com>; Thu, 31 Oct 2024 14:34:07 -0700 (PDT)
Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7EDECC14F5F1 for <netconf@ietf.org>; Thu, 31 Oct 2024 14:34:07 -0700 (PDT)
Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-71e67102283so89569b3a.1 for <netconf@ietf.org>; Thu, 31 Oct 2024 14:34:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks.com; s=google; t=1730410446; x=1731015246; darn=ietf.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=UMJhv/QuEz5y+V8Sr9IU8G+vQxz2WItRXObFMlpyQcI=; b=TgjBnheDynVxBlJAYL1uhPY8+qMBox17lp6RQ+C6HakMG4PyMEP34scYB+z3Rl1WUj mAAdnh/3/Dkl0xmgTJxlzZ9yLsaQTyCrmn9vr/l9uDYzIDMUc5SuHgfd34o8B/Mz4xVb +n73bWiy72Gz1kPzIM5WzYgewNIi1CH2fxxJlykXBjDij8vbw9gyATt1L/jJuN6LSY45 J3+IFvk/yBPgvt5VNQG0EZEKVWJdT/1JwjJA/Dn8oOD6Wfs2g1zNR8dlnppdNXiuI33H nH1VYWlR8E4LmbQzAI2X7+rVnpkb0dsCJKeIF5hPg1i0dDlxQvTRQONepg4OkClgj8eU ZeZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730410446; x=1731015246; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=UMJhv/QuEz5y+V8Sr9IU8G+vQxz2WItRXObFMlpyQcI=; b=XtniYmsol4ie7wvKCEHFqB/2/3xmR7w8V3fw0KKsLnGyioS7D2TExd/5+Q9sm1hKBk vib9dGdg2IeJ6/84ahwgDjMHJKQgY1zUDKOefaTft9xYg6CSnYxQStcg2B1VB3/PN3cM GgmMvCwcTrbYou1CjyXhVZBv3U2Z8IkA4QhyYRy+eoB2wa6/B2NLEc0GiVJZk3w8OZA6 yBk5s73dCDC+Yr9Ea1FnXWZ3wBF2yOfA2Kb+Jg+5A8E3TA5B6HE3C1PJWQAQ/Y1ak6O3 xziEo3Ca1v7OwiJrfrW8hV8fJWKW9pluu3UqH1ijoycX5hj8DIP1pBSvUzSuGAoy5IQU /Jtw==
X-Gm-Message-State: AOJu0YwRCU9y3gjxduX82Ymgz7XaJIEVlp9ocVBPf0Mmh7ykUZVzh/Di ZL8ayqJYYGmW1A4f3gMl+w7LOcgg0G9p+5iVlTYk0iObMNDa7lC65z556WfibfbuG9TxAuhLzqO zT2bDRVB9qrmiA81XikE5UIZYBMBYjPc7NQ5Ad4AIBaCHOb5kMTq2Hg==
X-Google-Smtp-Source: AGHT+IFvDj12R3XUbNzucBpUQTytRCgxqyzI6CT4aPU+T3lDVRWPlnsFBNfJx6hyPf8cWMe+lG6q8rUyO5oHxhsuXEU=
X-Received: by 2002:a17:90b:ec9:b0:2e2:e860:f69d with SMTP id 98e67ed59e1d1-2e8f11c0f0fmr9842295a91.7.1730410446389; Thu, 31 Oct 2024 14:34:06 -0700 (PDT)
MIME-Version: 1.0
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 31 Oct 2024 14:33:54 -0700
Message-ID: <CABCOCHTHrDFSy8J4fkm3_Nwxm+KRv26=zz1K5kECY9sJDkLCNw@mail.gmail.com>
To: Netconf <netconf@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000f928110625cc9379"
Message-ID-Hash: ACXRI4XAHEYOTIIVLZHCHM4VX4BETZM6
X-Message-ID-Hash: ACXRI4XAHEYOTIIVLZHCHM4VX4BETZM6
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [netconf] comments on pagination drafts
List-Id: NETCONF WG list <netconf.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/netconf/ySAoARayfMmciJzuka94o4f8H2A>
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>

Hi,

I am trying to understand some of the pagination details and some
parts are unclear or problematic.

1) groupings

There are groupings for each parameter, then another using all of them.
Are the individual groupings used anywhere?  There are dependencies between
parameters so it is unclear what the intended reuse is here.

This has been mentioned but adding "-grouping" to most grouping names
is too verbose.

2) conformance

It looks like all parameters are MUST implement for NETCONF, but all
parameters
are optional in RESTCONF.  Why are capabilities needed in RESTCONF?

IMO the mandatory parameters should be implementable by streaming servers.
NETCONF devices are not application databases.

The following parameters can be supported by a streaming server:

- where
- offset
- cursor
- limit
- sublist-limit

The following parameters cannot be supported by a streaming server:
IMO these should have an if-feature.

- sort-by
- locale
- direction

3) document structure

IMO these 3 drafts should be combined so it is easier to read and there
are less inconsistencies between RFCs that are this tightly coupled.

The YANG model is missing some of the info in sec 3.1.
YANG automation tools do not see the ad-hoc text in sec 3.1.
This section should be removed or replaced with a short summary,
and the details put into the YANG module.

4) cursor

The text in 3.1.6 says:

    The allowed values are base64 encoded positions interpreted by the
server
    to index an element in the list,

The YANG module shows type 'string'.
So the values are anything a string supports.
Our experience has shown that exposing binary64 string to humans
is very error-prone and difficult to debug.
They are a great way to invite data injection attacks as well.

I guess a list with multiple keys is supposed to be encoded in some
proprietary way to pack N leafs into 1 leaf?
YANG has 'anydata' to avoid this bad practice.
IMO the cursor should be anydata, not a base64 string.

5) metadata

There are a lot of attributes mixed in with the data being returned.
This does not work well if the code handling the iteration control
is not the same as the code processing the list data.
IMO any data that needs to be returned should be proper YANG
objects. You can augment the output of those RPCs, not just the input.

6) leaf-list pagination

Nobody has ever asked us for this feature.
Are there any examples of leaf-lists so large that they need pagination?
Usually a client wants to retrieve all the leaf-list instances at once.


Andy