<?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 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ivy-network-inventory-yang-02" 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-02"/>
    <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="" surname="TBD" fullname="TBD">
        <organization/>
        <address>
      </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:
H4sIAAAAAAAAA9V97XbbxpLgfzxFL33OyrohKNvx3Json7Is25oTyVpLiTdn
75wcEGySGIMALz4k05b3zD7G/ttnmUeZfZGtj/4C0AApJ3ZmeRKLBLqrq6ur
q6urqqvDMAyqpErloRgdiV+Pzp+Lp1EVibN8JlMxzwtxLqubvHgjTrNrmVV5
sRkF0XRayGuo0XlHEEZBHFVyAT8PRVnNgmCWx1m0giZmRTSvwkRW8zC53oQZ
Vw8TXT3cRNkifPAoKOvpKinLJM+qzRoqnp5cPRPinojSMod2k2wm1xL+yarR
WIzkLIHaSZTij9OjJ/AHEB+dvrp6NgqyejWVxWEwA5wOgzjPSpmVdXkoqqKW
AfTiywDgFjI6FEevTo7gB+K0KPJ6De3+8qt4DT+TbCGe46PgjdzA+9lhIEKR
ybeVWMhMFlEFqOKjOkvivKCv5Toq3qRYc5aUVZFM60rORCpnC1kE0OEa0Lkn
hGrp9XP8wb1ttgiPV1GSYpEf5dtotU7lJM5X+Dwq4uWhWFbVujw8OHBeHgA4
AJ1Uy3qK9NIUv1kc+Ik+guIpUKisoLgG6FSbMKxJkvcAONhpbCfLapWOgiCq
q2UOgyJECP8LwexxvIyA7cSvNT3Li8WheFFHNzIRVzJeZnmaLxJZ0kvJJNnU
MdX5cUnliC5NmJeyWCS5eCLTvKoSC/g8f5NELqiSCk6mXPDHDN834CUZMM0/
h88m4kle/6NOYBRtM/8soyx8VkRZnCdlswA190s+i+Z5Jt0W/1XO55OpKvrj
tSrh6cOzaApduJBF/e5dkjmduDo9cwHOsdxkrcv9WMlUArSkilLoS1K1wF4s
kxQIM4uKmQV5nJRx7gJdL6dU5McY3xB2AU4j5ujuIJ5Ca0Dvukx2HkVEECgP
VfrH8SiBV+J5nVuoz+qqLuQQ4AgrLep8gmz54wIfIuj/+2//qwX9lySGroif
8rV8N8Aj11RskmIxD4cwrCe5eL07B6dRFk1u6mne3/WrJ09bT16WcVSI53n2
LkrlOwFz5mmSl5ZLX078L5lpgCuA0ZK40bUcQU4WqtYMRGpeEgNxUQ9a58kC
loin0XVSuuwjswbcbIYFgHngOTNPlhcrkJfXEjnn6uzZb5dPH4WPHhxSLbUW
8aPfTmBqrFcgP3g9ohJWdNgenYlneVGv6BnJeSHOoo149ODBV/QM5jaQPcnm
ORZ+Js6uXl6eiseTB2OzvL2SZV4XsQSuSudJSo3eP3/1bH+skGH0omIhKyty
b25uJtVqjo1PAJWDQkEpD8o6qeTBqsrLJHwcPjgIoP7p0fnRb7hCNvpKi+5F
VABRK1mUfZ3Eyr04JMhFiEAEi+YiQ+zLA1pM1xZwgAQwtA/CMBTRFFamKK6C
4GoJcgsW6pp6PpPzJJOliMQ0KiWjOEO9YGX0AiXghRHwQbWMKgFQovU6BZbB
JRFayGai0ry/CaNFlpdVEk9g6KlFCzSOMjGVsDQsEAVYKm9gyWkAK9cyTuZJ
3AZqns9kBUxXQkdFXi1lMQbQhRTmfQdnp/1ywiRZJbNZKgNYXk9BxuWzOqa1
HQgkxbou1jnQI5+LqkEv+F7limqaaF0Ctcl4Z4LJgCB3iCYs0QiNMgbhLP20
y4vARzrDG3kGhOgqdivgsIXUnY0E6EECpvMaVix8lAUgE0ENyotyT7y8vCTV
BGZAjCK69EIkMPMaBARCjVL8TrSG1aqC15mmYOC0jdS5iUo9pNBheLkRGxkV
AG6RA5meA3tnQFsJIgjWdJnFOGCBM9JM46VMCqDVOs033C1gGtWHvVK02qQF
L0+DclNWclWOCT5MHdA8CWODPPJG0kc10F6DQv6jBjWLhwoGiZlmJiIkh0Vy
2yAgUisQzaj4gqpIxIRRB06J0gAmfUWTFFVdeo/oaoYsq2hTiqWM0mq5GYsb
mabhGtYhwGKMcAPdFwLMpHQoo8AApTsINkYqTfObslEZe/xGyjUSLn6DlLpZ
JvESVIxNSXjPJKywKHYKqUYGCKMwsNMpTusZolbA6nQdQVNlPq9usA4ivwRd
hX5cg8yDTiDz4dwdpiaMDFAkXXcQDt5k+Q3giSyViyiGFalAZG5gwEpZMS/d
qImcSTlDInLNGSpfahsj8nSGj+dRnQJzw6wBHuLe4xTGphF+sloX+bXpbAB4
0LREHiY2jNZRjLODxguIAJ07zcT79z+chk9JywkrGZUhiPQsXOdJqETANME5
9eEDMMkiWtMMSnD3RFMIWHIBRNNskqqxiTpin+RVnNfQFWDcukSurcTR8dV5
cHZxCiMDy8w8AlRhXLB4DkO0zoEVb5Z5Kg+QK2GTZkZSj1Rg54sjhUR0DbI8
mqYSG5nloE5kehqmsjBtAIRZiUpFtQxBmQYiqTkq7svJYjIWZ08vj5H0KJXS
aCOLfSAaUOzVs+Ovvnz8T0AU0JUJsUUO/yBtAPNV9AbkfQ6DhxggXZSMjfQs
h2cdiU5LVpfTnBKgM9PaEWA7GfQBZRD0BFhupuWSAEV7LQmTN3JdiTQBHZ4F
hmaMKl+TAGfQeZZukBOICVEy49w3ApnWhAKkIsGGvXMNi/5Gk44e1ryoRQHI
hgy1fe+S39MxUDmB6WYBAAAVHrgI3s6wXeDlNSheoLBsxNHFqRmRVyeXV/hg
n7kXEUAmaqwZY15hb5jbSIbRJI1TEPXAfhmITZx9VUDjy9yASMIEeSMrkSNl
8zXJQ+LMBW/SgbagiRag3QrANZZqMKgZeKEHGzbxIF7csRYvXnv0B5dhafCR
K2DT/6ZsvOJ50BVmZhhZ5rNOBIVhzSSxBCRMQMBXnhFNcK9PwosJRcqS6B0/
39wFEuQ40UrL6IDfCiRUEvIYupQrkRAX58eqLSS7lq1YKqOOthQhMo6AdkHY
tHUXQulGoxSVwQp28w1srKIitB4k7l+DfjAjepxejM0Qo+hfJXEBTG3lZ7mv
ppTbd6MrjVms44IMMh1+gszm1QVmYL6SXhXTUR1Z2YRaoI6DsslkMQWBXQDF
y9dWS/qPf/vfyLDKFFSSFPovLIW+AilkdW7f3EOucRYsxZNmscNhRIZeANVg
t4PMr4RJATs4KJCQbCB1WK8JSOCcwHSl62UOOxC0YwCQUyPX718+Od1vCA7N
yJJ5EZg3IloAyTOU217oqESgvCZxPREv8huUg6xTtfuu1aMEVzmHWkvgk6mE
4dOsHMFAzqG3OKeRYFRRr2kEdUj7F2rK6SmKyj0atBSDoyTLsaE2egYNGJp0
845XxIpq8BSGCbkgOsckkVi2rFa54TsmG2I8hT0Lsg0OHPANyuQYpkzpl739
OnWMRDbKKCHrbtiMkgUzhpVgw6Fa7YV5skF+0rzsMB4vrqD8XXBvAqazbk2t
q1//9esPH8ZNtc2oXUQ4wtQo+Erj9W9CATWmOxSrgWnZnNkxMI6YR7KELI0f
PtD8gl9qvgPPoG4Fag+2XEqaQ401HW3D8FpLO9Kf34JgIy0SVzc928ZG4xwL
lHsVMz8pz05HrXCHGce62tUwhzc3lYAPriClnqV6uM/saKCtvqxwUh85a6ed
KY+IDPfuiStZrBItSgHL85w7XaJdArGa56iv03yR2Car4K2597ev/+kBKpEA
AN9nOZoUQXSqcihsDhHgXwSs0wkgqH6wRFI/FM3VL0sI90EGD+6E2V8fPX7Y
xMziBXAamAFZk0Wt1AFsTmMJJJHmATZdOVRjmUI7a8SlNYolMvScxCXshUWD
XhMC9+TpoXglQYFXMgDk1Jp4MF6i0aY8KNO8OjBT8WCaA7cdTCYT7qQ1lCmA
zzxkIVmoVwujRjS0mGUCDI68IsvuzsqKFs/mjuj3/Z3ki/ho+eJicMLTy7TP
pWn9MssPzsKNXuihy6CT2sURMTF7xBqEFey9UBO1EkghTaosbFwBQewcyB3o
V4mLE2gYapwQi2P+ajCC7c0M1U0mcROWNqkIcQkD3FOFBpsKHWtamZKIsC7X
Wm5VN2xPHUqnCWxgFM5jWEgKUHBQCbXCq1NavwjXURUvx2IKWjILtWmeV2Ga
RzOexU+IN48j9IMpLNdpvVjQmEhjtFXGKSCEVMovSLIWVZHr0Vo6Demb2uXC
ejoHnpq5TFIVUVbq7bQxtziuwJQZ9wI6qdHKnE0pFCYyM5WJRySZWL8Xr0Fz
64jfsVHoaYaJUawrjcSNNKsFNtKlP8g/oDzt15EmOM25Nk5YRQJSxkAByK+p
jLaCMDMn0jIpUgYna6THE4WNAy8y/AOS/pWrVmgxzysP7gzReVmK0dnPl1fo
LcW/4vwlfX918t9+Pn118hS/X744+ukn8yVQJS5fvPz5p6f2m615/PLs7OT8
KVeGp6LxKBidHf06YlYavby4On15fvTTqLviIQnZKkbDBvKrIuUu0CZNkvhP
ji/+/f88fKxk7KOHD0HX0Evew789hh+o13NruDNWP2EgNwGsxLh/RGKmaD1d
o+8JmRz2Qsv8JqOVYhJ8+0OKG5jwrz98H/D6WUj0o0SwF1oFwRGo2rD9YgMk
PFovaeD8EtdZ6qGvJKK1olIBVEC3bU6e0GitZMTcwmDKzWqap6UlGiODMH06
8gO98l+AWpy8xXfk2D9HD+t5tJIkyE5bIzAm305p5DquwzwnyZ7u9iWf/iss
AuiuwFFbUyuAA1sACGG9FeV3aC/L4yQyln1UHgVvtEuYNDOzqgJpebPM+p47
OmrFclQCnDrQ0Vvdz1vxK2h/6C9CVdH3uYUpojcK9Bsqh/QR+kvvp12CKgPt
K4LLzm/4FaIfv/S0rJSVr79GZYUqo65qK5PLZvfK6PZZ3gj+Ehop5Ovz+/fG
+wS1sXKWqFd+dbpBsGfH4r/DR/0O3h+Ke0D5UI16ya6s70YX+jebzDsjqwZ0
9CEIEOQJxW2gkALl7CKVaB+AOZSitKbmjADG0hzIIdjDxdaw1qwxIFb5NRt2
UBFE9ri3W2iLeAmL0nUib1hetlZb4Wx1ADQHfqTJO8alrNdk6+was83s4YFt
OAjULNKWseukqGprIg30tnpfqTa8oGolCk0letHobMTnRb6Cth3j6loWuJii
+29C6m2PeU/pW3ZLHHQEdV3SLmoO2g2oDiXpJy0M1G5nlEli6JErqCJj5WAr
NKpujt+Kllyo06P1KDOZZ5+Ybqj8SFPFcLWqOTLtKezset0cWzI19gww+pv0
SAYGAKhVynrl2yWi5T8pVvgDWn6azEkAVZYjHFVMDTIGDcHEqZNyyfoybRtI
q3DL80jafoyoSJfaoEWiAgT0kMo7ZpUWAqopM3aXk1FDsKgVnEic5Zl97q/c
nJ3iyFi+BJlWFVW1etftmqaE3lZp4wm/NSa5EA2tsNoUNW1+tUlSM1bTPhHN
jMfO0N6yKOkn2LOg27UmamRzqyvUAB2LvVrIA6vQkBxUhkeHND2eWdfiGFjK
QKsRDV/DXOFsPg3zBcoTdPPuZtoThqWZkvSD06ZVbSzQMTe22wbUPBE4a+dj
1jOpVzwViob/0mHirjxQZmNtEW7YQV8vk1Q27XtaVSJXTEY2tIa9c96xdyoR
GrUb3h83rCfNWEWfdkZ+K8BOKo+J35vfsO+TdI5cA+oMo6XQBakEcZr67aXA
2lAaXRmqMpDjP4NBVAlZYNQij5SXUim9LIqM/8FRdpOy197HHlS2fGga0Spy
lz62R8ZqPETknQn8P+EDJIqTJIwKtGF9EYbFjWitFhyK43/3F/E/QGoks38J
tJaki8FDV/PCyM9sYUpN7vBpgbazK3Dgt94BXlZCuuh5Sw/jeheMiaS03zhm
6/ZTiWoaMd4R8L6jYql9Q/AMXulp0VGIxuy6IAlDvhhlNLdiQ8i3vEJOxCUL
P9j0n2qndnFIOzncqJf1YiFBRQHmQZN6XbP3aIXOJ3LAk/cM2G5jeVrvUZQr
eSLYtbqooyKCtyZ4Y5HmU+jDBpfXf9S49pxTbBzuotjEvaxBfIWFjGa0yU+j
KUoa12vIQQANzxwA1/4DKPH851M1GzVY1SWDhjJsk5rA0hAwOUoToInA2M/S
6DR3RwhmJO9zATYgVxAt+C1BnMoWrtofTGsAIIwKD2l2awR/qNS8tVG12hgN
4EINJtm6riw2Dmxr4CfTCjvoSIw4khpJC/xPOixIZ5JLKswChSO6qiqZUcQF
+1tVDMmfJzNMKVRSfjCltGICUr5VFFn8BxcgbisP8WkbJgxPo6C3ZWfAfugv
RXz2Qz+s/28EXg8Ne0k5SNDtDXWou71Kh9Tbq7B23f3QtuDuEt+K+9amEZRv
EglkHS0xKsBu4n2brTFLdxVO40j3PhUAFxRHz4zIhGr8Hu19M0dNltJdN5SL
//DTTOm7s7lWYkACXv/gGUYuZWzzg6VW80XY4MHeUhgmbUoRU+OTEFT7sEpW
slUDQ7dCNsAMiAAMs8ZNtynnLbXmoFqL50cICmY/Mhyh+cjoEX0M9INloKgZ
AeF6rox94UiHTrQWOuJVckGg1d22xcuUdTzG+SIjswGsUm7jE3GGC5P1Ktul
LVHBxowxbo8LAHSdcLFoXqngAU/r2O68Ri0ENx11CZMBfd+H4h7wppkrH7R2
pmWq1xntjeymRTHdKLMrq+wlqiJmd0Cef2eW4g6RY56aYSJGYbewaaeibUjO
zCaxMWtZStQez+xP2aDIjq39LTadljmHoi08jrMAcXetGy5Sqn2PB22/X0Xo
rGO7LmF3WrzuumzdacG601J1p0XqLsuTKrtM0pnl67Cr/4C04hdpuM4dHGCO
ffnIX3YIXEdAD/VEm/l2KtwR6oOFjXRtUnW3hWCocEe6DxWmsOewy2XewkkZ
zou6ywXTPE9l1B7ZzrqkPluXp7pI/tJpQwjyzBzCS7Ve4I7TBnmwzzuagdof
0tMxKfz8XcUMCNRQXGcvOhGV0mFMmMrfb+RFK0ofl4RuiAXqJRyaN7ZAtUUR
JGHDoOhYUS9R7uoQDzzKmhdIs0hBKZceayOrWOSCcAPKneMDjUAWu33zGoZw
HbknXujeuivKk6jk0Ak8ZEVzGg2YkXLUt6JYxt6wBWP95g0thQwA7fiYLEh8
FTdBP4m8NtyAnrE9vFHKBIQMGjdxEVfBvy2QFkBL+2vbQ9UCpAOHy2Wythb3
zVqFIrddP+TY7/PjGHoYBzipFPNkES5vHKsuAwvdpmEZxsOsNz5Ft//zRcfn
+cVg+dsOxrd/KHzTzjDYT1Xs4eHZf170/n6wpdgXdyL0Lfyvg9Hg1041cPbo
oJTbb8NwG+J3w0i10gP0N/o8PDznL7e36vcZ//7NX+v21uPWN9/62vr7wRCG
nYFocfkXov+1SwN8fkvfSCIRum30hVBSRzRmGvTqe3hnIql6qprvfwzCO392
5OhOLRjdj6m4dWa0Pr+jf0RV8oZ1qXqnVklHwV3bLsJdR1y8uvNa0xsxgFEZ
5LFv+nx11HUzgET73F0nfsKh6kHTuWx2Y7yDU25chBWSrTUiLWVED07Or06v
fg3PTp+M8FAaps1AT/2lNRE5ezrYWUZvoLfk+mnuPnGLH2MgBWxap1onwdq2
ARNN8+WX5Al9plQqx0HsbLFRIdPuWMe/rzz+xxc/jwMMwwa1TwdZrvMbUEAw
ZiDdtGK0GvQxtgClV13qrWVzp+6Ldxi524cR4nh+okNvdN2xtU3g2WFA3x6W
bHQvalvylDLjnq30KmzlkqL2jEmgARWNeo7TnEBcS3QkJmlU6GAfMsS4xyEm
4jlv1tPNWB0yIBWbj2kCxVmZNbixAswB+5QDZezGWAamHMW1to46NzrZ9GBT
KwHpsdL62PHsZYUQnPiOJ6cvL8cUJctBsuNGzHHQaXc8HEAgGgEEmnVUCJ56
VX6szx+tQEvYUUllY8EgLRAOuJNRUygIXuN4hLph2j84A4vWmq5pdmynGlVw
D93Jt2tMwaBd0Vr0oNuttclQ0+Bc3mBOBCSB9emVezZ0r3V4ynjAIjEy2//5
yGKtJwIeqsSwYAPU8ZLjqTqgK9d3Q2xea+e1e5ZUHzO9wSPIUBVoNePRMzX3
SowOzWYKIlRcJoulObzqnp9vBOdv1G4uk51whKS05g0QSpVck9MP/sLOB0ui
DZHLJRW5r6AaEpv2sTOQYTPtYCSKOcY3czQAV4c2EYD2Ppr1esbyjtmr9bTX
6nVXC3ruteEo9EzJ2y4GthjggnHkb/+lUdzUoHf4swae/spfhqQEGi7C76EH
B/wfPfSXN4Y6t3zDQLe7HfzKPdeBg9czasbYzBFVKqZs5CHIiJiC99KUbeut
M5XcQJm8UFYR5iIFsoFMQ23hOI18vcpLh7nEfeMk0q3hAS2A/2Bf2WorqGdn
JAsJs0SGl3pxPsVYMI49CIKjOM7Vufa8fYCyefoOsTKna5VPisOQcXK3bO1o
0OlxT0267iZD9G7kWuO4EiaM0Wcy1flZDl1pus6IzBiWPQFVgSOEejKBEElf
vG7FyZFFA0ninh9w+tc4G/riNR9BoA0Hn1BqLJF47Fy8pGXJ1zsD1q6dly18
xjAmm5a56lPFuxlyw7prouoby642cLUkms+Mv4MN/3Z3C/7tbvNdy75bI3V4
692kaaMEjtnAaxrZgfc4BVqvtev3Hi7QlTgnu7FnsjXiPNqqQsNZR14I2AMQ
+clsPfLx/hgFz5pkVMHSh5TJSMQ1KN8rWYToLqOjNIiYihe/jtIaJsvozAHO
geFI/wjWY1Tm8EQzRQhhs3RygRN7NMKHQDRSAE6FnDxyrOYjMQNZEvMJpI9e
DlH6/85l0GfG/2j3KnkQ7flZjKI/wd0KDXI390vPLkVFUHqzL1kJEbQOpasd
rElZo5M2TPDgIwZTw/YgBN2KQ0+zWeA9S6hrjdWBSN9e2cz7wAbq2yOdSZpi
toxI6bvP8OCoFI99w9yzsW8ZVpoF2yYa5027INrWPUGs3YI7Qmzg+MUAjn4g
ni76em1gefDyoXobKCi/OIao5qNG+86ztmmxCf622+KtB4vb7hMA9MI5WaMB
mY36IKDGQN3y/GGXvgHkPNOATuyhcg3oSh8mZ0C0LF+QjcEA4rOg27p2xofR
ddeUhYIOmZquvVY75d1p1CI+PvQ88jxrj1pD9ND5OJQ7Xb5vHshjj4g9UUeO
DzozxgIIH5sTc2rpHwg63pZo4L6TZsDj+Ofqhz0HqzpxRu4bMRyE1Pe6G4fk
lGxpHfTphorxGtKJMqSPL9RQdHYyjY83Tm4o5sCPUV/QQV9pf9RBX2/9nv2+
0n5v/dbSNJWwzl8GSvv99UOlu47yATe5xaodojXYTidUa6B0X7xm9/WWkM1u
hTYDe+McDdJ9sSTeWEcxzMWiP+BTDLPzFjT7g2m2VOsLq9lGlIGgmVbRvuiZ
VviMv9ZOLfQF1GzpQ19ozZZqfUE2u1ZrzN/t1XqidLZU64vX2VKtL3JnWzXv
vN5arS/0Z0u1viCgThRQq15fONAWQeeC6AsMspFBPRV7N9a+wv49tq9kz3bb
V7Rv5609hErZ0Y7A887mytV5RgEwCikMOOTf9Sg2E6yCbkClfpGCs/PhaaUG
YSWlAfWdLH8f8BiGKkWneDh5+E3AeaXLNZ7+HtVFdoi1Dyl/cXn4dpUeZuUh
jXyPVoYQVKqBLPkGsxuwBa91OP49EVwV5AP039AjY/xUIzK6a4JlwuCD027r
RH+jZXze06465H+oj1JZ6l8hnIm3HSftQLOH8Pz3tRNQAuooS96pWw6wLl3I
0LkdgWqQYTHmHfHo9XPxWk4P4eu3mpyoclMCWFlQxlIi683iILneHHzPuEGt
nxK8ikB8i1nEq/yweY3Aj7re9wFX4EwC2EzzDgHn863nroBudc91AS6MvksC
uoAGLgRwAfbfAdAF6bsGwIW1Lf1/F2L7BgAXWjfv//c0vI7ewkN8pSwoOOFb
ecNtTLnyYCGn6DMa1Ewz55TgtFuqGoW0b0+CxvV6MqHdPz97erSvgR/n602B
Fj9xP94Xjx48+pJvFrkq6rIyZ9sxTwJmRmMETZpcilSnvOzatQ3IoR2eDjgS
WDzZTufvZrrFV9Jc/kEG7WxGhxApKJPSzVN2pSTDFKnUT5V1KFesgj/QXM2n
8GLlPEY7KKYmq9Asta6LsmYfpHI71xTtwQAU2dIkllkpVa4wnckIN7tsG3uF
Rw3g95PLpzD1qCzXRz/MHJM1Is6XKu3X40msSWDpt1eKn+QiSsUFehY5aZ6i
Adrd2DBMxZ9qFza/v68lQ4VgpLRSQWFNq9++5RDovl45tOXezQ/ILlIy8evE
Jd9AP1SHdDqRpCplOifmRE4TKeGe5VXCXk3DjTZr0h5mS9ob81/MfYTfddYk
/E7JkswXBqGKccIk+81WN3mS8GcrddLemIHsnR39useju6fzJ+3dIX8SAWkn
URIPH4v7SApMobTPXzGB0r43f5Kh3kbslkRpRGvwwYHgVC+TQ09uF47SaaR3
oZMjJoELQ+AsLk1g9Ro1QJ1hSSqTj/Ej0jPFAet6qrMtMJBWIzpLjDAnblA2
PA4fwH9fq+W0LfZwDVRpoxUvjvqXWerxodjxgqWJgnRwYJPk7ES8sSYK/qNA
NDJqe7qtl3iT5sI9+uJs53hX3UsLsk4bGBTjkfvyonWO0Oh1xzlJwxHROskN
h/44yojFlG1Vd0KqFat8//xknwPTehow0XLcCKeCSA5V09/0tXzUH9CNTU6E
bc1xyKIWFnLboeOT7e3fkUlj6juKpk7MY9Z6dTpOR+lpmuvTVNbBZiPfizxf
7XeyubCE1QwKm7c5n6d/r0DSeBiLyTeBHlvMuCnmICSkftbtDnToZzpFjwFz
etWlYB01HG109zUeHyw25KBrYMN708Fmj7gaMshAayzfzL0T041VmWzOEeZa
St0RVW7CWZxW1zkuhLBC7S1hKqZyz0LQJzpU4zZrtcr4pA/hR9kG97tiZq51
sDBU3TSZSyyj1zD8nAJlcpP5FOCQV5RTKCjvmMqiAgsNx17AIypkgZgUH6hg
I1uJNI+d7AcKaOPGCIqktCDobI1n2Fxf8V1HLwKl5i1JQheKJ8tWt1nOjXD3
BrkeMY0vm5fOnWJLqbttLB0cNmrzjkuepoQAqdMwCITmTb+I6AvtaEf/Nua0
a6AbIs/OExv1KM4oH3biaO2iy8DNXDg/8XCKa837ZKiZeNC7oBZSaE7XbPjJ
sGQf3TZcLdN56akNj38YlnpWqHireh7RTqww4uP8xI8FaS7dhaRh5/sojLQq
aLFx0mr6mcz1knw6LqNWtOLrz3VnR4/SCYNaqXPRYEhtTCcQcZ3QV26weUoL
ZG7BwuCm+IoGc7K6raDohjg8mKW5I7lswJTUdmRO89Ilo2tm/mRUpKByyiBj
9jwk49o2aSd3t4fOhJaXtBaCn8YuDVqUPT9h3dKCsBRtEpJB90v+nqx3OywA
FyrMdzA+j/ODaby7KrlGzGRA9tvHzRhTUp2RDoAV34k9NrQeqmp7o48Yepvz
mMIN1ZHMdmw6bgPJ1GCJrs+nUbiiaZmSj3m7YajqMrRtumvt36Hfuvbn7TkF
bHq63e3Clj57/BbbO82bhc/bYz4a5+mypwdb+tx1wGzvMtb5vB0mD4Cnv13s
Pd1tCZnByaA6f3DACX5kVsBG0x5omtecfNPfx9GlR+g0FdLuLG1iN8Cznxo1
zkzfh9gQZ31qzDgwuxe1ASb41Jhx7pc+xDK56/r1XJfwmG8861I7bMpM2V59
osrXoT6Oo6FoNb8ntbF/Qdf3Ipp5yKH6TYQMPoLsyiOKzjI1/GgqRPuQGcRB
m0UoCOy9A9KjhvW3L+xV7yeu5cyeLXFb/NBp2zHTOa07UWWNl9rM5trY2pAR
U7pLkUiojW0jt7BP+g528cpJO+212nn7yHpEj+3um2ax3g28LeeuAsZm+n5n
9Hdg5r4wLcVGnfy5kwZVCYo9jtIcN2JpN2yrUbUf9xaHt7JAbUdKcVojYOx9
q4Uehh9GCxAzh4wcbm81/sGDimMub+HAmbjbr7bOCf7QzFDKhrXSY2PtTrXR
ulsTQ16A7S21f/dNRfys8JYIFbBSd94ODo07YRsnRdrc0cRnxxmrEDcbnk4A
XYd6Q90c7MiRIN+OylpDduiZuY+1cT6V0OgOmsHrfrl/SIdR64JPC3NGONRY
6bc5XNaFETFwx5YVlfpEMB5dNQdFu1UpC4iTlLFE62/G5Aj1cenhQWGDQSP0
0D99KArRw7gFHmkWowdiMhGPHj7+2+Ovvvzr47+N2uNwF9bcynx8ouSaLopN
7B2gzolqspJE7q7abdocjF/ldL8pu2nwDFNj01+2Sdf1MjqIoT8Q0xoc8jGC
jcBsB/d/UQ7zx/si9Ex6/YHWLtRiysevX8n0Ii8Hh87ZMnmCQP+MWbKV4r9r
mqij0fb4WmuedOsMHFB2qIdpmj3BkHQPZUhBXnEcrdaeM44UZPbg0Q4zzGvZ
15+BJfJ3TZO7Wv4HBo4TujqnAJXPqWxk1egCMC05x6FNipB1kdCJ2Tzb0roO
GrmfzHXS6/0/ZW7qA0mv5PX2MXfjpv+0MddIfMyY/xkUfqbw3YnCXqeU/nwu
Cu/uCLLN/5kU1gfodqHwVt+a/nwuYg/73roE0JuwHVXUlhfqz+Mpn4vK9KHb
zY9wUnm0SbfRlkvFTZmi3FRdAH1eFudY+A7k73hGPzXxt3pOzdVinR47mTE6
7wbWy0Yr1Hwf//aslZ2lsVuzsVYG3feYxFvFumDehyLB2FtzPNs6I1U2qU79
PZs1AAMo3cUOf7uimSMoPSDsTNvTVx7SnerQX3UL47xOWUsvh9TK0sYfUjIs
JjZgvqeZac9HglPPmDuj0XNzYutjAs6cIcHbb95kGJGptiIc5EMBPx5N00b3
qAQJTP2Kmv7ka4SzNJzNF3iPyk4bxqrtpje9+WxLgU02sV1C9vqZ+9zL3oSt
W2QjnwPxue/1Z8D7PERun0P/c9N7V4d/swHj+G9SaYvLX3/u6vof2kO0B+cj
x0IfxvtM4+BIhoiuzgnNRZyEiaAjPd4BcLZcXTXIIw6PdCxi64oxDE1c0f3p
gATRgKXaoCg5QuROn5IA4vA82ELyhVEeCdhqEfOvlfriKL78QcZLWBDKFaef
wShOnxyVhhViznlZJu/4rAdUB0LhcTG09+Q30rMeNXKT8GBjoutOpzyLvX/5
b96ByLmTnK6g19WmIhwUFm4u8s+4IKgOb58VfNbUPyfUcdNPMSmyGZ4vkNaA
RAHwVSsdoEg8yqpOLU+5C0F9keksdPNiYmaOPZ1YTUmHHhVCo2PiB0wQr9hD
4/oeL/z6YEUHkY6jg+549WLkQUHf5+ZoQ3wtYkFHqkBgS7yj3R4+6lXc+xod
ux2i8drzMKvJgA8LQ11k6mYgQ53Pyban5bNXP++202hEP+rPlihI/fldy+tg
dKQ6hNGp+fksB02t8Ckgu6OxAPrR50Dgo9+fQA6YiadnkLn7wDmEMwVZ618z
PhVVXSL+DBusnbxjg/GGfqe8/sZ/TYBRNzqjeRTcG/dx1ePJ7t6koXqjHewd
PD8EHzon5+nW9d6T885hwlHA5zTxpGe4ioo3QNbvRihMR8J5M3Sq/kc+S/Zl
+ODxBNsd0ZF6Pr8aTZMUh+xYLQKcnwyJ9vdvj2Z03EPNQV0ybpT8HkFdyhjY
eQuUUhfyAMDc24OVqUCnIubdmoLShyCOzd5dvMYt6suu/8859xYElwnfQKIS
S6v7GvnC9NYt57D0zXJMFS6cq2OrJYzwgts5pnbGqJHJrKwLZU6A0fFeYELw
6W5enHSlaXevVZoS5lKGQTZMoNGjD6RNX+pxfI7MFbjqtlF1PlFXbt1z7L9h
GLpv+wpas4/AzbuMz0/UBFKHjnEx17cv27UeYMRyXTXuX08oUzzOOPcOezMP
TVJxvIlUZfKG6sz+jbzxdLNo6wY0HnlNWsrorS7wa+7ONGJ0tZhzfxsA7BsG
vqonyvSANSHulc1QStax/QNGR1/rQmcGU8kdhdvxiuwx+oaVW/d6c0QxtsMi
Oi8NZHhVSBQrnfWAs7N5Muqpj+h/OfgKgNLu3f8ZeNmfWJCA0tLaB7Q3JdMW
oJ7EZbYmHTz8CKB4aI2mlK9m78stQN2jZ52avS+3ADUWaB+mvS93AEo6Xx9Q
78stQI1bWZ/Ld2s2fM53AGpMuT6gDafmHYAae7APaMOPdxegyn6ce167bpz2
q0GgbNv0gMSaruHzLkDjVCYhqiw+oP01xdWTp/1A6Uw57dI8NdWO/G7tAVBz
F1vdkRyDmDoXvHWBytW62vTVNBvTkAKhfnBesYW+UIZxJ38GlRxjSmA0IiL0
iRk9XMX8LdkM/tpEtBtNMLt/Nouwat6i9sePHshmUPNBg4mXqBThRdylmhcf
T+g2UDq0vAOm24EWEq/ZcLH844A6WP4+oE1yzjaNmh8LtAL+QvW7LjoTbRCo
e+dfAzQtBzB3C/+U+HigaNlEe9gs5GtwdgU6yKeoI3bh/U6g6zjpV1sGgEag
9II8744UAS1QeNF9SH8cpmU9dSxrrZot0bVbe7gcqEM3XnT8Z/y2A1WXYfmB
ek5V7YQpDXyoshW3gfbXHKbpPPJpgduBPovoRmHXdIu7K+OiomM5fI10lptb
XNStDlw0yRapu91R+Exxd3ZnfIYZhy+munsn8Z4bUFrRp4z7odMLkEDxMqM0
1GO3Y2rjqhsix0n7Tkhgp7VPC/gEeBxf/OzDgXcU6lIinClJEddJ5bTkO+W4
FT8AikYQ2O1ld1Wqnph6HmbSKaw+lpeMLquyYu2K1CAvWQtMGPMdhLsBPbaW
G6o3NHnmdRarG9g+ru9o56uiaZjH2sTnWKf0vt9u++19XshdPrsCXY13hBcq
CeQkwE3f/NK4YP0D252cNZwuhm0vlM4NJMaxhhYB147B+mRpstLQamNAwttt
9/w6NdRlBqXETJWVxCtbkKAIlypY2tmwr6qoKQ6FzBVeE0nzWuTS3tC30vY7
qyRPN9RByjZDRzk1eHsvDEjisZ1HY2NwcphtrG7otb1EX6S6Xlnd6Y7Wszit
Z07KIs9t9mR6oduftcii5tb1JAjO8rLCW+d2sx42ztDjJUING909cTIHcuK9
ZxtxWpa1DIKn7F+hyu4NaWRBxGvFzDi2riOSBtRBCaLQsQfHsshKNqdNkbUx
mB0RxHAhdPeVmyxeFnmWvHPSL7Y7h+wwTcxrvGjjjIyyHBlP1xPQVUVAaiZ2
NJsBg5TKiKrxgG5rSzJHXESVuXgDU/RAW3jAiIHh/W+YPqhkJqmKyFy+6N6w
RrexoKEQbzpDWug+WA5RSYy6N17Shdx42RSON7TFXFICsYhFbPQMBZFAt19r
U27nVoC4LqgkBeSPmbaznAK0OIWgJbTK09jF04YUwDMYo4pcpl20YS7JCKbG
+QlfgW0nqekY3/M4RVFI067KF+x7pgpGNKIzbKxzW5INnacflMBzKjlmhaSs
kTKjYUXCAy/gTXd8/5fzwMGeL/fetIy2fGwI7yyk+7sZMcLHElrf5I2GUL49
LKfx0IU9Y3LFjUzpuirYUdlD4ZVc8xgnIOHjqp3dwyH8f8WOHFAvQD+HPTfS
Rxt08RIqoAaeJwUEeqZammAuVb56FEqBhEWlBwpIO2tgncCsiBVMBT4ZpH1J
wEqO2ONW3Styuiygrc5j90Z2juSAXnYs+Xg3Oi6JNE9QDIAylG7eSVg/X4Du
TGF/9FL5KvS1N2Nl2QDRTM57tazQPOvrvUes0ASwnQBiknesQyl7tlanyfI3
QipCZCQDnQ6Fdyh6iigrVwnJJEw+yXUTDhF9cXV1geNb5XGewmSmTIfZG5ZD
1UBzdkEt8xSFA6dvIzjqukYQx3Q2aBm5l5HxS3WRKD/B/V9uMMeQGZQYfAus
ipliMQTjpccR7xXNS76+CgaJpjwuMnwQn5dmEIscPOZLOqZjaFUviHI4xRhn
rTAnslS56Wi9wMWTmMVJc7uR1USHpHZbuZEmx6gWjcY9Qpw1T97Cs94bAIkh
7KQY60X6xpzk7LZppA57BTkQWbXuuGSwMxEpEXSbFzmBKiJoTPedaiFYyHle
mBhXGMwoRk8TGTCjNQweCl5cD5vRYGppsE60hq5GwcLO4siXZtHBZecmC+UJ
oXAuukpLzbOelDyGNpYmLVBO98mHOk9By4KOEOsb9cxyv8bdVTZlFvGBw8hU
57TEHko26OPjrUKqYG8dYY76TDN+DCcD3l6Yck5k1zuCLtztwtcq4dEUk5l2
dhOgXof5PKR2J5TOnk3lcvbdiOI72Ad/FGNwdCpnC87qQFO4keLZTa57Q1OL
1EaKO4xIrDQqqNsIyREKErsMYUnKwnWehDo5BnUGdgpIPpiBSHVn6iG4RbRW
iVqdCyqxwSJZLKTiCUry0L5xDa+2BeKzq7rG5U28KaLVLL/JJsH/AwVSrpzp
vwAA

-->

</rfc>
