IVY Working Group xxx Internet-Draft Intended status: Standards Track yyy Expires: 15 March 2024 12 September 2023 A YANG Data Model for Network Inventory draft-xxx-ivy-network-inventory-yang-00 Abstract This document defines a YANG data model for network inventory data information. The YANG data model presented in this document is intended to be used as the core network inventory model that could be augmented, when required, to include some technology-specific (e.g., optical, IP) inventory details. The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA). Status of This Memo 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 15 March 2024. Copyright Notice Copyright (c) 2023 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 xxx & yyy Expires 15 March 2024 [Page 1] Internet-Draft Network Inventory YANG September 2023 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. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology and Notations . . . . . . . . . . . . . . . . 4 1.2. Requirements Notation . . . . . . . . . . . . . . . . . . 5 1.3. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 5 1.4. Prefix in Data Node Names . . . . . . . . . . . . . . . . 5 2. YANG Data Model for Network Inventory . . . . . . . . . . . . 6 2.1. YANG Model Overview . . . . . . . . . . . . . . . . . . . 6 2.1.1. Network Element . . . . . . . . . . . . . . . . . . . 8 2.1.2. Hardware Components of Network Element . . . . . . . 9 2.1.3. Software Components of Network Element . . . . . . . 9 2.1.4. Other Components Extensions . . . . . . . . . . . . . 9 2.1.5. Common Design for All Inventory Objects . . . . . . . 11 2.1.6. Licenses . . . . . . . . . . . . . . . . . . . . . . 11 2.2. Efficiency Issue . . . . . . . . . . . . . . . . . . . . 11 3. YANG Data Model for Network Element Location . . . . . . . . 12 3.1. Site . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2. Equipment Room . . . . . . . . . . . . . . . . . . . . . 13 3.3. Rack . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4. Network Inventory Tree Diagram . . . . . . . . . . . . . . . 15 5. Network Element Location Tree Diagram . . . . . . . . . . . . 16 6. YANG Data Model for Network Inventory . . . . . . . . . . . . 17 7. YANG Data Model for Network Element Location . . . . . . . . 31 8. Manageability Considerations . . . . . . . . . . . . . . . . 36 9. Security Considerations . . . . . . . . . . . . . . . . . . . 36 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 11.1. Normative References . . . . . . . . . . . . . . . . . . 36 11.2. Informative References . . . . . . . . . . . . . . . . . 37 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 37 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 1. Introduction The network inventory provides information about manageable devices, hardware components, software components, and optional licenses for IP, optical, and microwave networks. A device can be a physical device or a virtual device. Network inventory management is a key component in operators' OSS architectures. xxx & yyy Expires 15 March 2024 [Page 2] Internet-Draft Network Inventory YANG September 2023 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. 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 devices are deployed in the network including relevant software and hardware versions. 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. In [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). 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). The intention is to define a generic YANG 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. For example, enterprise networks can extend WiFi Service Set Identifier (SSID) information. [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, [RFC8348] defines only the hardware component information of network elements, and the software component information needs to be added. Being based on [RFC8348] and additional software and license information, this data model should be a good starting point toward a generic data model and applicable to any technology. This document defines a YANG module: "ietf-network-inventory", defined in Figure 5 . xxx & yyy Expires 15 March 2024 [Page 3] Internet-Draft Network Inventory YANG September 2023 The YANG data models defined in this document conform to the Network Management Datastore Architecture [RFC8342] . 1.1. Terminology and Notations The following terms are defined in [RFC7950] and are not redefined here: * client * server * augment * data model * data node The following terms are defined in [RFC6241] and are not redefined here: * configuration data * state data The terminology for describing YANG data models is found in [RFC7950] . Following terms are used for the representation of the hierarchies in the network inventory. Network Element: represents either a physical or virtual device. Component: represents a hardware or a software unit of a network element, hardware components including chassis, slot, sub-slot, board and port, and software components including bios, boot-loader, or software-patch, etc. Chassis: a holder of the device installation. Slot: xxx & yyy Expires 15 March 2024 [Page 4] Internet-Draft Network Inventory YANG September 2023 a holder of the board. Board/Card: a pluggable equipment can be inserted into one or several slots/ sub-slots and can afford a specific transmission function independently. Port: an interface on board Rack: a holder of the device and provides power supply for the device in it. 1.2. Requirements Notation 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. 1.3. Tree Diagram A simplified graphical representation of the data model is used in this document. The meaning of the symbols in this diagram is defined in [RFC8340] . 1.4. Prefix in Data Node Names 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. xxx & yyy Expires 15 March 2024 [Page 5] Internet-Draft Network Inventory YANG September 2023 +========+========================+=============+ | Prefix | Yang Module | Reference | +========+========================+=============+ | inet | ietf-inet-types | [RFC6991] | +--------+------------------------+-------------+ | yang | ietf-yang-types | [RFC6991] | +--------+------------------------+-------------+ | ianahw | iana-hardware | [IANA_YANG] | +--------+------------------------+-------------+ | ni | ietf-network-inventory | RFC XXXX | +--------+------------------------+-------------+ Table 1: Prefixes and corresponding YANG modules RFC Editor Note: Please replace XXXX with the RFC number assigned to this document. Please remove this note. 2. YANG Data Model for Network Inventory 2.1. YANG Model Overview Logically, the relationship between these inventory objects can be described by Figure 1 below: xxx & yyy Expires 15 March 2024 [Page 6] Internet-Draft Network Inventory YANG September 2023 +-----------------+ |network inventory| +-----------------+ || || 1:M \/ +-----------------+ | | | network element | | | +-----------------+ || || || 1:M ||________________________ 1:M||----------------------|| || || || || \/ \/ +-------------+ +-------------+ | hardware | | software | | components | | components | +-------------+ +-------------+ || \/ +-------------+ | chassis/ |---+ | sub-chassis |<--| +-------------+ || ______1:N______||_____1:M_______ ||------------------ ---------|| \/ \/ +--------------+ +-----------+ +---| slot | | board | |-->| /sub-slot | | | +--------------+ +-----------+ || ||1:N \/ +-----------+ | port | +-----------+ Figure 1: Relationship between inventory objects xxx & yyy Expires 15 March 2024 [Page 7] Internet-Draft Network Inventory YANG September 2023 Apart from the components defined in [RFC8348] , such as rack, chassis, slot, sub-slot, board and port, the Network Inventory YANG data also adds software components, such as bios, boot-loader, or software-patch. 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 network inventory information that a controller discovers from all the network elements under its control. Note: review in future versions of this document whether to re-use definitions from [RFC8348] or use schema-mount. +--ro network-inventory +--ro network-elements +--ro network-element* [uuid] +--ro uuid yang:uuid ................................... +--ro components +--ro component* [uuid] +--ro uuid yang:uuid ................................... 2.1.1. Network Element We consider that some of the attributes defined in [RFC8348] for components are also applicable for network element. These attributes include: +--ro network-elements +--ro network-element* [uuid] ................................... +--ro hardware-rev? string +--ro software-rev? string +--ro mfg-name? string +--ro mfg-date? yang:date-and-time +--ro part-number? string +--ro serial-number? string +--ro 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. xxx & yyy Expires 15 March 2024 [Page 8] Internet-Draft Network Inventory YANG September 2023 2.1.2. Hardware Components of Network Element The hardware components of network element mainly follows the same approach of [RFC8348] and reports the network inventory as a list of hardware with different types (e.g., chassis, module, port). +--ro components +--ro component* [uuid] +--ro uuid yang:uuid +--ro name? string +--ro description? string +--ro class? identityref +--ro contained-child* -> ../uuid +--ro hardware-rev? string +--ro firmware-rev? string +--ro software-rev? string +--ro serial-num? string +--ro mfg-name? string +--ro asset-id? string +--ro is-fru? boolean +--ro mfg-date? yang:date-and-time +--ro uri* inet:uri Some of the definitions taken from [RFC8348] are actually based on the ENTITY-MIB [RFC6933] . We re-defined some attributes listed in [RFC8348] , based on some integration experience for network wide inventory data. 2.1.3. Software Components of Network Element In addition to the general 'software-rev' defined in network elements/devices and hardware components, software components support inventorys of different software classes, such as platform software, BIOS, bootloader, and software patch information. The software and hardware components share the same attributes of the component. "class" defines both hardware and software component types, which are extended on [RFC8348]. 2.1.4. Other Components Extensions xxx & yyy Expires 15 March 2024 [Page 9] Internet-Draft Network Inventory YANG September 2023 2.1.4.1. Component-Specific Info Design 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 define under the component list node. So, we defined a choice-case structure for this component-specific extension, as follows: +--ro components +--ro component* [uuid] ................................... +--ro (component-class)? +--:(chassis) | +--ro chassis-specific-info +--:(container) | +--ro slot-specific-info +--:(module) | +--ro board-specific-info +--:(port) +--ro port-specific-info ................................... Note: The detail of each *-specific-info YANG container is still under discussion, and the leaf attributes will be defined in future. 2.1.4.2. New Parent Identifiers' Reference [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* [uuid] ................................... +--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. xxx & yyy Expires 15 March 2024 [Page 10] Internet-Draft Network Inventory YANG September 2023 2.1.4.3. Part Number 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* [uuid] ................................... +--ro part-number? string ................................... 2.1.5. Common Design for All Inventory Objects 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. Location: location is a common management requirement of operators. This location could be an absolute position (e.g. mailing address), or a relative position (e.g. port index). Different types of inventory objects may require different types of position. 2.1.6. Licenses "licenses" refers to the licenses of network elements or the components of the network elements. 2.2. Efficiency Issue 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. xxx & yyy Expires 15 March 2024 [Page 11] Internet-Draft Network Inventory YANG September 2023 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. 3. YANG Data Model for Network Element Location Network elements can be grouped by location. The location could be outdoors or indoors, and the indoor location may be represented as a floor, room, shelf, or similar organizational unit. Outdoor locations can be walls, poles, or other mount places. Locations can be nested to form a hierarchy. For example, floors can be within a site and rooms in a floor. xxx & yyy Expires 15 March 2024 [Page 12] Internet-Draft Network Inventory YANG September 2023 3.1. Site A site represents a geographic location to group a set of network elements and corresponding inventory information. Devices, racks, or equipment rooms can be grouped within a site. Each site must have a unique name. 3.2. Equipment Room Usually the information about equipment rooms is not detectable by domain controller and configured manually. Sometimes, this information is not configured in the domain controller but directly in the Operators' owned OSS and therefore reporting information about the equipment rooms is optional when implementing this data model. Another scenario to analyze is when racks are not located in any equipment room: one possible solution is that the domain controller provides a "default" equipment room that contains all these racks. Note: add some more attributes about equipment room in the future. 3.3. Rack Likewise for equipment rooms, usually the information about the rack is not detectable by domain controller and configured manually. Therefore reporting information about the racks is optional when implementing this data model. Besides the common attributes mentioned in above section, rack could have some specific attributes, such as appearance-related attributes and electricity-related attributes. The height, depth and width are described by the figure below (please consider that the door of the rack is facing the user): xxx & yyy Expires 15 March 2024 [Page 13] Internet-Draft Network Inventory YANG September 2023 ---------------- --- /| /| | / | / | | / | / | | ----|-----------| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | height | | | | | | | | | | | | | | | | | Door Q | | | | | Q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | /-----------|---- --- | / | / / | / | / depth |/ | / / ----------------- --- |______width____| | | Figure 2: height, width and depth of rack The rack attributes include: +--ro racks +--ro rack* [uuid] ................................... +--ro height? uint16 +--ro width? uint16 +--ro depth? uint16 +--ro max-voltage? uint16 ................................... Max-voltage: the maximum voltage supported by the rack. xxx & yyy Expires 15 March 2024 [Page 14] Internet-Draft Network Inventory YANG September 2023 4. Network Inventory Tree Diagram Figure 3 below shows the tree diagram of the YANG data model defined in module "ietf-network-inventory" ( Figure 5 ). module: ietf-network-inventory +--ro network-inventory +--ro network-elements | +--ro network-element* [uuid] | +--ro uuid yang:uuid | +--ro name? string | +--ro description? string | +--ro alias? string | +--ro ne-location | | +--ro site-ref? uint32 | | +--ro equipment-room-ref* string | +--ro is-virtual? boolean | +--ro hardware-rev? string | +--ro software-rev? string | +--ro mfg-name? string | +--ro mfg-date? yang:date-and-time | +--ro part-number? string | +--ro serial-number? string | +--ro product-name? string | +--ro license-ref* string | +--ro components | +--ro component* [uuid] | +--ro uuid yang:uuid | +--ro name? string | +--ro description? string | +--ro alias? string | +--ro location? string | +--ro class? union | +--ro contained-child* -> ../uuid | +--ro parent-rel-pos? int32 | +--ro parent-component-references | | +--ro component-reference* [index] | | +--ro index uint8 | | +--ro class? -> ../../../class | | +--ro uuid? -> ../../../uuid | +--ro hardware-rev? string | +--ro firmware-rev? string | +--ro software-rev? string | +--ro serial-num? string | +--ro mfg-name? string | +--ro part-number? string | +--ro asset-id? string | +--ro is-fru? boolean xxx & yyy Expires 15 March 2024 [Page 15] Internet-Draft Network Inventory YANG September 2023 | +--ro mfg-date? | | yang:date-and-time | +--ro uri* inet:uri | +--ro license-ref* string | +--ro (component-class)? | +--:(chassis) | | +--ro chassis-specific-info | +--:(container) | | +--ro slot-specific-info | +--:(module) | | +--ro board-specific-info | +--:(port) | +--ro port-specific-info +--ro licenses +--ro license* [license-id] +--ro license-id string +--ro license-type? string +--ro mfg-name? string +--ro serial-number? string +--ro license-data? union +--ro active? boolean +--ro issue-date? uint64 +--ro expiration-date? uint64 +--ro in-use? boolean +--ro expired? boolean +--ro valid? boolean +--ro network-elements-ref* string +--ro ne-components-ref* string Figure 3: Network inventory tree diagram 5. Network Element Location Tree Diagram Figure 4 below shows the tree diagram of the YANG data model defined in module "ietf-network-element-location" ( Figure 6 ). xxx & yyy Expires 15 March 2024 [Page 16] Internet-Draft Network Inventory YANG September 2023 module: ietf-network-element-location +--ro ne-locations +--ro sites | +--ro site* [uuid] | +--ro uuid yang:uuid | +--ro name? string | +--ro description? string | +--ro alias? string | +--ro parent-site-id? uint32 | +--ro geo-location? string +--ro equipment-rooms +--ro equipment-room* [uuid] +--ro uuid yang:uuid +--ro name? string +--ro description? string +--ro alias? string +--ro site-id? uint32 +--ro location? string +--ro racks +--ro rack* [uuid] +--ro uuid yang:uuid +--ro name? string +--ro description? string +--ro alias? string +--ro rack-location | +--ro equipment-room-name? leafref | +--ro row-number? uint32 | +--ro column-number? uint32 +--ro height? uint16 +--ro width? uint16 +--ro depth? uint16 +--ro max-voltage? uint16 +--ro contained-chassis* [ne-ref component-ref] +--ro ne-ref leafref +--ro component-ref leafref +--ro relative-position? uint8 Figure 4: Network Element Location tree diagram 6. YANG Data Model for Network Inventory The network inventory model imports the following module(s): [RFC6991], [RFC8348]. xxx & yyy Expires 15 March 2024 [Page 17] Internet-Draft Network Inventory YANG September 2023 file "ietf-network-inventory@2023-08-28.yang" module ietf-network-inventory { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-network-inventory"; prefix nwi; import ietf-yang-types { prefix yang; reference "RFC6991: Common YANG Data Types."; } import iana-hardware { prefix ianahw; reference "RFC 8348: A YANG Data Model for Hardware Management. https://www.iana.org/assignments/yang-parameters"; } import ietf-inet-types { prefix inet; reference "RFC6991: Common YANG Data Types."; } organization "IETF Network Inventory YANG (ivy) Working Group"; contact "WG Web: WG List: Editor: xxx Editor: yyy"; description "This YANG module defines a 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 xxx & yyy Expires 15 March 2024 [Page 18] Internet-Draft Network Inventory YANG September 2023 the RFC itself for full legal notices. The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; revision 2023-08-28 { description "Initial version"; reference "RFC XXXX: A YANG Data Model for Network Inventory."; } identity shelf { base ianahw:hardware-class; description "This identity is applicable if the hardware class is rack size container for networking equipment. Any class of physical component, except a stack, may be contained within a shelf; a shelf may only be contained within a stack."; } identity software-component { description "Base identity for software components in a managed device."; } identity operating-system { base software-component; description "OS software type."; } identity operating-system-patch { base software-component; description "An operating system update - which should be a subcomponent of the `operating-system` running on a component. A patch is defined to be a set of software changes that are atomically installed (and uninstalled) together. "; } identity bios { base software-component; description "Legacy BIOS or UEFI firmware interface responsible for xxx & yyy Expires 15 March 2024 [Page 19] Internet-Draft Network Inventory YANG September 2023 initializing hardware components and first stage boot loader."; } identity boot-loader { base software-component; description "Software layer responsible for loading and booting the device OS or network OS."; } identity software-module { base software-component; description "A base identity for software modules installed and/or running on the device. Modules include user-space programs and kernel modules that provide specific functionality. A component with type SOFTWARE_MODULE should also have a module type that indicates the specific type of software module"; } 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; 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"; } xxx & yyy Expires 15 March 2024 [Page 20] Internet-Draft Network Inventory YANG September 2023 leaf alias { type string; description "a alias name of inventory objects. This alias name can be specified by network manager."; } } grouping network-elements-grouping { description "The attributes of the network elements."; container network-elements { description "The container for the list of network elements."; list network-element { key "uuid"; description "The list of network elements within the network."; uses common-entity-attributes; container ne-location { description "The location information of this network element."; leaf site-ref { type uint32; description "The site reference in which the device is located. The reference path will be updated when the location model is finalized."; } leaf-list equipment-room-ref { type string; description "The reference of equipment rooms where the NE is located. Please note that a NE could be located in several equipment rooms. And the reference path will be updated when the location model is finalized."; } } uses ne-specific-info-grouping; uses components-grouping; } } } grouping ne-specific-info-grouping { description "Attributes applicable to network elements."; xxx & yyy Expires 15 March 2024 [Page 21] Internet-Draft Network Inventory YANG September 2023 leaf is-virtual { type boolean; default "false"; config false; description "Set to 'true' if the node is virtual. Set to 'false' if the node is physical."; } leaf hardware-rev { type string; description "The vendor-specific hardware revision string for the NE."; } leaf software-rev { type string; description "The vendor-specific software revision string for the NE."; } leaf mfg-name { type string; description "The name of the manufacturer of this NE"; } leaf mfg-date { type yang:date-and-time; description "The date of manufacturing of the NE."; } leaf part-number { type string; description "The vendor-specific model name identifier string associated with this NE. The preferred value is the customer-visible part number, which may be printed on the NE itself."; } leaf serial-number { type string; description "The vendor-specific serial number string for the NE"; } leaf product-name { type string; description "indicates the vendor-spefic device type infomation."; } leaf-list license-ref { type string; description xxx & yyy Expires 15 March 2024 [Page 22] Internet-Draft Network Inventory YANG September 2023 "License ID references. A string that identifies the license. "; } } grouping components-grouping { description "The attributes of the hardware components."; container components { description "The container for the list of components."; list component { key "uuid"; description "The list of components within a network element."; uses common-entity-attributes; leaf location { type string; description "A relative location information of this component. In optical transport network, the location string is using the following pattern: '/ne=[/r=][/sh= [/s_sh= ...]][[/sl= [/s_sl= ...]][/p= ?]]' "; } leaf class { type union { type identityref { base ianahw:hardware-class; } type identityref { base software-component; } } config false; description "Type of component as identified by the device or the component"; reference "RFC 8348: A YANG Data Model for Hardware Management."; } leaf-list contained-child { type leafref { path "../nwi:uuid"; } description xxx & yyy Expires 15 March 2024 [Page 23] Internet-Draft Network Inventory YANG September 2023 "The list of the identifiers of the child components physically contained within this component."; } leaf parent-rel-pos { type int32 { range "0 .. 2147483647"; } 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-references { description "The top level container for the list of the identifiers of the parents of this component in a hierarchy."; list component-reference { key "index"; description "The list of the identifiers of the parents of this component in a hierarchy. The index parameter defines the hierarchy: the topmost parent has an index of 0."; leaf index { type uint8; description "The index of the parent with respect to the hierarchy."; } leaf class { type leafref { path "../../../nwi:class"; } description "Class of the hierarchial parent component."; } leaf uuid { type leafref { path "../../../nwi:uuid"; } description "The identifier of the parent's component in the hierarchy."; } xxx & yyy Expires 15 March 2024 [Page 24] Internet-Draft Network Inventory YANG September 2023 } } leaf hardware-rev { type string; 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; description "The vendor-specific firmware revision string for the component."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalFirmwareRev"; } leaf software-rev { type string; description "The vendor-specific software revision string for the component."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalSoftwareRev"; } leaf serial-num { type string; description "The vendor-specific serial number string for the component. The preferred value is the serial number string actually printed on the component itself (if present)."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum"; } leaf mfg-name { type string; 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). xxx & yyy Expires 15 March 2024 [Page 25] Internet-Draft Network Inventory YANG September 2023 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; description "The vendor-specific model name identifier string associated with this physical component. The preferred value is the customer-visible part number, which may be printed on the component itself. If the model 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) - entPhysicalModelName"; } leaf asset-id { type string; 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; 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 xxx & yyy Expires 15 March 2024 [Page 26] Internet-Draft Network Inventory YANG September 2023 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; description "The date of manufacturing of the managed component."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate"; } leaf-list uri { type inet:uri; description "This node contains identification information about the component."; reference "RFC 6933: Entity MIB (Version 4) - entPhysicalUris"; } leaf-list license-ref { type string; description "License ID references. A string that identifies the license. "; } uses component-specific-info-grouping; } } } grouping component-specific-info-grouping { description "In case if there are some missing attributes of component not defined by RFC8348. These attributes could be component-specific. Here we provide a extension structure for all the components we recognized. We will enrich these component specifc containers in the future."; choice component-class { description "This extension differs between different component classes."; case chassis { when "./class = 'ianahw:chassis'"; container chassis-specific-info { description xxx & yyy Expires 15 March 2024 [Page 27] Internet-Draft Network Inventory YANG September 2023 "This container contains some attributes belong to chassis only."; uses chassis-specific-info-grouping; } } case container { when "./class = 'ianahw:container'"; container slot-specific-info { description "This container contains some attributes belong to slot or sub-slot only."; uses slot-specific-info-grouping; } } case module { when "./nwi:class = 'ianahw:module'"; container board-specific-info { description "This container contains some attributes belong to board only."; uses board-specific-info-grouping; } } case port { when "./nwi:class = 'ianahw:port'"; container port-specific-info { description "This container contains some attributes belong to port only."; uses port-specific-info-grouping; } } //TO BE ADDED: transceiver } } grouping licenses { description "Grouping for licenses."; container licenses { config false; description "Container for list of licenses"; list license { key "license-id"; description "List of licenses."; leaf license-id { xxx & yyy Expires 15 March 2024 [Page 28] Internet-Draft Network Inventory YANG September 2023 type string; description "License ID. A string that uniquelly identifies the license. "; } leaf license-type { type string; description "The license type."; } leaf mfg-name { type string; description "The name of the manufacturer of this license"; } leaf serial-number { type string; description "The vendor-specific serial number string for the NE"; } leaf license-data { type union { type binary; type string; } description "The contents of the licence (if required) ."; } leaf active { type boolean; default "false"; description "The activation state of the license."; } leaf issue-date { type uint64; description "The date and time at which the license was issued."; } leaf expiration-date { type uint64; description "The date and time at which the license will expire."; } leaf in-use { type boolean; description "The license is in use."; xxx & yyy Expires 15 March 2024 [Page 29] Internet-Draft Network Inventory YANG September 2023 } leaf expired { type boolean; description "The license has expired."; } leaf valid { type boolean; description "The license is valid. Can be activated in the system or platform."; } leaf-list network-elements-ref { type string; description "The list of the the references of network elements."; } leaf-list ne-components-ref { type string; description "The list of the references of the components."; } } } } 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."; xxx & yyy Expires 15 March 2024 [Page 30] Internet-Draft Network Inventory YANG September 2023 } container network-inventory { config false; description "The top-level container for the network inventory information."; uses network-elements-grouping; uses licenses; } } Figure 5: Network Inventory YANG module 7. YANG Data Model for Network Element Location The network inventory model imports the following module(s): [RFC6991] . file "ietf-network-element-location@2023-08-28.yang" module ietf-network-element-location { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-network-element-location"; prefix nel; import ietf-network-inventory { prefix nwi; reference "RFCXXXX: A YANG Data Model for Network Inventory"; } organization "IETF Network Inventory YANG (ivy) Working Group"; contact "WG Web: WG List: Editor: xxx Editor: yyy"; description "This YANG module defines a model for retrieving Network Element (NE) location. The model fully conforms to the Network Management Datastore Architecture (NMDA). xxx & yyy Expires 15 March 2024 [Page 31] Internet-Draft Network Inventory YANG September 2023 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."; revision 2023-09-12 { description "Initial version"; reference "RFC XXXX: A YANG Data Model for Network Element (NE) location."; //RFC Editor: replace XXXX with actual RFC number, update date //information and remove this note } grouping sites-grouping { description "The attributes of the sites."; container sites { description "The container for the list of sites."; list site { key "uuid"; description "The list of sites within the network."; uses nwi:common-entity-attributes; leaf parent-site-id { type uint32; description "The parent site, if there is any."; } leaf geo-location { type string; description "A geographic address for a site."; xxx & yyy Expires 15 March 2024 [Page 32] Internet-Draft Network Inventory YANG September 2023 } } } } grouping equipment-rooms-grouping { description "The attributes of the equipment rooms."; container equipment-rooms { description "The container for the list of equipment rooms."; list equipment-room { key "uuid"; description "The list of equipment rooms within the network."; uses nwi:common-entity-attributes; leaf site-id { type uint32; description "The site to which the equipment room is assigned."; } leaf location { type string; description "compared with the location information of the other inventory objects, a GIS address is preferred for equipment room"; } container racks { description "Top level container for the list of racks."; list rack { key "uuid"; description "The list of racks within an equipment room."; uses nwi:common-entity-attributes; uses rack-specific-info-grouping; list contained-chassis { key "ne-ref component-ref"; description "The list of chassis within a rack."; leaf ne-ref { type leafref { path "/nwi:network-inventory" + "/nwi:network-elements/nwi:network-element" + "/nwi:uuid"; } xxx & yyy Expires 15 March 2024 [Page 33] Internet-Draft Network Inventory YANG September 2023 description "The reference to the network element containing the chassis component."; } leaf component-ref { type leafref { path "/nwi:network-inventory" + "/nwi:network-elements/nwi:network-element" + "[nwi:uuid=current()/../ne-ref]/nwi:components" + "/nwi:component/nwi:uuid"; } description "The reference to the chassis component within the network element and contained by the rack."; } leaf relative-position { type uint8; description "A relative position of chassis within the rack"; } } } } } } } grouping rack-specific-info-grouping { description "Attributes applicable to racks only."; container rack-location { description "The location information of the rack, which comprises the name of the equipment room, row number, and column number."; leaf equipment-room-name { type leafref { path "/nel:ne-locations/nel:equipment-rooms" + "/nel:equipment-room/nel:name"; } description "Name of equipment room where this rack is located."; } leaf row-number { type uint32; description "Identifies the row within the equipment room where xxx & yyy Expires 15 March 2024 [Page 34] Internet-Draft Network Inventory YANG September 2023 the rack is located."; } leaf column-number { type uint32; description "Identifies the physical location of the rack within the column."; } } leaf height { type uint16; units "millimeter"; description "Rack height."; } leaf width { type uint16; units "millimeter"; description "Rack width."; } leaf depth { type uint16; units "millimeter"; description "Rack depth."; } leaf max-voltage { type uint16; units "volt"; description "The maximum voltage could be supported by the rack."; } } container ne-locations { config false; description "The top-level container for the NE location information."; uses sites-grouping; uses equipment-rooms-grouping; } } Figure 6: Network Element Location YANG Module xxx & yyy Expires 15 March 2024 [Page 35] Internet-Draft Network Inventory YANG September 2023 8. Manageability Considerations 9. Security Considerations 10. IANA Considerations 11. References 11.1. Normative References [IANA_YANG] IANA, "YANG Parameters", n.d., . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, . [RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. Chandramouli, "Entity MIB (Version 4)", RFC 6933, DOI 10.17487/RFC6933, May 2013, . [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, . [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . xxx & yyy Expires 15 March 2024 [Page 36] Internet-Draft Network Inventory YANG September 2023 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, . [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, . [RFC8348] Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A YANG Data Model for Hardware Management", RFC 8348, DOI 10.17487/RFC8348, March 2018, . 11.2. Informative References [I-D.ietf-teas-actn-poi-applicability] Peruzzini, F., Bouquier, J., Busi, I., King, D., and D. Ceccarelli, "Applicability of Abstraction and Control of Traffic Engineered Networks (ACTN) to Packet Optical Integration (POI)", Work in Progress, Internet-Draft, draft-ietf-teas-actn-poi-applicability-08, 11 January 2023, . Acknowledgments 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. Authors' Addresses xxx yyy xxx & yyy Expires 15 March 2024 [Page 37]