draft-ietf-netmod-yang-usage-11.txt | rfc6087.txt | |||
---|---|---|---|---|
Internet Engineering Task Force A. Bierman | Internet Engineering Task Force (IETF) A. Bierman | |||
Internet-Draft Brocade | Request for Comments: 6087 Brocade | |||
Intended status: Informational October 2, 2010 | Category: Informational January 2011 | |||
Expires: April 5, 2011 | ISSN: 2070-1721 | |||
Guidelines for Authors and Reviewers of YANG Data Model Documents | Guidelines for Authors and Reviewers of YANG Data Model Documents | |||
draft-ietf-netmod-yang-usage-11 | ||||
Abstract | Abstract | |||
This memo provides guidelines for authors and reviewers of standards | This memo provides guidelines for authors and reviewers of Standards | |||
track specifications containing YANG data model modules. Applicable | Track specifications containing YANG data model modules. Applicable | |||
portions may be used as a basis for reviews of other YANG data model | portions may be used as a basis for reviews of other YANG data model | |||
documents. Recommendations and procedures are defined, which are | documents. Recommendations and procedures are defined, which are | |||
intended to increase interoperability and usability of Network | intended to increase interoperability and usability of Network | |||
Configuration Protocol (NETCONF) implementations which utilize YANG | Configuration Protocol (NETCONF) implementations that utilize YANG | |||
data model modules. | data model modules. | |||
Status of this Memo | Status of This Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | ||||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This document is not an Internet Standards Track specification; it is | |||
Task Force (IETF). Note that other groups may also distribute | published for informational purposes. | |||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are a candidate for any level of Internet | ||||
Standard; see Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on April 5, 2011. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc6087. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2011 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. Requirements Notation . . . . . . . . . . . . . . . . . . 5 | 2.1. Requirements Notation . . . . . . . . . . . . . . . . . . 3 | |||
2.2. NETCONF Terms . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. NETCONF Terms . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.3. YANG Terms . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. YANG Terms . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.4. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. General Documentation Guidelines . . . . . . . . . . . . . . . 7 | 3. General Documentation Guidelines . . . . . . . . . . . . . . . 5 | |||
3.1. Module Copyright . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Module Copyright . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.2. Narrative Sections . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Narrative Sections . . . . . . . . . . . . . . . . . . . . 6 | |||
3.3. Definitions Section . . . . . . . . . . . . . . . . . . . 8 | 3.3. Definitions Section . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Security Considerations Section . . . . . . . . . . . . . 8 | 3.4. Security Considerations Section . . . . . . . . . . . . . 6 | |||
3.5. IANA Considerations Section . . . . . . . . . . . . . . . 9 | 3.5. IANA Considerations Section . . . . . . . . . . . . . . . 7 | |||
3.5.1. Documents that Create a New Name Space . . . . . . . . 9 | 3.5.1. Documents that Create a New Namespace . . . . . . . . 7 | |||
3.5.2. Documents that Extend an Existing Name Space . . . . . 9 | 3.5.2. Documents that Extend an Existing Namespace . . . . . 8 | |||
3.6. Reference Sections . . . . . . . . . . . . . . . . . . . . 10 | 3.6. Reference Sections . . . . . . . . . . . . . . . . . . . . 8 | |||
4. YANG Usage Guidelines . . . . . . . . . . . . . . . . . . . . 11 | 4. YANG Usage Guidelines . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Module Naming Conventions . . . . . . . . . . . . . . . . 11 | 4.1. Module Naming Conventions . . . . . . . . . . . . . . . . 8 | |||
4.2. Identifiers . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.2. Identifiers . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.3. Defaults . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.3. Defaults . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.4. Conditional Statements . . . . . . . . . . . . . . . . . . 12 | 4.4. Conditional Statements . . . . . . . . . . . . . . . . . . 10 | |||
4.5. XPath Usage . . . . . . . . . . . . . . . . . . . . . . . 12 | 4.5. XPath Usage . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.6. Lifecycle Management . . . . . . . . . . . . . . . . . . . 13 | 4.6. Lifecycle Management . . . . . . . . . . . . . . . . . . . 11 | |||
4.7. Module Header, Meta, and Revision Statements . . . . . . . 14 | 4.7. Module Header, Meta, and Revision Statements . . . . . . . 12 | |||
4.8. Namespace Assignments . . . . . . . . . . . . . . . . . . 15 | 4.8. Namespace Assignments . . . . . . . . . . . . . . . . . . 13 | |||
4.9. Top Level Data Definitions . . . . . . . . . . . . . . . . 16 | 4.9. Top-Level Data Definitions . . . . . . . . . . . . . . . . 14 | |||
4.10. Data Types . . . . . . . . . . . . . . . . . . . . . . . . 16 | 4.10. Data Types . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.11. Reusable Type Definitions . . . . . . . . . . . . . . . . 17 | 4.11. Reusable Type Definitions . . . . . . . . . . . . . . . . 15 | |||
4.12. Data Definitions . . . . . . . . . . . . . . . . . . . . . 18 | 4.12. Data Definitions . . . . . . . . . . . . . . . . . . . . . 15 | |||
4.13. Operation Definitions . . . . . . . . . . . . . . . . . . 19 | 4.13. Operation Definitions . . . . . . . . . . . . . . . . . . 17 | |||
4.14. Notification Definitions . . . . . . . . . . . . . . . . . 19 | 4.14. Notification Definitions . . . . . . . . . . . . . . . . . 17 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
6.1. Security Considerations Section Template . . . . . . . . . 21 | 6.1. Security Considerations Section Template . . . . . . . . . 19 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 25 | 8.1. Normative References . . . . . . . . . . . . . . . . . . . 20 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 25 | 8.2. Informative References . . . . . . . . . . . . . . . . . . 21 | |||
Appendix A. Module Review Checklist . . . . . . . . . . . . . . . 27 | Appendix A. Module Review Checklist . . . . . . . . . . . . . . . 22 | |||
Appendix B. YANG Module Template . . . . . . . . . . . . . . . . 29 | Appendix B. YANG Module Template . . . . . . . . . . . . . . . . 24 | |||
Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 32 | ||||
C.1. Changes from 10 to 11 . . . . . . . . . . . . . . . . . . 32 | ||||
C.2. Changes from 09 to 10 . . . . . . . . . . . . . . . . . . 32 | ||||
C.3. Changes from 08 to 09 . . . . . . . . . . . . . . . . . . 32 | ||||
C.4. Changes from 07 to 08 . . . . . . . . . . . . . . . . . . 32 | ||||
C.5. Changes from 06 to 07 . . . . . . . . . . . . . . . . . . 32 | ||||
C.6. Changes from 05 to 06 . . . . . . . . . . . . . . . . . . 32 | ||||
C.7. Changes from 04 to 05 . . . . . . . . . . . . . . . . . . 33 | ||||
C.8. Changes from 03 to 04 . . . . . . . . . . . . . . . . . . 33 | ||||
C.9. Changes from 02 to 03 . . . . . . . . . . . . . . . . . . 34 | ||||
C.10. Changes from 01 to 02 . . . . . . . . . . . . . . . . . . 34 | ||||
C.11. Changes from 00 to 01 . . . . . . . . . . . . . . . . . . 34 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
1. Introduction | 1. Introduction | |||
The standardization of network configuration interfaces for use with | The standardization of network configuration interfaces for use with | |||
the Network Configuration Protocol (NETCONF) [RFC4741] requires a | the Network Configuration Protocol (NETCONF) [RFC4741] requires a | |||
modular set of data models, which can be reused and extended over | modular set of data models, which can be reused and extended over | |||
time. | time. | |||
This document defines a set of usage guidelines for standards track | This document defines a set of usage guidelines for Standards Track | |||
documents containing YANG [I-D.ietf-netmod-yang] data models. YANG | documents containing YANG [RFC6020] data models. YANG is used to | |||
is used to define the data structures, protocol operations, and | define the data structures, protocol operations, and notification | |||
notification content used within a NETCONF server. A server which | content used within a NETCONF server. A server that supports a | |||
supports a particular YANG module will support client NETCONF | particular YANG module will support client NETCONF operation | |||
operation requests, as indicated by the specific content defined in | requests, as indicated by the specific content defined in the YANG | |||
the YANG module. | module. | |||
This document is similar to the SMIv2 usage guidelines specification | This document is similar to the Structure of Management Information | |||
[RFC4181] in intent and structure. However, since that document was | version 2 (SMIv2) usage guidelines specification [RFC4181] in intent | |||
written a decade after SMIv2 modules had been in use, it was | and structure. However, since that document was written a decade | |||
published as a 'best current practice' (BCP). This document is not a | after SMIv2 modules had been in use, it was published as a 'Best | |||
BCP, but rather an informational reference, intended to promote | Current Practice' (BCP). This document is not a BCP, but rather an | |||
consistency in documents containing YANG modules. | informational reference, intended to promote consistency in documents | |||
containing YANG modules. | ||||
Many YANG constructs are defined as optional to use, such as the | Many YANG constructs are defined as optional to use, such as the | |||
description statement. However, in order to maximize | description statement. However, in order to maximize | |||
interoperability of NETCONF implementations utilizing YANG data | interoperability of NETCONF implementations utilizing YANG data | |||
models, it is desirable to define a set of usage guidelines which may | models, it is desirable to define a set of usage guidelines that may | |||
require a higher level of compliance than the minimum level defined | require a higher level of compliance than the minimum level defined | |||
in the YANG specification. | in the YANG specification. | |||
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 which | 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 [RFC4741]. | operations layer and NETCONF content layer, as defined in [RFC4741]. | |||
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. | models. | |||
2. Terminology | 2. Terminology | |||
2.1. Requirements Notation | 2.1. Requirements Notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
skipping to change at page 5, line 33 | skipping to change at page 4, line 25 | |||
o capabilities | o capabilities | |||
o client | o client | |||
o operation | o operation | |||
o server | o server | |||
2.3. YANG Terms | 2.3. YANG Terms | |||
The following terms are defined in [I-D.ietf-netmod-yang] and are not | The following terms are defined in [RFC6020] and are not redefined | |||
redefined here: | here: | |||
o data node | o data node | |||
o module | o module | |||
o namespace | o namespace | |||
o submodule | o submodule | |||
o version | o version | |||
o YANG | o YANG | |||
o YIN | o YIN | |||
Note that the term 'module' may be used as a generic term for a YANG | Note that the term 'module' may be used as a generic term for a YANG | |||
module or submodule. When describing properties which are specific | module or submodule. When describing properties that are specific to | |||
to submodules, the term 'submodule' is used instead. | submodules, the term 'submodule' is used instead. | |||
2.4. Terms | 2.4. Terms | |||
The following terms are used throughout this document: | The following terms are used throughout this document: | |||
published: A stable release of a module or submodule, usually | published: A stable release of a module or submodule, usually | |||
contained in an RFC. | contained in an RFC. | |||
unpublished: An unstable release of a module or submodule, usually | unpublished: An unstable release of a module or submodule, usually | |||
contained in an Internet-Draft. | contained in an Internet-Draft. | |||
3. General Documentation Guidelines | 3. General Documentation Guidelines | |||
YANG data model modules under review are likely to be contained in | YANG data model modules under review are likely to be contained in | |||
Internet-Drafts. All guidelines for Internet-Draft authors MUST be | Internet-Drafts. All guidelines for Internet-Draft authors MUST be | |||
followed. These guidelines are defined in [RFC2223] and updated in | followed. The RFC Editor provides guidelines for authors of RFCs, | |||
[RFC5741]. Additional information is also available online at: | which are first published as Internet-Drafts. These guidelines | |||
should be followed and are defined in [RFC2223] and updated in | ||||
http://www.rfc-editor.org/rfc-editor/instructions2authors.txt | [RFC5741] and "RFC Document Style" [RFC-STYLE]. | |||
The following sections MUST be present in an Internet-Draft | The following sections MUST be present in an Internet-Draft | |||
containing a module: | containing a module: | |||
o Narrative sections | o Narrative sections | |||
o Definitions section | o Definitions section | |||
o Security Considerations section | o Security Considerations section | |||
o IANA Considerations section | o IANA Considerations section | |||
o References section | o References section | |||
3.1. Module Copyright | 3.1. Module Copyright | |||
The module description statement MUST contain a reference to the | The module description statement MUST contain a reference to the | |||
latest approved IETF Trust Copyright statement, which is available | latest approved IETF Trust Copyright statement, which is available | |||
on-line at: | online at: | |||
http://trustee.ietf.org/license-info/ | http://trustee.ietf.org/license-info/ | |||
Each YANG module or submodule contained within an Internet-Draft or | Each YANG module or submodule contained within an Internet-Draft or | |||
RFC is considered to be a code component. The strings '<CODE | RFC is considered to be a code component. The strings '<CODE | |||
BEGINS>' and '<CODE ENDS>' MUST be used to identify each code | BEGINS>' and '<CODE ENDS>' MUST be used to identify each code | |||
component. | component. | |||
The '<CODE BEGINS>' tag SHOULD be followed by a string identifying | The '<CODE BEGINS>' tag SHOULD be followed by a string identifying | |||
the file name specified in section 5.2 of [I-D.ietf-netmod-yang]. | the file name specified in Section 5.2 of [RFC6020]. The following | |||
The following example is for the '2010-01-18' revision of the 'ietf- | example is for the '2010-01-18' revision of the 'ietf-foo' module: | |||
foo' module: | ||||
<CODE BEGINS> file "ietf-foo@2010-01-18.yang" | <CODE BEGINS> file "ietf-foo@2010-01-18.yang" | |||
module ietf-foo { | module ietf-foo { | |||
// ... | // ... | |||
revision 2010-01-18 { | revision 2010-01-18 { | |||
description "Latest revision"; | description "Latest revision"; | |||
reference "RFC XXXXX"; | reference "RFC XXXX"; | |||
} | } | |||
// ... | // ... | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 1 | ||||
3.2. Narrative Sections | 3.2. Narrative Sections | |||
The narrative part MUST include an overview section that describes | The narrative part MUST include an overview section that describes | |||
the scope and field of application of the module(s) defined by the | the scope and field of application of the module(s) defined by the | |||
specification and that specifies the relationship (if any) of these | specification and that specifies the relationship (if any) of these | |||
modules to other standards, particularly to standards containing | modules to other standards, particularly to standards containing | |||
other YANG modules. The narrative part SHOULD include one or more | other YANG modules. The narrative part SHOULD include one or more | |||
sections to briefly describe the structure of the modules defined in | sections to briefly describe the structure of the modules defined in | |||
the specification. | the specification. | |||
If the module(s) defined by the specification import definitions from | If the module(s) defined by the specification imports definitions | |||
other modules (except for those defined in the YANG | from other modules (except for those defined in the YANG [RFC6020] or | |||
[I-D.ietf-netmod-yang] or YANG Types [I-D.ietf-netmod-yang-types] | YANG Types [RFC6021] documents), or are always implemented in | |||
documents), or are always implemented in conjunction with other | conjunction with other modules, then those facts MUST be noted in the | |||
modules, then those facts MUST be noted in the overview section, as | overview section, as MUST be noted any special interpretations of | |||
MUST be noted any special interpretations of definitions in other | definitions in other modules. | |||
modules. | ||||
3.3. Definitions Section | 3.3. Definitions Section | |||
This section contains the module(s) defined by the specification. | This section contains the module(s) defined by the specification. | |||
These modules MUST be written using the YANG syntax defined in | These modules MUST be written using the YANG syntax defined in | |||
[I-D.ietf-netmod-yang]. A YIN syntax version of the module MAY also | [RFC6020]. A YIN syntax version of the module MAY also be present in | |||
be present in the document. There MAY also be other types of modules | the document. There MAY also be other types of modules present in | |||
present in the document, such as SMIv2, which are not affected by | the document, such as SMIv2, which are not affected by these | |||
these guidelines. | guidelines. | |||
See Section 4 for guidelines on YANG usage. | See Section 4 for guidelines on YANG usage. | |||
3.4. Security Considerations Section | 3.4. 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 | |||
modules. This section MUST be patterned after the latest approved | modules. | |||
template (available at | ||||
This section MUST be patterned after the latest approved template | ||||
(available at | ||||
http://www.ops.ietf.org/netconf/yang-security-considerations.txt). | http://www.ops.ietf.org/netconf/yang-security-considerations.txt). | |||
Section 6.1 contains the security considerations template dated | ||||
2010-06-16. Authors MUST check the webpage at the URL listed above | ||||
in case there is a more recent version available. | ||||
In particular: | In particular: | |||
o Writable data nodes that could be especially disruptive if abused | o Writable data nodes that could be especially disruptive if abused | |||
MUST be explicitly listed by name and the associated security | MUST be explicitly listed by name and the associated security | |||
risks MUST be explained. | risks MUST be explained. | |||
o Readable data nodes that contain especially sensitive information | o Readable data nodes that contain especially sensitive information | |||
or that raise significant privacy concerns MUST be explicitly | or that raise significant privacy concerns MUST be explicitly | |||
listed by name and the reasons for the sensitivity/privacy | listed by name and the reasons for the sensitivity/privacy | |||
concerns MUST be explained. | concerns MUST be explained. | |||
o Operations (i.e., YANG 'rpc' statements) which are potentially | o Operations (i.e., YANG 'rpc' statements) that are potentially | |||
harmful to system behavior or that raise significant privacy | harmful to system behavior or that raise significant privacy | |||
concerns MUST be explicitly listed by name and the reasons for the | concerns MUST be explicitly listed by name and the reasons for the | |||
sensitivity/privacy concerns MUST be explained. | sensitivity/privacy concerns MUST be explained. | |||
3.5. IANA Considerations Section | 3.5. IANA Considerations Section | |||
In order to comply with IESG policy as set forth in | In order to comply with IESG policy as set forth in | |||
http://www.ietf.org/ID-Checklist.html, every Internet-Draft that is | http://www.ietf.org/id-info/checklist.html, every Internet-Draft that | |||
submitted to the IESG for publication which has action items for IANA | is submitted to the IESG for publication MUST contain an IANA | |||
MUST contain an IANA Considerations section. The requirements for | Considerations section. The requirements for this section vary | |||
this section vary depending what actions are required of the IANA. | depending on what actions are required of the IANA. If there are no | |||
If there are no IANA considerations applicable to the document, then | IANA considerations applicable to the document, then the IANA | |||
the IANA Considerations section is not required. Refer to the | Considerations section stating that there are no actions is removed | |||
guidelines in [RFC5226] for more details. | by the RFC Editor before publication. Refer to the guidelines in | |||
[RFC5226] for more details. | ||||
3.5.1. Documents that Create a New Name Space | 3.5.1. Documents that Create a New Namespace | |||
If an Internet-Draft defines a new name space that is to be | If an Internet-Draft defines a new namespace that is to be | |||
administered by the IANA, then the document MUST include an IANA | administered by the IANA, then the document MUST include an IANA | |||
Considerations section, that specifies how the name space is to be | Considerations section that specifies how the namespace is to be | |||
administered. | 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 YANG | in the document is not already registered with IANA, then a new YANG | |||
Namespace registry entry MUST be requested from the IANA. The YANG | Namespace registry entry MUST be requested from the IANA. The YANG | |||
[I-D.ietf-netmod-yang] specification includes the procedure for this | [RFC6020] specification includes the procedure for this purpose in | |||
purpose in its IANA Considerations section. | its IANA Considerations section. | |||
3.5.2. Documents that Extend an Existing Name Space | 3.5.2. Documents that Extend an Existing Namespace | |||
It is possible to extend an existing namespace using a YANG submodule | It is possible to extend an existing namespace using a YANG submodule | |||
which belongs to an existing module already administered by IANA. In | that belongs to an existing module already administered by IANA. In | |||
this case, the document containing the main module MUST be updated to | this case, the document containing the main module MUST be updated to | |||
use the latest revision of the submodule. | use the latest revision of the submodule. | |||
3.6. Reference Sections | 3.6. Reference Sections | |||
For every import or include statement which appears in a module | For every import or include statement that appears in a module | |||
contained in the specification, which identifies a module in a | contained in the specification, which identifies a module in a | |||
separate document, a corresponding normative reference to that | separate document, a corresponding normative reference to that | |||
document MUST appear in the Normative References section. The | document MUST appear in the Normative References section. The | |||
reference MUST correspond to the specific module version actually | reference MUST correspond to the specific module version actually | |||
used within the specification. | used within the specification. | |||
For every normative reference statement which appears in a module | For every normative reference statement that appears in a module | |||
contained in the specification, which identifies a separate document, | contained in the specification, which identifies a separate document, | |||
a corresponding normative reference to that document SHOULD appear in | a 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, which | If the reference statement identifies an informative reference, which | |||
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. | |||
4. YANG Usage Guidelines | 4. YANG Usage Guidelines | |||
In general, modules in IETF standards-track specifications MUST | In general, modules in IETF Standards Track specifications MUST | |||
comply with all syntactic and semantic requirements of YANG. | comply with all syntactic and semantic requirements of YANG | |||
[I-D.ietf-netmod-yang]. The guidelines in this section are intended | [RFC6020]. The guidelines in this section are intended to supplement | |||
to supplement the YANG specification, which is intended to define a | the YANG specification, which is intended to define a minimum set of | |||
minimum set of conformance requirements. | conformance requirements. | |||
In order to promote interoperability and establish a set of practices | In order to promote interoperability and establish a set of practices | |||
based on previous experience, the following sections establish usage | based on previous experience, the following sections establish usage | |||
guidelines for specific YANG constructs. | guidelines for specific YANG constructs. | |||
Only guidelines which clarify or restrict the minimum conformance | Only guidelines that clarify or restrict the minimum conformance | |||
requirements are included here. | requirements are included here. | |||
4.1. Module Naming Conventions | 4.1. Module Naming Conventions | |||
Modules contained in standards track documents SHOULD be named | Modules contained in Standards Track documents SHOULD be named | |||
according to the guidelines in the IANA considerations section of | according to the guidelines in the IANA Considerations section of | |||
[I-D.ietf-netmod-yang]. | [RFC6020]. | |||
A distinctive word or acronym (e.g., protocol name or working group | A distinctive word or acronym (e.g., protocol name or working group | |||
acronym) SHOULD be used in the module name. If new definitions are | acronym) SHOULD be used in the module name. If new definitions are | |||
being defined to extend one or more existing modules, then the same | being defined to extend one or more existing modules, then the same | |||
word or acronym should be reused, instead of creating a new one. | word or acronym should be reused, instead of creating a new one. | |||
All published module names MUST be unique. For a YANG module | All published module names MUST be unique. For a YANG module | |||
published in an RFC, this uniqueness is guaranteed by IANA. For | published in an RFC, this uniqueness is guaranteed by IANA. For | |||
unpublished modules, the authors need to check that no other work in | unpublished modules, the authors need to check that no other work in | |||
progress is using the same module name. | progress is using the same module name. | |||
Once a module name is published, it MUST NOT be reused, even if the | Once a module name is published, it MUST NOT be reused, even if the | |||
RFC containing the module is reclassified to 'Historic' status. | RFC containing the module is reclassified to 'Historic' status. | |||
4.2. Identifiers | 4.2. Identifiers | |||
Identifiers for all YANG identifiers in published modules MUST be | Identifiers for all YANG identifiers in published modules MUST be | |||
between 1 and 64 characters in length. These include any construct | between 1 and 64 characters in length. These include any construct | |||
specified as an 'identifier-arg-str' token in the ABNF in section 12 | specified as an 'identifier-arg-str' token in the ABNF in Section 12 | |||
of [I-D.ietf-netmod-yang]. | of [RFC6020]. | |||
4.3. Defaults | 4.3. Defaults | |||
In general, it is suggested that sub-statements containing very | In general, it is suggested that substatements containing very common | |||
common default values SHOULD NOT be present. The following sub- | default values SHOULD NOT be present. The following substatements | |||
statements are commonly used with the default value, which would make | are commonly used with the default value, which would make the module | |||
the module difficult to read if used everywhere they are allowed. | difficult to read if used everywhere they are allowed. | |||
+---------------+---------------+ | +---------------+---------------+ | |||
| Statement | Default Value | | | Statement | Default Value | | |||
+---------------+---------------+ | +---------------+---------------+ | |||
| config | true | | | config | true | | |||
| | | | | | | | |||
| mandatory | false | | | mandatory | false | | |||
| | | | | | | | |||
| max-elements | unbounded | | | max-elements | unbounded | | |||
| | | | | | | | |||
skipping to change at page 13, line 21 | skipping to change at page 10, line 52 | |||
ordered 'list' or 'leaf-list'. | ordered 'list' or 'leaf-list'. | |||
The 'preceding', and 'following' axes SHOULD NOT be used. These | The 'preceding', and 'following' axes SHOULD NOT be used. These | |||
constructs rely on XML document order within a NETCONF server | constructs rely on XML document order within a NETCONF server | |||
configuration database, which may not be supported consistently or | configuration database, which may not be supported consistently or | |||
produce reliable results across implementations. Predicate | produce reliable results across implementations. Predicate | |||
expressions based on static node properties (e.g., element name or | expressions based on static node properties (e.g., element name or | |||
value, 'ancestor' or 'descendant' axes) SHOULD be used instead. The | value, 'ancestor' or 'descendant' axes) SHOULD be used instead. The | |||
'preceding' and 'following' axes MAY be used if document order is not | 'preceding' and 'following' axes MAY be used if document order is not | |||
relevant to the outcome of the expression (e.g., check for global | relevant to the outcome of the expression (e.g., check for global | |||
uniqueness of a parameter value.) | uniqueness of a parameter value). | |||
The 'preceding-sibling' and 'following-sibling' axes SHOULD NOT used. | The 'preceding-sibling' and 'following-sibling' axes SHOULD NOT used. | |||
A server is only required to maintain the relative XML document order | A server is only required to maintain the relative XML document order | |||
of all instances of a particular user-ordered list or leaf-list. The | of all instances of a particular user-ordered list or leaf-list. The | |||
'preceding-sibling' and 'following-sibling' axes MAY be used if they | 'preceding-sibling' and 'following-sibling' axes MAY be used if they | |||
are evaluated in a context where the context node is a user-ordered | are evaluated in a context where the context node is a user-ordered | |||
'list' or 'leaf-list'. | 'list' or 'leaf-list'. | |||
Data nodes which use the 'int64' and 'uint64' built-in type SHOULD | Data nodes that use the 'int64' and 'uint64' built-in type SHOULD NOT | |||
NOT be used within numeric expressions. There are boundary | be used within numeric expressions. There are boundary conditions in | |||
conditions in which the translation from the YANG 64-bit type to an | which the translation from the YANG 64-bit type to an XPath number | |||
XPath number can cause incorrect results. Specifically, an XPath | can cause incorrect results. Specifically, an XPath 'double' | |||
'double' precision floating point number cannot represent very large | precision floating point number cannot represent very large positive | |||
positive or negative 64-bit numbers because it only provides a total | or negative 64-bit numbers because it only provides a total precision | |||
precision of 53 bits. The 'int64' and 'uint64' data types MAY be | of 53 bits. The 'int64' and 'uint64' data types MAY be used in | |||
used in numeric expressions if the value can be represented with no | numeric expressions if the value can be represented with no more than | |||
more than 53 bits of precision. | 53 bits of precision. | |||
Data modelers need to be careful not to confuse the YANG value space | Data modelers need to be careful not to confuse the YANG value space | |||
and the XPath value space. The data types are not the same in both, | and the XPath value space. The data types are not the same in both, | |||
and conversion between YANG and XPath data types SHOULD be considered | and conversion between YANG and XPath data types SHOULD be considered | |||
carefully. | carefully. | |||
Explicit XPath data type conversions MAY be used (e.g., 'string', | Explicit XPath data type conversions MAY be used (e.g., 'string', | |||
'boolean', or 'number' functions), instead of implicit XPath data | 'boolean', or 'number' functions), instead of implicit XPath data | |||
type conversions. | type conversions. | |||
skipping to change at page 14, line 11 | skipping to change at page 11, line 42 | |||
The status statement MUST be present if its value is 'deprecated' or | The status statement MUST be present if its value is 'deprecated' or | |||
'obsolete'. | 'obsolete'. | |||
The module or submodule name MUST NOT be changed, once the document | The module or submodule name MUST NOT be changed, once the document | |||
containing the module or submodule is published. | containing the module or submodule is published. | |||
The module namespace URI value MUST NOT be changed, once the document | The module namespace URI value MUST NOT be changed, once the document | |||
containing the module is published. | containing the module is published. | |||
The revision-date sub-statement within the imports statement SHOULD | The revision-date substatement within the imports statement SHOULD be | |||
be present if any groupings are used from the external module. | present if any groupings are used from the external module. | |||
The revision-date sub-statement within the include statement SHOULD | The revision-date substatement within the include statement SHOULD be | |||
be present if any groupings are used from the external sub-module. | present if any groupings are used from the external submodule. | |||
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 or | MUST be updated so that the main module revision date is equal or | |||
more recent than the revision date of any submodule which is | more recent than the revision date of any submodule that is (directly | |||
(directly or indirectly) included by the main module. | or indirectly) included by the main module. | |||
4.7. Module Header, Meta, and Revision Statements | 4.7. 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 standards-track status, then the | contained in a document intended for Standards Track status, then the | |||
organization SHOULD be the IETF working group chartered to write the | organization SHOULD be the IETF working group chartered to write the | |||
document. | document. | |||
The contact statement MUST be present. If the module is contained in | The contact statement MUST be present. If the module is contained in | |||
a document intended for standards-track status, then the working | a document intended for Standards Track status, then the working | |||
group WEB and mailing information MUST be present, and the main | group web and mailing information MUST be present, and the main | |||
document author or editor contact information SHOULD be present. If | document 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. In addition, the Area Director and other contact | present. In addition, the Area Director and other contact | |||
information MAY be present. | information MAY be present. | |||
The description statement MUST be present. The appropriate IETF | The description statement MUST be present. The appropriate IETF | |||
Trust Copyright text MUST be present, as described in Section 3.1. | Trust Copyright text MUST be present, as described in Section 3.1. | |||
If the module relies on information contained in other documents, | If the module relies on information contained in other documents, | |||
which are not the same documents implied by the import statements | which are not the same documents implied by the import statements | |||
present in the module, then these documents MUST be identified in the | present in the module, then these documents MUST be identified in the | |||
reference statement. | reference statement. | |||
A revision statement MUST be present for each published version of | A revision statement MUST be present for each published version of | |||
the module. The revision statement MUST have a reference | the module. The revision statement MUST have a reference | |||
substatement. It MUST identify the published document which contains | substatement. It MUST identify the published document that contains | |||
the module. Modules are often extracted from their original | the module. Modules are often extracted from their original | |||
documents and it is useful for developers and operators to know how | documents, and it is useful for developers and operators to know how | |||
to find the original source document in a consistent manner. The | to find the original source document in a consistent manner. The | |||
revision statement MAY have a description substatement. | revision statement MAY have a description substatement. | |||
Each new revision MUST include a revision date which is higher than | Each new revision MUST include a revision date that is higher than | |||
any other revision date in the module. The revision date does not | any other revision date in the module. The revision date does not | |||
need to be updated if the module contents do not change in the new | need to be updated if the module contents do not change in the new | |||
document revision. | document revision. | |||
It is acceptable to reuse the same revision statement within | It is acceptable to reuse the same revision statement within | |||
unpublished versions (i.e., Internet-Drafts), but the revision date | unpublished versions (i.e., Internet-Drafts), but the revision date | |||
MUST be updated to a higher value each time the Internet-Draft is re- | MUST be updated to a higher value each time the Internet-Draft is re- | |||
published. | posted. | |||
4.8. Namespace Assignments | 4.8. Namespace Assignments | |||
It is RECOMMENDED that only valid YANG modules are included in | It is RECOMMENDED that only valid YANG modules be included in | |||
documents, whether they are published yet or not. This allows: | documents, whether or not they are published yet. This allows: | |||
o the module to compile correctly instead of generating disruptive | o the module to compile correctly instead of generating disruptive | |||
fatal errors. | fatal errors. | |||
o early implementors to use the modules without picking a random | o early implementors to use the modules without picking a random | |||
value for the XML namespace. | value for the XML namespace. | |||
o early interoperability testing since independent implementations | o early interoperability testing since independent implementations | |||
will use the same XML namespace value. | will use the same XML namespace value. | |||
Until a URI is assigned by the IANA, a proposed namespace URI MUST be | Until a URI is assigned by the IANA, a proposed namespace URI MUST be | |||
provided for the namespace statement in a YANG module. A value | provided for the namespace statement in a YANG module. A value | |||
SHOULD be selected which is not likely to collide with other YANG | SHOULD be selected that is not likely to collide with other YANG | |||
namespaces. Standard module names, prefixes, and URI strings already | namespaces. Standard module names, prefixes, and URI strings already | |||
listed in the YANG Module Registry MUST NOT be used. | listed in the YANG Module Registry MUST NOT be used. | |||
A standard namespace statement value SHOULD have the following form: | A standard namespace statement value SHOULD have the following form: | |||
<URN prefix string>:<module-name> | <URN prefix string>:<module-name> | |||
The following URN prefix string SHOULD be used for published and | The following URN prefix string SHOULD be used for published and | |||
unpublished YANG modules: | unpublished YANG modules: | |||
urn:ietf:params:xml:ns:yang: | urn:ietf:params:xml:ns:yang: | |||
The following example URNs would be valid temporary namespace | The following example URNs would be valid temporary namespace | |||
statement values for standards-track modules: | statement values for Standards Track modules: | |||
urn:ietf:params:xml:ns:yang:ietf-netconf-partial-lock | urn:ietf:params:xml:ns:yang:ietf-netconf-partial-lock | |||
urn:ietf:params:xml:ns:yang:ietf-netconf-state | urn:ietf:params:xml:ns:yang:ietf-netconf-state | |||
urn:ietf:params:xml:ns:yang:ietf-netconf | urn:ietf:params:xml:ns:yang:ietf-netconf | |||
Note that a different URN prefix string SHOULD be used for non- | Note that a different URN prefix string SHOULD be used for non- | |||
standards track modules. The string SHOULD be selected according to | Standards-Track modules. The string SHOULD be selected according to | |||
the guidelines in [I-D.ietf-netmod-yang]. | the guidelines in [RFC6020]. | |||
The following examples of non-standards track modules are only | The following examples of non-Standards-Track modules are only | |||
suggestions. There are no guidelines for this type of URN in this | suggestions. There are no guidelines for this type of URN in this | |||
document: | document: | |||
http://example.com/ns/example-interfaces | http://example.com/ns/example-interfaces | |||
http://example.com/ns/example-system | http://example.com/ns/example-system | |||
4.9. Top Level Data Definitions | 4.9. Top-Level Data Definitions | |||
There SHOULD only be one top-level data node defined in each YANG | There SHOULD only be one top-level data node defined in each YANG | |||
module, if any data nodes are defined at all. | module, if any data nodes are defined at all. | |||
The top-level data organization SHOULD be considered carefully, in | The top-level data organization SHOULD be considered carefully, in | |||
advance. Data model designers need to consider how the functionality | advance. Data model designers need to consider how the functionality | |||
for a given protocol or protocol family will grow over time. | for a given protocol or protocol family will grow over time. | |||
The names and data organization SHOULD reflect persistent | The names and data organization SHOULD reflect persistent | |||
information, such as the name of a protocol. The name of the working | information, such as the name of a protocol. The name of the working | |||
group SHOULD NOT be used because this may change over time. | group SHOULD NOT be used because this may change over time. | |||
A mandatory database data definition is defined as a node that a | A mandatory database data definition is defined as a node that a | |||
client must provide for the database to be valid. The server is not | client must provide for the database to be valid. The server is not | |||
required to provide a value. | required to provide a value. | |||
Top-level database data definitions MUST NOT be mandatory. If a | Top-level database data definitions MUST NOT be mandatory. If a | |||
mandatory node appears at the top-level, it will immediately cause | mandatory node appears at the top level, it will immediately cause | |||
the database to be invalid. This can occur when the server boots or | the database to be invalid. This can occur when the server boots or | |||
when a module is loaded dynamically at runtime. | when a module is loaded dynamically at runtime. | |||
4.10. Data Types | 4.10. Data Types | |||
Selection of an appropriate data type (i.e., built-in type, existing | Selection of an appropriate data type (i.e., built-in type, existing | |||
derived type, or new derived type) is very subjective and therefore | derived type, or new derived type) is very subjective, and therefore | |||
few requirements can be specified on that subject. | few requirements can be specified on that subject. | |||
Data model designers SHOULD use the most appropriate built-in data | Data model designers SHOULD use the most appropriate built-in data | |||
type for the particular application. | type for the particular application. | |||
If extensibility of enumerated values is required, then the | If extensibility of enumerated values is required, then the | |||
'identityref' data type SHOULD be used instead of an enumeration or | 'identityref' data type SHOULD be used instead of an enumeration or | |||
other built-in type. | other built-in type. | |||
For string data types, if a machine-readable pattern can be defined | For string data types, if a machine-readable pattern can be defined | |||
skipping to change at page 17, line 30 | skipping to change at page 15, line 20 | |||
'int64') SHOULD NOT be used unless negative values are allowed for | 'int64') SHOULD NOT be used unless negative values are allowed for | |||
the desired semantics. | the desired semantics. | |||
For 'enumeration' or 'bits' data types, the semantics for each 'enum' | For 'enumeration' or 'bits' data types, the semantics for each 'enum' | |||
or 'bit' SHOULD be documented. A separate description statement | or 'bit' SHOULD be documented. A separate description statement | |||
(within each 'enum' or 'bit' statement) SHOULD be present. | (within each 'enum' or 'bit' statement) SHOULD be present. | |||
4.11. Reusable Type Definitions | 4.11. 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 | |||
[I-D.ietf-netmod-yang-types], then it SHOULD be used instead of | [RFC6021], then it SHOULD be used instead of defining a new derived | |||
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, | |||
then these derived types SHOULD be contained in a separate module or | then these derived types SHOULD be contained in a separate module or | |||
skipping to change at page 18, line 44 | skipping to change at page 16, line 30 | |||
o rpc | o rpc | |||
o typedef | o typedef | |||
If the data definition semantics are defined in an external document, | If the data definition semantics are defined in an external document, | |||
(other than another YANG module indicated by an import statement), | (other than another YANG module indicated by an import statement), | |||
then a reference statement MUST be present. | then a reference statement MUST be present. | |||
The 'anyxml' construct may be useful to represent an HTML banner | The 'anyxml' construct may be useful to represent an HTML banner | |||
containing markup elements, such as '<b>' and '</b>', and MAY be used | containing markup elements, such as '<b>' and '</b>', and MAY be used | |||
in such cases . However, this construct SHOULD NOT be used if other | in such cases. However, this construct SHOULD NOT be used if other | |||
YANG data node types can be used instead to represent the desired | YANG data node types can be used instead to represent the desired | |||
syntax and semantics. | syntax and semantics. | |||
If there are referential integrity constraints associated with the | If there are referential integrity constraints associated with the | |||
desired semantics that can be represented with XPath, then one or | desired semantics that can be represented with XPath, then one or | |||
more must statements SHOULD be present. | more 'must' statements SHOULD be present. | |||
For list and leaf-list data definitions, if the number of possible | For list and leaf-list data definitions, if the number of possible | |||
instances is required to be bounded for all implementations, then the | instances is required to be bounded for all implementations, then the | |||
max-elements statements SHOULD be present. | max-elements statements SHOULD be present. | |||
If any must or when statements are used within the data definition, | If any 'must' or 'when' statements are used within the data | |||
then the data definition description statement SHOULD describe the | definition, then the data definition description statement SHOULD | |||
purpose of each one. | describe the purpose of each one. | |||
4.13. Operation Definitions | 4.13. Operation Definitions | |||
If the operation semantics are defined in an external document (other | If the operation semantics are defined in an external document (other | |||
than another YANG module indicated by an import statement), then a | than another YANG module indicated by an import statement), then a | |||
reference statement MUST be present. | reference statement MUST be present. | |||
If the operation impacts system behavior in some way, it SHOULD be | If the operation impacts system behavior in some way, it SHOULD be | |||
mentioned in the description statement. | mentioned in the description statement. | |||
skipping to change at page 20, line 8 | skipping to change at page 17, line 29 | |||
The description statement MUST be present. | The description statement MUST be present. | |||
If the notification semantics are defined in an external document | If the notification semantics are defined in an external document | |||
(other than another YANG module indicated by an import statement), | (other than another YANG module indicated by an import statement), | |||
then a reference statement MUST be present. | then a reference statement MUST be present. | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers one URI in the IETF XML registry [RFC3688]. | This document registers one URI in the IETF XML registry [RFC3688]. | |||
The following registration is requested: | The following registration has been made: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-template | URI: urn:ietf:params:xml:ns:yang:ietf-template | |||
Registrant Contact: The NETMOD WG of the IETF. | Registrant Contact: The NETMOD WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
This document requests the following assignment in the YANG Module | Per this document, the following assignment has been made in the YANG | |||
Names Registry for the YANG module template in Appendix B. | Module Names Registry for the YANG module template in Appendix B. | |||
+---------------+-------------------------------------------+ | +---------------+-------------------------------------------+ | |||
| Field | Value | | | Field | Value | | |||
+---------------+-------------------------------------------+ | +---------------+-------------------------------------------+ | |||
| name | ietf-template | | | Name | ietf-template | | |||
| | | | | | | | |||
| namespace | urn:ietf:params:xml:ns:yang:ietf-template | | | Namespace | urn:ietf:params:xml:ns:yang:ietf-template | | |||
| | | | | | | | |||
| prefix | temp | | | Prefix | temp | | |||
| | | | | | | | |||
| reference | RFCXXXX | | | Reference | RFC 6087 | | |||
+---------------+-------------------------------------------+ | +---------------+-------------------------------------------+ | |||
6. Security Considerations | 6. Security Considerations | |||
This document defines documentation guidelines for NETCONF content | This document defines documentation guidelines for NETCONF content | |||
defined with the YANG data modeling language. The guidelines for how | defined with the YANG data modeling language. The guidelines for how | |||
to write a Security Considerations section for a YANG module are | to write a Security Considerations section for a YANG module are | |||
defined in the online document | defined in the online document | |||
http://www.ops.ietf.org/netconf/yang-security-considerations.txt | http://www.ops.ietf.org/netconf/yang-security-considerations.txt | |||
This document does not introduce any new or increased security risks | This document does not introduce any new or increased security risks | |||
into the management system. | into the management system. | |||
The following section contains the security considerations template | The following section contains the security considerations template | |||
dated 2010-06-16. Be sure to check the WEB page at the URL listed | dated 2010-06-16. Be sure to check the webpage at the URL listed | |||
above in case there is a more recent version available. | above in case there is a more recent version available. | |||
Each specification that defines one or more YANG modules MUST contain | Each specification that defines one or more YANG modules MUST contain | |||
a section that discusses security considerations relevant to those | a section that discusses security considerations relevant to those | |||
modules. This section MUST be patterned after the latest approved | modules. This section MUST be patterned after the latest approved | |||
template (available at [ed: URL TBD]). | template (available at | |||
http://www.ops.ietf.org/netconf/yang-security-considerations.txt). | ||||
In particular, writable data nodes that could be especially | In particular, writable data nodes that could be especially | |||
disruptive if abused MUST be explicitly listed by name and the | disruptive if abused MUST be explicitly listed by name and the | |||
associated security risks MUST be spelled out. | associated security risks MUST be spelled out. | |||
Similarly, readable data nodes that contain especially sensitive | Similarly, readable data nodes that contain especially sensitive | |||
information or that raise significant privacy concerns MUST be | information or that raise significant privacy concerns MUST be | |||
explicitly listed by name and the reasons for the sensitivity/privacy | explicitly listed by name and the reasons for the sensitivity/privacy | |||
concerns MUST be explained. | concerns MUST be explained. | |||
Further, if new RPC operations have been defined, then the security | Further, if new RPC operations have been defined, then the security | |||
considerations of each new RPC operation MUST be explained. | considerations of each new RPC operation MUST be explained. | |||
6.1. Security Considerations Section Template | 6.1. Security Considerations Section Template | |||
X. Security Considerations | ||||
X. Security Considerations | ||||
The YANG module defined in this memo is designed to be accessed | The YANG module defined in this memo is designed to be accessed | |||
via the NETCONF protocol [RFC4741]. The lowest NETCONF layer is | via the NETCONF protocol [RFC4741]. The lowest NETCONF layer is | |||
the secure transport layer and the mandatory to implement secure | the secure transport layer and the mandatory-to-implement secure | |||
transport is SSH [RFC4742]. | transport is SSH [RFC4742]. | |||
-- if you have any writeable data nodes (those are all the | -- if you have any writable data nodes (those are all the | |||
-- "config true" nodes, and remember, that is the default) | -- "config true" nodes, and remember, that is the default) | |||
-- describe their specific sensitivity or vulnerability. | -- describe their specific sensitivity or vulnerability. | |||
There are a number of data nodes defined in this YANG module | There are a number of data nodes defined in this YANG module | |||
which are writable/creatable/deletable (i.e. config true, which | which are writable/creatable/deletable (i.e., config true, which | |||
is the default). These data nodes may be considered sensitive | is the default). These data nodes may be considered sensitive | |||
or vulnerable in some network environments. Write operations | or vulnerable in some network environments. Write operations | |||
(e.g. edit-config) to these data nodes without proper protection | (e.g., edit-config) to these data nodes without proper protection | |||
can have a negative effect on network operations. These are | can have a negative effect on network operations. These are | |||
the subtrees and data nodes and their sensitivity/vulnerability: | the subtrees and data nodes and their sensitivity/vulnerability: | |||
<list subtrees and data nodes and state why they are sensitive> | <list subtrees and data nodes and state why they are sensitive> | |||
-- for all YANG modules you must evaluate whether any readable data | -- for all YANG modules you must evaluate whether any readable data | |||
-- nodes (those are all the "config false" nodes, but also all other | -- nodes (those are all the "config false" nodes, but also all other | |||
-- nodes, because they can also be read via operations like get or | -- nodes, because they can also be read via operations like get or | |||
-- get-config) are sensitive or vulnerable (for instance, if they | -- get-config) are sensitive or vulnerable (for instance, if they | |||
-- might reveal customer information or violate personal privacy | -- might reveal customer information or violate personal privacy | |||
-- laws such as those of the European Union if exposed to | -- laws such as those of the European Union if exposed to | |||
-- unauthorized parties) | -- unauthorized parties) | |||
Some of the readable data nodes in this YANG module may be | Some of the readable data nodes in this YANG module may be | |||
considered sensitive or vulnerable in some network environments. | considered sensitive or vulnerable in some network environments. | |||
It is thus important to control read access (e.g. via get, | It is thus important to control read access (e.g., via get, | |||
get-config or notification) to these data nodes. These are the | get-config, or notification) to these data nodes. These are the | |||
subtrees and data nodes and their sensitivity/vulnerability: | subtrees and data nodes and their sensitivity/vulnerability: | |||
<list subtrees and data nodes and state why they are sensitive> | <list subtrees and data nodes and state why they are sensitive> | |||
-- if your YANG module has defined any rpc operations | -- if your YANG module has defined any rpc operations | |||
-- describe their specific sensitivity or vulnerability. | -- describe their specific sensitivity or vulnerability. | |||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations 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 access to these operations. These are the | important to control access to these operations. These are the | |||
operations and their sensitivity/vulnerability: | operations and their sensitivity/vulnerability: | |||
<list RPC operations and state why they are sensitive> | <list RPC operations and state why they are sensitive> | |||
Figure 2 | ||||
7. Acknowledgments | 7. Acknowledgments | |||
The structure and contents of this document are adapted from | The structure and contents of this document are adapted from | |||
Guidelines for MIB Documents [RFC4181], by C. M. Heard. | Guidelines for MIB Documents [RFC4181], by C. M. Heard. | |||
The working group thanks Martin Bjorklund and Juergen Schoenwaelder | The working group thanks Martin Bjorklund and Juergen Schoenwaelder | |||
for their extensive reviews and contributions to this document. | for their extensive reviews and contributions to this document. | |||
8. References | 8. References | |||
skipping to change at page 25, line 37 | skipping to change at page 20, line 45 | |||
[RFC5741] Daigle, L., Kolkman, O., and IAB, "RFC Streams, Headers, | [RFC5741] Daigle, L., Kolkman, O., and IAB, "RFC Streams, Headers, | |||
and Boilerplates", RFC 5741, December 2009. | and Boilerplates", RFC 5741, December 2009. | |||
[W3C.REC-xpath-19991116] | [W3C.REC-xpath-19991116] | |||
DeRose, S. and J. Clark, "XML Path Language (XPath) | DeRose, S. and J. Clark, "XML Path Language (XPath) | |||
Version 1.0", World Wide Web Consortium | Version 1.0", World Wide Web Consortium | |||
Recommendation REC-xpath-19991116, November 1999, | Recommendation REC-xpath-19991116, November 1999, | |||
<http://www.w3.org/TR/1999/REC-xpath-19991116>. | <http://www.w3.org/TR/1999/REC-xpath-19991116>. | |||
[I-D.ietf-netmod-yang] | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
Bjorklund, M., "YANG - A data modeling language for the | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
Network Configuration Protocol (NETCONF)", | October 2010. | |||
draft-ietf-netmod-yang-13 (work in progress), June 2010. | ||||
[I-D.ietf-netmod-yang-types] | [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, | |||
Schoenwaelder, J., "Common YANG Data Types", | October 2010. | |||
draft-ietf-netmod-yang-types-09 (work in progress), | ||||
April 2010. | ||||
8.2. Informative References | 8.2. Informative References | |||
[RFC4181] Heard, C., "Guidelines for Authors and Reviewers of MIB | [RFC4181] Heard, C., "Guidelines for Authors and Reviewers of MIB | |||
Documents", BCP 111, RFC 4181, September 2005. | Documents", BCP 111, RFC 4181, September 2005. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
May 2008. | May 2008. | |||
[RFC-STYLE] | ||||
Braden, R., Ginoza, S., and A. Hagens, "RFC Document | ||||
Style", September 2009, | ||||
<http://www.rfc-editor.org/rfc-style-guide/rfc-style>. | ||||
Appendix A. Module Review Checklist | Appendix A. Module Review Checklist | |||
This section is adapted from RFC 4181. | This section is adapted from RFC 4181. | |||
The purpose of a YANG module review is to review the YANG module both | The purpose of a YANG module review is to review the YANG module both | |||
for technical correctness and for adherence to IETF documentation | for technical correctness and for adherence to IETF documentation | |||
requirements. The following checklist may be helpful when reviewing | requirements. The following checklist may be helpful when reviewing | |||
a draft document: | an Internet-Draft: | |||
1. I-D Boilerplate -- verify that the draft contains the required | 1. I-D Boilerplate -- verify that the draft contains the required | |||
Internet-Draft boilerplate (see | Internet-Draft boilerplate (see | |||
http://www.ietf.org/ietf/1id-guidelines.txt), including the | http://www.ietf.org/id-info/guidelines.html), including the | |||
appropriate statement to permit publication as an RFC, and that | appropriate statement to permit publication as an RFC, and that | |||
I-D boilerplate does not contain references or section numbers. | I-D boilerplate does not contain references or section numbers. | |||
2. Abstract -- verify that the abstract does not contain references, | 2. 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 | follows the guidelines in | |||
http://www.ietf.org/ietf/1id-guidelines.txt. | http://www.ietf.org/id-info/guidelines.html. | |||
3. IETF Trust Copyright -- verify that the draft has the appropriate | 3. Copyright Notice -- verify that the draft has the appropriate | |||
text regarding the rights that document contributers provide to | text regarding the rights that document contributers provide to | |||
the IETF Trust [RFC5378]. Some guidelines related to this | the IETF Trust [RFC5378]. Verify that it contains the full IETF | |||
requirement are described in Section 3.1. The IETF Trust license | Trust copyright notice at the beginning of the document. The | |||
policy (TLP) can be found at: | IETF Trust Legal Provisions (TLP) can be found at: | |||
http://trustee.ietf.org/docs/IETF-Trust-License-Policy.pdf | http://trustee.ietf.org/license-info/ | |||
4. Security Considerations Section -- verify that the draft uses the | 4. Security Considerations section -- verify that the draft uses the | |||
latest approved template from the OPS area web site (http:// | latest approved template from the OPS area website (http:// | |||
www.ops.ietf.org/netconf/yang-security-considerations.txt) and | www.ops.ietf.org/netconf/yang-security-considerations.txt) and | |||
that the guidelines therein have been followed. | that the guidelines therein have been followed. | |||
5. IANA Considerations Section -- this section must always be | 5. IANA Considerations section -- this section must always be | |||
present. For each module within the document, ensure that the | present. For each module within the document, ensure that the | |||
IANA Considerations section contains entries for the following | IANA Considerations section contains entries for the following | |||
IANA registries: | IANA registries: | |||
XML Namespace Registry: Register the YANG module namespace. | XML Namespace Registry: Register the YANG module namespace. | |||
YANG Module Registry: Register the YANG module name, prefix, | YANG Module Registry: Register the YANG module name, prefix, | |||
namespace, and RFC number, according to the rules specified in | namespace, and RFC number, according to the rules specified in | |||
[I-D.ietf-netmod-yang]. | [RFC6020]. | |||
6. References -- verify that the references are properly divided | 6. References -- verify that the references are properly divided | |||
between normative and informative references, that RFC 2119 is | between normative and informative references, that RFC 2119 is | |||
included as a normative reference if the terminology defined | included as a normative reference if the terminology defined | |||
therein is used in the document, that all references required by | therein is used in the document, that all references required by | |||
the boilerplate are present, that all YANG modules containing | the boilerplate are present, that all YANG modules containing | |||
imported items are cited as normative references, and that all | imported items are cited as normative references, and that all | |||
citations point to the most current RFCs unless there is a valid | citations point to the most current RFCs unless there is a valid | |||
reason to do otherwise (for example, it is OK to include an | reason to do otherwise (for example, it is OK to include an | |||
informative reference to a previous version of a specification to | informative reference to a previous version of a specification to | |||
help explain a feature included for backward compatibility). Be | help explain a feature included for backward compatibility). Be | |||
sure citations for all imported modules are present somewhere in | sure citations for all imported modules are present somewhere in | |||
the document text (outside the YANG module). | the document text (outside the YANG module). | |||
7. Copyright Notices -- verify that the draft contains an | 7. License -- verify that the draft contains the Simplified BSD | |||
abbreviated IETF Trust copyright notice in the description | License in each YANG module or submodule. Some guidelines | |||
statement of each YANG module or sub-module, and that it contains | related to this requirement are described in Section 3.1. Make | |||
the full IETF Trust copyright notice at the end of the document. | sure that the correct year is used in all copyright dates. Use | |||
Make sure that the correct year is used in all copyright dates. | the approved text from the latest Trust Legal Provisions (TLP) | |||
Use the approved text from the latest Trust Legal Provisions | document, which can be found at: | |||
(TLP) document, which can be found at: | ||||
http://trustee.ietf.org/license-info/ | http://trustee.ietf.org/license-info/ | |||
8. Other Issues -- check for any issues mentioned in | 8. Other Issues -- check for any issues mentioned in | |||
http://www.ietf.org/ID-Checklist.html that are not covered | http://www.ietf.org/id-info/checklist.html that are not covered | |||
elsewhere. | elsewhere. | |||
9. Technical Content -- review the actual technical content for | 9. Technical Content -- review the actual technical content for | |||
compliance with the guidelines in this document. The use of a | compliance with the guidelines in this document. The use of a | |||
YANG module compiler is recommended when checking for syntax | YANG module compiler is recommended when checking for syntax | |||
errors. A list of freely available tools and other information | errors. A list of freely available tools and other information | |||
can be found at: | can be found at: | |||
http://trac.tools.ietf.org/wg/netconf/trac/wiki | http://trac.tools.ietf.org/wg/netconf/trac/wiki | |||
skipping to change at page 29, line 32 | skipping to change at page 24, line 32 | |||
// identify the IETF working group if applicable | // identify the IETF working group if applicable | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
// update this contact statement with your info | // update this contact statement with your info | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/your-wg-name/> | "WG Web: <http://tools.ietf.org/wg/your-wg-name/> | |||
WG List: <mailto:your-wg-name@ietf.org> | WG List: <mailto:your-wg-name@ietf.org> | |||
WG Chair: your-WG-chair | WG Chair: your-WG-chair | |||
<mailto:your-WG-chair@example.com> | <mailto:your-WG-chair@example.com> | |||
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 | |||
"This module defines a template for other YANG modules. | "This module defines a template for other YANG modules. | |||
Copyright (c) 2010 IETF Trust and the persons identified as | Copyright (c) <insert year> IETF Trust and the persons | |||
the document authors. 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 | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
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 | // RFC Ed.: replace XXXX with actual RFC number and remove this note | |||
reference "RFC XXXX"; | reference "RFC XXXX"; | |||
// RFC Ed.: remove this note | // RFC Ed.: remove this note | |||
// Note: extracted from draft-ietf-netmod-yang-usage-04.txt | // Note: extracted from RFC 6087 | |||
// replace '2010-05-18' with the module publication date | // replace '2010-05-18' with the module publication date | |||
// The format is (year-month-day) | // The format is (year-month-day) | |||
revision "2010-05-18" { | revision "2010-05-18" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
} | } | |||
// extension statements | // extension statements | |||
skipping to change at page 31, line 4 | skipping to change at page 26, line 4 | |||
// 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> | |||
Figure 3 | ||||
Appendix C. Change Log | ||||
C.1. Changes from 10 to 11 | ||||
o Removed Intellectual Property section, since no longer required. | ||||
o Reworded XPath guidelines related to XML document order, 'int64' | ||||
and 'uint64' data types, and 'anyxml' data nodes. | ||||
C.2. Changes from 09 to 10 | ||||
o Added security considerations section template. | ||||
o Added guideline for documenting conditional requirements for non- | ||||
mandatory non-configuration data nodes. | ||||
o Clarified that revision date update applies to the module | ||||
contents. | ||||
C.3. Changes from 08 to 09 | ||||
o Clarifications and corrections to address Gen-ART review comments. | ||||
C.4. Changes from 07 to 08 | ||||
o Corrected YANG security considerations URL. | ||||
o Expanded 'CODE BEGINS' example. | ||||
o Added RPC operations to the security considerations guidelines | ||||
section. | ||||
o Removed guideline about leading and trailing whitespace. | ||||
C.5. Changes from 06 to 07 | ||||
o Corrected title change bug; supposed to be page header instead. | ||||
o Fixed typos added to last revision. | ||||
o Added sentence to checklist to make sure text outside module | ||||
contains citations for imports. | ||||
C.6. Changes from 05 to 06 | ||||
o Several clarifications and corrections, based on the AD review by | ||||
Dan Romascanu. | ||||
C.7. Changes from 04 to 05 | ||||
o Changed 'object' terminology to 'data definition'. | ||||
o Put XPath guidelines in separate section. | ||||
o Clarified XPath usage for XML document order dependencies. | ||||
o Updated <CODE BEGINS> guidelines to current conventions. | ||||
o Added informative reference for IANA considerations guidelines and | ||||
XML registry. | ||||
o Updated IANA Considerations section to reserve the ietf-template | ||||
module in the YANG Module Name Registry so it cannot be reused | ||||
accidently. | ||||
o Many other clarifications and fixed typos found in WGLC reviews. | ||||
C.8. Changes from 03 to 04 | ||||
o Removed figure 1 to reduce duplication, just refer to 4741bis | ||||
draft. | ||||
o Fixed bugs and typos found in WGLC reviews. | ||||
o Removed some guidelines and referring to YANG draft instead of | ||||
duplicating YANG rules here. | ||||
o Changed security guidelines so they refer to the IETF Trust TLP | ||||
instead of MIB-specific references. | ||||
o Change temporary namespace guidelines so the DRAFT-XX and RFC-nnnn | ||||
suffix strings are not used. | ||||
o Changed some MIB boilerplate so it refers to YANG boilerplate | ||||
instead. | ||||
o Introduced dangling URL reference to online YANG security | ||||
guidelines | ||||
http://www.ops.ietf.org/yang-security.html | ||||
[ed.: Text from Bert Wijnen will be completed soon and posted | ||||
online, and then this URL will be finalized.] | ||||
o Moved reference for identifying the source document inside the | ||||
each revision statement. | ||||
o Removed guideline about valid XPath since YANG already requires | ||||
valid XPath. | ||||
o Added guideline that strings should not rely on preservation of | ||||
leading and trailing whitespace characters. | ||||
o Relaxed some XPath and anyxml guidelines from SHOULD NOT or MUST | ||||
NOT to MAY use with caution. | ||||
o Updated the TLP text within the example module again. | ||||
o Reversed order of change log so most recent entries are first. | ||||
C.9. Changes from 02 to 03 | ||||
o Updated figure 1 to align with 4741bis draft. | ||||
o Updated guidelines for import-by-revision and include-by-revision. | ||||
o Added file name to code begins convention in ietf-template module. | ||||
C.10. Changes from 01 to 02 | ||||
o Updated figure 1 per mailing list comments. | ||||
o Updated suggested organization to include the working group name. | ||||
o Updated ietf-template.yang to use new organization statement | ||||
value. | ||||
o Updated Code Component requirements as per new TLP. | ||||
o Updated ietf-template.yang to use new Code Component begin and end | ||||
markers. | ||||
o Updated references to the TLP in a couple sections. | ||||
o Change manager/agent terminology to client/server. | ||||
C.11. Changes from 00 to 01 | ||||
o Added transport 'TLS' to figure 1. | ||||
o Added note about RFC 2119 terminology. | ||||
o Corrected URL for instructions to authors. | ||||
o Updated namespace procedures section. | ||||
o Updated guidelines on module contact, reference, and organization | ||||
statements. | ||||
o Added note on use of preceding-sibling and following-sibling axes | ||||
in XPath expressions. | ||||
o Added section on temporary namespace statement values. | ||||
o Added section on top level database objects. | ||||
o Added ietf-template.yang appendix. | ||||
Author's Address | Author's Address | |||
Andy Bierman | Andy Bierman | |||
Brocade | Brocade | |||
Email: andy.bierman@brocade.com | EMail: andy.bierman@brocade.com | |||
End of changes. 99 change blocks. | ||||
400 lines changed or deleted | 232 lines changed or added | |||
This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |