Internet-Draft | Network Inventory YANG | November 2024 |
Yu, et al. | Expires 9 May 2025 | [Page] |
This document defines a base YANG data model for network inventory. The scope of this base model is set to be application- and technology-agnostic. However, the data model is designed with appropriate provisions to ease future augmentations with application-specific and technology-specific details.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at 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 https://datatracker.ietf.org/doc/draft-ietf-ivy-network-inventory-yang/.¶
Source for this draft and an issue tracker can be found at https://github.com/ietf-ivy-wg/network-inventory-yang.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 9 May 2025.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This document defines 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.¶
Network inventory is a fundamental functional block in the overall network management which was specified many years ago. Network inventory management is a critical part for ensuring that the network remains healthy (e.g., auditing to identify faulty elements), well-planned (e.g., identify assets to upgrade or to decommission), and maintained appropriately to meet the performance objectives. Also, network inventory management allows operators to keep track of which devices are deployed in their networks, including relevant embedded software and hardware versions.¶
Exposing standards interfaces to retrieve and query network elements capabilities as recorded in an inventory are key enablers for many applications that consume network inventory data. From that standpoint and given the emergence of standard data models and their deployment by operators, the conventional function of inventory management is also required to be defined as a data model.¶
For example, [I-D.ietf-teas-actn-poi-applicability] identifies a gap about the lack of a YANG data model that could be used at Abstraction and Control of TE Networks (ACTN) Multi-Domain Service Coordinator-Provisioning Network Controller Interface (MPI) level to report whole or partial network hardware inventory information available at domain controller level towards upper layer systems (e.g., Multi-Domain Service Coordinator (MDSC) or Operations Support Systems (OSS) layers).¶
It is key for operators to coordinate with the industry towards the use of a standard YANG data model for Network Inventory data instead of using vendors proprietary APIs.¶
[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 towards the network elements rather than at the northbound interface of a network controller (e.g., toward an application or another hierarchical network controller). However, the YANG data model defined in [RFC8348] has been used as a reference for defining the YANG network inventory data model presented in this document.¶
Network Inventory is a collection of data for network devices and their components managed by a specific management system. Per the definition of [RFC8969], the network inventory model is a network model.¶
This document defines one YANG module "ietf-network-inventory" in Section 6. This base data model is technology-agnostic (that is, valid for IP/MPLS, optical, and microwave networks in particular) and can be augmented to include required technology-specific inventory details together with specific hardware or software component's attributes.¶
The YANG data model defined in the document is scoped to cover the common requirements for both hardware and software (but with base functions) use cases for Network Inventory.¶
Section 4 provides a set of augmentation considerations for future extensions of hardware, software, entitlement, and inventory topology mapping.¶
The YANG data model defined in this document conforms to the Network Management Datastore Architecture [RFC8342].¶
Note to the RFC Editor: This section is to be removed prior to publication.¶
This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed.¶
Please apply the following replacements:¶
XXXX --> the assigned RFC number for this I-D¶
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The following terms are defined in [RFC7950] and are not redefined here:¶
The following terms are defined in [RFC6241] and are not redefined here:¶
The terminology for describing YANG data models is found in [RFC7950].¶
TBD: Recap the concept of chassis/slot/component/board/... in [TMF_SD2-20].¶
Also, the document makes use of the following terms:¶
A collection of data for network devices and their components managed by a specific management system.¶
A manageable network entity that contains hardware and software units (e.g., a network device installed on one or several chassis).¶
A holder of the device installation.¶
A holder of the board.¶
A unit of the network element, e.g., hardware components (chassis, card, port, etc.), software components (software-patch, bios, etc.), and boot-loader.¶
A pluggable equipment can be inserted into one or several slots (or sub-slots) and can afford a specific transmission function independently.¶
An interface on a board.¶
A hardware component class that is capable of containing one or more removable physical entities (e.g., a slot in a chassis is containing a board).¶
The meanings of the symbols in the YANG tree diagrams are defined in [RFC8340].¶
Table 1 list the prefixes of the modules that are used in this document.¶
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.¶
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.¶
The component definition is also generalized to support any types of component, such as hardware, software, or firmware.¶
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.¶
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 [I-D.wzwb-ivy-network-inventory-software].¶
In [RFC8348], rack, chassis, slot, sub-slot, board and port are defined as components of network elements with generic attributes.¶
While [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.¶
However, the YANG data model defined in [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 [RFC8348] to retrieve the hardware from the network elements under its control.¶
+--rw network-elements +--rw network-element* [ne-id] +--rw ne-id string ............................................ +--rw components +--rw component* [component-id] +--rw component-id string ......................................¶
For all the inventory objects, there are some common attributes existing. Such as:¶
Identifier: here we suggest to use uuid format which is widely implemented with systems. It is guaranteed to be globally unique.¶
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.¶
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.¶
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.¶
+--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 ...................................¶
To be consistent with the component definition, some of the attributes defined in [RFC8348] for components are reused for network elements. These attributes include:¶
+--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 ...................................¶
Note: Not all the attributes defined in [RFC8348] are applicable for network element. And there could also be some missing attributes which are not recognized by [RFC8348]. More extensions could be introduced in later revisions after the missing attributes are fully discussed.¶
The YANG data model for network inventory mainly follows the same approach of [RFC8348] and reports the network hardware inventory as a list of components with different types (e.g., chassis, module, port).¶
The component definition is generalized to both hardware components and non-hardware components (e.g., software components).¶
+--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¶
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.¶
Based on TMF classification in [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.¶
The relationship between typical inventory objects in a physical network element can be described by Figure 1 below:¶
The "iana-hardware" module [IANA_YANG] defines YANG identities for the hardware component types in the IANA-maintained "IANA-ENTITY-MIB" registry.¶
Some of the definitions taken from [RFC8348] are actually based on the ENTITY-MIB [RFC6933].¶
For the additional attributes of specific hardware, such as CPU, storage, port, power supply is defined in the hardware extension.¶
This document defines "software-rev" of NEs and components, which are basic software attributes of a Network Element.¶
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.¶
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 [I-D.wzwb-ivy-network-inventory-software].¶
We re-defined some attributes listed in [RFC8348], based on some integration experience for network wide inventory data.¶
[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.¶
+--ro components +--ro component* [component-id] ................................... +--ro parent-component-references | +--ro component-reference* [index] | +--ro index uint8 | +--ro class? -> ../../../class | +--ro uuid? -> ../../../uuid ...................................¶
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.¶
According to the management requirements from operators, some important attributes are not defined in [RFC8348]. These attributes could be component-specific and are not suitable to be defined under the component list node. Instead, they can be defined by augmenting the component-specific info container for the 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 [I-D.wzwb-ivy-network-inventory-software] and are out of the scope of this model.¶
+--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¶
According to the description in [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.¶
+--ro components +--ro component* [component-id] ................................... +--ro part-number? string ...................................¶
There are some use cases where the name of the components are assigned and changed by the operator. In these cases, the assigned names are also not guaranteed to be always unique.¶
In order to support these use cases, this model is not aligned with [RFC8348] in defining the component name as the key for the component list.¶
Instead the name is defined as an optional attribute and the component-id is defined as the key for the component list (in alignment with the approach followed for the network-element list).¶
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.¶
+-------------------------+ | | | Base Network Inventory | | | +------------+------------+ | +------------------+-------------------+ | | | +------V------+ +------V------ +------V------ +-------------+ | | | | | | | | | Hardware | | Software | | | | Inventory | | Extensions | | Extensions | | Entitlement | | Topology | | e.g. Power | | e.g. | | | | Mapping | | supply unit | | SW patch | | | | | +-------------+ +-------------+ +-------------+ +-------------+¶
Figure 2 below shows the tree diagram of the YANG data model defined in module "ietf-network-inventory" (Section 6).¶
<Add any manageability considerations>¶
<Add any security considerations>¶
<Add any IANA considerations>¶
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.¶
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 [RFC8348]. Since we have also reused the component concept of [RFC8348] in our inventory data model, we can compare the component's attributes between "openconfig-platform" and our model directly , which is stated below:¶
Attributes in oc-platform | Attributes in our model | remark |
---|---|---|
name | name | |
type | class | |
id | uuid | |
location | location | |
description | description | |
mfg-name | mfg-name | |
mfg-date | mfg-date | |
hardware-version | hardware-rev | |
firmware-version | firmware-rev | |
software-version | software-rev | |
serial-no | serial-num | |
part-no | part-number | |
clei-code | TBD | |
removable | is-fru | |
oper-status | state data | |
empty | contained-child? | If there is no contained child, it is empty. |
parent | parent-references | |
redundant-role | TBD | |
last-switchover-reason | state data | |
last-switchover-time | state data | |
last-reboot-reason | state data | |
last-reboot-time | state data | |
switchover-ready | state data | |
temperature | performance data | |
memory | performance data | |
allocated-power | TBD | |
used-power | TBD | |
pcie | alarm data | |
properties | TBD | |
subcomponents | contained-child | |
chassis | chassis-specific-info | |
port | port-specific-info | |
power-supply | TBD | |
fan | Fan is considered as a specific board. And no need to define as a single component | |
fabric | TBD | |
storage | For Optical and IP technology, no need to manage storage on network element | |
cpu | For Optical and IP technology, no need to manage CPU on network element | |
integrated-circuit | board-specific-info | |
backplane | Backplane is considered as a part of board. And no need to define as a single component | |
software-module | TBD | |
controller-card | Controller card is considered as a specific functional board. And no need to define as a single component |
As it mentioned in Section 3.3 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.¶
Mostly, our inventory data model can cover the attributes from OpenConfig.¶
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.¶
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 & OSS/MDSC processing, which may result in efficiency/scalability limitations in large scale networks.¶
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.¶
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.¶
The authors of this document would like to thank the authors of [I-D.ietf-teas-actn-poi-applicability] for having identified the gap and requirements to trigger this work.¶
This document was prepared using kramdown.¶