Internet DRAFT - draft-palmero-ivy-dmalmo
draft-palmero-ivy-dmalmo
IVY Working Group M. Palmero
Internet-Draft F. Brockners
Intended status: Standards Track Cisco Systems
Expires: 25 April 2024 S. Kumar
NC State University
C. Cardona
NTT
D. Lopez
Telefonica I+D
23 October 2023
Data Model for Asset Lifecycle Management and Operations
draft-palmero-ivy-dmalmo-00
Abstract
This document includes a data model for assets lifecycle management
and operations. The primary objective of the data model is to
measure and improve the network operators' experience along the
lifecycle journey, from technical requirements and technology
selection through renewal, including the end of life of an asset.
This model is based on the information model introduced in "Asset
Lifecycle Management and Operations: A Problem Statement" (ALMO)
[I-D.draft-palmero-opsawg-ps-almo-00] IETF draft.
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 25 April 2024.
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved.
Palmero, et al. Expires 25 April 2024 [Page 1]
Internet-Draft DMALMO October 2023
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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements language . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Data Models . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Tree Diagrams of ALMO Modules . . . . . . . . . . . . . . 7
4.2.1. Aggregated Assets Module . . . . . . . . . . . . . . 7
4.2.2. Entitlements Module . . . . . . . . . . . . . . . . . 7
4.2.3. Features Module . . . . . . . . . . . . . . . . . . . 8
4.2.4. Usage Module . . . . . . . . . . . . . . . . . . . . 9
4.2.5. Event Report Module . . . . . . . . . . . . . . . . . 10
4.2.6. Organization Module . . . . . . . . . . . . . . . . . 11
4.2.7. User Module . . . . . . . . . . . . . . . . . . . . . 11
4.3. YANG data models of ALMO Modules . . . . . . . . . . . . 12
4.3.1. ALMO Common Module . . . . . . . . . . . . . . . . . 12
4.3.2. Entitlements Module . . . . . . . . . . . . . . . . . 23
5. Deployment Considerations . . . . . . . . . . . . . . . . . . 28
6. Security Considerations . . . . . . . . . . . . . . . . . . . 29
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 29
7.2. The YANG Module Names Registry . . . . . . . . . . . . . 30
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.1. Normative References . . . . . . . . . . . . . . . . . . 31
8.2. Informative References . . . . . . . . . . . . . . . . . 32
Change log . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 33
Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41
Palmero, et al. Expires 25 April 2024 [Page 2]
Internet-Draft DMALMO October 2023
1. Introduction
The dynamicity in "where", "how" and "who" uses an asset introduces
challenges for both lifecycle and adoption management of the assets.
These challenges and the motivation to fix the problems are shown
with some examples in the companion draft "Asset Lifecycle Management
and Operations: A Problem Statement" (ALMO)
[I-D.draft-palmero-opsawg-ps-almo-00] IETF draft. Taking inspiration
from the use cases and the Information Model given in Section 5 of
the companion draft, we attempt to standardize some of the
associations (with the data attributes) between the entities in the
Information model. Please note, the data model presented in the
draft can be extended as per the expandability provided by the
Information Model using the entity Future Expansion.
1.1. Requirements language
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.
2. Terminology
The document makes use of the following terms:
* Asset: refers to hardware, software, applications, or services.
An asset can be physical or virtual. The granularity of what
constitutes an asset is deployment and implementation specific.
* Features: are options or functional capabilities offered by an
asset.
* Entitlement: Entitlement is the right to something. Entitlement
with regards to a license is the right to use a licensed asset in
accordance to the terms of the licence agreement. This could
include the right to install or remove the asset, to access
certain features or functionality and to use the asset for certain
purposes.
* Lifecycle Management and Operations (LMO) connects to:
1. Assets as a generalized entity subject to Lifecycle Management
(LCM).
2. Entitlements as the essential policy root for LCM.
Palmero, et al. Expires 25 April 2024 [Page 3]
Internet-Draft DMALMO October 2023
3. Metrics as the evidence for LCM transitions.
4. Reports (no incidents) as the way of collecting input from
users.
* Usage: refers to how an asset is being used (e.g., which features
are used).
Abbreviations:
* ALMO: Asset Lifecycle Management and Operations
* EoL: End of Life
* EoS: End of Support
* LCM: Lifecycle Management
* PID: Product Identifier
3. Motivation
The motivation behind ALMO is to address the existing gap that
network operators and business architects face in measuring and
producing data related to various issues. This includes challenges
such as unactivated entitlements, underutilized features, incident
resolution, virtualized asset lifecycle events, DevOps deployment,
and supply chain management.
By implementing ALMO, developer organizations can optimize their
features by identifying and deprecating infrequently used features.
They can also focus on widely deployed assets and improve usability
and integration. ALMO provides a structured approach for users to
provide feedback about an asset, enabling developers to assess the
impact of potential deficiencies based on user feedback.
Overall, ALMO aims to bridge the gap in data measurement and
production, helping operators and business architects improve asset
management, optimize features, and gather valuable user feedback for
continuous improvement.
DMALMO offers a common data model to implement ALMO data.
4. Data Models
Palmero, et al. Expires 25 April 2024 [Page 4]
Internet-Draft DMALMO October 2023
4.1. Overview
Based on the ALMO IETF draft, assets can be characterized by their
features, entitlements, and other attributes. Features represent the
specific capabilities or functionalities of an asset. Entitlements,
on the other hand, are related to asset usage and determine the level
of access granted to users for utilizing the features. This implies
that users have the necessary rights or licenses to use the asset and
its associated features.
Entitlements can be complex to model as they vary in coverage and
limitations. Some entitlements cover all features, while others
target specific ones. For example, advanced or additional licenses
may be required to access certain features like "MPLS-EVPN".
It is common in the industry to have tables that outline the
entitlements and the features they cover, enabling users to
understand their access based on entitlements. Some entitlements
also impose restrictions on feature usage, such as limiting the
number of users or CPUs.
The DMALMO model does not aim to provide a catalog of features and
entitlements, but rather provides an inventory with focus on
connecting features and entitlements to assets and tracking their
usage. While it is possible to have multiple usage limits, the model
may not support interrelating them. For instance, the statement
"Entitlement covers up to N CPUs if you have more than X users, if
not then M CPUs" may not be supported, but "Entitlement covers up to
N CPUs and up to X users" is supported.
The usage aspect is particularly relevant in business use cases as it
helps understand how to effectively utilize an asset. It provides
insights into asset usage and highlights the importance of tracking
it. While there may be other models addressing different aspects of
an asset's lifecycle, the usage model serves a unique purpose by
specifically focusing on practical utilization. Therefore, it is not
redundant with other models and offers valuable insights into asset
usage.
The different modules included in DMALMO are:
* Aggregated Assets Module
Palmero, et al. Expires 25 April 2024 [Page 5]
Internet-Draft DMALMO October 2023
In the context of ALMO, the Asset module represents specific entity,
that can include various elements such as hardware, software,
virtualized components, or even services. The assets module can be
linked to specific network inventory and can also augment certain
attributes that might be required for the implementation of a
specific use case.
* Entitlements Module
Entitlement module defines the level of access or permission granted
to a user or entity to utilize specific features, functionalities, or
resources associated with an asset. It represents the rights or
licenses obtained by the user that allow them to access and utilize
certain capabilities of the asset.
* Features Module
Feature module includes various attributes and relationships that
describe the characteristics, properties, and associations of the
feature within a specific context. A well-defined feature enhances
the asset's value, differentiates it from others, and meets the
requirements and expectations of users.
* Usage Module
The Usage model of a feature includes various elements that capture
information about how the feature is utilized within the asset.
As part of the ALMO future extension modules, DMALMO considers:
* Event Report Module
* Organization Module, and
* User Module
Where the Event Report module includes various components that
capture information about specific events or incidents that occur
within ALMO related entities. And the Organization and User Modules
encompass various components to capture information about users and
organizations and their relationship to assets, features and/or
entitlements.
Palmero, et al. Expires 25 April 2024 [Page 6]
Internet-Draft DMALMO October 2023
4.2. Tree Diagrams of ALMO Modules
4.2.1. Aggregated Assets Module
This specification uses [RFC9179], [RFC9472] module: ietf-almo-assets
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw role? identityref
+--rw aggregation? boolean
+--rw number-of-instances? uint32
+--rw platform-dependency-os? identityref
+--rw install-location
| +--rw geo-location
| +--rw reference-frame
| | +--rw alternate-system? string {alternate-systems}?
| | +--rw astronomical-body? string
| | +--rw geodetic-system
| | +--rw geodetic-datum? string
| | +--rw coord-accuracy? decimal64
| | +--rw height-accuracy? decimal64
| +--rw (location)?
| | +--:(ellipsoid)
| | | +--rw latitude? decimal64
| | | +--rw longitude? decimal64
| | | +--rw height? decimal64
| | +--:(cartesian)
| | +--rw x? decimal64
| | +--rw y? decimal64
| | +--rw z? decimal64
| +--rw velocity
| | +--rw v-north? decimal64
| | +--rw v-east? decimal64
| | +--rw v-up? decimal64
| +--rw timestamp? yang:date-and-time
| +--rw valid-until? yang:date-and-time
+--rw deployment-mode? identityref
+--rw activation-date? yang:date-and-time
+--rw software-version? string
+--ro hotfixes
| +--ro hostfix* []
| +--ro version? identityref
| +--ro order? uint8
+--rw software-type? string
+--rw sign-of-life-timestamp? yang:date-and-time
+--rw tags? string
4.2.2. Entitlements Module
Palmero, et al. Expires 25 April 2024 [Page 7]
Internet-Draft DMALMO October 2023
module: ietf-almo-entitlements
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw uid? string
+--rw (all-1-asset)?
| +--:(all-assets)
| | +--rw all-assets? boolean
| +--:(assets)
| +--rw assets
| +--rw asset* [almo-class id]
| +--rw almo-class -> /ietf-almo:almos/almo/almo-class
| +--rw id -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw resource* [id]
| +--rw id string
| +--rw name? string
| +--rw summary? string
| +--rw characteristic* [id]
| +--rw id string
| +--rw name? string
| +--rw description? string
| +--rw unit? string
| +--rw value? yang:counter64
| +--rw value-max? yang:counter64
+--rw features
| +--rw feature* [almo-class id]
| +--rw almo-class -> /ietf-almo:almos/almo/almo-class
| +--rw id -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw state? ietf-almo-common:entitlement-state-t
+--rw renewal-profile
+--rw activation-date? yang:date-and-time
+--rw expiration-date? yang:date-and-time
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw entitlements
+--rw almo-class? -> /ietf-almo:almos/almo/almo-class
+--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
4.2.3. Features Module
Palmero, et al. Expires 25 April 2024 [Page 8]
Internet-Draft DMALMO October 2023
module: ietf-almo-feature
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw features
+--rw feature* [almo-class id]
+--rw almo-class -> /ietf-almo:almos/almo/almo-class
+--rw id -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw name? string
+--rw summary? string
+--rw category? string
+--rw entitlement? string
+--rw first-available-version? string
+--ro backported-versions
| +--ro backported-version* []
| +--ro version? identityref
+--rw scope? identityref
+--rw config-options* [id]
| +--rw id string
| +--rw name? string
| +--rw summary? string
| +--rw characteristic* [id]
| +--rw id string
| +--rw name? string
| +--rw value? string
+--rw asset
| +--rw almo-class? -> /ietf-almo:almos/almo/almo-class
| +--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw subfeatures
+--rw subfeature* [almo-class id]
+--rw almo-class -> /ietf-almo:almos/almo/almo-class
+--rw id -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
4.2.4. Usage Module
Palmero, et al. Expires 25 April 2024 [Page 9]
Internet-Draft DMALMO October 2023
module: ietf-almo-usage
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw feature
| +--rw almo-class? -> /ietf-almo:almos/almo/almo-class
| +--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw name? string
+--rw summary? string
+--rw uri? string
+--rw deployment-mode? identityref
+--rw scope? identityref
+--rw activation-status? string
+--rw instances? uint32
+--rw count-type? identityref
+--rw timestamp? yang:date-and-time
+--rw count? uint32
+--rw frequency* [name]
| +--rw name string
| +--rw type-freq? string
| +--rw value? yang:counter64
+--rw resource-consumption* [id]
+--rw id string
+--rw name? string
+--rw summary? string
+--rw characteristic* [id]
+--rw id string
+--rw name? string
+--rw unit? string
+--rw value? yang:counter64
+--rw value-max? yang:counter64
4.2.5. Event Report Module
Palmero, et al. Expires 25 April 2024 [Page 10]
Internet-Draft DMALMO October 2023
module: ietf-almo-event-report
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw id? string
+--rw title? string
+--rw summary? string
+--rw severity? string
+--rw status? string
+--rw created? yang:date-and-time
+--rw last_updated? yang:date-and-time
+--rw capability? string
+--rw technology? string
+--rw subtechnology? string
+--rw problem-type? string
+--rw resolution? string
+--rw owner? string
+--rw support-engineer? string
+--rw asset
| +--rw almo-class? -> /ietf-almo:almos/almo/almo-class
| +--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw feature
| +--rw almo-class? -> /ietf-almo:almos/almo/almo-class
| +--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw contract-number? string
4.2.6. Organization Module
module: ietf-almo-organization
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw address? string
+--rw department? boolean
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw organization
+--rw almo-class? -> /ietf-almo:almos/almo/almo-class
+--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
4.2.7. User Module
Palmero, et al. Expires 25 April 2024 [Page 11]
Internet-Draft DMALMO October 2023
module: ietf-almo-user
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw billing-account? uint32
+--rw represents
| +--rw almo-class? -> /ietf-almo:almos/almo/almo-class
| +--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
+--rw authority? enumeration
+--rw email? string
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst:
+--rw user
+--rw almo-class? -> /ietf-almo:almos/almo/almo-class
+--rw id? -> /ietf-almo:almos/almo[ietf-almo:almo-class = current()/../almo-class]/inst/id
4.3. YANG data models of ALMO Modules
4.3.1. ALMO Common Module
<CODE BEGINS> file "ietf-almo-common@2023-10-23.yang"
module ietf-almo-common {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-almo-common";
prefix ietf-almo-common;
organization
"IETF IVY(Network Inventory YANG) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/ivy/about>
WG List: <mailto:inventory-yang@ietf.org>
Editor: Jan Lindblad
<mailto:jlindbla@cisco.com>
Editor: Marisol Palmero
<mailto:mpalmero@cisco.com>";
description
"This YANG module defines a collection of useful data types
and identity for Lifecycle Management and Operations (LMO).
Copyright (c) 2021 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 Simplified 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).
Palmero, et al. Expires 25 April 2024 [Page 12]
Internet-Draft DMALMO October 2023
This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
revision 2023-10-23 {
description
"Renamed all references from LMO to ALMO. Refer to
DMLMO draft";
reference
"RFC XXXX: ALMO YANG Model";
}
typedef entitlement-id-t {
type string;
description
"Entitlement ID Type";
}
typedef entitlement-model-t {
type enumeration {
enum perpetual {
description
"Perpetual entitlement";
}
enum subscription {
description
"Subscription entitlement";
}
enum usage-based {
description
"Usage-based entitlement";
}
enum other {
description
"Undefined entitlement type";
}
}
description
"Entitlement Model Type";
}
identity entitlement-buying-program-t {
description
"Entitlement Buying Program that contains the plan to generate
revenue for specific asset";
}
identity enterprise-agreement {
base entitlement-buying-program-t;
description
"Enterprise Agreement";
Palmero, et al. Expires 25 April 2024 [Page 13]
Internet-Draft DMALMO October 2023
}
identity managed-service-entitlement-agreement {
base entitlement-buying-program-t;
description
"Managed Service Entitlement Agreement";
}
identity service-provider-network-agreement {
base entitlement-buying-program-t;
description
"Service Provider Network Agreement";
}
identity collab-active-user {
base entitlement-buying-program-t;
description
"Collaboration Active User";
}
identity service-full-coverage {
base entitlement-buying-program-t;
description
"Service Full-Coverage";
}
identity offer-type-t {
description
"License Offer Type, part of the plan to generate revenue
for specific asset";
}
identity perpetual-software {
base offer-type-t;
description
"Perpetual softwar gives the user the right to use the
program indefinitely";
}
identity standalone-hardware {
base offer-type-t;
description
"Standalone hardware is able to function independently
of other hardware";
}
identity on-premise-software-subscription {
base offer-type-t;
description
"On-Premise software subscription, relates to a temporary
on-prem licencing model, allowing users to pay a per user
fee";
}
identity cloud-software-saas-subscription {
base offer-type-t;
description
Palmero, et al. Expires 25 April 2024 [Page 14]
Internet-Draft DMALMO October 2023
"Cloud Software (SaaS) subscription is a service busines
model where the user is entitled to use the cloud software
for a specific time period";
}
identity third-party-software {
base offer-type-t;
description
"It includes licenses, entitlements, agreements, obligations
or other commitment under which the user can use the asset
not directly sold by the manufacturer";
}
identity flex-cloud-prem-subscription {
base offer-type-t;
description
"Flex Cloud-Prem subscription allows software vendors to
limit the number of entitlements for the use of the specific
asset";
}
typedef purchase-order-t {
type string;
description
"License purchase order number";
}
typedef entitlement-state-t {
type enumeration {
enum inactive {
description
"Inactive State";
}
enum active {
description
"Active State";
}
enum unknown {
description
"Unknown State";
}
}
description
"Entitlement State Type";
}
typedef asset-id {
type string;
description
"Asset ID Type";
}
Palmero, et al. Expires 25 April 2024 [Page 15]
Internet-Draft DMALMO October 2023
typedef vendor-id {
type enumeration {
enum cisco {
description
"Vendor-id is Cisco";
}
enum other {
description
"Vendor-id is not determined";
}
}
description
"Vendor identifier";
}
identity asset-type {
description
"type of the asset: hardware, software, software cloud, ...";
}
identity hw {
base asset-type;
description
"Hardware refers to any physical device";
}
identity sw {
base asset-type;
description
"Software refers to a collection of code installed on a
hardware asset";
}
identity sw-cloud {
base asset-type;
description
"Cloud-based software, that allows users access to software
application that run on a shared computing resources via
Internet";
}
identity nfv {
base asset-type;
description
"irtual assets, as a separate type to connect with NFV practice";
}
identity phone {
base asset-type;
description
"Mobile telephone or a handheld two-way communication device
over a cellular network.";
}
Palmero, et al. Expires 25 April 2024 [Page 16]
Internet-Draft DMALMO October 2023
identity other {
base asset-type;
description
"Different or additional type not specified as part of another
defined asset-type.";
}
identity asset-subtype {
description
"subtype of the asset: router, switch, wireless,
controller, ...";
}
identity router {
base asset-subtype;
description
"Network connecting device. It operates at layer-3 of the OSI
model.";
}
identity switch {
base asset-subtype;
description
"Network connecting device. It operates at layer-2(Data Link
Layer) of the OSI model.";
}
identity wireless {
base asset-subtype;
description
"Network connecting device. It creates a wireless local area
network. It connects to a wired router, switch, or hub via an
Ethernet cable, and projects a Wi-Fi signal to a designated
area";
}
identity controller {
base asset-subtype;
description
"Centralized device in the network which is used in combination
with network connection devices, when there is a need to manage
them in large quantities.";
}
identity board {
base asset-subtype;
description
"Electronic circuit board in an asset which interconnects
another hardware assets attached to it.";
}
identity p-supply {
base asset-subtype;
description
"Power supply, as it might have independent identity.";
Palmero, et al. Expires 25 April 2024 [Page 17]
Internet-Draft DMALMO October 2023
}
identity transceiver {
base asset-subtype;
description
"Device that is both a transmitter and a receiver. Usually
it's in a single device.
This is commonly used as a modular network interface";
}
identity others {
base asset-subtype;
description
"Different or additional type not specified as part of another
defined asset-subtype. To be considered a few specific subtype
of assets related to: 3GPP, BBF, TMF, I2NSF (and security in
general), PCE, etc";
}
identity version {
description
"Base identity for all version types";
}
identity version-sw {
base version;
description
"Version release of the operating system that runs on the
asset";
}
identity platform-dependency-os {
description
"Operating system that creates an environment for the asset
to get deployed. Enum of options covering OS platform
dependency.";
}
identity linux {
base platform-dependency-os;
description
"UNIX like operating system";
}
identity windows {
base platform-dependency-os;
description
"Windows operating system";
}
identity macOS {
base platform-dependency-os;
description
"Mac operating system develop by Apple, Inc.";
}
identity darwin {
Palmero, et al. Expires 25 April 2024 [Page 18]
Internet-Draft DMALMO October 2023
base platform-dependency-os;
description
"Open-source Unix-like operating system first released by Apple
Inc.";
}
identity ubuntu {
base platform-dependency-os;
description
"Linux distribution, used in desktop distribution";
}
identity red-hat {
base platform-dependency-os;
description
"Red Hat Enterprise Linux, released in multiple server and
desktop versions";
}
// NEED to extend and include iOS, Android, etc.;
identity role {
description
"What the role of a given device/component is in the network.
This attribute normally will be configured on the specific
component during setup. This attribute normally will be
configured on the specific component during setup";
}
identity border-router {
base role;
description
"Router that provides connectivity between interior and
exterior network routers or to the cloud";
}
identity access {
base role;
description
"Router that provides access to a larger communication network
of some sort.";
}
identity control-plane {
base role;
description
"Network component that controls how data packets are
forwarded";
}
identity edge {
base role;
description
"Router that provides an entry point into enterprise or service
provider core networks";
Palmero, et al. Expires 25 April 2024 [Page 19]
Internet-Draft DMALMO October 2023
}
identity core {
base role;
description
"Component part of the high-speed backbone of the network. It
provides fast and efficient data transport, excluding 3GPP";
}
identity ran {
base role;
description
"RAN links user equipment, such as a cellphone, computer or
any remotely controlled machine, over a fiber or wireless
backhaul connection. That link goes to the core network, which
manages subscriber information, location and more.";
}
identity datacenter {
base role;
description
"Component placed in the data center, mantaining and housing
back-end IT system and data stores";
}
identity branch {
base role;
description
"Router in a remote branch of an enterprise's network";
}
identity deployment-mode {
description
"This attribute will denote the configured deployment mode
for the asset and features, if applicable; e.g.,
High Availability(HA) or Faiover cluster, virtual appliance,
etc.";
}
identity primary {
base deployment-mode;
description
"Asset or featurs that support critical applications to
minimize system downtime, to achieve high availabiilty or
failover";
}
identity secondary {
base deployment-mode;
description
"Redundant asset or feature, that is triggered when the
primary encounters performance issues, to achieve high
availability or failover";
}
Palmero, et al. Expires 25 April 2024 [Page 20]
Internet-Draft DMALMO October 2023
identity cloud {
base deployment-mode;
description
"Especially it refers to remote, distributed and shared asset
resources (i.e. data storage, computing power, etc.), which
are hooked together and meant to operate as a single
ecosystem.";
}
identity virtual-appliance {
base deployment-mode;
description
"pre-configured virtual machine image, ready to run on a
hypervisor";
}
identity container {
base deployment-mode;
description
"Standard unit of software that packages up code and all its
dependencies so the application runs quickly and reliably from
one computing environment to another";
}
identity undeployed {
base deployment-mode;
description
"it refers to an asset that is undeployed";
}
identity metric-type {
description
"Specify the different type of metrics, i.e accumulated-count,
average-count, last-count, high-water mark count, low-water
mark count" ;
}
identity accumulated {
base metric-type;
description
"monotonically increasing counters. They're useful for
aggregating metric information such as the number of hits
on a web page, how many users log into a portal, etc.";
}
identity average {
base metric-type;
description
"typical value in a set of metrics, in particular the mean,
which is calculated by dividing the sum of the values in the
set by their number.";
}
Palmero, et al. Expires 25 April 2024 [Page 21]
Internet-Draft DMALMO October 2023
identity last {
base metric-type;
description
"Last value measured and collected for specific metric.";
}
identity high-water-mark {
base metric-type;
description
"Highest level of value in a set of metrics.";
}
identity low-water-mark {
base metric-type;
description
"Lowest level of value in a set of metrics.";
}
identity feature-scope {
description
"Optional tag that could apply to any usage feature, so that
if there are multiple dimensions of reporting that need to
be accommodated (i.e., report feature usage by 'site')";
}
identity site {
base feature-scope;
description
"Single location, part of the network";
}
identity network {
base feature-scope;
description
"scope limited to the networking assets";
}
typedef feature-usage-type {
type enumeration {
enum none {
description
"No Usage";
}
enum low {
description
"Usage meeting the Low Threshold";
}
enum medium {
description
"Usage meeting the Medium Threshold";
}
enum high {
description
"Usage meeting the High Threshold";
Palmero, et al. Expires 25 April 2024 [Page 22]
Internet-Draft DMALMO October 2023
}
// NEED to elaborate more on this list, based on use case
// validation
}
description
"feature usage % 0-25-50-75-100";
}
identity almo-class {
description "Base identity for classes of LMOs";
}
<CODE ENDS>
4.3.2. Entitlements Module
<CODE BEGINS> file "ietf-almo-entitlements@2023-10-23.yang"
module ietf-almo-entitlements {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-almo-entitlements";
prefix ietf-almo-entitlements;
import ietf-yang-types {
prefix yang;
}
import ietf-almo-common {
prefix ietf-almo-common;
}
import ietf-almo {
prefix ietf-almo;
}
import ietf-almo-assets {
prefix ietf-almo-asset;
}
import ietf-almo-feature {
prefix ietf-almo-feature;
}
organization
"IETF IVY(Network Inventory YANG) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/ivy/about>
WG List: <mailto:inventory-yang@ietf.org>
Editor: Marisol Palmero
<mailto:mpalmero@cisco.com>
Editor: Josh Suhr
<mailto:josuhr@cisco.com>
Editor: Sudhendu Kumar
<mailto:skumar23@ncsu.edu>";
description
"This YANG module includes the entitlement attributes of a
Palmero, et al. Expires 25 April 2024 [Page 23]
Internet-Draft DMALMO October 2023
product.
Copyright (c) 2021 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 Simplified 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
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
revision 2023-10-23 {
description
"Renamed all references from LMO to ALMO. Refer to
DMLMO draft";
reference
"RFC XXXX: ALMO YANG Model";
}
// Can we capture entitlement ties to API access where we may be
// entitled on events queries per second, minute, hour, etc.
// This is a popular model in the cloud space for example the Google
// MAPs API??
identity entitlement {
base ietf-almo-common:almo-class;
description "A entitlement is a class of ALMO that represents how
the asset(s) or feature(s) can be leveraged and what is required
in cases the asset(s) or feature(s) are changed.";
}
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst {
when "derived-from-or-self(../ietf-almo:almo-class, "+
" 'ietf-almo-entitlements:entitlement')";
description
"entitlements container includes attributes for entitlements";
leaf uid {
type string;
description
"Unique Entitlement Identifier";
}
choice all-1-asset{
description
Palmero, et al. Expires 25 April 2024 [Page 24]
Internet-Draft DMALMO October 2023
"Considering entitlement is linked to all or explicitely a
one/few assets";
leaf all-assets {
type boolean;
default false;
description
"Entitlement apply to all assets; e.g., false (default) or
true";
}
container assets {
description
"Assets to which this entitlement are attached";
list asset {
key "almo-class id";
description
"list of assests";
leaf almo-class {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo/ietf-almo:almo-class";
}
must "derived-from-or-self(current(), "+
" 'ietf-almo-asset:asset')";
description
"Asset class to which this entitlement is attached";
}
leaf id {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo[ietf-almo:almo-class "+
" = current()/../almo-class]/ietf-almo:inst/ietf-almo:id";
}
description
"Asset to which this entitlement is attached";
}
}
}
}
list resource {
key "id";
description
"Resource profile";
leaf id {
type string;
description
"Identify resource for entitlement consumption metric";
}
leaf name {
type string;
description
Palmero, et al. Expires 25 April 2024 [Page 25]
Internet-Draft DMALMO October 2023
"Friendly name of the resource";
}
leaf summary {
type string;
description
"Brief description of the resource";
}
list characteristic {
key "id";
description
"Characteristic of resource consumption, i.e.,
number of cpu's, limit BW.";
leaf id {
type string;
description
"Identifier for resource consumption characteristic";
}
leaf name {
type string;
description
"Friendly name for resource consumption
characteristic";
}
leaf description {
type string;
description
"Description for resource consumption
characteristic";
}
leaf unit {
type string;
description
"unit of measurement for the characteristic";
}
// NEED to define identity type for unit: min, hour, sec,
// days, ...
leaf value {
type yang:counter64;
description
"Resource consumption characteristic measurement";
}
leaf value-max {
type yang:counter64;
description
"Maximum resource consumption characteristic value";
}
Palmero, et al. Expires 25 April 2024 [Page 26]
Internet-Draft DMALMO October 2023
}
}
container features {
description
"Features to which this entitlement are attached";
list feature {
key "almo-class id";
description
"list of features";
leaf almo-class {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo/ietf-almo:almo-class";
}
must "derived-from-or-self(current(), "+
" 'ietf-almo-feature:feature')";
description
"feature to which this entitlement is attached";
}
leaf id {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo[ietf-almo:almo-class = "+
" current()/../almo-class]/ietf-almo:inst/ietf-almo:id";
}
description
"Feature to which this entitlement is attached";
}
}
}
leaf state {
type ietf-almo-common:entitlement-state-t;
description
"Entitlement state; e.g., active, inactive, or unknown";
}
container renewal-profile {
description
"Profile of entitlement renewal status and information";
leaf activation-date {
type yang:date-and-time;
description
"Activation Date";
}
leaf expiration-date {
type yang:date-and-time;
description
"Expiration Date";
}
}
}
Palmero, et al. Expires 25 April 2024 [Page 27]
Internet-Draft DMALMO October 2023
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst {
when "derived-from-or-self(../ietf-almo:almo-class, "+
" 'ietf-almo-asset:asset')";
description
"assets attributes related to entitlements";
container entitlements {
description
"entitlement attributes";
leaf almo-class {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo/ietf-almo:almo-class";
}
must "derived-from-or-self(current(), "+
" 'ietf-almo-entitlements:entitlement')";
description
"Asset class to which this entitlement is attached";
}
leaf id {
type leafref {
path "/ietf-almo:almos/ietf-almo:almo[ietf-almo:almo-class = "+
" current()/../almo-class]/ietf-almo:inst/ietf-almo:id";
}
description
"Asset to which this entitlement is attached";
}
}
//Fill more leafs for entitlement if required...
}
<CODE ENDS>
5. Deployment Considerations
ALMO Data Models defines the data schemas for ALMO data. ALMO Data
Models are based on YANG. YANG data models can be used independent
of the transport and can be converted into any encoding format
supported by the network configuration protocol. YANG is a protocol
independent.
To enable the exchange of ALMO data among all interested parties,
deployment considerations that are out of the scope of this document,
will need to include:
* The data structure to describe all metrics and quantify relevant
data consistently, i.e. specific formats like XML or JSON encoded
message would be deemed valid or invalid based on ALMO models.
Palmero, et al. Expires 25 April 2024 [Page 28]
Internet-Draft DMALMO October 2023
* The process to share and collect ALMO data across the consumers
consistently, including the transport mechanism. The ALMO YANG
models can be used with network management protocols such as
NETCONF [RFC6241], RESTCONF [RFC8040], streaming telemetry, etc.
OpenAPI specification might also help to consume ALMO metrics.
* How the configuration of assets should be done.
6. Security Considerations
The security considerations mentioned in section 17 of [RFC7950]
apply.
LMO brings several security and privacy implications because of the
various components and attributes of the information model. For
example, each functional component can be tampered with to give
manipulated data. ALMO when used alone or with other relevant data,
can identify an individual, revealing Personal Identifiable
Information (PII). Misconfigurations can lead to data being accessed
by unauthorized entities.
Methods exist to secure the communication of management information.
The transport entity of the functional model MUST implement methods
for secure transport. This document also contains an Information
model and Data-Model in which none of the objects defined are
writable. If the objects are deemed sensitive in a particular
environment, access to them MUST be restricted using appropriately
configured security and access control rights. The information model
contains several optional elements which can be enabled or disabled
for the sake of privacy and security. Proper authentication and
audit trail MUST be included for all the users/processes that access
ALMO data.
7. IANA Considerations
7.1. The IETF XML Registry
This document registers URIs in the IETF XML registry [RFC3688].
Following the format in [RFC3688], the registrations defined below
are requested:
URI: urn:ietf:params:xml:ns:yang:ietf-almo
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-common
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
Palmero, et al. Expires 25 April 2024 [Page 29]
Internet-Draft DMALMO October 2023
URI: urn:ietf:params:xml:ns:yang:ietf-almo-assets
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-entitlements
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-feature
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-usage
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-event-report
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-organization
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-almo-user
Registrant Contact: The OPSA WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
7.2. The YANG Module Names Registry
This document registers YANG modules in the YANG Module Names
registry [RFC7950]. Following the format in [RFC7950], the
registrations defined below are requested:
name: ietf-almo
namespace: urn:ietf:params:xml:ns:yang:ietf-almo
maintained by IANA: N
prefix: ietf-almo
reference: RFC XXXX
name: ietf-almo-common
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-common
maintained by IANA: N
prefix: ietf-almo-common
reference: RFC XXXX
Palmero, et al. Expires 25 April 2024 [Page 30]
Internet-Draft DMALMO October 2023
name: ietf-almo-assets
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-assets
maintained by IANA: N
prefix: ietf-almo-asset
reference: RFC XXXX
name: ietf-almo-entitlements
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-entitlements
maintained by IANA: N
prefix: ietf-almo-entitlements
reference: RFC XXXX
name: ietf-almo-feature
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-feature
maintained by IANA: N
prefix: ietf-almo-feature
reference: RFC XXXX
name: ietf-almo-usage
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-usage
maintained by IANA: N
prefix: ietf-almo-usage
reference: RFC XXXX
name: ietf-almo-event-report
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-event-report
maintained by IANA: N
prefix: ietf-almo-event
reference: RFC XXXX
name: ietf-almo-organization
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-organization
maintained by IANA: N
prefix: ietf-almo-organization
reference: RFC XXXX
name: ietf-almo-user
namespace: urn:ietf:params:xml:ns:yang:ietf-almo-user
maintained by IANA: N
prefix: ietf-almo-user
reference: RFC XXXX
8. References
8.1. Normative References
Palmero, et al. Expires 25 April 2024 [Page 31]
Internet-Draft DMALMO October 2023
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
8.2. Informative References
[I-D.draft-palmero-opsawg-ps-almo-00]
Palmero, M., Brockners, F., Kumar, S., Cardona, C., and D.
Lopez, "Asset Lifecycle Management and Operations, Problem
Statement", Work in Progress, Internet-Draft, draft-
palmero-opsawg-ps-almo-00, 29 June 2023,
<https://datatracker.ietf.org/doc/html/draft-palmero-
opsawg-ps-almo-00>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/rfc/rfc3688>.
[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,
<https://www.rfc-editor.org/rfc/rfc6241>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/rfc/rfc7950>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/rfc/rfc8040>.
[RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N.,
Ananthakrishnan, H., and X. Liu, "A YANG Data Model for
Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March
2018, <https://www.rfc-editor.org/rfc/rfc8345>.
[RFC9179] Hopps, C., "A YANG Grouping for Geographic Locations",
RFC 9179, DOI 10.17487/RFC9179, February 2022,
<https://www.rfc-editor.org/rfc/rfc9179>.
Palmero, et al. Expires 25 April 2024 [Page 32]
Internet-Draft DMALMO October 2023
[RFC9472] Lear, E. and S. Rose, "A YANG Data Model for Reporting
Software Bills of Materials (SBOMs) and Vulnerability
Information", RFC 9472, DOI 10.17487/RFC9472, October
2023, <https://www.rfc-editor.org/rfc/rfc9472>.
Change log
RFC Editor Note: This section is to be removed during the final
publication of the document.
version 00
* Initial version of DMALMO, based on ALMO version 01 and DMLMO
version 10.
Acknowledgments
Jan Lindblad has provided invaluable insights, experience and
validation of the design.
This document was created by meaningful contributions from Josh Suhr,
Eric Vyncke, Yannis Viniotis, Nagendra Kumar Nainar, Yenu Gobena, and
Dhiren Tailor.
The authors wish to thank Gonzalo Salgueiro, Martin Beverley, Mohamed
Boucadair, Ignacio Dominguez Martinez, and many others for their
helpful comments and suggestions.
Appendix A
Hardware network inventory is described as part of network topology
which is defined in [RFC8345], it has been explored in several IETF
work as it might need an extension for some of the use cases that
need to consume inventory information. This is the case for ALMO and
DMALMO, as assets are defined as hardware, software or even service
instances.
This section summarizes and provides an example with the changes to
make DMALMO compatible to any future changes that will come as part
of the current inventory discussions and decisions.
DMLMO version -09 provided the approach to make DMALMO independent
from the network inventory discussions, providing a way to consume
any inventory management module(s). Version -09 contains changes to
accommodate ietf-almo-assets, to any other inventory module that
might be required.
Palmero, et al. Expires 25 April 2024 [Page 33]
Internet-Draft DMALMO October 2023
The following example considers iana-hardware and ietf-network-
inventory YANG modules as inventory YANG modules to consider. It
could include others, i.e., openconfig-platform.
<CODE BEGINS> file "iana-hardware@.yang"
module iana-hardware {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
prefix ianahw;
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States of America
Tel: +1 310 301 5800
E-Mail: iana@iana.org>";
description
"IANA-defined identities for hardware class.
The latest revision of this YANG module can be obtained from
the IANA website.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2018 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 Simplified 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).
The initial version of this YANG module is part of RFC 8348;
see the RFC itself for full legal notices.";
reference
"https://www.iana.org/assignments/yang-parameters";
revision 2018-03-13 {
Palmero, et al. Expires 25 April 2024 [Page 34]
Internet-Draft DMALMO October 2023
description
"Initial revision.";
reference
"RFC 8348: A YANG Data Model for Hardware Management";
}
/*
* Identities
*/
identity hardware-class {
description
"This identity is the base for all hardware class
identifiers.";
}
identity unknown {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is unknown
to the server.";
}
identity chassis {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is an
overall container for networking equipment. Any class of
physical component, except a stack, may be contained within a
chassis; a chassis may only be contained within a stack.";
}
identity backplane {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of device for aggregating and forwarding networking traffic,
such as a shared backplane in a modular ethernet switch. Note
that an implementation may model a backplane as a single
physical component, which is actually implemented as multiple
discrete physical components (within a chassis or stack).";
}
identity container {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is capable
of containing one or more removable physical entities,
Palmero, et al. Expires 25 April 2024 [Page 35]
Internet-Draft DMALMO October 2023
possibly of different types. For example, each (empty or
full) slot in a chassis will be modeled as a container. Note
that all removable physical components should be modeled
within a container component, such as field-replaceable
modules, fans, or power supplies. Note that all known
containers should be modeled by the agent, including empty
containers.";
}
identity power-supply {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is a
power-supplying component.";
}
identity fan {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is a fan or
other heat-reduction component.";
}
identity sensor {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of sensor, such as a temperature sensor within a router
chassis.";
}
identity module {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of self-contained sub-system. If a module component is
removable, then it should be modeled within a container
component; otherwise, it should be modeled directly within
another physical component (e.g., a chassis or another
module).";
}
identity port {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of networking port capable of receiving and/or transmitting
Palmero, et al. Expires 25 April 2024 [Page 36]
Internet-Draft DMALMO October 2023
networking traffic.";
}
identity stack {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of super-container (possibly virtual) intended to group
together multiple chassis entities. A stack may be realized
by a virtual cable, a real interconnect cable attached to
multiple chassis, or multiple interconnect cables. A stack
should not be modeled within any other physical components,
but a stack may be contained within another stack. Only
chassis components should be contained within a stack.";
}
identity cpu {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of central processing unit.";
}
identity energy-object {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of energy object, i.e., it is a piece of equipment that is
part of or attached to a communications network that is
monitored, it is controlled, or it aids in the management of
another device for Energy Management.";
}
identity battery {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of battery.";
}
identity storage-drive {
base ianahw:hardware-class;
description
"This identity is applicable if the hardware class is some sort
of component with data storage capability as its main
functionality, e.g., hard disk drive (HDD), solid-state device
(SSD), solid-state hybrid drive (SSHD), object storage device
(OSD), or other.";
Palmero, et al. Expires 25 April 2024 [Page 37]
Internet-Draft DMALMO October 2023
}
<CODE ENDS>
The YANG modules ietf-almo-example-mapping-ietf-network-inventory and
ietf-almo-example-mapping-openconfig-platform make the import of the
inventory module(s) and augment the ietf-almo-assets YANG module to
include inventory attributes to the asset identity.
For this practice, ietf-almo-assets.yang, removes vendor, name,
description, pid, serial-number, vid, mac-address, ip-address,
entity-name, product-description, udi, transparency-info as these and
similar properties are expected to be managed using other inventory
mechanism.
This process requires to include a mapping YANG module per imported
inventory YANG module.
Module ietf-almo-example-mapping-ietf-network-inventory, makes the
mapping between ietf-network-inventory and ietf-almo-assets,
augmenting asset identity:
<CODE BEGINS>
file "ietf-almo-example-mapping-ietf-network-inventory@2023-10-23.yang"
module ietf-almo-example-mapping-ietf-network-inventory {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-almo-example-mapping-ietf-network-inventory";
prefix ietf-almo-example-map-ietf;
import ietf-almo-common {
prefix ietf-almo-common;
}
import ietf-almo {
prefix ietf-almo;
}
import ietf-almo-assets {
prefix ietf-almo-asset;
}
import ietf-network-inventory {
prefix ni;
}
organization
"IETF IVY(Network Inventory YANG) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/ivy/about>
WG List: <mailto:inventory-yang@ietf.org>
Editor: Jan Lindblad
<mailto:jlindbla@cisco.com>
Editor: Marisol Palmero
Palmero, et al. Expires 25 April 2024 [Page 38]
Internet-Draft DMALMO October 2023
<mailto:mpalmero@cisco.com>";
description
"This YANG module maps the IETF LMO asset concept to the
IETF network inventory framework.
Copyright (c) 2021 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 Simplified 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
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.";
revision 2023-10-23 {
description
"Renamed all references from LMO to ALMO. Refer to
DMLMO draft";
reference
"RFC XXXX: ALMO YANG Model";
}
augment /ietf-almo:almos/ietf-almo:almo/ietf-almo:inst {
when "derived-from-or-self(../ietf-almo:almo-class,'ietf-almo-asset:asset')";
choice mapping-type {
// config true;
description
"mapping type description";
case network-element {
leaf network-element-ref {
type leafref {
path "/ni:network-inventory/ni:network-elements/"
+ "ni:network-element/ni:uuid";
description
"network element reference description";
}
}
}
case component {
leaf component-network-element-ref {
Palmero, et al. Expires 25 April 2024 [Page 39]
Internet-Draft DMALMO October 2023
type leafref {
path "/ni:network-inventory/ni:network-elements/"
+ "ni:network-element/ni:uuid";
description
"component network element reference description";
}
leaf component-ref {
type leafref {
path "/ni:network-inventory/ni:network-elements/"
+ "ni:network-element"
+ "[ni:uuid = current()/../network-element-ref]/"
+ "ni:components/ni:component/ni:uuid";
description
"component reference description";
}
}
}
case rack {
leaf rack-equipment-room-ref {
type leafref {
path "/ni:network-inventory/ni:equipment-rooms/"
+ "ni:equipment-room/ni:uuid";
description
"rack equipment room reference description";
}
}
leaf rack-ref {
type leafref {
path "/ni:network-inventory/ni:equipment-rooms/"
+ "ni:equipment-room"
+ "[ni:uuid = current()/../rack-equipment-room-ref]/"
+ "ni:racks/ni:rack/ni:uuid";
description
"rack reference description";
}
}
}
}
description
"This adds a reference from LMO instances of class 'asset'
to the IETF network inventory tree.";
}
<CODE ENDS>
Palmero, et al. Expires 25 April 2024 [Page 40]
Internet-Draft DMALMO October 2023
Once compilation is applied to the YANG modules, the following
configuration, considers network element "router2" as a hardware
network element, which is described under network-inventory YANG
module:
network-inventory network-elements network-element 22222 name router2
hardware-rev 1.1 software-rev 17.1 mfg-name cisco serial-number
AF123456 product-name ASR1k components component fan part-number
678678 components component psu part-number 654321
"router2" asset identity is augmented including attributes from ietf-
network-inventory(i.e. rack-equipment-room-ref, rack-ref, network-
element-ref, etc) and any other imported YANG module, i.e.
openconfig-platform inventory YANG modules, with oc-component-ref.
almo0(config)#almos almo asset inst router2 ? Possible completions:
activation-date age aggregation capture-info component-network-
element-ref
component-ref ietf-almo-asset:deployment-mode ietf-almo-
feature:features install-location interfaces licenses network-
element-ref number-of-instances oc-component-ref parent
platform-dependency-os rack-equipment-room-ref rack-ref role sign-of-
life-timestamp
software-type software-version tags
Changes in future versions of DMALMO, might require one unique import
statement in the mapping YANG module, from another inventory YANG
module.
Authors' Addresses
Marisol Palmero
Cisco Systems
Email: mpalmero@cisco.com
Frank Brockners
Cisco Systems
Email: fbrockne@cisco.com
Sudhendu Kumar
NC State University
Email: skumar23@ncsu.edu
Camilo Cardona
NTT
Palmero, et al. Expires 25 April 2024 [Page 41]
Internet-Draft DMALMO October 2023
Email: camilo@ntt.net
Diego Lopez
Telefonica I+D
Email: diego.r.lopez@telefonica.com
Palmero, et al. Expires 25 April 2024 [Page 42]