Skip to main content

GREEN Controller YANG
draft-swepcarl-green-controller-yang-00

Document Type Active Internet-Draft (individual)
Author Jan Lindblad
Last updated 2026-10-16
RFC stream (None)
Intended RFC status (None)
Formats
Yang Validation 0 errors, 4 warnings
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-swepcarl-green-controller-yang-00
Getting Ready for Energy-Efficient Networking                J. Lindblad
Internet-Draft                                               All For Eco
Intended status: Standards Track                         16 October 2026
Expires: 19 April 2027

                         GREEN Controller YANG
                draft-swepcarl-green-controller-yang-00

Abstract

   TODO Abstract

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://janlindblad.github.io/draft-green-controller/draft-swepcarl-
   green-controller-yang.html.  Status information for this document may
   be found at https://datatracker.ietf.org/doc/draft-swepcarl-green-
   controller-yang/.

   Discussion of this document takes place on the Getting Ready for
   Energy-Efficient Networking Working Group mailing list
   (mailto:green@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/green/.  Subscribe at
   https://www.ietf.org/mailman/listinfo/green/.

   Source for this draft and an issue tracker can be found at
   https://github.com/janlindblad/draft-green-controller.

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 19 April 2027.

Lindblad                  Expires 19 April 2027                 [Page 1]
Internet-Draft                   grecon                     October 2026

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   3
   3.  Controller Configuration  . . . . . . . . . . . . . . . . . .   3
     3.1.  Collection  . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  Filtering and Transformation  . . . . . . . . . . . . . .   3
     3.3.  Delivery  . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  Controller Energy Network State . . . . . . . . . . . . . . .   3
     4.1.  YANG Tree . . . . . . . . . . . . . . . . . . . . . . . .   4
     4.2.  Example . . . . . . . . . . . . . . . . . . . . . . . . .   5
   5.  Audit Trail . . . . . . . . . . . . . . . . . . . . . . . . .  19
     5.1.  Read provenance data  . . . . . . . . . . . . . . . . . .  19
   6.  YANG Modules  . . . . . . . . . . . . . . . . . . . . . . . .  19
     6.1.  Types and Groupings . . . . . . . . . . . . . . . . . . .  19
     6.2.  Energy Network State  . . . . . . . . . . . . . . . . . .  27
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .  31
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  31
   9.  Normative References  . . . . . . . . . . . . . . . . . . . .  31
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  31
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  32

1.  Introduction

   In the GREEN architecture, GREEN Controllers are responsible for
   collecting, aggregating, transforming telemetry data concerning
   energy consumption, as well as storing or forwarding the result.
   This document describes the YANG modules used to configure and
   monitor the collection.

   The GREEN Controllers need this configuration to perform their
   function, but this information is also the basis for auditors
   verifying where the data is coming from, how it has been computed and
   that it is correct.

Lindblad                  Expires 19 April 2027                 [Page 2]
Internet-Draft                   grecon                     October 2026

2.  Conventions and Definitions

   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.

3.  Controller Configuration

   This section describes how to configure the Energy Controller so that
   it knows what devices to collect data from, and how.  How to filter,
   transform and aggregate the collected data.  Where to deliver any
   output streams, if any, and whether do populate a power and energy
   overview of the network.

3.1.  Collection

   The GREEN Controller needs to ensure data is collected from the
   devices under its control, but the actual data does not necessarily
   need to pass through the Controller.

   This YANG module enumerates the devices it collects data from, and
   also specifies which collection method it uses for each device.  A
   few collection methods are specified in this module, but
   augmentations with additional mechanisms are expected.

   TBD

3.2.  Filtering and Transformation

   ## Aggregation

   Averages, sums, peaks, … TBD

3.3.  Delivery

4.  Controller Energy Network State

   This section describes how to the Energy Controller renders an energy
   network overview of the devices and their major components that
   clients may query.

Lindblad                  Expires 19 April 2027                 [Page 3]
Internet-Draft                   grecon                     October 2026

4.1.  YANG Tree

   The current working assumption is that the energy controller
   superimposes the energy network view on top of an IVY inventory
   topology.  The IVY components are augmented with information about
   the component's instantaneous-power, total-energy-consumed etc.  Each
   component may also declare its energy relations.  The relations
   describe which other components does this component powers or meters,
   and what it is powered-by.

   module: ietf-power-energy-network

     augment /nw:networks/nw:network/nw:network-types:
       +--rw energy-network!
     augment /nw:networks/nw:network/nw:node:
       +--rw energy-node-attributes!
          +--rw references
          |  +--rw ref-string?    string
          |  +--rw ref-ietf-hw?   string
          +--rw power
          |  +--rw instantaneous-power?    int64
          |  +--rw nameplate-power?        uint32
          |  +--rw data-source-accuracy?   identityref
          |  +--rw power-factor?           power-factor
          |  +--rw measurement-local?      boolean
          +--rw energy
          |  +--rw total-energy-consumed?    uint64
          |  +--rw total-energy-delivered?   uint64
          |  +--rw data-source-accuracy?     identityref
          |  +--rw measurement-local?        boolean
          |  +--rw certifications*           identityref
          +--rw component* [component-id]
             +--rw component-id    string
             +--rw references
             |  +--rw ref-string?    string
             |  +--rw ref-ietf-hw?   string
             +--rw power
             |  +--rw instantaneous-power?    int64
             |  +--rw nameplate-power?        uint32
             |  +--rw data-source-accuracy?   identityref
             |  +--rw power-factor?           power-factor
             |  +--rw measurement-local?      boolean
             +--rw energy
             |  +--rw total-energy-consumed?    uint64
             |  +--rw total-energy-delivered?   uint64
             |  +--rw data-source-accuracy?     identityref
             |  +--rw measurement-local?        boolean
             |  +--rw certifications*           identityref

Lindblad                  Expires 19 April 2027                 [Page 4]
Internet-Draft                   grecon                     October 2026

             +--rw relationship* [type peer-node]
                +--rw type              identityref
                +--rw peer-node         -> ../../../../../nw:node/node-id
                +--rw peer-component* [peer-component]
                   +--rw peer-component    -> ../../../../../../nw:node[nw:node-id=current()/../../peer-node]/pen:energy-node-attributes/component/component-id
                   +--rw details?          string
     augment /nwi:network-inventory/nwi:network-elements/nwi:network-element/nwi:components/nwi:component:
       +--ro power
       |  +--ro instantaneous-power?    int64
       |  +--ro nameplate-power?        uint32
       |  +--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 data-source-accuracy?     identityref
          +--ro measurement-local?        boolean
          +--ro certifications*           identityref

     grouping references:
       +-- references
          +-- ref-string?    string
          +-- ref-ietf-hw?   string
     grouping relationship-set:
       +-- relationship* [type peer-node]
          +-- type              identityref
          +-- peer-node         -> ../../../../../nw:node/node-id
          +-- peer-component* [peer-component]
             +-- peer-component    -> ../../../../../../nw:node[nw:node-id=current()/../../peer-node]/pen:energy-node-attributes/component/component-id
             +-- details?          string

             Figure 1: YANG tree diagram of the energy network.

4.2.  Example

   In order to make this YANG module a little more digestible, here
   follows a simple YANG instance data example of what a small energy
   network might look like.

   In this example, we have three Routers in a triangle formation.  Each
   router has either an IP Phone or a Wifi Access Point attached to one
   of its line cards, which also deliver power to this device.

   The example's first section shows a classic network underlay called
   "green-underlay-1".  It lists the nodes in the network and describes
   how their data paths are connected.

Lindblad                  Expires 19 April 2027                 [Page 5]
Internet-Draft                   grecon                     October 2026

   The second section is more interesting from an energy point of view.
   It shows the same network seen as an energy network, "green-energy-
   1".

   For each node in the network we see its node-id used by the
   controller, references to what the node is called in some other
   contexts, and the current power and energy data.  Then a list of
   components living on this node.

   For each component, there is a component-id and references to
   alternate names of this node in other contexts.  Then power and
   energy data for this component, and the energy relationships this
   component has with other components, such as powered-by or metering.

   <CODE BEGINS> file "three-router-example@2026-09-26.json"
   {
     "ietf-yang-instance-data:instance-data-set": {
       "name": "three-router-example",
       "content-schema": {
         "module": [
           "ietf-network@2018-02-26",
           "ietf-network-topology@2018-02-26",
           "ietf-network-inventory-topology@2026-09-11",
           "ietf-network-inventory@2026-05-27",
           "ietf-power-energy-base@2026-09-26",
           "ietf-power-energy-network@2026-09-26"
         ]
       },
       "revision": [
         {
           "date": "2026-09-26",
           "description": "Initial version"
         }
       ],
       "description": [
         "Three-router example with separate underlay and energy networks"
       ],
       "content-data": {
         "ietf-network:networks": {
           "network": [
             {
               "network-id": "green-underlay-1",
               "network-types": {
                 "ietf-network-inventory-topology:inventory-topology": {}
               },
               "node": [
                 {
                   "node-id": "r1"

Lindblad                  Expires 19 April 2027                 [Page 6]
Internet-Draft                   grecon                     October 2026

                 },
                 {
                   "node-id": "r2"
                 },
                 {
                   "node-id": "r3"
                 },
                 {
                   "node-id": "phone-a"
                 },
                 {
                   "node-id": "phone-b"
                 },
                 {
                   "node-id": "ap-c"
                 }
               ],
               "ietf-network-topology:link": [
                 {
                   "link-id": "r1-r2",
                   "source": {
                     "source-node": "r1"
                   },
                   "destination": {
                     "dest-node": "r2"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:fiber"
                   }
                 },
                 {
                   "link-id": "r2-r3",
                   "source": {
                     "source-node": "r2"
                   },
                   "destination": {
                     "dest-node": "r3"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:fiber"
                   }
                 },
                 {
                   "link-id": "r3-r1",
                   "source": {
                     "source-node": "r3"
                   },
                   "destination": {

Lindblad                  Expires 19 April 2027                 [Page 7]
Internet-Draft                   grecon                     October 2026

                     "dest-node": "r1"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:fiber"
                   }
                 },
                 {
                   "link-id": "r1-phone-a",
                   "source": {
                     "source-node": "r1"
                   },
                   "destination": {
                     "dest-node": "phone-a"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:copper"
                   }
                 },
                 {
                   "link-id": "r2-phone-b",
                   "source": {
                     "source-node": "r2"
                   },
                   "destination": {
                     "dest-node": "phone-b"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:copper"
                   }
                 },
                 {
                   "link-id": "r3-ap-c",
                   "source": {
                     "source-node": "r3"
                   },
                   "destination": {
                     "dest-node": "ap-c"
                   },
                   "ietf-network-inventory-topology:inventory-mapping-attributes": {
                     "link-type": "ietf-network-inventory-topology:copper"
                   }
                 }
               ]
             },
             {
               "network-id": "green-energy-1",
               "network-types": {
                 "ietf-power-energy-network:energy-network": {}

Lindblad                  Expires 19 April 2027                 [Page 8]
Internet-Draft                   grecon                     October 2026

               },
               "node": [
                 {
                   "node-id": "r1",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "router-1",
                       "ref-ietf-hw": "r1-chassis"
                     },
                     "power": {
                       "instantaneous-power": 165000,
                       "nameplate-power": 450,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "energy": {
                       "total-energy-consumed": 2840,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "component": [
                       {
                         "component-id": "chassis",
                         "references": {
                           "ref-ietf-hw": "r1-chassis"
                         },
                         "power": {
                           "instantaneous-power": 145000,
                           "nameplate-power": 350,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                         },
                         "energy": {
                           "total-energy-consumed": 2200,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "r1",
                             "peer-component": [
                               {
                                 "peer-component": "lc1",
                                 "details": "backplane feed"
                               },
                               {
                                 "peer-component": "lc2",
                                 "details": "backplane feed"
                               }
                             ]
                           }

Lindblad                  Expires 19 April 2027                 [Page 9]
Internet-Draft                   grecon                     October 2026

                         ]
                       },
                       {
                         "component-id": "lc1",
                         "references": {
                           "ref-ietf-hw": "r1-lc1"
                         },
                         "power": {
                           "instantaneous-power": 8000,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r1",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           },
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "phone-a",
                             "peer-component": [
                               {
                                 "peer-component": "phone-main",
                                 "details": "PoE to phone-a"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "lc2",
                         "references": {
                           "ref-ietf-hw": "r1-lc2"
                         },
                         "power": {
                           "instantaneous-power": 7500,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",

Lindblad                  Expires 19 April 2027                [Page 10]
Internet-Draft                   grecon                     October 2026

                             "peer-node": "r1",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "psu1",
                         "references": {
                           "ref-ietf-hw": "r1-psu1"
                         },
                         "power": {
                           "instantaneous-power": 6200,
                           "nameplate-power": 30,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         }
                       }
                     ]
                   }
                 },
                 {
                   "node-id": "r2",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "router-2",
                       "ref-ietf-hw": "r2-chassis"
                     },
                     "power": {
                       "instantaneous-power": 162000,
                       "nameplate-power": 450,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "energy": {
                       "total-energy-consumed": 2790,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "component": [
                       {
                         "component-id": "chassis",
                         "references": {
                           "ref-ietf-hw": "r2-chassis"
                         },
                         "power": {
                           "instantaneous-power": 143000,

Lindblad                  Expires 19 April 2027                [Page 11]
Internet-Draft                   grecon                     October 2026

                           "nameplate-power": 350,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "r2",
                             "peer-component": [
                               {
                                 "peer-component": "lc1",
                                 "details": "backplane feed"
                               },
                               {
                                 "peer-component": "lc2",
                                 "details": "backplane feed"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "lc1",
                         "references": {
                           "ref-ietf-hw": "r2-lc1"
                         },
                         "power": {
                           "instantaneous-power": 7800,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r2",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           },
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "phone-b",
                             "peer-component": [
                               {
                                 "peer-component": "phone-main",
                                 "details": "PoE to phone-b"

Lindblad                  Expires 19 April 2027                [Page 12]
Internet-Draft                   grecon                     October 2026

                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "lc2",
                         "references": {
                           "ref-ietf-hw": "r2-lc2"
                         },
                         "power": {
                           "instantaneous-power": 7300,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r2",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "psu1",
                         "references": {
                           "ref-ietf-hw": "r2-psu1"
                         },
                         "power": {
                           "instantaneous-power": 6100,
                           "nameplate-power": 30,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         }
                       }
                     ]
                   }
                 },
                 {
                   "node-id": "r3",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "router-3",
                       "ref-ietf-hw": "r3-chassis"

Lindblad                  Expires 19 April 2027                [Page 13]
Internet-Draft                   grecon                     October 2026

                     },
                     "power": {
                       "instantaneous-power": 168000,
                       "nameplate-power": 450,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "energy": {
                       "total-energy-consumed": 2905,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                     },
                     "component": [
                       {
                         "component-id": "chassis",
                         "references": {
                           "ref-ietf-hw": "r3-chassis"
                         },
                         "power": {
                           "instantaneous-power": 147000,
                           "nameplate-power": 350,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-gold-10"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "r3",
                             "peer-component": [
                               {
                                 "peer-component": "lc1",
                                 "details": "backplane feed"
                               },
                               {
                                 "peer-component": "lc2",
                                 "details": "backplane feed"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "lc1",
                         "references": {
                           "ref-ietf-hw": "r3-lc1"
                         },
                         "power": {
                           "instantaneous-power": 8100,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },

Lindblad                  Expires 19 April 2027                [Page 14]
Internet-Draft                   grecon                     October 2026

                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r3",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "lc2",
                         "references": {
                           "ref-ietf-hw": "r3-lc2"
                         },
                         "power": {
                           "instantaneous-power": 7600,
                           "nameplate-power": 50,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r3",
                             "peer-component": [
                               {
                                 "peer-component": "chassis",
                                 "details": "backplane feed"
                               }
                             ]
                           },
                           {
                             "type": "ietf-power-energy-base:powering",
                             "peer-node": "ap-c",
                             "peer-component": [
                               {
                                 "peer-component": "ap-main",
                                 "details": "PoE to access point"
                               }
                             ]
                           }
                         ]
                       },
                       {
                         "component-id": "psu1",

Lindblad                  Expires 19 April 2027                [Page 15]
Internet-Draft                   grecon                     October 2026

                         "references": {
                           "ref-ietf-hw": "r3-psu1"
                         },
                         "power": {
                           "instantaneous-power": 6300,
                           "nameplate-power": 30,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         }
                       }
                     ]
                   }
                 },
                 {
                   "node-id": "phone-a",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "1234"
                     },
                     "power": {
                       "instantaneous-power": 4800,
                       "nameplate-power": 15,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "energy": {
                       "total-energy-consumed": 120,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "component": [
                       {
                         "component-id": "phone-main",
                         "references": {
                           "ref-string": "1234"
                         },
                         "power": {
                           "instantaneous-power": 4800,
                           "nameplate-power": 15,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r1",
                             "peer-component": [
                               {
                                 "peer-component": "lc1",
                                 "details": "PoE source on router r1 line card"
                               }
                             ]

Lindblad                  Expires 19 April 2027                [Page 16]
Internet-Draft                   grecon                     October 2026

                           }
                         ]
                       }
                     ]
                   }
                 },
                 {
                   "node-id": "phone-b",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "5678"
                     },
                     "power": {
                       "instantaneous-power": 4700,
                       "nameplate-power": 15,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "energy": {
                       "total-energy-consumed": 115,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "component": [
                       {
                         "component-id": "phone-main",
                         "references": {
                           "ref-string": "5678"
                         },
                         "power": {
                           "instantaneous-power": 4700,
                           "nameplate-power": 15,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r2",
                             "peer-component": [
                               {
                                 "peer-component": "lc1",
                                 "details": "PoE source on router r2 line card"
                               }
                             ]
                           }
                         ]
                       }
                     ]
                   }
                 },

Lindblad                  Expires 19 April 2027                [Page 17]
Internet-Draft                   grecon                     October 2026

                 {
                   "node-id": "ap-c",
                   "ietf-power-energy-network:energy-node-attributes": {
                     "references": {
                       "ref-string": "ap-local-17"
                     },
                     "power": {
                       "instantaneous-power": 7300,
                       "nameplate-power": 20,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "energy": {
                       "total-energy-consumed": 230,
                       "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                     },
                     "component": [
                       {
                         "component-id": "ap-main",
                         "references": {
                           "ref-string": "ap-local-17"
                         },
                         "power": {
                           "instantaneous-power": 7300,
                           "nameplate-power": 20,
                           "data-source-accuracy": "ietf-power-energy-base:accuracy-measured-silver-1"
                         },
                         "relationship": [
                           {
                             "type": "ietf-power-energy-base:powered-by",
                             "peer-node": "r3",
                             "peer-component": [
                               {
                                 "peer-component": "lc2",
                                 "details": "PoE source on router r3 line card"
                               }
                             ]
                           }
                         ]
                       }
                     ]
                   }
                 }
               ]
             }
           ]
         }
       }
     }

Lindblad                  Expires 19 April 2027                [Page 18]
Internet-Draft                   grecon                     October 2026

   }
   <CODE ENDS>

5.  Audit Trail

5.1.  Read provenance data

   ## Follow Collection Graph ## Compare Collection Graph with Inventory
   Any devices not reported?  Any double counting?

6.  YANG Modules

6.1.  Types and Groupings

   <CODE BEGINS> file "ietf-power-energy-base.yang"
   module ietf-power-energy-base {
     yang-version 1.1;

     namespace "urn:ietf:params:xml:ns:yang:ietf-power-energy-base";
     prefix peb;

     import iana-power-and-energy {
       prefix ianaeo;
       reference
         "IANA-defined identities for power and energy class";
     }

     organization
       "IETF GREEN Working Group";

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

     description
       "Base identities, typedefs, and reusable power and energy
        attributes.";

     revision 2026-07-02 {
       description
         "Initial revision.";
       reference
         "RFC XXX: Energy Object YANG Data Model";
     }

     identity data-source-accuracy {
       description
         "Base identity for all possible data accuracy types.";

Lindblad                  Expires 19 April 2027                [Page 19]
Internet-Draft                   grecon                     October 2026

     }

     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 and energy data is inherited from the parent object.";
     }

     identity accuracy-estimated {
       base data-source-accuracy;
       description
         "The power data is estimated rather than directly measured.";
     }

     identity accuracy-static {
       base accuracy-estimated;
       description
         "Static data such as manufacturer specifications or nameplate ratings.";
     }

     identity accuracy-historic {
       base accuracy-estimated;
       description
         "Historic measurement data for this specific system and usage pattern.";
     }

     identity accuracy-learned {
       base accuracy-estimated;
       description
         "A machine-learning-based prediction.";
     }

     identity accuracy-measured {
       base data-source-accuracy;
       description
         "The power data is a direct, real-time measurement from a sensor.";

Lindblad                  Expires 19 April 2027                [Page 20]
Internet-Draft                   grecon                     October 2026

     }

     identity accuracy-measured-bronze {
       base accuracy-measured;
       description
         "Direct measurement with bronze accuracy.";
     }

     identity accuracy-measured-bronze-1 {
       base accuracy-measured-bronze;
       description
         "Bronze accuracy with +/-1 absolute unit.";
     }

     identity accuracy-measured-bronze-10 {
       base accuracy-measured-bronze;
       description
         "Bronze accuracy with +/-10 absolute units.";
     }

     identity accuracy-measured-bronze-100 {
       base accuracy-measured-bronze;
       description
         "Bronze accuracy with +/-100 absolute units.";
     }

     identity accuracy-measured-bronze-1000 {
       base accuracy-measured-bronze;
       description
         "Bronze accuracy with +/-1000 absolute units.";
     }

     identity accuracy-measured-silver {
       base accuracy-measured;
       description
         "Direct measurement with silver accuracy.";
     }

     identity accuracy-measured-silver-1 {
       base accuracy-measured-silver;
       description
         "Silver accuracy with +/-1 absolute unit.";
     }

     identity accuracy-measured-silver-10 {
       base accuracy-measured-silver;
       description
         "Silver accuracy with +/-10 absolute units.";

Lindblad                  Expires 19 April 2027                [Page 21]
Internet-Draft                   grecon                     October 2026

     }

     identity accuracy-measured-silver-100 {
       base accuracy-measured-silver;
       description
         "Silver accuracy with +/-100 absolute units.";
     }

     identity accuracy-measured-silver-1000 {
       base accuracy-measured-silver;
       description
         "Silver accuracy with +/-1000 absolute units.";
     }

     identity accuracy-measured-gold {
       base accuracy-measured;
       description
         "Direct measurement with gold accuracy.";
     }

     identity accuracy-measured-gold-1 {
       base accuracy-measured-gold;
       description
         "Gold accuracy with +/-1 absolute unit.";
     }

     identity accuracy-measured-gold-10 {
       base accuracy-measured-gold;
       description
         "Gold accuracy with +/-10 absolute units.";
     }

     identity accuracy-measured-gold-100 {
       base accuracy-measured-gold;
       description
         "Gold accuracy with +/-100 absolute units.";
     }

     identity accuracy-measured-gold-1000 {
       base accuracy-measured-gold;
       description
         "Gold accuracy with +/-1000 absolute units.";
     }

     identity accuracy-measured-red {
       base accuracy-measured;
       description
         "Direct measurement with red accuracy.";

Lindblad                  Expires 19 April 2027                [Page 22]
Internet-Draft                   grecon                     October 2026

     }

     identity accuracy-measured-red-1 {
       base accuracy-measured-red;
       description
         "Red accuracy with +/-1 absolute unit.";
     }

     identity accuracy-measured-red-10 {
       base accuracy-measured-red;
       description
         "Red accuracy with +/-10 absolute units.";
     }

     identity accuracy-measured-red-100 {
       base accuracy-measured-red;
       description
         "Red accuracy with +/-100 absolute units.";
     }

     identity accuracy-measured-red-1000 {
       base accuracy-measured-red;
       description
         "Red accuracy with +/-1000 absolute units.";
     }

     identity accuracy-measured-ones {
       base accuracy-measured;
       description
         "All digits are valid except trailing zeros.";
     }

     typedef power-factor {
       type uint8 {
         range "0 .. 100";
       }
       default 100;
       description
         "Percent value of the power factor measurement.";
     }

     identity power-state {
       description
         "Base identity for all possible power states.";
     }

     identity power-state-on {
       base power-state;

Lindblad                  Expires 19 April 2027                [Page 23]
Internet-Draft                   grecon                     October 2026

       description
         "Full power on.";
     }

     identity power-state-off {
       base power-state;
       description
         "Power off.";
     }

     identity power-state-sleep {
       base power-state;
       description
         "Low-power state.";
     }

     identity energy-relationship-type {
       description
         "Base identity for energy object relationships.";
     }

     identity powered-by {
       base energy-relationship-type;
       description
         "Energy Object A is powered by Energy Object B.";
     }

     identity powering {
       base energy-relationship-type;
       description
         "Energy Object A is powering Energy Object B.";
     }

     identity metered-by {
       base energy-relationship-type;
       description
         "Energy Object A is metered by Energy Object B.";
     }

     identity metering {
       base energy-relationship-type;
       description
         "Energy Object A is metering Energy Object B.";
     }

     identity aggregated-by {
       base energy-relationship-type;
       description

Lindblad                  Expires 19 April 2027                [Page 24]
Internet-Draft                   grecon                     October 2026

         "Energy Object A is aggregated by Energy Object B.";
     }

     identity aggregating {
       base energy-relationship-type;
       description
         "Energy Object A is aggregating Energy Object B.";
     }

     identity enabled-by {
       base energy-relationship-type;
       description
         "Energy Object A is enabled by Energy Object B.";
     }

     identity enabling {
       base energy-relationship-type;
       description
         "Energy Object A is enabling Energy Object B.";
     }

     grouping power-and-energy-attributes {
       description
         "Reusable power and energy measurement attributes.";

       container power {
         description
           "Container for power measurement attributes.";

         leaf instantaneous-power {
           type int64;
           units "mWatts";
           description
             "Instantaneous power usage for the energy object.";
         }

         leaf nameplate-power {
           type uint32;
           units "Watts";
           description
             "Nameplate power rating of the energy object.";
         }

         leaf data-source-accuracy {
           type identityref {
             base data-source-accuracy;
           }
           default accuracy-like-parent;

Lindblad                  Expires 19 April 2027                [Page 25]
Internet-Draft                   grecon                     October 2026

           description
             "Accuracy of the power data source.";
         }

         leaf power-factor {
           type power-factor;
           description
             "Percent value of the power factor measurement.";
         }

         leaf measurement-local {
           type boolean;
           description
             "Indicates whether the power measurement is local or remote.";
         }
       }

       container energy {
         description
           "Container for energy measurement attributes.";

         leaf total-energy-consumed {
           type uint64;
           units "Watt-hours";
           description
             "Total cumulative energy consumed since the last reset.";
         }

         leaf total-energy-delivered {
           type uint64;
           units "Watt-hours";
           description
             "Total cumulative energy delivered since the last reset.";
         }

         leaf data-source-accuracy {
           type identityref {
             base data-source-accuracy;
           }
           default accuracy-like-parent;
           description
             "Accuracy of the energy data source.";
         }

         leaf measurement-local {
           type boolean;
           description
             "Indicates whether the energy measurement is local or remote.";

Lindblad                  Expires 19 April 2027                [Page 26]
Internet-Draft                   grecon                     October 2026

         }

         leaf-list certifications {
           type identityref {
             base ianaeo:certification-type;
           }
           description
             "Certifications applicable to this energy object.";
         }
       }
     }
   }
   <CODE ENDS>

6.2.  Energy Network State

   <CODE BEGINS> file "ietf-power-energy-network.yang"
   module ietf-power-energy-network {
     yang-version 1.1;

     namespace "urn:ietf:params:xml:ns:yang:ietf-power-energy-network";
     prefix pen;

     import ietf-network {
       prefix nw;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }

     import ietf-power-energy-base {
       prefix peb;
       reference
         "RFC XXX: Energy Object YANG Data Model";
     }

     import ietf-network-inventory {
       prefix nwi;
       reference
         "RFC XXXX: A YANG Data Model for Network Inventory";
     }

     organization
       "IETF GREEN Working Group";

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

Lindblad                  Expires 19 April 2027                [Page 27]
Internet-Draft                   grecon                     October 2026

     description
       "Augments the network inventory model with reusable power and
        energy attributes for network components and defines a
        network-wide energy flow view.";

     revision 2026-09-26 {
       description
         "Initial revision.";
       reference
         "RFC XXX: Energy Object YANG Data Model";
     }

     grouping references {
       description
         "A set of optional identifiers for correlating an energy
          node or component with external systems. Multiple
          references may be present simultaneously.";

       container references {
         description
           "External references for this object.";

         leaf ref-string {
           type string;
           description
             "Implementation-specific local or proprietary
              identifier.";
         }

         leaf ref-ietf-hw {
           type string;
           description
             "Identifier corresponding to a component known through
              the ietf-hardware model.";
         }
         // Augment additional external references as needed here
         // Augmentations would need to target each location where this
         // grouping is used.
       }
     }

     grouping relationship-set {
       description
         "Relationships from a local component to peer nodes and
          zero or more peer components.";

       list relationship {
         key "type peer-node";

Lindblad                  Expires 19 April 2027                [Page 28]
Internet-Draft                   grecon                     October 2026

         description
           "Relationships for a local energy component.";

         leaf type {
           type identityref {
             base peb:energy-relationship-type;
           }
           description
             "The type of relationship the local component has with
              the peer node or component(s).";
         }

         leaf peer-node {
           type leafref {
             path "../../../../../nw:node/nw:node-id";
           }
           description
             "The peer energy node participating in this
              relationship.";
         }

         list peer-component {
           key "peer-component";
           description
             "One or more peer components within the peer node.
              If this list is empty, the relationship applies to the
              peer node as a whole.";

           leaf peer-component {
             type leafref {
               path "../../../../../../nw:node[nw:node-id=current()/../../peer-node]"
                  + "/pen:energy-node-attributes/pen:component"
                  + "/pen:component-id";
             }
             description
               "A peer component within the referenced peer node.";
           }

           leaf details {
             type string;
             description
               "Additional implementation-specific details about the
                relationship to this peer component.";
           }
         }
       }
     }

Lindblad                  Expires 19 April 2027                [Page 29]
Internet-Draft                   grecon                     October 2026

     augment "/nw:networks/nw:network/nw:network-types" {
       description
         "Introduces a network type for representing energy flows
          between network devices and components.";

       container energy-network {
         presence
           "Indicates an energy-flow network.";
         description
           "This network type represents energy relationships, power
            sourcing, and energy-consuming structures that may exist
            alongside other network views such as physical or logical
            topology.";
       }
     }

     augment "/nw:networks/nw:network/nw:node" {
       when '../nw:network-types/pen:energy-network';
       description
         "Adds energy modeling attributes to nodes in an energy
          network.";

       container energy-node-attributes {
         presence
           "Indicates that the node participates in the energy
            network view.";
         description
           "Energy-related attributes for a node in the energy
            network. The node may represent a router, phone, access
            point, or another energy-relevant device.";

         uses references;
         uses peb:power-and-energy-attributes;

         list component {
           key "component-id";
           description
             "Energy-relevant components scoped locally to this node.
              Component identifiers are unique only within the parent
              node, avoiding network-wide naming collisions.";

           leaf component-id {
             type string;
             description
               "Identifier of the component within the parent energy
                node.";
           }

Lindblad                  Expires 19 April 2027                [Page 30]
Internet-Draft                   grecon                     October 2026

           uses references;
           uses peb:power-and-energy-attributes;

           uses relationship-set;
         }
       }
     }

     augment "/nwi:network-inventory/nwi:network-elements/nwi:network-element/nwi:components/nwi:component" {
       description
         "Adds power and energy attributes to network inventory
          components.";
       uses peb:power-and-energy-attributes;
     }
   }
   <CODE ENDS>

7.  Security Considerations

   TODO Security

8.  IANA Considerations

   This document has no IANA actions.

9.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/rfc/rfc7950>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

Acknowledgments

   TODO acknowledge.

   Members of the design team are Emile Stehpan, Qin Wu, Sawsan Elzahr,
   Marisol Palmero, Gen Chen, Muhammad Awais Jadoon, Reshad Rahman,
   Benoit Claise and Jan Lindblad.  Work overseen by Rob Wilton and
   Diego Lopez.

Lindblad                  Expires 19 April 2027                [Page 31]
Internet-Draft                   grecon                     October 2026

Author's Address

   Jan Lindblad
   All For Eco
   Email: jan.lindblad@for.eco

Lindblad                  Expires 19 April 2027                [Page 32]