<?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-tt-netmod-yang-config-templates-01" 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="December" day="24"/>

    <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-15"/>
   
</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>

