Recommendations for Creating
IANA-Maintained YANG ModulesOrangeRennes35000Francemohamed.boucadair@orange.comnetmodThis document provides a set of guidelines for YANG module authors
related to the design of IANA-maintained modules. These guidelines are
meant to leverage existing IANA registries and use YANG as just another
format to present the content of these registries. This document updates RFC 8407. IANA maintains a set of registries that are key for inexorability.
The content of these registries are usually available using various
formats (e.g., plain text, XML). However, there were some confusion in
the past about whether the content of some registries is dependent on a
specific representation format. For example, Section 5 of was published to clarify that MIB and YANG
modules are merely additional formats in which the "Interface Types
(ifType)" and "Tunnel Types (tunnelType)" registries are available. The
MIB and YANG modules are not separate
registries, and the same values are always present in all formats of the
same registry. Also, some YANG modules include parameters and values directly in a
module that is not maintained by IANA while these are populated in an
IANA registry. Such a design is suboptimal as it creates another source
of information that may deviate from the IANA registry as new values are
assigned. For the sake of consistency, better flexibility to support new
values, and maintaining IANA registries as the unique authoritative
source of information, when such an information is maintained in a
registry, this document encourages the use of IANA-maintained modules.
updates the guidelines in .The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
when, and
only when, they appear in all capitals, as shown here.This document makes use of the terms defined in Section 2 of .When designing a YANG module for a functionality governed by a
protocol for which IANA maintains a registry, it is RECOMMENDED to
specify an IANA-maintained module that echoes the content of that
registry. When one or multiple sub-registries are available under the same
registry, it is RECOMMENDED to define an IANA-maintained module for each
sub-registry. However, designers MAY consider defining one single
IANA-maintained module that covers all sub-registries if maintaining
that single module is manageable (e.g., very few values are present or
expected to be present for each sub-registry).An IANA-maintained module may use identities (e.g., ) or typedefs (e.g., ). Such a decision is left to the module
designers and should be made based upon specifics related to the
intended use of the module. It is RECOMMENDED that the reasoning for the
design choice is documented in the companion specification document. For
example, define
IANA-maintained module that use typedefs for the following reason:This recommendation takes precedence over the behavior in Section
4.11.1 of for IANA-maintained modules
because the extensibility concern is not applicable for such modules.
Designers of IANA-maintained modules MAY supply the full Initial
version of the module in the specification document or only a script to
be used by IANA (e.g., XSLT 1.0 stylesheet in Appendix A of ). This document does not require any IANA action.This document does not introduce new concerns other than those
already discussed in Section 15 of .This document is triggered by a discusison the author had with Dhruv
Dhody and Jensen Zhang.