<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" updates="8525" obsoletes="" category="std" submissionType="IETF" docName="draft-ietf-netconf-yang-library-augmentedby-18" number="10035" consensus="true" ipr="trust200902" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3" xml:lang="en">

  <front>
    <title abbrev="YANG Library: augmented-by">YANG Library: Addition of the augmented-by List</title>
    <seriesInfo name="RFC" value="10035"/>
    <author fullname="Zhuoyao Lin" initials="Z." surname="Lin">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>Townsend Street, 4th Floor George's Court</street>
          <city>Dublin</city>
          <country>Ireland</country>
        </postal>
        <email>zephyre888@gmail.com</email>
      </address>
    </author>
    <author fullname="Benoit Claise" initials="B." surname="Claise">
      <organization>Everything OPS</organization>
      <address>
	<postal>
	  <country>Belgium</country>
	</postal>
        <email>benoit@everything-ops.net</email>
      </address>
    </author>
    <author fullname="Ignacio Dominguez Martinez-Casanueva" initials="I. D." surname="Martinez-Casanueva">
      <organization>Telefonica</organization>
      <address>
        <postal>
          <street>Ronda de la Comunicacion, S/N</street>
          <city>Madrid</city>
          <code>28050</code>
          <country>Spain</country>
        </postal>
        <email>i.domingumar@gmail.com</email>
      </address>
    </author>
    <date month="August" year="2026"/>
    <area>OPS</area>
    <workgroup>netconf</workgroup>
    <abstract>
      <t>
        "YANG Library" (RFC 8525) specifies the "ietf-yang-library" YANG module
        that provides information about the YANG modules, datastores,
        and datastore schemas used by a network management server.
      </t>
      <t>
        This document augments the "ietf-yang-library" module to provide the augmented-by list. It
        facilitates the process of obtaining all dependencies between YANG modules by querying the
        network management server's YANG library. This document updates RFC 8525 to also include the augmented-by list.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The YANG library <xref target="RFC8525"/> provides information about the data models
        supported by a server. This is presented as an inventory of YANG modules. It helps a client
        by listing all datastores supported by a network management server and the schema that is
        used by each of these datastores.</t>
      <t>According to Sections <xref target="RFC7950" sectionFormat="bare" section="4.2.8"/> and <xref target="RFC7950" sectionFormat="bare" section="5.6.3"/> of <xref target="RFC7950"/>, "augment" defines
        additional nodes to a module, while a "deviation" changes (i.e., adds, modifies, or deletes) properties
        (sub-statements) of another module's schema nodes. They provide crucial information about the
        YANG data model composition, and this is referred to as "reverse dependency" in this document: this
        means the behavior of a schema node depends on external modifications, creating a backward flow
        from the augmenting and/or deviation module to the base module.</t>
      <t>It is difficult to obtain the YANG schema tree (defined in <xref target="RFC7950" section="3"/>) without obtaining and parsing all the YANG modules from a management
        server. The deviation list defined in the YANG library enables clients to obtain a module
        reverse dependency without having to get and parse all YANG modules. However, the
        augmentation list is not defined in the YANG library. </t>
      <t>
        Since both augmentation and deviation work as YANG module dependencies,
        it is reasonable to document them the same way in the YANG library.
        Having both augmentation and deviation directly
        available in the YANG library provides a convenient
        solution for determining the reverse dependencies.
      </t>

      <t>This document specifies a YANG module that augments the YANG library to include the YANG
        module augmentation information. It updates <xref target="RFC8525"/> by modifying the list in Section <xref target="RFC8525" sectionFormat="bare" section="2"/> 
        to also include the augmented-by list.</t>
      <t>One specific requirement with the implementation of this augmented-by YANG module
        specification is that the modules and the augmented-by modules are required to be listed in the
        same module-set. Note that a similar requirement already applies for the YANG deviations.</t>
      <section anchor="Requirements_Language">
        <name>Requirements Language</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&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The terminology from <xref target="RFC8525"/> is used in this document.</t>
        <t>The term "client" is used as defined in <xref target="RFC6241"/> for NETCONF and <xref target="RFC8040"/> for RESTCONF.</t>
        <t>The term "YANG schema tree" is used as defined in <xref target="RFC7950" section="3"/>.</t>
        <t>The term "Network Management Datastore Architecture (NMDA)" is used as defined in <xref target="RFC8342"/>.</t>
        <t>Tree diagrams in this document use the notations defined in <xref target="RFC8340"/>.</t>
        <t>This document also defines the following term:</t>
        <dl>
          <dt>Reverse Dependency:</dt><dd>the dependency on YANG modules that provide external
              modification to the behavior of a base YANG module, by inserting additional nodes
              (augment) or deviating existing nodes (deviation).</dd>
        </dl>
      </section>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>When using YANG modules, it is necessary to make sure that all of their dependencies are
        present. <xref target="RFC7950"/> identifies four types of dependencies between YANG
        modules:</t>

      <ul>
        <li>Import: the "import" statement allows a module or
            submodule to reference definitions defined in other modules.</li>
        <li>Include: the "include" statement is used in a module
            to identify each submodule that belongs to it.</li>
        <li>Augment: the "augment" statement defines the
            location in the data model hierarchy where additional
            nodes are inserted.</li>
        <li>Deviation: the "deviation" statement defines a
            fragment of a module that the server does not
            implement.</li>
      </ul>
      <t>The "import" and "include" statements are direct dependencies that can be obtained by parsing a YANG
        module's source code, while the "augment" and "deviation" statements are reverse dependencies that are
        defined in another module.
      </t>
      <t>
        For the reverse dependencies, since they are defined
        externally, it is not possible to discover them by parsing the YANG module.
        The current way to discover the reverse dependencies is to query
        all YANG modules from the server and parse them. This is a lengthy
        process, which must be repeated for each client that requires this
        information.
      </t>
      <t>According to the definition of the "ietf-yang-library" module in
      <xref target="RFC8525"/>, the "deviation" list identifies the name of
      each YANG module with deviation statements affecting the given YANG
      module.  Since deviations and augmentations work similarly, if the YANG
      library could directly report all reverse dependencies, including
      augmentations, it would provide a much more convenient solution to find
      all module dependencies, as compared to obtaining and parsing all
      modules. In addition, to avoid causing problems in devices, for
      instance, falsely referring to modules in the wrong module-set, this
      document requires that the base modules and the augmentations be listed
      in the same module-set. </t>
      <t>
        The YANG library only provides the deviation
        list, without augmentations. With augmentations
        being more widely used and defined, and with use cases to automate network management,
        augmentations become
        essential information for clients to better understand the network management server module
        relationships. Thus, the YANG library should be extended to also provide the augmentation
        information.
      </t>
    </section>
    <section anchor="Use_Cases">
      <name>Use Cases</name>
      <section anchor="Data_Mesh_Architecture">
        <name>Data Mesh Architecture</name>
        <t> As the demand rises for YANG-based telemetry <xref target="RFC8641"/>, there is a need
          for real-time knowledge of a specific YANG module's dependency list when a specific
          YANG-Push notification for a given subscription is received. </t>
        <t> Some YANG-Push receivers will collect the information in advance of the telemetry
          collection, storing the entire module-set for every single server that could be streaming
          data. However, this approach is not always practical in the case of configured subscriptions <xref target="RFC8639"/>, where the YANG-Push receiver is not configuring the subscriptions
          itself, and in the case of UDP transport <xref target="I-D.ietf-netconf-udp-notif"/>. See
          Figure 1 in "An Architecture for YANG-Push to Message Broker Integration" <xref target="I-D.ietf-nmop-yang-message-broker-integration"/> for more details.</t>
        <t>
          This architecture relies on the information of YANG dependencies in this specification to
          solve the problem of missing YANG semantics when notifications are transformed or indexed
          in a time series database.</t>
        <t>
          Prior to the implementation of this specification, the method used for obtaining modules
          and finding module dependencies is to retrieve the full set of supported YANG modules from
          the network device, which is triggered by parsing the &lt;subscription-started&gt; message for each
          new YANG-Push subscription. This is because the YANG-Push receiver would not know which YANG-Push
          publisher sends the subscribed YANG content until the first notification is received.</t>
        <t>
          By using the provided augmented-by information in this specification, the YANG-Push
          receiver can directly obtain the YANG reverse dependencies for the specific YANG module(s)
          in the subscription by querying the server. This saves collection and processing time at the
          YANG-Push receiver, by querying dependencies only for the required modules, therefore
          helping with the real-time aspects of network observability.</t>
        <t>
          The following is an example YANG-Push message of this use case received from within a
          subscription to the "ietf-interfaces" YANG module:
        </t>
        <sourcecode type="yang-instance-data+json"><![CDATA[
  "datastore-contents": {
    "ietf-interfaces:interfaces": [
    {
      "interface": {
        "name": "eth0",
        "type": "iana-if-type:ethernetCsmacd",
        "oper-status": "up",
        "speed": "1000000",
        "ietf-ip:ipv4": {
          "enabled": true,
          "forwarding": true
        }
      }
    }
    ]
  }]]></sourcecode>
        <t>
          To correctly interpret the semantics of this message, both the "ietf-interfaces" and
          "ietf-ip"
          YANG modules are required. Knowing only that the subscribed YANG module is
          "ietf-interfaces"
          is therefore insufficient, but that is currently the only dependency information exposed
          by the subscription information. In this case, a mechanism is needed to
          discover all relevant dependency modules, especially reverse dependencies (refer to
          "ietf-ip" in this example) so that every YANG module referenced in the pushed data can be
          reliably identified.
        </t>
      </section>
      <section anchor="Data_Catalog">
        <name>Data Catalog</name>
        <t>Finding the YANG modules implemented by a network management server is paramount for
          configuring and monitoring the status of a network. However, since the inception of YANG,
          the network industry has defined a large number of YANG modules developed by Standards Development Organizations (SDOs),
          open-source communities, and network vendors. This heterogeneity of YANG modules, which
          vary from one network device/service model to another, makes the management of a
          multi-vendor network a big challenge for operators <xref target="Martinez-Casanueva2023"/>.</t>
        <t>In this regard, a data catalog provides a registry of the datasets
          exposed by remote data sources for consumers to discover data
          of interest. Besides the location of the dataset
          (i.e., the data source), the data catalog registers
          additional metadata such as the data model (or schema) followed in the
          dataset or even related terms defined in a business glossary.</t>
        <t>Data catalog solutions typically implement collectors that ingest
        metadata from the data sources themselves and external metadata
        sources. For example, a message broker schema registry is a metadata
        source that provides metadata about the data model followed by some
        data stored in a message broker topic.</t>
        <t>In this sense, a YANG-enabled network device can be considered
          as another kind of data source, from which the data catalog can
          pull metadata. For instance, the data catalog can include a
          connector that fetches metadata about the YANG modules implemented
          by the network device. Combining this metadata with others such as
          the business concept "interface" would enable data consumers to
          discover which datasets related to the concept "interface"
          are exposed by the network device.</t>
        <t>Network devices that implement the YANG library expose metadata
        about which YANG modules are implemented, and which are only imported.
        However, what a data consumer needs at the end are the YANG modules
        implemented by the device; hence, the combination of implemented YANG
        modules with other YANG modules that might deviate or augment the
        former is needed.</t>
        <t>Consider a network device that implements the "ietf-interfaces" module <xref target="RFC8343"/> and the "ietf-ip" module <xref target="RFC8344"/>, where the latter
          augments the former. For a data catalog to collect this metadata, a connector would
          retrieve YANG library data from the target device. However, the current version of the YANG
          library would not satisfy the use case, as it would tell that the device implements both
          "ietf-interfaces" and "ietf-ip" modules but would miss the augment dependency between
          them.</t>
          <t>A workaround is to additionally obtain both YANG modules and
          process them in combination with the YANG library data to discover
          that there is an augment dependency.  This adds an extra burden on
          the connector, which is forced to combine multiple metadata
          collection mechanisms. This process could be softened by extending
          the YANG library to also capture augment dependencies, similarly to
          deviation dependencies.</t>
      </section>
    </section>
    <section anchor="ietf-yang-library-augmentedby-model">
      <name>The "ietf-yang-library-augmentedby" YANG Module</name>
      <section anchor="data-model-overview">
        <name>Data Model Overview</name>
        <section anchor="Tree-View">
          <name>Tree Structure</name>
          <t>The following is the YANG tree diagram for the "ietf-yang-library-augmentedby" module.</t>
          <sourcecode type="yangtree"><![CDATA[
module: ietf-yang-library-augmentedby

  augment /yanglib:yang-library/yanglib:module-set/yanglib:module:
    +--ro augmented-by*   -> ../../yanglib:module/name
  augment /yanglib:modules-state/yanglib:module:
    x--ro augmented-by*   -> ../../yanglib:module/name]]></sourcecode>
          <t>
            This YANG module augments the "ietf-yang-library" module by adding the
            augmented-by leaf-list in the "yang-library/module-set" and
            "yang-library/modules-state".
            The name of the "augmented-by" list indicates by which modules the current module is
            being
            directly augmented.</t>
          <t>The "yang-library/modules-state" is augmented despite its "deprecated" state to cope
            with the situation of when the "modules-state" container is used for compatibility reasons with the
            "ietf-yang-library" module defined in <xref target="RFC7895"/>. Both the NMDA <xref target="RFC8342"/> and non-NMDA compliant additions are defined in the same YANG
            module for simplicity for users and implementors. </t>
          <t>For the scope of "augmented-by", this document only considers the
          direct augmentation relationship. The recursive result of
          augmentation or transitive dependency for modules specified along the
          XPath is out of the scope of this document. <xref
          target="implementaionInstruction"/> provides the implementation
          instructions.</t>
        </section>
        <section anchor="YANG-revision-module">
          <name>The "ietf-yang-library-augmentedby" YANG Module</name>
          <t>This YANG module imports and augments the "ietf-yang-library" module <xref target="RFC8525"/>.</t>
          <sourcecode markers="true" name="ietf-yang-library-augmentedby@2026-08-26.yang" type="yang"><![CDATA[
module ietf-yang-library-augmentedby {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yang-library-augmentedby";
  prefix yanglib-aug;

  import ietf-yang-library {
    prefix yanglib;
    reference
      "RFC 8525: YANG Library";
  }

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>

     Authors:  Zhuoyao Lin
               <mailto:zephyre888@gmail.com>
               Benoit Claise
               <mailto:benoit@everything-ops.net>
               Ignacio Dominguez Martinez-Casanueva
               <mailto:i.domingumar@gmail.com>";
  description
    "This module augments the 'ietf-yang-library' module defined in
     RFC 8525 to provide not only the deviation list, but also
     the augmented-by list, in order to give sufficient
     information about the YANG module's reverse dependency.  It
     facilitates the process of obtaining all the
     dependencies of YANG module.

     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) 2026 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).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (https://www.iana.org/assignments/yang-parameters).

     This version of this YANG module is part of RFC 10035; see
     the RFC itself for full legal notices.";

  revision 2026-08-26 {
    description
      "Initial revision.";
    reference
      "RFC 10035: YANG Library: Addition of the augmented-by List";
  }

  augment "/yanglib:yang-library/yanglib:module-set/yanglib:module" {
    description
      "Adds augmented-by leaf-list to the list of modules of a
       module set";
    leaf-list augmented-by {
      type leafref {
        path "../../yanglib:module/yanglib:name";
      }
      description
        "Leaf-list of the augmentations used by this server to
         modify the schema tree of the module associated with
         this entry.  Note that the same module can be used for
         augmented-by for multiple modules, so the same
         entry MAY appear within multiple 'module' entries.

         This reference MUST NOT (directly or indirectly)
         refer to the module being augmented and MUST NOT
         be referenced in the import-only list.

         Robust clients may want to make sure that they handle a
         situation where a module augments itself (directly or
         indirectly) gracefully.";
    }
  }

  augment "/yanglib:modules-state/yanglib:module" {
    status deprecated;
    description
      "Adds augmented-by leaf-list to the list of modules of a
       module set";
    leaf-list augmented-by {
      type leafref {
        path "../../yanglib:module/yanglib:name";
      }
      status deprecated;
      description
        "Leaf-list of the augmentations used by this server to
         modify the schema tree of the module associated with
         this entry.  Note that the same module can be used for
         augmented-by for multiple modules, so the same
         entry MAY appear within multiple 'module' entries.

         This reference MUST NOT (directly or indirectly)
         refer to the module being augmented and MUST NOT
         be referenced in the import-only list.

         Robust clients may want to make sure that they handle a
         situation where a module augments itself (directly or
         indirectly) gracefully.";
    }
  }
}]]></sourcecode>
        </section>
      </section>
      <section anchor="implementaionInstruction">
        <name>Implementation Instructions</name>
        <section anchor="scope">
          <name>The Scope of augmented-by</name>
          <t>This section explains the scope of augmented-by.
          </t>
          <t>
            The "augmented-by" leaf-list should only consider those YANG modules that directly
            augment the YANG module in question in the "ietf-yang-library" module, and the augmenting and
            augmented modules must be defined in the same module-set. </t>
          <t>The "direct augment" is identified by the relationship between
          the augment module and the target node's parent module that it
          augments. Only the direct parent module of the target node is
          augmented, and the rest of the parent modules defined in the schema
          tree are only indirect dependencies; they are not augmented
          modules. (Refer to the definition of "target node" in <xref
          target="RFC7950" section="7.17"/>.)</t>
          <t>In the case when a YANG application requires a recursive dependency or a specific schema
            tree dependency, the search logic should be implemented by the application itself.</t>
        </section>
        <section anchor="exampleOfAugmentedBy">
          <name>Examples</name>
          <t>This section provides two module-set examples and their corresponding
            "ietf-yang-library-augmentedby" query results to explain the definition of "direct
            augment" stated in <xref target="scope"/>.</t>
          <t>The two scenarios are provided with the same three YANG modules (Module A, B, and C)
            defined in the module-set; however, the relationships among them are different. All three
            YANG modules are defined in the same module-set name "module-set1" to be able to augment
            or be augmented by the others. Otherwise, the YANG validation should fail.</t>
          <t>The examples use line wrapping per <xref target="RFC8792"/>.</t>
          <section anchor="example1">
            <name>Example 1</name>
            <t>The relationships among Module A, Module B, and Module C in this example are as follows:</t>
            <ul>
              <li>Module A is the base module with container "foo-a"</li>
              <li>Module B augments "/A:foo-a" with container "foo-b"</li>
              <li>Module C augments "/A:foo-a" with leaf "leaf-c"</li>
            </ul>
            <t>The "ietf-yang-library-augmentedby" query result is:</t>
            <sourcecode markers="true" name="example_yanglib_result1.xml" type="xml"><![CDATA[
<!-- NOTE: '\' line wrapping per RFC 8792 -->
<yang-library xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library">
  <content-id>1</content-id>
  <module-set>
    <name>module-set1</name>
    <module>
      <name>A</name>
      <revision>2026-08-19</revision>
      <namespace>urn:ietf:params:xml:ns:yang:A</namespace>
      <augmented-by
      xmlns="urn:ietf:params:xml:ns:yang:\
      ietf-yang-library-augmentedby">B</augmented-by>
      <augmented-by
      xmlns="urn:ietf:params:xml:ns:yang:\
      ietf-yang-library-augmentedby">C</augmented-by>
    </module>
    <module>
      <name>B</name>
      <revision>2026-08-19</revision>
      <namespace>urn:ietf:params:xml:ns:yang:B</namespace>
    </module>
    <module>
      <name>C</name>
      <revision>2026-08-19</revision>
      <namespace>urn:ietf:params:xml:ns:yang:C</namespace>
    </module>
  </module-set>
</yang-library>
<modules-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library">
    <module-set-id>0</module-set-id>
</modules-state>

]]></sourcecode>
            <t>In this example, both Module B and Module C directly augment the container "foo-a".
              Therefore,
              both B and C are listed as "augmented-by" modules for Module A.</t>
          </section>
          <section anchor="example2">
            <name>Example 2</name>
            <t>The relationships among Module A, Module B, and Module C in this example are as follows:</t>
            <ul>
              <li>Module A is the base module with container "foo-a"</li>
              <li>Module B augments "/A:foo-a" with container "foo-b"</li>
              <li>Module C augments "/A:foo-a/B:foo-b" with leaf "leaf-c"</li>
            </ul>
            <t>The "ietf-yang-library-augmentedby" query result is:</t>
            <sourcecode markers="true" name="example_yanglib_result2.xml" type="xml"><![CDATA[
<!-- NOTE: '\' line wrapping per RFC 8792 -->
<yang-library xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> 
  <content-id>1</content-id>
  <module-set> 
    <name>module-set1</name>
    <module>
      <name>A</name>
      <revision>2026-08-19</revision> 
      <namespace>urn:ietf:params:xml:ns:yang:A</namespace>
      <augmented-by 
      xmlns="urn:ietf:params:xml:ns:yang:\
      ietf-yang-library-augmentedby">B</augmented-by>
    </module>
    <module>
      <name>B</name>
      <revision>2026-08-19</revision> 
      <namespace>urn:ietf:params:xml:ns:yang:B</namespace>
      <augmented-by 
      xmlns="urn:ietf:params:xml:ns:yang:\
      ietf-yang-library-augmentedby">C</augmented-by>
    </module>
    <module>
      <name>C</name>
      <revision>2026-08-19</revision> 
      <namespace>urn:ietf:params:xml:ns:yang:C</namespace>
    </module>
  </module-set>
</yang-library>
<modules-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> 
  <module-set-id>0</module-set-id>
</modules-state>

]]></sourcecode>
            <t>In this example, although the augment XPath statement used by Module C is rooted from
              the container "foo-a" defined in Module A, the node that Module C directly augments is
              the container "foo-b" defined in Module B. As a result, Module C is not considered to
              directly augment Module A and therefore does not appear in the "augmented-by"
              leaf-list of Module A. Only Module B, which directly augments the container "foo-a",
              is listed as an "augmented-by" module for Module A.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="opConsideration">
      <name>Operational Considerations</name>
      <t>With the implementation of augmented-by, the base modules and the augmented-by modules
        are required to be listed in the same module-set.</t>
      <t>Note that the reverse dependency will increase the size of the "ietf-yang-library" instance
        on the server. Also, the "ietf-yang-library" instance, and therefore the augmented-by instance, should
        be updated when new YANG modules are onboarded.</t>
      <t>A YANG example with the expected augmented-by result is provided in <xref target="exampleOfAugmentedBy"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>

      <t>This section is modeled after the template described in <xref section="3.7.1" target="RFC9907"/>.</t>

      <t>The "ietf-yang-library-augmentedby" YANG module defines a data model
      that is designed to be accessed via YANG-based management protocols,
      such as the Network Configuration Protocol (NETCONF) <xref target="RFC6241"/> and
      RESTCONF <xref target="RFC8040"/>.  These YANG-based management protocols (1) have to
      use a secure transport layer (e.g., Secure Shell (SSH) <xref target="RFC4252"/>, TLS
      <xref target="RFC9846"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use mutual
      authentication.</t>

      <t>The Network Configuration Access Control Model (NACM) <xref
      target="RFC8341"/> provides the means to restrict access for particular
      NETCONF or RESTCONF users to a preconfigured subset of all available
      NETCONF or RESTCONF protocol operations and content.</t>

      <t>
        There are no writable ("config true") data nodes defined in this
        YANG module.
      </t>
      <t>
        This YANG module defines only readable ("config false") data nodes.
   Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus important
   to control read access (e.g., via get, get-config, or notification) to
   these data nodes.  Specifically, the following subtrees and data nodes have
   particular sensitivities/vulnerabilities:
      </t>
      <ul spacing="normal">
        <li>
          <t>
            <tt>/yang-library/module-set/module/augmented-by</tt>
          </t>
        </li>
        <li>
          <t>
            <tt>/modules-state/module/augmented-by</tt> (modules-state is deprecated) </t>
        </li>
      </ul>
      <t>
        These nodes expose the augmentation relationships among modules
        implemented by a server. Unauthorized read access could help an
        attacker identify implementation structure, optional features, or
        software components present on a server, which might then be used to
        target known platform vulnerabilities. Therefore, access control
        policies <bcp14>SHOULD</bcp14> restrict read access to authorized users only.
      </t>
      <t>
        There are no RPCs or action operations defined in this module.
        Therefore, there are no particularly sensitive RPC or action
        operations.
      </t>
      <t>This module uses groupings from the "ietf-yang-library" YANG module
      defined in <xref target="RFC8525"/>, which defines nodes that may be
      considered sensitive or vulnerable in network environments. Since this
      document augments the "ietf-yang-library" YANG module defined in <xref
      target="RFC8525"/>, the Security Considerations of <xref
      target="RFC8525"/> apply here as well. Refer to <xref target="RFC8525"
      section="6"/> for information as to which nodes may be considered
      sensitive or vulnerable in network environments.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA has registered the following URI in the "ns" registry within the "IETF XML Registry" registry group <xref target="RFC3688"/>:</t>
	<dl spacing="compact" newline="false">
	  <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-yang-library-augmentedby</dd>
	  <dt>Registration Contact:</dt><dd>The IESG</dd>
	  <dt>XML:</dt><dd>N/A, the requested URI is an XML namespace.</dd>
	</dl>
      <t>IANA has registered the following YANG module in the "YANG Module Names" registry <xref target="RFC6020"/>
        within the "YANG Parameters" registry group:</t>
	<dl spacing="compact" newline="false">
	  <dt>Name:</dt><dd>ietf-yang-library-augmentedby</dd>
	  <dt>Maintained by IANA?</dt><dd>N</dd>
	  <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-yang-library-augmentedby</dd>
	  <dt>Prefix:</dt><dd>yanglib-aug</dd>
	  <dt>Reference:</dt><dd>RFC 10035</dd>
	</dl>
    </section>
  </middle>
  <back>
<displayreference target="I-D.ietf-nmop-yang-message-broker-integration" to="YANG-PUSH"/>
<displayreference target="I-D.ietf-netconf-udp-notif" to="YANG-UDP"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8525.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8641.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7895.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8639.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8344.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9846.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netconf-udp-notif.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9907.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-nmop-yang-message-broker-integration.xml"/>
        <reference anchor="Martinez-Casanueva2023">
          <front>
            <title>Toward Building a Semantic Network Inventory for Model-Driven Telemetry</title>
            <author initials="I. D." surname="Martinez-Casanueva" fullname="Ignacio D. Martinez-Casanueva">
              <organization>Universidad Politecnica de Madrid, Telefonica I+D</organization>
            </author>
            <author initials="D." surname="Gonzalez-Sanchez" fullname="Daniel Gonzalez-Sanchez">
              <organization>Universidad Politecnica de Madrid</organization>
            </author>
            <author initials="L." surname="Bellido" fullname="Luis Bellido">
              <organization>Universidad Politecnica de Madrid</organization>
            </author>
            <author initials="D." surname="Fernandez" fullname="David Fernandez">
              <organization>Universidad Politecnica de Madrid</organization>
            </author>
            <author initials="D. R." surname="Lopez" fullname="Diego R. Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <date month="March" year="2023"/>
          </front>
          <refcontent>IEEE Communications Magazine, vol. 61, no. 3, pp. 60-66</refcontent>
          <seriesInfo name="DOI" value="10.1109/MCOM.001.2200222"/>
        </reference>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml"/>
      </references>
    </references>
    <section anchor="Full-Tree-View">
      <name>Full Tree View of "ietf-yang-library"</name>
      <t>The following is the YANG tree diagram <xref target="RFC8340"/> for the 
        "ietf-yang-library" module after adding augmentation from the "ietf-yang-library-augmentedby" module. The
        RPCs and notifications are included as well. </t>
      <sourcecode type="yangtree"><![CDATA[
[NOTE: '\' line wrapping per RFC 8792]
module: ietf-yang-library
  +--ro yang-library
  |  +--ro module-set* [name]
  |  |  +--ro name                  string
  |  |  +--ro module* [name]
  |  |  |  +--ro name                        yang:yang-identifier
  |  |  |  +--ro revision?                   revision-identifier
  |  |  |  +--ro namespace                   inet:uri
  |  |  |  +--ro location*                   inet:uri
  |  |  |  +--ro submodule* [name]
  |  |  |  |  +--ro name        yang:yang-identifier
  |  |  |  |  +--ro revision?   revision-identifier
  |  |  |  |  +--ro location*   inet:uri
  |  |  |  +--ro feature*                    yang:yang-identifier
  |  |  |  +--ro deviation*                  -> ../../module/name
  |  |  |  +--ro yanglib-aug:augmented-by*
                                     -> ../../yanglib:module/name
  |  |  +--ro import-only-module* [name revision]
  |  |     +--ro name         yang:yang-identifier
  |  |     +--ro revision     union
  |  |     +--ro namespace    inet:uri
  |  |     +--ro location*    inet:uri
  |  |     +--ro submodule* [name]
  |  |        +--ro name        yang:yang-identifier
  |  |        +--ro revision?   revision-identifier
  |  |        +--ro location*   inet:uri
  |  +--ro schema* [name]
  |  |  +--ro name          string
  |  |  +--ro module-set*   -> ../../module-set/name
  |  +--ro datastore* [name]
  |  |  +--ro name      ds:datastore-ref
  |  |  +--ro schema    -> ../../schema/name
  |  +--ro content-id       string
  x--ro modules-state
     x--ro module-set-id    string
     x--ro module* [name revision]
        x--ro name                yang:yang-identifier
        x--ro revision            union
        +--ro schema?             inet:uri
        x--ro namespace           inet:uri
        x--ro feature*            yang:yang-identifier
        x--ro deviation* [name revision]
        |  x--ro name        yang:yang-identifier
        |  x--ro revision    union
        x--ro conformance-type    enumeration
        x--ro submodule* [name revision]
        |  x--ro name        yang:yang-identifier
        |  x--ro revision    union
        |  +--ro schema?     inet:uri
        x--ro yanglib-aug:augmented-by*\
          -> ../../yanglib:module/name

  notifications:
    +---n yang-library-update
    |  +--ro content-id    -> /yang-library/content-id
    x---n yang-library-change
       x--ro module-set-id    -> /modules-state/module-set-id
]]></sourcecode>
    </section>

    <section numbered="false">
      <name>Acknowledgments</name>
      <t>The authors would like to thank <contact fullname="Jan
      Lindblad"/> and <contact fullname="Jean Quilbeuf"/> for their help
      during the design of the YANG module, and <contact
      fullname="Thomas Graf"/>, <contact fullname="Rob Wilton"/>,
      <contact fullname="Andy Bierman"/>, <contact fullname="Jean
      Quilbeuf"/>, <contact fullname="Alex Huang Feng"/>, <contact
      fullname="Per Andersson"/>, <contact fullname="Mahesh
      Jethanandani"/>, and <contact fullname="Med Boucadair"/> for their
      valuable review and comments. </t>
    </section>
  </back>
</rfc>
