Internet-Draft Energy Saving Management October 2024
Chen, et al. Expires 26 April 2025 [Page]
Workgroup:
Network Inventory YANG
Internet-Draft:
draft-cwbgp-green-energy-saving-management-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
G. Chen
Huawei
Q. Wu, Ed.
Huawei
M. Boucadair, Ed.
Orange
O. G. D. Dios
Telefonica I+D
C. Pignataro
North Carolina State University

YANG Data Models for Energy Saving Management

Abstract

This document defines YANG modules for energy saving management at both device and network levels. Also, the document specifies a common module that is used independent of the model layer.

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 26 April 2025.

Table of Contents

1. Introduction

With the growth of networks and the increase of awareness about the environmental impact, it is important to ensure energy efficiency in the operation of network infrastructures. Operators are thus seeking for more information to reflect the power consumption of a network and the contribution of involved nodes.

However, there are no standard mechanisms to report and control power usage or energy consumption of different networking equipment under different network configuration and conditions. For example, in a 'Tidal network' in which traffic volume undergoes significant fluctuations at different times, various energy management methods might be envisaged to optimize the energy efficiency at the network scale, e.g., by selectively disabling ports or cards on specific network nodes based on (forecast) traffic patterns.

This document defines YANG modules for use in energy management within a network. The modules cover both network and device levels (Section 3.5.1 of [I-D.ietf-netmod-rfc8407bis]). The modules can be used, e.g., for monitoring the energy consumption of network devices, such as (but are not limited to) routers, switches, security gateways, hosts, or servers. Where applicable, device monitoring extends to the individual components of the device.

The network model augments the "ietf-network" module [RFC8345], while the inventory model augments the "ietf-network-inventory" module [I-D.ietf-ivy-network-inventory-yang] with the following rationale:

The document leverages types defined in [RFC3418] and [RFC6933].

1.1. Notes to the RFC Editor

  • Note to the RFC Editor: This section is to be removed prior to publication.

This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all the substitutions that are needed.

Please apply the following replacements:

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.

The meanings of the symbols in the YANG tree diagrams are defined in [RFC8340].

The document uses the terms defined in [I-D.bclp-green-terminology] and [I-D.ietf-ivy-network-inventory-yang].

3. YANG Prefixes

Names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.

Table 1: Prefixes and Corresponding YANG modules
Prefix YANG Module Reference
ianahw iana-hardware [IANA_YANG]
ni ietf-network-inventory [I-D.ietf-ivy-network-inventory-yang]
yang ietf-yang-types [RFC6991]

4. Energy Saving Management Data Model Overview

4.1. Overview

As described in [I-D.ietf-ivy-network-inventory-yang], the Network Inventory YANG data model is used to maintain the base network inventory information. This document defines the YANG module "ietf-ni-energy-saving", which augments network element of the network Inventory base model with energy saving modes, associated energy saving methods and augments the component of the network inventory base model with capability related power attributes.

"ietf-ntw-energy-saving" augments the node of abstract network model defined in [RFC8345] with energy consumption and power usage related attributes. At the network element level, the data model covers configuration of the energy saving mode and a set of related parameters to manage (e.g., retrieve or adjust) the status of power units, fans, boards, cards, ports, processors, and links. For example, the adjustment methods include frequency tuning, shutdown, or sleep mode. In addition, the methods also support the energy saving configuration for the 'tidal' traffic flow, where related components can be turned off, e.g., during "idle" hours to optimize the energy consumption and then woken up based on some triggered (e.g., busy hours or other scheduled events).

The data model defines energy saving modes representing some energy consumption levels, which are basic, standard, or deep. For each consumption level, there is a combination of methods to reach the energy saving target level.

At the component level, the data model includes a set of monitoring statistics for energy consumption and energy saving operational state of each component within the network device. It also includes threshold related power parameters such as rated power, expected volts.

In order to ease reuse of various parameters independent of the module layer, this document also defines a common model: "ietf-energy-saving-common".

The structure of each module is provided in the following subsections.

4.2. Common Energy Saving Management Module Structure

Figure 1 shows the tree diagram of the YANG data model defined in Section 5.

module: ietf-energy-saving-common

  grouping energy-consumption-data:
    +-- average-power?    yang:gauge64
    +-- saved-power?      yang:gauge64
    +-- real-power?       yang:gauge64
    +-- actual-volts?     int32
    +-- actual-amperes?   int32
    +-- actual-celsius?   int32
  grouping energy-saving-modes:
    +-- energy-saving-mode* [mode]
       +-- mode?                   identityref
       +-- energy-saving-method*   identityref
  grouping power-parameters:
    +-- temperature-upper-bound?    int32
    +-- temperature-middle-bound?   int32
    +-- temperature-lower-bound?    int32
    +-- rated-power?                yang:gauge64
    +-- expected-volts?             int32
    +-- low-volts-bound?            int32
    +-- low-volts-fatal?            int32
    +-- high-volts-bound?           int32
    +-- high-volts-fatal?           int32
  grouping energy-power-consumption-stats:
    +-- total-energy-consumption?   yang:gauge64
    +-- saved-energy?               yang:gauge64
    +-- eer?                        decimal64
Figure 1: Common Energy Saving Management Tree Structure

4.3. Energy Saving Management Network Model

The structure of the ESM Network Model is depicted in Figure 2.

module: ietf-ntw-energy-saving
  augment /nw:networks/nw:network/nw:node:
    +--ro energy-power-consumption {esm-common:energy-saving}?
    |  +--ro total-energy-consumption?   yang:gauge64
    |  +--ro saved-energy?               yang:gauge64
    |  +--ro eer?                        decimal64
    +--rw energy-saving-modes {esm-common:energy-saving}?
    |  +--rw energy-saving-mode* [mode]
    |     +--rw mode                    identityref
    |     +--rw energy-saving-method*   identityref
    +--ro component* [name] {esm-common:energy-saving}?
       +--ro name                 string
       +--ro class                identityref
       +--ro energy-monitoring
          +--ro energy-consumption
          |  +--ro average-power?    yang:gauge64
          |  +--ro saved-power?      yang:gauge64
          |  +--ro real-power?       yang:gauge64
          |  +--ro actual-volts?     int32
          |  +--ro actual-amperes?   int32
          |  +--ro actual-celsius?   int32
          +--ro energy-saving
             +--ro enabled?       boolean
             +--ro power-state?   identityref
Figure 2: ESM Network Model Tree Structure

4.4. ESM Inventory Model

The structure of the ESM Network Inventory Model is depicted in Figure 3.

module: ietf-ni-energy-saving
  grouping network-element-ref:
    +-- ne-ref?   leafref
  grouping component-ref:
    +-- node-ref?   leafref
    +-- ne-ref?     leafref

  augment /ni:network-inventory/ni:network-elements
          /ni:network-element:
    +--ro energy-management {esm-common:energy-saving}?
       +--ro energy-monitoring-capability?   boolean
       +--ro energy-saving-modes
          +--ro energy-saving-mode* [mode]
             +--ro mode                    identityref
             +--ro energy-saving-method*   identityref
  augment /ni:network-inventory/ni:network-elements
          /ni:network-element/ni:components/ni:component:
    +--ro power-parameters {esm-common:energy-saving}?
       +--ro temperature-upper-bound?    int32
       +--ro temperature-middle-bound?   int32
       +--ro temperature-lower-bound?    int32
       +--ro rated-power?                yang:gauge64
       +--ro expected-volts?             int32
       +--ro low-volts-bound?            int32
       +--ro low-volts-fatal?            int32
       +--ro high-volts-bound?           int32
       +--ro high-volts-fatal?           int32
Figure 3: ESM Inventory Model Tree Structure

5. YANG Modules

5.1. Common Module

The module imports types defined in [RFC6991].

<CODE BEGINS> file "ietf-energy-saving-common@2024-01-23.yang"
module ietf-energy-saving-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-energy-saving-common";
  prefix esm-common;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Types";
  }

  organization
    "IETF xxx Working Group.";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/xxx/>;
     WG List:  <mailto:xxxx@ietf.org>

     Author:   Gen Chen
               <mailto:chengen@huawei.com>
     Editor:   Qin Wu
               <mailto:bill.wu@huawei.com>
     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Carlos Pignataro
               <mailto:cpignata@gmail.com>";
  description
    "This module contains a collection of YANG definitions for power
     and energy management of devices. It also augments both the
     network topology and inventory models.

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

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

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2024-01-23 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: YANG Data Models for Energy Saving Management";
  }

  feature energy-saving {
    description
      "Specifies support of energy saving management.";
  }

  identity energy-saving-mode {
    description
      "Base identity for energy saving mode.";
  }

  identity basic {
    base energy-saving-mode;
    description
      "Basic energy saving mode.

       In this mode, the system will shut down idle modules
       and put them in a sleep mode.";
  }

  identity standard {
    base energy-saving-mode;
    description
      "Standard energy saving mode.

       In this mode, the system extends basic energy saving
       mode with more advanced Lossless energy saving features,
       e.g., power module schedule.";
  }

  identity deep {
    base energy-saving-mode;
    description
      "Deep energy saving mode.

       In this mode, the system extends standard energy saving
       mode with more advanced system level energy saving features,
       e.g., board scheduling.";
  }

  identity energy-saving-method {
    description
      "Base identity for energy saving method.";
  }

  identity zone-based-fan-speed-adjustment {
    base energy-saving-method;
    description
      "The system collects information about the
       temperatures of the service boards in the chassis
       and the zones where the service boards reside.

       According to the current temperature and target
       temperature of each board, the system implements
       stepless speed adjustment in different zones.";
  }

  identity unused-high-speed-interface-shutdown {
    base energy-saving-method;
    description
      "When detecting an unused high-speed interface, the
       system shuts down the interface to reduce power consumption
       of the interface circuits.

       When the interface needs to run service, the
       system will automatically wake up the interface and
       restore the interface to the normal working state.";
  }

  identity unused-port-shutdown {
    base energy-saving-method;
    description
      "When detecting an unused user port, the system automatically
       or manually shuts down the interface circuits and optical
       module of the port to reduce port power consumption. When
       detecting that the port needs to run service, the system
       automatically enables the port and restores the port to the
       normal running state, without affecting application of the
       board.";
  }

  identity unused-board-shutdown {
    base energy-saving-method;
    description
      "When detecting an unused board, the system automatically
       shuts down the power supply of the board, ensuring zero
       power consumption of an unused board.

       When detecting that the board needs to run service, the system
       automatically powers on the board and restores the board
       to the normalrunning state, without affecting application of
       the whole device.";
  }

  identity dynamic-frequency-adjustment {
    base energy-saving-method;
    description
      "When detecting that a service board is carrying a small
       service load, the system automatically reduces the working
       frequency of the service processing module of the board
       while maintaining the service quality. In doing so, power
       consumption of the service processing module is reduced.
       When the service load of the board increases, the system
       automatically increases the working frequency of the service
       processing module to meet service needs.";
  }

  identity unused-channel-shutdown {
    base energy-saving-method;
    description
      "When an unused channel is detected, the unused channel is
       closed. Dynamically open the channel when detecting that
       there are services on the channel.";
  }

  identity load-based-power-module-scheduling {
    base energy-saving-method;
    description
      "Power modules intelligently schedule internal power supply
       based on the power load. When the power load decreases,
       some power supplies are automatically disabled.

       When the power load increases, the disabled power supplies
       are enabled again. ";
  }

  identity load-based-board-scheduling {
    base energy-saving-method;
    description
      "Boards intelligently schedule internal forwarding resources
       based on the service load. When the service load decreases,
       some forwarding resources are automatically disabled or the
       working frequency of the forwarding resources is reduced.

       When the service load increases, the disabled forwarding
       resources are enabled again or the working frequency of
       forwarding resources is improved. In the case of burst
       traffic, packet forwarding may be delayed, but packets
       will not be lost.";
  }

  identity energy-saving-power-state {
    description
      "Base identity for power state.";
    reference
      "RFC 7326: Energy Management Framework";
  }

  identity off-state {
    base energy-saving-power-state;
    description
      "Indicates that the component typically
             requires a complete boot when awakened.";
    reference
      "RFC 7326: Energy Management Framework";
  }

  identity sleep-state {
    base energy-saving-power-state;
    description
      "Indicates that a component with energy management support
       is not functional but immediately available such as
       wake up mechanism.";
    reference
      "RFC 7326: Energy Management Framework";
  }

  identity low-power-state {
    base energy-saving-power-state;
    description
      "Indicates that some components with energy management
       support are not available and these components can
       take measures to use less energy.";
    reference
      "RFC 7326: Energy Management Framework";
  }

  identity full-power-state {
    base energy-saving-power-state;
    description
      "Indicates that all components with energy management
       support are available and may use maximum power.";
    reference
      "RFC 7326: Energy Management Framework";
  }

  typedef energy-saving-operator {
    type enumeration {
      enum on {
        value 1;
        description
          "Power-on for energy saving.";
      }
      enum off {
        value 2;
        description
          "Power-off for energy saving.";
      }
    }
    description
      "Energy saving operator.";
  }

  grouping energy-consumption-data {
    description
      "Grouping for energy monitoring.";
    leaf average-power {
      type yang:gauge64;
      units "mW";
      description
        "The average consumed power.";
    }
    leaf saved-power {
      type yang:gauge64;
      units "mW";
      description
        "The saved power.";
    }
    leaf real-power {
      type yang:gauge64;
      units "mW";
      description
        "The actual observed consumed power.";
      reference
        "RFC 6988: Requirements for Energy Management";
    }
    leaf actual-volts {
      type int32;
      units "mV";
      description
        "The actual observed voltage.";
      reference
        "RFC 6988: Requirements for Energy Management";
    }
    leaf actual-amperes {
      type int32;
      units "mA";
      description
        "The actual observed current.";
      reference
        "RFC 6988: Requirements for Energy Management";
    }
    leaf actual-celsius {
      type int32;
      units "0.01 C";
      description
        "The actual observed temperature.";
    }
  }

  grouping energy-saving-modes {
    description
      "Grouping for energy saving mode and methods.";
    list energy-saving-mode {
      key "mode";
      description
        "The energy saving mode.";
      leaf mode {
        type identityref {
          base energy-saving-mode;
        }
        description
          "The energy saving mode.";
      }
      leaf-list energy-saving-method {
        type identityref {
          base energy-saving-method;
        }
        description
          "The energy saving method.";
      }
    }
  }

  grouping power-parameters {
    description
      "Grouping for energy paramters.";
    leaf temperature-upper-bound {
      type int32;
      units "0.01 C";
      description
        "The upper bound overheat temperature of the component.
         Upon the upper bound is exceeded, an alarm will be
         triggered to indicate fatal failure.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
    leaf temperature-middle-bound {
      type int32;
      units "0.01 C";
      description
        "The middle bound overheat temperature of the component.
         Upon the middle bound is exceeded, an alarm will be
         triggered.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
    leaf temperature-lower-bound {
      type int32;
      units "0.01 C";
      description
        "The lower bound overheat temperature of the component.
         Upon the lower bound is exceeded, the alarm will be
         triggered.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
    leaf rated-power {
      type yang:gauge64;
      units "mW";
      description
        "The rated power.";
    }
    leaf expected-volts {
      type int32;
      units "mV";
      description
        "The expected volts.";
    }
    leaf low-volts-bound {
      type int32;
      units "mV";
      description
        "The lower volts bound which might cause equipment
         misbehavior or even damage.";
    }
    leaf low-volts-fatal {
      type int32;
      units "mV";
      description
        "The lowest volts bound which might cause equipment fatal
         damage.";
    }
    leaf high-volts-bound {
      type int32;
      units "mV";
      description
        "The higher volts bound which should trigger an alarm.";
      reference
        "RFC 8632: A YANG Data Model for Alarm Management";
    }
    leaf high-volts-fatal {
      type int32;
      units "mV";
      description
        "The highest volts bound of monitoring class which
         will cause fatal failure.";
    }
  }

    grouping energy-power-consumption-stats {
      description
        "Statistics data about energy and power monitoring.";
      leaf total-energy-consumption {
        type yang:gauge64;
        units "Wh";
        description
          "Accumulated energy consumption of equipment.";
      }
      leaf saved-energy {
        type yang:gauge64;
        units "Wh";
        description
          "Saved energy consumption of equipment.";
      }
      leaf eer {
        type decimal64 {
          fraction-digits 18;
        }
        units "Gbps/Watt";
        description
          "The energy efficiency rating (EER) is a metric
           generally defined as a functional unit divided by
           the energy used.";
      }
    }
}
<CODE ENDS>

5.2. Network Module

The module imports "ietf-network" [RFC8345] and "ietf-energy-saving-common".

<CODE BEGINS> file "ietf-ntw-energy-saving@2024-01-23.yang"
module ietf-ntw-energy-saving {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ntw-energy-saving";
  prefix esm-ntw;

  import ietf-energy-saving-common {
    prefix esm-common;
    reference
      "RFC XXXX: YANG Data Models for Energy Saving Management";
  }
  import ietf-network {
    prefix nw;
    reference
      "RFC 8345: A YANG Data Model for Network Topologies";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Types";
  }
  import iana-hardware {
   prefix ianahw;
   reference
     "https://www.iana.org/assignments/iana-hardware/iana-hardware.xhtml";
  }
  organization
    "IETF XXX Working Group.";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/xxx/>;
     WG List:  <mailto:xxxx@ietf.org>

     Author:   Gen Chen
               <mailto:chengen@huawei.com>
     Editor:   Qin Wu
               <mailto:bill.wu@huawei.com>
     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Carlos Pignataro
               <mailto:cpignata@gmail.com>";
  description
    "This module contains a collection of YANG definitions for power
     and energy management of devices. It also augments both the
     network topology and inventory models.

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

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

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2024-01-23 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: YANG Data Models for Energy Saving Management";
  }

  augment "/nw:networks/nw:network/nw:node" {
    if-feature "esm-common:energy-saving";
    description
      "Energy monitoring data for network elements.";
    container energy-power-consumption {
      config false;
      description
        "Statistics data about energy and power monitoring.";
      uses esm-common:energy-power-consumption-stats;
      leaf start-time {
        type yang:date-and-time;
        description
          "The time (in hundredths of a second) since the
          network management portion of the system was last
          re-initialized. It corresponds to the sysUpTime MIB object.
          It specifies the start time of the energy measurement
          results collection.";
      reference
        "RFC 3418:   Management Information Base (MIB) for the
                     Simple Network Management Protocol (SNMP)";
      }
    }
    container energy-saving-modes {
      description
        "List of the energy saving mode.";
      uses esm-common:energy-saving-modes;
    }
    list component {
      key name;
      config false;
      description
      "List of components.";
      leaf name {
        type string;
        description
          "The name assigned to this component.
           This name is not required to be the same as
           entPhysicalName.";
      }
      leaf class {
        type identityref {
          base ianahw:hardware-class;
        }
        mandatory true;
        description
          "An indication of the general hardware type of the
           component.";
        reference
          "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
        }
      container energy-monitoring {
        description
          "Energy monitoring data for components.";
        container energy-consumption {
          description
          "Statistics of component about energy monitoring.";
          uses esm-common:energy-consumption-data;
        }
       container energy-saving {
        description
        "Controls energy saving parameters of a component.";
         leaf enabled {
          type boolean;
          default "true";
           description
             "Controls whether the energy-saving
             of the component is enabled (when set to true)
              or disabled (set to false).";
         }
         leaf power-state {
          type identityref {
            base esm-common:energy-saving-power-state;
          }
          description
            "The device energy saving operator state.";
         }
       }
     }
   }
  }
}
<CODE ENDS>

5.3. Network Inventory Module

The module imports "ietf-network-inventory" [I-D.ietf-ivy-network-inventory-yang] and "ietf-energy-saving-common".

<CODE BEGINS> file "ietf-ni-energy-saving@2024-01-23.yang"
module ietf-ni-energy-saving {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-ni-energy-saving";
  prefix esm-ni;

  import ietf-energy-saving-common {
    prefix esm-common;
    reference
      "RFC XXXX: YANG Data Models for Energy Saving Management";
  }
  import ietf-network-inventory {
    prefix ni;
    reference
      "RFC IIII: A YANG Data Model for Network Inventory";
  }

  organization
    "IETF xxx Working Group.";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/xxx/>;
     WG List:  <mailto:xxxx@ietf.org>

     Author:   Gen Chen
               <mailto:chengen@huawei.com>
     Editor:   Qin Wu
               <mailto:bill.wu@huawei.com>
     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>
     Author:   Carlos Pignataro
               <mailto:cpignata@gmail.com>";
  description
    "This module contains a collection of YANG definitions for power
     and energy management of devices. It also augments both the
     network topology and inventory models.

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

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

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2024-01-23 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: YANG Data Models for Energy Saving Management";
  }

  grouping network-element-ref {
    description
      "Contains the information necessary to reference a network
       element.";
    leaf ne-ref {
      type leafref {
        path "/ni:network-inventory/ni:network-elements"
           + "/ni:network-element/ni:ne-id";
        require-instance false;
      }
      description
        "Used to reference a network element.";
    }
  }

  grouping component-ref {
    description
      "Contains the information necessary to reference a component.";
    leaf node-ref {
      type leafref {
        path "/ni:network-inventory/ni:network-elements"
           + "/ni:network-element[ni:ne-id="
           + "current()/../ne-ref]/ni:components/ni:component"
           + "/ni:component-id";
        require-instance false;
      }
      description
        "Used to reference a component.";
    }
    uses network-element-ref;
  }

  augment "/ni:network-inventory/ni:network-elements"
        + "/ni:network-element" {
    if-feature "esm-common:energy-saving";
    description
      "Energy management static data for network element.";
    container energy-management {
      config false;
      description
        "Statistics of the energy management.";
      leaf energy-monitoring-capability {
        type boolean;
        description
          "Indicates whether monitoring can be performed.";
      }
      container energy-saving-modes {
        description
          "List of supported energy saving modes.";
        uses esm-common:energy-saving-modes;
      }
    }
  }

  augment "/ni:network-inventory/ni:network-elements"
        + "/ni:network-element/ni:components/ni:component" {
    if-feature "esm-common:energy-saving";
    description
      "Energy management static data for component.";
    container power-parameters {
      config false;
      description
        "Power parameter monitoring.";
      uses esm-common:power-parameters;
    }
  }
}
<CODE ENDS>

6. Security Considerations

This section uses the template described in Section 3.7 of [I-D.ietf-netmod-rfc8407bis].

The YANG modules specified in this document define a schema for data that is designed to be accessed via network management protocol such as NETCONF [RFC6241] or RESTCONF [RFC8040].These network management protocols are required to use a secure transport layer and mutual authentication, e.g., SSH [RFC6242] without the "none" authentication option, Transport Layer Security (TLS) [RFC8446] with mutual X.509 authentication, and HTTPS with HTTP authentication (Section 11 of [RFC9110]).

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

There are several data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities:

energy-saving-modes:

This leaf specifies the energy saving mode set globally on a device.

esm-ntw:energy-saving/esm-ntw:enabled:

This leaf enable/disables energy saving state of specific component.

Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities:

'TBC':

....

7. IANA Considerations

7.1. The "IETF XML" Registry

This document requests IANA to register the following URIs in the "ns" sub-registry within the "IETF XML Registry" [RFC3688]:

   URI: urn:ietf:params:xml:ns:yang:ietf-energy-saving-common
   Registrant Contact: The IESG.
   XML: N/A, the requested URIs are XML namespaces.

   URI: urn:ietf:params:xml:ns:yang:ietf-ntw-energy-saving
   Registrant Contact: The IESG.
   XML: N/A, the requested URIs are XML namespaces.

   URI: urn:ietf:params:xml:ns:yang:ietf-ni-energy-saving
   Registrant Contact: The IESG.
   XML: N/A, the requested URIs are XML namespaces.

7.2. The "YANG Module Names" Registry

This document requests IANA to register the following YANG modules in the "YANG Module Names" registry [RFC6020] within the "YANG Parameters" registry group.

   name: ietf-energy-saving-common
   prefix: esm-common
   namespace: urn:ietf:params:xml:ns:yang:ietf-energy-saving-common
   Maintained by IANA? N
   Reference: RFC XXXX

   name: ietf-ntw-energy-saving
   prefix: esm-ntw
   namespace: urn:ietf:params:xml:ns:yang:ietf-ntw-energy-saving
   Maintained by IANA? N
   Reference: RFC XXXX

   name: ietf-ni-energy-saving
   prefix: esm-ni
   namespace: urn:ietf:params:xml:ns:yang:ietf-ni-energy-saving
   Maintained by IANA? N
   Reference: RFC XXXX

8. References

8.1. Normative References

[I-D.ietf-ivy-network-inventory-yang]
Yu, C., Belotti, S., Bouquier, J., Peruzzini, F., and P. Bedard, "A YANG Data Model for Network Inventory", Work in Progress, Internet-Draft, draft-ietf-ivy-network-inventory-yang-03, , <https://datatracker.ietf.org/doc/html/draft-ietf-ivy-network-inventory-yang-03>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/rfc/rfc3688>.
[RFC6020]
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, , <https://www.rfc-editor.org/rfc/rfc6020>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/rfc/rfc6241>.
[RFC6991]
Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, , <https://www.rfc-editor.org/rfc/rfc6991>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/rfc/rfc8040>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/rfc/rfc8341>.
[RFC8345]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, , <https://www.rfc-editor.org/rfc/rfc8345>.

8.2. Informative References

[I-D.bclp-green-terminology]
Liu, P. C., Boucadair, M., Wu, Q., Contreras, L. M., and M. Palmero, "Terminology for Energy Efficiency Network Management", Work in Progress, Internet-Draft, draft-bclp-green-terminology-00, , <https://datatracker.ietf.org/doc/html/draft-bclp-green-terminology-00>.
[I-D.cprjgf-bmwg-powerbench]
Pignataro, C., Jacob, R., Fioccola, G., and Q. Wu, "Characterization and Benchmarking Methodology for Power in Networking Devices", Work in Progress, Internet-Draft, draft-cprjgf-bmwg-powerbench-02, , <https://datatracker.ietf.org/doc/html/draft-cprjgf-bmwg-powerbench-02>.
[I-D.cx-opsawg-green-metrics]
Clemm, A., Dong, L., Mirsky, G., Ciavaglia, L., Tantsura, J., Odini, M., Schooler, E., Rezaki, A., and C. Pignataro, "Green Networking Metrics", Work in Progress, Internet-Draft, draft-cx-opsawg-green-metrics-02, , <https://datatracker.ietf.org/doc/html/draft-cx-opsawg-green-metrics-02>.
[I-D.ietf-netmod-rfc8407bis]
Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for Authors and Reviewers of Documents Containing YANG Data Models", Work in Progress, Internet-Draft, draft-ietf-netmod-rfc8407bis-20, , <https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-20>.
[I-D.manral-bmwg-power-usage]
Manral, V., Sharma, P., Banerjee, S., and Y. Ping, "Benchmarking Power usage of networking devices", Work in Progress, Internet-Draft, draft-manral-bmwg-power-usage-04, , <https://datatracker.ietf.org/doc/html/draft-manral-bmwg-power-usage-04>.
[RFC3418]
Presuhn, R., Ed., "Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3418, DOI 10.17487/RFC3418, , <https://www.rfc-editor.org/rfc/rfc3418>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/rfc/rfc6242>.
[RFC6933]
Bierman, A., Romascanu, D., Quittek, J., and M. Chandramouli, "Entity MIB (Version 4)", RFC 6933, DOI 10.17487/RFC6933, , <https://www.rfc-editor.org/rfc/rfc6933>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/rfc/rfc8340>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/rfc/rfc8446>.
[RFC9110]
Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Semantics", STD 97, RFC 9110, DOI 10.17487/RFC9110, , <https://www.rfc-editor.org/rfc/rfc9110>.

Acknowledgments

This work has benefited from the discussions that occurred during the Sustainable Networking Side Meeting in IETF#117 and the "e-impact" IAB workshop. In particular, [I-D.cx-opsawg-green-metrics] assess several sustainability-related attributes such as power consumption, energy efficiency, and carbon footprint associated with a network, its equipment, and the services that are provided over it and suggest a set of metrics that provide network observability and can be used to optimize a network's "greenness". [I-D.manral-bmwg-power-usage] and [I-D.cprjgf-bmwg-powerbench] provide suggestions for measuring power usage of live networks under different traffic loads and various switch router configuration settings.

Authors' Addresses

Gen Chen
Huawei
China
Qin Wu (editor)
Huawei
China
Mohamed Boucadair (editor)
Orange
France
Oscar Gonzales de Dios
Telefonica I+D
Spain
Carlos Pignataro
North Carolina State University
United States of America