<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-wills-netmod-yang-config-templates-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="yang-config-templates">YANG Configuration Templates</title>

    <author fullname="Robert Wills" role="editor">
      <organization>Cisco</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>rowills@cisco.com</email>
      </address>
    </author>
    <author fullname="Qiufang Ma">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>maqiufang1@huawei.com</email>
      </address>
    </author>
    <author fullname="Deepak Rajaram">
      <organization>Nokia</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>deepak.rajaram@nokia.com</email>
      </address>
    </author>

    <date year="2025" month="July" day="02"/>

    <area>Operations and Management</area>
    <workgroup>Network Modeling</workgroup>
    <keyword>YANG</keyword> <keyword>Template</keyword> <keyword>NMDA</keyword>

    <abstract>


<?line 58?>

<t>NETCONF and RESTCONF protocols provide programmatic interfaces for accessing
configuration data modeled by YANG. This document defines the use of a YANG-based
configuration template mechanism whereby configuration data can be defined in one or
more templates
and applied repeatedly. This avoids the redundant definition of identical configuration
and ensures the consistency of it, thus allowing devices to be managed more
conveniently and efficiently.</t>



    </abstract>



  </front>

  <middle>


<?line 68?>

<section anchor="introduction"><name>Introduction</name>

<t>This document considers the case of a datastore that contains multiple subtrees
with similar or identical nodes within them, such that the datastore contains
repetitive data with limited variation. If a client has to repeatedly configure the
same nodes for each subtree, this can become complex, error-prone, and masks
the intent of the client.</t>

<t>This document proposes a solution to improve this, called "Configuration Templates",
that results in a smaller running datastore even when the configuration in &lt;running&gt; is large.</t>

<t>A Configuration Template is a fragment of configuration that the device is
instructed to
replicate multiple times to generate copies of the configuration.  This allows
repetitive subtrees of configuration to be written only once, in the template.
When needed, individual instantiations of a template can override the values of nodes,
or add new instance-specific nodes.</t>

<t>NMDA <xref target="RFC8342"/> allows the configuration templates to be defined in &lt;running&gt;
and expanded in &lt;intended&gt;, but it does not specify details about how configuration
templates could be created and applied.</t>

<t>This document defines the use of configuration templates in the context of YANG-driven
network management protocols such as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>.
Configuration templates can be used with any YANG data model,
this document doesn't make any assumption on the YANG data model design,
i.e. it does not rely on a shared profile/group being defined in the YANG data model.</t>

<section anchor="editorial-note-to-be-removed-by-rfc-editor"><name>Editorial Note (To be removed by RFC Editor)</name>

<t>Note to the RFC Editor: This section is to be removed prior to publication.</t>

<t>This document contains placeholder values that need to be replaced with finalized
values at the time of publication.  This note summarizes all of the
substitutions that are needed.  No other RFC Editor instructions are specified
elsewhere in this document.</t>

<t>Please apply the following replacements:</t>

<t><list style="symbols">
  <t>XXXX --&gt; the assigned RFC number for this draft</t>
  <t>2025-05-28 --&gt; the actual date of the publication of this document</t>
</list></t>

</section>
</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<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 "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>The meanings of the symbols in tree diagrams are defined in
<xref target="RFC8340"/>.</t>

<t>This document uses the YANG terminology defined in <xref section="3" sectionFormat="of" target="RFC7950"/>.</t>

<t>Besides, this document defines the following terminology:</t>

<dl>
  <dt>Configuration Template:</dt>
  <dd>
    <t>A chunk of reusable configuration data that could be applied to the configuration
repeatedly, in order to simplify the delivery of network configuration and
ensure the consistency of it. A configuration template may also be called
"template" or "YANG template" throughout this document.</t>
  </dd>
</dl>

</section>
<section anchor="requirements"><name>Requirements</name>

<t>This section describes the requirements that the Configuration Templates solution must
satisfy. These requirements were all discussed in the Interim Meetings, and a
rough consensus was reached on each of them by the participants in the meetings.
A general theme of the Configuration Templates work is to come up with a "Minimal
Viable Product" that is useful but not over-complicated. More advanced features could
be considered as extensions in later drafts.</t>

<section anchor="defining-and-managing-templates"><name>Defining and Managing Templates</name>

<t>Templates can be used with any YANG module.  They contain nodes of
configuration data, and are stored persistently in the running
datastore of the device.</t>

<t>A client can view and manipulate a template, including the
configuration inside it, by manipulating it in the &lt;running&gt;
datastore.  In this sense, a template and its contents behaves like
any other subtree of configuration.</t>

</section>
<section anchor="applying-templates"><name>Applying Templates</name>

<t>A template can be applied to zero or more nodes in the &lt;running&gt;
datastore.  Each node can have zero or more templates applied to it,
and the order they are applied is specified by the client.  The order
is important when determining the final intended configuration -- see
the next section.</t>

<t>Templates can be applied at multiple points in the hierachy.  The
next section states the requirements when a node applies a template
and it has an ancestor that also applies a template.</t>

<t>When viewing the &lt;running&gt; datastore, there is a mechanism to see
which templates have been applied to each node, and in which order.</t>

</section>
<section anchor="producing-the-intended-datastore"><name>Producing the Intended Datastore</name>

<t>The device's &lt;intended&gt; datastore is the result of combining all the
applications of templates together with non-template config.  This is
called "expanding out" the templates.</t>

<t>The intended configuration inside a subtree is the result of taking
the relevant contents of every template applied to the subtree's root
node and its ancestors, and combining it with the (non-template) data
nodes inside the subtree.</t>

<t>A node inside a subtree may be present in multiple templates that
have been applied, and/or it may be present as non-template config
inside the subtree.  The requirements for combining the templates and
the non-template config together are as follows:</t>

<t><list style="symbols">
  <t>The value of a node in the &lt;intended&gt; configuration is determined
by using precedence to decide where to take the value from.</t>
  <t>Non-template config always has the highest precedence.</t>
  <t>When templates are applied to multiple ancestors, the innermost
ancestor takes precedence.</t>
  <t>When multiple templates are applied to a particular node, the
order of application (as indicated by the client when applying the
templates) determines the precedence within that node.</t>
</list></t>

<t>Whenever the contents of a template is updated in &lt;running&gt;, the
result of expanding out the template appears in &lt;intended&gt; and takes
effect on the device.</t>

</section>
<section anchor="pattern-matching-in-templates"><name>Pattern Matching in Templates</name>

<t>The configuration inside a template definition can contain values for
list keys that are simple regular expressions, using a limited subset
of regular expression syntax.  This controls which list entries that
particular subtree of the template takes effect for when the
template is applied.</t>

<t>An example of this would be to have a template that is applied to a
top-level "interfaces" container, but the template only takes effect
for certain interface names that match the regular expression.</t>

</section>
<section anchor="off-box-template-expansion"><name>Off-box Template Expansion</name>

<t>If the client knows the contents of the &lt;running&gt; datastore (non-
template config, template definitions and template applications), it
must be possible for the client to calculate the result of template
expansion.</t>

<t>In other words, the outcome of template expansion depends solely on
the &lt;running&gt; datastore and not the state of the device.</t>

</section>
</section>
<section anchor="configuration-template-solution"><name>Configuration Template Solution</name>

<section anchor="defining-templates"><name>Defining Templates</name>

<t>A configuration template must first be defined before it can be applied
(see <xref target="applying-temp"/>). The creation,
modification, and deletion of configuration templates is achieved by network
management operations via NETCONF or RESTCONF protocols. The contents of the configuration
template must be an instantiated chunk of data starting from any level node in the module hierarchies.</t>

<t>(Editor's note: more work may be needed here to ensure the template is a valid subtree
of config from a schema perspective.  This may mean we need a way of saying where the
root of the template is in the schema, for example with a set of "outer" nodes with
operation="none").</t>

<t>The YANG data model of configuration templates is defined in <xref target="template-yang"/>.</t>

<section anchor="templates-with-regular-expressions"><name>Templates with Regular Expressions</name>

<t>Simple regular expressions can be used to restrict which list entries a template
takes effect for.</t>

<t>(Editor's note: more work is needed here to define the exact semantics of this.  Also,
the regular expressions will be very simple (again, this needs to be defined), and
therefore it may be better to call them 'globs' or 'patterns')</t>

<t>For example, <xref target="temp-ex-interface"/> provides an interface configuration template
that sets "type" as ethernetCsmacd and "mtu" as 1500 for interfaces named
with the prefix "eth":</t>

<figure title="Example of An Interface template" anchor="temp-ex-interface"><artwork><![CDATA[
<templates xmlns="urn:ietf:params:xml:ns:yang:ietf-config-template">
  <template>
    <id>ethernet-interface</id>
    <content>
      <interfaces xmlns="urn:example:interface">
        <interface>
          <name>^eth.*</name>
          <type>ethernetCsmacd</type>
          <mtu>1500</mtu>
        </interface>
      </interfaces>
    </content>
  </template>
</templates>
]]></artwork></figure>

</section>
</section>
<section anchor="applying-temp"><name>Applying Templates</name>

<t>For each configuration node in the &lt;running&gt; datastore, one or more templates can
be applied. This causes configuration from the templates to be combined with child
configuration in the &lt;running&gt; datastore to produce a final set of &lt;intended&gt;
configuration that will be used by the device.</t>

<section anchor="the-apply-templates-metadata"><name>The "apply-templates" Metadata</name>

<t>Template application is indicated using the "apply-templates" metadata.  The value
of this is a list of space-separated template identifiers. If the template is
applied to a node in the data tree, the metadata object is added to that specific node.</t>

<t>The encoding of "apply-templates" metadata object follows the way defined
in <xref section="5" sectionFormat="of" target="RFC7952"/>.</t>

<t>For example, the following interface configuration may be provided
with the container node "interfaces" applying the template defined in <xref target="temp-ex-interface"/>:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface"
      xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-config-template"
      ct:apply-templates="ethernet-interface">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
      </interface>
      <interface>
        <name>eth1</name>
      </interface>
    </interfaces>
]]></artwork></figure>

<t>And the above interface configuration renders the following expanded configuration:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
        <type>ethernetCsmacd</type>
        <mtu>1500</mtu>
      </interface>
      <interface>
        <name>eth1</name>
        <type>ethernetCsmacd</type>
        <mtu>1500</mtu>
      </interface>
    </interfaces>
]]></artwork></figure>

</section>
<section anchor="creating-editing-and-deleting-the-apply-templates-metadata"><name>Creating, editing and deleting the "apply-templates" metadata</name>

<t>The apply-templates metadata can be modified by the client by specifying it as
an attribute in an &lt;edit-config&gt; request.  There are three cases:</t>

<t><list style="symbols">
  <t>The apply-templates attribute is specified and the value is non-empty
(i.e. a list of templates to apply to the node).  The apply-templates metadata is
changed to match the value in the request.</t>
  <t>The apply-templates attribute is specified and the value is the empty string.
The apply-templates metadata is removed and thus no templates are applied to
the node.</t>
  <t>The apply-templates attribute not specified.  The apply-templates
metadata currently present on the node (if any) is unchanged.</t>
</list></t>

<t>For example, this request creates a single loopback0 interface and applies
template t1 to the interfaces container:</t>

<figure><artwork><![CDATA[
    <edit-config>
      ...
      <config>
        <interfaces xmlns="urn:example:interface"
                    ct:apply-templates="t1">
          <interface>
            <name>loopback0</name>
          </interface>
        </interfaces>
      </config>
    </edit-config>
]]></artwork></figure>

<t>This request also applies template t2 to the interfaces container:</t>

<figure><artwork><![CDATA[
    <edit-config>
      ...
      <config>
        <interfaces xmlns="urn:example:interface"
                    ct:apply-templates="t1 t2" />
      </config>
    </edit-config>
]]></artwork></figure>

<t>After this request, &lt;running&gt; is as follows:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface"
                ct:apply-templates="t1 t1">
      <interface>
        <name>loopback0</name>
      </interface>
    </interfaces>
]]></artwork></figure>

<t>This request adds a new interface list entry, and leaves the applied templates
unchanged:</t>

<figure><artwork><![CDATA[
    <edit-config>
      ...
      <config>
        <interfaces xmlns="urn:example:interface">
          <interface>
            <name>eth0</name>
          </interface>
        </interfaces>
      </config>
    </edit-config>
]]></artwork></figure>

<t>After this request, &lt;running&gt; is as follows:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface"
                ct:apply-templates="t1 t1">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
      </interface>
    </interfaces>
]]></artwork></figure>

<t>Finally, this request deletes all the templates, and leaves the list entries
unchanged:</t>

<figure><artwork><![CDATA[
    <edit-config>
      ...
      <config>
        <interfaces xmlns="urn:example:interface"
                    ct:apply-templates="" />
        </interfaces>
      </config>
    </edit-config>
]]></artwork></figure>

<t>After this request, &lt;running&gt; is as follows:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
      </interface>
    </interfaces>
]]></artwork></figure>

</section>
</section>
<section anchor="overriding-temp"><name>Overriding Templates</name>

<t>The client may want to to override some configuration in a template when it is applied to a particular node in &lt;running&gt;.
The client can achieve this by providing the desired value at the
corresponding level when applying the template. Configuration explicitly
provided by the client always takes precedence over the same node defined in template.</t>

<t>A template node can be overriden by having its value changed, but it can't be
deleted.</t>

<t>As an example of overriding a node in a template, a client may configure physically present interfaces "eth0" and "eth1"
inheriting the template defined in <xref target="temp-ex-interface"/>, but the "mtu" value of "eth1"
needs to be 9122:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface"
      xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-config-template"
      ct:apply-templates="ethernet-interface">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
      </interface>
      <interface>
        <name>eth1</name>
        <mtu>9122</mtu>
      </interface>
    </interfaces>
]]></artwork></figure>

<t>And the above interface configuration renders the following expanded configuration:</t>

<figure><artwork><![CDATA[
    <interfaces xmlns="urn:example:interface">
      <interface>
        <name>loopback0</name>
      </interface>
      <interface>
        <name>eth0</name>
        <type>ethernetCsmacd</type>
        <mtu>1500</mtu>
      </interface>
      <interface>
        <name>eth1</name>
        <type>ethernetCsmacd</type>
        <mtu>9122</mtu>
      </interface>
    </interfaces>
]]></artwork></figure>

</section>
<section anchor="expanding-templates"><name>Expanding Templates</name>

<t>When a configuration template is applied to a node in the data tree, it acts as
if the configuration defined in the template is
merged with the configuration provided explicitly at the corresponding level in the data tree,
with the explicitly provided configuration taking precedence.</t>

<t>The rules for deriving the &lt;running&gt; configuration are as follows:</t>

<t><list style="symbols">
  <t>The value of a node in the &lt;intended&gt; configuration is determined
by using precedence to decide where to take the value from.</t>
  <t>Non-template config always has the highest precedence.</t>
  <t>When templates are applied to multiple ancestors, the innermost
ancestor takes precedence.</t>
  <t>When multiple templates are applied to a particular node, the
order of application (as indicated by the client when applying the
templates) determines the precedence within that node.</t>
</list></t>

<t>Whenever the contents of a template is updated in &lt;running&gt;, the
result of expanding out the template appears in &lt;intended&gt; and takes
effect on the device.</t>

</section>
<section anchor="validity-of-templates"><name>Validity of Templates</name>

<t>The contents of the template alone is not always sufficient to enforce the constraints
of the data model. Some constraints may depend on configuration outside of the
templates to satisfy, e.g., a list may contain a mandatory leaf node which is not
defined in the template but explicitly provided by the client. However, servers
<bcp14>SHOULD</bcp14> parse the template and enforce the constraints if it is possible during the
processing of template creation, e.g., servers may validate type constraints for the leaf,
including those defined in the type's "range", "length", and "pattern" properties.</t>

<t>That said, if a template is applied in the configuration data tree, the results of the template
configuration merging with configuration explicitly provided by the client <bcp14>MUST</bcp14>
always be valid, as defined in <xref section="8.1" sectionFormat="of" target="RFC7950"/>.</t>

</section>
</section>
<section anchor="interaction-with-nmda-datastores"><name>Interaction with NMDA datastores</name>

<t>Some implementations may have predefined configuration templates for the convenience
of clients, which are present in &lt;system&gt; (if implemented, see <xref target="I-D.ietf-netmod-system-config"/>).
In addition, clients can always define their own templates in &lt;running&gt;.
However, configuration template data defined by "ietf-config-template" YANG data model
should not be visible in &lt;operational&gt; until being inherited by a node in the data tree.</t>

<t>If a node in the data tree applies a configuration template, the configuration
template does not expand in &lt;running&gt;. A read of &lt;running&gt; returns what is
sent by the client with the "apply-templates" metadata attached to the specific node.
A configuration template which is inherited or overridden by the node instance <bcp14>MUST</bcp14> be expanded in &lt;intended&gt;.</t>

</section>
<section anchor="interaction-with-non-nmda-datastores"><name>Interaction with Non-NMDA datastores</name>

<t>TBC</t>

</section>
<section anchor="template-yang"><name>The "ietf-config-template" YANG Module</name>

<section anchor="data-model-overview"><name>Data Model Overview</name>

<t>The following tree diagram <xref target="RFC8340"/> illustrates the "ietf-config-template" module:</t>

<figure><artwork><![CDATA[
module: ietf-config-template
  +--rw templates
     +--rw template* [id]
        +--rw id               string
        +--rw description?     string
        +--rw content?         <anydata>
        +--ro last-modified?   yang:timestamp
]]></artwork></figure>

<ul empty="true"><li>
  <t>Editor's Note: Should we use the RFC7952 metadata annotation for the 'apply-templates' metadata here?</t>
</li></ul>

<ul empty="true"><li>
  <t>Editor's Note: the current definition of template configuration uses anydata, but
this may not be able to be validated at template definition time because anydata is opaque.</t>
</li></ul>

</section>
<section anchor="yang-module"><name>YANG Module</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-template@2025-05-28.yang"
module ietf-config-template {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-config-template";
  prefix ct;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types";
  }

  organization
    "IETF NETMOD (Network Modeling) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
     WG List:  <mailto:netmod@ietf.org>
     Author: Qiufang Ma
             <mailto:maqiufang1@huawei.com>";
             
  description
    "This module defines a template list with a RPC to expand
     the template.

     Copyright (c) 2025 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, the Revised
     BSD License set forth in Section 4.c of the IETF Trust's
     Legal Provisions Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
     itself for full legal notices.

     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.";

   revision 2025-05-28 {
     description
       "Initial revision.";
     reference
       "RFC XXXX: YANG Templates";
   }

   container templates {
     description
       "Specifies the template parameters.";
     list template {
       key id;
       description
         "The list of templates managed on this device.";
       leaf id {
         type string;
         description
           "The identifier of the template that uniquely identifies a
            template.";
       }
       leaf description {
         type string;
         description
           "A textual description of the template.";
       }
       anydata content {
         description
           "inline template content.";
       }
       leaf last-modified {
         type yang:timestamp;
         config false;
         description
           "Timestamp when the template is modified last time.";
       }
     }
   }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TODO Security</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="the-ietf-xml-registry"><name>The "IETF XML" Registry</name>

<t>This document registers the following URI in the "IETF XML Registry" <xref target="RFC3688"/>.</t>

<figure><artwork><![CDATA[
        URI: urn:ietf:params:xml:ns:yang:ietf-config-template
        Registrant Contact: The IESG.
        XML: N/A, the requested URI is an XML namespace.
]]></artwork></figure>

</section>
<section anchor="the-yang-module-names-registry"><name>The "YANG Module Names" Registry</name>

<t>This document registers the following YANG module in the "YANG Module Names"
   registry <xref target="RFC6020"/>.</t>

<figure><artwork><![CDATA[
        name:               ietf-config-template
        namespace:          urn:ietf:params:xml:ns:yang:ietf-config-template
        prefix:             ct
        maintained by IANA? N
        reference:          RFC XXXX
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC6241">
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
    <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
    <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
    <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
    <date month="June" year="2011"/>
    <abstract>
      <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6241"/>
  <seriesInfo name="DOI" value="10.17487/RFC6241"/>
</reference>
<reference anchor="RFC8040">
  <front>
    <title>RESTCONF Protocol</title>
    <author fullname="A. Bierman" initials="A." surname="Bierman"/>
    <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8040"/>
  <seriesInfo name="DOI" value="10.17487/RFC8040"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC7950">
  <front>
    <title>The YANG 1.1 Data Modeling Language</title>
    <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
    <date month="August" year="2016"/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7950"/>
  <seriesInfo name="DOI" value="10.17487/RFC7950"/>
</reference>
<reference anchor="RFC3688">
  <front>
    <title>The IETF XML Registry</title>
    <author fullname="M. Mealling" initials="M." surname="Mealling"/>
    <date month="January" year="2004"/>
    <abstract>
      <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="81"/>
  <seriesInfo name="RFC" value="3688"/>
  <seriesInfo name="DOI" value="10.17487/RFC3688"/>
</reference>
<reference anchor="RFC6020">
  <front>
    <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
    <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
    <date month="October" year="2010"/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6020"/>
  <seriesInfo name="DOI" value="10.17487/RFC6020"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8342">
  <front>
    <title>Network Management Datastore Architecture (NMDA)</title>
    <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
    <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
    <author fullname="P. Shafer" initials="P." surname="Shafer"/>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="R. Wilton" initials="R." surname="Wilton"/>
    <date month="March" year="2018"/>
    <abstract>
      <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8342"/>
  <seriesInfo name="DOI" value="10.17487/RFC8342"/>
</reference>
<reference anchor="RFC8340">
  <front>
    <title>YANG Tree Diagrams</title>
    <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
    <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
    <date month="March" year="2018"/>
    <abstract>
      <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="215"/>
  <seriesInfo name="RFC" value="8340"/>
  <seriesInfo name="DOI" value="10.17487/RFC8340"/>
</reference>
<reference anchor="RFC7952">
  <front>
    <title>Defining and Using Metadata with YANG</title>
    <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
    <date month="August" year="2016"/>
    <abstract>
      <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7952"/>
  <seriesInfo name="DOI" value="10.17487/RFC7952"/>
</reference>

<reference anchor="I-D.ietf-netmod-system-config">
   <front>
      <title>System-defined Configuration</title>
      <author fullname="Qiufang Ma" initials="Q." surname="Ma">
         <organization>Huawei</organization>
      </author>
      <author fullname="Qin Wu" initials="Q." surname="Wu">
         <organization>Huawei</organization>
      </author>
      <author fullname="Chong Feng" initials="C." surname="Feng">
         </author>
      <date day="12" month="February" year="2025"/>
      <abstract>
	 <t>   The Network Management Datastore Architecture (NMDA) in RFC 8342
   defines several configuration datastores holding configuration.  The
   contents of these configuration datastores are controlled by clients.
   This document introduces the concept of system configuration
   datastore holding configuration controlled by the system on which a
   server is running.  The system configuration can be referenced (e.g.,
   leafref) by configuration explicitly created by clients.

   This document updates RFC 8342.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-system-config-12"/>
   
</reference>



    </references>

</references>


<?line 700?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The author would like to thank Lou Berger, Jason Sterne, Kent Watsen, and Robert
Wilton for comments and contributions made during interim meetings.</t>

<t>The author would like to acknowledge the following drafts and
presenters for kick-starting discussions on Yang Templates:</t>

<t><list style="symbols">
  <t>draft-ma-netmod-yang-config-template-00</t>
  <t>draft-rajaram-netmod-yang-cfg-template-framework-00</t>
  <t>draft-wills-netmod-yang-templates-00</t>
  <t>Jan Lindblad</t>
</list></t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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

-->

</rfc>

