| rfc9195.original | rfc9195.txt | |||
|---|---|---|---|---|
| Netmod B. Lengyel | Internet Engineering Task Force (IETF) B. Lengyel | |||
| Internet-Draft Ericsson | Request for Comments: 9195 Ericsson | |||
| Intended status: Standards Track B. Claise | Category: Standards Track B. Claise | |||
| Expires: 11 April 2022 Huawei | ISSN: 2070-1721 Huawei | |||
| 8 October 2021 | February 2022 | |||
| YANG Instance Data File Format | A File Format for YANG Instance Data | |||
| draft-ietf-netmod-yang-instance-file-format-21 | ||||
| Abstract | Abstract | |||
| There is a need to document data defined in YANG models at design | There is a need to document data defined in YANG models at design | |||
| time, implementation time or when a live server is unavailable. This | time, implementation time, or when a live server is unavailable. | |||
| document specifies a standard file format for YANG instance data, | This document specifies a standard file format for YANG instance | |||
| which follows the syntax and semantics of existing YANG models, and | data, which follows the syntax and semantics of existing YANG models | |||
| annotates it with metadata. | and annotates it with metadata. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://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). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 11 April 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9195. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
| as described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Simplified BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
| 1.2. Principles . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Principles | |||
| 1.3. Delivery of Instance Data . . . . . . . . . . . . . . . . 4 | 1.3. Delivery of Instance Data | |||
| 1.4. Data Life cycle . . . . . . . . . . . . . . . . . . . . . 5 | 1.4. Data Life Cycle | |||
| 2. Instance Data File Format . . . . . . . . . . . . . . . . . . 5 | 2. Instance Data File Format | |||
| 2.1. Specifying the Content Schema . . . . . . . . . . . . . . 7 | 2.1. Specifying the Content Schema | |||
| 2.1.1. Inline Method . . . . . . . . . . . . . . . . . . . . 8 | 2.1.1. Inline Method | |||
| 2.1.2. Simplified-Inline Method . . . . . . . . . . . . . . 8 | 2.1.2. Simplified-Inline Method | |||
| 2.1.3. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | 2.1.3. URI Method | |||
| 2.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.2. Examples | |||
| 2.2.1. Documentation of server capabilities . . . . . . . . 8 | 2.2.1. Documentation of Server Capabilities | |||
| 2.2.2. Preloading default configuration data . . . . . . . . 10 | 2.2.2. Preloading Default Configuration Data | |||
| 2.2.3. Storing diagnostics data . . . . . . . . . . . . . . 11 | 2.2.3. Storing Diagnostics Data | |||
| 3. YANG Instance Data Model . . . . . . . . . . . . . . . . . . 12 | 3. YANG Instance Data Model | |||
| 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 | 3.1. Tree Diagram | |||
| 3.2. YANG Model . . . . . . . . . . . . . . . . . . . . . . . 13 | 3.2. YANG Model | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 4. Security Considerations | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 5. IANA Considerations | |||
| 5.1. URI Registration . . . . . . . . . . . . . . . . . . . . 20 | 5.1. URI Registration | |||
| 5.2. YANG Module Name Registration . . . . . . . . . . . . . . 20 | 5.2. YANG Module Name Registration | |||
| 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. References | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6.1. Normative References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 21 | 6.2. Informative References | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 22 | Appendix A. Backwards Compatibility | |||
| Appendix A. Changes between revisions . . . . . . . . . . . . . 23 | Appendix B. Detailed Use Cases | |||
| Appendix B. Backwards Compatibility . . . . . . . . . . . . . . 26 | B.1. Use Case 1: Early Documentation of Server Capabilities | |||
| Appendix C. Detailed Use Cases . . . . . . . . . . . . . . . . . 27 | B.2. Use Case 2: Preloading Data | |||
| C.1. Use Case 1: Early Documentation of Server Capabilities . 27 | B.3. Use Case 3: Documenting Factory Default Settings | |||
| C.2. Use Case 2: Preloading Data . . . . . . . . . . . . . . . 28 | Acknowledgments | |||
| C.3. Use Case 3: Documenting Factory Default Settings . . . . 28 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 1. Introduction | 1. Introduction | |||
| There is a need to document data defined in YANG models when a live | There is a need to document data defined in YANG models when a live | |||
| server is unavailable. Data is often needed at design, | server is unavailable. Data is often needed at design time, | |||
| implementation time or even later when a live running server is | implementation time, or even later when a live running server is | |||
| unavailable. To facilitate this offline delivery of data, this | unavailable. To facilitate this offline delivery of data, this | |||
| document specifies a standard format for YANG instance data sets and | document specifies a standard format for YANG instance data sets and | |||
| YANG instance data files. The format of the instance data set is | YANG instance data files. The format of the instance data set is | |||
| defined by the "ietf-yang-instance-data" YANG module, see Section 3. | defined by the "ietf-yang-instance-data" YANG module; see Section 3. | |||
| The YANG data model in this document conforms to the Network | The YANG data model in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA) defined in [RFC8342] | Management Datastore Architecture (NMDA) defined in [RFC8342]. | |||
| The following is a list of already implemented and potential use | ||||
| The following is a list of already-implemented and potential use | ||||
| cases. | cases. | |||
| UC1 Documentation of server capabilities | UC1 Documentation of server capabilities | |||
| UC2 Preloading default configuration data | UC2 Preloading default configuration data | |||
| UC3 Documenting factory default settings | UC3 Documenting factory default settings | |||
| UC4 Storing the configuration of a device, e.g., for backup, archive | UC4 Storing the configuration of a device, e.g., for backup, | |||
| or audit purposes | archive, or audit purposes | |||
| UC5 Storing diagnostics data | UC5 Storing diagnostics data | |||
| UC6 Allowing YANG instance data to potentially be carried within | UC6 Allowing YANG instance data to potentially be carried within | |||
| other IPC message formats | other inter-process communication (IPC) message formats | |||
| UC7 Default instance data used as part of a templating solution | UC7 Default instance data used as part of a templating solution | |||
| UC8 Providing data examples in RFCs or internet drafts | UC8 Providing data examples in RFCs or internet drafts | |||
| Appendix C describes the first three use cases in detail. | Appendix B describes the first three use cases in detail. | |||
| There are many and varied use cases where YANG instance data could be | There are many and varied use cases where YANG instance data could be | |||
| used. This document does not limit future uses of instance data | used. This document does not limit future uses of instance data | |||
| sets, so specifying how and when to use YANG instance data is out of | sets, so specifying how and when to use YANG instance data is out of | |||
| scope for this document. It is anticipated that other documents will | scope for this document. It is anticipated that other documents will | |||
| define specific use cases. Use cases are listed only as examples. | define specific use cases. Use cases are listed only as examples. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Instance Data: A collection of instantiated data nodes. | Instance Data: A collection of instantiated data nodes. | |||
| Instance Data Set: A named set of data items annotated with metadata | Instance Data Set: A named set of data items annotated with metadata | |||
| that can be used as instance data in a YANG data tree. | that can be used as instance data in a YANG data tree. | |||
| Instance Data File: A file containing an instance data set formatted | Instance Data File: A file containing an instance data set formatted | |||
| according to the rules described in this document. | according to the rules described in this document. | |||
| Content-schema: A set of YANG modules with their revision, supported | Content-schema: A set of YANG modules with their revision, supported | |||
| features, and deviations for which the instance data set contains | features, and deviations for which the instance data set contains | |||
| instance data. | instance data. | |||
| Content defining YANG module: an individual YANG module that is part | Content-defining YANG Module: An individual YANG module that is part | |||
| of the content-schema. | of the content-schema. | |||
| The term "server" is used as defined in [RFC8342]. | The term "server" is used as defined in [RFC8342]. | |||
| 1.2. Principles | 1.2. Principles | |||
| The following is a list of the basic principles of the instance data | The following is a list of the basic principles of the instance data | |||
| format: | format: | |||
| P1 Two standard formats shall be defined based on the XML and JSON | P1 Two standard formats shall be defined based on the XML and JSON | |||
| encodings. | encodings. | |||
| P2 Instance data shall reuse existing encoding rules for YANG | P2 Instance data shall reuse existing encoding rules for YANG- | |||
| defined data. | defined data. | |||
| P3 Metadata about the instance data set (Section 2, Paragraph 12) | P3 Metadata about the instance data set (Section 2, Paragraph 14) | |||
| shall be defined. | shall be defined. | |||
| P4 A YANG instance data set shall be allowed to contain data for | P4 A YANG instance data set shall be allowed to contain data for | |||
| multiple YANG modules. | multiple YANG modules. | |||
| P5 Instance data shall be allowed to contain configuration data, | P5 Instance data shall be allowed to contain configuration data, | |||
| state data, or a mix of the two. | state data, or a mix of the two. | |||
| P6 Partial data sets shall be allowed. | P6 Partial data sets shall be allowed. | |||
| skipping to change at page 4, line 43 ¶ | skipping to change at line 180 ¶ | |||
| which YANG module(s) are defined and available to the reader, | which YANG module(s) are defined and available to the reader, | |||
| independent of whether the module is implemented by a server. | independent of whether the module is implemented by a server. | |||
| P8 It shall be possible to report the identity of the datastore with | P8 It shall be possible to report the identity of the datastore with | |||
| which the instance data set is associated. | which the instance data set is associated. | |||
| 1.3. Delivery of Instance Data | 1.3. Delivery of Instance Data | |||
| Instance data sets that are produced as a result of some sort of | Instance data sets that are produced as a result of some sort of | |||
| specification or design effort may be available without the need for | specification or design effort may be available without the need for | |||
| a live server e.g., via download from the vendor's website, or in any | a live server, e.g., via download from the vendor's website or in any | |||
| other way that product documentation is distributed. | other way that product documentation is distributed. | |||
| Other instance data sets may be read from or produced by the YANG | Other instance data sets may be read from or produced by the YANG | |||
| server itself e.g., UC5 documenting diagnostic data. | server itself, e.g., UC5 documenting diagnostic data. | |||
| 1.4. Data Life cycle | 1.4. Data Life Cycle | |||
| A YANG instance data set is created at a specific point of time. If | A YANG instance data set is created at a specific point of time. If | |||
| the data changes afterwards, the instance data set will no longer | the data changes afterwards, the instance data set will no longer | |||
| represent the current data, unless it is updated. The current values | represent the current data unless it is updated. The current values | |||
| may be retrieved at run-time via NETCONF/RESTCONF or received e.g., | may be retrieved at runtime via NETCONF/RESTCONF or received, e.g., | |||
| in YANG-Push notifications. | in YANG-Push notifications. | |||
| Whether the instance data changes and if so, when and how, should be | Whether the instance data changes and, if so, when and how should be | |||
| described either in the instance data set's description statement or | described either in the instance data set's description statement or | |||
| in some other implementation specific manner. | in some other implementation-specific manner. | |||
| 2. Instance Data File Format | 2. Instance Data File Format | |||
| A YANG instance data file MUST contain a single instance data set and | A YANG instance data file MUST contain a single instance data set and | |||
| no additional data. | no additional data. | |||
| The format of the instance data set is defined by the "ietf-yang- | The format of the instance data set is defined by the "ietf-yang- | |||
| instance-data" YANG module. It is made up of a header part and | instance-data" YANG module. It is made up of a header part and | |||
| content-data. The header part carries metadata for the instance data | content-data. The header part carries metadata for the instance data | |||
| set. The content-data, defined as an anydata data node, carries the | set. The content-data, defined as an anydata data node, carries the | |||
| instance data that the user wants to document/provide. The syntax | instance data that the user wants to document and/or provide. The | |||
| and semantics of content-data is defined by the content-schema. | syntax and semantics of content-data are defined by the content- | |||
| schema. | ||||
| Two formats are specified based on the XML and JSON YANG encodings. | Two formats are specified based on the XML and JSON YANG encodings. | |||
| The file formats are achieved by applying the respective XML and JSON | The file formats are achieved by applying the respective XML and JSON | |||
| encoding rules for the YANG structure included in this document. | encoding rules for the YANG structure included in this document. | |||
| Later, as other YANG encodings (e.g., CBOR) are defined, further | Later, as other YANG encodings (e.g., CBOR) are defined, further | |||
| instance data formats may be specified. | instance data formats may be specified. | |||
| The content-data part MUST conform to the content-schema, while | The content-data part MUST conform to the content-schema while | |||
| allowing for the exceptions listed below. The content-data part | allowing for the exceptions listed below. The content-data part | |||
| SHALL follow the encoding rules defined in [RFC7950] for XML and | SHALL follow the encoding rules defined in [RFC7950] for XML and | |||
| [RFC7951] for JSON and MUST use UTF-8 character encoding. Content- | [RFC7951] for JSON and MUST use UTF-8 character encoding. Content- | |||
| data MAY include: | data MAY include: | |||
| * metadata, as defined by [RFC7952]. | * metadata, as defined by [RFC7952]. | |||
| * origin metadata, as specified in [RFC8526] and [RFC8527] | * origin metadata, as specified in [RFC8526] and [RFC8527]. | |||
| * implementation specific metadata relevant to individual data | * implementation-specific metadata relevant to individual data | |||
| nodes. Unknown metadata MUST be ignored by users of instance | nodes. Unknown metadata MUST be ignored by users of instance | |||
| data, allowing it to be used later for other purposes. | data, allowing it to be used later for other purposes. | |||
| An instance data set MAY contain data for any number of YANG modules; | An instance data set MAY contain data for any number of YANG modules; | |||
| if needed it MAY carry the complete configuration and state data for | if needed, it MAY carry the complete configuration and state data for | |||
| a server. Default values should be excluded where they do not | a server. Default values should be excluded where they do not | |||
| provide additional useful data. | provide additional useful data. | |||
| Configuration ("config true") and operational state data ("config | Configuration ("config true") and operational state data ("config | |||
| false") MAY be mixed in the instance data file. | false") MAY be mixed in the instance data file. | |||
| Instance data files MAY contain partial data sets. This means | Instance data files MAY contain partial data sets. This means | |||
| "mandatory", "min-elements", "require-instance true", "must" and | "mandatory", "min-elements", "require-instance true", "must", and | |||
| "when" constraints MAY be violated. | "when" constraints MAY be violated. | |||
| The name of the instance data file SHOULD be of the form (using ABNF | The name of the instance data file SHOULD be of the following form | |||
| notation [RFC5234]): | (using ABNF notation [RFC5234]): | |||
| instance-data-set-name ["@" ( revision-date / timestamp ) ] | instance-data-set-name ["@" ( revision-date / timestamp ) ] | |||
| ( ".xml" / ".json" ) | ( ".xml" / ".json" ) | |||
| E.g., acme-router-modules.xml | Examples include: | |||
| E.g., acme-router-modules@2018-01-25.xml | ||||
| E.g., acme-router-modules@2018-01-25T15_06_34_3+01_00.json | acme-router-modules.xml | |||
| acme-router-modules@2018-01-25.xml | ||||
| acme-router-modules@2018-01-25T15_06_34_3+01_00.json | ||||
| If the leaf "name" is present in the instance data header, its value | If the leaf "name" is present in the instance data header, its value | |||
| SHOULD be used for the "instance-data-set-name" in the filename. If | SHOULD be used for the "instance-data-set-name" in the filename. If | |||
| the "revision-date" is present in the filename it MUST conform to the | the "revision-date" is present in the filename, it MUST conform to | |||
| format of the revision-date leaf in the YANG model. If the | the format of the revision-date leaf in the YANG model. If the | |||
| "revision-date" is present in both the filename and in the instance | "revision-date" is present in both the filename and the instance data | |||
| data header, the revision date in the file name MUST be set to the | header, the revision date in the filename MUST be set to the latest | |||
| latest revision date inside the instance data set. If the | revision date inside the instance data set. If the "timestamp" is | |||
| "timestamp" is present in the filename it MUST conform to the format | present in the filename, it MUST conform to the format of the | |||
| of the timestamp leaf in the YANG model except for replacing colons | timestamp leaf in the YANG model except for replacing colons as | |||
| as described below. If the "timestamp" is present both in the | described below. If the "timestamp" is present in both the filename | |||
| filename and in the instance data header, the timestamp in the file | and the instance data header, the timestamp in the filename SHOULD be | |||
| name SHOULD be set to the timestamp inside the instance data set; any | set to the timestamp inside the instance data set; any colons, if | |||
| colons, if present, shall be replaced by underscores. | present, shall be replaced by underscores. | |||
| Metadata, information about the data set itself MUST be included. | Metadata, information about the data set itself, MUST be included. | |||
| Some metadata items are defined in the YANG module "ietf-yang- | Some metadata items are defined in the YANG module "ietf-yang- | |||
| instance-data", but other items MAY be used. | instance-data", but other items MAY be used. | |||
| Metadata MUST include: | Metadata MUST include: | |||
| - Version of the YANG Instance Data format (if not explicitly | - Version of the YANG instance data format (if not explicitly | |||
| present the default value is used) | present, the default value is used). | |||
| Metadata SHOULD include: | Metadata SHOULD include: | |||
| - Name of the data set | - Name of the data set. | |||
| - Content-schema specification (i.e., the "content-schema" node). | ||||
| - Content-schema specification (i.e., the "content-schema" node) | ||||
| - Description of the instance data set. The description SHOULD | - Description of the instance data set. The description SHOULD | |||
| contain information whether and how the data can change during | contain information on whether and how the data can change | |||
| the lifetime of the server | during the lifetime of the server. | |||
| - An indication whether default values are included. The default | - An indication of whether default values are included. The | |||
| handling uses the concepts defined in [RFC6243], however as | default handling uses the concepts defined in [RFC6243]; | |||
| only concepts are re-used, users of instance data sets, do not | however, as only concepts are re-used, users of instance data | |||
| need to support RFC 6243. | sets do not need to support [RFC6243]. | |||
| 2.1. Specifying the Content Schema | 2.1. Specifying the Content Schema | |||
| To properly understand and use an instance data set, the user needs | To properly understand and use an instance data set, the user needs | |||
| to know the content-schema. The content-schema can be either | to know the content-schema. The content-schema can be specified | |||
| specified in external documents or within the instance data set. In | either in external documents or within the instance data set. In the | |||
| the latter case one of the following methods MUST be used: | latter case, one of the following methods MUST be used: | |||
| Inline method: Include the needed information as part of the | Inline method: Include the needed information as part of the | |||
| instance data set. | instance data set. | |||
| Simplified-Inline method: Include the needed information as part | Simplified-inline method: Include the needed information as part of | |||
| of the instance data set; short specification, only the module | the instance data set; only the modules' name and revision-date | |||
| name and revision-date is used. | are used. | |||
| URI method: Include a URI that references another YANG instance | URI method: Include a URI that references another YANG instance data | |||
| data file. This instance data file will use the same content- | file. This instance data file will use the same content-schema as | |||
| schema as the referenced YANG instance data file. (if you don't | the referenced YANG instance data file (if you don't want to | |||
| want to repeat the info again and again) | repeat the info again and again). | |||
| Additional methods e.g., a YANG-package based solution may be added | Additional methods, e.g., a YANG-package-based solution may be added | |||
| later. | later. | |||
| Note, the specified content-schema only indicates the set of modules | Note that the specified content-schema only indicates the set of | |||
| that were used to define this YANG instance data set. Sometimes | modules that were used to define this YANG instance data set. | |||
| instance data may be used for a server supporting a different YANG | Sometimes instance data may be used for a server supporting a | |||
| module set (e.g., for the "Preloading default configuration data" | different YANG module set (e.g., for the "Preloading default | |||
| use-case, UC2 in Section 1, the instance data set may not be updated | configuration data" use case, UC2 in Section 1, the instance data set | |||
| every time the YANG modules on the server are updated). Whether an | may not be updated every time the YANG modules on the server are | |||
| instance data set originally defined using a specific content-schema | updated). Whether an instance data set originally defined using a | |||
| is usable with a different other schema depends on many factors | specific content-schema is usable with another schema depends on many | |||
| including the amount of differences and the compatibility between the | factors, including the number of differences and the compatibility | |||
| original and the other schema, considering modules, revisions, | between the original and the other schema when considering modules, | |||
| features, deviations, the scope of the instance data, etc. | revisions, features, deviations, the scope of the instance data, etc. | |||
| 2.1.1. Inline Method | 2.1.1. Inline Method | |||
| The inline-yang-library anydata data node carries instance data | The "inline-yang-library" anydata data node carries instance data | |||
| (conforming to ietf-yang-library@2019-01-04) [RFC8525] that specifies | (conforming to "ietf-yang-library@2019-01-04") [RFC8525] that | |||
| the content defining YANG modules including revision, supported | specifies the content-defining YANG modules, including revision, | |||
| features, deviations and any relevant additional data. An example of | supported features, deviations, and any additional relevant data. An | |||
| the "inline" method is provided in Section 2.2.1. | example of the inline method is provided in Section 2.2.1. | |||
| 2.1.2. Simplified-Inline Method | 2.1.2. Simplified-Inline Method | |||
| The instance data set contains a list of content defining YANG | The instance data set contains a list of content-defining YANG | |||
| modules including the revision date for each. Usage of this method | modules, including the revision date for each. Usage of this method | |||
| implies that the modules are used without any deviations and with all | implies that the modules are used without any deviations and with all | |||
| features supported. YANG modules that are only required to satisfy | features supported. YANG modules that are only required to satisfy | |||
| import-only dependencies MAY be excluded from the leaf-list. If they | import-only dependencies MAY be excluded from the leaf-list. If they | |||
| are excluded then the consumer of the instance data set has to apply | are excluded, then the consumer of the instance data set has to apply | |||
| the YANG language rules to resolve the imports. An example of the | the YANG language rules to resolve the imports. An example of the | |||
| "simplified-inline" method is provided in Section 2.2.2. | simplified-inline method is provided in Section 2.2.2. | |||
| 2.1.3. URI Method | 2.1.3. URI Method | |||
| The "same-schema-as-file" leaf SHALL contain a URI that references | The "same-schema-as-file" leaf SHALL contain a URI that references | |||
| another YANG instance data file. The current instance data file will | another YANG instance data file. The current instance data file will | |||
| use the same content-schema as the referenced file. | use the same content-schema as the referenced file. | |||
| The referenced instance data file MAY have no content-data if it is | The referenced instance data file MAY have no content-data if it is | |||
| used solely for specifying the content-schema. | used solely for specifying the content-schema. | |||
| If a referenced instance data file is unavailable, content-schema is | If a referenced instance data file is unavailable, the content-schema | |||
| unknown. | is unknown. | |||
| The URI method is advantageous when the user wants to avoid the | The URI method is advantageous when the user wants to avoid the | |||
| overhead of specifying the content-schema in each instance data file: | overhead of specifying the content-schema in each instance data file | |||
| E.g., In UC6, when the system creates a diagnostic file every minute | -- for example, in UC6, when the system creates a diagnostic file | |||
| to document the state of the server. | every minute to document the state of the server. | |||
| An example of the "URI" method is provided in Section 2.2.3. | An example of the URI method is provided in Section 2.2.3. | |||
| 2.2. Examples | 2.2. Examples | |||
| 2.2.1. Documentation of server capabilities | 2.2.1. Documentation of Server Capabilities | |||
| The example file acme-router-modules@2021-09-16.xml reflects UC1 in | The example file acme-router-modules@2022-01-20.xml reflects UC1 in | |||
| Section 1. It provides a list of supported YANG modules and NETCONF | Section 1. It provides a list of supported YANG modules and NETCONF | |||
| capabilities for a server. It uses the "inline" method to specify | capabilities for a server. It uses the inline method to specify the | |||
| the content-schema. | content-schema. | |||
| The example uses artwork folding [RFC8792]. | The example uses artwork folding [RFC8792]. | |||
| ========== NOTE: '\' line wrapping per RFC 8792 =========== | ========== NOTE: '\' line wrapping per RFC 8792 =========== | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <instance-data-set xmlns=\ | <instance-data-set xmlns=\ | |||
| "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | |||
| <name>acme-router-modules</name> | <name>acme-router-modules</name> | |||
| <content-schema> | <content-schema> | |||
| <inline-yang-library> | <inline-yang-library> | |||
| <modules-state \ | <modules-state \ | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | |||
| <module> | <module> | |||
| <name>ietf-yang-library</name> | <name>ietf-yang-library</name> | |||
| <revision>2019-01-04</revision> | <revision>2019-01-04</revision> | |||
| </module> | </module> | |||
| <module> | <module> | |||
| <name>ietf-netconf-monitoring</name> | <name>ietf-netconf-monitoring</name> | |||
| <revision>2010-10-04</revision> | <revision>2010-10-04</revision> | |||
| </module> | </module> | |||
| </modules-state> | </modules-state> | |||
| </inline-yang-library> | </inline-yang-library> | |||
| </content-schema> | </content-schema> | |||
| <revision> | <revision> | |||
| <date>2020-10-23</date> | <date>2020-10-23</date> | |||
| <description>Initial version</description> | <description>Initial version</description> | |||
| </revision> | </revision> | |||
| <description>Defines the minimal set of modules that any \ | <description>Defines the minimal set of modules that any \ | |||
| acme-router will contain. This minimal set will \ | acme-router will contain. This minimal set will \ | |||
| only change when a new SW release is \ | only change when a new software release is \ | |||
| introduced.</description> | introduced.</description> | |||
| <contact>info@acme.example.com</contact> | <contact>info@acme.example.com</contact> | |||
| <content-data> | <content-data> | |||
| <modules-state \ | <modules-state \ | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | |||
| <module> | <module> | |||
| <name>ietf-yang-library</name> | <name>ietf-yang-library</name> | |||
| <revision>2019-01-04</revision> | <revision>2019-01-04</revision> | |||
| <namespace>\ | <namespace>\ | |||
| urn:ietf:params:xml:ns:yang:ietf-yang-library\ | urn:ietf:params:xml:ns:yang:ietf-yang-library\ | |||
| </namespace> | </namespace> | |||
| <conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
| </module> | </module> | |||
| <module> | <module> | |||
| <name>ietf-system</name> | <name>ietf-system</name> | |||
| <revision>2014-08-06</revision> | <revision>2014-08-06</revision> | |||
| <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace> | <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace> | |||
| <feature>sys:authentication</feature> | <feature>sys:authentication</feature> | |||
| <feature>sys:local-users</feature> | <feature>sys:local-users</feature> | |||
| <deviation> | <deviation> | |||
| <name>acme-system-ext</name> | <name>acme-system-ext</name> | |||
| <revision>2018-08-06</revision> | <revision>2018-08-06</revision> | |||
| </deviation> | </deviation> | |||
| <conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
| </module> | </module> | |||
| <module> | <module> | |||
| <name>ietf-netconf-monitoring</name> | <name>ietf-netconf-monitoring</name> | |||
| <revision>2010-10-04</revision> | <revision>2010-10-04</revision> | |||
| <namespace>\ | <namespace>\ | |||
| urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\ | urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\ | |||
| </namespace> | </namespace> | |||
| <conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
| </module> | </module> | |||
| <module> | <module> | |||
| <name>ietf-yang-types</name> | <name>ietf-yang-types</name> | |||
| <revision>2013-07-15</revision> | <revision>2013-07-15</revision> | |||
| <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types\ | <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types\ | |||
| </namespace> | </namespace> | |||
| <conformance-type>import</conformance-type> | <conformance-type>import</conformance-type> | |||
| </module> | </module> | |||
| <module> | <module> | |||
| <name>acme-system-ext</name> | <name>acme-system-ext</name> | |||
| <revision>2018-08-06</revision> | <revision>2018-08-06</revision> | |||
| <namespace>\ | <namespace>\ | |||
| urn:rdns:acme.example.com:oammodel:acme-system-ext\ | urn:rdns:acme.example.com:oammodel:acme-system-ext\ | |||
| </namespace> | </namespace> | |||
| <conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
| </module> | </module> | |||
| </modules-state> | </modules-state> | |||
| <netconf-state \ | <netconf-state \ | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> | |||
| <capabilities> | <capabilities> | |||
| <capability>\ | <capability>\ | |||
| urn:ietf:params:netconf:capability:validate:1.1\ | urn:ietf:params:netconf:capability:validate:1.1\ | |||
| </capability> | </capability> | |||
| </capabilities> | </capabilities> | |||
| </netconf-state> | </netconf-state> | |||
| </content-data> | </content-data> | |||
| </instance-data-set> | </instance-data-set> | |||
| Figure 1 | Figure 1 | |||
| 2.2.2. Preloading default configuration data | 2.2.2. Preloading Default Configuration Data | |||
| The example file read-only-acm-rules@2021-09-16.xml reflects UC2 in | The example file read-only-acm-rules@2022-01-20.xml reflects UC2 in | |||
| Section 1. It provides a default rule set for a read-only operator | Section 1. It provides a default rule set for a read-only operator | |||
| role. It uses the "simplified-inline" method for specifying the | role. It uses the simplified-inline method for specifying the | |||
| content-schema. | content-schema. | |||
| ========== NOTE: '\' line wrapping per RFC 8792 =========== | ========== NOTE: '\' line wrapping per RFC 8792 =========== | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <instance-data-set | <instance-data-set | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | |||
| <name>read-only-acm-rules</name> | <name>read-only-acm-rules</name> | |||
| <content-schema> | <content-schema> | |||
| <module>ietf-netconf-acm@2018-02-14</module> | <module>ietf-netconf-acm@2018-02-14</module> | |||
| </content-schema> | </content-schema> | |||
| <revision> | <revision> | |||
| <date>2018-07-04</date> | <date>2018-07-04</date> | |||
| <description>Initial version</description> | <description>Initial version</description> | |||
| </revision> | </revision> | |||
| <description>Default access control rules for a read-only \ | <description>Default access control rules for a read-only \ | |||
| role. This set of rules will only change when a new \ | role. This set of rules will only change when a new \ | |||
| SW release is introduced.</description> | software release is introduced.</description> | |||
| <content-data> | <content-data> | |||
| <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> | <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> | |||
| <enable-nacm>true</enable-nacm> | <enable-nacm>true</enable-nacm> | |||
| <read-default>deny</read-default> | <read-default>deny</read-default> | |||
| <exec-default>deny</exec-default> | <exec-default>deny</exec-default> | |||
| <rule-list> | <rule-list> | |||
| <name>read-only-role</name> | <name>read-only-role</name> | |||
| <group>read-only-group</group> | <group>read-only-group</group> | |||
| <rule> | <rule> | |||
| <name>read-all</name> | <name>read-all</name> | |||
| skipping to change at page 11, line 42 ¶ | skipping to change at line 510 ¶ | |||
| <access-operation>read</access-operation> | <access-operation>read</access-operation> | |||
| <action>permit</action> | <action>permit</action> | |||
| </rule> | </rule> | |||
| </rule-list> | </rule-list> | |||
| </nacm> | </nacm> | |||
| </content-data> | </content-data> | |||
| </instance-data-set> | </instance-data-set> | |||
| Figure 2 | Figure 2 | |||
| 2.2.3. Storing diagnostics data | 2.2.3. Storing Diagnostics Data | |||
| The example file acme-router-netconf- | The example file acme-router-netconf- | |||
| diagnostics@2018-01-25T17_00_38Z.json reflects UC5 in Section 1. An | diagnostics@2018-01-25T17_00_38Z.json reflects UC5 in Section 1. An | |||
| instance data set is produced by the server every 15 minutes that | instance data set that contains statistics about the NETCONF server | |||
| contains statistics about the NETCONF server. As a new set is | is produced by the server every 15 minutes. As a new set is produced | |||
| produced periodically many times a day a revision-date would be | periodically many times a day, a revision-date would be useless; | |||
| useless; instead a timestamp is included. | instead, a timestamp is included. | |||
| ========== NOTE: '\' line wrapping per RFC 8792 =========== | ========== NOTE: '\' line wrapping per RFC 8792 =========== | |||
| { | { | |||
| "ietf-yang-instance-data:instance-data-set": { | "ietf-yang-instance-data:instance-data-set": { | |||
| "name": "acme-router-netconf-diagnostics", | "name": "acme-router-netconf-diagnostics", | |||
| "content-schema": { | "content-schema": { | |||
| "same-schema-as-file": "file:///acme-diagnostics-schema.json" | "same-schema-as-file": "file:///acme-diagnostics-schema.json" | |||
| }, | }, | |||
| "timestamp": "2018-01-25T17:00:38Z", | "timestamp": "2018-01-25T17:00:38Z", | |||
| skipping to change at page 13, line 6 ¶ | skipping to change at line 557 ¶ | |||
| Figure 3 | Figure 3 | |||
| 3. YANG Instance Data Model | 3. YANG Instance Data Model | |||
| 3.1. Tree Diagram | 3.1. Tree Diagram | |||
| The following tree diagram [RFC8340] provides an overview of the data | The following tree diagram [RFC8340] provides an overview of the data | |||
| model. | model. | |||
| module: ietf-yang-instance-data | module: ietf-yang-instance-data | |||
| structure instance-data-set: | structure instance-data-set: | |||
| +-- name? string | +--name? string | |||
| +-- format-version? string | +--format-version? string | |||
| +-- includes-defaults? enumeration | +--includes-defaults? enumeration | |||
| +-- content-schema | +--content-schema | |||
| | +-- (content-schema-spec)? | | +--(content-schema-spec)? | |||
| | +--:(simplified-inline) | | +--:(simplified-inline) | |||
| | | +-- module* module-with-revision-date | | | +--module* module-with-revision-date | |||
| | +--:(inline) | | +--:(inline) | |||
| | | +-- inline-yang-library <anydata> | | | +--inline-yang-library <anydata> | |||
| | +--:(uri) | | +--:(uri) | |||
| | +-- same-schema-as-file? inet:uri | | +--same-schema-as-file? inet:uri | |||
| +-- description* string | +--description* string | |||
| +-- contact? string | +--contact? string | |||
| +-- organization? string | +--organization? string | |||
| +-- datastore? ds:datastore-ref | +--datastore? ds:datastore-ref | |||
| +-- revision* [date] | +--revision* [date] | |||
| | +-- date string | | +--date string | |||
| | +-- description? string | | +--description? string | |||
| +-- timestamp? yang:date-and-time | +--timestamp? yang:date-and-time | |||
| +-- content-data? <anydata> | +--content-data? <anydata> | |||
| 3.2. YANG Model | 3.2. YANG Model | |||
| This YANG module imports typedefs from [RFC6991], [RFC6243], | This YANG module imports typedefs from [RFC6991], [RFC6243], | |||
| identities from [RFC8342] and the "structure" extension from | identities from [RFC8342], and the "structure" extension from | |||
| [RFC8791]. It also references [RFC8525]. | [RFC8791]. It also references [RFC8525]. | |||
| <CODE BEGINS> file "ietf-yang-instance-data@2021-09-16.yang" | <CODE BEGINS> file "ietf-yang-instance-data@2022-01-20.yang" | |||
| // RFC Ed.: replace the date above if the module gets changed in | ||||
| //any way during reviews or RFC editor process and remove this note | ||||
| module ietf-yang-instance-data { | module ietf-yang-instance-data { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | |||
| prefix yid; | prefix yid; | |||
| import ietf-yang-structure-ext { | import ietf-yang-structure-ext { | |||
| prefix sx; | prefix sx; | |||
| reference | reference | |||
| "YANG Data Structure Extensions: | "RFC 8791: YANG Data Structure Extensions"; | |||
| draft-ietf-netmod-yang-data-ext-05"; | ||||
| } | } | |||
| import ietf-datastores { | import ietf-datastores { | |||
| prefix ds; | prefix ds; | |||
| reference | reference | |||
| "RFC 8342: Network Management Datastore Architecture (NMDA)"; | "RFC 8342: Network Management Datastore Architecture (NMDA)"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| skipping to change at page 14, line 45 ¶ | skipping to change at line 639 ¶ | |||
| "The module defines the structure and content of YANG | "The module defines the structure and content of YANG | |||
| instance data sets. | instance data sets. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | |||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | |||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | |||
| are to be interpreted as described in BCP 14 (RFC 2119) | are to be interpreted as described in BCP 14 (RFC 2119) | |||
| (RFC 8174) when, and only when, they appear in all | (RFC 8174) when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2022 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | 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 Revised 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 | |||
| Relating to IETF Documents | Legal Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (https://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 9195 | |||
| the RFC itself for full legal notices."; | (https://www.rfc-editor.org/info/rfc9195); see the RFC itself | |||
| // RFC Ed.: replace XXXX with RFC number and remove this note | for full legal notices."; | |||
| revision 2021-09-16 { | revision 2022-01-20 { | |||
| // RFC Ed.: replace the date above if the module gets changed in | ||||
| // anyway during reviews or RFC editor process and remove | ||||
| //this note | ||||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: YANG Instance Data Format"; | "RFC 9195: YANG Instance Data File Format"; | |||
| // RFC Ed.: replace XXXX with RFC number and remove this note | ||||
| } | } | |||
| typedef module-with-revision-date { | typedef module-with-revision-date { | |||
| type string { | type string { | |||
| pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*' | pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*' | |||
| + '(@\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1]))?'; | + '(@\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1]))?'; | |||
| pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; | pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; | |||
| } | } | |||
| description | description | |||
| "A type defining a module name and an optional revision | "A type defining a module name and an optional revision | |||
| date, e.g. ietf-yang-library@2019-01-04"; | date, e.g., ietf-yang-library@2019-01-04."; | |||
| } | } | |||
| sx:structure "instance-data-set" { | sx:structure instance-data-set { | |||
| description | description | |||
| "A data structure to define a format for YANG instance | "A data structure to define a format for YANG instance | |||
| data. The majority of the YANG nodes provide meta-data | data. The majority of the YANG nodes provides metadata | |||
| about the instance data; the instance data itself is | about the instance data; the instance data itself is | |||
| contained only in the 'content-data' node."; | contained only in the 'content-data' node."; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "An arbitrary name for the YANG instance data set. This | "An arbitrary name for the YANG instance data set. This | |||
| value is primarily used for descriptive purposes. However, | value is primarily used for descriptive purposes. However, | |||
| when the instance data set is saved to a file, then the | when the instance data set is saved to a file, then the | |||
| filename MUST encode the name's value, per Section 2 | filename MUST encode the name's value per Section 2 | |||
| of RFC XXXX."; | of RFC 9195."; | |||
| // RFC Ed.: replace XXXX with RFC number and remove this note | ||||
| } | } | |||
| leaf format-version { | leaf format-version { | |||
| type string { | type string { | |||
| pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; | pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; | |||
| } | } | |||
| default "2021-09-16"; | default "2022-01-20"; | |||
| // RFC Ed.: replace the date above if the module gets changed | ||||
| // in anyway during reviews or RFC editor process and remove | ||||
| // this note | ||||
| description | description | |||
| "The 'revision' of the 'ietf-yang-instance-data' module | "The 'revision' of the 'ietf-yang-instance-data' module | |||
| used to encode this 'instance-data-set'."; | used to encode this 'instance-data-set'."; | |||
| } | } | |||
| leaf includes-defaults { | leaf includes-defaults { | |||
| type ncwd:with-defaults-mode; | type ncwd:with-defaults-mode; | |||
| default report-all; | default "report-all"; | |||
| description " | description | |||
| Indicates how data nodes with default values are | "Indicates how data nodes with default values are | |||
| represented for all data nodes contained in the | represented for all data nodes contained in the | |||
| instance-data-set. | instance-data-set. | |||
| It uses the same definitions as per section 3 of RFC 6243, | It uses the same definitions as per Section 3 of RFC 6243 | |||
| but applied in the context of an instance data file rather | but applied in the context of an instance data file rather | |||
| than a NETCONF request using the <with-defaults> | than a NETCONF request using the <with-defaults> | |||
| parameter. | parameter. | |||
| For JSON files, the encoding of the 'report-all-tagged' | For JSON files, the encoding of the 'report-all-tagged' | |||
| option is as defined in section 4.8.9 of RFC 8040."; | option is as defined in Section 4.8.9 of RFC 8040."; | |||
| reference "With-defaults Capability for NETCONF, RFC 6243."; | reference | |||
| "RFC 6243: With-defaults Capability for NETCONF"; | ||||
| } | } | |||
| container content-schema { | container content-schema { | |||
| description | description | |||
| "The content schema (i.e., YANG modules) used to create | "The content schema (i.e., YANG modules) used to create | |||
| the instance data set. | the instance data set. | |||
| If not present the user needs to obtain the information | If not present, the user needs to obtain the information | |||
| through external documents."; | through external documents."; | |||
| choice content-schema-spec { | choice content-schema-spec { | |||
| description | description | |||
| "Specification of the content-schema."; | "Specification of the content-schema."; | |||
| case simplified-inline { | case simplified-inline { | |||
| leaf-list module { | leaf-list module { | |||
| type module-with-revision-date; | type module-with-revision-date; | |||
| min-elements 1; | min-elements 1; | |||
| description | description | |||
| "The list of content defining YANG modules. | "The list of content-defining YANG modules. | |||
| The value SHALL start with the module name. | The value SHALL start with the module name. | |||
| If the module contains a revision statement the | If the module contains a revision statement, the | |||
| revision date SHALL be included in the leaf-list | revision date SHALL be included in the leaf-list | |||
| entry. | entry, e.g., ietf-yang-library@2019-01-04. | |||
| E.g., ietf-yang-library@2019-01-04 | ||||
| Usage of this leaf-list implies the modules are | Usage of this leaf-list implies the modules are | |||
| used without any deviations and with all features | used without any deviations and with all features | |||
| supported. Multiple revisions of the same module | supported. Multiple revisions of the same module | |||
| MUST NOT be specified."; | MUST NOT be specified."; | |||
| } | } | |||
| } | } | |||
| case inline { | case inline { | |||
| anydata inline-yang-library { | anydata inline-yang-library { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Instance data corresponding to the | "Instance data corresponding to the | |||
| ietf-yang-library@2019-01-04 defining | ietf-yang-library@2019-01-04 defining | |||
| the set of content defining YANG modules for | the set of content-defining YANG modules for | |||
| this instance-data-set."; | this instance-data-set."; | |||
| } | } | |||
| } | } | |||
| case uri { | case uri { | |||
| leaf same-schema-as-file { | leaf same-schema-as-file { | |||
| type inet:uri; | type inet:uri; | |||
| description | description | |||
| "A reference to another YANG instance data file. | "A reference to another YANG instance data file. | |||
| This instance data file uses the same | This instance data file uses the same | |||
| content schema as the referenced file. | content schema as the referenced file. | |||
| Referenced files using the 'inline' or the | Referenced files using the 'inline' or the | |||
| 'simplified-inline' methods MUST be supported. | 'simplified-inline' methods MUST be supported. | |||
| Referenced files using the 'URI Method' MAY be | Referenced files using the 'URI method' MAY be | |||
| supported. | supported. | |||
| The URL schemes 'file://' and 'https://' MUST | The URL schemes 'file://' and 'https://' MUST | |||
| be supported, other schemes MAY also be | be supported; other schemes MAY also be | |||
| supported."; | supported."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf-list description { | leaf-list description { | |||
| type string; | type string; | |||
| description | description | |||
| "Description of the instance data set."; | "Description of the instance data set."; | |||
| } | } | |||
| skipping to change at page 18, line 15 ¶ | skipping to change at line 793 ¶ | |||
| type string; | type string; | |||
| description | description | |||
| "Organization responsible for the instance | "Organization responsible for the instance | |||
| data set."; | data set."; | |||
| } | } | |||
| leaf datastore { | leaf datastore { | |||
| type ds:datastore-ref; | type ds:datastore-ref; | |||
| description | description | |||
| "The identity of the datastore with which the | "The identity of the datastore with which the | |||
| instance data set is associated, e.g., the datastore from | instance data set is associated, e.g., the datastore from | |||
| where the data was read or the datastore into which the data | where the data was read, the datastore into which the data | |||
| may be loaded or the datastore which is being documented. | may be loaded, or the datastore that is being documented. | |||
| If a single specific datastore cannot be specified, the | If a single specific datastore cannot be specified, the | |||
| leaf MUST be absent. | leaf MUST be absent. | |||
| If this leaf is absent, then the datastore to which the | If this leaf is absent, then the datastore to which the | |||
| instance data belongs is unspecified."; | instance data belongs is unspecified."; | |||
| } | } | |||
| list revision { | list revision { | |||
| key "date"; | key "date"; | |||
| description | description | |||
| "Instance data sets that are produced as | "Instance data sets that are produced as | |||
| a result of some sort of specification or design effort | a result of some sort of specification or design effort | |||
| SHOULD have at least one revision entry. For every | SHOULD have at least one revision entry. For every | |||
| published editorial change, a new unique revision SHOULD | published editorial change, a new unique revision SHOULD | |||
| be added in front of the revisions sequence so that all | be added in front of the revisions sequence so that all | |||
| revisions are in reverse chronological order. | revisions are in reverse chronological order. | |||
| In case of instance data sets that are read from | In cases of instance data sets that are read from | |||
| or produced by a server or otherwise subject to | or produced by a server or otherwise subject to | |||
| frequent updates or changes, revision | frequent updates or changes, revision | |||
| SHOULD NOT be present"; | SHOULD NOT be present."; | |||
| leaf date { | leaf date { | |||
| type string { | type string { | |||
| pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; | pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; | |||
| } | } | |||
| description | description | |||
| "Specifies the date the instance data set | "Specifies the date the instance data set | |||
| was last modified. Formatted as YYYY-MM-DD"; | was last modified. Formatted as YYYY-MM-DD."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Description of this revision of the instance data set."; | "Description of this revision of the instance data set."; | |||
| } | } | |||
| } | } | |||
| leaf timestamp { | leaf timestamp { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "The date and time when the instance data set | "The date and time when the instance data set | |||
| was last modified. | was last modified. | |||
| In case of instance data sets that are read from or | In cases of instance data sets that are read from or | |||
| produced by a server or otherwise subject to frequent | produced by a server or otherwise subject to frequent | |||
| updates or changes, timestamp SHOULD be present. | updates or changes, the timestamp SHOULD be present. | |||
| If both a revision list entry and timestamp are present | If both a revision list entry and timestamp are present, | |||
| the timestamp SHOULD contain the same date as the | the timestamp SHOULD contain the same date as the | |||
| latest revision statement."; | latest revision statement."; | |||
| } | } | |||
| anydata content-data { | anydata content-data { | |||
| description | description | |||
| "Contains the real instance data. | "Contains the real instance data. | |||
| The data MUST conform to the relevant YANG modules | The data MUST conform to the relevant YANG modules | |||
| specified either in the content-schema or in some other | specified either in the content-schema or in some other | |||
| implementation specific manner."; | implementation-specific manner."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The YANG module defined in this document only defines a wrapper | The YANG module defined in this document only defines a wrapper | |||
| structure specifying a format and a metadata header for YANG instance | structure specifying a format and a metadata header for YANG instance | |||
| data defined by the content-schema. Because of this the security | data defined by the content-schema. Because of this, the security | |||
| considerations template for YANG models in section 3.7.1 in [RFC8407] | considerations template for YANG models in Section 3.7.1 of [RFC8407] | |||
| is not followed. The instance data is designed to be accessed as a | is not followed. The instance data is designed to be accessed as a | |||
| stored file or over any file access method or protocol. | stored file or over any file access method or protocol. | |||
| The document does not specify any method to influence the behavior of | The document does not specify any method to influence the behavior of | |||
| a server. | a server. | |||
| The header part is usually not security sensitive, however sensitive | The header part is usually not security sensitive; however, sensitive | |||
| information may be included, in which case it needs to be handled | information may be included, in which case it needs to be handled | |||
| securely as mentioned below. Information to consider includes: | securely, as mentioned below. Information to consider includes: | |||
| * If the URI method is used for specification of the content-schema | * If the URI method is used for specification of the content-schema | |||
| and the URI includes a userinfo subcomponent | and the URI includes a userinfo subcomponent | |||
| * Any description text | * Any description text | |||
| The content part may contain sensitive data. The security | The content part may contain sensitive data. The security | |||
| sensitivity of this data is completely dependent on the content- | sensitivity of this data is completely dependent on the content- | |||
| schema. Depending on the nature of the instance data, instance data | schema. Depending on the nature of the instance data, instance data | |||
| files MAY need to be handled securely. The same kind of handling | files MAY need to be handled securely. The same kind of handling | |||
| should be applied to this file at-rest and in-transit that would be | should be applied to this file at rest and in transit that would be | |||
| needed for the result of a read operation returning the same data. | needed for the result of a read operation returning the same data. | |||
| These in-transit protection mechanisms will also mitigate integrity | These in-transit protection mechanisms will also mitigate integrity | |||
| issues when transporting the file. | issues when transporting the file. | |||
| Instance data files should be protected against modification or | Instance data files should be protected against modification or | |||
| unauthorized access using normal file handling mechanisms. Care | unauthorized access using normal file-handling mechanisms. When | |||
| should be taken, when copying the original files or providing file | copying the original files or providing file access for additional | |||
| access for additional users, not to reveal information | users, care should be taken not to reveal information | |||
| unintentionally. | unintentionally. | |||
| If the URI method is used for specification of the content-schema, | If the URI method is used for specification of the content-schema, | |||
| there is a risk that the config schema section in the referenced YANG | there is a risk that the config schema section in the referenced YANG | |||
| instance data file may be altered maliciously or even as part of its | instance data file may be altered maliciously or even as part of its | |||
| normal handling. In this case the content-schema might differ from | normal handling. In this case, the content-schema might differ from | |||
| the one expected. Protecting the integrity and stability of the | the one expected. Protecting the integrity and stability of the | |||
| referenced file should be ensured. | referenced file should be ensured. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document registers one URI and one YANG module. | This document registers one URI and one YANG module. | |||
| 5.1. URI Registration | 5.1. URI Registration | |||
| This document registers one URI in the IETF XML registry [RFC3688]. | This document registers the following URI in the "IETF XML Registry" | |||
| Following the format in RFC 3688, the following registration is | [RFC3688]: | |||
| requested to be made: | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | |||
| 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. | |||
| 5.2. YANG Module Name Registration | 5.2. YANG Module Name Registration | |||
| This document registers one YANG module in the YANG Module Names | This document registers the following YANG module in the "YANG Module | |||
| registry [RFC6020]. Following the format in [RFC6020], the following | Names" registry [RFC6020]: | |||
| registrations are requested: | ||||
| name: ietf-yang-instance-data | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | ||||
| prefix: yid | ||||
| reference: RFC XXXX | ||||
| // RFC Ed.: replace XXXX with RFC number and remove this note | ||||
| 6. Acknowledgments | ||||
| For their valuable comments, discussions, and feedback, we wish to | Name: ietf-yang-instance-data | |||
| acknowledge Andy Bierman, Juergen Schoenwaelder, Rob Wilton, Joe | Namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | |||
| Clarke, Kent Watsen, Martin Bjorklund, Ladislav Lhotka, Qin Wu and | Prefix: yid | |||
| other members of the Netmod WG. | Reference: RFC 9195 | |||
| 7. References | 6. References | |||
| 7.1. Normative References | 6.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
| <https://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
| skipping to change at page 22, line 35 ¶ | skipping to change at line 989 ¶ | |||
| [RFC8527] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8527] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "RESTCONF Extensions to Support the Network | and R. Wilton, "RESTCONF Extensions to Support the Network | |||
| Management Datastore Architecture", RFC 8527, | Management Datastore Architecture", RFC 8527, | |||
| DOI 10.17487/RFC8527, March 2019, | DOI 10.17487/RFC8527, March 2019, | |||
| <https://www.rfc-editor.org/info/rfc8527>. | <https://www.rfc-editor.org/info/rfc8527>. | |||
| [RFC8791] Bierman, A., Björklund, M., and K. Watsen, "YANG Data | [RFC8791] Bierman, A., Björklund, M., and K. Watsen, "YANG Data | |||
| Structure Extensions", RFC 8791, DOI 10.17487/RFC8791, | Structure Extensions", RFC 8791, DOI 10.17487/RFC8791, | |||
| June 2020, <https://www.rfc-editor.org/info/rfc8791>. | June 2020, <https://www.rfc-editor.org/info/rfc8791>. | |||
| 7.2. Informative References | 6.2. Informative References | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
| skipping to change at page 23, line 18 ¶ | skipping to change at line 1021 ¶ | |||
| [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>. | |||
| [RFC8808] Wu, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | [RFC8808] Wu, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | |||
| Factory Default Settings", RFC 8808, DOI 10.17487/RFC8808, | Factory Default Settings", RFC 8808, DOI 10.17487/RFC8808, | |||
| August 2020, <https://www.rfc-editor.org/info/rfc8808>. | August 2020, <https://www.rfc-editor.org/info/rfc8808>. | |||
| Appendix A. Changes between revisions | Appendix A. Backwards Compatibility | |||
| RFC Ed.: Remove section "Changes between revisions" | ||||
| v20 - v21 | ||||
| * Minor updates for IESG comments | ||||
| * Added ABNF as a normative reference for the filename's definition. | ||||
| * Enhanced security considerations | ||||
| * Added data change information to the description of the examples. | ||||
| v19 - v20 | ||||
| * Minor updates for IESG comments | ||||
| v18 - v19 | ||||
| * Updated leaf includes-defaults | ||||
| v17 - v18 | ||||
| * Added the report-all-tagged mode to the leaf includes-defaults | ||||
| v16 - v17 | ||||
| * Removed default statement from includes-default | ||||
| v15 - v16 | ||||
| * Editorial changes | ||||
| v14 - v15 | ||||
| * Removed reference to revision-label | ||||
| * For the inline method made the usage of ietf-yang- | ||||
| library@2019-01-04 mandatory. Simplified the case "inline" in the | ||||
| YANG module. | ||||
| * Removed the "inline-module" leaf as it does not carry useful | ||||
| information anymore. | ||||
| * Removed YANG feature | ||||
| v13 - v14 | ||||
| * Added leaf includes-defaults | ||||
| * Many small changes based on AD review | ||||
| v09 - v13 | ||||
| * Editorial updates | ||||
| v08 - v09 | ||||
| * Removed statement "the format will be similar to the response of a | ||||
| NETCONF get operation" | ||||
| * Introduced artwork folding in the examples | ||||
| v07 - v08 | ||||
| * Moved compatibility into appendix | ||||
| * Renamed yid-version to format-version. Changed format to date of | ||||
| the YANG module | ||||
| * Made support of ietf-yang-library mandatory if inline-content- | ||||
| schema is supported | ||||
| * Many small changes based on WGLC | ||||
| v06 - v07 | ||||
| * Updated terminology, use-cases | ||||
| * Many small changes based on WGLC | ||||
| v05 - v06 | ||||
| * Modified module name format, removed .yin or .yang extension | ||||
| * Removed pattern for module and inline-module. The usage of | ||||
| revision-label should also be allowed. | ||||
| v04 - v05 | ||||
| * Updated according to YANG-Doctor review | ||||
| * Updated security considerations | ||||
| * Added a wrapping container for the schema, and renamed the data | ||||
| nodes in the inline and uri cases. | ||||
| * Allowed .yin for simplified-inline schema naming. Made date | ||||
| optional if it is unavailable in the YANG module. | ||||
| * Added a mandatory yid-version to the header metadata to allow | ||||
| later updates of the module. | ||||
| v03 - v04 | ||||
| * removed entity-tag and last-modified timestamp | ||||
| * Added simplified-inline method of content-schema specification | ||||
| v02 - v03 | ||||
| * target renamed to "content-schema" and "content defining YANG | ||||
| module(s)" | ||||
| * Made name of instance data set optional | ||||
| * Updated according to draft-ietf-netmod-yang-data-ext-03 | ||||
| * Clarified that entity-tag and last-modified timestamp are encoded | ||||
| as metadata. While they contain useful data, the HTTP-header | ||||
| based encoding from Restconf is not suitable. | ||||
| v01 - v02 | ||||
| * Removed design time from terminology | ||||
| * Defined the format of the content-data part by referencing various | ||||
| RFCs and drafts instead of the result of the get-data and get | ||||
| operations. | ||||
| * Changed target-ptr to a choice | ||||
| * Inline target-ptr may include augmenting modules and alternatives | ||||
| to ietf-yang-library | ||||
| * Moved list of target modules into a separate <target-modules> | ||||
| element. | ||||
| * Added backwards compatibility considerations | ||||
| v00 - v01 | ||||
| * Added the target-ptr metadata with 3 methods | ||||
| * Added timestamp metadata | ||||
| * Removed usage of dedicated .yid file extension | ||||
| * Added list of use cases | ||||
| * Added list of principles | ||||
| * Updated examples | ||||
| * Moved detailed use case descriptions to appendix | ||||
| Appendix B. Backwards Compatibility | ||||
| The concept of backwards compatibility and what changes are backwards | The concept of "backwards compatibility" and what changes are | |||
| compatible are not defined for "instance data sets" as it is highly | backwards compatible are not defined for instance data sets as they | |||
| dependent on the specific use case and the content-schema. | are highly dependent on the specific use case and the content-schema. | |||
| In case of "instance data sets" that are the result of design or | In case of "instance data sets" that are the result of design or | |||
| specification activity, some changes that may be good to avoid are | specification activity, some changes that may be good to avoid are | |||
| listed below. | listed below. | |||
| YANG uses the concept of managed entities identified by key values; | YANG uses the concept of managed entities identified by key values; | |||
| if the connection between the represented entity and the key value is | if the connection between the represented entity and the key value is | |||
| not preserved during an update, this may lead to the following | not preserved during an update, this may lead to the following | |||
| problems. | problems. | |||
| * If the key value of a list entry that represents the same managed | * If the key value of a list entry that represents the same managed | |||
| entity as before is changed, the user may mistakenly identify the | entity as before is changed, the user may mistakenly identify the | |||
| list entry as new. | list entry as new. | |||
| * If the meaning of a list entry is changed, but the key values are | * If the meaning of a list entry is changed but the key values are | |||
| not (e.g., redefining an alarm-type but not changing its alarm- | not (e.g., redefining an alarm-type but not changing its alarm- | |||
| type-id) the change may not be noticed. | type-id), the change may not be noticed. | |||
| * If the key value of a previously removed list entry is reused for | * If the key value of a previously removed list entry is reused for | |||
| a different entity, the change may be misinterpreted as | a different entity, the change may be misinterpreted as | |||
| reintroducing the previous entity. | reintroducing the previous entity. | |||
| Appendix C. Detailed Use Cases | Appendix B. Detailed Use Cases | |||
| This section is non-normative. | This section is non-normative. | |||
| C.1. Use Case 1: Early Documentation of Server Capabilities | B.1. Use Case 1: Early Documentation of Server Capabilities | |||
| A server has a number of server-capabilities that are defined in YANG | A server has a number of server capabilities that are defined in YANG | |||
| modules and can be retrieved from the server using protocols like | modules and can be retrieved from the server using protocols like | |||
| NETCONF or RESTCONF. Server capabilities include: | NETCONF or RESTCONF. Server capabilities include: | |||
| * data defined in "ietf-yang-library": YANG modules, submodules, | * data defined in "ietf-yang-library": YANG modules, submodules, | |||
| features, deviations, schema-mounts, and datastores supported | features, deviations, schema-mounts, and datastores supported | |||
| ([RFC8525]) | ([RFC8525]). | |||
| * alarms supported ([RFC8632]) | * alarms supported ([RFC8632]). | |||
| * data nodes and subtrees that support or do not support on-change | * data nodes and subtrees that support or do not support on-change | |||
| notifications ([RFC8641]) | notifications ([RFC8641]). | |||
| * netconf-capabilities in ietf-netconf-monitoring. | * netconf-capabilities in ietf-netconf-monitoring. | |||
| While it is good practice to allow a client to query these | While it is good practice to allow a client to query these | |||
| capabilities from the live server, that is often not possible. | capabilities from the live server, that is often not possible. | |||
| Often when a network node is released, an associated NMS (network | Often when a network node is released, an associated Network | |||
| management system) is also released with it. The NMS depends on the | Management System (NMS) is also released with it. The NMS depends on | |||
| capabilities of the server. During NMS implementation, information | the capabilities of the server. During NMS implementation, | |||
| about server capabilities is needed. If the information is | information about server capabilities is needed. If the information | |||
| unavailable early in some offline document, but only as instance data | is unavailable early in some offline document but only as instance | |||
| from the live network node, the NMS implementation will be delayed, | data from the live network node, the NMS implementation will be | |||
| because it has to wait until the network node is ready. Also | delayed because it has to wait until the network node is ready. | |||
| assuming that all NMS implementors will have a correctly configured | Also, assuming that all NMS implementors will have correctly | |||
| network nodes from which data can be retrieved, is a very expensive | configured network nodes from which data can be retrieved is a very | |||
| proposition. (An NMS may handle dozens of node types.) | expensive proposition. (An NMS may handle dozens of node types.) | |||
| Network operators often build their own home-grown NMS systems that | Network operators often build their own homegrown NMS systems that | |||
| need to be integrated with a vendor's network node. The operator | need to be integrated with a vendor's network node. The operator | |||
| needs to know the network node's server capabilities in order to do | needs to know the network node's server capabilities in order to do | |||
| this. Moreover, the network operator's decision to buy a vendor's | this. Moreover, the network operator's decision to buy a vendor's | |||
| product may even be influenced by the network node's OAM feature set | product may even be influenced by the network node's Operations, | |||
| documented as the server's capabilities. | Administration, and Maintenance (OAM) feature set documented as the | |||
| server's capabilities. | ||||
| Beside NMS implementors, system integrators and many others also need | Beside NMS implementors, system integrators and many others also need | |||
| the same information early. Examples could be model driven testing, | the same information early. Examples could be model-driven testing, | |||
| generating documentation, etc. | generating documentation, etc. | |||
| Most server-capabilities are relatively stable and change only during | Most server capabilities are relatively stable and change only during | |||
| upgrade or due to licensing or the addition or removal of hardware. | upgrade or due to licensing or the addition or removal of hardware. | |||
| They are usually defined by a vendor at design time, before the | They are usually defined by a vendor at design time, before the | |||
| product is released. It is feasible and advantageous to define/ | product is released. It is feasible and advantageous to define and | |||
| document them early e.g., in a YANG instance data File. | document them early, e.g., in a YANG instance data file. | |||
| It is anticipated that a separate IETF document will define in detail | It is anticipated that a separate IETF document will define in detail | |||
| how and which set of server capabilities should be documented. | how and which set of server capabilities should be documented. | |||
| C.2. Use Case 2: Preloading Data | B.2. Use Case 2: Preloading Data | |||
| There are parts of the configuration that must be fully configurable | There are parts of the configuration that must be fully configurable | |||
| by the operator. However, often a simple default configuration will | by the operator. However, a simple default configuration often will | |||
| be sufficient. | be sufficient. | |||
| One example is access control groups/roles and related rules. While | One example is access control groups/roles and related rules. While | |||
| a sophisticated operator may define dozens of different groups, often | a sophisticated operator may define dozens of different groups, often | |||
| a basic (read-only operator, read-write system administrator, | a basic (read-only operator, read-write system administrator, | |||
| security-administrator) triplet will be enough. Vendors will often | security-administrator) triplet will be enough. Vendors will often | |||
| provide such default configuration data to make device configuration | provide such default configuration data to make device configuration | |||
| easier for an operator. | easier for an operator. | |||
| The device vendor may define a set of default groups (/nacm:nacm/ | The device vendor may define a set of default groups (/nacm:nacm/ | |||
| groups) and rules for these groups to access specific parts of the | groups) and rules for these groups to access specific parts of the | |||
| common models (/nacm:nacm/rule-list/rule). | common models (/nacm:nacm/rule-list/rule). | |||
| YANG instance data files can be used to document and/or preload the | YANG instance data files can be used to document and/or preload the | |||
| default configuration. | default configuration. | |||
| C.3. Use Case 3: Documenting Factory Default Settings | B.3. Use Case 3: Documenting Factory Default Settings | |||
| Nearly every server has a factory default configuration. If the | Nearly every server has a factory default configuration. If the | |||
| system is really badly misconfigured or if the current configuration | system is really badly misconfigured or if the current configuration | |||
| is to be abandoned, the system can be reset to the default factory | is to be abandoned, the system can be reset to the default factory | |||
| configuration. | configuration. | |||
| YANG instance data can be used to document the factory default | YANG instance data can be used to document the factory default | |||
| configuration. See [RFC8808]. | configuration. See [RFC8808]. | |||
| Acknowledgments | ||||
| For their valuable comments, discussions, and feedback, we wish to | ||||
| acknowledge Andy Bierman, Juergen Schoenwaelder, Rob Wilton, Joe | ||||
| Clarke, Kent Watsen, Martin Bjorklund, Ladislav Lhotka, Qin Wu, and | ||||
| other members of the Netmod Working Group. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Balazs Lengyel | Balazs Lengyel | |||
| Ericsson | Ericsson | |||
| Budapest | ||||
| Magyar Tudosok korutja 11 | ||||
| 1117 | ||||
| Hungary | ||||
| Email: balazs.lengyel@ericsson.com | Email: balazs.lengyel@ericsson.com | |||
| Benoit Claise | Benoit Claise | |||
| Huawei | Huawei | |||
| Email: benoit.claise@huawei.com | Email: benoit.claise@huawei.com | |||
| End of changes. 142 change blocks. | ||||
| 561 lines changed or deleted | 398 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||