Internet-Draft GREEN-PEM-YANG February 2026
Benoit, et al. Expires 7 August 2026 [Page]
Workgroup:
GREEN
Internet-Draft:
draft-bcmj-green-power-and-energy-yang-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
C. Benoit
Everything OPS
C. Gen
Huawei
M. Palmero
Individual
J. Lindblad
All For Eco

Power and Energy YANG Module

Abstract

This document defines the YANG data model for Power and Energy monitoring of devices within or connected to communication networks.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 7 August 2026.

Table of Contents

1. Introduction

This document defines a YANG data model for Power and Energy Monitoring and control of devices within or connected to communication networks, for the use cases document in [I-D.ietf-green-use-cases-00].

The data model includes both the monitoring and control of Energy Objects for networked devices.

This YANG data model is based on the the "GREEN framework" [I-D.belmq-green-framework-06], following the "GREEN terminology" [I-D.ietf-green-terminology-00].

Power and Energy Monitoring and Control can be applied to devices in communication networks. All identifiable devices with measurable or representable Power and Energy characteristics fall within the scope of this specification. Target devices include (but are not limited to) routers, switches, Power over Ethernet (PoE) endpoints, smart PDU, storage and compute servers, etc.

Where applicable, device monitoring extends to the components of the device as well as software and service running on the device. As a result, the metrics to be monitored include Device Level Energy Efficiency (DLEE), Component Level Energy Efficiency (CLEE) and potential Service Level Energy Efficiency (SLEE) at the orchestrator-level, etc. For example, a router can contain components such as Line Processing Unit (LPU), Switch Fabric Unit (SFU), Main Processing Unit (MPU).

1.1. Terminology

This document makes use of the terms defined in [I-D.ietf-green-terminology-00]:

- Power
- Energy
- Energy Management
- Energy Monitoring
- Energy Control
- Energy Efficiency/Energy Efficiency Ratio
- Device Level Energy Efficiency (DLEE)
- Component Level Energy Efficiency (CLEE)
- Service Level Energy Efficiency (SLEE)

This document makes use of the terms defined in [I-D.belmq-green-framework-06]

- Energy Object

The terms reused from [I-D.ietf-green-terminology-00] and [I-D.belmq-green-framework-06] are capitalized in this specification.

This document uses the terms Power and Energy in accordance with [I-D.ietf-green-terminology-00]. Power refers to the instantaneous rate at which a device consumes or produces electrical energy (typically expressed in Watts). Energy, by contrast, represents the cumulative amount of work performed over time (typically expressed in Joules or Watt-hours). Both concepts are required within this YANG module. Power enables real-time monitoring, control, and optimization of device operation, while Energy provides a time-integrated view necessary for accounting, reporting, and even for sustainability analysis. This specification includes both Power and Energy attributes.

The terminology for describing YANG modules is defined in [RFC7950]. The meanings of the symbols in the YANG tree diagrams are defined in [RFC8340].

2. The GREEN Framework

The "GREEN framework" described in [I-D.belmq-green-framework-06] covers monitoring and controlling devices and components where monitoring includes measuring Power, Energy, demand and attributes of Power.

For the whole picture of the monitoring interfaces and the relevant requirements, please refer to "GREEN reference model" in section 4 in [I-D.belmq-green-framework-06].

3. Power and Energy Data Model

The Power and Energy Data Model reports the Power and Energy consumption of each Energy Object as well as the units, sign, measurement accuracy, etc. A containment tree view of the Power and Energy Monitoring is presented.

module: ietf-power-and-energy
  +--ro energy-objects
     +--ro energy-entry* [object-id]
        +--ro object-id              string
        +--ro source-component-id?   -> /hw:hardware/component/name
        +--ro power
        |  +--ro instantaneous-power     int32
        |  +--ro nameplate-power?        uint32
        |  +--ro unit-multiplier         identityref
        |  +--ro data-source-accuracy?   identityref
        |  +--ro power-factor?           power-factor
        |  +--ro measurement-local?      boolean
        +--ro energy
           +--ro total-energy-consumed?   uint64
           +--ro total-energy-delivered?  uint64
           +--ro unit-multiplier?         identityref
           +--ro data-source-accuracy?    identityref
           +--ro measurement-local?       boolean

4. Relationship to the Hardware YANG Data Model

The ietf-hardware YANG module [RFC8348] is required by the Power and Energy YANG module. In the ietf-hardware YANG model, there are three identifiers for hardware components, which are "name", "physical-index" and "uuid". Among them, "name" is the key to "List of components", "physical-index" matches entPhysicalIndex in the legacy Entity MIB [RFC6933] if it exists, and UUID is the Universally Unified IDentifier [RFC4122] of the component.

In the Power and Energy YANG Module defined in this specification, there is a leaf named "source-component-id" which refers to the component name in the ietf-hardware model. The "source-component-id" can in turn reuse the UUID in the ietf-hardware YANG module.

The mapping between energy-object entries in this YANG Module and the hardware-components in ietf-hardware YANG module [RFC8348] is designed to be 1:1, architecturally aligning each energy-entry with exactly one physical hardware component via source-component-id.

There are also cases where the controllers also generate its own set of UUIDs for the hardware (components). In such a case, it might be necessary to document the mappings between the UUIDs generated on the hardware side and the UUIDs on the controller side. Basically, the devices (such as routers) generate the UUID and the controller can query it.

The ietf-hardware YANG module [RFC8348] allows to discover all the device components, including the containment tree, and the parent/child relationship, which is important for energy/power aggregation (see the contains-child relationship in RFC 8348).

5. Relationship to the EMAN Work

The EMAN IETF Working Group (https://datatracker.ietf.org/wg/eman/about/) is a concluded Working Group that produces a couple of RFCs in the domain of Power and Energy. The Working Group produced MIB modules for monitoring and control for power and energy, for the context information, for battery monitoring, and an extension to the ENITY-MIB to add the UUID definition [RFC6933].

For various reasons, those MIB modules were not implemented by vendors.

The Power and Energy data model defined in this specification use the Monitoring and Control MIB for Power and Energy [RFC7460] as a starting point to discuss the solution to the different use cases in [I-D.ietf-green-use-cases-00].

However, it has not been the goal to simply map the MIB module to a YANG module. The changes compared to the EMAN MIB modules are mainly due to the alignment with the up-to-date requirements of the network carriers on Energy Efficiency. Compared to the MIB modules, some definitions and types are optimized, some new Energy Objects are added and some legacy Energy Objects are removed accordingly.

6. Power and Energy YANG Module

This YANG Module is used to monitor and control Power and Energy usage of network devices and the components on these devices.

<CODE BEGINS>
module ietf-power-and-energy {
  yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-power-and-energy";
  prefix eo;

  import ietf-hardware {
    prefix hw;
    reference
      "RFC 8348: A YANG Data Model for Hardware Management";
  }

  organization
    "IETF GREEN Working Group";

  contact
    "WG Web: <https://datatracker.ietf.org/wg/green/>
     WG List: <mailto:green@ietf.org>";



  description
    "This YANG module specifies for Power and Energy monitoring and
     control of devices within or connected to communication
     networks.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  revision 2026-01-22 {
    description
      "Initial revision";
    reference
      "RFC XXXX: Energy Object YANG Data Model";
  }

  identity data-source-accuracy {
    description
      "Base identity for all possible data accuracy types.
       This identity serves as the root for a hierarchy of accuracy
       types, allowing for extensibility while maintaining alignment
       with current and future industry standards.

       The hierarchy, as defined in this YANG module, is as follows.
       Other modules may extend this hierarchy with additional
       accuracy base- and sub-types as needed.

       data-source-accuracy
        ├── accuracy-like-parent
        ├── accuracy-unknown
        │    └── accuracy-unavailable
        ├── accuracy-estimated
        │    ├── accuracy-static
        │    ├── accuracy-historic
        │    └── accuracy-learned
        └── accuracy-measured
             ├── accuracy-measured-bronze
             │    ├── accuracy-measured-bronze-1
             │    ├── accuracy-measured-bronze-10
             │    ├── accuracy-measured-bronze-100
             │    └── accuracy-measured-bronze-1000
             ├── accuracy-measured-silver
             │    └── accuracy-measured-silver-...
             ├── accuracy-measured-gold
             │    └── accuracy-measured-gold-...
             ├── accuracy-measured-red
             │    └── accuracy-measured-red-...
             └── accuracy-measured-ones

       The accuracy levels under accuracy-measured are based on
       percent-wise accuracy classes:
          bronze:  +/- 30%
          silver:  +/- 10%
          gold:    +/- 5%
          red:     +/- 2%

       In addition, the accuracy-measured-ones identity indicates
       a power data measurement with all digits valid, except trailing
       zeros.

       Since percent-wise accuracy works poorly for very small
       values, standards such as IEC 62053, IEC 61850-7-4 and
       IEEE 1451 define accuracy classes based on a combination of
       percent-wise accuracy and absolute accuracy thresholds.
       E.g. +/-1 % of reading  +  +/-0.05 absolute units.

       Similarly, for each percent-wise accuracy class, this module
       defines a few absolute tolerance classes, indicated by
       suffixes to the accuracy identity names. The suffixes indicate
       absolute accuracy thresholds:
          no suffix:   +/-0.5  absolute units
          -1:          +/-1    absolute unit
          -10:         +/-10   absolute units
          -100:        +/-100  absolute units
          -1000:       +/-1000 absolute units
       Thus, for example, accuracy-measured-gold-10 indicates
       a power data measurement with an accuracy of either
       +/-5% or +/-10 absolute units, whichever is larger.

       For example, a power sensor reading might report a value
       of 16250, with unit multiplier of milli (10^-3), under
       accuracy-measured-gold-10. This indicates that the actual
       power value is between 16.2375 and 16.2625 Watts, since
       5% of 16.250 Watts is 0.8125 Watts, which is greater than
       the absolute threshold of 10 milliwatts (0.010 W).

       At another time, the same sensor might report a value
       of 150, with unit multiplier of milli (10^-3), under
       accuracy-measured-gold-10. This indicates that the actual
       power value is between 0.140 and 0.160 Watts, since 5% of
       0.150 Watts is only 0.0075 Watts, which is less than the
       absolute threshold of 10 milliwatts (0.010 W).";
  }
  identity accuracy-unknown {
    base data-source-accuracy;
    description
      "The accuracy of the power data is unknown.";
  }
  identity accuracy-unavailable {
    base accuracy-unknown;
    description
      "A power data is not available for some reason, such
       as a sensor failure or a component being powered off.";
  }
  identity accuracy-like-parent {
    base data-source-accuracy;
    description
      "The accuracy of the power/energy data is the same as this energy
       object's parent object. This identity is useful for hierarchical
       energy objects where child objects inherit the accuracy
       characteristics.";
  }
  identity accuracy-estimated {
    base data-source-accuracy;
    description
      "The power data is estimated, perhaps based on a model,
       history or calculation rather than a direct measurement.";
  }
  identity accuracy-static {
    base accuracy-estimated;
    description
      "The power data is based on static data, such as
       manufacturer specifications, datasheet of typical power values
       or nameplate ratings, rather than real-time measurements.";
  }
  identity accuracy-historic {
    base accuracy-estimated;
    description
      "The power data is based on an historic measurement data
       for this specific system and usage pattern.";
  }
  identity accuracy-learned {
    base accuracy-estimated;
    description
      "The power data is based on an machine learning
       model prediction.";
  }
  identity accuracy-measured {
    base data-source-accuracy;
    description
      "The power data is a direct, real-time measurement
       from a sensor.";
  }
  identity accuracy-measured-bronze {
    base accuracy-measured;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
        |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 0.5";
  }
  identity accuracy-measured-bronze-1 {
    base accuracy-measured-bronze;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 1";
  }
  identity accuracy-measured-bronze-10 {
    base accuracy-measured-bronze;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 10";
  }
  identity accuracy-measured-bronze-100 {
    base accuracy-measured-bronze;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 100";
  }
  identity accuracy-measured-bronze-1000 {
    base accuracy-measured-bronze;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 30% OR |actual-sensor| ≤ 1000";
  }
  identity accuracy-measured-silver {
    base accuracy-measured;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
        |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 0.5";
  }
  identity accuracy-measured-silver-1 {
    base accuracy-measured-silver;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 1";
  }
  identity accuracy-measured-silver-10 {
    base accuracy-measured-silver;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 10";
  }
  identity accuracy-measured-silver-100 {
    base accuracy-measured-silver;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 100  ";
  }
  identity accuracy-measured-silver-1000 {
    base accuracy-measured-silver;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 10% OR |actual-sensor| ≤ 1000";
  }
  identity accuracy-measured-gold {
    base accuracy-measured;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 0.5";
  }
  identity accuracy-measured-gold-1 {
    base accuracy-measured-gold;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 1";
  }
  identity accuracy-measured-gold-10 {
    base accuracy-measured-gold;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 10";
  }
  identity accuracy-measured-gold-100 {
    base accuracy-measured-gold;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 100";
  }
  identity accuracy-measured-gold-1000 {
    base accuracy-measured-gold;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 5% OR |actual-sensor| ≤ 1000";
  }
  identity accuracy-measured-red {
    base accuracy-measured;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 0.5";
  }
  identity accuracy-measured-red-1 {
    base accuracy-measured-red;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 1";
  }
  identity accuracy-measured-red-10 {
    base accuracy-measured-red;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 10";
  }
  identity accuracy-measured-red-100 {
    base accuracy-measured-red;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 100";
  }
  identity accuracy-measured-red-1000 {
    base accuracy-measured-red;
    description
      "The power data is a direct, real-time measurement
       from a sensor with precision and accuracy such that
       |actual-sensor| ≤ sensor * 2% OR |actual-sensor| ≤ 1000";
  }
  identity accuracy-measured-ones {
    base accuracy-measured;
    description
      "The power data is a direct, real-time measurement
       from a sensor with all digits valid, except trailing zeros.
       For example, a sensor reading of 12300 represents
       a sensor value between 12250 and 12350.";
  }

  typedef power-factor {
    type uint8 {
      range "0 .. 100";
    }
    default 100;
    description
      "The percent value of the power factor measurement.
       Leaf often omitted, implying 100%.";
    reference
      "Replaces RFC 7460: eoPowerCurrentType object";
  }

  identity power-state {
    description
      "Base identity for all possible power states. This identity
       serves as the root for a hierarchy of power states, allowing
       for extensibility while maintaining alignment with the IANA
       Power State Set Registry.";
    reference
      "IANA: Power State Set Registry";
  }

  identity unit-multiplier {
    description
      "Base identity for unit multipliers as defined in IEC 61850-7-3
       Annex A. These represent exponents of 10 for scaling units
       associated with the integer units used to measure the power or
       energy.
           yocto(-24),   -- 10^-24
           zepto(-21),   -- 10^-21
           atto(-18),    -- 10^-18
           femto(-15),   -- 10^-15
           pico(-12),    -- 10^-12
           nano(-9),     -- 10^-9
           micro(-6),    -- 10^-6
           milli(-3),    -- 10^-3
           units(0),     -- 10^0
           kilo(3),      -- 10^3
           mega(6),      -- 10^6
           giga(9),      -- 10^9
           tera(12),     -- 10^12
           peta(15),     -- 10^15
           exa(18),      -- 10^18
           zetta(21),    -- 10^21
           yotta(24)     -- 10^24
        ";
    reference
      "RFC 7460: UnitMultiplier";
  }
  identity multiplier-yocto {
    description
      "Represents a multiplier of 10^-24 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-zepto {
    description
      "Represents a multiplier of 10^-21 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-atto {
    description
      "Represents a multiplier of 10^-18 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-femto {
    description
      "Represents a multiplier of 10^-15 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-pico {
    description
      "Represents a multiplier of 10^-12 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-nano {
    description
      "Represents a multiplier of 10^-9 associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-micro {
    description
      "Represents a multiplier of 10^-6 (0.000001) associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-milli {
    description
      "Represents a multiplier of 10^-3 (0.001) associated with the
       integer units used to measure the power or energy.";
  }
  identity multiplier-units {
    description
      "Represents a multiplier of 10^0 (1) associated with
       the integer units used to measure the power or energy.";
  }
  identity multiplier-kilo {
    description
      "Represents a multiplier of 10^3 (1,000) associated with the
       integer units used to measure the power or energy.";
    reference
      "RFC 7460: UnitMultiplier";
  }
  identity multiplier-mega {
    description
      "Represents a multiplier of 10^6 (1,000,000) associated with
       the integer units used to measure the power or energy.";
  }
  identity multiplier-giga {
    description
      "Represents a multiplier of 10^9 (1,000,000,000) associated
       with the integer units used to measure the power or energy.";
  }
  identity multiplier-tera {
    description
      "Represents a multiplier of 10^12 associated
       with the integer units used to measure the power or energy.";
  }
  identity multiplier-peta {
    description
      "Represents a multiplier of 10^15 associated
       with the integer units used to measure the power or energy.";
  }
  identity multiplier-exa {
    description
      "Represents a multiplier of 10^18 associated
       with the integer units used to measure the power or energy.";
  }
  identity multiplier-zetta {
    description
      "Represents a multiplier of 10^21 associated
       with the integer units used to measure the power or energy.";
  }
  identity multiplier-yotta {
    description
      "Represents a multiplier of 10^24 associated
       with the integer units used to measure the power or energy.";
  }

  container energy-objects {
    description
      "Energy objects container for power and energy attributes.";
    reference
      "RFC 7460: eoPowerTable";
    config false;

    list energy-entry {
      key "object-id";
      description
        "Power and energy entry for an energy object, indexed by object id.
         Each entry contains the complete set of power and energy attributes
         for a specific physical component.";
      reference
        "RFC 7460: EoPowerEntry";

      leaf object-id {
        type string;
        description
          "An identifier that uniquely identifies the energy object
          in an energy object.";
      }

      leaf source-component-id {
        type leafref {
          path "/hw:hardware/hw:component/hw:name";
        }
        description
          "Reference to the component name in the ietf-hardware
          model. This leaf creates a direct semantic link between the
          power/energy attributes and the physical component they describe.
          ";
      }

      container power {
        description
          "Container for power measurement attributes.";
        reference
          "RFC 7460: eoPowerEntry attributes";
        leaf instantaneous-power {
          type int32;
          units "Watts";
          mandatory true;
          description
            "The power usage measurement for the energy object right now.
            This value represents the instantaneous power consumption
            of the component. This value is specified in SI units of watts
            with the magnitude of watts (milliwatts, kilowatts, etc.) indicated
            separately as unit-multiplier in this container. Positive values
            indicate power consumption, while negative values can indicate power
            generation (e.g., for devices with battery backup or
            renewable energy sources).";
          reference
            "RFC 7460: eoPower object";
        }

        leaf nameplate-power {
          type uint32;
          units "Watts";
          description
            "The nameplate power rating of an energy object. This is
            the maximum power that the energy object is designed to consume or
            produce, as specified by the manufacturer. Essential for
            power budget calculations and capacity planning.";
          reference
            "RFC 7460: eoPowerNameplate object";
        }

        leaf unit-multiplier {
          type identityref {
            base unit-multiplier;
          }
          mandatory true;
          description
            "The unit multiplier used to measure the power.
            This multiplier applies to both instantaneous-power and nameplate-power
            values, allowing representation of power values from milliwatts
            to gigawatts using integer arithmetic.";
          reference
            "RFC 7460: eoPowerUnitMultiplier object";
        }

        leaf data-source-accuracy {
          type identityref {
            base data-source-accuracy;
          }
          default accuracy-like-parent;
          description
            "The accuracy of the power data source. Indicates whether
            the data source is a direct measurement, an estimate, or
            unavailable and also the accuracy level of the data source.
            By default, the accuracy is inherited from the parent energy
            object, facilitating hierarchical accuracy definitions
            without the need to specify accuracy at every level.
            This metadata is crucial for network management
            applications to assess the reliability and accuracy of the
            power data.";
          reference
            "RFC 7460: eoPowerMeasurementCaliber object";
        }

        leaf power-factor {
          type power-factor;
          description
            "The percent value of the power factor measurement for the
            energy object. This information is important for
            understanding the electrical characteristics of the energy object
            and for correctly interpreting the power data.";
          reference
            "Replaces RFC 7460: eoPowerCurrentType object";
        }
        leaf measurement-local {
          type boolean;
          description
            "Indicates whether the power measurement is local (true) or
             remote (false). A local measurement is taken directly at
             the energy object, while a remote measurement is collected from
             an external source. This information can be useful for
             troubleshooting and understanding the data source.";
           reference
             "RFC 7460: eoPowerMeasurementLocal object";
        }
      }
      container energy {
        description
          "Container for energy measurement attributes.";
        reference
          "RFC 7460: eoEnergyEntry attributes";

        leaf total-energy-consumed {
          type uint64;
          units "Watt-hours";
          description
            "The total cumulative energy consumed by the energy object
            since the last reset. This value is specified as
            watt-hours with the magnitude of watt-hours (milliwatt-hours,
            kilowatt-hours, etc.) indicated separately as unit-multiplier
            in this container. This value is useful for tracking
            overall energy usage over time for billing, reporting,
            or optimization purposes.";
          reference
            "RFC 7460: eoEnergyConsumed object";
        }

        leaf total-energy-delivered {
          type uint64;
          units "Watt-hours";
          description
            "The total cumulative energy delivered by the energy object
            since the last reset. This value is specified as
            watt-hours with the magnitude of watt-hours (milliwatt-hours,
            kilowatt-hours, etc.) indicated separately as unit-multiplier
            in this container. This value is relevant for energy objects
            capable of generating power, such as those with renewable
            energy sources or battery backup systems, or capable of providing
            energy to other energy objects (e.g., PoE switches).";
          reference
            "RFC 7460: eoEnergyProduced object";
        }
        leaf unit-multiplier {
          type identityref {
            base unit-multiplier;
          }
          description
            "This multiplier applies to both total-energy-consumed
             and total-energy-delivered values. It determines the scale
             of the energy measurements, allowing representation of
             energy values from milliwatt-hours to gigawatt-hours
             using integer arithmetic.";
          reference
            "RFC 7460: eoPowerUnitMultiplier object";
        }

        leaf data-source-accuracy {
          type identityref {
            base data-source-accuracy;
          }
          default accuracy-like-parent;
          description
            "The accuracy of the energy data source. Indicates whether
            the data source is a direct measurement, an estimate, or
            unavailable and also the accuracy level of the data source.
            By default, the accuracy is inherited from the parent energy
            object, facilitating hierarchical accuracy definitions
            without the need to specify accuracy at every level.
            This metadata is crucial for network management
            applications to assess the reliability and accuracy of the
            energy data.";
          reference
            "RFC 7460: eoPowerMeasurementCaliber object";
        }
        leaf measurement-local {
          type boolean;
          description
            "Indicates whether the energy measurement is local (true) or
             remote (false). A local measurement is taken directly at
             the energy object, while a remote measurement is collected from
             an external source. This information can be useful for
             troubleshooting and understanding the data source.";
           reference
             "RFC 7460: eoPowerMeasurementLocal object";
        }
      }
    }
  }
}


<CODE ENDS>

7. Operational Considerations

Heterogeneous sensor capabilities across components complicate power and energy aggregation. Operators must use the data-source-accuracy identities (e.g., accuracy-measured-bronze vs. accuracy-estimated) to weight data reliability carefully before aggregating Power (instantaneous-power) and Energy (total-energy-consumed and/or total-energy-delivered) values to avoid skewing Device-Level Energy Efficiency (DLEE) metrics.

Operators might not always be interested to get the individual component accuracy. What counts is the device level or domain level, identity accuracy-like-parent is introduced to meet their demands. From an implementation point of view, to facilitate data collection and aggregation on runtime and avoid post-aggregation data confidence interval issues, operators and implementers should use as much as possible this accuracy-like-parent identity.

YANG Push support eliminates device-side bucket storage by streaming energy telemetry directly to controller-side via subscriptions. Operators must verify the 'yang-push' bundle is enabled and validate push-max-operational limits accommodate all component subscriptions, preventing notification flooding while avoiding memory overhead on the device.

8. Security Considerations

This section will be completed once the YANG module is complete, according to https://wiki.ietf.org/group/ops/yang-security-guidelines.

This section is modeled after the template described in Section 3.7.1 of [RFC-to-be draft-ietf-netmod-rfc8407bis].

The Power and Energy YANG module defines a data model that is designed to be accessed via YANG-based management protocols, such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based management protocols (1) have to use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use mutual authentication.

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

9. IANA Considerations

This document requests IANA to register the YANG module "ietf-power-energy-monitoring".

Note to IANA: RFC XXXX must be replaced by the newly assigned RFC number.

10. Acknowledgments

This work has benefited from the regular discussions on the GREEN Design Meetings. The authors wish to thank the WG chairs, Rob Wilton and Diego Lopez, for organizing the recurring calls and progressing the work. The authors also wish to thank the following individuals, who provided helpful comments and reviews to this document.

11. References

11.1. Normative References

[I-D.ietf-green-terminology-00]
Chen, G., Boucadair, M., Wu, Q., Contreras, L. M., and M. P. Palmero, "Terminology for Energy Efficiency Network Management", Work in Progress, Internet-Draft, draft-ietf-green-terminology-00, , <https://datatracker.ietf.org/doc/html/draft-ietf-green-terminology-00>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC7460]
Chandramouli, M., Claise, B., Schoening, B., Quittek, J., and T. Dietz, "Monitoring and Control MIB for Power and Energy", RFC 7460, DOI 10.17487/RFC7460, , <https://www.rfc-editor.org/rfc/rfc7460>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8348]
Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A YANG Data Model for Hardware Management", RFC 8348, DOI 10.17487/RFC8348, , <https://www.rfc-editor.org/rfc/rfc8348>.

11.2. Informative References

[I-D.belmq-green-framework-06]
Claise, B., Contreras, L. M., Lindblad, J., Palmero, M. P., Stephan, E., and Q. Wu, "Framework for Energy Efficiency Management", Work in Progress, Internet-Draft, draft-belmq-green-framework-06, , <https://datatracker.ietf.org/doc/html/draft-belmq-green-framework-06>.
[I-D.ietf-green-use-cases-00]
Stephan, E., Palmero, M. P., Claise, B., Wu, Q., Contreras, L. M., and C. J. Bernardos, "Use Cases for Energy Efficiency Management", Work in Progress, Internet-Draft, draft-ietf-green-use-cases-00, , <https://datatracker.ietf.org/doc/html/draft-ietf-green-use-cases-00>.
[RFC4122]
Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, DOI 10.17487/RFC4122, , <https://www.rfc-editor.org/rfc/rfc4122>.
[RFC6933]
Bierman, A., Romascanu, D., Quittek, J., and M. Chandramouli, "Entity MIB (Version 4)", RFC 6933, DOI 10.17487/RFC6933, , <https://www.rfc-editor.org/rfc/rfc6933>.

Authors' Addresses

Benoit Claise
Everything OPS
Gen Chen
Huawei
Marisol Palmero
Individual
Jan Lindblad
All For Eco