<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.14 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC8348 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8348.xml">
<!ENTITY I-D.ietf-ivy-network-inventory-yang SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ivy-network-inventory-yang.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8343 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml">
]>


<rfc ipr="trust200902" docName="draft-li-green-power-00" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="YANG Power Management">A YANG model for Power Management</title>

    <author initials="T." surname="Li" fullname="Tony Li">
      <organization>Juniper Networks</organization>
      <address>
        <email>tony.li@tony.li</email>
      </address>
    </author>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>Juniper Networks</organization>
      <address>
        <email>rbonica@juniper.net</email>
      </address>
    </author>

    <date year="2024" month="October" day="17"/>

    
    <workgroup>IVY Working Group</workgroup>
    

    <abstract>


<t>Network sustainability is a key issue facing the industry. Networks
consume significant amounts of power at a time when the cost of power
is rising and sensitivity about sustainability is very high. As an
industry, we need to find ways to optimize the power efficiency of our
networks both at a micro and macro level. We have observed that
traffic levels fluctuate and when traffic ebbs there is much more
capacity than is needed. Powering off portions of network elements
could save a significant amount of power, but to scale and be
practical, this must be automated.</t>

<t>The natural mechanism for enabling automation would be a Yet Another
Next Generation (YANG) interface, so this document proposes a YANG
model for power management.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Network sustainability is a key issue facing the industry. Networks
consume significant amounts of power at a time when the cost of power
is rising and sensitivity about sustainability is very high. As an
industry, we need to find ways to optimize the power efficiency of our
networks both at a micro and macro level. We have observed that
traffic levels fluctuate and when traffic ebbs there is much more
capacity than is needed. Powering off portions of network elements
could save a significant amount of power, but to scale and be
practical, this must be automated.</t>

<t>The natural mechanism for enabling automation would be a Yet Another
Next Generation (YANG) interface, so this document proposes a YANG
model for power management.</t>

<t><xref target="RFC8348"/> already provides a model for server hardware management,
but does not naturally extend to routers and other network
elements. That gap is currently being addressed by
<xref target="I-D.ietf-ivy-network-inventory-yang"/>.  This document extends the
work presented there to include power management. Specifically, this
document augments the 'component' object found at
/ietf-network-inventory/network-elements/network-element/components/component.</t>

<t>This initial draft only provides a tree representation. When there is
rough consensus on the tree represetnation, the details of the model
will be fleshed out.</t>

<section anchor="REQ-lang"><name>Requirement Language</name>

<t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.</t>

</section>
</section>
<section anchor="power-management-elements"><name>Power Management Elements</name>

<t>The models mentioned above already model a router or network
element as a set of components. The details of those components are
left to the specific implementation and can be at any level of
specificity. Thanks to this flexibility, it is necessary and
sufficient that we characterize power management relative to
components.</t>

<t>The elements defined below allow management entities to understand how
much power each component is using and whether the component can be
placed into a 'power-save' mode where it would consume less
power. Another element allows the management plane to put the
component into power-save mode.</t>

<section anchor="power-consumption"><name>Power consumption</name>

<figure><artwork><![CDATA[
        Name: used-power
        Node Type: leaf
        Data Type: uint32
        Description: Power drawn by the component, in watts.
]]></artwork></figure>

<t>This node is applied to components in the model. If an accurate
dynamic power measurement is not available, then static power
estimates are acceptable.</t>

<figure><artwork><![CDATA[
        Name: total-used-power
        Node Type: leaf
        Data Type: uint32
        Description: Power drawn by the component and its
          subcomponents, in watts.
]]></artwork></figure>

<t>This node captures the total power used by a component and all of its
subcomponents. This simplifies reporting requirements. If an accurate
dynamic power measurement is not available, then static power
estimates are acceptable.</t>

</section>
<section anchor="power-control-capability"><name>Power control capability</name>

<figure><artwork><![CDATA[
        Name: power-save-capable
        Node Type: leaf
        Data Type: boolean
        Description: True if the component can be put into power-save
          mode.
]]></artwork></figure>

</section>
<section anchor="power-control"><name>Power control</name>

<figure><artwork><![CDATA[
        Name: power-save
        Node Type: leaf
        Data Type: Boolean
        Access: Read/write
        Description: True if the component is in power-save mode.
]]></artwork></figure>

<t>There have been suggestions that this leaf should accept a variety of
values, representing many different 'power states'. This presumes that
the external entity understands the exact state of the device, the
impact of the power state, and the optimal setting. A better approach
is to enable automatic power saving on the component and then provide
information to the device about the external state to allow the device
to optimize its own behavior. <xref target="Traffic"/> is an example of the type of
external state information that may be useful.</t>

</section>
<section anchor="automatic-power-saving"><name>Automatic Power Saving</name>

<t>Some systems (e.g., fan trays) have the capability to self-manage
their power consumption. However there are cases where this capability
should be disabled.</t>

<figure><artwork><![CDATA[
        Name: automatic-power-saving
        Node Type: leaf
        Data Type: Boolean
        Access: Read/write
        Description: True if the component is regulating its own
          power.
]]></artwork></figure>

</section>
</section>
<section anchor="functional-dependencies"><name>Functional Dependencies</name>

<t>Most inventory models have a hierarchy of components.  This 
hierarchy reflects the physical structure of the system (e.g., 
a line card can physically contain a port).</t>

<t>With regard to physical containment, components maintain a one-to-many
relationship. That is, Component A can contain many other components, including
Component B. However, component B can be contain by only one component 
(i.e., Component A.)</t>

<t>However, legacy inventory models do not reflect functional
dependencies.  Specifically, they do not indicate which components
obtain services from, and therefore depend, components other than
their container. Because funtional dependencies are relavant to power
management, they are included in the proposed model.</t>

<t>With regard to functional dependencies, components maintain a many-to-many
relationship. That is, a component can reuire on many components and be
required by many other components.</t>

<t>Functional dependencies may be updated dynamically.</t>

<section anchor="required-components"><name>Required Components</name>

<t>This container holds a list of components that the component uses.
For example, a linecard uses a set of switch cards, so the switch
cards would be required components. If the bandwidth used by the
linecard changes, then the set of switch cards that are required may
change dynamically.</t>

<figure><artwork><![CDATA[
        Name: required-components
        Node Type: list
        Description: A list of other components that are required for
          this component to operate.
]]></artwork></figure>

</section>
<section anchor="dependent-components"><name>Dependent components</name>

<t>This container holds a list of components that are used by this
component. For example, a switch card is used by a set of line cards,
so the line cards would be dependent components. This list can also
change dynamically.</t>

<figure><artwork><![CDATA[
        Name: dependent-components
        Node Type: list
        Description: A list of other components that are used by this
          component.
]]></artwork></figure>

</section>
</section>
<section anchor="tree-representation"><name>Tree Representation</name>

<figure><artwork><![CDATA[
 +--rw component* [component-id]
    +--rw component-id               string
    +--ro used-power?                uint32
    +--ro power-save-capable?        boolean
    +--rw power-save?                boolean
    +--ro required-components*       -> ../../component/component-id
    +--ro dependent-components*      -> ../../component/component-id
]]></artwork></figure>

</section>
<section anchor="Traffic"><name>Traffic Planning</name>

<t>Some systems have the capability of automatically managing their power
consumption if they have an understanding of the expected traffic
loads. To provide this, we provide the expected input and output
bandwidth for each interface and augment '/interfaces/interface'
<xref target="RFC8343"/> with the following:</t>

<figure><artwork><![CDATA[
        Name: expected-input-bandwidth
        Node Type: leaf
        Data Type: yang:gauge64
        Default: 0
        Access: Read/write
        Description: The expected input bandwidth of the interface,
          in Mbps. A value of zero (0) indicates full bandwidth.
]]></artwork></figure>

<figure><artwork><![CDATA[
        Name: expected-output-bandwidth
        Node Type: leaf
        Data Type: yang:gauge64
        Default: 0
        Access: Read/write
        Description: The expected output bandwidth of the interface,
          in Mbps. A value of zero (0) indicates full bandwidth.
]]></artwork></figure>

<section anchor="tree-representation-1"><name>Tree Representation</name>

<figure><artwork><![CDATA[
 +--rw interface* [name]
    +--rw expected-input-bandwidth?     yang:gauge64
    +--rw expected-output-bandwidth?    yang:gauge64
]]></artwork></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>YANG provides information about and configuration capabilities to the
network management plane. Other mechanisms already exist that help
secure these interactions. This document extends the scope of what can
be controlled by the management plane, but creates no new access paths.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document makes no requests for IANA.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC8348;
&I-D.ietf-ivy-network-inventory-yang;
&RFC2119;
&RFC8174;
&RFC8343;


    </references>




  </back>

<!-- ##markdown-source:
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

-->

</rfc>

