From: netmod <netmod-boun...@ietf.org> on behalf of Jeffrey Haas 
<jh...@pfrc.org>
Sent: 03 October 2022 20:41

[I had promised Mahesh that I'd take my comments here, but I realize that this
is a topic that likely will result in no short term solutions.  It may also
result in no action whatsoever.]

YANG strings are bounded in length, theoretically, but that length limit
isn't small.

When strings are used solely as leaf values, the length limit largely isn't
a matter of concern, in my opinion.  However, when they're used as keys, it
introduces some code practicalities that may be worth discussing.

One item of practicality is simply the length and its impact on underlying
data structures.  If you were storing such things in something like a
PATRICIA tree, many implementations behave better when the key is of a
bounded length.*

A secondary consideration is that since unicode is used, character lengths
in terms of storage may vary.  Implementations that internally store strings
as UTF-8 have to be wary of truncation considerations.

A tertiary consideration is that in mechanisms like gNMI, long keys end up
bloating PDUs.

Loosely framing this as a very old English joke: YANG Doctor, it hurts when
I do this!  YANG Doctor: Well... don't do that!

For many things that have naturally short string names (e.g. interface
names), this mostly isn't an issue.  However, for things that may take
user-supplied strings as their key in configuration, this is somewhat more
problematic.*

Most implementations likely don't take unbounded inputs to the maximum
length of a YANG string for such things.  Technically in such situations,
they're non-conformant if that's the case, or if they don't provide a
deviation specifying the length of the string.

Why raise this?  While I only coincidentally participate in YANG module
implementation at the moment, I remember similar headaches in MIBs making
the lives of implementors problematic.

What should be done, if anything?  It seems like those with deeper expertise
may want to recommend a reasonable length limit for strings that will be
used as keys.  Perhaps define a specific typedef for such things.  And, once
defined, the YANG doctors might consider recommending them in their reviews.

Such things may already be good practice, but perhaps I'm not aware of it.

<tp>
I am forever pointing out to authors of modules just how big a string can be 
and the usual reaction is that they do not care.  Occasionally the response is 
to ask what it should be.  Dunno, that is your decision.

I seem to recall carrying across the SMI type with a restricted length into 
YANG but was unable to convince others.

Tom Petch

-- Jeff

* As a matter of fact, it was performing a code review against exactly this
point that raised this consideration.

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to