<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lindblad-tlm-philatelist-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <front>
    <title abbrev="Philatelist">Philatelist, YANG-based Network Controller collection and aggregation framework integrating Telemetry data and Time Series Databases</title>
    <seriesInfo name="Internet-Draft" value="draft-lindblad-tlm-philatelist-03"/>
    <author fullname="Jan Lindblad">
      <organization>All For Eco</organization>
      <address>
        <email>jan.lindblad+ietf@for.eco</email>
      </address>
    </author>
    <date year="2025" month="February" day="28"/>
    <area>OPS</area>
    <workgroup>GREEN WG</workgroup>
    <keyword>YANG</keyword>
    <keyword>telemetry</keyword>
    <keyword>collection</keyword>
    <keyword>aggregation</keyword>
    <keyword>time series database</keyword>
    <keyword>TSDB</keyword>
    <abstract>
      <?line 58?>

<t>Timestamped telemetry data is collected en masse today.  Mature tools are typically used, but the data is often collected in an ad hoc manner.  While the dashboard graphs look great, the resulting data is often of questionable quality, not well defined, and hard to compare with seemingly similar data from other organizations.</t>
      <t>This document proposes a standard, extensible, cross domain framework for collecting and aggregating timestamped telemetry data in a way that combines YANG, metadata and Time Series Databases to produce more transparent, dependable and comparable results.  This framework is implemented in the Network Controller layer, but is rooted in data that is collected from all kinds of Network Elements and related systems.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://janlindblad.github.io/draft-tlm-philatelist/draft-lindblad-tlm-philatelist.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lindblad-tlm-philatelist/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/janlindblad/draft-tlm-philatelist"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="the-problem">
        <name>The Problem</name>
        <t>Many organizations today are collecting large amounts of telemetry data from their networks and data centers for a variety of purposes.  Much (most?) of this data is funneled into a Time Series Database (TSDB) for display in a graphical dashboard or further (AI-backed) processing and decision making.</t>
        <t>While this data collection is often handled using existing and stable tools, there generally seems to be little commonality when it comes to what is meaured, how the data is aggregated, or definitions of the measured quantities (if any).</t>
        <t>Data science issues like adding overlapping quantities, adding quantities of different units of measurement, or quantities with different scopes, are likely common.  Such errors are hard to detect given the ad hoc nature of the collection.  This often leads to uncertainty regarding the quality of the conclusions drawn from the collected data.</t>
      </section>
      <section anchor="the-solution">
        <name>The Solution</name>
        <t>The Philatelist framework proposes to standardize the collection, definitions of the quantities measured and meta data handling to provide a robust ground layer for telemetry collection on the Controller side.  The architecture defines a few interfaces, but allows great freedom in the implementations with its plug-in architecture.  This allows flexibility enough that any kind of quantity can be measured, any kind of collection protocol and mechanism employed, and the telemetry data flows aggregated using any kind of operation.</t>
        <t>To do this, YANG is used both to describe the quantities being measured, as well as act as the framework for the metadata management.  Note that the use of YANG here does not limit the architecture to devices or sources supporting traditional YANG-based transport protocols.  YANG is used to describe the data, regardless of which format, protocol or source it arrives from.</t>
        <t>Initially developed in context of the Power and Energy Efficiency work (POWEFF), the authors realized both the potential and the need for this collection and aggregation architecture to become a general framework for collection of a variety of metrics.</t>
        <t>There is not much point in knowing the "cost side" of a running system (as in energy consumption or CO2e-emissions) if that cannot be weighed against the "value side" delivered by the system (as in transported bytes, VPN connections, music streaming hours, or number of cat videos, etc.), which means traditional performance metrics will play an equally important role in the collection.</t>
      </section>
      <section anchor="yang-based-telemetry-outlook">
        <name>YANG-based Telemetry Outlook</name>
        <t>Much work has already gone into the area of telemetry, YANG, and their intersection.  E.g.
<xref target="I-D.draft-ietf-opsawg-collected-data-manifest-05"/>,
<xref target="I-D.draft-claise-netconf-metadata-for-collection-03"/> and
<xref target="I-D.draft-ietf-nmop-yang-message-broker-integration-06"/> come to mind. We (the POWEFF authoring team) would like to work with the authoring teams of these drafts to align our joint work.  We believe this work generally fits well with the principles outlined in the Network Telemetry Framework <xref target="RFC9232"/>.</t>
        <t>Many essential data sources in real world deployments do not support any YANG-based interfaces, and that situation is expected to remain for the forseable future, which is why we find it important to be able to ingest data from free form (often REST-based) interfaces, and then add the necessary rigor on the Collector level.  Then output the datastreams in formats that existing, mature tools can consume directly.</t>
        <t>A couple of collection source examples, just to stimulate the imagination:</t>
        <ul spacing="normal">
          <li>
            <t>SYSLOG <xref target="RFC5424"/></t>
          </li>
          <li>
            <t>EMAN MIBs over SNMP <xref target="RFC7603"/></t>
          </li>
          <li>
            <t>DMTF's Redfish REST API <xref target="Redfish"/> (no endorsement)</t>
          </li>
          <li>
            <t>Proprietary REST APIs, e.g. <xref target="Sensor_Service_Methods"/> (no endorsement)</t>
          </li>
          <li>
            <t>YANG-Push <xref target="RFC8641"/></t>
          </li>
        </ul>
        <t>In particular, this draft depends on the mapping of YANG-based structures to the typical TSDB tag-based formats described in <xref target="I-D.draft-kll-yang-label-tsdb-00"/>.</t>
        <t>For the evolution of the YANG-based telemetry area, we believe this approach, combining pragmatism in the telemetry data stream interfaces with rigor and transparency regarding the data content, is key.  We would like to make this work fit in with the works of others in the field.</t>
      </section>
      <section anchor="the-philatelist-name">
        <name>The Philatelist Name</name>
        <t>This specification is about a framework for collection, aggregation and interpretation of timestamped telemetry data.  The definition of "philatelist" seems close enough.</t>
        <figure>
          <name>Source: https://www.synonym.com/synonyms/philatelist</name>
          <artwork><![CDATA[
1. philatelist

noun. ['fɪˈlætəlɪst'] [fih-LAT-uh-list]
      A collector and student of postage stamps.

Synonyms
- collector
- aggregator

]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the terminology defined in
<xref target="RFC7950"/>.</t>
      <t>In addition, this document defines the following terms:</t>
      <dl>
        <dt>TSDB</dt>
        <dd>
          <t>Time Series Database.</t>
        </dd>
        <dt>Sensor</dt>
        <dd>
          <t>An entity in a system that delivers a snapshot value of some quantity pertaining to the system.  Sensors are identified by their Sensor Path.</t>
        </dd>
        <dt>Sensor Path</dt>
        <dd>
          <t>A textual representation of the sensor's address within the system.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <section anchor="functional-role-diagram">
        <name>Functional Role Diagram</name>
        <t>The following role diagram explains the basic concepts of the architecture. Many of the functional units would exist in many instances in a real deployment. For example, in a real deployment there would be lots of Network Elements with the Provider role.</t>
        <t>On top we have a Network Orchestrator that ensures the Network Controller functions get a suitable configuration. The Collector, Index and Aggregator functions run as part of one or more Network Controllers. Collectors and Aggregators are responsible for ensuring there is a TSDB Partition (also known as bucket, interval, segment, etc. in various TSDB implementations) to receive the potentially large volumes of telemetry data that they produce themselves, or in the case of the Collector, may configure a Provider Network Element to send the collected data to the TSDB, or to the Collector itself, which then passes it on to the TSDB.</t>
        <figure>
          <name>Philatelist Functional Role Diagram.</name>
          <artwork><![CDATA[
                    +--------------+
                    |   Network    |
                    | Orchestrator |
                    +------+-------+
                           |
       +-------------------+-------------------+
       v                   v                   v
+--------------+    +--------------+    +--------------+
|  *Collector* |    |   *Index*    |    | *Aggregator* |
|   Network    |--->|   Network    |<---|   Network    |
|  Controller  |    |  Controller  |    |  Controller  |
+--------------+    +--------------+    +--------------+
       |   /\  \\                :                  /\
       |   ||    \\              :                  ||
       v   ||      \\          ____________         ||
+--------------+     \\       /            \       //
|  *Provider*  |       ====> (     TSDB     ) <====
|   Network    | ==========> |\____________/|
|   Element    | ==========> |              |
+--------------+             | *Partition*  |
                             |              |
                              \____________/

]]></artwork>
        </figure>
        <t>In the figure, single line arrows indicate control/configuration flow.
Double line arrows indicate telemetry data flow. The dotted line
between the Index and the TSDB indicates that the index reflects the TSDB
partition contents.</t>
      </section>
      <section anchor="dashboards">
        <name>Dashboards</name>
        <t>In addition to the functional roles, there is a concept of Dashboards, which is used both within Providers and Collectors. A Dashboard is a particular collection of sensors and controls that have been predefined for particular use cases.  Network Elements may implement and publish one or more of these predefined Dashboards, and Controllers may know how to interpret one or more of them. Dashboards contain one or more dashboard items, each one a sensor or control.</t>
        <t>For example, a particular Network Element might publish two dashboards. One Dashboard might be called "Current Power Draw" and contain only a single dashboard item which allows the Controller to read out the Network Element's total power draw at this instance. The second Dashboard might be called "Subsystem Power" and contain a tree of dashboard items, which allows the Controller to read out the current power draw of the Network Element's various subsystems.  The contents of each Dashboard is defined as a YANG structure in some standards document, or might be a vendor specific YANG definition.</t>
        <t>A key point of this architecture is that Dashboard descriptions (in YANG) can be provided also for Network Elements that offer no YANG-based management interfaces at all, or for Network Elements hosting a YANG-based interface, but that were released prior to this document being written.</t>
      </section>
      <section anchor="collection-data-flow-tree-diagram">
        <name>Collection Data Flow Tree Diagram</name>
        <t>The deployment of a Philatelist framework consists of a collection of Controller plug-in components with well defined interfaces.  Here is an example of a deployment.  Each box is numbered in the lower right for easy reference.</t>
        <figure>
          <name>Example Philatelist component deployment.</name>
          <artwork><![CDATA[
                      +-----------------+
                      | USER INTERFACE  |
                      |   Graph View    |
                      +--------------11-+
                               |
                      +-----------------+
                      |    PROCESSOR    |
                      | Recommendation  |
                      |     Engine      |
                      +--------------21-+
                               |
                      +-----------------+
                      |   AGGREGATOR    |
                      |   Data Center   |
                      +--------------31-+
                               |
       +---------------+-------+-------+--------------+
       |               |               |              |
+------------+  +------------+  +------------+  +------------+
| PROCESSOR  |  | AGGREGATOR |  | AGGREGATOR |  | AGGREGATOR |
| Normalizer |  |  Network   |  |  Storage   |  |  Compute   |
+---------41-+  +---------42-+  +---------43-+  +---------44-+
       |           |                   |\             |\
+------------+     |     +------+------------+  +------------+------+
| COLLECTOR  |     |     | YANG | COLLECTOR  |  | COLLECTOR  | YANG |
|  Cooling   |     |     +---52-+ Storage 1  |  | Compute 1  +---55-+
+---------51-+     |            +---------53-+  +---------54-+
       |           |             \ Storage 2  \  \ Compute 2  \
+------------+     |              +------------+  +------------+
|  PROVIDER  |     |               \ Storage N  \  \ Compute N  \
|Utility Bill|     |                +------------+  +------------+
+---------61-+     |
                   +--------------+
                   |              |
            +------------+  +------------+
            | PROCESSOR  |  | COLLECTOR  |
            | Normalizer |  |  Routers   |
            +---------71-+  +---------72-+
                   |              |\
            +------------+  +------------+
            | COLLECTOR  |  |  PROVIDER  |
            |  Firewall  |  |  Router 1  |
            +---------81-+  +---------82-+
                   |         \  Router 2  \
            +------------+    +------------+
            |  PROVIDER  |     \  Router N  \
            |  Firewall  |      +------------+
            +---------91-+

]]></artwork>
        </figure>
        <t>Each component in the above diagram, represents a logical function.  Many of the functions represented by these boxes could be running within a single server, or they could be fully distributed, or, perhaps more likely, something in between.</t>
        <t>Provider components (61, 82, 91) are running on a Network Element system that supports a YANG-based telemetry data server.  The telemetry data flows from the telemetry source system to a Time Series Database (TSDB).</t>
        <t>Collector components (51, 72, 81) ensure the Providers are programmed properly to deliver the telemetry data to the TSDB Partition designated by the Collector.  In some cases this flow may be direct (e.g. via a message bus) from the Provider to the TSDB, in other cases, it may be going through the Collector.  In some cases the collector may be polling the Provider, in others it may have set up an automatic, periodic subscription.</t>
        <t>Many telemetry Provider systems will not have any on-board YANG-based telemetry server.  Such servers will instead be managed by a Collector capable of handling a particular kind of Provider (53, 54).  Such a Collector is still responsible to set up a telemetry data stream to the Collector's TSDB.  In this case, the Collector will also supply a YANG description (52, 55) of the incoming data stream.</t>
        <t>Processor components (21, 41, 71) are transforming the data stream in some way, e.g. converting from one unit of measurement to another, or adjusting the data values recorded to also include some aspect that this particular sensor is not taking into account.</t>
        <t>Aggregator components (31, 42, 43, 44) combine the time series telemetry data flows using some operation, e.g. summing, averaging or computing the max or min over them.  In this example there are aggregators for Network, Storage, Compute and the entire Data Center</t>
        <t>On top of the stack, we may often find a (graphical) user interface (11), for human consumption of the intelligence acquired by the system.  Equally relevant is of course an (AI) application making decisions based on findings in the aggregated telemetry flow.</t>
      </section>
      <section anchor="the-provider-component">
        <name>The Provider Component</name>
        <t>A Provider is a Network Element, or any other kind of relevant sensor, that is the source of telemetry data that may or may not offer a YANG-based management interface.  It may, for example, provide an SNMP, Redfish or proprietary REST API.</t>
        <t>Each Provider typically has a large number of "sensors" that can be polled or in some cases subscribed to. It may also offer some controls (configurables or actionables).</t>
        <t>One problem with the sensors is that the sensors relevant for a given use case are often spread around inside the Provider system, and many may not know about all of them.  Also, the metadata associated with each sensor is often only missing or only available in human readable form (free form strings), rather than in a strict machine parsable format.</t>
        <figure>
          <name>Example of scattered potential sensors in a device.</name>
          <artwork><![CDATA[
    /hardware/component[name="psu3"]/.../sensor-data/value
    ...
    /interfaces/interface[name="eth0/0"]/.../out-broadcast-packets
    ...
    /routing/mpls/mpls-label-blocks/.../inuse-labels-count
    ...
]]></artwork>
        </figure>
        <t>To solve these problems, the Provider YANG module contains a list of Dashboards.  Each dashboard contains the sensors and controls useful for some particular use case. The contents of the Dashboards is often defined by a standard, but could also be defined in proprietary YANG modules. Each dashboard item is listed with their sensor paths and machine parsable units, definition and any other metadata.</t>
        <t>An admin user or application can then copy the sensor definition from the Dashboard and insert into the Collector's configuration with items to collect and send to the TSDB.</t>
        <figure>
          <name>YANG tree diagram of the Provider Dashboard list.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-provider
  +--rw tlm-provider
     +--rw dashboards
     |  +--rw dashboard* [id]
     |     +--rw id                       identityref
     |     +--rw items* [tsdb-path]
     |        +--rw tsdb-path             -> ../../../../dash-items/
     |                                       dash-item/tsdb-path
     +--rw dash-items
     |  +--rw dash-item* [tsdb-path]
     |     +--rw tsdb-path                string
     |     +--rw item-type                identityref
     |     +--rw accuracy
     |     |  +--rw max-error-relative?   something
     |     |  +--rw max-error-offset?     something
     |     +--rw label* [name]
     |     |  +--rw name                  string
     |     |  +--rw (value-source)?
     |     |     +--:(static-values)
     |     |     |  +--rw static-values*  string
     |     |     +--:(runtime-values)
     |     |        +--rw runtime-values* -> ../../../dash-item/
     |     |                                 tsdb-path
     |     +--rw access-path?             string
     |     +--rw access-params?           -> ../../../accesses/
                                             access/id
]]></sourcecode>
        </figure>
        <t>Note: The "something" YANG-type is used in many places in this document.  That is just a temporary placeholder we use until we have figured out what the appropriate type should be.</t>
        <t>Each Dashboard in the dashboard list has a name that is an identityref. That makes it possible to define particular dashboards with well known names and contents in YANG, so that Providers and Collectors know what to expect. Each dashboard refers to a set of dashboard items (some of which may be the same in multiple Dashboards). Each dashboard item has a type that is defined as a YANG identity, making them maximally extensible.  Examples of sensor types might be a sensor for energy measured in kWh, or energy measured in J, or temperature measured in F, or in C, or in K.</t>
        <t>Each dashboard item has an access path and access parameters. These are a mapping into the access mechanism the Collector must use to poll or subscribe to the sensor value.</t>
        <figure>
          <name>YANG tree diagram of the Provider Accesses list.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-provider
  +--rw tlm-provider
     +--rw accesses
     |  +--rw access* [id]
     |     +--rw id                                 string
     |     +--rw method?                            identityref
     |     +--rw get-local-file-once
     |     |  +--rw filename?                       string
     |     +--rw get-static-url-once
     |     |  +--rw url?                            something
     |     +--rw gnmi-polling
     |     |  +--rw encoding?                       something
     |     |  +--rw protocol?                       something
     |     +--rw restconf-get-polling
     |     |  +--rw xxx?                            string
     |     +--rw netconf-get-polling
     |     |  +--rw xxx?                            string
     |     +--rw restconf-yang-push-subscription
     |     |  +--rw xxx?                            string
     |     +--rw netconf-yang-push-subscription
     |     |  +--rw xxx?                            string
     |     +--rw redfish-polling
     |     |  +--rw xxx?                            string
     |     +--rw frequency?                         sample-frequency
]]></sourcecode>
        </figure>
        <t>The list of access methods contains a number of YANG-based and non-YANG based access methods, but this set of access methods can also be extended by YANG-augmentation. The get-local-file-once access method allows reading fixed values from a data sheet encoded in YANG-instance data file format <xref target="RFC9195"/>, and  the get-static-url-once access method does the same from a given URL. That URL may be served from the Network Element, or from the Collector itself or anywhere else on the network or even internet.</t>
        <t>The access-path leaf discussed above (/tlm-provider/dash-items/dash-item/access-path) contains the path to the item that should be read or subscribed to. If the dash-item in question is for a YANG-based interface, then that path would be an XPath expression, with prefixes. Those prefixes need to be mapped to XML namespaces (NETCONF) or YANG module names (RESTCONF). That mapping is provided by the prefix-mappings list.</t>
        <figure>
          <name>YANG tree diagram of the Provider Prefix Mapping list.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-provider
  +--rw tlm-provider
     +--rw prefix-mappings
        +--rw prefix-mapping* [prefix]
           +--rw prefix         string
           +--rw namespace?     string
           +--rw module-name?   string
]]></sourcecode>
        </figure>
      </section>
      <section anchor="the-collector-component">
        <name>The Collector Component</name>
        <t>The Collector component is part of a Network Controller that collects telemetry data from Providers, typically by periodic polling or subscriptions, and ensures the collected data is stored in a Time Series Database (TSDB).  The actual data stream may or may not be passing through the collector component; the collector is responsible for ensuring data flows from the Provider to the destination TSDB, and that the data has a YANG description and is tagged with necessary metadata.  How the Collector agrees with a Provider to deliver data in a timely manner is beyond the scope of this document.</t>
        <figure>
          <name>Example of Collector setting up three streams of telemetry data from two Providers to one TSDB Partition.</name>
          <artwork><![CDATA[
         +-------------+
         |  COLLECTOR  |
         +-------------+                     ___________
                |                           /           \
      +------------------+                 (    TSDB     )
      v                  v                 |\___________/|
+------------+    +------------+  STREAM 1 |             |
|  PROVIDER  |    |  PROVIDER  |  =======> |             |
| - sensor 1 |    | - sensor 1 |           |  Partition  |
| - sensor 2 |    | - sensor 4 |  STREAM 2 |             |
| - sensor 3 |    | - sensor 7 |  =======> |             |
+------------+    +------------+           |             |
          \\                      STREAM 3 |             |
            =============================>  \___________/
]]></artwork>
        </figure>
        <t>The top of the Collector model contains a list of organizations, as a single Collector component might be doing collection work for different organizations (customers, departments, scopes) that must not be intermixed. Each organization has a list of device-groups pointing out specific Network Elements. Each group has a list of dashboards that will be queried. Since each Provider has a list of supported dashboards, the Collector simply copies the dashboards it is interested in to its own collection list.</t>
        <figure>
          <name>YANG tree diagram of the top part of the Collector model.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-collector
  +--rw tlm-collector
     +--rw organizations
        +--rw organization* [name]
           +--rw name                     string
           +--rw device-groups
           |  +--rw device-group* [name]
           |     +--rw name               string
           |     +--rw devices*           string
           |     +--rw dashboards
           |     |  +--rw dashboard* [id]
           |     |     +--rw id           identityref
           |     |     +--rw items* [tsdb-path]
           |     |        +--rw tsdb-path  -> ../../../../
                                              dash-items/
                                              dash-item/
                                              tsdb-path
]]></sourcecode>
        </figure>
        <t>The Collector model also contains the same dash-item list as shown above in the Provider model. This allows the Collector configuration to hold a local copy of the dashboards and dash-items it finds relevant, to guide its own collection work.</t>
        <t>Finally, the Collector keeps a list of streams to work with, pointing out the sources (device-group and dash-name) and destination (a TSDB Partition).</t>
        <figure>
          <name>YANG tree diagram of the Collector tlm-streams.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-collector
  +--rw tlm-collector
     +--rw organizations
        +--rw organization* [name]
           +--rw tlm-streams
              +--rw tlm-stream* [id]
                 +--rw id                 something
                 +--rw sources* [device-group dash-name]
                 |  +--rw device-group    -> ../../../../
                 |  |                        device-groups/
                 |  |                        device-group/name
                 |  +--rw dash-name       -> ../../../../
                 |                           device-groups/
                 |                           device-group/
                 |                           dashboards/dashboard/id
                 +--rw destination?       partition-ref-t
]]></sourcecode>
        </figure>
        <t>The sensor groups are then arranged into streams from a collection of sources (that support the same set of sensor groups) to a destination.  This structure has been chosen with the assumption that there will be many source devices with the same set of sensor groups, and we want to minimize repetition.</t>
      </section>
      <section anchor="the-index-component">
        <name>The Index Component</name>
        <t>When Collectors collect, and when Aggregators process and aggregate telemetry data, they need to send this data to a TSDB Partition as destination. To keep track of which data is sent where, and what the connection details are for that partition, the Network Controller implements the Index YANG module. Both the Collector and Aggregator modules reference this module.</t>
        <figure>
          <name>YANG tree diagram of the Index TSDB Partitions.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-index
  +--rw tlm-index
     +--rw partitions
        +--rw partition* [id]
           +--rw id                     something
           +--rw url?                   something
           +--rw organization?          something
           +--rw partition?             something
           +--rw impl-specific
              +--rw binding* [key]
                 +--rw key              string
                 +--rw (value-type)?
                    +--:(value)
                    |  +--rw value?     string
                    +--:(values)
                    |  +--rw values*    string
                    +--:(env-var)
                       +--rw env-var?   string
]]></sourcecode>
        </figure>
        <t>The implementation specific part of the model is for integration with specific TSDB implementations. Each such integration may need a specific sef of key-value bindings, that can be provided in this list.</t>
      </section>
      <section anchor="the-processor-and-aggregator-components">
        <name>The Processor and Aggregator Components</name>
        <t>Processor components are parts of a Network Controller that take an incoming data flow and transforms it somehow, and possibly augments it with a flow of derived information.  The purpose of the transformation could be to convert between different units of measurement, correct for known errors in the input data, or fill in approximate values where there are holes in the input data.</t>
        <t>Aggregator components take multiple incoming data flows and combine them, typically by adding them together, taking possible differences in cadence in the input data flows into account.</t>
        <t>Processor and Aggregator components provide a YANG model of their output data, just like the Collector components, so that all data flowing in the system has a YANG description and is associated with metadata.</t>
        <t>Note: In the current version of the YANG modules, a Processor is simply an Aggregator with a single input and output.  Unless we see a need to keep these two component types separate, we might remove the Processor component and keep it baked in with the Aggregator.</t>
        <figure>
          <name>Example of an Aggregator setting up two streams of telemetry data from two sources to one destination.</name>
          <artwork><![CDATA[
                  +-------------+
                  | AGGREGATOR  |
                  +-------------+
                         |
            +------------+------------+
            v                         v
        ___________               ___________
       /  SOURCE   \             /DESTINATION\
      ( PARTITION 1 )           (  PARTITION  )
      |\___________/| STREAM 1  |\___________/|
      |             | ========> |             |
      |             |           |             |
      |             | STREAM 2  |             |
       \___________/  ===##===>  \___________/
                         ||
        ___________      ||
       /  SOURCE   \     ||
      ( PARTITION 2 )   //
      |\___________/| ==
      |             |
      |             |
      |             |
       \___________/
]]></artwork>
        </figure>
        <t>In this diagram, the sources and destination look like separate TSDBs, which they might be.  They may also be different partitions within the same TSDB.</t>
        <t>Each stream is associated with one or more inputs, one output and a processing operation.  All the input streams are combined using one or more aggregation operations.  Some basic operations have been defined in the Aggregator YANG module, but the set of operations has been designed to be maximally extensible.</t>
        <figure>
          <name>YANG tree diagram of the top Aggregator model.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-aggregator
  +--rw tlm-aggregator
     +--rw aggregations
     |  +--rw aggregation* [id]
     |     +--rw id           string
     |     +--rw input* [source]
     |     |  +--rw source    partition-ref-t
     |     +--rw operation?   -> ../../../operations/operation/id
     |     +--rw output
     |        +--rw destination?   partition-ref-t
]]></sourcecode>
        </figure>
        <t>The operations listed below are basic aggregation operations.  Linear-sum is just adding all the input sources together, with linear interpolation when their data points don't align perfectly in time.  Rolling average is averaging the input flows over a given length of time.  The filter-age drops all data points that are outside the min to max age.  The function allows plugging in any other function the Aggregator may have defined, but more importantly, the operations choice is easily extended using YANG augment to include any other IETF or vendor specified augmentations.</t>
        <figure>
          <name>YANG tree diagram of the Aggregator operations list.</name>
          <sourcecode type="yang-tree"><![CDATA[
module: ietf-tlm-philatelist-aggregator
  +--rw tlm-aggregator
     +--rw operations
        +--rw operation* [id]
           +--rw id                       something
           +--rw (op-type)?
              +--:(linear-sum)
              |  +--rw linear-sum
              +--:(linear-average)
              |  +--rw linear-average
              +--:(linear-max)
              |  +--rw linear-max
              +--:(linear-min)
              |  +--rw linear-min
              +--:(rolling-average)
              |  +--rw rolling-average
              |     +--rw timespan?       something
              +--:(filter-age)
              |  +--rw filter-age
              |     +--rw min-age?        something
              |     +--rw max-age?        something
              +--:(function)
                 +--rw function
                    +--rw name?           something
]]></sourcecode>
        </figure>
      </section>
      <section anchor="the-link-to-assets">
        <name>The Link to Assets</name>
        <t>In <xref target="I-D.draft-palmero-ivy-ps-almo-01"/>, the DMLMO team has built an inventory structure that describes systems, subsystems and their soft- and hardware components.  They are called assets in the DMLMO YANG models.  Some of the collected telemetry data streams may pertain to quite precisely to these assets, and it may be interesting to see the linkage.  For this reason, there is an optional module, ietf-tlm-philatelist-assets, that augments the Philatelist Index structure and adds the possibility to point to a DMLMO asset that the TSDB Partition pertains to.</t>
      </section>
    </section>
    <section anchor="yang-modules">
      <name>YANG Modules</name>
      <section anchor="base-types-module-for-philatelist">
        <name>Base types module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-types {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-types";
  prefix ietf-tlm-philatelist-types;

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines base identities for quantities, 
    measurement units, connection methods, sensor and control types
    for the Telemetry Philatelist framework.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  typedef something { 
    type string;
    description 
      "FIXME: Used when we haven't decided the type yet
      ";
  }
  typedef xpath {
    type string;
    description 
      "FIXME: Proper type needed
      ";
  }
  typedef sample-frequency {
    type string; 
    description 
      "FIXME: Proper type needed
      ";
  }

  // ========== SENSOR-CLASS ==============================
  identity sensor-class {
    description 
      "Sensor's relation to the asset it sits on.
      ";
  }
  identity sc-input {
    base sensor-class;
    description 
      "Sensor reports input quantity of the asset it sits on.
      ";
  }
  identity sc-output {
    base sensor-class;
    description 
      "Sensor reports output quantity of the asset it sits on.
      ";
  }
  identity sc-allocated {
    base sensor-class;
    description 
      "Sensor reports (maximum) allocated quantity of the asset
      it sits on.
      ";
  }

  // ========== SENSOR-QUANTITY ==============================
  identity sensor-quantity {
    description 
      "Sensor's quantity being measured.
      ";
  }
  
  // ========== SENSOR-UNIT ==============================
  identity sensor-unit {
    description 
      "Sensor's unit of reporting.
      ";
  }

  // ========== DASH-TYPE ===================================
  identity dash-type {
    description 
      "The base identity for all dashboard types.
      Dashboards are predefined collections of sensors and/or
      controls that a Network Element publishes towards a Network
      Controller, which uses the dashboard to find use case relevant
      telemetry collection and control points.
      ";
  }

  // ========== DASH-ITEM-TYPE ==============================
  identity dash-item-type {
    description 
      "The base identity for an individual item on a dashboard.
      This is further subdivided into controls and sensors, which
      are even further subdivided into sensors measuring e.g.
      temperature in Celsius.
      ";
  }
  identity sensor-type {
    base dash-item-type;
    description 
      "Sensor's type, i.e. combination of class, quantity and unit.
      Sensor class tells whether the sensor measures some quantity
      on the inside or outside of the component it pertains to.
      E.g. whether it is measuring the incoming our outgoing current
      from a power supply.
      Sensor quantity tells what the sensor is measuring.
      E.g. temperature, current or number of packets
      Sensor unit tells about the sensor measurement unit.
      E.g. Celsius, Farenheit or Kelvin. Or energy in kWh or J.
      ";
  }

  // ========== CONNECTION-METHOD ==============================

  identity connection-method {
    description 
      "Base identity for all kinds of connection methods.
      ";
  }
  identity get-local-file-once {
    base connection-method;
    description 
      "Connection method identity for the case where a file contains
      the dashboard information in lieu of the Network Element 
      itself.
      ";
  }
  identity get-static-url-once {
    base connection-method;
    description
      "Connection method identity for the case where a URL contains
      the dashboard information in lieu of the Network Element
      itself. The URL may or may not be hosted on the Network 
      Element.
      ";
  }
  identity cm-polled {
    base connection-method;
    description 
      "Connection method identity for all mechanisms that are based
      on the client regularly polling the server.
      ";
  }
}
]]></sourcecode>
      </section>
      <section anchor="dashboard-abstract-interface-module-for-philatelist">
        <name>Dashboard abstract interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-dashboard {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-dashboard";
  prefix ietf-tlm-philatelist-dashboard;

  import ietf-tlm-philatelist-types {
    prefix ietf-tlm-philatelist-types;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines the Telemetry Philatelist Dashboard.

    These definitions are used both by Philatelist Network 
    Controllers, and Philatelist Network Elements. Network Elements
    that are unaware of the Philatelist framework may also be 
    covered when a 'proxy mechanism' for the Philatelist information
    is added.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  identity cm-gnmi {
    base ietf-tlm-philatelist-types:connection-method;
    description 
      "Connection method identity for gNMI-based mechanisms.
      ";
  }
  identity cm-restconf {
    base ietf-tlm-philatelist-types:connection-method;
    description
      "Connection method identity for RESTCONF-based mechanisms.
      ";
  }
  identity cm-netconf {
    base ietf-tlm-philatelist-types:connection-method;
    description
      "Connection method identity for NETCONF-based mechanisms.
      ";
  }
  identity cm-redfish {
    base ietf-tlm-philatelist-types:connection-method;
    description
      "Connection method identity for Redfish-based mechanisms.
      ";
  }
  identity gnmi-polling {
    base cm-gnmi;
    base ietf-tlm-philatelist-types:cm-polled;
    description 
      "Connection method identity for gNMI-based polling mechanisms.
      ";
  }
  identity restconf-get-polling {
    base cm-restconf;
    base ietf-tlm-philatelist-types:cm-polled;
    description 
      "Connection method identity for RESTCONF-based polling 
      mechanisms.
      ";
  }
  identity netconf-get-polling {  
    base cm-netconf;
    base ietf-tlm-philatelist-types:cm-polled;
    description 
      "Connection method identity for NETCONF-based polling 
      mechanisms.
      ";
  }
  identity restconf-yang-push-subscription {
    base cm-restconf;
    description 
      "Connection method identity for RESTCONF-based 
      subscription mechanisms.
      ";
  }
  identity netconf-yang-push-subscription {
    base cm-netconf;
    description 
      "Connection method identity for NETCONF-based 
      subscription mechanisms.
      ";
  }
  identity redfish-polling {
    base cm-redfish;
    description 
      "Connection method identity for Redfish-based polling
      mechanisms.
      ";
  }
  grouping access-g {
    description 
      "Grouping describing the basic set of access methods offered by
      Philatelist servers, i.e. Network Elements. The set of access      
      mechanisms may be extended by servers offering additional 
      mechanisms.  This grouping is also used by Network Controllers,
      when they need to find a way to interact with the 
      Network Elements.
      ";

    leaf method {
      type identityref {
        base ietf-tlm-philatelist-types:connection-method;
      }
      default ietf-tlm-philatelist-types:get-local-file-once;
      description 
        "Discriminator pointing out which access mechanism is
        offered. This value controls which detailed configuration
        nodes will be available.
        ";
    }
    container get-local-file-once {
      when "derived-from-or-self(../method, 
            'ietf-tlm-philatelist-types:get-local-file-once')";
      description 
        "The server itself does not offer any access mechanism for
        this dashboard item. Instead, philatelist controllers will
        need to read static values from a local on the controller. 
        How the file appears in a relevant location on the 
        controller is outside the scope of this specification.
        The file format used MUST adhere to RFC9195
        (https://datatracker.ietf.org/doc/rfc9195/)
        ";
      leaf filename { 
        type string; 
        description 
          "The name of the file containing the static data for the
          dashboard item. If the filename is not specified, the 
          controller should look for a file with the same name as the
          connection name.
          ";
      }
    }
    container get-static-url-once {
      when "derived-from-or-self(../method, 
            'ietf-tlm-philatelist-types:get-static-url-once')";
      description 
        "The server points to a URL the controller can use to
        download a file with static values for this dashboard item.
        The URL may or may not be pointing to the server itself, and
        could potentially even point to a URL on the controller 
        itself. How the static file contents pointed to by the URL
        appears on the webserver is outside the scope of this
        specification.
        ";
      leaf url { 
        type ietf-tlm-philatelist-types:something; 
        description 
          "The URL that the controller should read in order to 
          get the static data about the dashboard item.
          The file format used MUST adhere to RFC9195
          (https://datatracker.ietf.org/doc/rfc9195/)
          "; 
      }
    }
    container gnmi-polling {
      when "derived-from-or-self(../method, 'gnmi-polling')";
      description 
        "The server points to a gNMI interface the controller can
        poll at regular intervals to read the current sensor value
        for this dashboard item.
        ";
      leaf encoding { 
        type ietf-tlm-philatelist-types:something; 
        description 
          "The encoding of the data provided by this mechanism, 
          such as self-describing-gpb
          "; 
      } 
      leaf protocol { 
        type ietf-tlm-philatelist-types:something; 
        description 
          "The exact protocol parameters for this gNMI endpoint, 
          such as grpc no-tls
          "; 
      } 
    }
    container restconf-get-polling {
      when "derived-from-or-self(../method, 'restconf-get-polling')";
      description "FIXME";
      leaf xxx { type string; description "FIXME"; }
    }
    container netconf-get-polling {
      when "derived-from-or-self(../method, 'netconf-get-polling')";
      leaf xxx { type string; description "FIXME"; }
      description "FIXME";
    }
    container restconf-yang-push-subscription {
      when "derived-from-or-self(../method, 
            'restconf-yang-push-subscription')";
      leaf xxx { type string; description "FIXME"; }
      description "FIXME";
    }
    container netconf-yang-push-subscription {
      when "derived-from-or-self(../method, 
            'netconf-yang-push-subscription')";
      leaf xxx { type string; description "FIXME"; }
      description "FIXME";
    }
    container redfish-polling {
      when "derived-from-or-self(../method, 'redfish-polling')";
      leaf xxx { type string; description "FIXME"; }
      description "FIXME";
    }
    leaf frequency { 
      when "derived-from(../method, 
            'ietf-tlm-philatelist-types:cm-polled')";
      type ietf-tlm-philatelist-types:sample-frequency; 
      description 
        "The frequency with which the sensor data value collection
        should happen. E.g. once per 30 minutes, once per 5 minutes,
        once per 30 seconds or on-change.
        ";
    }
  }

  grouping provider-g {
    description 
      "Top-level provider grouping.  Devices will implement
      this as a config false container, or as a piece of instance
      data that a controller can read. Controllers implement this
      data structure as config true, configurable and readable by
      the operators.
      ";
    container dashboards {
      description 
        "Each device may support one or more dashboards. 
        Controllers can then choose the most advanced dashboard they 
        are aware of and interested in. A dashboard contains
        a list of sensors and/or controls that a controller may find
        useful for some particular use case.
        ";
      list dashboard {
        key id;
        description 
          "List of dashboards supported by a given device or 
          controller.
          ";
        leaf id {
          type identityref {
            base ietf-tlm-philatelist-types:dash-type;
          }
          description 
            "Formal dashboard id. The dashboard-items in this
            dashboard are found in ../items, and what items are
            available there depends on this dashboard id .
            ";
        }
        list items {
          key tsdb-path;
          description 
            "List of dashboard items. Some of the items are sensors
            which provide data to be read, some may be controls that
            the controller may use.
            ";
          leaf tsdb-path {
            type leafref {
              path ../../../../dash-items/dash-item/tsdb-path;
            }
            description 
              "Path to the sensor or control item on the dashboard.
              The format of the path is TSDB style, i.e. used MUST
              conform to the I-D.draft-kll-yang-label-tsdb, e.g.
              interfaces_interface_statistics_in_unicast_pkts
              Each dashboard item may point to multiple sensors, 
              as in the example above, where each interface would
              have a counter of incoming unicase packets.
              Each dashboard item may occur in more than one 
              dashboard, and is therefore further desribed in 
              ../../../../dash-items/dash-item
              ";
          }
        }
      }
    }
    container dash-items {
      description 
        "Container for all dashboard items. Each item may be part of
        (referenced by) multiple dashboards.
        ";
      list dash-item {
        key tsdb-path;
        description 
          "Dashboard item, a sensor or control item that is part 
          of a dashboard, i.e. a collection of sensors and controls
          relevant for a particular use case.
          Each dashboard item may occur in more than one dashboard.
          ";
        leaf tsdb-path {
          type string;
          description 
            "Path to the sensor or control item on the dashboard.
            The format of the path is TSDB style, i.e. used MUST
            conform to the I-D.draft-kll-yang-label-tsdb, e.g.
            interfaces_interface_statistics_in_unicast_pkts
            Each dashboard item may point to multiple sensors, as in
            the example above, where each interface would have
            a counter of incoming unicase packets.
            ";
        }
        leaf item-type { 
          type identityref { 
            base ietf-tlm-philatelist-types:dash-item-type; 
          }
          mandatory true;
          description 
            "The item type describes the type of dashboard item this
            is, including if it is a sensor or contol, sitting on
            the inside or outside of the parent component, the
            measurement quantity (e.g. temperature) and unit 
            (e.g. Celsius).

            See the ietf-tlm-philatelist-types:dash-item-type for a
            more detailed explanation, or if you intend to define a
            new type of dashboard item.
            ";
        }
        container accuracy {
          when "derived-from(../item-type, 
                'ietf-tlm-philatelist-types:sensor-type')";
          description 
            "The accuracy of the dasboard item (sensor). The
            accuracy described using two parameters. One is the max
            deviation relative to the sensor reading, the other one
            is a constant deviation offset.

            Example 1: if a sensor might produce values between 
            0 and 1000, and the sensor currently reports 555, but 
            the actual value is 531, that could be reported as a
            5% relative error with offset 0.

            Example 2: if a sensor might produce values between 
            0 and 1000, and the sensor currently reports 0, but 
            the actual value is 2, that could be reported as a
            0% relative error with offset 2 (or some slightly
            highger value, e.g. 5).

            The accuracy MUST be described such that there is a 96%
            confidence that the actual value V is within the reported
            value R so that:

              (measured-error) =  | R - V |
              (error-margin)   =  | R * (max-error-relative) | 
                                   + (max-error-offset)
              p( (measured-error) < (error-margin) ) >= 0.96
            ";
          leaf max-error-relative {
            type ietf-tlm-philatelist-types:something;
            description 
              "The part of the accuracy claim that depends on (varies
              in proportion to) the reported value.
              ";
          }
          leaf max-error-offset {
            type ietf-tlm-philatelist-types:something;
            description
              "The part of the accuracy claim that does not depend on
              (does not vary with) the reported value.
              ";
          }
        }
        list label {
          key name;
          description 
            "List of TSDB path labels. A single TSDB path often refer
            to a whole collection of readable sensors. Each such 
            sensor is distinguished by the values associated with
            labels in the path. Those labels are listed here.

            Example: interfaces_interface_statistics_in_unicast_pkts
            might have one label interfaces_interface_name. Concrete
            readouts going into the TSDB might have values like

            Metric: interfaces_interface_statistics_in_unicast_pkts
            Value: 5432100
            Labels:
              host = router-01
              interfaces_interface_name = eth0

            As can be seen in the example, a controller might inject
            labels that are not part of the tsdb-path (host), but
            helps the controller keep track of the incoming data
            streams.
            ";
          reference
            I-D.draft-kll-yang-label-tsdb;
          leaf name {
            type string;
            description 
              "The name of the label, in TSDB path notation.
              E.g. interfaces_interface_name
              ";
          }
          choice value-source {
            description 
              "The source of the values associated with the labels.
              Label values may be provided in several ways:
              + the server may provide values in runtime, in which
                case the runtime-values points to the dashboard item
                to read to get the actual values.
              + the controller or operator may pick one or more
                 values by configuration, in which case they are
                 listed under static-values .
              + the controller may pick one or more values using some
                internal mechanism of its own, in which case they
                will not be visible here.
              ";
            leaf-list static-values {
              type string;
              description 
                "One or more values configured by the controller or
                operator designating which instances of this TSDB
                path to collect data about. 

                Example: if the label name for this label entry is
                interfaces_interface_name, this could be a configured
                list of interface names to collect data about.
                ";
            }
            leaf-list runtime-values {
              type leafref {
                path ../../../dash-item/tsdb-path;
              }
              description 
                "One or more dashboard items to read label values
                from.

                Example: if the label name for this label entry is
                interfaces_interface_name, this could point to a
                dashboard item that collects the names of all 
                interfaces, or all interfaces relevant for a
                particular purpose or customer.
                ";
            }
          }
        }
        choice access-path {
          description 
          "This is the path used by the client (Network Controller)
          when asking the server (Network Element) for data.
          The format of the access-path depends on the specific
          access mechanism. If the access mechanism is YANG-based,
          this access path would be an XPath string. If the access
          mechanism is SNMP, it would be an OID. A redfish access
          mechanism would use a endpoint-local URL.
          The actual path may be constructed in one of several ways.
          ";
          leaf plain-string {
            type string;
            description 
              "The given string is used as is, without substitution
              of any labels or special characters.
              ";
          }
          leaf string-with-labels {
            type string;
            description 
              "The given string contains references of the form

              $(label_name)

              i.e. a dollar-sign, a left-parenthesis, 
              the name of the label - case sensitive and without 
              whitespace - and finally a right-parenthesis.

              This expression refers to the labels-value pairs from

              ../label/name  and  ../label/value-source

              The reference expression is substituted with the
              label value before use.

              Example: The access path for an SNMP GET-based node
              interfaces_interface_statistics_in_unicast_pkts
              might have access path

              1.3.6.1.2.1.2.2.1.11.$(interfaces_interface_num)

              which gives the final OID string

              1.3.6.1.2.1.2.2.1.11.4711

              if the ../label[name='interfaces_interface_num'] value
              is 4711.
              ";
          }
          leaf url-with-labels {
            type string;
            description 
              "The given string contains references of the forms

              {label_name}
              {label_name:3}
              {?label_name}

              etc. as defined in RFC6570.

              This expression refers to the labels-value pairs from

              ../label/name  and  ../label/value-source

              The reference expression is substituted with the
              label value before use according to the RFC6570 rules.

              Example 1: The access path for a NETCONF get-based node
              interfaces_interface_statistics_in_unicast_pkts
              might have access path

              /if:interfaces/interface[name='{interfaces_interface_na
              me}']/statistics/in-unicast-pkts

              Any prefixes used (as if: above) are mapped to the
              corresponding namespace (NETCONF) or module name
              (RESTCONF) using the ../../../prefix-mappings list.

              Example 2: The access path for a Redfish-based node

              Systems_EthernetInterfaces_EthernetInterfaceMetrics_Dro
              ppedPackets

              might have access path

              /redfish/v1/Systems/VM1/EthernetInterfaces/{interfaces_
              interface_num}/EthernetInterfaceMetrics/DroppedPackets
              ";
          }
        }
        leaf access-params {
          type leafref {
            path ../../../accesses/access/id;
          }
          description 
            "Points to the specific access method to be used with
            this dashboard item. 
            ";
        }
      }
    }
    container accesses {
      description 
        "Holds a list of all the access methods that have been
        defined for dashboard items on the Network Element.
        ";
      list access {
        key id;
        description
          "One specific access method to be used with some dashboard
          items.
          ";
        leaf id {
          type string;
          description 
            "Name for this access method.
            ";
        }
        uses access-g;
      }
    }
    container prefix-mappings {
      description 
        "Contains the mappings for prefixes used in the access-path
        to the XML namespace (NETCONF) or module name (RESTCONF).
        ";
      list prefix-mapping {
        key prefix;
        description 
          "List of access-path prefixes and their mapping to
          namespace and module name.
          ";
        leaf prefix {
          type string;
          description 
            "Prefix, as used in the dash-item/access-path.
            The prefix is case sensitive, and should not contain
            the ending colon (:).
            ";
        }
        leaf namespace {
          type string;
          description 
            "XML namespace corresponding to the prefix name.
            Used by NETCONF-based access mechanisms.
            ";
        }
        leaf module-name {
          type string;
          description 
            "YANG module name corresponding to the prefix name.
            Used by RESTCONF-based access mechanisms.
            ";
        }
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="provider-interface-module-for-philatelist">
        <name>Provider interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-provider {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-provider";
  prefix ietf-tlm-philatelist-provider;

  import ietf-tlm-philatelist-dashboard {
    prefix ietf-tlm-philatelist-dashboard;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines the Telemetry Philatelist Provider
    interface.

    This module is used by Network Elements that have built-in
    support for the Philatelist provider interface, or by a proxy
    mechanism representing some/all of them, when not supported
    directly.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  container tlm-provider {
    description 
      "Container with telemetry collection dashboards for
      Network Elements with built-in support for the Philatelist
      collection framework.
      ";
    uses ietf-tlm-philatelist-dashboard:provider-g;
  }
}
]]></sourcecode>
      </section>
      <section anchor="index-interface-module-for-philatelist">
        <name>Index interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-index {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-index";
  prefix ietf-tlm-philatelist-index;

  import ietf-tlm-philatelist-types {
    prefix ietf-tlm-philatelist-types;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    'This YANG module defines the Telemetry Philatelist Index.
    These definitions are for Philatelist Network Controllers.

    A Network Controller with the Collector role programs one or more
    SOURCES (typically Network Elements) to generate a STREAM of 
    telemetry data. The STREAM is sent to a specific DESTINATION
    in a Time Series Database (TSDB).
    
    Each STREAM consists of timestamped sensor values from each
    sensor in a sensor group.

               +-------------+
               |  COLLECTOR  |
               +-------------+                     ___________
                      |                           /DESTINATION\
            +------------------+                 (  PARTITION  )
            v                  v                 |\___________/|
      +------------+    +------------+  STREAM 1 |             |
      |   SOURCE   |    |   SOURCE   |  =======> |             |
      | - sensor 1 |    | - sensor 1 |           |             |
      | - sensor 2 |    | - sensor 4 |  STREAM 2 |             |
      | - sensor 3 |    | - sensor 7 |  =======> |             |
      +------------+    +------------+           |             |
                \\                      STREAM 3 |             |
                  =============================>  \___________/

    '+"
    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  typedef partition-ref-t {
    type leafref { 
      path 
        "/ietf-tlm-philatelist-index:tlm-index"+
        "/ietf-tlm-philatelist-index:partitions"+
        "/ietf-tlm-philatelist-index:partition"+
        "/ietf-tlm-philatelist-index:id"; 
    }
    description 
      "Pointer to a specific TSDB partition 
      (aka. bucket, interval, segment, etc.)
      ";
  }
  grouping tsdb-partition-g {
    description 
      "Grouping for identifying and connecting to a specific TSDB
      partition (aka. bucket, interval, segment, etc.)
      ";
    leaf url { 
      type ietf-tlm-philatelist-types:something; 
      description 
        "The URL to use to connect to the TSDB.
        "; 
    }
    leaf organization { 
      type ietf-tlm-philatelist-types:something; 
      description 
        "The organization this partition belongs to.
        Leaving this unset means the 'default' organization.
        "; 
    }
    leaf partition {
      type ietf-tlm-philatelist-types:something; 
      description 
        "The TSDB partition (aka. bucket, interval, segment, etc.)
        that the collected data is stored in.
        "; 
    }
    container impl-specific {
      description 
        "Implementation specific key-valye pairs for establising and
        maintaining the collection connections.
        ";
      list binding {
        key key;
        description
          "List of key-value bindings. The meaning of these key-value
          pairs is implementation dependent.
          ";
        leaf key { 
          type string; 
          description 
            "The key part of the key-value pair.
            The set of key values that are defined is implementation
            dependent.
            "; 
        }
        choice value-type {
          description 
            "The value part of the key-value pair. The value part may
            have several different formats, and implementations may
            augment yet other formats into this choice.
            ";
          leaf value { 
            type string; 
            description 
              "The value part of the key-value pair as a simple
              string value.
              "; 
          }
          leaf-list values { 
            type string; 
            ordered-by user; 
            description 
              "The value part of the key-value pair as a collection
              of string values.
              "; 
          }
          leaf env-var { 
            type string; 
            description 
              "The value part of the key-value pair. The actual
              value is provided by an operating system environment
              variable. The name of that environment variable is
              given by this leaf. Case sensitive.

              The set of environment variable names that are defined
              is implementation dependent.
              "; 
          }
        }
      }
    }
  }

  container tlm-index {
    description 
      "List of TSDB Partitions referenced by this Network Controller.
      ";
    container partitions {
      description 
        "Container for all the TSDB Partition access information.
        ";
      list partition {
        key id;
        description 
          "TSDB Partition access information for the Partitions that
          this Network Controller is aware of.
          ";
        leaf id { 
          type ietf-tlm-philatelist-types:something; 
          description 
            "The Network Controller's internal identifier for this
            TSDB Partition.
            "; 
        }
        uses tsdb-partition-g;
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="collector-interface-module-for-philatelist">
        <name>Collector interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-collector {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-collector";
  prefix ietf-tlm-philatelist-collector;

  import ietf-tlm-philatelist-types {
    prefix ietf-tlm-philatelist-types;
  }
  import ietf-tlm-philatelist-dashboard {
    prefix ietf-tlm-philatelist-dashboard;
  }
  import ietf-tlm-philatelist-index {
    prefix ietf-tlm-philatelist-index;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    'This YANG module defines the Telemetry Philatelist Collector.
    These definitions are for Philatelist Network Controllers.

    A Network Controller with the Collector role programs one or more
    SOURCES (typically Network Elements) to generate a STREAM of 
    telemetry data. A SOURCE may be a Provider, or a proxy mechanism
    standing in for the Provider.
    The STREAM is then sent to a specific DESTINATION PARTITION
    in a Time Series Database (TSDB). Partitions are also known as
    buckets, intervals, segments, etc. in various implementations.
    
    Each STREAM consists of timestamped sensor values from each
    sensor in a sensor group.

               +-------------+
               |  COLLECTOR  |
               +-------------+                     ___________
                      |                           /DESTINATION\
            +------------------+                 (  PARTITION  )
            v                  v                 |\___________/|
      +------------+    +------------+  STREAM 1 |             |
      |   SOURCE   |    |   SOURCE   |  =======> |             |
      | - sensor 1 |    | - sensor 1 |           |             |
      | - sensor 2 |    | - sensor 4 |  STREAM 2 |             |
      | - sensor 3 |    | - sensor 7 |  =======> |             |
      +------------+    +------------+           |             |
                \\                      STREAM 3 |             |
                  =============================>  \___________/

    '+"
    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  container tlm-collector {
    description 
      "Root container for the Philatelist Collector function.
      ";
    container organizations {
      description 
        "List of organizations that the collected data pertains to.
        Data belonging to one organization will not mix with that of
        another.
        ";
      list organization {
        key name;
        description 
          "Organization that this collection process pertains to.
          ";

        leaf name {
          type string;
          description 
            "Collector's name of the organization.
            ";
        }
        container device-groups {
          description 
            "List of device-groups.
            ";
          list device-group {
            key name;
            description 
              "A device-group contains a group of similar devices
              that will have collection performed in the same way.
              ";
            leaf name {
              type string;
              description 
                "Name of the device-group.
                ";
            }
            leaf-list devices {
              type string;
              description 
                "Points to the devices members of this device-group.
                The exact meaning of these names is implementation
                specific.
                ";
            }
            uses ietf-tlm-philatelist-dashboard:provider-g;
          }
        }

        container tlm-streams {
          description 
            "List of telemetry streams pertainin to this
            organization.
            ";
          list tlm-stream {
            key id;
            description 
              "A stream of telemetry data that is collected from a
              device-group that share a particular dashboard.
              ";
            leaf id { 
              type ietf-tlm-philatelist-types:something; 
              description 
                "Identifier of the telemetry stream.
                "; 
            }
            list sources { 
              key "device-group dash-name";
              description 
                "List of sources to collect from. Each source points
                to a device-group and a dashboard name to collect
                from each device in the device-group.
                ";
              leaf device-group { 
                type leafref { 
                  path ../../../../device-groups/device-group/name;
                }
                description 
                  "The device-group to collect from.
                  "; 
              }
              leaf dash-name { 
                type leafref { 
                  path "../../../../device-groups/device-group/"+
                    "dashboards/dashboard/id";
                }
                description 
                  "The name of the dashboard 
                  "; 
              }
            }
            leaf destination { 
              type ietf-tlm-philatelist-index:partition-ref-t; 
              description 
                "The TSDB Partition (bucket, interval, segment, etc.)
                that the collected telemetry data is sent to.
                "; 
            }
          }
        }
      }
    }
  }

  augment "/tlm-collector/organizations/organization/device-groups/"+
    "device-group/dash-items/dash-item/label/value-source" {
    description 
      "Some additional value-sources that the collector enables
      (that are not available to providers).
      ";
    case controller-managed-value {
      leaf controller-managed-value {
        type empty;
        description
          "The Collector will determine the label value by its
          own discretion.
          ";
      }
    }
    case controller-provided-value {
      leaf controller-provided-value {
        type string;
        description
          "The Collector will determine the label value by its
          own discretion, and that value is configured here.
          ";
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="aggregator-interface-module-for-philatelist">
        <name>Aggregator interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-aggregator {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-aggregator";
  prefix ietf-tlm-philatelist-aggregator;

  import ietf-tlm-philatelist-types {
    prefix ietf-tlm-philatelist-types;
  }
  import ietf-tlm-philatelist-index {
    prefix ietf-tlm-philatelist-index;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    'This YANG module defines the Telemetry Philatelist Aggregator.
    These definitions are for Philatelist Network Controllers.

    An AGGREGATOR ensures data from one or more SOURCE(s) are
    combined into a FLOW using a (sequence of) OPERATIONs (OPs)
    to generate a new data set in the DESTINATION (which could
    be a new collection in the same data storage system as the 
    SOURCE).

                  +-------------+
                  | AGGREGATOR  |
                  +-------------+
                         |
            +------------+------------+
            v                         v
        ___________               ___________
       /  SOURCE   \             /DESTINATION\
      ( PARTITION 1 )           (  PARTITION  )
      |\___________/| STREAM 1  |\___________/|
      |             | ========> |             |
      |             |           |             |
      |             | STREAM 2  |             |
       \___________/  ===##===>  \___________/
                         ||
        ___________      ||
       /  SOURCE   \     ||
      ( PARTITION 2 )   //
      |\___________/| ==
      |             |
      |             |
      |             |
       \___________/

    '+"
    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Restructured as part of the Telemetry Philatelist framework";
    reference
      "RFC XXXX: ...";
  }

  container tlm-aggregator {
    description
      "Root container for the Philatelist Aggregator function.
      ";
    container aggregations {
      description 
        "List of aggregation operations that are applied to a set of
        input telemetry streams in a TSDB Partition to form an output 
        stream in a different TSDB Partition.
        ";
      list aggregation {
        key id;
        description 
          "Each aggregation takes one or more input streams from a 
          TSDB Partition, an operation to apply to them, and points
          to an output stream an another TSDB Partition.
          ";
        leaf id {
          type string;
          description
            "The internal id of this aggregation operation.
            ";
        }
        list input {
          key source;
          description 
            "The list of sources/input streams for the aggregation.
            ";
          leaf source { 
            type ietf-tlm-philatelist-index:partition-ref-t; 
            description 
              "The TSDB Partition (bucket, interval, segment, etc.)
              that the input telemetry data is read from.
              "; 
          }
        }
        leaf operation {
          type leafref {
            path ../../../operations/operation/id;
          }
          description 
            "The operation to apply to the input stream(s) in order
            to compute the output stream.
            ";
        }
        container output {
          description 
            "The TSDB Partition to send the computed output to.
            ";
          leaf destination { 
            type ietf-tlm-philatelist-index:partition-ref-t; 
            description 
              "The TSDB Partition (bucket, interval, segment, etc.)
              that the aggregated telemetry data is sent to.
              "; 
          }
        }
      }
    }
    container operations {
      description 
        "The operations that may be applied during the aggregation.
        ";
      list operation {
        key id;
        description 
          "Details about which operation to apply and how.
          ";
        leaf id { 
          type ietf-tlm-philatelist-types:something; 
          description 
            "The internal id of the operation to apply.
            "; 
        }
        choice op-type {
          description 
            "A choice of basic operation types. This set of choices
            may be extended by other modules agumenting the choice.
            ";
          container linear-sum { 
            description 
            "This operation produces the sum of the input streams.

            Since the data points in the input stream are not
            likely to be perfectly aligned in time, this linear-sum
            operation produces a linear interpolation between each 
            point in the time series.
            
            This works well when all inputs are continuously
            receiving additional data points, and when their 
            frequency is roughly the same. A different summing
            operation should be chosen if this is not the case,
            e.g. most-recent-sum.
            "; 
          }
          container linear-average { description "FIXME"; }
          container linear-max { description "FIXME"; }
          container linear-min { description "FIXME"; }
          container rolling-average {
            description "FIXME";
            leaf timespan { 
              type ietf-tlm-philatelist-types:something; 
              description "FIXME"; 
            }
          }
          container filter-age {
            description "FIXME";
            leaf min-age { 
              type ietf-tlm-philatelist-types:something; 
              description "FIXME"; 
            }
            leaf max-age { 
              type ietf-tlm-philatelist-types:something; 
              description "FIXME"; 
            }
          }
          container function {
            description "FIXME";
            leaf name { 
              type ietf-tlm-philatelist-types:something; 
              description "FIXME"; 
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="assets-interface-module-for-philatelist">
        <name>Assets interface module for Philatelist</name>
        <sourcecode type="yang" markers="true"><![CDATA[
module ietf-tlm-philatelist-assets {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-tlm-philatelist-assets";
  prefix ietf-tlm-philatelist-assets;

  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-assets;
  }
  import ietf-tlm-philatelist-index {
    prefix ietf-tlm-philatelist-index;
  }

  organization
    "IETF GREEN (Getting Ready for Energy-Efficient Networking)
     Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/group/green/about/>
     WG List:  <mailto:green@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jan.lindblad+ietf@for.eco>
     Editor:  Snezana Mitrovic
              <mailto:snmitrov@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines the Telemetry Philatelist linkage to
    DMLMO Assets.
    These definitions are for Philatelist Network Controllers.

    Copyright (c) 2024 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX
    (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
    for full legal notices.
      
    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
    'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
    are to be interpreted as described in BCP 14 (RFC 2119)
    (RFC 8174) when, and only when, they appear in all
    capitals, as shown here.
    ";
  
  revision 2024-04-15 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: ...";
  }

  grouping asset-pointer-g {
      description 
        "Pointer to an LMO asset.
        ";
    leaf pertains-to-asset-class {
      type leafref {
        path /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class;
      }
      must 
        "derived-from-or-self(current(), 'ietf-lmo-assets:asset')";
      must "../pertains-to-asset-id";
      description 
        "The LMO Asset class of the asset.
        ";
    }
    leaf pertains-to-asset-id {
      type leafref {
        path "/ietf-lmo:lmos/ietf-lmo:lmo"+
          "[ietf-lmo:lmo-class=current()/../pertains-to-asset-class]"
          +"/ietf-lmo:inst/ietf-lmo:id";
      }
      description 
        "The LMO Asset id (within the class) of the asset.
        ";
    }
  }

  augment "/ietf-tlm-philatelist-index:tlm-index"+
          "/ietf-tlm-philatelist-index:partitions"+
          "/ietf-tlm-philatelist-index:partition" {
    description 
      "By augmenting an asset pointer into the TSDB Partition Index,
      controller may clarify which LMO Asset the data in the
      Partition pertains to.
      ";
    uses asset-pointer-g;
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="changes-to-be-deleted-by-rfc-editor">
      <name>Changes (to be deleted by RFC Editor)</name>
      <section anchor="from-version-02-to-03">
        <name>From version -02 to -03</name>
        <ul spacing="normal">
          <li>
            <t>Updated author affiliation and document working group</t>
          </li>
          <li>
            <t>Updated references to other documents</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-01-to-02">
        <name>From version -01 to -02</name>
        <ul spacing="normal">
          <li>
            <t>Adopted <xref target="RFC6570"/> style URI Templates in ietf-tlm-philatelist-dashboard</t>
          </li>
          <li>
            <t>Moved up the outlook section, and clarified the relation to existing device side telemetry solutions.</t>
          </li>
          <li>
            <t>Added several informative references to prior work</t>
          </li>
          <li>
            <t>Reformatted YANG modules for shorter lines to fit IETF layout</t>
          </li>
        </ul>
      </section>
      <section anchor="from-version-00-to-01">
        <name>From version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Introduced Dashboard and Index concepts</t>
          </li>
          <li>
            <t>Restructured YANG into three controller modules: collector, index, aggregator</t>
          </li>
          <li>
            <t>Restructured YANG into one device module: provider</t>
          </li>
          <li>
            <t>Restructured YANG common parts into one abstract module: dashboard</t>
          </li>
          <li>
            <t>Split YANG modules, some contents going into poweff-specific modules</t>
          </li>
          <li>
            <t>Renamed remaining YANG modules from -poweff- to -tlm-philatelist-</t>
          </li>
          <li>
            <t>Updated text to reflect new module organization</t>
          </li>
          <li>
            <t>Added optional linkage to DMLMO assets</t>
          </li>
        </ul>
      </section>
      <section anchor="version-00">
        <name>Version -00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6570">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC9195">
          <front>
            <title>A File Format for YANG Instance Data</title>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>There is a need to document data defined in YANG models at design time, implementation time, or when a live server is unavailable. This document specifies a standard file format for YANG instance data, which follows the syntax and semantics of existing YANG models and annotates it with metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9195"/>
          <seriesInfo name="DOI" value="10.17487/RFC9195"/>
        </reference>
        <reference anchor="I-D.draft-kll-yang-label-tsdb-00">
          <front>
            <title>Mapping YANG Data to Label-Set Time Series</title>
            <author fullname="Kristian Larsson" initials="K." surname="Larsson">
              <organization>Deutsche Telekom</organization>
            </author>
            <date day="18" month="October" year="2023"/>
            <abstract>
              <t>   This document proposes a standardized approach for representing YANG-
   modeled configuration and state data, for storage in Time Series
   Databases (TSDBs) that identify time series using a label-set.  It
   outlines procedures for translating YANG data representations to fit
   within the label-centric structures of TSDBs and vice versa.  This
   mapping ensures clear and efficient storage and querying of YANG-
   modeled data in TSDBs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kll-yang-label-tsdb-00"/>
        </reference>
        <reference anchor="I-D.draft-palmero-ivy-ps-almo-01">
          <front>
            <title>Asset Lifecycle Management and Operations: A Problem Statement</title>
            <author fullname="Marisol Palmero" initials="M." surname="Palmero">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Frank Brockners" initials="F." surname="Brockners">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Sudhendu Kumar" initials="S." surname="Kumar">
              <organization>NC State University</organization>
            </author>
            <author fullname="Camilo Cardona" initials="C." surname="Cardona">
              <organization>NTT</organization>
            </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <date day="24" month="April" year="2024"/>
            <abstract>
              <t>   This document presents a problem statement for assets lifecycle
   management and operations.  It describes a framework, the motivation
   and requirements for asset-centric metrics including but not limited
   to, asset adoption, usability, entitlements, supported capabilities,
   and enabled capabilities.  The document also defines an information
   model.  The primaty objectives for the problem statement document is
   to validate and proof that the framework can 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-palmero-ivy-ps-almo-01"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-opsawg-collected-data-manifest-05">
          <front>
            <title>A Data Manifest for Contextualized Telemetry Data</title>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Huawei</organization>
            </author>
            <author fullname="Jean Quilbeuf" initials="J." surname="Quilbeuf">
              <organization>Huawei</organization>
            </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Ignacio Dominguez Martinez-Casanueva" initials="I. D." surname="Martinez-Casanueva">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   Network platforms use Model-driven Telemetry, and in particular YANG-
   Push, to continuously stream information, including both counters and
   state information.  This document documents the metadata that ensure
   that the collected data can be interpreted correctly.  This document
   specifies the Data Manifest, composed of two YANG data models (the
   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
   collection and analytics system in order to keep the collected data
   fully exploitable by the data scientists.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-collected-data-manifest-05"/>
        </reference>
        <reference anchor="I-D.draft-claise-netconf-metadata-for-collection-03">
          <front>
            <title>Per-Node Capabilities for Optimum Operational Data Collection</title>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Huawei</organization>
            </author>
            <author fullname="Munish Nayyar" initials="M." surname="Nayyar">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Adithya Reddy Sesani" initials="A. R." surname="Sesani">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <date day="25" month="January" year="2022"/>
            <abstract>
              <t>   This document proposes a YANG module that provides per-node
   capabilities for optimum operational data collection.  This YANG
   module augments the YANG Modules for describing System Capabilities
   and YANG-Push Notification capabilities.

   This module defines augmented nodes to publish the metadata
   information specific to YANG node-identifier as per ietf-system-
   capabilities datatree.

   Complementary RPCs, based on the same node capabilities, simplify the
   data collection operations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-claise-netconf-metadata-for-collection-03"/>
        </reference>
        <reference anchor="I-D.draft-ietf-nmop-yang-message-broker-integration-06">
          <front>
            <title>An Architecture for YANG-Push to Message Broker Integration</title>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Ahmed Elhassany" initials="A." surname="Elhassany">
              <organization>Swisscom</organization>
            </author>
            <date day="5" month="February" year="2025"/>
            <abstract>
              <t>   This document describes the motivation and architecture of a native
   YANG-Push notifications and YANG Schema integration into a Message
   Broker and YANG Schema Registry.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-nmop-yang-message-broker-integration-06"/>
        </reference>
        <reference anchor="RFC5424">
          <front>
            <title>The Syslog Protocol</title>
            <author fullname="R. Gerhards" initials="R." surname="Gerhards"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document describes the syslog protocol, which is used to convey event notification messages. This protocol utilizes a layered architecture, which allows the use of any number of transport protocols for transmission of syslog messages. It also provides a message format that allows vendor-specific extensions to be provided in a structured way.</t>
              <t>This document has been written with the original design goals for traditional syslog in mind. The need for a new layered specification has arisen because standardization efforts for reliable and secure syslog extensions suffer from the lack of a Standards-Track and transport-independent RFC. Without this document, each other standard needs to define its own syslog packet format and transport mechanism, which over time will introduce subtle compatibility issues. This document tries to provide a foundation that syslog extensions can build on. This layered architecture approach also provides a solid basis that allows code to be written once for each syslog feature rather than once for each transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5424"/>
          <seriesInfo name="DOI" value="10.17487/RFC5424"/>
        </reference>
        <reference anchor="RFC7603">
          <front>
            <title>Energy Management (EMAN) Applicability Statement</title>
            <author fullname="B. Schoening" initials="B." surname="Schoening"/>
            <author fullname="M. Chandramouli" initials="M." surname="Chandramouli"/>
            <author fullname="B. Nordman" initials="B." surname="Nordman"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>The objective of Energy Management (EMAN) is to provide an energy management framework for networked devices. This document presents the applicability of the EMAN information model in a variety of scenarios with cases and target devices. These use cases are useful for identifying requirements for the framework and MIBs. Further, we describe the relationship of the EMAN framework to other relevant energy monitoring standards and architectures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7603"/>
          <seriesInfo name="DOI" value="10.17487/RFC7603"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="RFC9232">
          <front>
            <title>Network Telemetry Framework</title>
            <author fullname="H. Song" initials="H." surname="Song"/>
            <author fullname="F. Qin" initials="F." surname="Qin"/>
            <author fullname="P. Martinez-Julia" initials="P." surname="Martinez-Julia"/>
            <author fullname="L. Ciavaglia" initials="L." surname="Ciavaglia"/>
            <author fullname="A. Wang" initials="A." surname="Wang"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>Network telemetry is a technology for gaining network insight and facilitating efficient and automated network management. It encompasses various techniques for remote data generation, collection, correlation, and consumption. This document describes an architectural framework for network telemetry, motivated by challenges that are encountered as part of the operation of networks and by the requirements that ensue. This document clarifies the terminology and classifies the modules and components of a network telemetry system from different perspectives. The framework and taxonomy help to set a common ground for the collection of related work and provide guidance for related technique and standard developments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9232"/>
          <seriesInfo name="DOI" value="10.17487/RFC9232"/>
        </reference>
        <reference anchor="Redfish" target="https://www.dmtf.org/standards/redfish">
          <front>
            <title>DMTF Redfish</title>
            <author>
              <organization/>
            </author>
            <date year="2025" month="January" day="13"/>
          </front>
        </reference>
        <reference anchor="Sensor_Service_Methods" target="https://community.se.com/t5/DCE-web-services-API/Sensor-Service-Methods/ta-p/446584">
          <front>
            <title>Schneider Electric Sensor Service Methods</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="June" day="20"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2275?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Kristian Larsson has provided invaluable insights, experience and validation of the design.  Many thanks to the entire POWEFF team for their committment, flexibility and hard work behind this.  Thanks to James Henderson for the review, a number of small fixes and several good susggestions.  Hat off to Benoît Claise, who inspires by the extensive work produced in IETF over the years, and in this area in particular.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
cZQMCc3OA+lw1QLINjCBg+ZJAf2nK9igI3i4hE0OmAe5dkRlCHP/C3JbxN4l
8yWygML0RLMkYx1cp/OJOv/T+bPTp3wGUGX07h0+PX5+9EI9P/muJG5cnb94
/pJfQVUSv4IqojulVhIRBNXRyxN8jR8BFnWzHCj1BDcQj8k+tgMpcYHXA8JQ
N0IiCCQC2jZriFq6ohP2cgmj09xQt4VzOwFOKgIeYAyrLnoiWCG2iSBe6l2b
i5QhfIccVtilJd18hJzEbrFuhlS7qopm8qLeQ80rELK5NKdZ7UhY9kQOd3wl
zLq+/l1OxeAqUtwennSPIMDsizwaX/ZEX4FLWRTRDHWVpeFyA16Rz6BzyJl8
8Gmm4240F+NQNBHpNKtItIIZvIpXTKh8CgiSrUuzpgnd8oZMsSCPTCkKq6We
6DSJ04mVYly55QWQKtERlUAnEmCIDOWIRjny+a0sSc/nbDKhRosiZr6fAN+q
GBKJw4pB+Pqeq2cXCXucgjglogAs4l/+5V86nYOBct5E9fUSbsM/35n+23//
X/8p/df/Vv3bf07/7b+X1Z2f1Z+nyWX/2dFFf3nZx5d/JvWjUkd6JbI7ZbWc
oOiKeg5glOAKUzRx5LDOV1mereZlp28bdazdAr7QtN4csq71671zIhm+Urfk
Tkh5Kn+XQ3e971D/A3LZFV4QKDbhtB5bMZGlTjgZuM+Aa3vPfzi/2Ovxv+rF
Kf19dvzPP5ycHT/Gv8+/P3r2zPzRkTfOvz/94dlj+5dt+ej0+fPjF4+5MTxV
3qPO3vOjP+0x5d47fXlxcvri6NkenzFXxRhpztYeB2QLy46Hzd89evk//+vB
A8DqfwcE5t7BwZdAivjLFwefA7EkBQqPlmfpSr7CcV51AD3jqCB1EVzS42iR
VBFqaICvKi9zEOSRIYZt++TPCJmfD9VvR+PFwYNv5AEu2HuoYeY9JJjVn9Qa
MxAbHjUMY6DpPQ8g7c/36E/edw135+Fvv0V+RPUPvvj2m06o712SJoKIVQEc
V57ms5VWMwMAO3z1fPmQaecJXccJI7e/q1oZwHwDiurMeRXzEm47Ms0dNir6
EH3o6oHfj1C8IMGdVH0iANBNLdIBKaazaAH7CGw8SQ+AkCXyjEboX7B+R9Qg
VpIYaDMI65USRGcgaEbgSApt8HgZVZdmXvQNJ6dQWASGH2gzHNpSqy/0/VHS
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
c2QBAA==

-->

</rfc>
