draft-ietf-opsawg-collected-data-manifest-02.txt   draft-ietf-opsawg-collected-data-manifest-03.txt 
OPSAWG B. Claise OPSAWG B. Claise
Internet-Draft J. Quilbeuf Internet-Draft J. Quilbeuf
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Expires: April 25, 2024 D. Lopez Expires: September 2, 2024 D. Lopez
I. Dominguez I. Dominguez
Telefonica I+D Telefonica I+D
T. Graf T. Graf
Swisscom Swisscom
October 23, 2023 March 1, 2024
A Data Manifest for Contextualized Telemetry Data A Data Manifest for Contextualized Telemetry Data
draft-ietf-opsawg-collected-data-manifest-02 draft-ietf-opsawg-collected-data-manifest-03
Abstract Abstract
Network elements use Model-driven Telemetry, and in particular YANG- Network platforms use Model-driven Telemetry, and in particular YANG-
Push, to continuously stream information, including both counters and Push, to continuously stream information, including both counters and
state information. This document documents the metadata that ensure state information. This document documents the metadata that ensure
that the collected data can be interpreted correctly. This document that the collected data can be interpreted correctly. This document
specifies the Data Manifest, composed of two YANG data models (the specifies the Data Manifest, composed of two YANG data models (the
Platform Manifest and the Data Collection Manifest). The Data Platform Manifest and the Data Collection Manifest). These YANG
modules are specified at the network (i.e. controller) level to
provide a model that encompasses several network platforms. The Data
Manifest must be streamed and stored along with the data, up to the Manifest must be streamed and stored along with the data, up to the
collection and analytics system in order to keep the collected data collection and analytics system in order to keep the collected data
fully exploitable by the data scientists. fully exploitable by the data scientists.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 25, 2024. This Internet-Draft will expire on September 2, 2024.
Copyright Notice Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1. Network Analytics . . . . . . . . . . . . . . . . . . 4 1.1.1. Network Analytics . . . . . . . . . . . . . . . . . . 4
1.1.2. New Device Onboarding . . . . . . . . . . . . . . . . 5 1.1.2. New Device Onboarding . . . . . . . . . . . . . . . . 5
1.1.3. Data Mesh Principles in Networking . . . . . . . . . 5 1.1.3. Data Mesh Principles in Networking . . . . . . . . . 5
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Platform Manifest . . . . . . . . . . . . . . . . . . . . . . 6 3. Platform Manifest . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Overview of the Model . . . . . . . . . . . . . . . . . . 6 3.1. Overview of the Model . . . . . . . . . . . . . . . . . . 6
3.2. YANG module ietf-platform-manifest . . . . . . . . . . . 8 3.2. YANG module ietf-platform-manifest . . . . . . . . . . . 8
4. Data Collection Manifest . . . . . . . . . . . . . . . . . . 14 4. Data Collection Manifest . . . . . . . . . . . . . . . . . . 14
4.1. Overview of the Model . . . . . . . . . . . . . . . . . . 14 4.1. Overview of the Model . . . . . . . . . . . . . . . . . . 14
4.2. YANG module ietf-data-collection-manifest . . . . . . . . 16 4.2. YANG module ietf-data-collection-manifest . . . . . . . . 16
5. Data Manifest and the Collected Data . . . . . . . . . . . . 22 5. Data Manifest and the Collected Data . . . . . . . . . . . . 23
5.1. Collecting the Data Manifest . . . . . . . . . . . . . . 23 5.1. Collecting the Data Manifest . . . . . . . . . . . . . . 23
5.2. Mapping Collected Data to the Data Manifest . . . . . . . 24 5.2. Mapping Collected Data to the Data Manifest . . . . . . . 24
5.3. Operational Considerations . . . . . . . . . . . . . . . 24 5.3. Operational Considerations . . . . . . . . . . . . . . . 24
6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7. Security Considerations . . . . . . . . . . . . . . . . . . . 27 7. Security Considerations . . . . . . . . . . . . . . . . . . . 27
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27
10. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 27 10. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 27
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
11.1. Normative References . . . . . . . . . . . . . . . . . . 28 11.1. Normative References . . . . . . . . . . . . . . . . . . 28
11.2. Informative References . . . . . . . . . . . . . . . . . 29 11.2. Informative References . . . . . . . . . . . . . . . . . 29
Appendix A. Example of use based on MDT . . . . . . . . . . . . 30 Appendix A. Example of use based on MDT . . . . . . . . . . . . 30
Appendix B. Changes between revisions . . . . . . . . . . . . . 32 Appendix B. Changes between revisions . . . . . . . . . . . . . 33
Appendix C. YANG module ietf-yang-push-modif . . . . . . . . . . 34 Appendix C. YANG module ietf-yang-push-modif . . . . . . . . . . 35
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 50 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 52
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 51 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52
1. Introduction 1. Introduction
Network elements use Model-driven Telemetry (MDT), and in particular Network platforms use Model-driven Telemetry (MDT), and in particular
YANG-Push [RFC8641], to continuously stream information, including YANG-Push [RFC8641], to continuously stream information, including
both counters and state information. both counters and state information.
This document specifies what needs to be kept as metadata (i.e., the This document specifies what needs to be kept as metadata (i.e., the
Data Manifest) to ensure that the collected data can still be Data Manifest) to ensure that the collected data can still be
interpreted correctly throughout the collection and network analytics interpreted correctly throughout the collection and network analytics
toolchain. When streaming YANG-structured data with YANG-Push toolchain. When streaming YANG-structured data with YANG-Push
[RFC8641], there is a semantic definition in the corresponding YANG [RFC8641], there is a semantic definition in the corresponding YANG
module definition. This is the semantic information for the module definition. This is the semantic information for the
collected objects: While this semantic is absolutely required to collected data nodes: While this semantic is absolutely required to
correctly decode and interpret the data, understanding the network correctly decode and interpret the data, understanding the network
element and collection environment contexts information is equally platform and collection environment contexts information is equally
important to interpret the data. important to interpret the data.
This document proposes the Data Manifest, which is composed of two This document proposes the Data Manifest, which is composed of two
YANG data models, namely, the Platform Manifest and the Data YANG data models, namely, the Platform Manifest and the Data
Collection Manifest, in order to keep the collected data exploitable Collection Manifest, in order to keep the collected data exploitable
by the data scientists. by the data scientists.
The Platform Manifest contains information characterizing the The Platform Manifest contains information characterizing the
platform streaming the telemetry information, while the the Data platform streaming the telemetry information, while the the Data
Collection Manifest contains the required information to characterize Collection Manifest contains the required information to characterize
how and when the telemetry information was metered. how and when the telemetry information was metered.
The two proposed YANG modules in the Data Manifest do not expose many The two proposed YANG modules in the Data Manifest do not expose many
new information but rather define what should be exposed by a new information but rather define what should be exposed by a
platform streaming telemetry. Some related YANG modules have been platform streaming or storing telemetry data. Some related YANG
specified to retrieve the platform capabilities: modules have been specified to retrieve the platform capabilities:
o The IETF YANG Library [RFC8525]. o The IETF YANG Library [RFC8525].
o YANG Modules Describing Capabilities for Systems and Datastore o YANG Modules Describing Capabilities for Systems and Datastore
Update Notifications [RFC9196] for the platform capabilities Update Notifications [RFC9196] for the platform capabilities
regarding the production and export of telemetry data. regarding the production and export of telemetry data.
o [I-D.claise-netconf-metadata-for-collection], which is based on o [I-D.claise-netconf-metadata-for-collection], which is based on
the previous draft to define the optimal settings to stream the previous draft to define the optimal settings to stream
specific items (i.e., per path). specific items (i.e., per path).
skipping to change at page 3, line 47 skipping to change at page 4, line 4
o [I-D.claise-netconf-metadata-for-collection], which is based on o [I-D.claise-netconf-metadata-for-collection], which is based on
the previous draft to define the optimal settings to stream the previous draft to define the optimal settings to stream
specific items (i.e., per path). specific items (i.e., per path).
These related YANG modules are important to discover the capabilities These related YANG modules are important to discover the capabilities
before applying the telemetry configuration (such as on-change). before applying the telemetry configuration (such as on-change).
Some of their content is part of the context for the streamed data. Some of their content is part of the context for the streamed data.
We first present the module for the Platform Manifest in Section 3 We first present the module for the Platform Manifest in Section 3
and then the module for the Data Collection Manifest in Section 4. and then the module for the Data Collection Manifest in Section 4.
The full Data Manifest is obtained by combining these two modules. The full Data Manifest is obtained by combining these two modules.
We explain in Section 5 how the Data Manifest can be retrieved and We explain in Section 5 how the Data Manifest can be retrieved and
how collected data is mapped to the Data Manifest. how collected data is mapped to the Data Manifest.
1.1. Use Cases 1.1. Use Cases
1.1.1. Network Analytics 1.1.1. Network Analytics
Streamed information from network elements is used for network Streamed information from network platforms is used for network
analytics, incident detections, and in the end closed-loop analytics, incident detections, and in the end closed-loop
automation. This streamed data can be stored in a database automation. This streamed data can be stored in a database
(sometimes called a big data lake) for further analysis. (sometimes called a big data lake) for further analysis.
As an example, a database could store a time series representing the As an example, a database could store a time series representing the
evolution of a specific counter collected from a network element. evolution of a specific counter collected from a network platform.
When analyzing the data, the network operator/data scientist must When analyzing the data, the network operator/data scientist must
understand the context information for these data: understand the context information for these data:
o This object definition in the YANG model. o This counter definition in the YANG model.
o The network element specific vendor, platform, and OS. o The network platform specific vendor, model, and OS.
o The collection parameters. o The collection parameters.
Characterizing the source used for producing the data (vendor, Characterizing the source used for producing the data (vendor,
platform, and OS) is useful to complement the data. As an example, platform, and OS) is useful to complement the data. As an example,
knowing the exact data source software specification might reveal a knowing the exact data source software specification might reveal a
particularity in the observed data, explained by a specific bug, a particularity in the observed data, explained by a specific bug, a
specific bug fix, or simply a particular specific behavior. This is specific bug fix, or simply a particular specific behavior. This is
also necessary to ensure the reliability of the collected data. On also necessary to ensure the reliability of the collected data. On
top of that, in particular for YANG-Push [RFC8641], it is crucial to top of that, in particular for YANG-Push [RFC8641], it is crucial to
know the set of YANG modules supported by the platform, along with know the set of YANG modules supported by the platform, along with
their deviations. In some cases, there might even be some backwards their deviations. In some cases, there might even be some backwards
incompatible changes in native modules between one OS version to the incompatible changes in native modules between one OS version to the
next one. This information is captured by the proposed Platform next one. This information is captured by the proposed Platform
Manifest. Manifest.
From a collection parameters point of view, the data scientists From a collection parameters point of view, the data scientists
analyzing the collected data must know that the counter was requested analyzing the collected data must know that the counter was requested
from the network element as on-change or at specific cadence. from the network platform as on-change or at specific cadence.
Indeed, an on-change collection explains why there is a single value Indeed, an on-change collection explains why there is a single value
as opposed to a time series. In case of periodic collection, this as opposed to a time series. In case of periodic collection, this
exact cadence might not be observable in the time series. Indeed, exact cadence might not be observable in the time series. Indeed,
this time series might report some values as 0 or might even omit this time series might report some values as 0 or might even omit
some values. The reason for this behavior might be diverse: the some values. The reason for this behavior might be diverse: the
network element was under stress, with a too small observation network platform was under stress, with a too small observation
period, compared to the minimum-observed-period period, compared to the minimum-observed-period
[I-D.claise-netconf-metadata-for-collection]. Again, knowing the [I-D.claise-netconf-metadata-for-collection]. Again, knowing the
conditions under which the counter was collected and streamed (along conditions under which the counter was collected and streamed (along
with the platform details) help drawing the right conclusions. As an with the platform details) help drawing the right conclusions. As an
example, taking into account the value of 0 might lead to a wrong example, taking into account the value of 0 might lead to a wrong
conclusion that the counter dropped to zero. This document specifies conclusion that the counter dropped to zero. This document specifies
the Data Collection Manifest, which contains the required information the Data Collection Manifest, which contains the required information
to characterize how and when the telemetry information was metered. to characterize how and when the telemetry information was metered.
The goal of the current document is to define what needs to be kept The goal of the current document is to define what needs to be kept
skipping to change at page 9, line 6 skipping to change at page 9, line 9
organization organization
"IETF OPSAWG (Network Configuration) Working Group"; "IETF OPSAWG (Network Configuration) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/> "WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: <mailto:opsawg@ietf.org> WG List: <mailto:opsawg@ietf.org>
Author: Benoit Claise <mailto:benoit.claise@huawei.com> Author: Benoit Claise <mailto:benoit.claise@huawei.com>
Author: Jean Quilbeuf <mailto:jean.quilbeuf@huawei.com> Author: Jean Quilbeuf <mailto:jean.quilbeuf@huawei.com>
Author: Diego R. Lopez <diego.r.lopez@telefonica.com> Author: Diego R. Lopez <diego.r.lopez@telefonica.com>
Author: Ignacio Dominguez Author: Ignacio Dominguez
<ignacio.dominguezmartinez@telefonica.com> <ignacio.dominguezmartinez@telefonica.com>
Author: Thomas Grapf <thomas.graf@swisscom.com>"; Author: Thomas Graf <thomas.graf@swisscom.com>";
description description
"This module describes the platform information to be used as "This module describes the platform information to be used as
context of data collection from a given network element. The context of data collection from a given network element. The
contents of this model must be streamed along with the data contents of this model must be streamed along with the data
streamed from the network element so that the platform context streamed from the network element so that the platform context
of the data collection can be retrieved later. of the data collection can be retrieved later.
The data content of this model should not change except on The data content of this model should not change except on
upgrade or patching of the device. upgrade or patching of the device.
skipping to change at page 17, line 33 skipping to change at page 17, line 36
organization organization
"IETF OPSAWG (Network Configuration) Working Group"; "IETF OPSAWG (Network Configuration) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/> "WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: <mailto:opsawg@ietf.org> WG List: <mailto:opsawg@ietf.org>
Author: Benoit Claise <mailto:benoit.claise@huawei.com> Author: Benoit Claise <mailto:benoit.claise@huawei.com>
Author: Jean Quilbeuf <mailto:jean.quilbeuf@huawei.com> Author: Jean Quilbeuf <mailto:jean.quilbeuf@huawei.com>
Author: Diego R. Lopez <diego.r.lopez@telefonica.com> Author: Diego R. Lopez <diego.r.lopez@telefonica.com>
Author: Ignacio Dominguez Author: Ignacio Dominguez
<ignacio.dominguezmartinez@telefonica.com> <ignacio.dominguezmartinez@telefonica.com>
Author: Thomas Grapf <thomas.graf@swisscom.com>"; Author: Thomas Graf <thomas.graf@swisscom.com>";
description description
"This module describes the context of data collection from a "This module describes the context of data collection from a
given network element. The contents of this model must be given network element. The contents of this model must be
streamed along with the data streamed from the network streamed along with the data streamed from the network
element so that the context of the data collection can element so that the context of the data collection can
be retrieved later. be retrieved later.
This module must be completed with This module must be completed with
ietf-platform-manifest ietf-platform-manifest
to capture the whole context of a data collection session. to capture the whole context of a data collection session.
skipping to change at page 23, line 48 skipping to change at page 23, line 51
We propose to reuse the existing telemetry system (in-band approach) We propose to reuse the existing telemetry system (in-band approach)
in order to lower the efforts for implementing this draft. To enable in order to lower the efforts for implementing this draft. To enable
a platform supporting streaming telemetry to also support the Data a platform supporting streaming telemetry to also support the Data
Manifest, it is sufficient that this platform supports the models Manifest, it is sufficient that this platform supports the models
from Section 3 and Section 4. Recall that each type of manifest has from Section 3 and Section 4. Recall that each type of manifest has
its own rough frequency update, i.e. at reboot for the Platform its own rough frequency update, i.e. at reboot for the Platform
Manifest and at new subscription or CPU load variation for the Data Manifest and at new subscription or CPU load variation for the Data
Collection Manifest. The Data Manifest MUST be streamed with the Collection Manifest. The Data Manifest MUST be streamed with the
YANG-Push on-change feature [RFC8641] (also called event-driven YANG-Push on-change feature [RFC8641] (also called event-driven
telemetry). telemetry). Appendix A shows how the in-band approach would work
while storing to a time-series database (TSDB).
5.2. Mapping Collected Data to the Data Manifest 5.2. Mapping Collected Data to the Data Manifest
With YANG-push, each notification sent by the device is part of a With YANG-push, each notification sent by the device is part of a
subscription, which is also one of the YANG keys used to retrieve the subscription, which is also one of the YANG keys used to retrieve the
Data Manifest, the other key being the platform ID. In order to Data Manifest, the other key being the platform ID. In order to
enable a posteriori retrieval of the Data Manifest associated to a enable a posteriori retrieval of the Data Manifest associated to a
datapoint, the collector must: datapoint, the collector must:
o Keep the subscription id and platform id in the metadata of the o Keep the subscription id and platform id in the metadata of the
skipping to change at page 24, line 29 skipping to change at page 24, line 29
With this information, to retrieve the Data Manifest from the With this information, to retrieve the Data Manifest from the
datapoint, the following happens: datapoint, the following happens:
o The subscription id and platform id are retrieved from the o The subscription id and platform id are retrieved from the
datapoint metadata datapoint metadata
o The Data Manifest for that datapoint is obtained by using the o The Data Manifest for that datapoint is obtained by using the
values above as keys. values above as keys.
We don't focus on the timing aspect as storing both the data and We don't focus on the timing aspect as storing both the data and
their manifest in a time series database will allow the data their manifest in a time series database (TSDB) will allow the data
scientists to look for the Data Manifest corresponding to the scientists to look for the Data Manifest corresponding to the
timestamp of the datapoint. In that scenario, the reliability of the timestamp of the datapoint. More precisely, given the timestamp of a
collection of the Data Manifest is the same as the reliability of the collected datapoint, the query to the TSDB would be to get the last
data collection itself, since the Data Manifest is like any other version of the Data Manifest before that timestamp. In that
data. scenario, the reliability of the collection of the Data Manifest is
the same as the reliability of the data collection itself, since the
Data Manifest is like any other data.
5.3. Operational Considerations 5.3. Operational Considerations
It is expected that the Data Manifest is streamed directly from the It is expected that the Data Manifest is streamed directly from the
network equipment, along with YANG-Push [RFC8641] data. However, if network equipment, along with YANG-Push [RFC8641] data. However, if
the network element streaming telemetry does not support yet the YANG the network equipment streaming telemetry does not support yet the
modules from the Data Manifest specified in this document, the YANG modules from the Data Manifest specified in this document, the
telemetry collector could populate the Data Manifest from available telemetry collector could populate the Data Manifest from available
information collected from the platform. However, this option information collected from the platform. However, this option
requires efforts on the telemetry collector side, as the information requires efforts on the telemetry collector side, as the information
gathered in the Data Manifest proposed in this document could be gathered in the Data Manifest proposed in this document could be
scattered among various standard and vendor- specific YANG modules scattered among various standard and vendor- specific YANG modules
[RFC8199], that depend on the platform. [RFC8199], that depend on the platform.
That Data Manifest should be kept and available even if the source That Data Manifest should be kept and available even if the source
platform is not accessible (from the collection system), or if the platform is not accessible (from the collection system), or if the
platform has been updated (new operating system or new platform has been updated (new operating system or new
skipping to change at page 26, line 48 skipping to change at page 27, line 4
} }
} }
] ]
} }
} }
] ]
} }
} }
<CODE ENDS> <CODE ENDS>
The file above contains the Data Collection Manifest for two Xpaths The file above contains the Data Collection Manifest for two Xpaths
subscriptions. With the Data Collection Manifest for the first one, subscriptions. With the Data Collection Manifest for the first one,
with subscription id 4242, the exact semantics of the collected path, with subscription id 4242, the exact semantics of the collected path,
here the administrative status of the network interfaces, can be here the administrative status of the network interfaces, can be
obtained by looking up the module in the yang-library of the obtained by looking up the module in the yang-library of the
corresponding plaftorm manifest, in order to obtain the exact corresponding Platform Manifest, in order to obtain the exact
revision of ieft-interfaces used at collection time. Also, the "on- revision of ieft-interfaces used at collection time. Also, the "on-
change" container indicates that data will be sent only if there is a change" container indicates that data will be sent only if there is a
change, thus not receiving data indicates that the administrative change, thus not receiving data indicates that the administrative
status of the interface did not change. status of the interface did not change.
The other example of Data Collection Manifest, with subscription id The other example of Data Collection Manifest, with subscription id
4243, shows how a periodic subscription is reported. In that 4243, shows how a periodic subscription is reported. In that
example, the current-period indicates that the requested period of example, the current-period indicates that the requested period of
10s (1000 centiseconds) could not be attained and is now of 20s, for 10s (1000 centiseconds) could not be attained and is now of 20s, for
instance because the device is overloaded. instance because the device is overloaded.
skipping to change at page 28, line 7 skipping to change at page 28, line 10
library from the platform? Should we use a YANG mount to capture library from the platform? Should we use a YANG mount to capture
them as well (they would not be captured with our use of the main them as well (they would not be captured with our use of the main
yang-library grouping). Similarly, the ietf-data-collection- yang-library grouping). Similarly, the ietf-data-collection-
manifest.yang includes many lines of copy-pasting from ietf-yang- manifest.yang includes many lines of copy-pasting from ietf-yang-
push.yang and ietf-subscribed-notifications.yang since we want to push.yang and ietf-subscribed-notifications.yang since we want to
include the information from these modules. Reusing groupings is include the information from these modules. Reusing groupings is
not suitable as some leafrefs are pointing to nodes that are not not suitable as some leafrefs are pointing to nodes that are not
at the same location in our network level module. Maybe we need at the same location in our network level module. Maybe we need
to find a solution (deviations + some kind of schema mount?) maybe to find a solution (deviations + some kind of schema mount?) maybe
we can live with similar modules since they have common nodes but we can live with similar modules since they have common nodes but
different purposes? different purposes? Current effort in
[I-D.jouqui-netmod-yang-full-include] might be a potential
solution.
o Henk: how does this interact with SBOM effort? o Henk: how does this interact with SBOM effort?
o What is the link with the RFC8345 NodeId and IVY? o What is the link with the RFC8345 NodeId and IVY?
o Handling of deletion in [I-D.kll-yang-label-tsdb].
11. References 11. References
11.1. Normative References 11.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
skipping to change at page 29, line 22 skipping to change at page 29, line 26
netmod-model-catalog-03>. netmod-model-catalog-03>.
[I-D.claise-netconf-metadata-for-collection] [I-D.claise-netconf-metadata-for-collection]
Claise, B., Nayyar, M., and A. Sesani, "Per-Node Claise, B., Nayyar, M., and A. Sesani, "Per-Node
Capabilities for Optimum Operational Data Collection", Capabilities for Optimum Operational Data Collection",
draft-claise-netconf-metadata-for-collection-02 (work in draft-claise-netconf-metadata-for-collection-02 (work in
progress), July 2021, progress), July 2021,
<https://datatracker.ietf.org/doc/html/draft-claise- <https://datatracker.ietf.org/doc/html/draft-claise-
netconf-metadata-for-collection-02>. netconf-metadata-for-collection-02>.
[I-D.jouqui-netmod-yang-full-include]
Joubert, T., Quilbeuf, J., and B. Claise, "YANG Full
Include", draft-jouqui-netmod-yang-full-include-00 (work
in progress), November 2023,
<https://datatracker.ietf.org/doc/html/draft-jouqui-
netmod-yang-full-include-00>.
[I-D.kll-yang-label-tsdb]
Larsson, K., "Mapping YANG Data to Label-Set Time Series",
draft-kll-yang-label-tsdb-00 (work in progress), October
2023, <https://datatracker.ietf.org/doc/html/draft-kll-
yang-label-tsdb-00>.
[I-D.lopez-opsawg-yang-provenance] [I-D.lopez-opsawg-yang-provenance]
Lopez, D., "Applying COSE Signatures for YANG Data Lopez, D. and A. Pastor, "Applying COSE Signatures for
Provenance", draft-lopez-opsawg-yang-provenance-00 (work YANG Data Provenance", draft-lopez-opsawg-yang-
in progress), July 2023, provenance-01 (work in progress), October 2023,
<https://datatracker.ietf.org/doc/html/draft-lopez-opsawg- <https://datatracker.ietf.org/doc/html/draft-lopez-opsawg-
yang-provenance-00>. yang-provenance-01>.
[I-D.tgraf-netconf-notif-sequencing] [I-D.tgraf-netconf-notif-sequencing]
Graf, T., Quilbeuf, J., and A. Feng, "Support of Hostname Graf, T., Quilbeuf, J., and A. Feng, "Support of Hostname
and Sequencing in YANG Notifications", draft-tgraf- and Sequencing in YANG Notifications", draft-tgraf-
netconf-notif-sequencing-02 (work in progress), October netconf-notif-sequencing-03 (work in progress), January
2023, <https://datatracker.ietf.org/doc/html/draft-tgraf- 2024, <https://datatracker.ietf.org/doc/html/draft-tgraf-
netconf-notif-sequencing-02>. netconf-notif-sequencing-03>.
[RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module [RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module
Classification", RFC 8199, DOI 10.17487/RFC8199, July Classification", RFC 8199, DOI 10.17487/RFC8199, July
2017, <https://www.rfc-editor.org/info/rfc8199>. 2017, <https://www.rfc-editor.org/info/rfc8199>.
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
<https://www.rfc-editor.org/info/rfc8343>. <https://www.rfc-editor.org/info/rfc8343>.
[RFC9196] Lengyel, B., Clemm, A., and B. Claise, "YANG Modules [RFC9196] Lengyel, B., Clemm, A., and B. Claise, "YANG Modules
skipping to change at page 30, line 9 skipping to change at page 30, line 27
[RFC9371] Baber, A. and P. Hoffman, "Registration Procedures for [RFC9371] Baber, A. and P. Hoffman, "Registration Procedures for
Private Enterprise Numbers (PENs)", RFC 9371, Private Enterprise Numbers (PENs)", RFC 9371,
DOI 10.17487/RFC9371, March 2023, DOI 10.17487/RFC9371, March 2023,
<https://www.rfc-editor.org/info/rfc9371>. <https://www.rfc-editor.org/info/rfc9371>.
Appendix A. Example of use based on MDT Appendix A. Example of use based on MDT
In this example, the goal is to collect the administrative status and In this example, the goal is to collect the administrative status and
number of received bytes for the interfaces of a fictional ACME number of received bytes for the interfaces of a fictional ACME
device, and store the result in a Influx database. The metrics are device, and store the result in a time-series database (TSDB). The
collected via YANG-Push, which is configured by specifying their metrics are collected via YANG-Push, which is configured by
XPaths and when they should be collected (periodically or on-change). specifying their XPaths and when they should be collected
More precisely, we want collect "ietf- (periodically or on-change). More precisely, we want collect "ietf-
interfaces:interfaces/interface/enabled" on every change and "ietf- interfaces:interfaces/interface/enabled" on every change and "ietf-
interfaces:interfaces/interface/statistics/in-octets" every 100 interfaces:interfaces/interface/statistics/in-octets" every 100
milliseconds. The paths here are referring to the YANG module from milliseconds. The paths here are referring to the YANG module from
[RFC8343]. The configuration of YANG push is out of scope for this [RFC8343]. The configuration of YANG push is out of scope for this
document. Since they don't have the same trigger, each of the path document. Since they don't have the same trigger, each of the path
must be collected in its own subscription. Figure 3 presents an must be collected in its own subscription. Figure 3 presents an
example for such a collection. example for such a collection.
+------------+ +----------+ +------------+ +--------+
| MDT | | Influx | | MDT |--------------> | TSDB |
| Collector |--------------> | DB | | Collector | +--------+
+------------+ +----------+ +------------+
^ ^
| |
| |
+---------+ +---------+
| Device | | Device |
+---------+ +---------+
Figure 3: Example of collection from a device to Influx DB Figure 3: Example of collection from a device to a TSDB
In the scenario from Figure 3, the collector receives YANG-push from In the scenario from Figure 3, the collector receives YANG-push from
the device and stores it into InfluxDB. We first present a version the device and stores it into a TSDB. We first present a version
without data manifest and then how to enrich it with the data without Data Manifest and then how to enrich it with the Data
manifest. Manifest.
In InfluxDB, a datapoint is specified by giving the name of the
measurement, zero or more key value entries named tags, one or more
named values called fields and the timestamp for the datapoint. In
our case a measurement could be "admin-status". The tags, whose aim
to identify a particular instance of the measurement could be the
name of the device and the name of the interface. The fields contain
the values to store. InfluxDb defines a textual notation, named line
protocol, to represent one datapoint per line. We use this line
protocol in Figure 4 and Figure 6 to represent the way data could be
fed to InfluxDB, omitting the timestamp for readability. See
<https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-
protocol/> for more details.
Without the data manifest, the YANG-push collector is likely to store We use the notation from [I-D.kll-yang-label-tsdb] to represent how
something similar to Figure 4 in InfluxDB. In that case, only the the data is stored in the TSDB. Without the data manifest, the
value is stored, without any way to know how the value was obtained. result of the collection would be stored as showed in Figure 4. The
"host" label indicates the devices from which the data is collected
and the YANG keys are included as well. Here the interface "eth0" is
enabled and received 1234 octets. In that case, the value is stored,
without any way to know how the value was obtained.
admin_status,device="PE1",interface="gig1" val=T * Metric: interfaces_interface_enabled
sent_bytes,device="PE1",interface="gig1" val=1234 * Value: True
* Labels:
- host: "PE1"
- interfaces_interface_name: "eth0"
--
* Metric: interfaces_interface_statistics_in_octets
* Value: 1234
* Labels:
- host: "PE1"
- interfaces_interface_name: "eth0"
Figure 4: Storing datapoints without data manifest Figure 4: Storing datapoints without Data Manifest
A possibility for keeping the data manifest with the data is to store A possibility for keeping the Data Manifest with the data is to store
it directly into InfluxDB. In that case, the collector can subscribe it directly into the TSDB. In that case, the collector can subscribe
to the data exported by the module presented in this draft and store to the data exported by the module presented in this draft and store
it inside influxDB. For the Platform Manifest, assuming the platform it as other metrics. For the Platform Manifest, assuming the
ID is "PE1", the collector subscribes to the path "ietf-platform- platform ID is "PE1", the collector subscribes to the path "ietf-
manifest:platforms/platform[id=PE1]". For the Data Collection platform-manifest:platforms/platform[id=PE1]". For the Data
Manifests, the collector subscribes to the path "ietf-data- Collection Manifests, the collector subscribes to the path "ietf-
collection-manifest:data-collections/data-collection[platform- data-collection-manifest:data-collections/data-collection[platform-
id="PE1"]/yang-push-subscriptions/subscription[id=X]" where X is the id="PE1"]/yang-push-subscriptions/subscription[id=X]" where X is the
subscription id of existing subscriptions. The data, for instance subscription id of existing subscriptions. With the approach from
serialized in JSON, can be stored in InfluxDB as shown in Figure 5 [I-D.kll-yang-label-tsdb], the corresponding subtrees would be split
where "<platform-manifest>" and "<data-manifest>" represent the into a set of datapoints, one per leaf. Figure 5 shows two examples
contents of respectively the Platform Manifest and the Data of storing leaves in a TSDB. The first leaf is the vendor PEN
Collection Manifest. number, which is part of the Platform Manifest. The second leaf is
the Xpath filter used for subscription to the interface status.
platform-manifest,device="PE1" val=<plaftorm-manifest> * Metric: platforms_platform_vendor_pen
collection-data-manifest,device="PE1",subId=4242 val=<data-manifest> * Value: 32473
collection-data-manifest,device="PE1",subId=4243 val=<data-manifest> * Labels:
- host: "PE1"
- platforms_platform_id: "PE1"
--
* Metric: data_collections_data_collection_yang_push_subscriptions_
subscription_datastore_xpath_filter
* Value: "ietf-interfaces:interfaces/interface/enabled"
* Labels:
- host: "PE1"
- data_collections_data_collection_platform_id: "PE1"
- data_collections_data_collection_yang_push_subscriptions_
subscription_id: 4242
Figure 5: Storing data manifest Figure 5: Example of storing Platform and Data Collection Manifest:
Vendor PEN and Xpath filter.
In our example, The link between a collected datapoint and the In the labels, the "host" might be different from the
corresponding Platform Manifest is done via the common "device" tag. "platforms_platform_id" in case the collector is the one assembling
In order to link a datapoint with the corresponding Data Collection it, i.e. for devices that do not natively support the Data Manifest.
Manifest, the collector can add fields to specify where the Data In that case, the value of this label could be the hostname of the
Collection Manifest is located for that specific datapoint. For collector. The host value does not matter for retrieving the Data
instance, the same datapoints as in Figure 4 could be stored as in Manifest as the platform id is the meaningful field.
Figure 6.
admin_status,device="PE1",interface="gig1" val=T,subId=4242 In our example, we can retrieve the Platform Manifest associated to a
sent_bytes,device="PE1",interface="gig1" val=1234,subId=4243 collected datapoint by looking for datapoints that have the label
"platforms_platform_id" equal to the value of the host for that
collected datapoint. In order to link a datapoint with the
corresponding Data Collection Manifest, we need to add an additional
label for the subscription id. For instance, the same datapoints as
in Figure 4 could be stored as in Figure 6.
Figure 6: Storing datapoints with data manifest * Metric: interfaces_interface_enabled
* Value: True
* Labels:
- host: "PE1"
- interfaces_interface_name: "eth0"
- data_collections_data_collection_yang_push_subscriptions_
subscription_id: 4242
--
* Metric: interfaces_interface_statistics_in_octets
* Value: 1234
* Labels:
- host: "PE1"
- interfaces_interface_name: "eth0"
- data_collections_data_collection_yang_push_subscriptions_
subscription_id: 4243
In our simple example, from the "admin_status" datapoint, one can Figure 6: Storing datapoints with information to retrieve the Data
retrieve the corresponding Platform Manifest by looking at the last Manifest
value for the "platform-manifest" measurement with the same value for
the "device" tag. From the "admin-status" datapoint, one can From the "interfaces_interface_enabled" datapoint, one can retrieve
retrieve the corresponding Data Collection Manifest by looking at the the corresponding Data Collection Manifest by looking for datapoints
last value for the "data-manifest" measurement with tags "device" and that have the label data_collections_data_collection_yang_push_subscr
"subId" matching respectively with the tag "device" and the field iptions_subscription_id equal to 4242.
"subId" of the measurement.
Various optimizations could be done, such as relying on on-change
subscription to modify only the leaves that changed. In that way,
the amount of data needed for updating and storing the Data Manifest
in the TSDB would be limited.
Appendix B. Changes between revisions Appendix B. Changes between revisions
v02 -> v03
Explicit that modules are network (Controller) level
InfluxDB example changed to TSDB example aligned with
[I-D.kll-yang-label-tsdb]
Minor edits i.e. network element -> platform , object -> data node
v01 -> v02 v01 -> v02
Updated example with latest version of the model. Updated example with latest version of the model.
v00 (WG adoption) - v01 v00 (WG adoption) - v01
Solve integrity issue by delegating to Solve integrity issue by delegating to
[I-D.lopez-opsawg-yang-provenance]. [I-D.lopez-opsawg-yang-provenance].
v05 -> v06 v05 -> v06
skipping to change at page 50, line 48 skipping to change at page 52, line 32
} }
uses hints; uses hints;
} }
} }
} }
<CODE ENDS> <CODE ENDS>
Acknowledgements Acknowledgements
Thanks to Mohamed Boucadair and Tianran Zhou for their reviews and Thanks to Mohamed Boucadair, Tianran Zhou and Jan Lindblad for their
comments. reviews and comments.
Authors' Addresses Authors' Addresses
Benoit Claise Benoit Claise
Huawei Huawei
Email: benoit.claise@huawei.com Email: benoit.claise@huawei.com
Jean Quilbeuf Jean Quilbeuf
Huawei Huawei
 End of changes. 53 change blocks. 
111 lines changed or deleted 177 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/