rfc9907v1.txt   rfc9907.txt 
skipping to change at line 140 skipping to change at line 140
4.24. Performance Considerations 4.24. Performance Considerations
4.25. Open Systems Considerations 4.25. Open Systems Considerations
4.26. Guidelines for Constructs Specific to YANG 1.1 4.26. Guidelines for Constructs Specific to YANG 1.1
4.26.1. Importing Multiple Revisions 4.26.1. Importing Multiple Revisions
4.26.2. Using Feature Logic 4.26.2. Using Feature Logic
4.26.3. "anyxml" versus "anydata" 4.26.3. "anyxml" versus "anydata"
4.26.4. "action" versus "rpc" 4.26.4. "action" versus "rpc"
4.27. Updating YANG Modules (Published versus Unpublished) 4.27. Updating YANG Modules (Published versus Unpublished)
4.28. Defining Standard Tags 4.28. Defining Standard Tags
4.29. Modeling Abstract Data Structures 4.29. Modeling Abstract Data Structures
4.30. IANA-Maintained Modules 4.30. IANA-Maintained YANG Modules
4.30.1. Context 4.30.1. Context
4.30.2. Guidelines for IANA-Maintained Modules 4.30.2. Guidelines for IANA-Maintained YANG Modules
4.30.3. Guidance for Writing the IANA Considerations for RFCs 4.30.3. Guidance for Writing the IANA Considerations for RFCs
Defining IANA-Maintained Modules Defining IANA-Maintained YANG Modules
5. IANA Considerations 5. IANA Considerations
5.1. YANG Modules 5.1. YANG Modules
5.2. Update in YANG Parameters Registry Group 5.2. Update in YANG Parameters Registry Group
5.3. IANA-Maintained Modules 5.3. IANA-Maintained YANG Modules
6. Operations and Manageability Considerations 6. Operations and Manageability Considerations
7. Security Considerations 7. Security Considerations
8. References 8. References
8.1. Normative References 8.1. Normative References
8.2. Informative References 8.2. Informative References
Appendix A. Module Review Checklist Appendix A. Module Review Checklist
Appendix B. Template for IETF Modules Appendix B. Template for IETF Modules
Appendix C. Template for IANA-Maintained Modules Appendix C. Template for IANA-Maintained YANG Modules
Acknowledgments Acknowledgments
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
The standardization of network configuration interfaces for use with The standardization of network configuration interfaces for use with
network configuration management protocols, such as the Network network configuration management protocols, such as the Network
Configuration Protocol (NETCONF) [RFC6241] and RESTCONF [RFC8040], Configuration Protocol (NETCONF) [RFC6241] and RESTCONF [RFC8040],
requires a modular set of data models that can be reused and extended requires a modular set of data models that can be reused and extended
over time. over time.
skipping to change at line 191 skipping to change at line 191
descriptive usage guidelines that entails a higher level of descriptive usage guidelines that entails a higher level of
compliance than the minimum level defined in the YANG specification compliance than the minimum level defined in the YANG specification
[RFC7950]. [RFC7950].
In addition, YANG allows constructs such as infinite length In addition, YANG allows constructs such as infinite length
identifiers and string values, or top-level mandatory nodes, that a identifiers and string values, or top-level mandatory nodes, that a
compliant server is not required to support. Only constructs that compliant server is not required to support. Only constructs that
all servers are required to support can be used in IETF YANG modules. all servers are required to support can be used in IETF YANG modules.
This document defines usage guidelines related to the NETCONF This document defines usage guidelines related to the NETCONF
operations layer and NETCONF content layer, as defined in [RFC6241], Operations layer and NETCONF Content layer, as defined in [RFC6241],
and the RESTCONF methods and RESTCONF resources, as defined in and the RESTCONF methods and RESTCONF resources, as defined in
[RFC8040]. [RFC8040].
These guidelines are intended to be used by authors and reviewers to These guidelines are intended to be used by authors and reviewers to
improve the readability and interoperability of published YANG data improve the readability and interoperability of published YANG data
models. These guidelines can be used independent of the IETF Stream models. These guidelines can be used independent of the IETF Stream
of publication or even by other organizations. of publication or even by other organizations.
YANG 1.0 modules have to conform to [RFC6020] while YANG 1.1 modules YANG 1.0 modules have to conform to [RFC6020] while YANG 1.1 modules
have to conform to [RFC7950]; this document adds usage guidelines in have to conform to [RFC7950]; this document adds usage guidelines in
skipping to change at line 235 skipping to change at line 235
* Updated the guidance so that the "file name" after the <CODE * Updated the guidance so that the "file name" after the <CODE
BEGINS> tag is mandatory. BEGINS> tag is mandatory.
* Added code markers for the security template. * Added code markers for the security template.
* Updated the YANG security considerations template to better insist * Updated the YANG security considerations template to better insist
on the key secure transport features. on the key secure transport features.
* Added statements that the security template is not required for * Added statements that the security template is not required for
modules that follow [RFC8791] or [RFC7952]. modules that follow [RFC8791] or define YANG extensions such as
[RFC7952].
* Added a statement about how to cite the RFCs that are listed in * Added a statement about how to cite the RFCs that are listed in
the security template. the security template.
* Added a template for IANA registrations. * Added a template for IANA registrations.
* Added a note that folding of the examples should be done as per * Added a note that folding of the examples should be done as per
the conventions described in [RFC8792]. the conventions described in [RFC8792].
* Added a recommendation about long trees. * Added a recommendation about long trees.
skipping to change at line 265 skipping to change at line 266
* Added tool validation checks to ensure that YANG modules fit into * Added tool validation checks to ensure that YANG modules fit into
the line limits of an I-D. the line limits of an I-D.
* Added tool validation checks of JSON-encoded examples. * Added tool validation checks of JSON-encoded examples.
* Added a recommendation to ease extracting and validating examples. * Added a recommendation to ease extracting and validating examples.
* Updated many examples to be aligned with the consistent * Updated many examples to be aligned with the consistent
indentation recommendation (internal consistency). indentation recommendation (internal consistency).
* Updated the IANA considerations to encourage registration requests * Updated the guidance for writing IANA Considerations sections to
to indicate whether or not a module is maintained by IANA. encourage registration requests to indicate whether or not a
module is maintained by IANA.
* Added guidelines for IANA-maintained modules. * Added guidelines for IANA-maintained YANG modules.
* Added guidelines about the use of the terms "YANG module" and * Added guidelines about the use of the terms "YANG module" and
"YANG data model". "YANG data model".
* Elaborated the guidance for the use of values reserved for * Elaborated the guidance for the use of values reserved for
documentation in examples. documentation in examples.
* Recommended the use of "example:" for URI examples. * Recommended the use of "example:" for URI examples.
* Added a new section "Defining Standard Tags" (Section 4.28) to * Added a new section "Defining Standard Tags" (Section 4.28) to
skipping to change at line 306 skipping to change at line 308
* Fixed an inconsistency in Section 4.6.4 that failed to use * Fixed an inconsistency in Section 4.6.4 that failed to use
"derived-from-or-self()" mentioned back in Section 4.6.2. "derived-from-or-self()" mentioned back in Section 4.6.2.
* Added a new section for modeling abstract data structures. * Added a new section for modeling abstract data structures.
* Added a discussion about "must + error-message" constructs for * Added a discussion about "must + error-message" constructs for
state data. state data.
* Added text about summary of changes in revision statements. * Added text about summary of changes in revision statements.
* Added a template for IANA-maintained modules. * Added a template for IANA-maintained YANG modules.
* Updated the wiki URLs to use the new structure. * Updated the wiki URLs to use the new structure.
* Added anydata to the list of statements with mandatory * Added anydata to the list of statements with mandatory
description(s) (Section 4.14). description(s) (Section 4.14).
* Fixed an error (invalid statements) in Section 4.24. * Fixed an error (invalid statements) in Section 4.24.
* Softened generic I-D authorship guidance. * Softened generic I-D authorship guidance.
2. Terminology and Notation Conventions 2. Terminology and Notation Conventions
Some of the templates defined in the document use "--" to easily Some of the templates defined in the document use "--" to easily
identify specific instructions to the authors. Text prefixed with identify specific instructions to the authors. Text prefixed with
"--" must not be copied as such when using a template. Note that for "--" must not be copied as such when using a template. Note that for
YANG templates, "//" is used to convey such instructions. YANG templates, "//" is used to convey such instructions.
RFC IIII is used to refer to an RFC that defines an initial version RFC IIII is used to refer to an RFC that defines an initial version
of an IANA-maintained module. of an IANA-maintained YANG module.
The following terms are used throughout this document: The following terms are used throughout this document:
IANA-maintained module: A YANG module that is maintained by IANA and IANA-maintained YANG module: A YANG module that is maintained by
has an IANA registry associated with it (e.g., "iana-tunnel-type" IANA and has an IANA registry associated with it (e.g., "iana-
[RFC8675] or "iana-pseudowire-types" [RFC9291]). tunnel-type" [RFC8675] or "iana-pseudowire-types" [RFC9291]).
Once an IANA-maintained module is initialized, new values are not Once an IANA-maintained YANG module is initialized, new values are
directly added to the module. These values are instead added to not directly added to the module. These values are instead added
the companion registry. to the companion registry.
IETF module: A YANG module that is published as an RFC from the IETF IETF module: A YANG module that is published by the IETF and that is
Stream and that is not maintained by IANA. not maintained by IANA.
published: A stable release of a module or submodule. For example, published: A stable release of a module or submodule. For example,
the "Request for Comments" described in Section 2.1 of [RFC2026] the Request for Comments Series described in Section 2.1 of
is considered a stable publication. [RFC2026] is considered a stable publication.
unpublished: An unstable release of a module or submodule. For unpublished: An unstable release of a module or submodule. For
example, the "Internet-Draft" described in Section 2.2 of example, the Internet-Draft described in Section 2.2 of [RFC2026]
[RFC2026] is considered an unstable publication that is a work in is considered an unstable work in progress, subject to change at
progress and is subject to change at any time. any time.
YANG fragment: A set of YANG statements that is not intended to YANG fragment: A set of YANG statements that is not intended to
represent a complete YANG module or submodule. These statements represent a complete YANG module or submodule. These statements
are not intended for actual use, except to provide an example of are not intended for actual use, except to provide an example of
YANG statement usage. The invalid syntax "..." is sometimes used YANG statement usage. The invalid syntax "..." is sometimes used
to indicate that additional YANG statements would be present in a to indicate that additional YANG statements would be present in a
real YANG module. real YANG module.
YANG tree diagram: A diagram representing the contents of a YANG YANG tree diagram: A diagram representing the contents of a YANG
module, as defined in [RFC8340]. It is also called a "tree module, as defined in [RFC8340]. It is also called a "tree
diagram". diagram".
2.1. NETCONF Terms 2.1. NETCONF Terms
The following terms are defined in [RFC6241] and are not redefined The following terms are defined in [RFC6241] and are not redefined
here: here:
* capabilities * capability
* client * client
* operation * protocol operation (or simply "operation")
* server * server
2.2. YANG Terms 2.2. YANG Terms
The following terms are defined in [RFC7950] and are not redefined The following terms are defined in [RFC7950] and are not redefined
here: here:
* data node * data node
skipping to change at line 463 skipping to change at line 465
the body of the document where the overall design is described. the body of the document where the overall design is described.
"YANG module" should be used when a specific "*.yang" file is "YANG module" should be used when a specific "*.yang" file is
referenced. Likewise, "YANG module" should be used when using terms referenced. Likewise, "YANG module" should be used when using terms
related to YANG module specifications (e.g., augmentation or related to YANG module specifications (e.g., augmentation or
deviation). However, when extending the concepts embodied in a YANG deviation). However, when extending the concepts embodied in a YANG
module, authors should refer to those as an extension to the "YANG module, authors should refer to those as an extension to the "YANG
data model". data model".
3. General Documentation Guidelines 3. General Documentation Guidelines
YANG modules under review are likely to be contained in Internet- YANG modules being considered for publication in an RFC are contained
Drafts (I-Ds). Guidelines for authoring an I-D can be found at in Internet-Drafts (I-Ds). Guidelines for authoring an I-D can be
[ID-Guidelines]. These guidelines are not repeated here. found at [ID-Guidelines]. These guidelines are not repeated here.
The following sections MUST be present in an I-D or RFC containing a The following sections MUST be present in an I-D or RFC containing a
YANG module: YANG module:
* Narrative sections (Section 3.5) * Narrative sections (Section 3.5)
* A Definitions section (Section 3.6) * A Definitions section(s) (Section 3.6)
Additional YANG-specific considerations MUST be included for the Additional YANG-specific considerations MUST be included for the
following sections: following sections:
* Security Considerations (Section 3.7) * Security Considerations (Section 3.7)
* IANA Considerations (Section 3.8) * IANA Considerations (Section 3.8)
* References (Section 3.9) * References (Section 3.9)
skipping to change at line 566 skipping to change at line 568
structure. Guidelines on tree diagrams can be found in Section 3 of structure. Guidelines on tree diagrams can be found in Section 3 of
[RFC8340]. Tree diagrams longer than one page SHOULD be included in [RFC8340]. Tree diagrams longer than one page SHOULD be included in
an appendix, i.e., not in the main body of the document. an appendix, i.e., not in the main body of the document.
If YANG tree diagrams are used, then an informative reference to the If YANG tree diagrams are used, then an informative reference to the
YANG tree diagrams specification MUST be included in the document. YANG tree diagrams specification MUST be included in the document.
Refer to Section 2.2 of [RFC8349] for an example of such a reference. Refer to Section 2.2 of [RFC8349] for an example of such a reference.
3.5. Narrative Sections 3.5. Narrative Sections
The narrative part MUST include an overview section that describes The narrative sections MUST include an overview section that
the scope and field of application of the data model(s) defined by describes the scope and field of application of the data model(s)
the specification and that specifies the relationship (if any) of defined by the specification and that specifies the relationship (if
these data models to other standards, particularly to standards any) of these data models to other standards, particularly to
containing other YANG data models. The narrative part SHOULD include standards containing other YANG data models. The narrative part
one or more sections to briefly describe the structure of the data SHOULD include one or more sections to briefly describe the structure
models defined in the specification. of the data models defined in the specification.
If the module or modules defined by the specification imports If the module (or modules) defined by the specification imports
definitions from other modules (except for those defined in [RFC7950] definitions from other modules (except for those defined in [RFC7950]
or [RFC6991]) or are always implemented in conjunction with other or [RFC9911]) or is always implemented in conjunction with other
modules, then those facts MUST be noted in the overview section; any modules, then those facts MUST be noted in the overview section; any
special interpretations of definitions in other modules MUST be noted special interpretations of definitions in other modules MUST be noted
as well. Refer to Section 2.3 of [RFC8349] for an example of this as well. Refer to Section 2.3 of [RFC8349] for an example of this
overview section. overview section.
If the document contains major Network Management Datastore If the document contains major Network Management Datastore
Architecture (NMDA) exceptions or includes a temporary non-NMDA Architecture (NMDA) exceptions or includes a temporary non-NMDA
module [RFC8342], then the Introduction section SHOULD mention this module [RFC8342], then the Introduction section SHOULD mention this
fact with the reasoning that motivated that design. Refer to fact with the reasoning that motivated that design. Refer to
Section 4.23 for more NMDA-related guidance. Specifically, Section 4.23 for more NMDA-related guidance. Specifically,
skipping to change at line 643 skipping to change at line 645
Examples of network models are the L3VPN Network Model (L3NM) Examples of network models are the L3VPN Network Model (L3NM)
[RFC9182] or the L2VPN Network Model (L2NM) [RFC9291]. [RFC9182] or the L2VPN Network Model (L2NM) [RFC9291].
Device Model: Refers to the Network Element YANG data model Device Model: Refers to the Network Element YANG data model
described in [RFC8199] or the device configuration model discussed described in [RFC8199] or the device configuration model discussed
in [RFC8309]. in [RFC8309].
Device models are also used to model a function embedded in a Device models are also used to model a function embedded in a
device (e.g., Access Control Lists (ACLs) [RFC8519]). device (e.g., Access Control Lists (ACLs) [RFC8519]).
A comprehensive list of device models is provided in A non-comprehensive list of device models is provided in
Appendix A.4.2 of [RFC8969]. Appendix A.4.4 of [RFC8969].
3.6. Definitions Section 3.6. Definitions Section
This section contains the module(s) defined by the specification. This section contains the module(s) defined by the specification.
These modules SHOULD be written using the YANG 1.1 [RFC7950] syntax. These modules SHOULD be written using the YANG 1.1 [RFC7950] syntax.
YANG 1.0 [RFC6020] syntax MAY be used if no YANG 1.1 constructs or YANG 1.0 [RFC6020] syntax MAY be used if no YANG 1.1 constructs or
semantics are needed in the module. If any of the imported YANG semantics are needed in the module. If any of the imported YANG
modules are written using YANG 1.1, then the module MUST be written modules are written using YANG 1.1, then the module MUST be written
using YANG 1.1. using YANG 1.1.
skipping to change at line 669 skipping to change at line 671
affected by these guidelines. affected by these guidelines.
Note that if the module itself is considered normative and not an Note that if the module itself is considered normative and not an
example module or example YANG fragment, then all YANG statements example module or example YANG fragment, then all YANG statements
within a YANG module are considered normative. The use of keywords within a YANG module are considered normative. The use of keywords
defined in [RFC2119] and [RFC8174] apply to YANG "description" defined in [RFC2119] and [RFC8174] apply to YANG "description"
statements in normative modules exactly as they would in any other statements in normative modules exactly as they would in any other
normative section. normative section.
Example YANG modules and example YANG fragments MUST NOT contain any Example YANG modules and example YANG fragments MUST NOT contain any
normative text, including any all-uppercase reserved words from normative text, including any key words from [RFC2119] and [RFC8174].
[RFC2119] and [RFC8174].
Consistent indentation and formatting (e.g., folding) SHOULD be used Consistent indentation and formatting (e.g., folding) SHOULD be used
in all YANG statements within a module. in all YANG statements within a module.
See Section 4 for guidelines on YANG usage. See Section 4 for guidelines on YANG usage.
3.7. Security Considerations Section 3.7. Security Considerations Section
Each specification that defines one or more modules MUST contain a Each specification that defines one or more modules MUST contain a
section that discusses security considerations relevant to those section that discusses security considerations relevant to those
skipping to change at line 718 skipping to change at line 719
in [RFC8791] are not required to include the security template in in [RFC8791] are not required to include the security template in
Section 3.7.1. Likewise, following the template is not required for Section 3.7.1. Likewise, following the template is not required for
modules that define YANG extensions such as [RFC7952]. modules that define YANG extensions such as [RFC7952].
3.7.1. Security Considerations Section Template 3.7.1. Security Considerations Section Template
<CODE BEGINS> <CODE BEGINS>
X. Security Considerations X. Security Considerations
This section is modeled after the template described in Section 3.7 This section is modeled after the template described in Section 3.7.1
of [RFC9907]. of [RFC9907].
The "<module-name>" YANG module defines a data model that is The "<module-name>" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as designed to be accessed via YANG-based management protocols,
NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based such as Network Configuration Protocol (NETCONF) [RFC6241]
management protocols (1) have to use a secure transport layer and RESTCONF [RFC8040]. These YANG-based management protocols
(e.g., SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have (1) have to use a secure transport layer (e.g., Secure Shell (SSH)
to use mutual authentication. [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use
mutual authentication.
The Network Configuration Access Control Model (NACM) [RFC8341] The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content. RESTCONF protocol operations and content.
Note: RFC 8341 (or a future RFC that replaces it) MUST be listed
as a normative reference.
By default, RFC 4252, RFC 6241, RFC 8040, RFC 8446, RFC 9000, and
RFC 9907 (or future RFCs that replace any of them) are listed as
informative references unless normatively cited in other sections
of the document that specifies the YANG module.
-- Writable nodes section: -- Writable nodes section:
-- --
-- If the data model contains any writable data nodes (those are all -- If the data model contains any writable data nodes (those are all
-- the "config true" nodes), then include the following text: -- the "config true" nodes), then include the following text:
There are a number of data nodes defined in this YANG module that are There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., "config true", which is the writable/creatable/deletable (i.e., "config true", which is the
default). All writable data nodes are likely to be sensitive or default). All writable data nodes are likely to be sensitive or
vulnerable in some network environments. Write vulnerable in some network environments. Write
operations (e.g., edit-config) and delete operations to these data operations (e.g., edit-config) and delete operations to these data
skipping to change at line 773 skipping to change at line 783
Some of the readable data nodes in this YANG module may be considered Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. Specifically, the following notification) to these data nodes. Specifically, the following
subtrees and data nodes have particular sensitivities/ subtrees and data nodes have particular sensitivities/
vulnerabilities: vulnerabilities:
-- You must evaluate whether the data model contains any readable -- You must evaluate whether the data model contains any readable
-- data nodes (those are all the "config false" nodes, but also all -- data nodes (those are all the "config false" nodes, but also all
-- other nodes, because they can also be read via operations like get -- other nodes, because they can also be read via operations like get
-- or get-config) are particularly sensitive or vulnerable (e.g., -- or get-config) that are particularly sensitive or vulnerable
-- if they might reveal customer information or violate personal -- (e.g., if they might reveal customer information or violate
-- privacy laws). Typically, particularly sensitive readable -- personal privacy laws). Typically, particularly sensitive
-- data nodes are ones that are protected by a -- readable data nodes are ones that are protected by a
-- "nacm:default-deny-read" or a "nacm:default-deny-all" extensions -- "nacm:default-deny-read" or a "nacm:default-deny-all" extensions
-- statement. -- statement.
-- --
-- Otherwise, state: -- Otherwise, state:
-- "There are no particularly sensitive readable data nodes." -- "There are no particularly sensitive readable data nodes."
-- RPC/action operations section: -- RPC/action operations section:
-- --
-- If the data model contains any RPC or action operations, then -- If the data model contains any RPC or action operations, then
-- include the following text: -- include the following text:
skipping to change at line 806 skipping to change at line 816
-- here, along with an explanation of the associated specific -- here, along with an explanation of the associated specific
-- sensitivity or vulnerability concerns. -- sensitivity or vulnerability concerns.
-- --
-- Otherwise, state: -- Otherwise, state:
-- "There are no particularly sensitive RPC or action operations." -- "There are no particularly sensitive RPC or action operations."
-- Reusable groupings from other modules section: -- Reusable groupings from other modules section:
-- --
-- If the data model reuses groupings from other modules and -- If the data model reuses groupings from other modules and
-- the document that specifies these groupings also -- the document that specifies these groupings also
-- includes those as data nodes, then add this text to remind -- includes those as data nodes, then add this text as a
-- the specific sensitivity or vulnerability of reused nodes. -- reminder of the specific sensitivity or vulnerability of
-- reused nodes.
This YANG module uses groupings from other YANG modules that This YANG module uses groupings from other YANG modules that
define nodes that may be considered sensitive or vulnerable define nodes that may be considered sensitive or vulnerable
in network environments. Refer to the Security Considerations in network environments. Refer to the Security Considerations
of <RFC-insert-numbers> for information as to which nodes may of <RFC-insert-numbers> for information as to which nodes may
be considered sensitive or vulnerable in network environments. be considered sensitive or vulnerable in network environments.
-- No data nodes section: -- No data nodes section:
-- --
-- If the data model does not define any data nodes (i.e., none -- If the data model does not define any data nodes (i.e., none
skipping to change at line 835 skipping to change at line 846
As such, there are no additional security issues related to As such, there are no additional security issues related to
the YANG module that need to be considered. the YANG module that need to be considered.
Modules that use the groupings that are defined in this document Modules that use the groupings that are defined in this document
should identify the corresponding security considerations. For should identify the corresponding security considerations. For
example, reusing some of these groupings will expose privacy-related example, reusing some of these groupings will expose privacy-related
information (e.g., 'node-example'). information (e.g., 'node-example').
<CODE ENDS> <CODE ENDS>
| Note: [RFC8341] (or a future RFC that replaces it) MUST be
| listed as a normative reference.
|
| By default, [RFC4252], [RFC6241], [RFC8040], [RFC8446],
| [RFC9000], and RFC 9907 (or future RFCs that replace any of
| them) are listed as informative references unless normatively
| cited in other sections of the document that specifies the YANG
| module.
3.8. IANA Considerations Section 3.8. IANA Considerations Section
Each normative YANG module MUST be registered in both the "IETF XML Each normative YANG module MUST be registered in both the "IETF XML
Registry" group [RFC3688] [IANA-XML] and the "YANG Module Names" Registry" group [RFC3688] [IANA-XML] and the "YANG Module Names"
registry [RFC6020] [IANA-MOD-NAMES]. The registration request in the registry [RFC6020] [IANA-MOD-NAMES]. The registration request in the
"YANG Module Names" registry should indicate whether or not the "YANG Module Names" registry should indicate whether or not the
module is IANA-maintained. This applies to new modules and updated module is IANA-maintained. This applies to new modules and updated
modules. An example of an update registration for the "ietf- modules. An example of an update registration for the "ietf-
template" module can be found in Section 5. template" module can be found in Section 5.
Additional IANA considerations applicable to IANA-maintained modules Additional IANA considerations applicable to IANA-maintained YANG
(including instructions to maintain them) are provided in modules (including instructions to maintain them) are provided in
Section 4.30.3. Section 4.30.3.
3.8.1. Documents That Create a New Namespace 3.8.1. Documents That Create a New Namespace
If an I-D defines a new namespace that is to be administered by the If an I-D defines a new namespace that is to be administered by the
IANA, then the document MUST include an IANA Considerations section IANA, then the document MUST include an IANA Considerations section
that specifies how the namespace is to be administered. that specifies how the namespace is to be administered.
Specifically, if any YANG module namespace statement value contained Specifically, if any YANG module namespace statement value contained
in the document is not already registered with IANA, then a new entry in the document is not already registered with IANA, then a new entry
skipping to change at line 906 skipping to change at line 908
Name: Name:
Maintained by IANA? Y/N Maintained by IANA? Y/N
Namespace: Namespace:
Prefix: Prefix:
Reference: Reference:
3.8.3.2. IANA Template for Revising YANG Modules 3.8.3.2. IANA Template for Revising YANG Modules
A registration template for a revised module is provided below: A registration template for a revised module is provided below:
IANA is requested to update the following registration in the "ns" IANA is requested to update the following registration in the "ns"
registry within the "IETF XML Registry" group [RFC3688] to registry within the "IETF XML Registry" group [RFC3688] to
reference this document: reference this document:
URI: URI:
Registrant Contact: The IESG Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
IANA is requested to register the following YANG module in the "YANG IANA is requested to register the following YANG module in the "YANG
Module Names" registry [RFC6020] within the "YANG Parameters" Module Names" registry [RFC6020] [RFC9890] within the "YANG Parameters"
registry group. registry group.
Name: Name:
Maintained by IANA? Y/N Maintained by IANA? Y/N
Namespace: Namespace:
Prefix: Prefix:
Reference: Reference:
3.9. References Sections 3.9. References Sections
For every import or include statement that appears in a module For every import or include statement that appears in a module
contained in the specification that identifies a module in a separate contained in the specification that identifies a module in a separate
document, a corresponding normative reference to that document MUST document, a corresponding normative reference to that document MUST
appear in the Normative References section. The reference MUST appear in the Normative References section. The reference MUST
correspond to the specific module version actually used within the correspond to the specific module version actually used within the
specification. specification.
For every normative reference statement that appears in a module For every normative reference statement that appears in a module
contained in the specification that identifies a separate document, a contained in the specification that identifies a separate document, a
corresponding normative reference to that document SHOULD appear in corresponding normative reference to that document SHOULD appear in
the Normative References section. The reference SHOULD correspond to the Normative References section. The reference SHOULD correspond to
the specific document version actually used within the specification. the specific document version actually used within the specification.
If the reference statement identifies an informative reference that If the reference statement identifies an informative reference that
identifies a separate document, a corresponding informative reference identifies a separate document, a corresponding informative reference
to that document MAY appear in the Informative References section. to that document MAY appear in the Informative References section.
Except the "import" and "revision" statements, note that it is
acceptable to reference RFCs with their labels and without expanding
their titles. An example of such use is as follows:
leaf site-of-origin {
type rt-types:route-origin;
description
"The Site of Origin attribute is encoded as a Route Origin
Extended Community. It is meant to uniquely identify the
set of routes learned from a site via a particular AC and
is used to prevent routing loops.";
reference
"RFC 4364, Section 7";
}
leaf ipv6-site-of-origin {
type rt-types:ipv6-route-origin;
description
"The IPv6 Site of Origin attribute is encoded as an IPv6
Route Origin Extended Community. It is meant to uniquely
identify the set of routes learned from a site.";
reference
"RFC 5701";
}
}
3.10. Validation Tools 3.10. Validation Tools
All modules need to be validated before submission in an I-D. The All modules need to be validated before submission in an I-D. The
'pyang' YANG compiler is freely available from GitHub: 'pyang' YANG compiler is freely available from GitHub:
<https://github.com/mbj4668/pyang>. <https://github.com/mbj4668/pyang>.
If the 'pyang' compiler is used to validate a normative module, then If the 'pyang' compiler is used to validate a normative module, then
the "--ietf" command-line option MUST be used to identify any IETF the "--ietf" command-line option MUST be used to identify any IETF
guideline issues. guideline issues.
skipping to change at line 990 skipping to change at line 1017
The 'xym' tool is freely available on GitHub and can be used to The 'xym' tool is freely available on GitHub and can be used to
extract YANG modules from a document: <https://github.com/xym-tool/ extract YANG modules from a document: <https://github.com/xym-tool/
xym>. xym>.
3.12. Module Usage Examples 3.12. Module Usage Examples
Each specification that defines one or more modules SHOULD contain Each specification that defines one or more modules SHOULD contain
usage examples, either throughout the document or in an appendix. usage examples, either throughout the document or in an appendix.
This includes example instance document snippets in an appropriate This includes example instance document snippets in an appropriate
encoding (e.g., XML and/or JSON) to demonstrate the intended usage of encoding (e.g., XML and/or JSON) to demonstrate the intended usage of
the YANG module(s). Examples MUST be validated (Section 3.10). the YANG module(s). Examples that are meant to illustrate a valid
Refer to Section 3.10 for tools that validate YANG modules and data instance MUST be validated (Section 3.10). Refer to
examples. If IP addresses/prefixes are used, then a mix of either Section 3.10 for tools that validate YANG modules and examples. If
IPv4 and IPv6 addresses/prefixes or IPv6 addresses/prefixes IP addresses/prefixes are used, then a mix of either IPv4 and IPv6
exclusively SHOULD be used in the examples. addresses/prefixes or IPv6 addresses/prefixes exclusively SHOULD be
used in the examples.
For some types (IP addresses, domain names, etc.), the IETF has For some types (IP addresses, domain names, etc.), the IETF has
reserved values for documentation use. Authors SHOULD use these reserved values for documentation use. Authors SHOULD use these
reserved values in the usage examples if these types are used. reserved values in the usage examples if these types are used.
Examples of reserved values are listed below: Examples of reserved values are listed below:
* IPv4 and IPv6 addresses/prefixes reserved for documentation are * IPv4 and IPv6 addresses/prefixes reserved for documentation are
defined in [RFC5737], [RFC3849], and [RFC9637]. defined in [RFC5737], [RFC3849], and [RFC9637].
* The Enterprise Number 32473 reserved for documentation use is * The Enterprise Number 32473 reserved for documentation use is
skipping to change at line 1613 skipping to change at line 1641
The revision date substatement within the include statement SHOULD be The revision date substatement within the include statement SHOULD be
present if any groupings are used from the external submodule. present if any groupings are used from the external submodule.
If an import statement is for a module from a stable source (e.g., an If an import statement is for a module from a stable source (e.g., an
RFC for an IETF module), then a reference-stmt SHOULD be present RFC for an IETF module), then a reference-stmt SHOULD be present
within an import statement. within an import statement.
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 9911: Common YANG Data Types";
} }
If submodules are used, then the document containing the main module If submodules are used, then the document containing the main module
MUST be updated so that the main module revision date is equal to or MUST be updated so that the main module revision date is equal to or
more recent than the revision date of any submodule that is (directly more recent than the revision date of any submodule that is (directly
or indirectly) included by the main module. or indirectly) included by the main module.
Definitions for future use SHOULD NOT be specified in a module. Do Definitions for future use SHOULD NOT be specified in a module. Do
not specify placeholder objects like the "reserved" example below: not specify placeholder objects like the "reserved" example below:
skipping to change at line 1641 skipping to change at line 1669
4.8. Module Header, Meta, and Revision Statements 4.8. Module Header, Meta, and Revision Statements
For published modules, the namespace MUST be a globally unique URI, For published modules, the namespace MUST be a globally unique URI,
as defined in [RFC3986]. This value is usually assigned by the IANA. as defined in [RFC3986]. This value is usually assigned by the IANA.
The "organization" statement MUST be present. If the module is The "organization" statement MUST be present. If the module is
contained in a document intended for IETF Standards Track status, contained in a document intended for IETF Standards Track status,
then the organization SHOULD be the IETF working group (WG) chartered then the organization SHOULD be the IETF working group (WG) chartered
to write the document. Exceptions include (but are not limited to): to write the document. Exceptions include (but are not limited to):
example modules, IANA-maintained modules, or modules contained in AD- example modules, IANA-maintained YANG modules, or modules contained
sponsored documents. For other standards organizations, a similar in AD-sponsored documents. For other standards organizations, a
approach is also suggested. similar approach is also suggested.
The "contact" statement MUST be present. If the module is contained The "contact" statement MUST be present. If the module is contained
in a document intended for Standards Track status, then the WG web in a document intended for Standards Track status, then the WG web
and mailing information SHOULD be present, and the main document and mailing information SHOULD be present, and the main document
author or editor contact information SHOULD be present. If author or editor contact information SHOULD be present. If
additional authors or editors exist, their contact information MAY be additional authors or editors exist, their contact information MAY be
present. There is no need to include the contact information for WG present. There is no need to include the contact information for WG
Chairs. Chairs.
The "description" statement MUST be present. For modules published The "description" statement MUST be present. For modules published
skipping to change at line 1703 skipping to change at line 1731
revision. revision.
revision 2013-07-15 { revision 2013-07-15 {
description description
"This revision adds the following new data types: "This revision adds the following new data types:
- yang:yang-identifier - yang:yang-identifier
- yang:hex-string - yang:hex-string
- yang:uuid - yang:uuid
- yang:dotted-quad"; - yang:dotted-quad";
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 9911: Common YANG Data Types";
} }
revision 2010-09-24 { revision 2010-09-24 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 6021: Common YANG Data Types"; "RFC 6021: Common YANG Data Types";
} }
For an unpublished module, a complete history of each unpublished For an unpublished module, a complete history of each unpublished
skipping to change at line 1727 skipping to change at line 1755
module. A new revision date is not required unless the module module. A new revision date is not required unless the module
contents have changed. If the module contents have changed, then the contents have changed. If the module contents have changed, then the
revision date of that new module version MUST be updated to a date revision date of that new module version MUST be updated to a date
later than that of the previous version. later than that of the previous version.
The following example shows the revision statements for an The following example shows the revision statements for an
unpublished update to a published YANG module. The latest revision unpublished update to a published YANG module. The latest revision
statement of the unpublished module summarizes the changes compared statement of the unpublished module summarizes the changes compared
to the previous revision. to the previous revision.
revision 2023-01-23 { revision 2025-12-22 {
description description
"This revision adds the following new data types: "This revision adds the following new data types:
- yang:date-with-zone-offset - yang:date
- yang:date-no-zone - yang:date-no-zone
- yang:time-with-zone-offset - yang:time
- yang:time-no-zone - yang:time-no-zone
- yang:hours32 - yang:hours32
- yang:minutes32 - yang:minutes32
- yang:seconds32 - yang:seconds32
- yang:centiseconds32 - yang:centiseconds32
- yang:milliseconds32 - yang:milliseconds32
- yang:microseconds32 - yang:microseconds32
- yang:microseconds64 - yang:microseconds64
- yang:nanoseconds32 - yang:nanoseconds32
- yang:nanoseconds64 - yang:nanoseconds64
- yang:language-tag - yang:language-tag
The yang-identifier definition has been aligned with YANG 1.1. The yang-identifier definition has been aligned with YANG
Several pattern statements have been improved."; 1.1 and types representing time support the representation
of leap seconds. The representation of time zone offsets
has been aligned with RFC 9557. Several description and
pattern statements have been improved.";
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 9911: Common YANG Data Types";
} }
revision 2013-07-15 { revision 2013-07-15 {
description description
"This revision adds the following new data types: "This revision adds the following new data types:
- yang:yang-identifier - yang:yang-identifier
- yang:hex-string - yang:hex-string
- yang:uuid - yang:uuid
- yang:dotted-quad"; - yang:dotted-quad";
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 9911: Common YANG Data Types";
} }
revision 2010-09-24 { revision 2010-09-24 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 6021: Common YANG Data Types"; "RFC 6021: Common YANG Data Types";
} }
4.9. Namespace Assignments 4.9. Namespace Assignments
skipping to change at line 1922 skipping to change at line 1953
4.11.2. Patterns and Ranges 4.11.2. Patterns and Ranges
For string data types, if a machine-readable pattern can be defined For string data types, if a machine-readable pattern can be defined
for the desired semantics, then one or more pattern statements SHOULD for the desired semantics, then one or more pattern statements SHOULD
be present. A single-quoted string SHOULD be used to specify the be present. A single-quoted string SHOULD be used to specify the
pattern, since a double-quoted string can modify the content. If the pattern, since a double-quoted string can modify the content. If the
patterns used in a type definition have known limitations such as patterns used in a type definition have known limitations such as
false negative or false positive matches, then these limitations false negative or false positive matches, then these limitations
SHOULD be documented within the typedef or data definition. SHOULD be documented within the typedef or data definition.
The following typedef from [RFC6991] demonstrates the proper use of The following typedef from [RFC9911] demonstrates the proper use of
the "pattern" statement: the "pattern" statement:
typedef ipv6-address-no-zone { typedef ipv6-address-no-zone {
type inet:ipv6-address { type inet:ipv6-address {
pattern '[0-9a-fA-F:\.]*'; pattern '[0-9a-fA-F:\.]*';
} }
... ...
} }
For string data types, if the length of the string is required to be For string data types, if the length of the string is required to be
bounded in all implementations, then a length statement MUST be bounded in all implementations, then a length statement MUST be
present. present.
The following typedef from [RFC6991] demonstrates the proper use of The following typedef from [RFC9911] demonstrates the proper use of
the "length" statement: the "length" statement:
typedef yang-identifier { typedef yang-identifier {
type string { type string {
length "1..max"; length "1..max";
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
} }
... ...
} }
For numeric data types, if the values allowed by the intended For numeric data types, if the values allowed by the intended
semantics are different than those allowed by the unbounded intrinsic semantics are different than those allowed by the unbounded intrinsic
data type (e.g., "int32"), then a range statement SHOULD be present. data type (e.g., "int32"), then a range statement SHOULD be present.
The following typedef from [RFC6991] demonstrates the proper use of The following typedef from [RFC9911] demonstrates the proper use of
the "range" statement: the "range" statement:
typedef dscp { typedef dscp {
type uint8 { type uint8 {
range "0..63"; range "0..63";
} }
... ...
} }
4.11.3. Enumerations and Bits 4.11.3. Enumerations and Bits
skipping to change at line 2095 skipping to change at line 2126
Correct: Correct:
leaf flag2 { leaf flag2 {
type boolean; type boolean;
default false; default false;
} }
4.12. Reusable Type Definitions 4.12. Reusable Type Definitions
If an appropriate derived type exists in any standard module, such as If an appropriate derived type exists in any standard module, such as
[RFC6991], then it SHOULD be used instead of defining a new derived [RFC9911], then it SHOULD be used instead of defining a new derived
type. type.
If an appropriate units identifier can be associated with the desired If an appropriate units identifier can be associated with the desired
semantics, then a units statement SHOULD be present. semantics, then a units statement SHOULD be present.
If an appropriate default value can be associated with the desired If an appropriate default value can be associated with the desired
semantics, then a default statement SHOULD be present. semantics, then a default statement SHOULD be present.
If a significant number of derived types are defined, and it is If a significant number of derived types are defined, and it is
anticipated that these data types will be reused by multiple modules, anticipated that these data types will be reused by multiple modules,
skipping to change at line 2921 skipping to change at line 2952
4.25. Open Systems Considerations 4.25. Open Systems Considerations
Only the modules imported by a particular module can be assumed to be Only the modules imported by a particular module can be assumed to be
present in an implementation. An open system MAY include any present in an implementation. An open system MAY include any
combination of YANG modules. combination of YANG modules.
4.26. Guidelines for Constructs Specific to YANG 1.1 4.26. Guidelines for Constructs Specific to YANG 1.1
The set of guidelines for YANG 1.1 will grow as operational The set of guidelines for YANG 1.1 will grow as operational
experience is gained with the new language features. This section experience is gained with the new language features. This section
contains an initial set of guidelines for new YANG 1.1 language contains an initial set of guidelines for YANG 1.1 language features.
features.
4.26.1. Importing Multiple Revisions 4.26.1. Importing Multiple Revisions
Standard modules SHOULD NOT import multiple revisions of the same Standard modules SHOULD NOT import multiple revisions of the same
module into a module. This MAY be done if independent definitions module into a module. This MAY be done if independent definitions
(e.g., enumeration typedefs) from specific revisions are needed in (e.g., enumeration typedefs) from specific revisions are needed in
the importing module. the importing module.
4.26.2. Using Feature Logic 4.26.2. Using Feature Logic
skipping to change at line 3017 skipping to change at line 3047
The YANG update rules only apply to published module revisions. Each The YANG update rules only apply to published module revisions. Each
organization will have their own way to identify published work that organization will have their own way to identify published work that
is considered to be stable and unpublished work that is considered to is considered to be stable and unpublished work that is considered to
be unstable. For example, in the IETF, an RFC is used for published be unstable. For example, in the IETF, an RFC is used for published
work, and an I-D is used for unpublished work. work, and an I-D is used for unpublished work.
4.28. Defining Standard Tags 4.28. Defining Standard Tags
[RFC8819] specifies a method for associating tags with YANG modules. [RFC8819] specifies a method for associating tags with YANG modules.
Tags may be defined and associated at the time of module design, at Tags may be defined and associated at design time, at implementation
the time of implementation, or via user administrative control. time, or via user administrative control. Design-time tags are
Design-time tags are indicated using the module-tag extension indicated using the module-tag extension statement.
statement.
A module MAY indicate, using module-tag extension statements, a set A module MAY indicate, using module-tag extension statements, a set
of tags that are to be automatically associated with it (i.e., not of tags that are to be automatically associated with it (i.e., not
added through configuration). added through configuration).
module example-module { module example-module {
namespace "https://example.com/yang/example"; namespace "https://example.com/yang/example";
prefix "ex"; prefix "ex";
//... //...
import module-tags { prefix tags; } import module-tags { prefix tags; }
skipping to change at line 3055 skipping to change at line 3084
(e.g., protocol messages), the use of the "structure" extension (e.g., protocol messages), the use of the "structure" extension
statement [RFC8791] is RECOMMENDED compared to the "yang-data" statement [RFC8791] is RECOMMENDED compared to the "yang-data"
extension statement [RFC8040]. Examples of modules that rely upon extension statement [RFC8040]. Examples of modules that rely upon
the "structure" extension statement from [RFC8791] can be found in the "structure" extension statement from [RFC8791] can be found in
[RFC9132] or [RFC9195]. [RFC9132] or [RFC9195].
Abstract data structures can be augmented using the "augment- Abstract data structures can be augmented using the "augment-
structure" statement [RFC8791]. Examples of modules that augment structure" statement [RFC8791]. Examples of modules that augment
abstract data structures can be found in [RFC9244] and [RFC9362]. abstract data structures can be found in [RFC9244] and [RFC9362].
4.30. IANA-Maintained Modules 4.30. IANA-Maintained YANG Modules
4.30.1. Context 4.30.1. Context
IANA maintains a set of registries that are key for interoperability. IANA maintains a set of registries that are key for interoperability.
The content of these registries is usually available using various The content of these registries is usually available using various
formats (e.g., plain text or XML). However, there was some confusion formats (e.g., plain text or XML). However, there was some confusion
in the past about whether the content of some registries is dependent in the past about whether the content of some registries is dependent
on a specific representation format. For example, Section 5 of on a specific representation format. For example, Section 5 of
[RFC8892] was published to clarify that MIB and YANG modules are [RFC8892] was published to clarify that MIB and YANG modules are
merely additional formats in which the "Interface Types (ifType)" and merely additional formats in which the "Interface Types (ifType)" and
skipping to change at line 3081 skipping to change at line 3110
A design in which a YANG module includes parameters and values A design in which a YANG module includes parameters and values
directly in a module that is not maintained by IANA while these are directly in a module that is not maintained by IANA while these are
populated in an IANA registry could lead to ambiguity and maintain populated in an IANA registry could lead to ambiguity and maintain
stale information. Such a design creates another source of stale information. Such a design creates another source of
information that may deviate from the IANA registry as new values are information that may deviate from the IANA registry as new values are
assigned or some values are deprecated. assigned or some values are deprecated.
For the sake of consistency and the ability to support new values For the sake of consistency and the ability to support new values
while maintaining IANA registries as the unique authoritative source while maintaining IANA registries as the unique authoritative source
of information, this document recommends the use of IANA-maintained of information, this document recommends the use of IANA-maintained
modules as the single source of information. YANG modules as the single source of information.
The following section provides a set of guidelines for YANG module The following section provides a set of guidelines for YANG module
authors related to the design of IANA-maintained modules. These authors related to the design of IANA-maintained YANG modules. These
guidelines are meant to leverage existing IANA registries and use guidelines are meant to leverage existing IANA registries and use
YANG as another format to present the content of these registries YANG as another format to present the content of these registries
when appropriate. when appropriate.
4.30.2. Guidelines for IANA-Maintained Modules 4.30.2. Guidelines for IANA-Maintained YANG Modules
When designing a YANG module for a functionality governed by a When designing a YANG module for a functionality governed by a
protocol for which IANA maintains a registry, it is RECOMMENDED to protocol for which IANA maintains a registry, it is RECOMMENDED to
specify an IANA-maintained module that echoes the content of that specify an IANA-maintained YANG module that echoes the content of
registry. This is superior to including that content in an IETF- that registry. This is superior to including that content in an
maintained module. IETF-maintained module.
When one or multiple registries are available under the same registry When one or multiple registries are available under the same registry
group, it is RECOMMENDED to define an IANA-maintained module for each group, it is RECOMMENDED to define an IANA-maintained YANG module for
registry. However, module designers MAY consider defining one single each registry. However, module designers MAY consider defining one
IANA-maintained module that covers all registries if maintaining that single IANA-maintained YANG module that covers all registries if
single module is manageable (e.g., very few values are present or maintaining that single module is manageable (e.g., very few values
expected to be present for each registry). An example of such a are present or expected to be present for each registry). An example
module is documented in Section 5.2 of [RFC9132]. of such a module is documented in Section 5.2 of [RFC9132].
An IANA-maintained module may use the "identityref" data type (e.g., An IANA-maintained YANG module may use the "identityref" data type
[RFC8675]) or an enumeration data type (e.g., [RFC9108]). See approach (e.g., [RFC8675]) or an enumeration data type approach
Section 4.11.1 for a guidance on which data type to use. The (e.g., [RFC9108]). See Section 4.11.1 for a guidance on which data
decision about which type to use should be made based upon specifics type to use. The decision about which type to use should be made
related to the intended use of the IANA-maintained module. For based upon specifics related to the intended use of the IANA-
example, identities are useful if the registry entries are organized maintained YANG module. For example, identities are useful if the
hierarchically, possibly including multiple inheritances. The registry entries are organized hierarchically, possibly including
reasoning for the design choice MUST be documented in the companion multiple inheritances. The reasoning for the design choice MUST be
specification that registers an IANA-maintained module. For example, documented in the companion specification that registers an IANA-
[RFC9244] defines an IANA-maintained module that uses enumerations maintained YANG module. For example, [RFC9244] defines an IANA-
for the following reason: maintained YANG module that uses enumerations for the following
reason:
| The DOTS telemetry module (Section 11.1) uses "enumerations" | The DOTS telemetry module (Section 11.1) uses "enumerations"
| rather than "identities" to define units, samples, and intervals | rather than "identities" to define units, samples, and intervals
| because otherwise the namespace identifier "ietf-dots-telemetry" | because otherwise the namespace identifier "ietf-dots-telemetry"
| must be included when a telemetry attribute is included (e.g., in | must be included when a telemetry attribute is included (e.g., in
| a mitigation efficacy update). The use of "identities" is thus | a mitigation efficacy update). The use of "identities" is thus
| suboptimal from the standpoint of message compactness, as message | suboptimal from the standpoint of message compactness, as message
| compactness is one of the key requirements for DOTS signal channel | compactness is one of the key requirements for DOTS signal channel
| messages. | messages.
Designers of IANA-maintained modules MAY supply the full initial Designers of IANA-maintained YANG modules MAY supply the initial full
version of the module in a specification document that registers the version of the module in a specification document that registers the
module or only a script to be used (including by IANA) for generating module or only a script to be used (including by IANA) for generating
the module (e.g., an Extensible Stylesheet Language Transformations the module (e.g., an Extensible Stylesheet Language Transformations
(XSLT) stylesheet as in Appendix A of [RFC9108] or a Python script as (XSLT) stylesheet as in Appendix A of [RFC9108] or a Python script as
in [RFC9645]). For both cases, the document that defines an IANA- in [RFC9645]). For both cases, the document that defines an IANA-
maintained module MUST include a note indicating that the document is maintained YANG module MUST include a note indicating that the
only documenting the initial version of the module and that the document is only documenting the initial version of the module and
authoritative version is to be retrieved from the IANA registry. that the authoritative version is to be retrieved from the IANA
Also, the IANA-maintained module MUST include the following note registry. Also, the IANA-maintained module MUST include the
indicating the RFC that registered the initial version of the IANA- following note indicating the RFC that registered the initial version
maintained module: of the IANA-maintained YANG module:
| The initial version of this YANG module is part of RFC IIII; see | The initial version of this YANG module is part of RFC IIII; see
| the RFC itself for full legal notices. | the RFC itself for full legal notices.
It is RECOMMENDED to include the URL from where to retrieve the It is RECOMMENDED to include the URL from where to retrieve the
recent version of the module. When a script is used, the Internet- recent version of the module. When a script is used, the Internet-
Draft that defines an IANA-maintained module has to include an Draft that defines an IANA-maintained YANG module has to include an
appendix with the full script and SHOULD include an appendix with the appendix with the full script and SHOULD include an appendix with the
initial full version of the module. Including such an appendix in initial full version of the module. Including such an appendix in
pre-RFC versions is meant to assess the correctness of the outcome of Internet-Drafts is meant to assess the correctness of the outcome of
the supplied script. The authors MUST include a note to the RFC the supplied script. The authors MUST include a note to the RFC
Editor requesting that the appendix with the initial version of the Editor requesting that the appendix with the initial version of the
module be removed before publication as RFC and that RFC IIII is module be removed before publication as RFC and that RFC IIII is
replaced with the RFC number that is assigned to the document. replaced with the RFC number that is assigned to the document.
Initial versions of IANA-maintained modules that are published in Initial versions of IANA-maintained YANG modules that are published
RFCs may be misused despite the appropriate language to refer to the in RFCs may be misused despite the appropriate language to refer to
IANA registry to retrieve the up-to-date module. This is problematic the IANA registry to retrieve the up-to-date module. This is
for interoperability, e.g., when values are deprecated or are problematic for interoperability, e.g., when values are deprecated or
associated with a new meaning. are associated with a new meaning.
| Note: [Style] provides XSLT 1.0 stylesheets and other tools for | Note: [Style] provides XSLT 1.0 stylesheets and other tools for
| translating IANA registries to YANG modules. The tools can be | translating IANA registries to YANG modules. The tools can be
| used to generate up-to-date revisions of an IANA-maintained | used to generate up-to-date revisions of an IANA-maintained
| module based upon the XML representation of an IANA registry. | YANG module based upon the XML representation of an IANA
| registry.
If an IANA-maintained module is imported by another module, a If an IANA-maintained YANG module is imported by another module, a
normative reference with the IANA URL from which to retrieve the normative reference with the IANA URL from which to retrieve the
IANA-maintained module SHOULD be included. Although not encouraged, IANA-maintained YANG module SHOULD be included. Although not
referencing the RFC that defines the initial version of the IANA encouraged, referencing the RFC that defines the initial version of
module is acceptable in specific cases (e.g., the imported version is the IANA module is acceptable in specific cases (e.g., the imported
specifically the initial version, the RFC includes useful description version is specifically the initial version, the RFC includes useful
about the usage of the module). description about the usage of the module).
Examples of IANA URLs from which to retrieve the latest version of an Examples of IANA URLs from which to retrieve the latest version of an
IANA-maintained module are as follows: [IANA_BGP-L2_URL], IANA-maintained YANG module are as follows:
[IANA_PW-Types_URL], and [IANA_BFD_URL]. "IANA_FOO_URL" is used in
the following to refer to such URLs. These URLs are expected to be
sufficiently permanent and stable. Whenever referencing a specific
version of an IANA-maintained module is needed, then URLs such as
[IANA_BGP-L2_URL-Revision] are used. "IANA_FOO_URL_With_REV" is used
in the following to refer to such URLs.
A template for IANA-maintained modules is provided in Appendix C. * https://www.iana.org/assignments/iana-bgp-l2-encaps,
* https://www.iana.org/assignments/iana-pseudowire-types, and
* https://www.iana.org/assignments/iana-bfd-types.
"IANA_FOO_URL" is used in the following to refer to such URLs. These
URLs are expected to be sufficiently permanent and stable.
Whenever referencing a specific version of an IANA-maintained YANG
module is needed, then URLs such as the following are used:
* https://www.iana.org/assignments/iana-bgp-l2-encaps
"IANA_FOO_URL_With_REV" is used in the following to refer to such
URLs.
A template for IANA-maintained YANG modules is provided in
Appendix C.
4.30.3. Guidance for Writing the IANA Considerations for RFCs Defining 4.30.3. Guidance for Writing the IANA Considerations for RFCs Defining
IANA-Maintained Modules IANA-Maintained YANG Modules
In addition to the IANA considerations in Section 3.8, the IANA In addition to the IANA considerations in Section 3.8, the IANA
Considerations section of an RFC that includes an IANA-maintained Considerations section of an RFC that includes an IANA-maintained
module MUST provide the required instructions for IANA to YANG module MUST provide the required instructions for IANA to
automatically perform the maintenance of that IANA module. These automatically perform the maintenance of that IANA module. These
instructions describe how to proceed with updates to the IANA- instructions describe how to proceed with updates to the IANA-
maintained module that are triggered by a change to the authoritative maintained YANG module that are triggered by a change to the
registry. Concretely, the IANA Considerations section SHALL at least authoritative registry. Concretely, the IANA Considerations section
provide the following information: SHALL at least provide the following information:
* A request to IANA to add a note to the page displaying the * A request to IANA to add a note to the page displaying the
information about the IANA-maintained module that new values must information about the IANA-maintained YANG module that new values
not be directly added to the module. These values should be added must not be directly added to the module. These values should be
to an authoritative IANA registry. added to an authoritative IANA registry.
* A request to IANA to add a note to the authoritative IANA registry * A request to IANA to add a note to the authoritative IANA registry
to indicate that any change to the registry must be reflected into to indicate that any change to the registry must be reflected into
the corresponding IANA-maintained module. That is, any changes to the corresponding IANA-maintained YANG module. That is, any
the registry must be accompanied by an update to the corresponding changes to the registry must be accompanied by an update to the
IANA-maintained module. corresponding IANA-maintained YANG module.
* Details about the required actions (e.g., add a new "identity" or * Details about the required actions (e.g., add a new "identity" or
"enum" statement) to update the IANA-maintained module to reflect "enum" statement) to update the IANA-maintained YANG module to
changes to an authoritative IANA registry. Typically, these reflect changes to an authoritative IANA registry. Typically,
details have to include the procedure to create a new "identity" these details have to include the procedure to create a new
statement name and substatements ("base", "status", "description", "identity" statement name and substatements ("base", "status",
and "reference") or a new "enum" statement and substatements "description", and "reference") or a new "enum" statement and
("value", "status", "description", and "reference"). substatements ("value", "status", "description", and "reference").
- When creating a new "identity" statement name or a new "enum" - When creating a new "identity" statement name or a new "enum"
statement, it is RECOMMENDED to use the same name (if present) statement, it is RECOMMENDED to use the same name (if present)
as recorded in the IANA registry. as recorded in the IANA registry.
- If the name in the IANA registry does not comply with the - If the name in the IANA registry does not comply with the
naming conventions listed in Section 4.3.1, the procedure MUST naming conventions listed in Section 4.3.1, the procedure MUST
detail how IANA can generate legal identifiers from such a detail how IANA can generate legal identifiers from such a
name. Specifically, if the name begins with a number, it is name. Specifically, if the name begins with a number, it is
RECOMMENDED to spell out (i.e., write in full) the number when RECOMMENDED to spell out (i.e., not use a digit) the number
used as an identifier. IANA should be provided with when used as an identifier. IANA should be provided with
instructions to perform such a task. For example, authors of a instructions to perform such a task. For example, authors of a
module with such identifiers have to indicate whether: module with such identifiers have to indicate whether:
o "3des-cbc" should be "three-des-cbc" or rather "triple-des- o "3des-cbc" should be "three-des-cbc" or rather "triple-des-
cbc" to be consistent with Section 6.3 of [RFC4253]. cbc" to be consistent with Section 6.3 of [RFC4253].
o "6to4" should be "sixToFour" as in [RFC7224] or "sixtofour" o "6to4" should be "sixToFour" as in [RFC7224] or "sixtofour"
as in [RFC8675]. as in [RFC8675].
- If a new registration uses an identifier that does not comply - If a new registration uses an identifier that does not comply
with the naming conventions listed in Section 4.3.1, IANA with the naming conventions listed in Section 4.3.1, IANA
should check if guidance to generate legal identifiers was should check if guidance to generate legal identifiers was
supplied in the RFC that specified the initial version of the supplied in the RFC that specified the initial version of the
module. If no such guidance is available, IANA should check module. If no such guidance is available, IANA should check
the latest revision of the IANA-maintained module for similar the latest revision of the IANA-maintained YANG module for
patterns. If all else fails, IANA should seek advice from similar patterns. If all else fails, IANA should seek advice
relevant registry experts (e.g., designated experts for a from relevant registry experts (e.g., designated experts for a
registry using the Expert Review policy (Section 4.5 of registry using the Expert Review policy (Section 4.5 of
[RFC8126]) or responsible area director). [RFC8126]) or responsible area director).
* A note that unassigned or reserved values must not be present in * A note that unassigned or reserved values must not be present in
the IANA-maintained module. the IANA-maintained YANG module.
* An instruction whether experimental values should be included in * An instruction whether experimental values should be included in
the IANA-maintained module. If no instruction is provided, the IANA-maintained YANG module. If no instruction is provided,
experimental values MUST NOT be listed in the IANA-maintained experimental values MUST NOT be listed in the IANA-maintained YANG
module. module.
* An instruction about how to generate the "revision" statement. * An instruction about how to generate the "revision" statement.
A template for the IANA Considerations is provided in A template for the IANA Considerations is provided in
Section 4.30.3.1 for IANA-maintained modules with identities and Section 4.30.3.1 for IANA-maintained YANG modules with identities and
Section 4.30.3.2 for IANA-maintained modules with enumerations. Section 4.30.3.2 for IANA-maintained YANG modules with enumerations.
Authors may modify the template to reflect specifics of their modules Authors may modify the template to reflect specifics of their modules
(e.g., multiple registries can be listed for a single IANA-maintained (e.g., multiple registries can be listed for a single IANA-maintained
module, no explicit description (or name) field is listed under the YANG module, no explicit description (or name) field is listed under
authoritative IANA registry, or the name does not comply with YANG the authoritative IANA registry, or the name does not comply with
naming conventions (Section 4.3.1)). YANG naming conventions (Section 4.3.1)).
An example of "revision" statements that are generated following the An example of "revision" statements that are generated following the
guidance in Section 4.30.3.1 is provided below: guidance in Section 4.30.3.1 is provided below:
revision 2023-11-27 { revision 2023-11-27 {
description description
"Registered RR Type RESINFO 261."; "Registered RR Type RESINFO 261.";
reference reference
"https://www.iana.org/assignments/yang-parameters/" "https://www.iana.org/assignments/yang-parameters/"
+ "iana-dns-class-rr-type@2023-11-27.yang"; + "iana-dns-class-rr-type@2023-11-27.yang";
skipping to change at line 3333 skipping to change at line 3376
"Initial revision."; "Initial revision.";
reference reference
"RFC 8675: A YANG Data Model for Tunnel Interface Types"; "RFC 8675: A YANG Data Model for Tunnel Interface Types";
} }
... ...
identity ipsectunnelmode { identity ipsectunnelmode {
base ift:tunnel; base ift:tunnel;
description description
"IPsec tunnel mode encapsulation."; "IpSec tunnel mode encapsulation.";
reference reference
"RFC 4301: Security Architecture for the Internet Protocol"; "RFC 4301: Security Architecture for the Internet Protocol";
} }
The following example shows how to generate the "revision" statements The following example shows how to generate the "revision" statements
following the guidance in Section 4.30.3.1: following the guidance in Section 4.30.3.1:
revision 2021-04-23 { revision 2021-04-23 {
description description
"Registered tunnelType 19."; "Registered tunnelType 19.";
skipping to change at line 3360 skipping to change at line 3403
revision 2019-11-16 { revision 2019-11-16 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 8675: A YANG Data Model for Tunnel Interface Types"; "RFC 8675: A YANG Data Model for Tunnel Interface Types";
} }
... ...
identity ipsectunnelmode { identity ipsectunnelmode {
base ift:tunnel; base ift:tunnel;
description description
"IPsec tunnel mode encapsulation."; "IpSec tunnel mode encapsulation.";
reference reference
"RFC 4301: Security Architecture for the Internet Protocol"; "RFC 4301: Security Architecture for the Internet Protocol";
} }
The templates in the following subsections are to be considered in The templates in the following subsections are to be considered in
addition to the required information that is provided in Section 3.8. addition to the required information that is provided in Section 3.8.
4.30.3.1. Template for IANA-Maintained Modules with Identities 4.30.3.1. Template for IANA-Maintained YANG Modules with Identities
<CODE BEGINS> <CODE BEGINS>
This document defines the initial version of the IANA-maintained This document defines the initial version of the IANA-maintained
"iana-foo" YANG module. The most recent version of the YANG module "iana-foo" YANG module. The most recent version of the YANG module
is available from the "YANG Parameters" registry group is available from the "YANG Parameters" registry group
[IANA-YANG-PARAMETERS]. [IANA-YANG-PARAMETERS].
IANA is requested to add this note to the registry: IANA is requested to add this note to the registry:
skipping to change at line 3450 skipping to change at line 3493
-- used as an identifier. -- used as an identifier.
IANA is requested to add this note to [reference-to-the-iana-foo- IANA is requested to add this note to [reference-to-the-iana-foo-
registry]: registry]:
When this registry is modified, the YANG module "iana-foo" When this registry is modified, the YANG module "iana-foo"
[IANA_FOO_URL] must be updated as defined in RFC IIII. [IANA_FOO_URL] must be updated as defined in RFC IIII.
<CODE ENDS> <CODE ENDS>
4.30.3.2. Template for IANA-Maintained Modules with Enumerations 4.30.3.2. Template for IANA-Maintained YANG Modules with Enumerations
<CODE BEGINS> <CODE BEGINS>
This document defines the initial version of the IANA-maintained This document defines the initial version of the IANA-maintained
"iana-foo" YANG module. The most recent version of the YANG module "iana-foo" YANG module. The most recent version of the YANG module
is available from the "YANG Parameters" registry group is available from the "YANG Parameters" registry group
[IANA-YANG-PARAMETERS]. [IANA-YANG-PARAMETERS].
IANA is requested to add this note to the registry: IANA is requested to add this note to the registry:
skipping to change at line 3553 skipping to change at line 3596
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
IANA has registered the following URI in the "ns" registry within the IANA has registered the following URI in the "ns" registry within the
"IETF XML Registry" registry group [RFC3688]: "IETF XML Registry" registry group [RFC3688]:
URI: urn:ietf:params:xml:ns:yang:iana-template URI: urn:ietf:params:xml:ns:yang:iana-template
Registrant Contact: The IESG Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
IANA has registered the following YANG modules in the "YANG Module IANA has registered the following YANG modules in the "YANG Module
Names" registry [RFC6020] within the "YANG Parameters" registry Names" registry [RFC6020] [RFC9890] within the "YANG Parameters"
group. registry group.
Name: ietf-template Name: ietf-template
Maintained by IANA? N Maintained by IANA? N
Namespace: urn:ietf:params:xml:ns:yang:ietf-template Namespace: urn:ietf:params:xml:ns:yang:ietf-template
Prefix: temp Prefix: temp
Reference: RFC 9907 Reference: RFC 9907
Name: iana-template Name: iana-template
Maintained by IANA? N Maintained by IANA? N
Namespace: urn:ietf:params:xml:ns:yang:iana-template Namespace: urn:ietf:params:xml:ns:yang:iana-template
Prefix: iana-foo Prefix: iana-foo
Reference: RFC 9907 Reference: RFC 9907
5.2. Update in YANG Parameters Registry Group 5.2. Update in YANG Parameters Registry Group
For the references of the "YANG Module Names" registry under the For the references of the "YANG Module Names" registry under the
"YANG Parameters" registry group, IANA has updated [RFC8407] to this "YANG Parameters" registry group, IANA has updated [RFC8407] to this
document, as it contains the template necessary for registration in document, as it contains the template necessary for registration in
Appendix B. Appendix B.
5.3. IANA-Maintained Modules 5.3. IANA-Maintained YANG Modules
IANA should refer to Section 4.30.3 for information necessary to IANA should refer to Section 4.30.3 for information necessary to
populate "revision" statements and "identity" and "enum" populate "revision" statements and "identity" and "enum"
substatements in IANA-maintained modules. These considerations cover substatements in IANA-maintained YANG modules. These considerations
both the creation and maintenance of an IANA-mainatined module. In cover both the creation and maintenance of an IANA-mainatined module.
particular, the following should be noted: In particular, the following should be noted:
* When an underlying registration is deprecated or obsoleted, a * When an underlying registration is deprecated or obsoleted, a
corresponding "status" substatement should be added to the corresponding "status" substatement should be added to the
identity or enumeration statement. identity or enumeration statement.
* The "reference" substatement should point specifically to the * The "reference" substatement should point specifically to the
published module (i.e., IANA_FOO_URL_With_REV). When the published module (i.e., IANA_FOO_URL_With_REV). When the
registration is triggered by an RFC, that RFC must also be registration is triggered by an RFC, that RFC must also be
included in the "reference" substatement. It may also point to an included in the "reference" substatement. It may also point to an
authoritative event triggering the update to the YANG module. In authoritative event triggering the update to the YANG module. In
skipping to change at line 3695 skipping to change at line 3738
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
"Handling Long Lines in Content of Internet-Drafts and "Handling Long Lines in Content of Internet-Drafts and
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
<https://www.rfc-editor.org/info/rfc8792>. <https://www.rfc-editor.org/info/rfc8792>.
[RFC8819] Hopps, C., Berger, L., and D. Bogdanovic, "YANG Module [RFC8819] Hopps, C., Berger, L., and D. Bogdanovic, "YANG Module
Tags", RFC 8819, DOI 10.17487/RFC8819, January 2021, Tags", RFC 8819, DOI 10.17487/RFC8819, January 2021,
<https://www.rfc-editor.org/info/rfc8819>. <https://www.rfc-editor.org/info/rfc8819>.
[RFC9890] Bierman, A., Boucadair, M., Ed., and Q. Wu, "An Update to
YANG Module Names Registration", RFC 9890,
DOI 10.17487/RFC9890, October 2025,
<https://www.rfc-editor.org/info/rfc9890>.
[W3C.REC-xpath] [W3C.REC-xpath]
Clark, J., Ed. and S. DeRose, Ed., "XML Path Language Clark, J., Ed. and S. DeRose, Ed., "XML Path Language
(XPath) Version 1.0", W3C Recommendation, 16 November (XPath) Version 1.0", W3C Recommendation, 16 November
1999, <https://www.w3.org/TR/1999/REC-xpath-19991116>. 1999, <https://www.w3.org/TR/1999/REC-xpath-19991116>.
8.2. Informative References 8.2. Informative References
[Err5693] RFC Errata, Erratum ID 5693, RFC 8407, [Err5693] RFC Errata, Erratum ID 5693, RFC 8407,
<https://www.rfc-editor.org/errata/eid5693>. <https://www.rfc-editor.org/errata/eid5693>.
skipping to change at line 3729 skipping to change at line 3777
IANA, "YANG Module Tags", IANA, "YANG Module Tags",
<https://www.iana.org/assignments/yang-module-tags/>. <https://www.iana.org/assignments/yang-module-tags/>.
[IANA-XML] IANA, "IETF XML Registry", [IANA-XML] IANA, "IETF XML Registry",
<https://www.iana.org/assignments/xml-registry/>. <https://www.iana.org/assignments/xml-registry/>.
[IANA-YANG-PARAMETERS] [IANA-YANG-PARAMETERS]
IANA, "YANG Parameters", IANA, "YANG Parameters",
<https://www.iana.org/assignments/yang-parameters>. <https://www.iana.org/assignments/yang-parameters>.
[IANA_BFD_URL]
IANA, "iana-bfd-types YANG Module",
<https://www.iana.org/assignments/iana-bfd-types>.
[IANA_BGP-L2_URL]
IANA, "iana-bgp-l2-encaps YANG Module",
<https://www.iana.org/assignments/iana-bgp-l2-encaps>.
[IANA_BGP-L2_URL-Revision]
IANA, "iana-bfd-types@2021-10-21.yang",
<https://www.iana.org/assignments/yang-parameters/iana-
bfd-types@2021-10-21.yang>.
[IANA_PW-Types_URL]
IANA, "iana-pseudowire-types YANG Module",
<https://www.iana.org/assignments/iana-pseudowire-types>.
[IANA_Tunnel_Type_URL] [IANA_Tunnel_Type_URL]
IANA, "iana-tunnel-type YANG Module", IANA, "iana-tunnel-type YANG Module",
<https://www.iana.org/assignments/iana-tunnel-type>. <https://www.iana.org/assignments/iana-tunnel-type>.
[ID-Guidelines] [ID-Guidelines]
IETF, "Content guidelines overview", IETF, "Content guidelines overview",
<https://authors.ietf.org/en/content-guidelines-overview>. <https://authors.ietf.org/en/content-guidelines-overview>.
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision [RFC2026] Bradner, S., "The Internet Standards Process -- Revision
3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996, 3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996,
skipping to change at line 3800 skipping to change at line 3831
[RFC5612] Eronen, P. and D. Harrington, "Enterprise Number for [RFC5612] Eronen, P. and D. Harrington, "Enterprise Number for
Documentation Use", RFC 5612, DOI 10.17487/RFC5612, August Documentation Use", RFC 5612, DOI 10.17487/RFC5612, August
2009, <https://www.rfc-editor.org/info/rfc5612>. 2009, <https://www.rfc-editor.org/info/rfc5612>.
[RFC5737] Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks [RFC5737] Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks
Reserved for Documentation", RFC 5737, Reserved for Documentation", RFC 5737,
DOI 10.17487/RFC5737, January 2010, DOI 10.17487/RFC5737, January 2010,
<https://www.rfc-editor.org/info/rfc5737>. <https://www.rfc-editor.org/info/rfc5737>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>.
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface [RFC7223] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, Management", RFC 7223, DOI 10.17487/RFC7223, May 2014,
<https://www.rfc-editor.org/info/rfc7223>. <https://www.rfc-editor.org/info/rfc7223>.
[RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module",
RFC 7224, DOI 10.17487/RFC7224, May 2014, RFC 7224, DOI 10.17487/RFC7224, May 2014,
<https://www.rfc-editor.org/info/rfc7224>. <https://www.rfc-editor.org/info/rfc7224>.
[RFC7407] Bjorklund, M. and J. Schoenwaelder, "A YANG Data Model for [RFC7407] Bjorklund, M. and J. Schoenwaelder, "A YANG Data Model for
SNMP Configuration", RFC 7407, DOI 10.17487/RFC7407, SNMP Configuration", RFC 7407, DOI 10.17487/RFC7407,
skipping to change at line 3934 skipping to change at line 3961
<https://www.rfc-editor.org/info/rfc9362>. <https://www.rfc-editor.org/info/rfc9362>.
[RFC9637] Huston, G. and N. Buraglio, "Expanding the IPv6 [RFC9637] Huston, G. and N. Buraglio, "Expanding the IPv6
Documentation Space", RFC 9637, DOI 10.17487/RFC9637, Documentation Space", RFC 9637, DOI 10.17487/RFC9637,
August 2024, <https://www.rfc-editor.org/info/rfc9637>. August 2024, <https://www.rfc-editor.org/info/rfc9637>.
[RFC9645] Watsen, K., "YANG Groupings for TLS Clients and TLS [RFC9645] Watsen, K., "YANG Groupings for TLS Clients and TLS
Servers", RFC 9645, DOI 10.17487/RFC9645, October 2024, Servers", RFC 9645, DOI 10.17487/RFC9645, October 2024,
<https://www.rfc-editor.org/info/rfc9645>. <https://www.rfc-editor.org/info/rfc9645>.
[RFC9911] Schönwälder, J., Ed., "Common YANG Data Types", RFC 9911,
DOI 10.17487/RFC9911, December 2025,
<https://www.rfc-editor.org/info/rfc9911>.
[Style] "IANA YANG", commit 3a6cb69, December 2021, [Style] "IANA YANG", commit 3a6cb69, December 2021,
<https://github.com/llhotka/iana-yang>. <https://github.com/llhotka/iana-yang>.
Appendix A. Module Review Checklist Appendix A. Module Review Checklist
This section is adapted from [RFC4181]. This section is adapted from [RFC4181].
The purpose of a YANG module review is to review the YANG module for The purpose of a YANG module review is to review the YANG module for
both technical correctness and adherence to IETF documentation both technical correctness and adherence to IETF documentation
requirements. The following checklist may be helpful when reviewing requirements. The following checklist may be helpful when reviewing
an I-D: an I-D:
* I-D Boilerplate: Verify that the document contains the required * I-D Boilerplate: Verify that the document contains the required
I-D boilerplate (see <https://www.ietf.org/id-info/ sections (see <https://authors.ietf.org/required-content>).
guidelines.html>), including the appropriate statement to permit
publication as an RFC, and that the I-D boilerplate does not
contain references or section numbers.
* Abstract: Verify that the abstract does not contain references, * Abstract: Verify that the abstract does not contain references,
that it does not have a section number, and that its content that it does not have a section number, and that its content
follows the guidelines in <https://www.ietf.org/id-info/ follows the guidelines in <https://www.ietf.org/id-info/
guidelines.html>. guidelines.html>.
* Copyright Notice: Verify that the document has the appropriate * Copyright Notice: Verify that the document has the appropriate
text regarding the rights that document contributors provide to text regarding the rights that document contributors provide to
the IETF Trust [RFC5378]. Verify that it contains the full IETF the IETF Trust [RFC5378]. Verify that it contains the full IETF
Trust copyright notice at the beginning of the document. The IETF Trust copyright notice at the beginning of the document. The IETF
skipping to change at line 4048 skipping to change at line 4076
// import ietf-yang-types { prefix yang; } // import ietf-yang-types { prefix yang; }
// import ietf-inet-types { prefix inet; } // import ietf-inet-types { prefix inet; }
// identify the IETF working group if applicable // identify the IETF working group if applicable
organization organization
"IETF your-wg-name (Expanded WG Name) Working Group"; "IETF your-wg-name (Expanded WG Name) Working Group";
// update this contact statement with your info // update this contact statement with your info
contact contact
"WG Web: <http://datatracker.ietf.org/wg/your-wg-name/> "WG Web: http://datatracker.ietf.org/wg/your-wg-name
WG List: <mailto:your-wg-name@ietf.org> WG List: YOUR-WG-NAME <mailto:your-wg-name@ietf.org>
Editor: your-name Editor: your-name
<mailto:your-email@example.com>"; <mailto:your-email@example.com>";
// replace the first sentence in this description statement. // replace the first sentence in this description statement.
// replace the copyright notice with the most recent // replace the copyright notice with the most recent
// version, if it has been updated since the publication // version, if it has been updated since the publication
// of this document. // of this document.
description description
skipping to change at line 4079 skipping to change at line 4107
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry group at the YANG Parameters registry group
(https://www.iana.org/assignments/yang-parameters). (https://www.iana.org/assignments/yang-parameters).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
// replace 'date-revision' with the module publication date // replace 'date-revision' with the module publication date
// the format is (YYYY-MM-DD) // the format is (YYYY-MM-DD)
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
revision date-revision { revision date-revision {
description description
"What changed in this revision."; "What changed in this revision.";
reference reference
"RFC XXXX: <Replace With Document Title>"; "RFC XXXX: <Replace With Document Title>";
} }
// RFC Ed.: Update with the RFC number and title // Authors: Update with the RFC number and title
// of the RFC that defined the initial version of // of the RFC that defined the initial version of
// the module and remove this note // the module and remove this note
revision date-initial { revision date-initial {
description description
"Initial version."; "Initial version.";
reference reference
"RFC XXXX: <Replace With Document Title>"; "RFC IIII: <Replace With Document Title>";
} }
// extension statements // extension statements
// feature statements // feature statements
// identity statements // identity statements
// typedef statements // typedef statements
// grouping statements // grouping statements
// data definition statements // data definition statements
// augment statements // augment statements
// rpc statements // rpc statements
// notification statements // notification statements
// DO NOT put deviation statements in a published module // DO NOT put deviation statements in a published module
} }
<CODE ENDS> <CODE ENDS>
Appendix C. Template for IANA-Maintained Modules Appendix C. Template for IANA-Maintained YANG Modules
<CODE BEGINS> file "iana-template@2023-12-08.yang" <CODE BEGINS> file "iana-template@2023-12-08.yang"
module iana-template { module iana-template {
yang-version 1.1; yang-version 1.1;
// replace this string with a unique namespace URN value // replace this string with a unique namespace URN value
namespace "urn:ietf:params:xml:ns:yang:iana-template"; namespace "urn:ietf:params:xml:ns:yang:iana-template";
// replace with the assigned prefix // replace with the assigned prefix
skipping to change at line 4140 skipping to change at line 4168
organization organization
"Internet Assigned Numbers Authority (IANA)"; "Internet Assigned Numbers Authority (IANA)";
contact contact
"Internet Assigned Numbers Authority "Internet Assigned Numbers Authority
ICANN ICANN
12025 Waterfront Drive, Suite 300 12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094 Los Angeles, CA 90094
Tel: +1 424 254 5300 Tel: +1 310 301 5800
<mailto:iana@iana.org>"; <mailto:iana@iana.org>";
description description
"This module defines a template for IANA-maintained modules. "This module defines a template for IANA-maintained modules.
Copyright (c) <insert year> IETF Trust and the persons Copyright (c) <insert year> IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
skipping to change at line 4240 skipping to change at line 4268
Michal Vaško reported an inconsistency in Sections 4.6.2 and 4.6.4 of Michal Vaško reported an inconsistency in Sections 4.6.2 and 4.6.4 of
[RFC8407]. [RFC8407].
Thanks to Xufeng Liu for reviewing the document, including providing Thanks to Xufeng Liu for reviewing the document, including providing
YANGDOCTORS reviews. YANGDOCTORS reviews.
Italo Busi provided the examples of "case + when" construct. Italo Busi provided the examples of "case + when" construct.
Thanks to Rich Salz and Michael Richardson for the SAAG review. Thanks to Rich Salz and Michael Richardson for the SAAG review.
Kent Watsen contributed text to the security and IANA-maintained Kent Watsen contributed text to the security and IANA-maintained YANG
module templates. module templates.
Special thanks to Amanda Baber for the thoughtful and careful review Special thanks to Amanda Baber for the thoughtful and careful review
of the document. of the document.
Thanks to Qiufang Ma for the careful shepherd review. Thanks to Qiufang Ma for the careful shepherd review.
Thanks to Acee Lindem for triggering the discussion on data model Thanks to Acee Lindem for triggering the discussion on data model
versus module. versus module.
 End of changes. 100 change blocks. 
250 lines changed or deleted 278 lines changed or added

This html diff was produced by rfcdiff 1.48.