<?xmlversion="1.0" encoding="UTF-8"?> <!-- :folding=sidekick: -->version='1.0' encoding='utf-8'?> <!DOCTYPE rfcSYSTEM "rfc2629.dtd"[ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]><?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <?rfc toc="yes"?> <?rfc tocompact="yes"?> <?rfc tocdepth="4"?> <?rfc tocindent="yes"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes"?> <?rfc comments="yes"?> <?rfc inline="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?><rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902"docName="draft-ietf-netmod-yang-instance-file-format-21">docName="draft-ietf-netmod-yang-instance-file-format-21" number="9195" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3" consensus="true"> <front> <title abbrev="YANG InstanceData">YANG Instance DataData">A FileFormat</title>Format for YANG Instance Data</title> <seriesInfo name="RFC" value="9195"/> <author initials="B." surname="Lengyel" fullname="Balazs Lengyel"> <organizationabbrev="Ericsson"> Ericsson </organization>abbrev="Ericsson">Ericsson</organization> <address> <postal> <street>Magyar Tudosok korutja 11</street> <city>Budapest</city> <country>Hungary</country> <code>1117</code> </postal> <email>balazs.lengyel@ericsson.com</email> </address> </author> <author fullname="Benoit Claise"initials="B"initials="B." surname="Claise"> <organization>Huawei</organization> <address> <email>benoit.claise@huawei.com</email> </address> </author> <dateyear="2021"/>year="2022" month="February"/> <area>OPS</area> <workgroup>Netmod</workgroup> <abstract> <t> There is a need to document data defined in YANG models at design time, implementationtimetime, or when a live server is unavailable. This document specifies a standard file format for YANG instance data, which follows the syntax and semantics of existing YANGmodels,models and annotates it with metadata. </t> </abstract> </front> <middle> <section anchor="intro"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t> There is a need to document data defined in YANG models when a live server is unavailable. Data is often needed atdesign,design time, implementationtimetime, or even later when a live running server is unavailable. To facilitate this offline delivery of data, this document specifies a standard format for YANG instance data sets and YANG instance data files. The format of the instance data set is defined by the "ietf-yang-instance-data" YANGmodule,module; see <xreftarget="instance_data_yam"/>.target="instance_data_yam" format="default"/>. The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in <xreftarget="RFC8342"/>target="RFC8342" format="default"/>. </t> <t>The following is a list ofalready implementedalready-implemented and potential use cases.<list style="format UC%d"> <t>Documentation</t> <ol spacing="normal" type="UC%d"> <li anchor="uc1">Documentation of servercapabilities</t> <t>Preloadingcapabilities</li> <li anchor="uc2">Preloading default configurationdata</t> <t>Documentingdata</li> <li anchor="uc3">Documenting factory defaultsettings</t> <t>Storingsettings</li> <li anchor="uc4">Storing the configuration of a device, e.g., for backup,archivearchive, or auditpurposes</t> <t>Storingpurposes</li> <li anchor="uc5">Storing diagnosticsdata</t> <t>Allowingdata</li> <li anchor="uc6">Allowing YANG instance data to potentially be carried within otherIPCinter-process communication (IPC) messageformats</t> <t>Defaultformats</li> <li anchor="uc7">Default instance data used as part of a templatingsolution</t> <t>Providingsolution</li> <li anchor="uc8">Providing data examples in RFCs or internetdrafts</t> </list> </t>drafts</li> </ol> <t><xreftarget="detailed_use_cases"/>target="detailed_use_cases" format="default"/> describes the first three use cases in detail.</t><t></t> <t> There are many and varied use cases where YANG instance data could be 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 scope for this document. It is anticipated that other documents will define specific use cases. Use cases are listed only as examples. </t> <sectiontitle="Terminology" anchor="terminology"> <t>Theanchor="terminology" numbered="true" toc="default"> <name>Terminology</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t> <t>Instance Data: Ahere. </t> <dl> <dt>Instance Data:</dt><dd>A collection of instantiated datanodes.</t> <t>Instancenodes.</dd> <dt>Instance DataSet: ASet:</dt><dd>A named set of data items annotated with metadata that can be used as instance data in a YANG datatree.</t> <t>Instancetree.</dd> <dt>Instance DataFile: AFile:</dt><dd>A file containing an instance data set formatted according to the rules described in thisdocument.</t> <t>Content-schema: Adocument.</dd> <dt>Content-schema:</dt><dd>A set of YANG modules with their revision, supported features, and deviations for which the instance data set contains instancedata.</t> <t>Content definingdata.</dd> <dt>Content-defining YANGmodule: anModule:</dt><dd>An individual YANG module that is part of thecontent-schema.</t>content-schema.</dd> </dl> <t>The term "server" is used as defined in <xreftarget="RFC8342"/>.</t>target="RFC8342" format="default"/>.</t> </section> <sectiontitle="Principles">numbered="true" toc="default"> <name>Principles</name> <t>The following is a list of the basic principles of the instance data format:<list style="format P%d"> <t>Two</t> <ol spacing="normal" type="P%d"><li>Two standard formats shall be defined based on the XML and JSONencodings.</t> <t>Instanceencodings.</li> <li>Instance data shall reuse existing encoding rules forYANG definedYANG-defined data.</t> <t>Metadata</li> <li>Metadata about the instance data set (<xreftarget="instance_data_set_metadata"/>)target="instance_data_set_metadata" format="default"/>) shall bedefined.</t> <t>Adefined.</li> <li>A YANG instance data set shall be allowed to contain data for multiple YANGmodules.</t> <t>Instancemodules.</li> <li>Instance data shall be allowed to contain configuration data, state data, or a mix of thetwo.</t> <t>Partialtwo.</li> <li>Partial data sets shall beallowed.</t> <t>Theallowed.</li> <li>The YANG instance data format shall be usable for any data for which YANG module(s) are defined and available to the reader, independent of whether the module is implemented by aserver.</t> <t>Itserver.</li> <li>It shall be possible to report the identity of the datastore with which the instance data set isassociated.</t> </list> </t>associated.</li> </ol> </section> <sectiontitle="Deliverynumbered="true" toc="default"> <name>Delivery of InstanceData">Data</name> <t>Instance data sets that are produced as a result of some sort of specification or design effort may be available without the need for a liveserverserver, e.g., via download from the vendor'swebsite,website or in any other way that product documentation is distributed.</t> <t>Other instance data sets may be read from or produced by the YANG serveritselfitself, e.g.,UC5<xref target="uc5" format="none">UC5</xref> documenting diagnostic data.</t> </section> <sectiontitle="Datanumbered="true" toc="default"> <name>Data Lifecycle">Cycle</name> <t> 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 represent the currentdata,data unless it is updated. The current values may be retrieved atrun-timeruntime via NETCONF/RESTCONF orreceivedreceived, e.g., in YANG-Push notifications. </t> <t> Whether the instance data changesandand, if so, when andhow,how should be described either in the instance data set's description statement or in some otherimplementation specificimplementation-specific manner. </t> </section> </section> <section anchor="instance_data_file_format"title="Instancenumbered="true" toc="default"> <name>Instance Data FileFormat">Format</name> <t> A YANG instance data fileMUST<bcp14>MUST</bcp14> contain a single instance data set and no additional data. </t> <t>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 content-data. The header part carries metadata for the instance data set. The content-data, defined as an anydata data node, carries the instance data that the user wants todocument/provide.document and/or provide. The syntax and semantics of content-dataisare defined by the content-schema. </t> <t>Two formats are specified based on the XML and JSON YANG encodings. The file formats are achieved by applying the respective XML and JSON encoding rules for the YANG structure included in this document. Later, as other YANG encodings (e.g., CBOR) are defined, further instance data formats may be specified. </t> <t>The content-data partMUST<bcp14>MUST</bcp14> conform to thecontent-schema,content-schema while allowing for the exceptions listed below. The content-data partSHALL<bcp14>SHALL</bcp14> follow the encoding rules defined in <xreftarget="RFC7950"/>target="RFC7950" format="default"/> for XML and <xreftarget="RFC7951"/>target="RFC7951" format="default"/> for JSON andMUST<bcp14>MUST</bcp14> use UTF-8 character encoding. Content-dataMAY<bcp14>MAY</bcp14> include:<list style="symbols"> <t>metadata,</t> <ul spacing="normal"> <li>metadata, as defined by <xreftarget="RFC7952"/>.</t> <t>origintarget="RFC7952" format="default"/>.</li> <li>origin metadata, as specified in <xreftarget="RFC8526"/>target="RFC8526" format="default"/> and <xreftarget="RFC8527"/></t> <t>implementation specifictarget="RFC8527" format="default"/>.</li> <li>implementation-specific metadata relevant to individual data nodes. Unknown metadataMUST<bcp14>MUST</bcp14> be ignored by users of instance data, allowing it to be used later for otherpurposes.</t> </list> </t>purposes.</li> </ul> <t>An instance data setMAY<bcp14>MAY</bcp14> contain data for any number of YANG modules; ifneededneeded, itMAY<bcp14>MAY</bcp14> carry the complete configuration and state data for a server. Default values should be excluded where they do not provide additional useful data.</t><t></t> <t> Configuration ("config true") and operational state data ("config false")MAY<bcp14>MAY</bcp14> be mixed in the instance data file.</t><t></t> <t> Instance data filesMAY<bcp14>MAY</bcp14> contain partial data sets. This means "mandatory", "min-elements", "require-instance true","must""must", and "when" constraintsMAY<bcp14>MAY</bcp14> be violated. </t> <t>The name of the instance data fileSHOULD<bcp14>SHOULD</bcp14> be of the following form (using ABNF notation <xreftarget="RFC5234"/>): <figure align="center" anchor="filename" suppress-title="true"> <artwork align="left" name="filename-abnf"> <![CDATA[target="RFC5234" format="default"/>): </t> <sourcecode name="filename-abnf" type="abnf"><![CDATA[ instance-data-set-name ["@" ( revision-date / timestamp ) ] ( ".xml" / ".json" )E.g.,]]></sourcecode> <t>Examples include:</t> <artwork><![CDATA[ acme-router-modules.xmlE.g.,acme-router-modules@2018-01-25.xmlE.g.,acme-router-modules@2018-01-25T15_06_34_3+01_00.json]]> </artwork> </figure>]]></artwork> <t> If the leaf "name" is present in the instance data header, its valueSHOULD<bcp14>SHOULD</bcp14> be used for the "instance-data-set-name" in the filename. If the "revision-date" is present in thefilenamefilename, itMUST<bcp14>MUST</bcp14> conform to the format of the revision-date leaf in the YANG model. If the "revision-date" is present in both the filename andinthe instance data header, the revision date in thefile name MUSTfilename <bcp14>MUST</bcp14> be set to the latest revision date inside the instance data set. If the "timestamp" is present in thefilenamefilename, itMUST<bcp14>MUST</bcp14> conform to the format of the timestamp leaf in the YANG model except for replacing colons as described below. If the "timestamp" is presentbothin both the filename andinthe instance data header, the timestamp in thefile name SHOULDfilename <bcp14>SHOULD</bcp14> be set to the timestamp inside the instance data set; any colons, if present, shall be replaced by underscores. </t> <t anchor="instance_data_set_metadata">Metadata, information about the data setitself MUSTitself, <bcp14>MUST</bcp14> be included. Some metadata items are defined in the YANG module "ietf-yang-instance-data", but other itemsMAY<bcp14>MAY</bcp14> beused.</t><t>used.</t> <t> MetadataMUST<bcp14>MUST</bcp14> include:<list><t><list style="symbols"> <t>Version</t> <ul empty="true" spacing="normal"> <li> <ul spacing="normal"> <li>Version of the YANGInstance Datainstance data format (if not explicitlypresentpresent, the default value isused)</t> </list></t></list>used).</li> </ul> </li> </ul> <t> MetadataSHOULD<bcp14>SHOULD</bcp14> include:<list><t><list style="symbols"> <t>Name</t> <ul empty="true" spacing="normal"> <li> <ul spacing="normal"> <li>Name of the dataset</t> <t>Content-schemaset.</li> <li>Content-schema specification (i.e., the "content-schema"node)</t> <t>Descriptionnode).</li> <li>Description of the instance data set. The descriptionSHOULD<bcp14>SHOULD</bcp14> contain information on whether and how the data can change during the lifetime of theserver </t> <t>Anserver. </li> <li>An indication of whether default values are included. The default handling uses the concepts defined in <xreftarget="RFC6243"/>, howevertarget="RFC6243" format="default"/>; however, as only concepts are re-used, users of instance datasets,sets do not need to supportRFC 6243. </t> </list></t></list> </t><xref target="RFC6243"/>. </li> </ul> </li> </ul> <sectiontitle="Specifyingnumbered="true" toc="default"> <name>Specifying the ContentSchema">Schema</name> <t>To properly understand and use an instance data set, the user needs to know the content-schema. The content-schema can beeitherspecified either in external documents or within the instance data set. In the lattercasecase, one of the following methodsMUST<bcp14>MUST</bcp14> be used:<list> <t>Inline method: Include</t> <dl spacing="normal"> <dt>Inline method:</dt><dd>Include the needed information as part of the instance dataset.</t> <t>Simplified-Inline method: Includeset.</dd> <dt>Simplified-inline method:</dt><dd>Include the needed information as part of the instance data set;short specification,only themodulemodules' name and revision-dateis used.</t> <t>URI method: Includeare used.</dd> <dt>URI method:</dt><dd>Include a URI that references another YANG instance data file. This instance data file will use the same content-schema as the referenced YANG instance datafile.file (if you don't want to repeat the info again andagain)</t> </list>again).</dd> </dl> <t> Additionalmethodsmethods, e.g., aYANG-package basedYANG-package-based solution may be added later. </t><t>Note,<t>Note that the specified content-schema only indicates the set of modules that were used to define this YANG instance data set. Sometimes instance data may be used for a server supporting a different YANG module set (e.g., for the "Preloading default configuration data"use-case, UC2use case, <xref target="uc2" format="none">UC2</xref> in <xreftarget="intro"/>,target="intro" format="default"/>, the instance data set may not be updated every time the YANG modules on the server are updated). Whether an instance data set originally defined using a specific content-schema is usable witha different otheranother schema depends on manyfactorsfactors, including theamountnumber of differences and the compatibility between the original and the otherschema,schema when considering modules, revisions, features, deviations, the scope of the instance data, etc. </t> <sectiontitle="Inline Method">numbered="true" toc="default"> <name>Inline Method</name> <t>Theinline-yang-library"inline-yang-library" anydata data node carries instance data (conforming toietf-yang-library@2019-01-04)"ietf-yang-library@2019-01-04") <xreftarget="RFC8525"/>target="RFC8525" format="default"/> that specifies thecontent definingcontent-defining YANGmodulesmodules, including revision, supported features,deviationsdeviations, and anyrelevantadditional relevant data. An example of the"inline"inline method is provided in <xreftarget="acme-router-modules-example"/>.target="acme-router-modules-example" format="default"/>. </t> </section> <sectiontitle="Simplified-Inline Method">numbered="true" toc="default"> <name>Simplified-Inline Method</name> <t>The instance data set contains a list ofcontent definingcontent-defining YANGmodulesmodules, including the revision date for each. Usage of this method implies that the modules are used without any deviations and with all features supported. YANG modules that are only required to satisfy import-only dependenciesMAY<bcp14>MAY</bcp14> be excluded from the leaf-list. If they areexcludedexcluded, then the consumer of the instance data set has to apply the YANG language rules to resolve the imports. An example of the"simplified-inline"simplified-inline method is provided in <xreftarget="read-only-acm-rules-example"/>.target="read-only-acm-rules-example" format="default"/>. </t> </section> <sectiontitle="URI Method">numbered="true" toc="default"> <name>URI Method</name> <t>The "same-schema-as-file" leafSHALL<bcp14>SHALL</bcp14> contain a URI that references another YANG instance data file. The current instance data file will use the same content-schema as the referenced file.</t><t></t> <t> The referenced instance data fileMAY<bcp14>MAY</bcp14> have no content-data if it is used solely for specifying the content-schema.</t><t></t> <t> If a referenced instance data file is unavailable, the content-schema is unknown.</t><t></t> <t> The URI method is advantageous when the user wants to avoid the overhead of specifying the content-schema in each instance datafile: E.g., In UC6,file -- for example, in <xref target="uc6" format="none">UC6</xref>, when the system creates a diagnostic file every minute to document the state of the server. </t> <t>An example of the"URI"URI method is provided in <xreftarget="acme-router-netconf-diagnostics-example"/>.</t>target="acme-router-netconf-diagnostics-example" format="default"/>.</t> </section> </section> <sectiontitle="Examples" anchor="examples">anchor="examples" numbered="true" toc="default"> <name>Examples</name> <sectiontitle="Documentationanchor="acme-router-modules-example" numbered="true" toc="default"> <name>Documentation ofserver capabilities" anchor="acme-router-modules-example">Server Capabilities</name> <t>The example fileacme-router-modules@2021-09-16.xmlacme-router-modules@2022-01-20.xml reflectsUC1<xref target="uc1" format="none">UC1</xref> in <xreftarget="intro"/>.target="intro" format="default"/>. It provides a list of supported YANG modules and NETCONF capabilities for a server. It uses the"inline"inline method to specify the content-schema.</t> <t>The example uses artwork folding <xreftarget="RFC8792"/>.</t>target="RFC8792" format="default"/>.</t> <figurealign="center"anchor="acme-router-modules"><artwork align="left" name="acme-router-modules@2021-09-16.xml"> <![CDATA[==========<sourcecode name="acme-router-modules@2022-01-20.xml" type="xml"><![CDATA[ ========== NOTE: '\' line wrapping per RFC 8792 =========== <?xml version="1.0" encoding="UTF-8"?> <instance-data-set xmlns=\ "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> <name>acme-router-modules</name> <content-schema> <inline-yang-library> <modules-state \ xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> <module> <name>ietf-yang-library</name> <revision>2019-01-04</revision> </module> <module> <name>ietf-netconf-monitoring</name> <revision>2010-10-04</revision> </module> </modules-state> </inline-yang-library> </content-schema> <revision> <date>2020-10-23</date> <description>Initial version</description> </revision> <description>Defines the minimal set of modules that any \ acme-router will contain. This minimal set will \ only change when a newSWsoftware release is \ introduced.</description> <contact>info@acme.example.com</contact> <content-data> <modules-state \ xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> <module> <name>ietf-yang-library</name> <revision>2019-01-04</revision> <namespace>\ urn:ietf:params:xml:ns:yang:ietf-yang-library\ </namespace> <conformance-type>implement</conformance-type> </module> <module> <name>ietf-system</name> <revision>2014-08-06</revision> <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace> <feature>sys:authentication</feature> <feature>sys:local-users</feature> <deviation> <name>acme-system-ext</name> <revision>2018-08-06</revision> </deviation> <conformance-type>implement</conformance-type> </module> <module> <name>ietf-netconf-monitoring</name> <revision>2010-10-04</revision> <namespace>\ urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\ </namespace> <conformance-type>implement</conformance-type> </module> <module> <name>ietf-yang-types</name> <revision>2013-07-15</revision> <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types\ </namespace> <conformance-type>import</conformance-type> </module> <module> <name>acme-system-ext</name> <revision>2018-08-06</revision> <namespace>\ urn:rdns:acme.example.com:oammodel:acme-system-ext\ </namespace> <conformance-type>implement</conformance-type> </module> </modules-state> <netconf-state \ xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> <capabilities> <capability>\ urn:ietf:params:netconf:capability:validate:1.1\ </capability> </capabilities> </netconf-state> </content-data> </instance-data-set>]]></artwork>]]></sourcecode> </figure> </section> <sectiontitle="Preloading default configuration data" anchor="read-only-acm-rules-example">anchor="read-only-acm-rules-example" numbered="true" toc="default"> <name>Preloading Default Configuration Data</name> <t>The example fileread-only-acm-rules@2021-09-16.xmlread-only-acm-rules@2022-01-20.xml reflectsUC2<xref target="uc2" format="none">UC2</xref> in <xreftarget="intro"/>.target="intro" format="default"/>. It provides a default rule set for a read-only operator role. It uses the"simplified-inline"simplified-inline method for specifying the content-schema.</t> <figurealign="center"anchor="read-only-acm-rules"><artwork align="left" name="read-only-acm-rules@2021-09-16.xml"> <![CDATA[==========<sourcecode name="read-only-acm-rules@2022-01-20.xml" type="xml"><![CDATA[ ========== NOTE: '\' line wrapping per RFC 8792 =========== <?xml version="1.0" encoding="UTF-8"?> <instance-data-set xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> <name>read-only-acm-rules</name> <content-schema> <module>ietf-netconf-acm@2018-02-14</module> </content-schema> <revision> <date>2018-07-04</date> <description>Initial version</description> </revision> <description>Default access control rules for a read-only \ role. This set of rules will only change when a new \SWsoftware release is introduced.</description> <content-data> <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> <enable-nacm>true</enable-nacm> <read-default>deny</read-default> <exec-default>deny</exec-default> <rule-list> <name>read-only-role</name> <group>read-only-group</group> <rule> <name>read-all</name> <module-name>*</module-name> <access-operation>read</access-operation> <action>permit</action> </rule> </rule-list> </nacm> </content-data> </instance-data-set>]]></artwork>]]></sourcecode> </figure> </section> <sectiontitle="Storing diagnostics data" anchor="acme-router-netconf-diagnostics-example">anchor="acme-router-netconf-diagnostics-example" numbered="true" toc="default"> <name>Storing Diagnostics Data</name> <t>The example file acme-router-netconf-diagnostics@2018-01-25T17_00_38Z.json reflectsUC5<xref target="uc5" format="none">UC5</xref> in <xreftarget="intro"/>.target="intro" format="default"/>. An instance data set that contains statistics about the NETCONF server is produced by the server every 15minutes that contains statistics about the NETCONF server.minutes. As a new set is produced periodically many times adayday, a revision-date would be useless;insteadinstead, a timestamp is included.</t> <figurealign="center"anchor="acme-router-netconf-diagnostics"><artwork align="left" name="acme-router-netconf-diagnostics@2018-01-25T17_00_38Z.json"> <![CDATA[==========<sourcecode name="acme-router-netconf-diagnostics@2018-01-25T17_00_38Z.json" type=""><![CDATA[ ========== NOTE: '\' line wrapping per RFC 8792 =========== { "ietf-yang-instance-data:instance-data-set": { "name": "acme-router-netconf-diagnostics", "content-schema": { "same-schema-as-file": "file:///acme-diagnostics-schema.json" }, "timestamp": "2018-01-25T17:00:38Z", "description": ["NETCONF statistics, \ The data may change at any time."], "content-data": { "ietf-netconf-monitoring:netconf-state": { "statistics": { "netconf-start-time ": "2018-12-05T17:45:00Z", "in-bad-hellos ": "32", "in-sessions ": "397", "dropped-sessions ": "87", "in-rpcs ": "8711", "in-bad-rpcs ": "408", "out-rpc-errors ": "408", "out-notifications": "39007" } } } } }]]></artwork>]]></sourcecode> </figure> </section> </section> </section> <section anchor="instance_data_yam"title="YANGnumbered="true" toc="default"> <name>YANG Instance DataModel">Model</name> <sectiontitle="Tree Diagram">numbered="true" toc="default"> <name>Tree Diagram</name> <t> The following tree diagram <xreftarget="RFC8340"/>target="RFC8340" format="default"/> provides an overview of the data model. </t><t> <figure> <artwork><![CDATA[<sourcecode name="" type="yangtree"><![CDATA[ module: ietf-yang-instance-data structure instance-data-set:+-- name?+--name? string+-- format-version?+--format-version? string+-- includes-defaults?+--includes-defaults? enumeration+-- content-schema+--content-schema |+-- (content-schema-spec)?+--(content-schema-spec)? | +--:(simplified-inline) | |+-- module*+--module* module-with-revision-date | +--:(inline) | |+-- inline-yang-library+--inline-yang-library <anydata> | +--:(uri) |+-- same-schema-as-file?+--same-schema-as-file? inet:uri+-- description*+--description* string+-- contact?+--contact? string+-- organization?+--organization? string+-- datastore?+--datastore? ds:datastore-ref+-- revision*+--revision* [date] |+-- date+--date string |+-- description?+--description? string+-- timestamp?+--timestamp? yang:date-and-time+-- content-data?+--content-data? <anydata>]]></artwork> </figure> </t>]]></sourcecode> </section> <sectiontitle="YANG Model" anchor="yang-model">anchor="yang-model" numbered="true" toc="default"> <name>YANG Model</name> <t> This YANG module imports typedefs from <xreftarget="RFC6991"/>,target="RFC6991" format="default"/>, <xreftarget="RFC6243"/>,target="RFC6243" format="default"/>, identities from <xreftarget="RFC8342"/>target="RFC8342" format="default"/>, and the "structure" extension from <xreftarget="RFC8791"/>.target="RFC8791" format="default"/>. It also references <xreftarget="RFC8525"/>. </t><t> <figure> <artwork align="left" name="ietf-yang-instance-data@2021-09-16.yang"><![CDATA[ <CODE BEGINS> file "ietf-yang-instance-data@2021-09-16.yang" // RFC Ed.: replace the date above if the module gets changed in //any way during reviews or RFC editor process and remove this notetarget="RFC8525" format="default"/>. </t> <sourcecode name="ietf-yang-instance-data@2022-01-20.yang" type="yang" markers="true"><![CDATA[ module ietf-yang-instance-data { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; prefix yid; import ietf-yang-structure-ext { prefix sx; reference"YANG"RFC 8791: YANG Data StructureExtensions: draft-ietf-netmod-yang-data-ext-05";Extensions"; } import ietf-datastores { prefix ds; reference "RFC 8342: Network Management Datastore Architecture (NMDA)"; } import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } import ietf-netconf-with-defaults { prefix ncwd; reference "RFC 6243: With-defaults Capability for NETCONF"; } organization "IETF NETMOD Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/netmod/> WG List: <mailto:netmod@ietf.org> Author: Balazs Lengyel <mailto:balazs.lengyel@ericsson.com> Author: Benoit Claise <mailto:benoit.claise@huawei.com>"; description "The module defines the structure and content of YANG instance data sets. The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. Copyright (c)20212022 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, theSimplifiedRevised BSD License set forth in Section 4.c of the IETF Trust's 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 RFCXXXX;9195 (https://www.rfc-editor.org/info/rfc9195); see the RFC itself for full legal notices.";// RFC Ed.: replace XXXX with RFC number and remove this noterevision2021-09-162022-01-20 {// RFC Ed.: replace the date above if the module gets changed in // anyway during reviews or RFC editor process and remove //this notedescription "Initial revision."; reference "RFCXXXX:9195: YANG Instance Data File Format";// RFC Ed.: replace XXXX with RFC number and remove this note} typedef module-with-revision-date { type string { 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]))?'; pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; } description "A type defining a module name and an optional revision date,e.g. ietf-yang-library@2019-01-04";e.g., ietf-yang-library@2019-01-04."; } sx:structure"instance-data-set"instance-data-set { description "A data structure to define a format for YANG instance data. The majority of the YANG nodesprovide meta-dataprovides metadata about the instance data; the instance data itself is contained only in the 'content-data' node."; leaf name { type string; description "An arbitrary name for the YANG instance data set. This value is primarily used for descriptive purposes. However, when the instance data set is saved to a file, then the filename MUST encode the name'svalue,value per Section 2 of RFCXXXX."; // RFC Ed.: replace XXXX with RFC number and remove this note9195."; } leaf format-version { type string { pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; } default"2021-09-16"; // RFC Ed.: replace the date above if the module gets changed // in anyway during reviews or RFC editor process and remove // this note"2022-01-20"; description "The 'revision' of the 'ietf-yang-instance-data' module used to encode this 'instance-data-set'."; } leaf includes-defaults { type ncwd:with-defaults-mode; defaultreport-all;"report-all"; description" Indicates"Indicates how data nodes with default values are represented for all data nodes contained in the instance-data-set. It uses the same definitions as persectionSection 3 of RFC6243,6243 but applied in the context of an instance data file rather than a NETCONF request using the <with-defaults> parameter. For JSON files, the encoding of the 'report-all-tagged' option is as defined insectionSection 4.8.9 of RFC 8040."; reference"With-defaults"RFC 6243: With-defaults Capability forNETCONF, RFC 6243.";NETCONF"; } container content-schema { description "The content schema (i.e., YANG modules) used to create the instance data set. If notpresentpresent, the user needs to obtain the information through external documents."; choice content-schema-spec { description "Specification of the content-schema."; case simplified-inline { leaf-list module { type module-with-revision-date; min-elements 1; description "The list ofcontent definingcontent-defining YANG modules. The value SHALL start with the module name. If the module contains a revisionstatementstatement, the revision date SHALL be included in the leaf-listentry. E.g., ietf-yang-library@2019-01-04entry, e.g., ietf-yang-library@2019-01-04. Usage of this leaf-list implies the modules are used without any deviations and with all features supported. Multiple revisions of the same module MUST NOT be specified."; } } case inline { anydata inline-yang-library { mandatory true; description "Instance data corresponding to the ietf-yang-library@2019-01-04 defining the set ofcontent definingcontent-defining YANG modules for this instance-data-set."; } } case uri { leaf same-schema-as-file { type inet:uri; description "A reference to another YANG instance data file. This instance data file uses the same content schema as the referenced file. Referenced files using the 'inline' or the 'simplified-inline' methods MUST be supported. Referenced files using the 'URIMethod'method' MAY be supported. The URL schemes 'file://' and 'https://' MUST besupported,supported; other schemes MAY also be supported."; } } } } leaf-list description { type string; description "Description of the instance data set."; } leaf contact { type string; description "Contact information for the person or organization to whom queries concerning this instance data set should be sent."; } leaf organization { type string; description "Organization responsible for the instance data set."; } leaf datastore { type ds:datastore-ref; description "The identity of the datastore with which the instance data set is associated, e.g., the datastore from where the data wasread orread, the datastore into which the data may beloadedloaded, or the datastorewhichthat is being documented. If a single specific datastore cannot be specified, the leaf MUST be absent. If this leaf is absent, then the datastore to which the instance data belongs is unspecified."; } list revision { key "date"; description "Instance data sets that are produced as a result of some sort of specification or design effort SHOULD have at least one revision entry. For every published editorial change, a new unique revision SHOULD be added in front of the revisions sequence so that all revisions are in reverse chronological order. Incasecases of instance data sets that are read from or produced by a server or otherwise subject to frequent updates or changes, revision SHOULD NOT bepresent";present."; leaf date { type string { pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'; } description "Specifies the date the instance data set was last modified. Formatted asYYYY-MM-DD";YYYY-MM-DD."; } leaf description { type string; description "Description of this revision of the instance data set."; } } leaf timestamp { type yang:date-and-time; description "The date and time when the instance data set was last modified. Incasecases of instance data sets that are read from or produced by a server or otherwise subject to frequent updates or changes, the timestamp SHOULD be present. If both a revision list entry and timestamp arepresentpresent, the timestamp SHOULD contain the same date as the latest revision statement."; } anydata content-data { description "Contains the real instance data. The data MUST conform to the relevant YANG modules specified either in the content-schema or in some otherimplementation specificimplementation-specific manner."; } } }<CODE ENDS> ]]></artwork> </figure> </t>]]></sourcecode> </section> </section> <section anchor="security"title="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>The YANG module defined in this document only defines a wrapper structure specifying a format and a metadata header for YANG instance data defined by the content-schema. Because ofthisthis, the security considerations template for YANG models insection 3.7.1 in<xreftarget="RFC8407"/>target="RFC8407" sectionFormat="of" section="3.7.1"/> is not followed. The instance data is designed to be accessed as a stored file or over any file access method or protocol. </t> <t>The document does not specify any method to influence the behavior of a server.</t> <t> The header part is usually not securitysensitive, howeversensitive; however, sensitive information may be included, in which case it needs to be handledsecurelysecurely, as mentioned below. Information to consider includes:<list style="symbol"> <t>If</t> <ul spacing="normal"> <li>If the URI method is used for specification of the content-schema and the URI includes a userinfosubcomponent</t> <t>Anysubcomponent</li> <li>Any descriptiontext</t> </list> </t>text</li> </ul> <t>The content part may contain sensitive data. The security sensitivity of this data is completely dependent on the content-schema. Depending on the nature of the instance data, instance data filesMAY<bcp14>MAY</bcp14> need to be handled securely. The same kind of handling should be applied to this fileat-restat rest andin-transitin transit that would be needed for the result of a read operation returning the same data. These in-transit protection mechanisms will also mitigate integrity issues when transporting the file. </t> <t>Instance data files should be protected against modification or unauthorized access using normalfile handlingfile-handling mechanisms.Care should be taken, whenWhen copying the original files or providing file access for additional users, care should be taken not to reveal information unintentionally. </t> <t>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 instance data file may be altered maliciously or even as part of its normal handling. In thiscasecase, the content-schema might differ from the one expected. Protecting the integrity and stability of the referenced file should be ensured. </t> </section> <section anchor="iana"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t>This document registers one URI and one YANG module.</t> <sectiontitle="URI Registration">numbered="true" toc="default"> <name>URI Registration</name> <t>This document registersonethe following URI in the <xreftarget="RFC3688"> IETFtarget="RFC3688" format="default"> "IETF XMLregistry </xref>. Following the format in RFC 3688, the following registration is requested to be made:</t> <t><figure><artwork> URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data Registrant Contact: The IESG. XML: N/A,Registry"</xref>:</t> <dl spacing="compact"> <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-yang-instance-data</dd> <dt>Registrant Contact:</dt><dd>The IESG.</dd> <dt>XML:</dt><dd>N/A, the requested URI is an XMLnamespace. </artwork></figure></t>namespace.</dd> </dl> </section> <sectiontitle="YANGnumbered="true" toc="default"> <name>YANG Module NameRegistration">Registration</name> <t>This document registersonethe following YANG module in theYANG"YANG ModuleNamesNames" registry <xreftarget="RFC6020"/>. Following the format in [RFC6020], the following registrations are requested: </t> <t><figure><artwork> 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 </artwork></figure></t> </section>target="RFC6020" format="default"/>:</t> <dl spacing="compact"> <dt>Name:</dt><dd>ietf-yang-instance-data</dd> <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-yang-instance-data</dd> <dt>Prefix:</dt><dd>yid</dd> <dt>Reference:</dt><dd>RFC 9195</dd> </dl> </section><section title="Acknowledgments"> <t>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 WG.</t></section> </middle><?rfc needLines="20"?><back><references title="Normative References"> <?rfc include='reference.RFC.7950'?> <?rfc include='reference.RFC.7951'?> <?rfc include='reference.RFC.7952'?> <?rfc include='reference.RFC.8526'?> <?rfc include='reference.RFC.8527'?> <?rfc include='reference.RFC.6243'?> <?rfc include="reference.RFC.8342"?> <?rfc include='reference.RFC.2119'?> <?rfc include='reference.RFC.8174'?> <?rfc include='reference.RFC.6991'?> <?rfc include='reference.RFC.8525'?> <?rfc include='reference.RFC.8791'?> <?rfc include='reference.RFC.6020'?> <?rfc include='reference.RFC.5234'?><references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7951.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7952.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8526.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8527.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6243.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8525.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8791.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8641.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8632.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8407.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8808.xml"/> </references><references title="Informative References"> <?rfc include='reference.RFC.8641'?> <?rfc include='reference.RFC.8632'?> <?rfc include='reference.RFC.3688'?> <?rfc include="reference.RFC.8340"?> <?rfc include="reference.RFC.8407"?> <?rfc include='reference.RFC.8792'?> <?rfc include='reference.RFC.8808'?></references><?rfc needLines="100"?> <section title="Changes between revisions"> <t>RFC Ed.: Remove section "Changes between revisions"</t> <t>v20 - v21 <list style="symbols"> <t>Minor updates for IESG comments</t> <t>Added ABNF as a normative reference for the filename's definition.</t> <t>Enhanced security considerations</t> <t>Added data change information to the description of the examples.</t> </list> </t> <t>v19 - v20 <list style="symbols"> <t>Minor updates for IESG comments</t> </list> </t> <t>v18 - v19 <list style="symbols"> <t>Updated leaf includes-defaults </t> </list> </t> <t>v17 - v18 <list style="symbols"> <t>Added the report-all-tagged mode to the leaf includes-defaults</t> </list> </t> <t>v16 - v17 <list style="symbols"> <t>Removed default statement from includes-default</t> </list> </t> <t>v15 - v16 <list style="symbols"> <t>Editorial changes</t> </list> </t> <t>v14 - v15 <list style="symbols"> <t>Removed reference to revision-label</t> <t>For the inline method made the usage of ietf-yang-library@2019-01-04 mandatory. Simplified the case "inline" in the YANG module.</t> <t>Removed the "inline-module" leaf as it does not carry useful information anymore.</t> <t>Removed YANG feature</t> </list> </t> <t>v13 - v14 <list style="symbols"> <t>Added leaf includes-defaults</t> <t>Many small changes based on AD review</t> </list> </t> <t>v09 - v13 <list style="symbols"> <t>Editorial updates</t> </list> </t> <t>v08 - v09 <list style="symbols"> <t>Removed statement "the format will be similar to the response of a NETCONF get operation"</t> <t>Introduced artwork folding in the examples</t> </list> </t> <t>v07 - v08 <list style="symbols"> <t>Moved compatibility into appendix</t> <t>Renamed yid-version to format-version. Changed format to date of the YANG module</t> <t>Made support of ietf-yang-library mandatory if inline-content-schema is supported</t> <t>Many small changes based on WGLC</t> </list> </t> <t>v06 - v07 <list style="symbols"> <t>Updated terminology, use-cases</t> <t>Many small changes based on WGLC</t> </list> </t> <t>v05 - v06 <list style="symbols"> <t>Modified module name format, removed .yin or .yang extension</t> <t>Removed pattern for module and inline-module. The usage of revision-label should also be allowed. </t> </list> </t> <t>v04 - v05 <list style="symbols"> <t>Updated according to YANG-Doctor review</t> <t>Updated security considerations</t> <t>Added a wrapping container for the schema, and renamed the data nodes in the inline and uri cases. </t> <t>Allowed .yin for simplified-inline schema naming. Made date optional if it is unavailable in the YANG module.</t> <t>Added a mandatory yid-version to the header metadata to allow later updates of the module.</t> </list> </t> <t>v03 - v04 <list style="symbols"> <t>removed entity-tag and last-modified timestamp</t> <t>Added simplified-inline method of content-schema specification</t> </list> </t> <t>v02 - v03 <list style="symbols"> <t>target renamed to "content-schema" and "content defining YANG module(s)"</t> <t>Made name of instance data set optional</t> <t>Updated according to draft-ietf-netmod-yang-data-ext-03</t> <t>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.</t> </list> </t> <t>v01 - v02 <list style="symbols"> <t>Removed design time from terminology</t> <t>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.</t> <t>Changed target-ptr to a choice</t> <t>Inline target-ptr may include augmenting modules and alternatives to ietf-yang-library</t> <t>Moved list of target modules into a separate <target-modules> element.</t> <t>Added backwards compatibility considerations</t> </list> </t> <t>v00 - v01 <list style="symbols"> <t>Added the target-ptr metadata with 3 methods</t> <t>Added timestamp metadata</t> <t>Removed usage of dedicated .yid file extension</t> <t>Added list of use cases</t> <t>Added list of principles</t> <t>Updated examples</t> <t>Moved detailed use case descriptions to appendix</t> </list> </t> </section><sectiontitle="Backwards Compatibility">numbered="true" toc="default"> <name>Backwards Compatibility</name> <t>The concept ofbackwards compatibility"backwards compatibility" and what changes are backwards compatible are not defined for"instanceinstance datasets"sets asit isthey are highly dependent on the specific use case and the content-schema.</t><t></t> <t> In case of "instance data sets" that are the result of design or specification activity, some changes that may be good to avoid are listed below.</t><t></t> <t> YANG uses the concept of managed entities identified by key values; if the connection between the represented entity and the key value is not preserved during an update, this may lead to the following problems.<list style="symbols"> <t>If</t> <ul spacing="normal"> <li>If the key value of a list entry that represents the same managed entity as before is changed, the user may mistakenly identify the list entry asnew.</t> <t>Ifnew.</li> <li>If the meaning of a list entry ischanged,changed but the key values are not (e.g., redefining an alarm-type but not changing itsalarm-type-id)alarm-type-id), the change may not benoticed.</t> <t>Ifnoticed.</li> <li>If the key value of a previously removed list entry is reused for a different entity, the change may be misinterpreted as reintroducing the previousentity.</t> </list> </t>entity.</li> </ul> </section> <sectiontitle="Detailedanchor="detailed_use_cases" numbered="true" toc="default"> <name>Detailed UseCases" anchor="detailed_use_cases">Cases</name> <t>This section is non-normative.</t> <sectiontitle="Usenumbered="true" toc="default"> <name>Use Case 1: Early Documentation of ServerCapabilities">Capabilities</name> <t> A server has a number ofserver-capabilitiesserver capabilities that are defined in YANG modules and can be retrieved from the server using protocols like NETCONF or RESTCONF. Server capabilities include:<list style="symbols"> <t></t> <ul spacing="normal"> <li> data defined in "ietf-yang-library": YANG modules, submodules, features, deviations, schema-mounts, and datastores supported (<xreftarget="RFC8525"/>)</t> <t>alarmstarget="RFC8525" format="default"/>).</li> <li>alarms supported (<xreftarget="RFC8632"/>)</t> <t>datatarget="RFC8632" format="default"/>).</li> <li>data nodes and subtrees that support or do not support on-change notifications (<xreftarget="RFC8641"/>)</t> <t>netconf-capabilitiestarget="RFC8641" format="default"/>).</li> <li>netconf-capabilities inietf-netconf-monitoring.</t> </list>ietf-netconf-monitoring.</li> </ul> <t> While it is good practice to allow a client to query these capabilities from the live server, that is often not possible. </t> <t> Often when a network node is released, an associatedNMS (network management system)Network Management System (NMS) is also released with it. The NMS depends on the capabilities of the server. During NMS implementation, information about server capabilities is needed. If the information is unavailable early in some offlinedocument,document but only as instance data from the live network node, the NMS implementation will bedelayed,delayed because it has to wait until the network node is ready.AlsoAlso, assuming that all NMS implementors will haveacorrectly configured network nodes from which data can beretrieved,retrieved is a very expensive proposition. (An NMS may handle dozens of node types.) </t> <t> Network operators often build their ownhome-grownhomegrown NMS systems that 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 this. Moreover, the network operator's decision to buy a vendor's product may even be influenced by the network node'sOAMOperations, Administration, and Maintenance (OAM) feature set documented as the server's capabilities. </t> <t> Beside NMS implementors, system integrators and many others also need the same information early. Examples could bemodel drivenmodel-driven testing, generating documentation, etc. </t> <t> Mostserver-capabilitiesserver capabilities are relatively stable and change only during upgrade or due to licensing or the addition or removal of hardware. They are usually defined by a vendor at design time, before the product is released. It is feasible and advantageous todefine/documentdefine and document themearlyearly, e.g., in a YANG instance dataFile.file. </t> <t>It is anticipated that a separate IETF document will define in detail how and which set of server capabilities should be documented. </t> </section> <sectiontitle="Usenumbered="true" toc="default"> <name>Use Case 2: PreloadingData">Data</name> <t> There are parts of the configuration that must be fully configurable by the operator. However,oftena simple default configuration often will be sufficient.</t><t></t> <t> One example is access control groups/roles and related rules. While a sophisticated operator may define dozens of different groups, often a basic (read-only operator, read-write system administrator, security-administrator) triplet will be enough. Vendors will often provide such default configuration data to make device configuration easier for an operator. </t> <t> The device vendor may define a set of default groups (/nacm:nacm/groups) and rules for these groups to access specific parts of the common models (/nacm:nacm/rule-list/rule). </t> <t> YANG instance data files can be used to document and/or preload the default configuration. </t> </section> <sectiontitle="Usenumbered="true" toc="default"> <name>Use Case 3: Documenting Factory DefaultSettings">Settings</name> <t> Nearly every server has a factory default configuration. If the system is really badly misconfigured or if the current configuration is to be abandoned, the system can be reset to the default factory configuration.</t><t></t> <t> YANG instance data can be used to document the factory default configuration. See <xreftarget="RFC8808"></xref>.target="RFC8808" format="default"/>. </t> </section> </section> <section numbered="false" toc="default"> <name>Acknowledgments</name> <t>For their valuable comments, discussions, and feedback, we wish to acknowledge <contact fullname="Andy Bierman"/>, <contact fullname="Juergen Schoenwaelder"/>, <contact fullname="Rob Wilton"/>, <contact fullname="Joe Clarke"/>, <contact fullname="Kent Watsen"/>, <contact fullname="Martin Bjorklund"/>, <contact fullname="Ladislav Lhotka"/>, <contact fullname="Qin Wu"/>, and other members of the Netmod Working Group.</t> </section> </back> </rfc><!-- Local Variables: --> <!-- fill-column:72 --> <!-- End: -->