<?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.wzwb-opsawg-network-inventory-management SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.wzwb-opsawg-network-inventory-management.xml">
<!ENTITY I-D.ietf-ccamp-network-inventory-yang SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ccamp-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 RFC7223 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7223.xml">
]>


<rfc ipr="trust200902" docName="draft-li-ivy-power-01" 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="2023" month="October" day="16"/>

    
    <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.wzwb-opsawg-network-inventory-management"/> and
<xref target="I-D.ietf-ccamp-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-hardware-inventory/network-hardware-inventory/network-elements/network-element/components/component
in <xref target="I-D.ietf-ccamp-network-inventory-yang"/>.</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>

</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>

</section>
<section anchor="automatic-power-management"><name>Automatic Power Management</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-management
        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[
 +--ro component* [uuid]
    +--ro uuid                          yang:uuid
    +--ro used-power?                   uint32
    +--ro power-save-capable?           boolean
    +--rw power-save?                   boolean
    +--ro required-components*          -> ../uuid
    +--ro dependent-components*         -> ../uuid
]]></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 <xref target="RFC7223"/> with the
following:</t>

<figure><artwork><![CDATA[
        Name: expected-input-bandwidth
        Node Type: leaf
        Data Type: uint32
        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: uint32
        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?     uint32
    +--rw expected-output-bandwidth?    uint32
]]></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.wzwb-opsawg-network-inventory-management;
&I-D.ietf-ccamp-network-inventory-yang;
&RFC2119;
&RFC8174;
&RFC7223;


    </references>




  </back>

<!-- ##markdown-source:
H4sIACN6LWUAA+1Z2bIbtxF9x1cg0oMkhxwtdpXt+xCbWn1TulfK1XVcqpQf
wBmQhDUExgCGFOWSvyXfki/L6QZm4SLbqlSWSllVksgZAN3oPn164XQ6FaWr
jF2eyTYupl+IaGKtz+RMvp5dPpNrV+laLpyXL91We3mhrFrqtbZRqPnc681Z
Wnf0tnKlVWscVHm1iNPaTM1mN21o2fTefbGFvPO/vpbfOf8GwuUz79pGlCrq
pfO7MxliJUI7X5sQjLNx1+Ck8yfXT4Vp/JmMvg3xwb17X957IIRq48r5MyHl
FH/5j7HhTF4X8rnpniRdrp3djR46Dy3+3FrTQPdLHbdQJnQv9VqZGqKwpajN
1/n/IylXhXzorCnVvqQrZw+e/xZhfs5bvv4hLSusjkJMp1Op5iF6VeJb3ikD
LKCMVXNTm7iTJkgl32j6EFotF6okq8aVhpYVlvpdMQgtnQ3tWstgltYsINBG
qdautTFIt5DsJKnwTEaDZduVtnxU6ULsFwiI9CaQGGUrGbQNJpoNKaPmro0n
NNxov5Mrs1wVcgZ9reh0m8itllbrCuaWCzyVW7UL9MU1UMG80yw/KaYXUNlo
W+5IF9d6YfPF5NzFVVJ8bUrvWLG1ok+13ui6kN9puVIbLd08aL8heSsVBUxL
Z6ZFQS7qtowtoMj70+3zCj2fB1LFa7rPui1XiBCvAdwGFsctcZ6lV3QZXRUp
LshGbkF28xFoZiNnnaWuOV7IKW0NM5J26oRnertP5BzGhWlCqeqk4lyLhtCB
9fUEKrBqcNUcr9vo1rhKVQhxDRNaFVuvarnWJTQ1Yc2xreGlmj2ZlkNJuWV9
6Aj5Wkc5s47uDfy9jfKZttqnZbcp/O8AZVF7oE5PZHBJBTBAS1eTjXeNC5oQ
SovFwCnJoeueNYqE9rWpqloLcVOe2+hdBXdA1O/Y/x37/9/Y/+mnP1w9ffTF
p5998f69VLXXqtrRCRtT8QnDZvaghz99tVVwyHDMRJCJKocN0Lq7c72T0F1b
BhlSLRQObD6+WOcQ0TmkkNfAhlyqhvxZtt7jKc6YazZUVXkdAhA035HO59PH
xfbddj51TVDb5TSfNjV2g21I59NBPbqYrbpdRqPkKEu1bk5s2im7fP++kNBl
bNF0D0aiYBQ1UAYvGNAETtzQ2LJuK31sY/mq0SWDCyZJcBH9yapd8u053m6V
bt04i++3EDE/6DLC8C0shpi5y3p3GndOGFS/+xtedaY+fHC3lxuGjyAL+REm
I7jDZMaClIB3rsCks/UemKLXWnqdrceABkdkuuMYFwDKciWJMUFwLUI3UeF4
Z7S8c8IvKg3SqznE6SvDVWxNXVMoLWodVnASwAcFb96UV/rH1ni+tHwOxVs4
Sf508+rJX6Y13SMFLfE6bgmH37j49tX1jUn6X16+4M9Y/e351ZPH9PnVN7Pn
z/sPIq949c2Lb58/Hj4NOx+9uLh4cvk4bcZTufdI3LiYvcYbipIbL15en7+4
nD2/AaMeRLhKkJvrxAOwCkFRAVc6lN7M8QV7Hj56+Y+/3/9MphB/cP/+l4iE
HO/3P/8MX4hrkzT2VPoKM+6EahqtPJ0C1ErQrYmqDlgbZFi5rZXkr4KsFXS2
1VohE9Vgo2HvvtbGipqDo1TYhJOaGvlKPrHL2oRVOmVCZScthhYGJOE80SM4
eq1Bn3YZ4Efk6MPSXz7paJ0dyCiARngCoJBp5o54PtNb4jSVSQlV8iEZkXJI
CpqzwBAcRFEHiAPPjhaQY0StF5wvCI4hh7406yYdnVicTI5kw3QPaegQOBfi
TNFtQXZjSrRvQjrNUKbUb03K7xNpYkp8JXhRIdETx4U2J+vImZbSPPIO5Spk
xXfH5ISQqpN9oxOjiwrJduwIA3dGlUDkq+FBggT+HZ1Cdo5Gs6LgKxB9pBsC
KIJzdi4kVLkajEXKt305A+hxVkhlT7ckmUgAJyVDGscreSs1dJS5b7EraTOR
R8w5tCu3EPxB8OKiS6eydzBdIbHu6B4QZDmympYRKEbakvBBMgtOnJKwmIQ2
qWj8+eefuy5LXnJv1iJ1pU50eEGqX3OXWWu16J8/VlHl5y2kfvpgeMPRzTLO
sljwLIJxvts33ISCb6sieZJ0SdxsSSAVrk1Tm1T7jaBr7ECghTxfwC1SlcjD
qGZEtUOLCRhn/GgV2syiJuV8tUFMoKjRzB8WvTRgldcLHVBU4hiODzpUN5HW
HtgPZTdTTa5gT5lxcMCUF6Ji/whzzp3DK3vantcedbxZnEQg4+EAAf0pMmOB
DX14n1++xMco//BA+VlJgY+uH5R2d+tN1B9zL07Vx3ju7jDLdWl5PGQRrxy1
MrsQ9TrI27pYFhP0P1yz78KdVO+zsN6TXD3repFrMpG4vTmMm0J+g0ebxAIE
FK85VYQc4EyBI3wgEeWSuTKBsEBF97G5uxq7zJOgId7/q+b3etkS94IADfWB
WztCVGKt7A75tLXcjaKueqwbVKJoxsC2QlxQg9iXYl3aW6WeZmXQM/hytTtM
Yqm4FcN7r5FYylyENqtdoFoVIeypL4Phc22VfN65XCiJFoY85FMu6zaikCDw
U2pX3ILdgVu+M+gUcWVaTGHUCckruYsYs9EaD/MReDKNjty2EyldATIr0+SG
waBmeNQbdsaqdPJpT243hrMnuVSH5cWw8WGPvpEe8mFHAN2JYFoulZwdu1Pc
NoUu9vQo7gjRH1jj4mifjzxVOSbPbH+56P2MQm7wMzx22EKgQM170bwbGmEi
Rsw4vQbh5qwxtW0GWJUL79ap2OPwQktHtQyJ2bO8y3kYWE9xmq9OWfShLhUy
GSma8TjWkwOWPLShNrojSzHqE5PmtCx3S1WXdnLPWuX8cwSYwTR7Ij+EGXL8
r4FGHdC819QaUMPBsBlXdann96l5oBb0NLIKKcTT04pydQwctU1F0wGZEyr5
c68zqQYMhZy2e/ujnqorKkxRLh9Upqna2+cYOArp/ymNG94qKj8nMoUsR2yb
BgS5xg1bEwk9ikvwkItXfij44TCe6K0wvvd5Yog5LLU1FTzXpladi6heJo1A
luS02E24TohPV0lQypJgO5H2HtjtmOy7PdNRIJxieVjwNF/PeuseeveEYoih
EWmn/NTbn6dpNLYZ5dWOvuM4UD/WzaTCYF8Thiq1kAfuHhk21dtpV+/3nsHD
RGSvD48Gn1cn1C5SGmElKXyo9futXurP+7e6ac9Gg5sGa3X59ZqGC1d7Y4ms
9R+nUz+qkj+Rf2tbU33Pp6V39F1+8A8NR85oyXhH3wp8dWLHqORPy49L3vG2
cUlL67ej9aeOP1zvTkXMJ8P66Z9kUdw9uMEp931yaktv3zTNfYn2ipr4gxry
VMUIx/Z1G5cUnEXyjL0rHsWoeMw11i5XP3bUh6ZxMEvQb5FIeWyXVBK1UxVB
2XVjKkYLz8eHB6N9xlIrwBOTNuKjGCiPB7vU4vazWV6XJ3x58PL5gwef0uCF
shtx48JRI0o/hZ6Kk07slMVOe1n/Ug+5UG0dz+S9jy9ljw0x3D4beJhLjyIO
Kfli3sDMM7lRdcsF5TsNIN2+d6cvYFCgtDS1607M0fkLRkke+J+ySlLpP2CW
m7/GWttBJliLfiD+fkQSHwJWoowDDtp+2ORfjZbnYH+ly9ZTCD9CcCJ+0u8W
yHL8m30/DDZ2kWZ7NA3j3694Jubswizb/FtHzwd5tEQB0/2Oczi1KeQLTgT9
Dy2hH/fpt5QqOC2sdN2IQBpyXIfsGcUlW5fSTo39ZSiRzMlDWzoHCU/krgBN
ft3XOkdqpV+PSigS+dcRafWWJyAhyEbFFc0zb8rz2eXsyF77uqzVm3QA8bUO
yHPEN7SxEP8ESFqHqFEhAAA=

-->

</rfc>

