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. 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 } 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 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: WG List: "; 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."; } } } } 6.2. Energy Network State 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: WG List: "; 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; } } 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, . [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . 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]