<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.17 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ivy-network-inventory-yang-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Network Inventory YANG">A YANG Data Model for Network Inventory</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ivy-network-inventory-yang-03"/>
    <author initials="C." surname="Yu" fullname="Chaode Yu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>yuchaode@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Belotti" fullname="Sergio Belotti">
      <organization>Nokia</organization>
      <address>
        <email>sergio.belotti@nokia.com</email>
      </address>
    </author>
    <author initials="J.-F." surname="Bouquier" fullname="Jean-Francois Bouquier">
      <organization>Vodafone</organization>
      <address>
        <email>jeff.bouquier@vodafone.com</email>
      </address>
    </author>
    <author initials="F." surname="Peruzzini" fullname="Fabio Peruzzini">
      <organization>TIM</organization>
      <address>
        <email>fabio.peruzzini@telecomitalia.it</email>
      </address>
    </author>
    <author initials="P." surname="Bedard" fullname="Phil Bedard">
      <organization>Cisco</organization>
      <address>
        <email>phbedard@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="07"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 96?>

<t>This document defines a base YANG data model for network inventory
that is application- and technology-agnostic.  This data model can be
augmented with application-specific and technology-specific details
in other, more specific network inventory data models.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-ivy-wg.github.io/network-inventory-yang/draft-ietf-ivy-network-inventory-yang.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ivy-network-inventory-yang/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-ivy-wg/network-inventory-yang"/>.</t>
    </note>
  </front>
  <middle>
    <?line 103?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The purpose of this document is to define a base network inventory
YANG data model that is application- and technology-agnostic.  The
base data model can be augmented to describe application-specific or
technology-specific information.</t>
      <t>Network Inventory management is a key component in
operators' OSS architectures.</t>
      <t>Network Inventory is a fundamental functionality in network
management and was specified many years ago.  Given the emergence of
data models and their deployment in operator's management and control
systems, the traditional function of inventory management is also
requested to be defined as a data model.</t>
      <t>Network Inventory management and monitoring is a critical
part for ensuring the network stays healthy, well-planned, and
functioning in the operator's network.  Network Inventory
management allows the operator to keep track of which physical
devices are deployed in the network including relevant software and
hardware versions.</t>
      <t>The Network Inventory management also helps the operator to
know when to acquire new assets and what is needed, or to
decommission old or faulty ones, which can help to improve network
performance and capacity planning.</t>
      <t>In <xref target="I-D.ietf-teas-actn-poi-applicability"/> a gap was identified
regarding the lack of a YANG data model that could be used at ACTN
MPI interface level to report whole/partial network hardware
inventory information available at domain controller level towards
north-bound systems (e.g., MDSC or OSS layer).</t>
      <t><xref target="RFC8345"/> initial goal was to make possible the augmentation of the
YANG data model with Network Inventory data model but this
was never developed and the scope was kept limited to network
topology data only.</t>
      <t>It is key for operators to drive the industry towards the use of a
standard YANG data model for Network Inventory data instead
of using vendors proprietary APIs (e.g., REST API).</t>
      <t>In the ACTN architecture, this would bring also clear benefits at
MDSC level for packet over optical integration scenarios since this
would enable the correlation of the HW network inventory information with the
links information reported in the network topology model. This represent a priority for operators to implement this with a standard YANG data model that could be used as soon as possible in multi-vendor integrations of PNCs with MDSCs.</t>
      <t>The intention is to define a generic YANG base data model that would be as
much as possible technology agnostic (valid for IP, optical and
microwave networks) and that could be augmented, when required, to
include some technology-specific inventory details together with specific HW or SW component's attributes.</t>
      <t><xref target="RFC8348"/> defines a YANG data model for the management of the hardware on a single server and therefore it is more applicable to the domain controller South Bound Interface (SBI) towards the network elements rather than at the domain controller's northbound. However, the YANG data model defined in <xref target="RFC8348"/> has been used as a reference for defining the YANG network inventory data model presented in this draft.</t>
      <t>The proposed YANG data model has been analyzed at the present stage to cover the common requirements for both HW and SW use cases for Network Inventory.</t>
      <t>Network Inventory is a collection of data for network devices and
their components managed by a specific management system.  Per the
definition of <xref target="RFC8969"/>,the network inventory model is a network
model.</t>
      <t>This document defines one YANG module "ietf-network-inventory" in <xref target="ni-yang"/>.</t>
      <t><xref target="ni-augment"/> provides a set of augmentation considerations for extensions
of hardware, software, entitlement, and inventory topology mapping.</t>
      <t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture <xref target="RFC8342"/>.</t>
      <section anchor="terminology-and-notations">
        <name>Terminology and Notations</name>
        <t>The following terms are defined in <xref target="RFC7950"/> and are not
  redefined here:</t>
        <ul spacing="normal">
          <li>
            <t>client</t>
          </li>
          <li>
            <t>server</t>
          </li>
          <li>
            <t>augment</t>
          </li>
          <li>
            <t>data model</t>
          </li>
          <li>
            <t>data node</t>
          </li>
        </ul>
        <t>The following terms are defined in <xref target="RFC6241"/> and are not redefined
  here:</t>
        <ul spacing="normal">
          <li>
            <t>configuration data</t>
          </li>
          <li>
            <t>state data</t>
          </li>
        </ul>
        <t>The terminology for describing YANG data models is found in
  <xref target="RFC7950"/>.</t>
        <t>TBD: Recap the concept of chassis/slot/component/board/... in <xref target="TMF_SD2-20"/>.</t>
        <t>Following terms are used for the representation of the hierarchies in the network inventory.</t>
        <t>Network Inventory:</t>
        <ul empty="true">
          <li>
            <t>a collection of data for network devices and their components managed by a specific management system.</t>
          </li>
        </ul>
        <t>Network Element:</t>
        <ul empty="true">
          <li>
            <t>a manageable network entity that contains hardware and software units, e.g. a network device installed on one or several chassis</t>
          </li>
        </ul>
        <t>Chassis:</t>
        <ul empty="true">
          <li>
            <t>a holder of the device installation.</t>
          </li>
        </ul>
        <t>Slot:</t>
        <ul empty="true">
          <li>
            <t>a holder of the board.</t>
          </li>
        </ul>
        <t>Component:</t>
        <ul empty="true">
          <li>
            <t>a unit of the network element, e.g.  hardware components like chassis, card, port, software components like software-patch, bios, and boot-loader</t>
          </li>
        </ul>
        <t>Board/Card:</t>
        <ul empty="true">
          <li>
            <t>a pluggable equipment can be inserted into one or several slots/sub-slots and can afford a specific transmission function independently.</t>
          </li>
        </ul>
        <t>Port:</t>
        <ul empty="true">
          <li>
            <t>an interface on board</t>
          </li>
        </ul>
        <t>Container:
  &gt; Within this document , with the term "container" we consider an hardware component class capable of containing one or more removable physical entities, e.g. a slot in a chassis is containing a board.</t>
      </section>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
      <section anchor="tree-diagram">
        <name>Tree Diagram</name>
        <t>A simplified graphical representation of the data model is used in <xref target="ni-tree"/> of this document.
The meaning of the symbols in this diagram is defined in <xref target="RFC8340"/>.</t>
      </section>
      <section anchor="prefix-in-data-node-names">
        <name>Prefix in Data Node Names</name>
        <t>In this document, names of data nodes and other data model objects
  are prefixed using the standard prefix associated with the
  corresponding YANG imported modules, as shown in the following table.</t>
        <table anchor="tab-prefixes">
          <name>Prefixes and corresponding YANG modules</name>
          <thead>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">Yang Module</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">inet</td>
              <td align="left">ietf-inet-types</td>
              <td align="left">
                <xref target="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left">yang</td>
              <td align="left">ietf-yang-types</td>
              <td align="left">
                <xref target="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left">ianahw</td>
              <td align="left">iana-hardware</td>
              <td align="left">
                <xref target="IANA_YANG"/></td>
            </tr>
            <tr>
              <td align="left">ni</td>
              <td align="left">ietf-network-inventory</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>RFC Editor Note:
Please replace XXXX with the RFC number assigned to this document.
Please remove this note.</t>
      </section>
    </section>
    <section anchor="yang-data-model-for-network-inventory-overview">
      <name>YANG Data Model for Network Inventory Overview</name>
      <t>The network element definition is generalized to support physical
devices and other types of inventory objects (e.g., virtual network
elements) that can be managed as physical network elements from an
inventory perspective. The data model for Network Element presented
in this document uses a flat list of network element.</t>
      <t>The "ne-type" is defined as a YANG identity to describe the type of the network element. This document defines only the "physical-network-element" identity.</t>
      <t>The component definition is also generalized to support any types of
component, such as hardware, software, or firmware.</t>
      <t>Different types of components can be distinguished by the class of component. The component "class" is defined as a union between the hardware class identity, defined in "iana-hardware", and the "non-hardware" identity, defined in this document. Attributes related to specific class of component can be found in the component-specific-info structure.</t>
      <t>The identity definition of additional types of "ne-type" and "non-
hardware" identity of component are outside the scope of this
document and could be defined in application-specific or technology-
specific companion augmentation data models, such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/>.</t>
      <t>In <xref target="RFC8348"/>, rack, chassis, slot, sub-slot, board and port are defined as components of network elements with generic attributes.</t>
      <t>While <xref target="RFC8348"/> is used to manage the hardware of a single server (e.g., a network element), the Network Inventory YANG data model is used to retrieve the base network inventory information that a controller discovers from all the network elements under its control.</t>
      <t>However, the YANG data model defined in <xref target="RFC8348"/> has been used as a reference for defining the YANG network inventory data model. This approach can simplify the implementation of this network inventory model when the controller uses the YANG data model defined in <xref target="RFC8348"/> to retrieve the hardware  from the network elements under its control.</t>
      <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        +--rw ne-id            string
        ............................................
        +--rw components
           +--rw component* [component-id]
              +--rw component-id            string
              ......................................
]]></artwork>
      <section anchor="common-design-for-all-inventory-objects">
        <name>Common Design for All Inventory Objects</name>
        <t>For all the inventory objects, there are some common attributes existing. Such as:</t>
        <t>Identifier: here we suggest to use uuid format which is widely implemented with systems. It is guaranteed to be globally unique.</t>
        <t>Name: name is a human-readable label information which could be used to present on GUI. This name is suggested to be provided by server.</t>
        <t>Alias: alias is also a human-readable label information which could be modified by user. It could also be present on GUI instead of name.</t>
        <t>Description: description is a human-readable information which could be also input by user. Description provides more detailed information to prompt users when performing maintenance operations.</t>
        <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        +--rw ne-id            string
        +--rw ne-type?         identityref
        +--rw uuid?            yang:uuid
        +--rw name?            string
        +--rw description?     string
        +--rw alias?           string
        ...................................
        +--rw components
           +--rw component* [component-id]
              +--rw component-id            string
              +--rw uuid?                   yang:uuid
              +--rw name?                   string
              +--rw description?            string
              +--rw alias?                  string
              +--rw class                   union
              ...................................
]]></artwork>
      </section>
      <section anchor="network-element">
        <name>Network Element</name>
        <t>To be consistent with the component definition, some of the
attributes defined in <xref target="RFC8348"/> for components are reused for network
elements.  These attributes include:</t>
        <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        ...................................
        +--rw hardware-rev?    string
        +--rw software-rev?    string
        +--rw mfg-name?        string
        +--rw mfg-date?        yang:date-and-time
        +--rw part-number?     string
        +--rw serial-number?   string
        +--rw product-name?    string
        ...................................
]]></artwork>
        <t>Note: Not all the attributes defined in <xref target="RFC8348"/> are applicable for network element. And there could also be some missing attributes which are not recognized by <xref target="RFC8348"/>. More extensions could be introduced in later revisions after the missing attributes are fully discussed.</t>
      </section>
      <section anchor="ne-component">
        <name>Components</name>
        <t>The YANG data model for network inventory mainly follows the same approach of <xref target="RFC8348"/> and reports the network hardware inventory as a list of components with different types (e.g., chassis, module, port).</t>
        <t>The component definition is generalized to both hardware components
and non-hardware components (e.g., software components).</t>
        <artwork type="ascii-art"><![CDATA[
  +--rw components
      +--rw component* [component-id]
        +--rw component-id            string
        +--rw uuid?                   yang:uuid
        +--rw name?                   string
        +--rw description?            string
        +--rw alias?                  string
        +--rw class                   union
        +--rw child-component-ref
        +--rw parent-rel-pos?         int32
        +--rw parent-component-ref
        +--rw hardware-rev?           string
        +--rw firmware-rev?           string
        +--rw software-rev?           string
        +--rw serial-num?             string
        +--rw mfg-name?               string
        +--rw part-number?            string
        +--rw asset-id?               string
        +--rw is-fru?                 boolean
        +--rw mfg-date?               yang:date-and-time
        +--rw uri*                    inet:uri
]]></artwork>
        <t>For state data like admin-state, oper-state and so on, we consider they are related to device hardware management and not network inventory. Therefore, they are outside of scope of this document. Same for the sensor-data, they should be defined in some other performance monitoring data models instead of inventory data model.</t>
        <section anchor="hardware-components">
          <name>Hardware Components</name>
          <t>Based on TMF classification in <xref target="TMF_SD2-20"/>, hardware components can be divided into two groups, holder group and equipment group. The holder group contains rack, chassis, slot, sub-slot while the equipment group contains network-element, board and port.</t>
          <t>The relationship between typical inventory objects in a physical network element can be described by <xref target="fig-hw-inventory-object-relationship"/> below:</t>
          <figure anchor="fig-hw-inventory-object-relationship">
            <name>Relationship between typical inventory objects in physical network elements</name>
            <artwork type="ascii-art"><![CDATA[
                            +-----------------+
                            | network element |
                            +-----------------+
                                    ||
                                    ||
                                    ||
                                    ||1:M
                                    ||
                                    ||
                                    ||
                                    \/
                              +-------------+
                              |   chassis/  |---+
                              | sub-chassis |<--|
                              +-------------+
                                    ||
                     ______1:N______||_____1:M_______
                     ||------------------ ---------||
                     \/                            \/
              +--------------+               +-----------+
          +---|     slot     |               |   board   |
          |-->|  /sub-slot   |               |           |
              +--------------+               +-----------+
                                                   ||
                                                   ||1:N
                                                   \/
                                             +-----------+
                                             |    port   |
                                             +-----------+
]]></artwork>
          </figure>
          <t>The "iana-hardware" module <xref target="IANA_YANG"/> defines YANG identities for
the hardware component types in the IANA-maintained "IANA-ENTITY-MIB"
registry.</t>
          <t>Some of the definitions taken from <xref target="RFC8348"/> are actually based on the ENTITY-MIB <xref target="RFC6933"/>.</t>
          <t>For the additional attributes of specific hardware, such as CPU,
storage, port, power supply is defined in the hardware extension.</t>
        </section>
        <section anchor="software-components">
          <name>Software Components</name>
          <t>This document defines "software-rev" of NEs and components, which are
basic software attributes of a Network Element.</t>
          <t>The software and hardware components share the same attributes of the
component and have similar replaceable requirements. Generally, the
device also has other software data, for example, one or more
software patch information.</t>
          <t>The software components of other
classes, such as platform software, BIOS, bootloader, and software
patch information, are outside the scope of this document and defined other documents such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/>.</t>
        </section>
      </section>
      <section anchor="changes-with-respect-to-rfc8348">
        <name>Changes with respect to RFC8348</name>
        <t>We re-defined some attributes listed in <xref target="RFC8348"/>, based on some integration experience for network wide inventory data.</t>
        <section anchor="new-parent-identifiers-reference">
          <name>New Parent Identifiers' Reference</name>
          <t><xref target="RFC8348"/> provided a "parent-ref" attribute, which was an identifier reference to its parent component. When the MDSC or OSS systems want to find this component's grandparent or higher level component in the hierarchy, they need to retrieve this parent-ref step by step. To reduce this iterative work, we decided to provide a list of hierarchical parent components' identifier references.</t>
          <artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [component-id]
        ...................................
        +--ro parent-component-references
        |   +--ro component-reference* [index]
        |      +--ro index    uint8
        |      +--ro class?   -> ../../../class
        |      +--ro uuid?    -> ../../../uuid
        ...................................
]]></artwork>
          <t>The hierarchical components' identifier could be found by the "component-reference" list. The "index" attribute is used to order the list by the hierarchical relationship from topmost component (with the "index" set to 0) to bottom component.</t>
        </section>
        <section anchor="component-specific-info-design">
          <name>Component-Specific Info Design</name>
          <t>According to the management requirements from operators, some important attributes are not defined in <xref target="RFC8348"/>. These attributes could be component-specific and are not suitable to define under the component list node. So, the model can be augmented with HW-specific-info grouping containing attributes applicable to HW e.g. boards/slot components only. Other component-specific attributes, such as SW-specific-info, may be defined in companion augmentation data models, such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/> and are out of the scope of this model.</t>
          <artwork type="ascii-art"><![CDATA[
+--rw components
   +--rw component* [component-id]
   |  +--rw component-id            string
   |   .......................................
   |  +--ro chassis-specific-info
   |  +--ro slot-specific-info
   |  +--ro board-specific-info
   |  +--ro port-specific-info
]]></artwork>
        </section>
        <section anchor="part-number">
          <name>Part Number</name>
          <t>According to the description in <xref target="RFC8348"/>, the attribute named "model-name" under the component, is preferred to have a customer-visible part number value. "Model-name" is not straightforward to understand and we suggest to rename it as "part-number" directly.</t>
          <artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [uuid]
        ...................................
        +--ro part-number?           string
        ...................................
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="ni-augment">
      <name>Extending Network Inventory</name>
      <t>This document defines the basic network inventory attributes
applicable to typical network scenarios.  For finer-grained and
specific management scenarios, the relationship between this model
and other models is illustrated in Figure 4.</t>
      <artwork type="ascii-art"><![CDATA[
             +-------------------------+
             |                         |
             | Base Network Inventory  |
             |                         |
             +------------+------------+
                          |
       +------------------+-------------------+
       |                  |                   |
+------V------+    +------V------      +------V------    +-------------+
|             |    |             |     |             |   |             |
| Hardware    |    |  Software   |     |             |   |  Inventory  |
| Extensions  |    |  Extensions |     | Entitlement |   |  Topology   |
| e.g. Power  |    |  e.g.       |     |             |   |  Mapping    |
| supply unit |    |  SW patch   |     |             |   |             |
+-------------+    +-------------+     +-------------+   +-------------+
]]></artwork>
    </section>
    <section anchor="ni-tree">
      <name>Network Inventory Tree Diagram</name>
      <t><xref target="fig-ni-tree"/> below shows the tree diagram of the YANG data model defined in module "ietf-network-inventory" (<xref target="ni-yang"/>).</t>
      <figure anchor="fig-ni-tree">
        <name>Network inventory tree diagram</name>
        <artwork type="ascii-art" name="ietf-network-inventory.tree"><![CDATA[
module: ietf-network-inventory
  +--rw network-inventory
     +--rw network-elements
        +--rw network-element* [ne-id]
           +--rw ne-id                 string
           +--ro ne-type?              identityref
           +--ro uuid?                 yang:uuid
           +--rw name?                 string
           +--rw description?          string
           +--rw alias?                string
           +--ro hardware-rev?         string
           +--ro software-rev?         string
           +--ro software-patch-rev*   string
           +--ro mfg-name?             string
           +--ro mfg-date?             yang:date-and-time
           +--ro serial-number?        string
           +--ro product-name?         string
           +--rw components
              +--rw component* [component-id]
                 +--rw component-id             string
                 +--ro class                    union
                 +--ro uuid?                    yang:uuid
                 +--rw name?                    string
                 +--rw description?             string
                 +--rw alias?                   string
                 +--ro child-component-ref
                 +--ro parent-rel-pos?          int32
                 +--ro parent-component-ref
                 +--ro hardware-rev?            string
                 +--ro firmware-rev?            string
                 +--ro software-rev?            string
                 +--ro software-patch-rev*      string
                 +--ro serial-num?              string
                 +--ro mfg-name?                string
                 +--ro part-number?             string
                 +--ro product-name?            string
                 +--ro asset-id?                string
                 +--ro is-fru?                  boolean
                 +--ro mfg-date?                yang:date-and-time
                 +--ro uri*                     inet:uri
                 +--ro chassis-specific-info
                 +--ro slot-specific-info
                 +--ro board-specific-info
                 +--ro port-specific-info
]]></artwork>
      </figure>
    </section>
    <section anchor="ni-yang">
      <name>YANG Data Model for Network Inventory</name>
      <figure anchor="fig-ni-yang">
        <name>Network inventory YANG module</name>
        <sourcecode type="yang" markers="true" name="ietf-network-inventory@2024-03-04.yang"><![CDATA[
module ietf-network-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-network-inventory";
  prefix ni;

  import iana-hardware {
    prefix ianahw;
    reference
      "https://www.iana.org/assignments/yang-parameters";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: Common YANG Data Types.";
  }

  organization
    "IETF IVY Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/ivy/>
     WG List:  <mailto:inventory-yang@ietf.org>

     Editor:   Chaode Yu
               <yuchaode@huawei.com>

     Editor:   Sergio Belotti
               <sergio.belotti@nokia.com>

     Editor:   Jean-Francois Bouquier
               <jeff.bouquier@vodafone.com>

     Editor:   Fabio Peruzzini
               <fabio.peruzzini@telecomitalia.it>

     Editor:   Phil Bedard
               <phbedard@cisco.com>";
  description
    "This module defines a base model for retrieving network
     inventory.

     The model fully conforms to the Network Management
     Datastore Architecture (NMDA).

     Copyright (c) 2023 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; 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.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2024-04-09 {
    description
      "Initial version";
    reference
      "RFC XXXX: A YANG Data Model for Network Inventory.";
    //RFC Editor: replace XXXX with actual RFC number, update date
    //information and remove this note
  }

  identity non-hardware-component-class {
    description
      "Base identity for non hardware components (e.g., software
       components) in a managed device.";
  }

  identity ne-type {
    description
      "Base identity for network element (NE) types.";
  }

  identity ne-physical {
    base ni:ne-type;
    description
      "A physical network element (NE). ";
  }

  grouping common-entity-attributes {
    description
      "A set of attributes which are common to all the entities
       (e.g., component, equipment room) defined in this module.";
    leaf uuid {
      type yang:uuid;
      config false;
      description
        "Uniquely identifies an entity (e.g., component).";
    }
    leaf name {
      type string;
      description
        "A name for an entity (e.g., component), as specified by
         a network manager, that provides a non-volatile 'handle'
         for the entity and that can be modified anytime during the
         entity lifetime.

         If no configured value exists, the server MAY set the value
         of this node to a locally unique value in the operational
         state.";
    }
    leaf description {
      type string;
      description
        "a textual description of inventory object";
    }
    leaf alias {
      type string;
      description
        "a alias name of inventory objects. This alias name can be
         specified by network manager.";
    }
  }

  grouping ne-specific-info-grouping {
    description
      "Attributes applicable to network elements.";
    leaf hardware-rev {
      type string;
      config false;
      description
        "The vendor-specific hardware revision string for the NE.";
    }
    leaf software-rev {
      type string;
      config false;
      description
        "The vendor-specific software revision string for the NE.";
    }
    leaf-list software-patch-rev {
      type string;
      config false;
      description
        "The vendor-specific patch software revision string for the
         NE.";
    }
    leaf mfg-name {
      type string;
      config false;
      description
        "The name of the manufacturer of this NE";
    }
    leaf mfg-date {
      type yang:date-and-time;
      config false;
      description
        "The date of manufacturing of the NE.";
    }
    leaf serial-number {
      type string;
      config false;
      description
        "The vendor-specific serial number of the network element
         instance. It is expected that vendors assign unique serial
         numbers to different network element instances within the
         scope of the product name.";
    }
    leaf product-name {
      type string;
      config false;
      description
        "The vendor-specific and human-interpretable string
         describing the network element type. It is expected that
         vendors assign unique product names to different NE types
         within the scope of the vendor.";
    }
  }

  grouping component-specific-info-grouping {
    description
      "Provide component-specific attributes for different
       components.";
    container chassis-specific-info {
      when "../class = 'ianahw:chassis'";
      config false;
      description
        "This container contains some attributes belong to
         chassis only.";
      uses chassis-specific-info-grouping;
    }
    container slot-specific-info {
      when "../class = 'ianahw:container'";
      config false;
      description
        "This container contains some attributes belong to
         slot only.";
      uses slot-specific-info-grouping;
    }
    container board-specific-info {
      when "../class = 'ianahw:module'";
      config false;
      description
        "This container contains some attributes belong to
         board only.";
      uses board-specific-info-grouping;
    }
    container port-specific-info {
      when "../class = 'ianahw:port'";
      config false;
      description
        "This container contains some attributes belong to
         port only.";
      uses port-specific-info-grouping;
    }
  }

  grouping chassis-specific-info-grouping {
    //To be enriched in the future.
    description
      "Specific attributes applicable to chassis only.";
  }

  grouping slot-specific-info-grouping {
    //To be enriched in the future.
    description
      "Specific attributes applicable to slots only.";
  }

  grouping board-specific-info-grouping {
    //To be enriched in the future.
    description
      "Specific attributes applicable to boards only.";
  }

  grouping port-specific-info-grouping {
    //To be enriched in the future.
    description
      "Specific attributes applicable to ports only.";
  }

  grouping ne-info-grouping {
    description
      "Grouping for network elements.";
    container network-elements {
      description
        "The top-level container for the list of network elements
         within the network.";
      list network-element {
        key "ne-id";
        description
          "The list of network elements within the network.";
        leaf ne-id {
          type string;
          description
            "Network Element (NE) identifier.";
        }
        leaf ne-type {
          type identityref {
            base ne-type;
          }
          default "ne-physical";
          config false;
          description
            "The type of network element (NE).";
        }
        uses common-entity-attributes;
        uses ne-specific-info-grouping;
        container components {
          description
            "The top-level container for the list of components
             within a network element.";
          list component {
            key "component-id";
            description
              "The list of components within a network element.";
            leaf component-id {
              type string;
              description
                "Component identifier";
            }
            leaf class {
              type union {
                type identityref {
                  base ianahw:hardware-class;
                }
                type identityref {
                  base non-hardware-component-class;
                }
              }
              config false;
              mandatory true;
              description
                "The type of the component.";
            }
            uses common-entity-attributes;
            container child-component-ref {
              config false;
              description
                "A placeholder for adding the reference to child
                 component(s): to further discuss whether to define
                 a child leaf-list as RFC8348 or a list of
                 sub-components as openconfig-platform.";
            }
            leaf parent-rel-pos {
              type int32 {
                range "0 .. 2147483647";
              }
              config false;
              description
                "The relative position with respect to the parent
                 component among all the sibling components.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalParentRelPos";
            }
            container parent-component-ref {
              config false;
              description
                "A placeholder for adding the reference to parent
                 component(s): to further discuss whether to define
                 a parent attribute as RFC8348 or a
                 parent-component-references container as in
                 draft-ietf-ccamp-network-inventory-yang-02.";
            }
            leaf hardware-rev {
              type string;
              config false;
              description
                "The vendor-specific hardware revision string for the
                 component.  The preferred value is the hardware
                 revision identifier actually printed on the
                 component itself (if present).";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalHardwareRev";
            }
            leaf firmware-rev {
              type string;
              config false;
              description
                "The vendor-specific firmware revision string for the
                 component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalFirmwareRev";
            }
            leaf software-rev {
              type string;
              config false;
              description
                "The vendor-specific software revision string for the
                 component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalSoftwareRev";
            }
            leaf-list software-patch-rev {
              type string;
              config false;
              description
                "The vendor-specific patch software revision string
                 for the component.";
            }
            leaf serial-num {
              type string;
              config false;
              description
                "The vendor-specific serial number of the component
                 instance. It is expected that vendors assign unique
                 serial numbers to different component instances
                 within the scope of the part number.";
            }
            leaf mfg-name {
              type string;
              config false;
              description
                "The name of the manufacturer of this physical
                 component.
                 The preferred value is the manufacturer name string
                 actually printed on the component itself
                 (if present).

                 Note that comparisons between instances of the
                 'model-name', 'firmware-rev', 'software-rev', and
                 'serial-num' nodes are only meaningful amongst
                 components with the same value of 'mfg-name'.

                 If the manufacturer name string associated with the
                 physical component is unknown to the server, then
                 this node is not instantiated.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                 entPhysicalMfgName";
            }
            leaf part-number {
              type string;
              config false;
              description
                "The vendor-specific part number of the component
                 type. It is expected that vendors assign unique part
                 numbers to different component types within the
                 scope of the vendor.";
            }
            leaf product-name {
              type string;
              config false;
              description
                "The vendor-specific and human-interpretable string
                 describing the component type. It is expected that
                 vendors assign unique product names to different
                 component types within the scope of the vendor.";
            }
            leaf asset-id {
              type string;
              config false;
              description
                "This node is a user-assigned asset tracking
                 identifier for the component.

                 A server implementation MAY map this leaf to the
                 entPhysicalAssetID MIB object.  Such an
                 implementation needs to use some mechanism to handle
                 the differences in size and characters allowed
                 between this leaf and entPhysicalAssetID.
                 
                 The definition of such a mechanism is outside the
                 scope of this document.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                 entPhysicalAssetID";
            }
            leaf is-fru {
              type boolean;
              config false;
              description
                "This node indicates whether or not this component is
                 considered a 'field-replaceable unit' by the vendor.
                 If this node contains the value 'true', then this
                 component identifies a field-replaceable unit.
                 For all components that are permanently contained
                 within a field-replaceable unit, the value 'false'
                 should be returned for this node.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                 entPhysicalIsFRU";
            }
            leaf mfg-date {
              type yang:date-and-time;
              config false;
              description
                "The date of manufacturing of the managed
                component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                 entPhysicalMfgDate";
            }
            leaf-list uri {
              type inet:uri;
              config false;
              description
                "This node contains identification information about
                 the component.";
              reference
                "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
            }
            uses component-specific-info-grouping;
          }
        }
      }
    }
  }

  container network-inventory {
    description
      "Top-level container for network inventory.";
    uses ne-info-grouping;
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="manageability-considerations">
      <name>Manageability Considerations</name>
      <t>&lt;Add any manageability considerations&gt;</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>&lt;Add any security considerations&gt;</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>&lt;Add any IANA considerations&gt;</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TMF_SD2-20" target="https://www.tmforum.org/resources/suite/mtosi-4-0/">
          <front>
            <title>SD2-20_Equipment Model</title>
            <author>
              <organization>TM Forum</organization>
            </author>
            <date year="2008" month="May"/>
          </front>
          <seriesInfo name="TMF MTOSI 4.0, Network Resource Fulfilment (NRF), SD2-20" value=""/>
        </reference>
        <reference anchor="IANA_YANG" target="https://www.iana.org/assignments/yang-parameters">
          <front>
            <title>YANG Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC8348">
          <front>
            <title>A YANG Data Model for Hardware Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Dong" initials="J." surname="Dong"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of hardware on a single server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8348"/>
          <seriesInfo name="DOI" value="10.17487/RFC8348"/>
        </reference>
        <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="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="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="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="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="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC6933">
          <front>
            <title>Entity MIB (Version 4)</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <author fullname="J. Quittek" initials="J." surname="Quittek"/>
            <author fullname="M. Chandramouli" initials="M." surname="Chandramouli"/>
            <date month="May" year="2013"/>
            <abstract>
              <t>This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for managing multiple logical and physical entities managed by a single Simple Network Management Protocol (SNMP) agent. This document specifies version 4 of the Entity MIB. This memo obsoletes version 3 of the Entity MIB module published as RFC 4133.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6933"/>
          <seriesInfo name="DOI" value="10.17487/RFC6933"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-teas-actn-poi-applicability">
          <front>
            <title>Applicability of Abstraction and Control of Traffic Engineered Networks (ACTN) to Packet Optical Integration (POI)</title>
            <author fullname="Fabio Peruzzini" initials="F." surname="Peruzzini">
              <organization>TIM</organization>
            </author>
            <author fullname="Jean-Francois Bouquier" initials="J." surname="Bouquier">
              <organization>Vodafone</organization>
            </author>
            <author fullname="Italo Busi" initials="I." surname="Busi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Daniel King" initials="D." surname="King">
              <organization>Old Dog Consulting</organization>
            </author>
            <author fullname="Daniele Ceccarelli" initials="D." surname="Ceccarelli">
              <organization>Cisco</organization>
            </author>
            <date day="5" month="July" year="2024"/>
            <abstract>
              <t>   This document considers the applicability of Abstraction and Control
   of TE Networks (ACTN) architecture to Packet Optical Integration
   (POI) in the context of IP/MPLS and optical internetworking.  It
   identifies the YANG data models defined by the IETF to support this
   deployment architecture and specific scenarios relevant to Service
   Providers.

   Existing IETF protocols and data models are identified for each
   multi-technology (packet over optical) scenario with a specific focus
   on the MPI (Multi-Domain Service Coordinator to Provisioning Network
   Controllers Interface)in the ACTN architecture.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-actn-poi-applicability-12"/>
        </reference>
        <reference anchor="RFC8345">
          <front>
            <title>A YANG Data Model for Network Topologies</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <author fullname="N. Bahadur" initials="N." surname="Bahadur"/>
            <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8345"/>
          <seriesInfo name="DOI" value="10.17487/RFC8345"/>
        </reference>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Geng" initials="L." surname="Geng"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked. Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance). Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="I-D.wzwb-ivy-network-inventory-software">
          <front>
            <title>A YANG Network Data Model of Network Inventory Software Extensions</title>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Cheng Zhou" initials="C." surname="Zhou">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <date day="30" month="April" year="2024"/>
            <abstract>
              <t>   The base Network Inventory YANG model defines the physical network
   elements (NEs) and hardware components of NEs.  This document extends
   the base Network Inventory model for software-enabled NEs (e.g.,
   controllers, virtual network functions (VNFs)) and software
   components (e.g., platform operating system (OS), software-patch).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wzwb-ivy-network-inventory-software-01"/>
        </reference>
      </references>
    </references>
    <?line 1098?>

<section anchor="comparison-with-openconfig-platform-data-model">
      <name>Comparison With Openconfig-platform Data Model</name>
      <t>Since more and more devices can be managed by domain controller through OpenConfig, to ensure that our inventory data model can cover these devices' inventory data, we have compared our inventory data model with the "openconfig-platform" model which is the data model used to manage inventory information in OpenConfig.</t>
      <t>Openconfig-platform data model is NE-level and uses a generic component concept to describe its inner devices and containers, which is similar to "ietf-hardware" model in <xref target="RFC8348"/>. Since we have also reused the component concept of <xref target="RFC8348"/> in our inventory data model, we can compare the component's attributes between "openconfig-platform" and our model directly , which is stated below:</t>
      <table anchor="tab-oc">
        <name>Comparison between openconfig platform and inventory data models</name>
        <thead>
          <tr>
            <th align="left">Attributes in oc-platform</th>
            <th align="left">Attributes in our model</th>
            <th align="left">remark</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">name</td>
            <td align="left">name</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">type</td>
            <td align="left">class</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">id</td>
            <td align="left">uuid</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">location</td>
            <td align="left">location</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">description</td>
            <td align="left">description</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">mfg-name</td>
            <td align="left">mfg-name</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">mfg-date</td>
            <td align="left">mfg-date</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">hardware-version</td>
            <td align="left">hardware-rev</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">firmware-version</td>
            <td align="left">firmware-rev</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">software-version</td>
            <td align="left">software-rev</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">serial-no</td>
            <td align="left">serial-num</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">part-no</td>
            <td align="left">part-number</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">clei-code</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">removable</td>
            <td align="left">is-fru</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">oper-status</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">empty</td>
            <td align="left">contained-child?</td>
            <td align="left">If there is no contained child, it is empty.</td>
          </tr>
          <tr>
            <td align="left">parent</td>
            <td align="left">parent-references</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">redundant-role</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">last-switchover-reason</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-switchover-time</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-reboot-reason</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-reboot-time</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">switchover-ready</td>
            <td align="left"></td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">temperature</td>
            <td align="left"></td>
            <td align="left">performance data</td>
          </tr>
          <tr>
            <td align="left">memory</td>
            <td align="left"></td>
            <td align="left">performance data</td>
          </tr>
          <tr>
            <td align="left">allocated-power</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">used-power</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">pcie</td>
            <td align="left"></td>
            <td align="left">alarm  data</td>
          </tr>
          <tr>
            <td align="left">properties</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">subcomponents</td>
            <td align="left">contained-child</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">chassis</td>
            <td align="left">chassis-specific-info</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">port</td>
            <td align="left">port-specific-info</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">power-supply</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">fan</td>
            <td align="left"></td>
            <td align="left">Fan is considered as a specific board. And no need to define as a single component</td>
          </tr>
          <tr>
            <td align="left">fabric</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">storage</td>
            <td align="left"></td>
            <td align="left">For Optical and IP technology, no need to manage storage on network element</td>
          </tr>
          <tr>
            <td align="left">cpu</td>
            <td align="left"></td>
            <td align="left">For Optical and IP technology, no need to manage CPU on network element</td>
          </tr>
          <tr>
            <td align="left">integrated-circuit</td>
            <td align="left">board-specific-info</td>
            <td align="left"></td>
          </tr>
          <tr>
            <td align="left">backplane</td>
            <td align="left"></td>
            <td align="left">Backplane is considered as a part of board. And no need to define as a single component</td>
          </tr>
          <tr>
            <td align="left">software-module</td>
            <td align="left"></td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">controller-card</td>
            <td align="left"></td>
            <td align="left">Controller card is considered as a specific functional board. And no need to define as a single component</td>
          </tr>
        </tbody>
      </table>
      <t>As it mentioned in <xref target="ne-component"/> that state data and performance data are out of scope of our data model, it is same for alarm data and it should be defined in some other alarm data models separately. And for some component specific structures in "openconfig-platform", we consider some of them can be contained by our existing structure, such as fan, backplane, and controller-card, while some others do not need to be included in this network inventory model like storage and cpu.</t>
      <t>Mostly, our inventory data model can cover the attributes from OpenConfig.</t>
    </section>
    <section anchor="efficiency-issue">
      <name>Efficiency Issue</name>
      <t>During  the integration with OSS in some operators, some efficiency/scalability concerns have been discovered when synchronizing network inventory data for big networks.  More discussions are needed to address these concerns.</t>
      <t>Considering that relational databases are widely used by traditional OSS systems and also by some network controllers, the inventory objects are most likely to be saved in different tables. With the model defined in current draft, when doing a full synchronization, network controller needs to convert all inventory objects of each NE into component objects and combine them together into a single list, and then construct a response and send to OSS or MDSC. The OSS or MDSC needs to classify the component list and divide them into different groups, in order to save them in different tables. The combining-regrouping steps are impacting the network controller &amp; OSS/MDSC processing, which may result in efficiency/scalability limitations in large scale networks.</t>
      <t>An alternative YANG model structure, which defines the inventory objects directly, instead of defining generic components, has also been analyzed. However, also with this model, there still could be some scalability limitations when synchronizing full inventory resources in large scale of networks. This scalability limitation is caused by the limited transmission capabilities of HTTP protocol. We think that this scalability limitation should be solved at protocol level rather than data model level.</t>
      <t>The model proposed by this draft is designed to be as generic as possible so to cover future special types of inventory objects that could be used in other technologies, that have not been identified yet. If the inventory objects were to be defined directly with fixed hierarchical relationships in YANG model, this new type of inventory objects needs to be manually defined, which is not a backward compatible change and therefore is not an acceptable approach for implementation. With a generic model, it is only needed to augment a new component class and extend some specific attributes for this new inventory component class, which is more flexible. We consider that this generic data model, enabling a flexible and backward compatible approach for other technologies, represents the main scope of this draft. Solution description to efficiency/scalability limitations mentioned above is considered as out-of-scope.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors of this document would like to thank the authors of <xref target="I-D.ietf-teas-actn-poi-applicability"/> for having identified the gap and requirements to trigger this work.</t>
      <t>This document was prepared using kramdown.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="I." surname="Busi" fullname="Italo Busi">
        <organization>Huawei Technologies</organization>
        <address>
          <email>italo.busi@huawei.com</email>
        </address>
      </contact>
      <contact initials="A." surname="Guo" fullname="Aihua Guo">
        <organization>Futurewei Technologies</organization>
        <address>
          <email>aihuaguo.ietf@gmail.com、</email>
        </address>
      </contact>
      <contact initials="V." surname="Lopez" fullname="Victor Lopez">
        <organization>Nokia</organization>
        <address>
          <email>victor.lopez@nokia.com</email>
        </address>
      </contact>
      <contact initials="B." surname="Wu" fullname="Bo Wu">
        <organization>Huawei Technologies</organization>
        <address>
          <email>lana.wubo@huawei.com</email>
        </address>
      </contact>
      <contact initials="C." surname="Zhang" fullname="Chenfang Zhang">
        <organization>China Unicom</organization>
        <address>
          <email>zhangcf80@chinaunicom.cn</email>
        </address>
      </contact>
      <contact initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
        <organization>Telefonica</organization>
        <address>
          <email>oscar.gonzalezdedios@telefonica.com</email>
        </address>
      </contact>
      <contact initials="N." surname="Davis" fullname="Nigel Davis">
        <organization>Ciena</organization>
        <address>
          <email>ndavis@ciena.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
kt3iZdz/D1A/m8JJxAAA

-->

</rfc>
