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


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

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


<rfc ipr="trust200902" docName="draft-li-ivy-power-02" 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="June" day="07"/>

    
    <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.y3bp-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.</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-planning"><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.y3bp-ivy-network-inventory-yang;
&RFC2119;
&RFC8174;
&RFC8343;


    </references>




  </back>

<!-- ##markdown-source:
H4sIAMdkY2YAA+1ayZIctxG94ytg8kBSniquYUtzsDRcNQ7OkCZHVjAcPqCr
0N0Qq4EygOpmS0GFPsO++Vv8KfoSv0ygll608GDZ4dAEl24UkEhkvnyZiZqi
KETlamMXp7KL8+JjEU1s9Kk8k2/OLp/Jlat1I+fOy5duo728UFYt9ErbKNRs
5vX6NM07eFq7yqoVBNVezWPRmMKst0VL04o798QG+53/+Y380vm32Fw+865r
RaWiXji/PZUh1iJ0s5UJwTgbty0knT+5eipM609l9F2I9+7c+QSShOri0vlT
IWWBv/xjbDiVV6V8bvqRpMuVs9vJoPPQ4o+dNS10v9RxA2VC/1CvlGmwFZaU
jfks/3+wy6tSPnTWVGp3p1fO7o3/nM38jJd89lWaVlodhSiKQqpZiF5V+JZX
ygALKGPVzDQmbqUJUsm3mj6ETsu5qsiqcamhZY2pfluOm1bOhm6lZTALa+bY
0EapVq6zMUg3l+wkqTAmo8G0zVJbFlW5EIcJAlt6E2gbZWsZtA0mmjUpo2au
i0c0XGu/lUuzWJbyDPpa0et2IjdaWq1rmFvOMSo3ahvoi2uhgvla8/5JMT2H
ykbbaku6uM4Lmw8mZy4uk+IrU3nHiq0UfWr0Wjel/FLLpVpr6WZB+zXtt1RR
wLQkM00Kct50VewARV6fTp9n6NkskCpe03lWXbVEhHgN4LawOE4JeZYe0WF0
Xaa4IBu5OdnNR6CZjZx1lrrheCGndA3MSNqpI54Z7H4iZzAuTBMq1SQVZ1q0
hA7Mb06gAqsGV83wuItuhaPUpRBXMKFVsfOqkStdQVMTVhzbGl5q2JNpOpSU
G9aHRMg3Osoz6+jcwN+7KJ9pq32adpPC/xZQFrUH6vSJDC6pAAbo6Giy9a51
QRNCabIYOSU5dDWwRpnQvjJ13WghrstzG72r4Q5s9Sv2f8X+/zf2v/nmN6+e
Pvr4/oOP37+XqvFa1VuSsDY1SxgXswc9/OnrjYJDRjEngkxUOyyA1v2Zm62E
7toyyJBqoXBg8/HBeoeI3iGlvAI25EK15M+q8x6jkDHTbKi69joEIGi2JZ3P
i8fl9v6s5QyfRRXGrrEGubzYKrt4/76UkDm1TNKHESUYDS2E4gEDk0AGTY2t
mq7Wh7aSr1tdMUhwtOR2MUhW3YJPwXFzo3Kr1ll8vwHkf6WrCAN2ODmwf9to
lDwHGt/uR3pz7A/cHmSG8SODDAc0FlQAlHHdI51tdlwYvdbS63xWhhEiM5MM
R5aAexZLSTwFWukQMImApiuj5ZUn/KDWoJqGA4u+MkjExjQNAXje6LCESeFy
KHj9unyl/9YZz8eQz+GZDiaV31x/9eRPRUOOSqFCbIoTwz3XLr54fXXtJP0v
L1/wZ8z+4vzVk8f0+fXnZ8+fDx9EnvH68xdfPH88fhpXPnpxcfHk8nFajFG5
MySuXZy9wRPC5rUXL6/OX1yePb8Go+7FlUoAmekUfbAKAUcBBTpU3szwBWse
Pnr5r3/efSBTYN27e/cTBFaOsru/f4AvxHBpN/ZU+gozboVqW608SQHGJEjO
RNUEzA0yLN3GSvJXSdYKOttqpcD/DThgXLurtbGiYShXCosgqW2QJeQTu2hM
WCYpJ1Ts0WRoYRCazhMpgRlXGqRlFwF+RGbcL7jlk55M2YGMAmiEEQCFTDNz
xK6ZVBKTqEwFqE33KYCUAxVr5t4R7kQMe4gDu00mkGNEo+fM0gTHkANVmlWb
RCfuJJOD4plksRvqcs5AkCn6JcgpTET2bUjSDOUn/c6krHoiTUzppgIbKaRX
yETTkFNk5PxGyRVsTxkCuejrQypBSDXJvtGJyUGFZDv2FIAzIzcT5Wl4kCCB
fydSyM7RaFYU7AJ6jXRCAEVwpszpW1XL0VikfDcUEYAec3EqNvopyUQCOKkY
0hCv5I3URlG+vMGupMVEHjFnrr7IQfAHwZPLPonJwcF0hMSRk3NgI8uR1XaM
QDHRljYfd+aNE6ckLKZN21Sqffvtt31vIy+5I+qQMFL/Nz4g1a+4t2u0mg/j
j1VUebzDrvfvjU84unmP07wteBbBONvuGu6Egm+jInmSdEncbGlDKhfbtjGp
4ppA19iRQEt5PodbpKqQ/VBDiHqLxg4wzvjRKnSZRU3KtGqNmEApoZk/LDpY
wCrPFzqglIMYjg8SqttIc8tjlooOTFP8svZiCJo4NKT4Qfs9GudH7AlqRI2h
E5RY92ykLpUIAOzuNsSnoA7abWePMlUIgZgC8Q+JSHdUNiJC/Ji2wi/nm110
oxXhRJCr+mOuG8Oj4InoYj7AeTPn8Mge996VR29j5kf5gaN1Lz4nnkyRym7b
P8+PH+JDlH+4p/xZRbR8ioJD1bc33kT9IefiQuqQbTL0iOy4l5lp8ma3WJAT
qbtgzudMQXpSpiY+TE4FENfKo+aj5kmsVdNp4HooxghmK0pEtZnPNVW88vvv
/p4wRYDR4fvv/pExSktAsCH3UJQoUM56C+xzJthOkkAKDP0OKSjJ6Su1Wq9N
lSApgHl6np9MNk3FCQ1yO4gNkJRJVzA6jh8pfYPOvENqobYUGOCOZmh/hriA
GbkZs0cin6Mil6noTOep6KCpbqJqbm53jptORGmJU+I4WUw7WEPdNdGOhtuM
8ylvnA0aJky+Zg2FeO2oQd+GqFdB3tTlojxBV8+d6DbcSp7nMwyxyD2hbuZF
SmUi1U7tfl4q5ecYWqcsS8HuNZdiISdQBs4kwjN8EGC1CWTU+ihhD5YuBsDS
Of6bweP1oqO6Bg7Ptp/wQaoIMiHIp53l+xU487Fu0ZNpi/oJdeQFXXkMXVFf
Ui5Tl7406IJ9tdzuF4gpQMT43GsUbVVux9rlNlDXBtx4umnwQzQkf/fuFkqi
KSfv+FQn9gtRpBN1Udms+FLhFlzypYlLOjJNJhLsN8kzuS+eZvoVBrMIjBTR
EW62IpWCgMvStLkFNmCIR4Nhz1iVfn8mi1RU7SZKaloJAOPChwPyJnrIhz19
9xKRLLkNcXbqTnHTlLrc0aO8JcQgsMHBq+2hp2rHyS/bX84HP6NJGv0Mj+03
02j+8lpja0OX8ogPMy1dg3Az1pguIhDsKMy9Ww1chS2dJyKgbXYs73KNC6yn
GM1Hpwr1oa4UagZSNONxqicHK3loTRdDfaoTk5uPpDlNy/cGdV/S5VuYOtd2
B4AZTbOz5Q9hhhz/U6BRe0naa6pfiH0ZNtOOKd1i5QqHK6ajyCqlEE+PK8qd
J3DUtTXdd8lcEJE/d7r+esRQyCXcYH/0Kk1NTR9a0b2ur8+qU1DCUSgFn9IF
2jtFrd2JTCHLEdulK6/cP4aNiYQexe1tyI0hDwoeHC/cBitMz32eGGIGS21M
Dc/1lSVlzmFPutRbkNNif2d7ZPt0lASlvBNsJ9LaPbsdEn2/ppgEwjGWhwWP
8/XZYN197x5RDDE0Ie2Umwb7c3ali8hJZdfTd5wG6oe6mVQY7WvC2AGWcs/d
E8OmXrav97PhBwYPJyJ7fRwafV4fUTvXWawkhQ9dq/xcLw3y/qNu2rHR6KbJ
fWDOr1d0cfdq58ova/3bovCbccVH8i/D58LUf2Wpe3MwLnd/kEj7YoPmukmj
/ene1Gl3mOYe9ivDmmkzkpQYJx8I3p/sjoXKR3ly8QdZlrfxZ3h0e3q+iZBj
nvzo5wkZjJ9eXrxslLWHxeWxUhJeHwo6rjc4xeRXSn1VKSZVZS7Atrk0spPa
P739yBUzsizfbieVRONUTTh3feHNUOLXQePAZJ2x1OXxVWUX8VGMfMjvMehu
aXgVkRrtdBEub9wexsP48cb4vuE+3YRSSqQN544qefqNgGPB1atTsDrFoMOH
VLv0RuB0Ae307x5MAnCuuiaeyjsfXgUfmmm0TTb/+JJmEqzI5hezNlArxe0g
Tf5aA3g379waah/UNh1dpvcSc2D/iGmSf/4HbZMU+wWMc/2naW/YE7RHvzMx
pbsfAlninQMT7S3aN/+nB4syObzWVecp5B8hmBFv6bUeUib/Ssvw1mbaD6cO
mC+vnZ2bRZdfBQ78ke+AqTLpX3PuX6+W8gVnleE9ZBju5fU7yjucY5a6aUUg
DZkHQvaS4vqvz4/H3qbJUKEyIG9tSA6yp8gthkdkD4XTgVrp5WoFRSK/PJRW
b/jmJATZqrikFw/X5fnZ5dmBvXZ1Wam3SQDlAB2QNImfaGEp/g1T5v4CcCQA
AA==

-->

</rfc>

