Network Working Group                                    J. Quittek, Ed.
Internet-Draft                                                 R. Winter
Intended status: Standards Track                                T. Dietz
Expires: April 28, 2011                                     D. Dudkowski
                                                         NEC Europe Ltd.
                                                        October 25, 2010


          Definition of Managed Objects for Energy Management
                     draft-quittek-power-mib-02.txt

Abstract

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols in the Internet community.
   In particular, it describes managed objects providing information
   about the energy consumption, the power states, and the battery
   status of managed devices and their components.

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on April 28, 2011.

Copyright Notice

   Copyright (c) 2010 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



Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 1]


Internet-Draft              Power MIB Modules               October 2010


   Provisions Relating to IETF Documents
   (http://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 Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the BSD License.


Table of Contents

   1.  The Internet-Standard Management Framework . . . . . . . . . .  3

   2.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3

   3.  Identifying Monitored Devices and Components . . . . . . . . .  4

   4.  Power State MIB  . . . . . . . . . . . . . . . . . . . . . . .  5
     4.1.  Current Power State Table  . . . . . . . . . . . . . . . .  5
     4.2.  Power State Table  . . . . . . . . . . . . . . . . . . . .  6

   5.  Energy MIB . . . . . . . . . . . . . . . . . . . . . . . . . .  7
     5.1.  Energy Consumption Table . . . . . . . . . . . . . . . . .  7
     5.2.  Energy Consumption Per Power State Table . . . . . . . . .  8
     5.3.  Power History Table  . . . . . . . . . . . . . . . . . . .  9

   6.  Battery MIB  . . . . . . . . . . . . . . . . . . . . . . . . .  9

   7.  Relationship to Other MIB Modules  . . . . . . . . . . . . . . 10

   8.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . . 11
     8.1.  Power State MIB  . . . . . . . . . . . . . . . . . . . . . 11
     8.2.  Energy MIB . . . . . . . . . . . . . . . . . . . . . . . . 20
     8.3.  Battery MIB  . . . . . . . . . . . . . . . . . . . . . . . 39

   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 51

   10. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 52

   11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 52
     11.1. Normative References . . . . . . . . . . . . . . . . . . . 52
     11.2. Informative References . . . . . . . . . . . . . . . . . . 53

   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54






Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 2]


Internet-Draft              Power MIB Modules               October 2010


1.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [RFC3410].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through the Simple Network Management Protocol (SNMP).
   Objects in the MIB are defined using the mechanisms defined in the
   Structure of Management Information (SMI).  This memo specifies MIB
   modules that is compliant to the SMIv2, which is described in STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58,RFC 2580
   [RFC2580].


2.  Introduction

   Energy management in communication networks is a topic that has been
   neglected for many years when energy was cheap and global warming not
   recognized.  This has changed recently.  Energy management is
   becoming a significant component of network planning, operations and
   management and new energy management strategies are currently being
   explored.

   An essential requirement for energy management is collecting
   information on energy consumption and energy storage at managed
   devices.

   An elementary step into this direction is monitoring power states.  A
   power state defines a limitations of services provided by a device
   and implicitly limits energy consumption.  Examples for commonly
   implemented power states include 'on', 'full power', 'low power',
   'sleep', 'stand-by', and 'off'.  There is no commonly agreed
   convention for power states naming and semantics.  Therefore power
   states with the same names may have different semantics and different
   names may be in use for the same power state.

   But the actual energy consumption of a device depends on more than
   just its power state.  Also the current load, the kind of load, and
   many other factors influence energy consumption.  If instrumentation
   is available, it is very helpful to receive information on the actual
   energy consumption of a device and its component.  Providing this
   information requires much more effort than reporting power states,
   because a probe that measures (electrical) power is required.
   Typically this means not just adding several lines of software to a
   device, but also adding costly sensor hardware to it.




Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 3]


Internet-Draft              Power MIB Modules               October 2010


   A third aspect to be considered for energy management is energy
   storage in batteries.  It is helpful, for example, to monitor which
   device is running on batteries and which is charging its battery.
   Fortunately, the problem of instrumentation is often an easy one for
   devices with rechargeable batteries.  Controlling the charging cycles
   needs instrumentation anyway and this instrumentation can also be
   used for providing battery status information.

   This document defines a portion of the Management Information Base
   (MIB) that serves the three purposes sketched above:
   o  monitoring power states of managed entities,
   o  monitoring energy consumption of managed entities,
   o  monitoring the status of batteries contained in or controlled by
      managed devices.

   Supporting all three monitoring task will not make sense for every
   device.  Many networked devices do not have batteries to be monitored
   and thus it would not make sense for them to implement managed
   objects for this purpose.

   As mentioned above, instrumentation for measuring actual energy
   consumption is relatively expensive and it will not make sense for
   every managed device to provide sufficient instrumentation.  In such
   a case it would not be appropriate to still implement managed objects
   for energy consumption monitoring.

   This leads to the conclusion that the portions of the MIB for the
   three monitoring tasks listed above should be rather independent of
   each other and not combined in a single one.  This document contains
   three MIB modules called Power State MIB, Energy MIB, and Battery
   MIB.  The Energy MIB module uses an object defined in the Power State
   MIB module, but beyond that there is no dependency between the three
   modules.  Obviously, any combination of the three modules is
   possible.

   The definitions in this document are based on the requirements
   outlined in [I-D.quittek-power-monitoring-requirements].

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].


3.  Identifying Monitored Devices and Components

   As argued in [I-D.quittek-power-monitoring-requirements] it is often
   required or at least desirable to not just monitor energy consumption
   and power state of an entire devices, but also of its contained



Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 4]


Internet-Draft              Power MIB Modules               October 2010


   individual components.  Furthermore it is argued in
   [I-D.quittek-power-monitoring-requirements] that there are cases
   where it is required that a managed device reports about energy
   consumption of one or more other, potentially remote devices.  An
   example is a power strip reporting actual power and accumulated
   energy consumption of devices plugged into it.

   It is not the purpose of MIB modules in this document to solve the
   problem of identifying components of the managed device that
   implements these modules or of components remote to this managed
   device.  The task of identifying the entity that is subject of
   monitoring is left to other MIB modules, such as the ENERGY AWARE
   MIB module [I-D.parello-eman-energy-aware-mib], and the Entity MIB
   module [RFC4133].

   As an open and flexible way of identifying the monitored entity, the
   MIB modules in this document use an OID as index that points into a
   MIB module used for identifying the monitored entity.  For
   simplifying the trivial case that the monitored entity is identical
   with the device that implements the MIB module, an empty OID may be
   used.


4.  Power State MIB

   A number of devices today can operate in a number of different power
   states by reducing performance or going into standby mode or sleep
   mode.  The Power State MIB module can be used for monitoring these
   states.  Typically, not much instrumentation is needed for supporting
   the power state MIB module, because most devices with different power
   states are already equipped with means for controlling their these.

   The Power State MIB module is structured into two tables, the
   powerCurrentStateTable reporting the current power state per entity
   and the powerStateTable providing statistics per power state.  In
   addition, the Power State MIB module defines a notification that can
   be sent for informing the receiver about a change of an entity's
   current power state.  For identifying the entity for which power
   state information is provided, OIDs are used, as explained in the
   previous section.  Both tables use such an OID as their first index.

4.1.  Current Power State Table

   For basic monitoring of the actual power state of an entity, there is
   already a MIB module available: the Entity State MIB [RFC4268].  It
   reports the power state of an entity in object entStateStandby.  It
   can have four different values: unknown(0), off(1),
   nonOperational(2), operational(3), see ENTITY-STATE-TC-MIB in



Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 5]


Internet-Draft              Power MIB Modules               October 2010


   [RFC4268].

   If this was considered to be sufficient, there would be no need for
   replicating this object in the power state MIB module.  However,
   there is a concern that the three "known" states are too few for
   reflecting the variety of power saving states available today.  For
   PCs, for example, there are several more states defined for the
   Advanced Configuration & Power Interface (ACPI).  It might be useful
   to support several or all of these power states as suggested by
   [I-D.claise-energy-monitoring-mib].

   The powerCurrentStateTable contains just a two objects per row:

      powerStateTable(1)
      +--powerStateEntry(1) [powerStateEnergyConsumerId]
         +-- --- Integer32        powerStateEnergyConsumerId(1)
         +-- --- ObjectIdentifier powerStateEnergyConsumerOid(2)
         +-- r-n SnmpAdminString  powerStateOperationalState(3)
         +-- rwn SnmpAdminString  powerStateAdminState(4)

   Object powerStateOperationalState reports the actual power state of
   an entity at the time the object's value is retrieved.  Object
   powerStateAdminState indicates a desired power state that the entity
   has been requested to enter, for example, by a network management
   system.

4.2.  Power State Table

   The second table called powerStateTable provides more detailed
   statistics for each power state.  For this purpose it uses the power
   state name as another index object next to the entity index.  This
   way, statistics can be reported per entity and per power state.  The
   second index has the syntax of a SnmpAdminString and can be defined
   by the manufacturer of the device or MIB.  In this way the index can
   fit many devices because the characteristics of the power state can
   be defined per device.  The characteristics of the power state SHOULD
   be described as closely as possible in the object
   powerStateDescription.













Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 6]


Internet-Draft              Power MIB Modules               October 2010


      powerStateAllStatesTable(2)
      +--powerStateAllStatesEntry(1)
         [powerStateEnergyConsumerId,powerStateName]
         +-- --- SnmpAdminString powerStateName(1)
         +-- r-n Enumeration     powerStateType(2)
         +-- r-n SnmpAdminString powerStateDescription(3)
         +-- r-n Integer32       powerStateAveragePower(4)
         +-- r-n Integer32       powerStateMaximumPower(5)
         +-- r-n TimeTicks       powerStateTotalTime(6)
         +-- r-n TimeStamp       powerStateLastEnterTime(7)
         +-- r-n SnmpAdminString powerStateLastEnterReason(8)
         +-- r-n Counter64       powerStateEnterCount(9)

   The offered statistics include the total time that the entity spent
   in a certain power state (powerStateTotalTime), the last time at
   which the entity entered a power state (powerStateLastEnterTime), the
   reason for entering it at the last time (powerStateLastEnterReason),
   the number of times a certain state has been entered
   (powerStateEnterCount), the average power consumed by the entity
   (powerStateAveragePower) and the maximum power consumed by the entity
   (powerStateMaximumPower).


5.  Energy MIB

   Devices that have instrumentation for measuring electrical energy
   consumption of entities can implement the Energy MIB module.
   Entities for which energy consumption is reported can be the entire
   devices, a component thereof or even an external entity for which the
   reporting devices observes the energy consumption.

   The Energy MIB module defines two tables, the energyTable and the
   energyPerStateTable.  The first one provides information on the
   instrumentations and on measured energy consumption of the entity.
   The second one provides energy consumption information for each
   individual power state.

5.1.  Energy Consumption Table

   The first set of managed objects in the energyTable are needed to
   help interpreting the energy consumption readings.  These include the
   power supply type and voltage.









Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 7]


Internet-Draft              Power MIB Modules               October 2010


     energyTable(1)
     +--energyEntry(1) [energyConsumerId]
        +-- --- Integer32          energyConsumerId(1)
        +-- --- ObjectIdentifier   energyConsumerOid(2)
        +-- r-n EntitySensorStatus energySensorOperStatus(3)
        +-- r-n Unsigned32         energyNominalSupplyVoltage(4)
        +-- r-n Enumeration        energyElectricSupplyType(5)
        +-- r-n Unsigned32         energyTotalEnergy(6)
        +-- r-n UnitMultiplier     energyEnergyUnitMultiplier(7)
        +-- r-n Integer32          energyEnergyPrecision(8)
        +-- r-n Enumeration        energyMeasurementMethod(9)
        +-- r-n TimeStamp          energyDiscontinuityTime(10)
        +-- r-n Unsigned32         energySampleInterval(11)
        +-- r-n Unsigned32         energyMaxHistory(12)
        +-- r-n UnitMultiplier     energyPowerUnitMultiplier(13)
        +-- r-n Integer32          energyPowerPrecision(14)
        +-- r-n Unsigned32         energyRealPower(15)
        +-- r-n Unsigned32         energyPeakRealPower(16)
        +-- r-n Unsigned32         energyReactivePower(17)
        +-- r-n Unsigned32         energyApparentPower(18)
        +-- r-n Integer32          energyPhaseAngle(19)
        +-- r-n Integer32          energyPhaseAnglePrecision(20)

   The main measured values provided by the table are the total energy
   consumed by the device and the current power (energy consumption
   rate).  For entities supplied with alternating current (AC) there are
   also objects defined for reporting apparent power, reactive power and
   phase angle.

   Provided energy and power values need to be multiplied by a unit
   multiplier given by a corresponding unit multiplier object in order
   to determine a measured value.

   Measurements of the total energy consumed by an entity may suffer
   from interruptions in the continuous measurement of the current
   energy consumption.  In order to indicate such interruptions, object
   energyDiscontinuityTime is provided for indicating the time of the
   last interruption of total energy measurement.

   Time series of energy consumption values for past points in time are
   stored in the energyHistoryTable.  Objects energySampleInterval and
   energyMaxHistory control the generation of entries in this table, see
   below.

5.2.  Energy Consumption Per Power State Table

   The second table in this module is called energyPerStateTable and it
   provides values of total energy consumption per power state in a way



Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 8]


Internet-Draft              Power MIB Modules               October 2010


   similar to the powerStateTable in the Power State MIB module.

      energyPerStateTable(2)
      +--energyPerStateEntry(1) [energyConsumerId,powerStateName]
         +-- r-n Unsigned32 energyPerStateTotalEnergy(1)

5.3.  Power History Table

   The third table in this module is the energyHistoryTable.  It stores
   total energy consumtion values for past points in time.

     energyHistoryTable(3)
     +--energyHistoryEntry(1) [energyConsumerId,energyHistoryIndex]
        +-- --- Unsigned32 energyHistoryIndex(1)
        +-- r-n TimeStamp  energyHistoryTimestamp(2)
        +-- r-n Unsigned32 energyHistoryTotalEnergy(3)

   Creation of entries in this table is controlled by the values of
   corresponding objects energySampleInterval and energyMaxHistory in
   the energyTable.

   Entries are indexed by the the entity (energyConsumerId) and by
   energyHistoryIndex.  The first entry created for a certain entity in
   the table always has an energyHistoryIndex with a value of 1.
   Further entries for the same entity get increasing consecutive
   indices until the maximum index value given by object
   energyMaxHistory is reached.  Then, no further indices will be used,
   but the entry with the oldest timestamp will be overwritten each time
   a new entry needs to be created.

   A new entry is created with a time difference given by object
   energySampleInterval after creation of the previous entry.  Hence,
   the difference between timestamps energyHistoryTimestamp of two
   consecutive entries SHOULD be equal to the value of object
   energySampleInterval.


6.  Battery MIB

   Editor's note: The Battery MIB module still uses the entPhysicalIndex
   from the ENTITY MIB.  This will be changed in the next revision.

   The third MIB module defined in this document defines objects for
   reporting information about batteries.  The batteryTable contained in
   the Batter MIB module is again a sparse augment of the Entity MIB
   module [RFC4133].  It uses one row per battery and require that every
   battery for which information is provided has its own entry in the
   entPhysicalTable of the Entity MIB module.



Quittek, et al.      draft-quittek-power-mib-02.txt             [Page 9]


Internet-Draft              Power MIB Modules               October 2010


   The kind of entity in the entPhysicalTable is indicated by the value
   of enumeration object entPhysicalClass.  Since there is no value
   called 'battery' defined for this object, it is RECOMMENDED that for
   batteries the value of this object is chosen to be powerSupply(6).

   The batteryTable contains three groups of objects.  The first group
   describes the battery in more detail than the generic objects in the
   entPhysicalTable.  The second group of objects report on the current
   battery state, if it is charging or discharging, how much it is
   charged, its remaining capacity, the number of experienced charging
   cycles, etc.

      batteryTable(1)
      +--batteryEntry(1) [entPhysicalIndex]
         +-- r-n Enumeration batteryType(1)
         +-- r-n Enumeration batteryTechnology(2)
         +-- r-n Unsigned32  batteryNominalVoltage(3)
         +-- r-n Unsigned32  batteryNumberOfCells(4)
         +-- r-n Unsigned32  batteryNominalCapacity(5)
         +-- r-n Unsigned32  batteryRemainingCapacity(6)
         +-- r-n Counter32   batteryChargingCycleCount(7)
         +-- r-n DateAndTime batteryLastChargingCycleTime(8)
         +-- r-n Enumeration batteryState(9)
         +-- r-n Unsigned32  batteryCurrentCharge(10)
         +-- r-n Unsigned32  batteryCurrentChargePercentage(11)
         +-- r-n Unsigned32  batteryCurrentVoltage(12)
         +-- r-n Integer32   batteryCurrentCurrent(13)
         +-- r-n Unsigned32  batteryLowAlarmPercentage(14)
         +-- r-n Unsigned32  batteryLowAlarmVoltage(15)
         +-- r-n Unsigned32  batteryReplacementAlarmCapacity(16)
         +-- r-n Unsigned32  batteryReplacementAlarmCycles(17)

   The third group of objects in this table indicates thresholds which
   can be used to raise an alarm if a property of the battery exceeds
   one of them.  Raising an alarm may include sending a notification.
   The Battery MIB defines two notifications, one indicating a low
   battery charging state and one indicating an aged battery that may
   need to be replaced.


7.  Relationship to Other MIB Modules

   The three MIB modules described above relate to a number of existing
   standard MIB modules and complements them where necessary.

   This section needs to be revised.





Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 10]


Internet-Draft              Power MIB Modules               October 2010


8.  Definitions

8.1.  Power State MIB

   POWER-STATE-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
       mib-2, Integer32, Counter64, TimeTicks
           FROM SNMPv2-SMI                                -- RFC2578
       TimeStamp
           FROM SNMPv2-TC                                 -- RFC2579
       MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
           FROM SNMPv2-CONF                               -- RFC2580
       SnmpAdminString
           FROM SNMP-FRAMEWORK-MIB;                       -- RFC3411

   powerStateMIB MODULE-IDENTITY
       LAST-UPDATED "201010231200Z"         -- 23 October 2010
       ORGANIZATION "IETF OPSAWG Working Group"
       CONTACT-INFO
           "General Discussion: opsawg@ietf.org
           To Subscribe: https://www.ietf.org/mailman/listinfo/opsawg
           Archive: http://www.ietf.org/mail-archive/web/opsawg

           Co-editor:
             Juergen Quittek
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Tel: +49 6221 4342-115
             Email: quittek@neclab.eu

           Co-editor:
             Thomas Dietz
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Phone: +49 6221 4342-128
             Email: Thomas.Dietz@neclab.eu"

       DESCRIPTION
           "This MIB module defines a set of objects for monitoring
           the power state of managed entitites.



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 11]


Internet-Draft              Power MIB Modules               October 2010


           Copyright (c) 2010 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 Simplified BSD License
           set forth in Section 4.c of the IETF Trust's Legal Provisions
           Relating to IETF Documents
           (http://trustee.ietf.org/license-info).

           This version of this MIB module is part of RFC yyyy; see
           the RFC itself for full legal notices."
   -- replace yyyy with actual RFC number & remove this notice

   --  Revision history

       REVISION     "201010231200Z"         -- 23 October 2010
       DESCRIPTION
           "Initial version, published as RFC yyyy."
   -- replace yyyy with actual RFC number & remove this notice

       ::= { mib-2 9991 }
   -- xxx to be assigned by IANA.

   --******************************************************************
   -- Top Level Structure of the MIB module
   --******************************************************************

   powerStateNotifications OBJECT IDENTIFIER ::= { powerStateMIB 0 }
   powerStateObjects       OBJECT IDENTIFIER ::= { powerStateMIB 1 }
   powerStateConformance   OBJECT IDENTIFIER ::= { powerStateMIB 2 }

   --==================================================================
   -- 1. Object Definitions
   --==================================================================

   --------------------------------------------------------------------
   -- 1.1. Actual Power State Table
   --------------------------------------------------------------------
   powerStateTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF PowerStateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table provides information on the current power state
           of managed entities.

           The table is indexed by an ID of the entity on which power



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 12]


Internet-Draft              Power MIB Modules               October 2010


           state information is provided. IDs can be provided by
           another MIB module, such as the ENERGY AWARE MIB module
           or the ENTITY MIB module. If not ID provisioning from other
           MIB modules is available, the table can only have one entry
           for reporting the local power state of the device that tuns
           an instance of this table."
       ::= { powerStateObjects 1 }

   powerStateEntry OBJECT-TYPE
       SYNTAX      PowerStateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry providing information on the current power state
           of an entity."
       INDEX  { powerStateEnergyConsumerId }
       ::= { powerStateTable 1 }

   PowerStateEntry ::=
       SEQUENCE {
          powerStateEnergyConsumerId   Integer32,
          powerStateEnergyConsumerOid  OBJECT IDENTIFIER,
          powerStateOperationalState   SnmpAdminString,
          powerStateAdminState         SnmpAdminString
       }

   powerStateEnergyConsumerId OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An integer that identifies an entity that is subject of
           power state monitoring. Index values MUST be locally unique
           for each identified entity.

           If an implementation of the ENERGY AWARE MIB module is
           available in the local SNMP context, then the same index of
           an entity MUST be chosen as assigned to the entity by object
           pmIndex in the ENERGY AWARE MIB module. In this case,
           entities without an assigned value for pmIndex cannot be
           indexted by the powerCurrentStateTable.

           If there is no implementation of the ENERGY AWARE MIB module
           but one of the ENTITY MIB module is available in the local
           SNMP context, then the same index of an entity MUST be chosen
           as assigned to the entity by object entPhysicalIndex in the
           ENTITY MIB module. In this case, entities without an assigned
           value for pmIndex cannot be indexted by the



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 13]


Internet-Draft              Power MIB Modules               October 2010


           powerCurrentStateTable.

           If neither the ENERGY AWARE MIB module nor of the ENTITY MIB
           module is available in the local SNMP context, then this MIB
           module may choose identity values from a further MIB module
           providing entity identities. In this case the value for each
           pmIndex must remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization.

           In case that no other MIB module has been chosen for
           providing entity identities, power state can be reported
           exclusively for the local device on which this table is
           instantiated. Then this table will have a single entry only
           and an index value of 0 MUST be used.

           The identity provisioning method that has been chosen can be
           retrived by reading the value of powerStateEnergyConsumerOid.
           In case of identities provided by the ENERGY AWARE MIB
           module, this OID points to an exising instance of pmIndex,
           in case of the ENTITY MIB, the object points to a valid
           instance of entPhysicalIndex, and in a similar way, it points
           to a value of another MIB module if this is used for
           identifying entities. If no other MIB module has been chosen
           for providing entity identities, then the value of
           powerStateEnergyConsumerOid MUST be 0.0 (zeroDotZero)."
       ::= { powerStateEntry 1 }

   powerStateEnergyConsumerOid OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An OID that identifies an entity that is subject of
           power state monitoring. The value MUST be an OID that
           points to an existing managed object or 0.0 (zeroDotZero).

           If another MIB module is chosen for providing identities
           for managed entities, then the value of this object
           points to an existing instance of an entity identifier,
           such as an instance of pmIndex in the ENERGY AWARE MIB or an
           instance of entPhysicalIndex in the ENTITY MIB module.

           If power state information is provided only for the local
           device on which this table is instantiated, then the value
           of this object MUST be 0.0 (zeroDotZero)."
       ::= { powerStateEntry 2 }




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 14]


Internet-Draft              Power MIB Modules               October 2010


   powerStateOperationalState OBJECT-TYPE
       SYNTAX      SnmpAdminString (SIZE(1..32))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the current power state of the
           entity. The given SnmpAdminString MUST match the
           powerStateName object of an enry in the
           powerStateAllStatesTable."
       ::= { powerStateEntry 3 }

   powerStateAdminState OBJECT-TYPE
       SYNTAX      SnmpAdminString (SIZE(0..32))
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
           "This object indicates the desired power state of the
           entity. This object may be set by a network management
           system in order to request changing the actual power state
           to the desired one.

           If this object has not been set by an administrative action
           requesting a certain power state, then its value is an
           empty string of length 0."
       ::= { powerStateEntry 4 }


   --------------------------------------------------------------------
   -- 1.2. All Power States Table
   --------------------------------------------------------------------
   powerStateAllStatesTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF PowerStateAllStatesEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table provides information on all available power
           states of managed entities.

           The table extends the powerStateTable by sharing the first
           index. The first index serves for identifying an entity for
           which power state information is provided. The second index
           identifies a single power state by its name."
       ::= { powerStateObjects 2 }

   powerStateAllStatesEntry OBJECT-TYPE
       SYNTAX      PowerStateAllStatesEntry
       MAX-ACCESS  not-accessible
       STATUS      current



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 15]


Internet-Draft              Power MIB Modules               October 2010


       DESCRIPTION
           "Power state information about this physical entity."
       INDEX       { powerStateEnergyConsumerId, powerStateName }
       ::= { powerStateAllStatesTable 1 }

   PowerStateAllStatesEntry ::=
       SEQUENCE {
          powerStateName               SnmpAdminString,
          powerStateType               INTEGER,
          powerStateDescription        SnmpAdminString,
          powerStateAveragePower       Integer32,
          powerStateMaximumPower       Integer32,
          powerStateTotalTime          TimeTicks,
          powerStateLastEnterTime      TimeStamp,
          powerStateLastEnterReason    SnmpAdminString,
          powerStateEnterCount         Counter64
       }

   powerStateName OBJECT-TYPE
       SYNTAX      SnmpAdminString (SIZE(1..32))
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This index should only be created for power states
           that are actually implemented by the entity that is
           identified by the first index powerStateEnergyConsumerOid.

           This index is the name of the power state and is limited
           to 32 characters.

           If possible the name SHOULD already give a rough idea of
           the characteristica of this power state."
       ::= { powerStateAllStatesEntry 1 }

   powerStateType OBJECT-TYPE
       SYNTAX      INTEGER {
                       unknown(0),
                       off(1),
                       nonOperational(2),
                       operational(3)
                   }
   --------------------------
   -- Open issue: Shall we replace the syntax by textual convention
   -- PowerMonitorLevel from draft-claise-energy-monitoring-mib?
   --------------------------
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 16]


Internet-Draft              Power MIB Modules               October 2010


           "Object classifies the power state. It helps to clearly
           distinguish non-operational power states (sleep, standby,
           etc.) from operational ones. In a nonOperational(2) state
           an entity provides non of its primary services except
           for bringing it into operational(3) states or off(1)
           states.

           A device in state off(1) cannot report its state on its own.
           But state off(1) may be reported by managed devices
           reporting on the power state of other managed devices."
       ::= { powerStateAllStatesEntry 2 }

   powerStateDescription OBJECT-TYPE
       SYNTAX      SnmpAdminString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "Power states are identified by their names. However,
           semantics of power states may vary between different
           entities. Reasons for variations can be different
           hardware and software architectures of managed devices.

           Object powerStateDescription SHOULD describe the power
           state and its characteristica as closely as possible."
       ::= { powerStateAllStatesEntry 3 }

   powerStateAveragePower OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "milliwatt"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the average power (energy consumption
           rate) in milliwatt at the electrical power supply of the
           entity in the power state indicated by powerStateName.

           A value of -1 indicates that the average power in this state
           is unknown."
       ::= { powerStateAllStatesEntry 4 }

   powerStateMaximumPower OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "milliwatt"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the maximum power (energy consumption
           rate) in milliwatt at the electrical power supply of the



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 17]


Internet-Draft              Power MIB Modules               October 2010


           entity in the power state indicated by powerStateName.

           A value of -1 indicates that the maximum power in this state
           is unknown."
       ::= { powerStateAllStatesEntry 5 }

   powerStateTotalTime OBJECT-TYPE
       SYNTAX      TimeTicks
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the total time in hundreds
           of seconds that the entity has been in the state
           indicated by index powerStateName."
       ::= { powerStateAllStatesEntry 6 }

   --------------------------
   -- Open issue: Shall we use DateAndTime instead of timeTicks?
   --------------------------
   powerStateLastEnterTime OBJECT-TYPE
       SYNTAX      TimeStamp
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This time stamp object indicates the last
           time a which the entity entered the state
           indicated by index powerStateName."
       ::= { powerStateAllStatesEntry 7 }

   powerStateLastEnterReason OBJECT-TYPE
       SYNTAX      SnmpAdminString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This string object describes the reason for the last
           power state transition into the power state
           indicated by index powerStateName."
       ::= { powerStateAllStatesEntry 8 }

   powerStateEnterCount OBJECT-TYPE
       SYNTAX      Counter64
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates how often the entity
           indicated by index entPhysicalIndex entered the
           power state indicated by index powerStateName."
       ::= { powerStateAllStatesEntry 9 }



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 18]


Internet-Draft              Power MIB Modules               October 2010


   --==================================================================
   -- 2. Notifications
   --==================================================================

   powerStateChangeEvent NOTIFICATION-TYPE
       OBJECTS     { powerStateLastEnterReason }
       STATUS      current
       DESCRIPTION
           "This notification can be generated when the power state of
           an entity changes.

           Note that the state that has been entered is indicated by
           the OID of object powerStateLastEnterReason."
       ::= { powerStateNotifications 1 }


   --==================================================================
   -- 3. Conformance Information
   --==================================================================

   powerStateCompliances OBJECT IDENTIFIER
       ::= { powerStateConformance 1 }
   powerStateGroups      OBJECT IDENTIFIER
       ::= { powerStateConformance 2 }

   --------------------------------------------------------------------
   -- 3.1. Compliance Statements
   --------------------------------------------------------------------

   powerCompliance MODULE-COMPLIANCE
       STATUS      current
       DESCRIPTION
           "The compliance statement for implementations of the
           POWER-STATE-MIB module.

           A compliant implementation MUST implement the objects
           defined in the mandatory group powerRequiredGroup."
       MODULE  -- this module
       MANDATORY-GROUPS { powerStateRequiredGroup }
       GROUP   powerStateNotificationsGroup
       DESCRIPTION
          "A compliant implementation does not have to implement
           the powerNotificationsGroup."
       ::= { powerStateCompliances 1 }

   --------------------------------------------------------------------
   -- 3.2. MIB Grouping
   --------------------------------------------------------------------



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 19]


Internet-Draft              Power MIB Modules               October 2010


   powerStateRequiredGroup OBJECT-GROUP
       OBJECTS {
          powerStateOperationalState,
          powerStateAdminState,
          powerStateType,
          powerStateDescription,
          powerStateTotalTime,
          powerStateLastEnterTime,
          powerStateLastEnterReason,
          powerStateEnterCount,
          powerStateAveragePower,
          powerStateMaximumPower
       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation MUST implement the objects
           contained in this group."
       ::= { powerStateGroups 1 }

   powerStateNotificationsGroup NOTIFICATION-GROUP
       NOTIFICATIONS { powerStateChangeEvent }
       STATUS      current
       DESCRIPTION
           "A compliant implementation does not have to implement the
           notification contained in this group."
       ::= { powerStateGroups 2 }
   END

8.2.  Energy MIB

   ENERGY-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, mib-2,
       Unsigned32, Integer32
           FROM SNMPv2-SMI                                -- RFC2578
       TimeStamp
           FROM SNMPv2-TC                                 -- RFC2579
       MODULE-COMPLIANCE, OBJECT-GROUP
           FROM SNMPv2-CONF                               -- RFC2580
       EntitySensorStatus
           FROM ENTITY-SENSOR-MIB                         -- RFC3433
       powerStateName
           FROM POWER-STATE-MIB
       UnitMultiplier
           FROM POWER-MONITOR-MIB;

   energyMIB MODULE-IDENTITY



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 20]


Internet-Draft              Power MIB Modules               October 2010


       LAST-UPDATED "201010231200Z"         -- 23 October 2010
       ORGANIZATION "IETF OPSAWG Working Group"
       CONTACT-INFO
           "General Discussion: opsawg@ietf.org
           To Subscribe: https://www.ietf.org/mailman/listinfo/opsawg
           Archive: http://www.ietf.org/mail-archive/web/opsawg

           Co-editor:
             Juergen Quittek
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Tel: +49 6221 4342-115
             Email: quittek@neclab.eu

           Co-editor:
             Thomas Dietz
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Phone: +49 6221 4342-128
             Email: Thomas.Dietz@neclab.eu"

       DESCRIPTION
           "This MIB module defines a set of objects for monitoring
           the energy consumption of networked devices and their
           components.

           Copyright (c) 2010 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 Simplified BSD License
           set forth in Section 4.c of the IETF Trust's Legal Provisions
           Relating to IETF Documents
           (http://trustee.ietf.org/license-info).

           This version of this MIB module is part of RFC yyyy; see
           the RFC itself for full legal notices."
   -- replace yyyy with actual RFC number & remove this notice

   --  Revision history




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 21]


Internet-Draft              Power MIB Modules               October 2010


       REVISION     "201010231200Z"         -- 23 October 2010
       DESCRIPTION
           "Initial version, published as RFC yyyy."
   -- replace yyyy with actual RFC number & remove this notice

       ::= { mib-2 9992 }
   -- yyy to be assigned by IANA.

   --******************************************************************
   -- Top Level Structure of the MIB module
   --******************************************************************

   energyObjects       OBJECT IDENTIFIER ::= { energyMIB 1 }
   energyConformance   OBJECT IDENTIFIER ::= { energyMIB 2 }

   --==================================================================
   -- 1. Object Definitions
   --==================================================================

   --------------------------------------------------------------------
   -- 1.1. Energy Consumption Table
   --------------------------------------------------------------------
   energyTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF EnergyEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table provides inforamtion on the current and
           accumulated energy consumption of entities.

           The table is indexed by an ID of the entity on which
           energy information is provided. IDs can be provided by
           another MIB module, such as the ENERGY AWARE MIB module
           or the ENTITY MIB module. If not ID provisioning from
           other MIB modules is available, the table can only have
           one entry for reporting the local power state of the
           device that tuns an instance of this table."
       ::= { energyObjects 1 }

   energyEntry OBJECT-TYPE
       SYNTAX      EnergyEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry providing information on the energy consumption
           of a physical entity."
       INDEX  { energyConsumerId }
       ::= { energyTable 1 }



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 22]


Internet-Draft              Power MIB Modules               October 2010


   EnergyEntry ::=
       SEQUENCE {
          energyConsumerId             Integer32,
          energyConsumerOid            OBJECT IDENTIFIER,
          energySensorOperStatus       EntitySensorStatus,
          energyNominalSupplyVoltage   Unsigned32,
          energyElectricSupplyType     INTEGER,
          energyTotalEnergy            Unsigned32,
          energyEnergyUnitMultiplier   UnitMultiplier,
          energyEnergyPrecision        Integer32,
          energyMeasurementMethod      INTEGER,
          energyDiscontinuityTime      TimeStamp,
          energySampleInterval         Unsigned32,
          energyMaxHistory             Unsigned32,
          energyPowerUnitMultiplier    UnitMultiplier,
          energyPowerPrecision         Integer32,
          energyRealPower              Unsigned32,
          energyPeakRealPower          Unsigned32,
          energyReactivePower          Unsigned32,
          energyApparentPower          Unsigned32,
          energyPhaseAngle             Integer32,
          energyPhaseAnglePrecision    Integer32
       }

   energyConsumerId OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An integer that identifies an entity that is subject of
           energy monitoring. Index values MUST be locally unique
           for each identified entity.

           If an implementation of the ENERGY AWARE MIB module is
           available in the local SNMP context, then the same index of
           an entity MUST be chosen as assigned to the entity by object
           pmIndex in the ENERGY AWARE MIB module. In this case,
           entities without an assigned value for pmIndex cannot be
           indexted by the powerCurrentStateTable.

           If there is no implementation of the ENERGY AWARE MIB module
           but one of the ENTITY MIB module is available in the local
           SNMP context, then the same index of an entity MUST be
           chosen as assigned to the entity by object entPhysicalIndex
           in the ENTITY MIB module. In this case, entities without an
           assigned value for pmIndex cannot be indexted by the
           powerCurrentStateTable.




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 23]


Internet-Draft              Power MIB Modules               October 2010


           If neither the ENERGY AWARE MIB module nor of the ENTITY MIB
           module is available in the local SNMP context, then this MIB
           module may choose identity values from a further MIB module
           providing entity identities. In this case the value for each
           pmIndex must remain constant at least from one
           re-initialization of the entity's network management system
           to the next re-initialization.

           In case that no other MIB module has been chosen for
           providing entity identities, power state can be reported
           exclusively for the local device on which this table is
           instantiated. Then this table will have a single entry only
           and an index value of 0 MUST be used.

           The identity provisioning method that has been chosen can be
           retrived by reading the value of object
           powerStateEnergyConsumerOid. In case of identities provided
           by the ENERGY AWARE MIB module, this OID points to an
           exising instance of pmIndex, in case of the ENTITY MIB, the
           object points to a valid instance of entPhysicalIndex, and
           in a similar way, it points to a value of another MIB module
           if this is used for identifying entities. If no other MIB
           module has been chosen for providing entity identities, then
           the value of powerStateEnergyConsumerOid MUST be 0.0
           (zeroDotZero)."
       ::= { energyEntry 1 }

   energyConsumerOid OBJECT-TYPE
       SYNTAX      OBJECT IDENTIFIER
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An OID that identifies an entity that is subject of energy
           monitoring. The value MUST be an OID that points to an
           existing managed object or 0.0 (zeroDotZero).

           If another MIB module is chosen for providing identities
           for managed entities, then the value of this object
           points to an existing instance of an entity identifier,
           such as an instance of pmIndex in the ENERGY AWARE MIB or an
           instance of entPhysicalIndex in the ENTITY MIB module.

           If power state information is provided only for the local
           device on which this table is instantiated, then the value
           of this object MUST be 0.0 (zeroDotZero)."
       ::= { energyEntry 2 }

   energySensorOperStatus OBJECT-TYPE



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 24]


Internet-Draft              Power MIB Modules               October 2010


       SYNTAX      EntitySensorStatus
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the operational status of the
           sensor that is used for measuring the energy consumption
           of the entity indicated by energyConsumerId."
       ::= { energyEntry 3 }

   energyNominalSupplyVoltage OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "millivolt"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the nominal voltage of the power
           supply of the entity. It is provided in units of
           millivolt (mV).

           The nominal voltage actual of an entity is assumed to be
           fixed, while the actual power supply voltage may vary over
           time, for example, caused by changing load conditions.

           A value of 0 indicates that the nominal supply voltage
           is unknown."
       ::= { energyEntry 4 }

   energyElectricSupplyType OBJECT-TYPE
       SYNTAX      INTEGER {
                       alternatingCurrent(1),
                       directCurrent(2),
                       unknown(3)
                   }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the type of electrical power
           supply for the entity. It is used for distinguishing
           between alternating current (AC) supply and direct
           current (DC) supply."
       ::= { energyEntry 5 }

   energyTotalEnergy OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the total consumed energy measured



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 25]


Internet-Draft              Power MIB Modules               October 2010


           at the electrical power supply of the entity.

           In order to determine the measured value in watt hours,
           the value of this object needs to be multiplied by a unit
           mulitplier given by the value of object
           energyEnergyUnitMultiplier.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other
           times as indicated by the value of
           energyDiscontinuityTime."
       ::= { energyEntry 6 }

   energyEnergyUnitMultiplier OBJECT-TYPE
       SYNTAX      UnitMultiplier
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides unit ultiplier for measured energy
           values. Reported values need to be multiplied with this
           multiplier in order to determine the measured value in
           watt hours.

           This object serves as unit multiplier for objects
           energyTotalEnergy, energyPSTotalEnergy,
           ..."
       ::= { energyEntry 7 }

   energyEnergyPrecision OBJECT-TYPE
       SYNTAX      Integer32 (0..10000)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates a the precision of a measured energy
           value. The precision is indicated as a percentage value,
           in 100ths of a percent. A value of 0 indicates that the
           precision is unknown or not applicable to the measured
           value.

           This object serves precision indicator for the values
           provided by objects energyTotalEnergy,
           energyPSTotalEnergy, ..."
       ::= { energyEntry 8 }

   energyMeasurementMethod OBJECT-TYPE
       SYNTAX      INTEGER {
                       directEnergyMeasurement(1),
                       powerOversampling(2),



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 26]


Internet-Draft              Power MIB Modules               October 2010


                       powerSampling(3),
                       loadBasedEstimation(4),
                       deviceBasedEstimation(5),
                       unknown(6)
                   }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the method used for measuring energy
           consumption.  A device may not be equipped with capabilities
           to measure its energy consumption directly, but rather
           relies on other input in order to conduct more or less
           precise estimations of its power consumption.

           The measurement methods concerns values of objects
           energyTotalEnergy, energyPSTotalEnergy, and
           energyPowerHistoryAverageValue.

           Five different measurement methods are specified.

           - directEnergyMeasurement(1) indicates that the entity is
             instrumented to directly measure its energy consumption.

           - powerOversampling(2) indicates that energy is measured
             by sampling power values more frequently than indicated
             by the value of object energySampleInterval.

           - powerSampling(3) indicates that energy is measured
             by sampling power values according to the value of object
             energySampleInterval.

           - loadBasedEstimation(4) indicates that power is estimated
             based on measurements of the load of the entity.

           - deviceBasedEstimation(5) indicates that power is estimated
             based on static properties of the entity. In this case,
             reported power only depednds on the pwoer state of the
             devices as indicated by object powerCurrentState in the
             powerCurrentStateTable of the Power State MIB module."
       ::= { energyEntry 9 }

   energyDiscontinuityTime OBJECT-TYPE
       SYNTAX      TimeStamp
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The value of sysUpTime on the most recent occasion at which
           any one or more of this entity's energy consumption counters



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 27]


Internet-Draft              Power MIB Modules               October 2010


           suffered a discontinuity.  The relevant counters are
           energyTotalEnergy and energyPerStateTotalEnergy.  If
           no such discontinuities have occurred since the last re-
           initialization of the local management subsystem, then this
           object contains a zero value."
       ::= { energyEntry 10 }

   energySampleInterval OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliseconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates is the difference of time
           stamps between two consecutive entries in the
           energyHistoryTable for this entity.

           The interval lenght provided by this object indicates the
           or maximum interval length (or minimal samping rate) at which
           the power sensor measures values of the current power.
           Implementations of the Energy MIB module may choose higher
           sampling rates (or shorter sampling intervals) in order to
           provide higher precision of the measurement. Preferably,
           shorter intervals may be chosen such that the sampling
           interval indicated by this object is a multiple of the actual
           sampling interval.

           The sampling interval is provided in units of microseconds.

           A value of 0 indicates that the sampling interval applied by
           the sensor is unknown or not constant."
       ::= { energyEntry 11 }

   energyMaxHistory OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates is the maximum number of
           corresponding entries in the energyPowerHistoryTable.
           An entry in the energyHistoryTable is corresponding
           if it has the same value for object energyConsumerId
           as index.

           An implementation of the Energy MIB module will remove the
           oldest correaponding entry in the energyHistoryTable
           to allow the addition of a new entry once the number of
           corresponding entries in the energyHistoryTable



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 28]


Internet-Draft              Power MIB Modules               October 2010


           reaches this value.

           Entries are added to the energyHistoryTable until
           energyMaxHistory is reached before entries
           begin to be removed.

           A value of 0 for this object disables creation of
           corresponding energyHistoryTable entries."
       DEFVAL      { 0 }
       ::= { energyEntry 12 }

   energyPowerUnitMultiplier OBJECT-TYPE
       SYNTAX      UnitMultiplier
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides unit ultiplier for measured energy
           values. Reported values need to be multiplied with this
           multiplier in order to determine the measured value in
           watt hours.

           This object serves as unit multiplier for the values provided
           by objects energyRealPower, energyPeakRealPower,
           energyReactivePower, and energyApparentPower."
       ::= { energyEntry 13 }

   energyPowerPrecision OBJECT-TYPE
       SYNTAX      Integer32 (0..10000)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates a the precision of a measured power
           value. The precision is indicated as a percentage value,
           in 100ths of a percent. A value of 0 indicates that the
           precision is unknown or not applicable to the measured
           value.

           This object serves precision indicator for the values
           provided by objects energyRealPower, energyPeakRealPower,
           energyReactivePower, and energyApparentPower."
       ::= { energyEntry 14 }

   energyRealPower OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the current real power value



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 29]


Internet-Draft              Power MIB Modules               October 2010


           at the electrical supply of the entity indicated by index
           energyConsumerId.

           In order to determine the measured value in watts,
           the value of this object needs to be multiplied by a unit
           mulitplier given by the value of object
           energyEnergyUnitMultiplier.

           Measured values of this object are stored in the
           energyPowerTable with a rate determined by object
           energySampleInterval."
       ::= { energyEntry 15 }

   energyPeakRealPower OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the highest observed value for
           object energyRealPower since the last
           re-initialization of the management system.

           In order to determine the measured value in watts,
           the value of this object needs to be multiplied by a unit
           mulitplier given by the value of object
           energyEnergyUnitMultiplier."
       ::= { energyEntry 16 }

   energyReactivePower OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "volt-amperes reactive"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the current reactive power value
           at the electrical supply of the entity indicated by index
           energyConsumerId.

           In order to determine the measured value in volt-amperes
           (var), the value of this object needs to be multiplied by
           a unit mulitplier given by the value of object
           energyEnergyUnitMultiplier.

           The value provided by this object is only useful if the
           value of object energySupplyType is
           alternatingCurrent(1). In this case it is RECOMMENDED that
           at least one of the three values energyReactivePower,
           energyApparentPowerScale, and energyPhaseAngle



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 30]


Internet-Draft              Power MIB Modules               October 2010


           are provided.

           If object energyElectricSupplyType of this row has a
           value other than alternatingCurrent(1), then the value of
           this object MUST be 0.

           If object energyElectricSupplyType of this row has the
           value alternatingCurrent(1) and if no value for the current
           reactive power is provided, then the value of this object
           MUST be 0xFFFF."
       ::= { energyEntry 17 }

   energyApparentPower OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "volt-amperes"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the current apparent power value
           measured in volt-ampere (VA) at the electrical supply of the
           entity for a time interval indicated by object
           energySampleInterval.

           The value provided by this object is only useful if the
           value of object energySupplyType is
           alternatingCurrent(1). In this case it is RECOMMENDED that
           at least one of the three values energyReactivePower,
           energyApparentPowerScale, and energyPhaseAngle
           are provided.

           Scale and precision of the value are indicated by objects
           energyPowerScale and energyPowerPrecision.

           If object energyElectricSupplyType of this row has a
           value other than alternatingCurrent(1), then the value of
           this object MUST be equal to the value of object
           energyRealPower.

           If object energyElectricSupplyType of this row has the
           value alternatingCurrent(1) and if no value for the current
           apparent power is provided, then the value of this object
           MUST be -10000000000."
       ::= { energyEntry 18 }

   energyPhaseAngle OBJECT-TYPE
       SYNTAX Integer32 (-1..360000)
       UNITS       "millidegrees"
       MAX-ACCESS  read-only



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 31]


Internet-Draft              Power MIB Modules               October 2010


       STATUS      current
       DESCRIPTION
           "This object indicates the current phase angle value
           measured at the electrical supply of the entity for a time
           interval indicated by object energySampleInterval.

           The value provided by this object is only useful if the
           value of object energySupplyType is
           alternatingCurrent(1). In this case it is RECOMMENDED that
           at least one of the three values energyReactivePower,
           energyApparentPowerScale, and energyPhaseAngle
           are provided.

           The value is provided in units of millidegree (one thousands
           of a degree.  This is equivalent to an assiciated object
           of type EntitySensorDataScale with the value of milli(8) and
           an associated object of type EntitySensorPrecision with a
           value of 0.

           The minimum value for this object when indicating an actual
           angle is 0, the maximum value is 360000.

           The maximum error of of the value is indicated by object
           energyPhaseAngleMaxError.

           If object energyElectricSupplyType of this row has a
           value other than alternatingCurrent(1), then the value of
           this object MUST be 0.

           If object energyElectricSupplyType of this row has the
           value alternatingCurrent(1) and if no value for the phase
           angle is provided, then the value of this object
           MUST be -1."
       ::= { energyEntry 19 }

   energyPhaseAnglePrecision OBJECT-TYPE
       SYNTAX      Integer32 (0..10000)
       UNITS       "millidegrees"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates a the precision of a measured phase
           angle value. The precision is indicated as a percentage
           value, in 100ths of a percent. A value of 0 indicates that
           the precision is unknown or not applicable to the measured
           value.

           This object serves precision indicator for the values



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 32]


Internet-Draft              Power MIB Modules               October 2010


           provided by object energyPhaseAngle."
       ::= { energyEntry 20 }


   --------------------------------------------------------------------
   -- 1.2. Energy Consumption Per Power State Table
   --------------------------------------------------------------------
   energyPerStateTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF EnergyPerStateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table provides information on the accumulated energy
           consumption of an entity.

           This table extends the energyTable by sharing the
           first index. The first index serves for identifying an
           entity for which energy information is provided. The second
           index identifies a single power state by its name."
       ::= { energyObjects 2 }

   energyPerStateEntry OBJECT-TYPE
       SYNTAX      EnergyPerStateEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "Energy consumption information per power state for a
           physical entity."
       INDEX  { energyConsumerId, powerStateName }
       ::= { energyPerStateTable 1 }

   EnergyPerStateEntry ::=
       SEQUENCE {
          energyPerStateTotalEnergy          Unsigned32
       }

   energyPerStateTotalEnergy OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the total consumed energy value
           at the electrical supply of the entity indicated by index
           energyConsumerId while being in a specific power state
           indicated by index powerStateName.

           In order to determine the measured value in watts, the value
           of this object needs to be multiplied by a unit mulitplier



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 33]


Internet-Draft              Power MIB Modules               October 2010


           given by the value of object
           energyEnergyUnitMultiplier of table
           energyTable.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other
           times as indicated by the value of
           energyDiscontinuityTime."
       ::= { energyPerStateEntry 1 }


   --------------------------------------------------------------------
   -- 1.3. Energy Power History Table
   --------------------------------------------------------------------
   energyHistoryTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF EnergyHistoryEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table stores results of energy consumption
           measurements for multiple entities.

           This table extends the energyTable by sharing the
           first index. The first index serves for identifying an
           entity for which energy information is provided. The second
           index energyHistoryIndex identifies a single measurement
           consiting of an energy consumptiopn value and a timestamp.

           Creation of entries in this row is controlled indivdually
           for each entity by two parameters: energyMaxHistory and
           energySamplingInterval.

           The energySamplingInterval controls the difference in time
           between the creation of two consecutive entries in this
           table. Object energyMaxHistory limits the number of entries
           in this table that can be created for the corresponding
           entity.

           An implementation of the Energy MIB module will remove the
           oldest entry for an entity in the energyHistoryTable to
           allow the addition of a new entry once the number of
           entries for this entity reaches the value indicated by
           object energyMaxHistory.

           Entries for a specific entity are added to this table
           until energyMaxHistory is reached before
           entries begin to be removed.




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 34]


Internet-Draft              Power MIB Modules               October 2010


           Entries for the same entity are indexed by
           energyHistoryIndex. The first entry for an entity MUST have
           an index value of 1. Further new entries MUST be indexed by
           consecutive numbers in the order in which they are created
           until the value of energyMaxHistory is reached. Then no
           further new indices will be assigned, but existing ones will
           be re-used."
       ::= { energyObjects 3 }

   energyHistoryEntry OBJECT-TYPE
       SYNTAX      EnergyHistoryEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry indicating consumed energy for an entity
           at a certain point in time."
       INDEX  { energyConsumerId, energyHistoryIndex }
       ::= { energyHistoryTable 1 }

   EnergyHistoryEntry ::=
       SEQUENCE {
          energyHistoryIndex          Unsigned32,
          energyHistoryTimestamp      TimeStamp,
          energyHistoryTotalEnergy    Unsigned32
       }

   energyHistoryIndex OBJECT-TYPE
       SYNTAX      Unsigned32 (1..4294967295)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "The index for this entry per entity.
               Values of this index MUST be unique per entity used
               as first index."
       ::= { energyHistoryEntry 1 }

   energyHistoryTimestamp OBJECT-TYPE
       SYNTAX      TimeStamp
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the time at which the
           energy consumption value provided by object
           energyHistoryTotalEnergy was measured."
       ::= { energyHistoryEntry 2 }

   energyHistoryTotalEnergy OBJECT-TYPE
       SYNTAX      Unsigned32



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 35]


Internet-Draft              Power MIB Modules               October 2010


       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the total consumed energy measured
           at the electrical power supply of the entity.

           In order to determine the measured value in watt hours,
           the value of this object needs to be multiplied by a unit
           mulitplier given by the value of object
           energyEnergyUnitMultiplier in the corresponding entry
           for this entity in table energyTable.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other
           times as indicated by the value of
           energyDiscontinuityTime in the corresponding entry
           for this entity in table energyTable."
       ::= { energyHistoryEntry 3 }


   --==================================================================
   -- 2. Conformance Information
   --==================================================================

   energyCompliances OBJECT IDENTIFIER ::= { energyConformance 1 }
   energyGroups      OBJECT IDENTIFIER ::= { energyConformance 2 }

   --------------------------------------------------------------------
   -- 2.1. Compliance Statements
   --------------------------------------------------------------------

   energyCompliance MODULE-COMPLIANCE
       STATUS      current
       DESCRIPTION
           "The compliance statement for implementations of the
           ENERGY-MIB module.

           A compliant implementation MUST implement the objects
           defined in the mandatory group energyRequiredGroup.

           If one of the entities for which energy consumption is
           reported are supplied by alternating current (AC) then it
           is recommended that not just real power is reported
           (REQUIRED) but it is also RECOMMENDED that at least one
           of three other related values (reactive power, apparent
           power, and phase angle) is reported by implementing at least
           one of the three groups energyReactivePowerGroup,
           energyApparentPowerGroup, and energyPhaseAngleGroup."



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 36]


Internet-Draft              Power MIB Modules               October 2010


       MODULE  -- this module
       MANDATORY-GROUPS { energyRequiredGroup }

       GROUP energyPowerHistoryGroup
       DESCRIPTION
           "This group is only needed for implementations that
           support storing time series of measured power values
           in the energyPowerHistoryTable."

       GROUP energyACGroup
       DESCRIPTION
           "This group is only needed for implementations that report
           consumption of electric energy provided by alternating
           current (AC) supply.

           Implementations for devices supplied with direct current (DC)
           only and implementations that do only report real power
           reporting for alternative current do not need to implement
           objects in this group."

       GROUP energyReactivePowerGroup
       DESCRIPTION
           "Information provided by elements in this group is redundant
           to information provided by elements in the
           energyApparentPowerGroup and the energyPhaseAngleGroup.

           For compliant implementations that report consumption of
           electric energy provided by alternating current (AC) supply
           it is RECOMMENDED to at least one of the three groups
           energyReactivePowerGroup, energyApparentPowerGroup, and
           energyPhaseAngleGroup."

       GROUP energyApparentPowerGroup
       DESCRIPTION
           "Information provided by elements in this group is redundant
           to information provided by elements in the
           energyReactivePowerGroup and the energyPhaseAngleGroup.

           For compliant implementations that report consumption of
           electric energy provided by alternating current (AC) supply
           it is RECOMMENDED to at least one of the three groups
           energyReactivePowerGroup, energyApparentPowerGroup, and
           energyPhaseAngleGroup."

       GROUP energyPhaseAngleGroup
       DESCRIPTION
           "Information provided by elements in this group is redundant
           to information provided by elements in the



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 37]


Internet-Draft              Power MIB Modules               October 2010


           energyReactivePowerGroup and the energyApparentPowerGroup.

           For compliant implementations that report consumption of
           electric energy provided by alternating current (AC) supply
           it is RECOMMENDED to at least one of the three groups
           energyReactivePowerGroup, energyApparentPowerGroup, and
           energyPhaseAngleGroup."

       ::= { energyCompliances 1 }

   --------------------------------------------------------------------
   -- 2.2. Object Grouping
   --------------------------------------------------------------------

   energyRequiredGroup OBJECT-GROUP
       OBJECTS {
          energySensorOperStatus,
          energyNominalSupplyVoltage,
          energyElectricSupplyType,
          energyTotalEnergy,
          energyEnergyUnitMultiplier,
          energyEnergyPrecision,
          energyMeasurementMethod,
          energyDiscontinuityTime,
          energyPowerUnitMultiplier,
          energyPowerPrecision,
          energyRealPower,
          energyPeakRealPower,
          energyPerStateTotalEnergy
       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation MUST implement the objects
           contained in this group."
       ::= { energyGroups 1 }

   energyPowerHistoryGroup OBJECT-GROUP
       OBJECTS {
          energySampleInterval,
          energyMaxHistory,
          energyHistoryTimestamp,
          energyHistoryTotalEnergy
       }
       STATUS      current
       DESCRIPTION
           "The group of object for reporting details of
           AC power measurement."
       ::= { energyGroups 2 }



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 38]


Internet-Draft              Power MIB Modules               October 2010


   energyACGroup OBJECT-GROUP
       OBJECTS {
          energyReactivePower,
          energyApparentPower,
          energyPhaseAngle,
          energyPhaseAnglePrecision
       }
       STATUS      current
       DESCRIPTION
           "The group of object for reporting details of
           AC power measurement."
       ::= { energyGroups 3 }

   energyReactivePowerGroup OBJECT-GROUP
       OBJECTS {
          energyReactivePower
       }
       STATUS      current
       DESCRIPTION
           "The group of object for reporting the reactive power
           measured for AC supply."
       ::= { energyGroups 4 }

   energyApparentPowerGroup OBJECT-GROUP
       OBJECTS {
          energyApparentPower
       }
       STATUS      current
       DESCRIPTION
           "The group of object for reporting the apparent power
           measured for AC supply."
       ::= { energyGroups 5 }

   energyPhaseAngleGroup OBJECT-GROUP
       OBJECTS {
          energyPhaseAngle,
          energyPhaseAnglePrecision
       }
       STATUS      current
       DESCRIPTION
           "The group of object for reporting the phase angler
           measured for AC supply."
       ::= { energyGroups 6 }

   END

8.3.  Battery MIB




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 39]


Internet-Draft              Power MIB Modules               October 2010


   BATTERY-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
       mib-2, Integer32, Unsigned32, Counter32
           FROM SNMPv2-SMI                                -- RFC2578
       DateAndTime
           FROM SNMPv2-TC                                 -- RFC2579
       MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
           FROM SNMPv2-CONF                               -- RFC2580
       entPhysicalIndex
           FROM ENTITY-MIB;                                -- RFC4133

   batteryMIB MODULE-IDENTITY
       LAST-UPDATED "201001291200Z"         -- 29 January 2010
       ORGANIZATION "IETF OPSAWG Working Group"
       CONTACT-INFO
           "General Discussion: opsawg@ietf.org
           To Subscribe: https://www.ietf.org/mailman/listinfo/opsawg
           Archive: http://www.ietf.org/mail-archive/web/opsawg

           Co-editor:
             Juergen Quittek
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Tel: +49 6221 4342-115
             Email: quittek@neclab.eu

           Co-editor:
             Thomas Dietz
             NEC Europe Ltd.
             NEC Laboratories Europe
             Kurfuersten-Anlage 36
             69115 Heidelberg
             Germany
             Phone: +49 6221 4342-128
             Email: Thomas.Dietz@neclab.eu"

       DESCRIPTION
           "This MIB module defines a set of objects for monitoring
           batteries of networked devices and of their components.

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




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 40]


Internet-Draft              Power MIB Modules               October 2010


           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 Simplified BSD License
           set forth in Section 4.c of the IETF Trust's Legal Provisions
           Relating to IETF Documents
           (http://trustee.ietf.org/license-info).

           This version of this MIB module is part of RFC yyyy; see
           the RFC itself for full legal notices."
   -- replace yyyy with actual RFC number & remove this notice

   --  Revision history

       REVISION     "201001291200Z"         -- 29 January 2010
       DESCRIPTION
           "Initial version, published as RFC yyyy."
   -- replace yyyy with actual RFC number & remove this notice

       ::= { mib-2 zzz }
   -- zzz to be assigned by IANA.

   --******************************************************************
   -- Top Level Structure of the MIB module
   --******************************************************************

   batteryNotifications OBJECT IDENTIFIER ::= { batteryMIB 0 }
   batteryObjects       OBJECT IDENTIFIER ::= { batteryMIB 1 }
   batteryConformance   OBJECT IDENTIFIER ::= { batteryMIB 2 }

   --==================================================================
   -- 1. Object Definitions
   --==================================================================

   --------------------------------------------------------------------
   -- 1.1. Battery Table
   --------------------------------------------------------------------
   batteryTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF BatteryEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table provides information on batteries in networked
           devices. It is designed as a sparse augment of the
           entPhysicalTable defined in the ENTITY-MIB module and assumes
           that each battery is represented by an individual row in the
           entPhysicalTable with an individual value for the index
           entPhysicalIndex.




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 41]


Internet-Draft              Power MIB Modules               October 2010


           Entries appear in this table only for entities that represent
           a battery.  An entry in this table SHOULD be created at the
           same time as the associated entPhysicalEntry.  An entry
           SHOULD be destroyed if the associated entPhysicalEntry is
           destroyed."
       ::= { batteryObjects 1 }

   batteryEntry OBJECT-TYPE
       SYNTAX      BatteryEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry providing information on a battery."
       INDEX  { entPhysicalIndex }    -- SPARSE-AUGMENTS
       ::= { batteryTable 1 }

   BatteryEntry ::=
       SEQUENCE {
          batteryType                     INTEGER,
          batteryTechnology               INTEGER,
          batteryNominalVoltage           Unsigned32,
          batteryNumberOfCells            Unsigned32,
          batteryNominalCapacity          Unsigned32,
          batteryRemainingCapacity        Unsigned32,
          batteryChargingCycleCount       Counter32,
          batteryLastChargingCycleTime   DateAndTime,
          batteryState                    INTEGER,
          batteryCurrentCharge            Unsigned32,
          batteryCurrentChargePercentage  Unsigned32,
          batteryCurrentVoltage           Unsigned32,
          batteryCurrentCurrent           Integer32,
          batteryLowAlarmPercentage       Unsigned32,
          batteryLowAlarmVoltage          Unsigned32,
          batteryReplacementAlarmCapacity Unsigned32,
          batteryReplacementAlarmCycles   Unsigned32
       }

   batteryType OBJECT-TYPE
       SYNTAX      INTEGER {
                       primary(1),
                       rechargeable(2),
                       capacitor(3),
                       other(4),
                       unknown(5)
                   }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 42]


Internet-Draft              Power MIB Modules               October 2010


           "This object indicates the type of battery.  It distinguishes
           between one-way primary batteries, rechargeable secondary
           batteries and capacitors which are not really batteries but
           often used in the same way as a battery.

           The value other(4) can be used if the battery type is known
           but none of the ones above.  Value unknown(5) is to be used
           if the type of battery cannot be determined."
       ::= { batteryEntry 1 }

   batteryTechnology OBJECT-TYPE
       SYNTAX      INTEGER {
                       zincCarbon(1),
                       zincChloride(2),
                       oxyNickelHydroxide(3),
                       lithiumCopper(4),
                       lithiumIron(5),
                       lithiumManganese(6),
                       zincAir(7),
                       silverOxide(8),
                       alcaline(9),
                       leadAcid(10),
                       nickelCadmium(12),
                       nickelMetalHybride(13),
                       nickelZinc(14),
                       lithiumIon(15),
                       lithiumPolymer(16),
                       doubleLayerCapacitor(17),
                       other(18),
                       unknown(19)
                   }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the technology used by the battery.
           Values 1-8 are primary battery technologies, values 10-16
           are rechargeable battery technologies and value alkaline(9)
           is used for primary batteries as well as for rechargeable
           batteries.

           The value other(18) can be used if the battery type is known
           but none of the ones above.  Value unknown(19) is to be used
           if the type of battery cannot be determined."
       ::= { batteryEntry 2 }

   batteryNominalVoltage OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "millivolt"



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 43]


Internet-Draft              Power MIB Modules               October 2010


       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the nominal voltage of the battery
           in units of millivolt (mV).

           Note that the nominal voltage is a constant value and
           typically different from the actual voltage of the battery.

           A value of 0 indicates that the nominal voltage is unknown."
       ::= { batteryEntry 3 }

   batteryNumberOfCells OBJECT-TYPE
       SYNTAX      Unsigned32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the number of cells contained in the
           battery.

           A value of 0 indicates that the number of cells is unknown."
       ::= { batteryEntry 4 }

   batteryNominalCapacity OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliampere hours"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the nominal capacity of the battery
           in units of milliampere hours (mAh).

           Note that the nominal capacity is a constant value and
           typically different from the actual capacity of the battery.

           A value of 0 indicates that the nominal capacity is unknown."
       ::= { batteryEntry 5 }

   batteryRemainingCapacity OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliampere hours"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the ACTUAL REMAINING capacity of the
           battery in units of milliampere hours (mAh).

           Note that the actual capacity needs to be measured and is



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 44]


Internet-Draft              Power MIB Modules               October 2010


           typically an estimate based on observed discharging and
           charging cycles of the battery.

           A value of 'ffffffff'H indicates that the actual capacity
           cannot be determined."
       ::= { batteryEntry 6 }

   batteryChargingCycleCount OBJECT-TYPE
       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object indicates the number of charging cycles that
           that the battery underwent. Please note that the precise
           definition of a rechsarge cycle varies for different kinds
           of batteries and of devices containing batteries.

           For batteries of type primary(1) the value of this object is
           always 0.

           A value of 'ffffffff'H indicates that the number of charging
           cycles cannot be determined."
       ::= { batteryEntry 7 }

   batteryLastChargingCycleTime OBJECT-TYPE
       SYNTAX      DateAndTime
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The date and time of the last charging cycle.  The value
           '0000000000000000'H is returned if the battery has not been
           charged yet or if the last charging time cannot be
           determined.

           For batteries of type primary(1) the value of this object is
           always '0000000000000000'H."
       ::= { batteryEntry 8 }

   batteryState OBJECT-TYPE
       SYNTAX      INTEGER {
                       full(1),
                       partiallyCharged(2),
                       empty(3),
                       charging(4),
                       discharging(5),
                       unknown(6)
                   }
       MAX-ACCESS  read-only



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 45]


Internet-Draft              Power MIB Modules               October 2010


       STATUS      current
       DESCRIPTION
           "This object indicates the current state of the battery.
           Value full(1) indicates a full battery with a capacity
           given by onject batteryRemainingCapacity.  Value empty(3)
           indicates a battery that cannot be used for providing
           electric power before charging it.  Value partiallyCharged(2)
           is provided if the battery is neither empty nor full and if
           no charging or discharging is in progress.  Charging or
           discharging of hte battery is indicated by values charging(3)
           or discharging(4), respectively.

           Value unknown(6) is to be used if the state of the battery
           cannot be determined."
       ::= { batteryEntry 9 }

   batteryCurrentCharge OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliampere hours"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the current charge of the battery
           in units of milliampere hours (mAh).

           Note that the current charge needs to be measured and is
           typically an estimate based on observed discharging and
           charging cycles of the battery.

           A value of 'ffffffff'H indicates that the current charge
           cannot be determined."
       ::= { batteryEntry 10 }

   batteryCurrentChargePercentage OBJECT-TYPE
       SYNTAX      Unsigned32 (0..10000)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the current charge of the battery
           relative to the nominal capacity in units of a hundreds
           of a percent.

   --------------------------
   -- Open issue:
   --    Should it be the percentage of the nominal capacity
   --    or of the current capacity?
   --------------------------




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 46]


Internet-Draft              Power MIB Modules               October 2010


           Note that this value needs to be measured and is
           typically an estimate based on observed discharging and
           charging cycles of the battery.

           A value of 'ffffffff'H indicates that the relative current
           charge cannot be determined."
       ::= { batteryEntry 11 }

   batteryCurrentVoltage OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "millivolt"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the current voltage of the battery
           in units of millivolt (mV).

           A value of 'ffffffff'H indicates that the current voltage
           cannot be determined."
       ::= { batteryEntry 12 }

   batteryCurrentCurrent OBJECT-TYPE
       SYNTAX      Integer32
       UNITS       "milliampere"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the current charging or discharging
           current of the batteryin units of milliampere (mA).  Charging
           current is indicated by positive values, discharging current
           is indicated by negative values.

           A value of '7fffffff'H indicates that the current current
           cannot be determined."
       ::= { batteryEntry 13 }

   batteryLowAlarmPercentage OBJECT-TYPE
       SYNTAX      Unsigned32 (0..10000)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the lower threshold value for object
           batteryCurrentChargePercentage.  If the value of object
           batteryCurrentChargePercentage falls below this threshold,
           a low battery alarm will be raised.  The alarm procedure may
           include generating a batteryLowNotification.

           A value of 0 indicates that the no alarm will be raised for



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 47]


Internet-Draft              Power MIB Modules               October 2010


           any value of object batteryCurrentChargePercentage."
       ::= { batteryEntry 14 }

   batteryLowAlarmVoltage OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "millivolt"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the lower threshold value for object
           batteryCurrentVoltage.  If the value of object
           batteryCurrentVoltage falls below this threshold,
           a low battery alarm will be raised.  The alarm procedure may
           include generating a batteryLowNotification.

           A value of 0 indicates that the no alarm will be raised for
           any value of object batteryCurrentVoltage."
       ::= { batteryEntry 15 }

   batteryReplacementAlarmCapacity OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliampere hours"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the lower threshold value for object
           batteryRemainingCapacity.  If the value of object
           batteryRemainingCapacity falls below this threshold,
           a battery aging alarm will be raised.  The alarm procedure
           may include generating a batteryAgingNotification.

           A value of 0 indicates that the no alarm will be raised for
           any value of object batteryRemainingCapacity."
       ::= { batteryEntry 16 }

   batteryReplacementAlarmCycles OBJECT-TYPE
       SYNTAX      Unsigned32
       UNITS       "milliampere hours"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "This object provides the upper threshold value for object
           batteryChargingCycleCount.  If the value of object
           batteryChargingCycleCount rises above this threshold,
           a battery aging alarm will be raised.  The alarm procedure
           may include generating a batteryAgingtNotification.

           A value of 0 indicates that the no alarm will be raised for



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 48]


Internet-Draft              Power MIB Modules               October 2010


           any value of object batteryChargingCycleCount."
       ::= { batteryEntry 17 }


   --==================================================================
   -- 2. Notifications
   --==================================================================

   batteryLowNotification NOTIFICATION-TYPE
       OBJECTS     {
           batteryCurrentChargePercentage,
           batteryCurrentVoltage
       }
       STATUS      current
       DESCRIPTION
           "This notification can be generated when the current charge
           (batteryCurrentChargePercentage) or the current voltage
           (batteryCurrentVoltage) of the battery falls below a
           threshold defined by object batteryLowAlarmPercentage or
           object batteryLowAlarmVoltage, respectively."
       ::= { batteryNotifications 1 }

   batteryAgingNotification NOTIFICATION-TYPE
       OBJECTS     {
           batteryRemainingCapacity,
           batteryChargingCycleCount
       }
       STATUS      current
       DESCRIPTION
           "This notification can be generated when the remaining
           capacity (batteryRemainingCapacity) falls below a threshold
           defined by object batteryReplacementAlarmCapacity
           or when the charging cycle count of the battery
           (batteryChargingCycleCount) exceeds the threshold defined
           by object batteryLowAlarmPercentage."
       ::= { batteryNotifications 2 }


   --==================================================================
   -- 3. Conformance Information
   --==================================================================

   batteryCompliances OBJECT IDENTIFIER ::= { batteryConformance 1 }
   batteryGroups      OBJECT IDENTIFIER ::= { batteryConformance 2 }

   --------------------------------------------------------------------
   -- 3.1. Compliance Statements
   --------------------------------------------------------------------



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 49]


Internet-Draft              Power MIB Modules               October 2010


   batteryCompliance MODULE-COMPLIANCE
       STATUS      current
       DESCRIPTION
           "The compliance statement for implementations of the
           POWER-STATE-MIB module.

           A compliant implementation MUST implement the objects
           defined in the mandatory group psmRequiredGroup."
       MODULE  -- this module
       MANDATORY-GROUPS {
           batteryDescriptionGroup,
           batteryStatusGroup,
           batteryAlarmThresholdsGroup
       }
       GROUP   batteryNotificationsGroup
       DESCRIPTION
          "A compliant implementation does not have to implement
           the psmNotificationsGroup."
       ::= { batteryCompliances 1 }

   --------------------------------------------------------------------
   -- 3.2. MIB Grouping
   --------------------------------------------------------------------

   batteryDescriptionGroup OBJECT-GROUP
       OBJECTS {
          batteryType,
          batteryTechnology,
          batteryNominalVoltage,
          batteryNumberOfCells,
          batteryNominalCapacity
       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation MUST implement the objects
           contained in this group."
       ::= { batteryGroups 1 }

   batteryStatusGroup OBJECT-GROUP
       OBJECTS {
          batteryRemainingCapacity,
          batteryChargingCycleCount,
          batteryLastChargingCycleTime,
          batteryState,
          batteryCurrentCharge,
          batteryCurrentChargePercentage,
          batteryCurrentVoltage,
          batteryCurrentCurrent



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 50]


Internet-Draft              Power MIB Modules               October 2010


       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation MUST implement the objects
           contained in this group."
       ::= { batteryGroups 2 }

   batteryAlarmThresholdsGroup OBJECT-GROUP
       OBJECTS {
          batteryLowAlarmPercentage,
          batteryLowAlarmVoltage,
          batteryReplacementAlarmCapacity,
          batteryReplacementAlarmCycles
       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation MUST implement the objects
           contained in this group."
       ::= { batteryGroups 3 }

   batteryNotificationsGroup NOTIFICATION-GROUP
       NOTIFICATIONS {
          batteryLowNotification,
          batteryAgingNotification
       }
       STATUS      current
       DESCRIPTION
           "A compliant implementation does not have to implement the
           notification contained in this group."
       ::= { batteryGroups 4 }
   END


9.  Security Considerations

   There are no management objects defined in this MIB module that have
   a MAX-ACCESS clause of read-write and/or read-create.  So, if this
   MIB module is implemented correctly, then there is no risk that an
   intruder can alter or create any management objects of this MIB
   module via direct SNMP SET operations.

   Some of the readable objects in this MIB module (i.e., objects with a
   MAX-ACCESS other than not-accessible) may be considered sensitive or
   vulnerable in some network environments.  It is thus important to
   control even GET and/or NOTIFY access to these objects and possibly
   to even encrypt the values of these objects when sending them over
   the network via SNMP.  These are the tables and objects and their
   sensitivity/vulnerability:



Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 51]


Internet-Draft              Power MIB Modules               October 2010


   o  This list is still to be done.

   SNMP versions prior to SNMPv3 did not include adequate security.
   Even if the network itself is secure (for example by using IPsec),
   even then, there is no control as to who on the secure network is
   allowed to access and GET/SET (read/change/create/delete) the objects
   in this MIB module.

   It is RECOMMENDED that implementers consider the security features as
   provided by the SNMPv3 framework (see [RFC3410], section 8),
   including full support for the SNMPv3 cryptographic mechanisms (for
   authentication and privacy).

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED.  Instead, it is RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/operator
   responsibility to ensure that the SNMP entity giving access to an
   instance of this MIB module is properly configured to give access to
   the objects only to those principals (users) that have legitimate
   rights to indeed GET or SET (change/create/delete) them.


10.  IANA Considerations

   The MIB modules in this document uses the following IANA-assigned
   OBJECT IDENTIFIER values recorded in the SMI Numbers registry:

           Descriptor        OBJECT IDENTIFIER value
           ----------        -----------------------
           powerStateMIB     { mib-2 xxx }
           energyMIB         { mib-2 yyy }
           batteryMIB        { mib-2 zzz }

   Other than that this document does not impose any IANA
   considerations.


11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2578]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Structure of Management Information
              Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.




Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 52]


Internet-Draft              Power MIB Modules               October 2010


   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Textual Conventions for SMIv2",
              STD 58, RFC 2579, April 1999.

   [RFC2580]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Conformance Statements for SMIv2", STD 58, RFC 2580,
              April 1999.

   [RFC4268]  Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268,
              November 2005.

   [RFC3621]  Berger, A. and D. Romascanu, "Power Ethernet MIB",
              RFC 3621, December 2003.

   [RFC3433]  Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor
              Management Information Base", RFC 3433, December 2002.

   [RFC4133]  Bierman, A. and K. McCloghrie, "Entity MIB (Version 3)",
              RFC 4133, August 2005.

   [I-D.quittek-power-monitoring-requirements]
              Quittek, J., Winter, R., Dietz, T., Claise, B., and M.
              Chandramouli, "Requirements for Power Monitoring",
              draft-quittek-power-monitoring-requirements-01 (work in
              progress), July 2010.

   [I-D.claise-energy-monitoring-mib]
              Claise, B., Chandramouli, M., Parello, J., and B.
              Schoening, "Power and Energy Monitoring MIB",
              draft-claise-energy-monitoring-mib-06 (work in progress),
              October 2010.

   [I-D.parello-eman-energy-aware-mib]
              Claise, B. and J. Parello, "Energy-aware Networks and
              Devices MIB", draft-parello-eman-energy-aware-mib-00 (work
              in progress), October 2010.

11.2.  Informative References

   [RFC1628]  Case, J., "UPS Management Information Base", RFC 1628,
              May 1994.

   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410, December 2002.






Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 53]


Internet-Draft              Power MIB Modules               October 2010


Authors' Addresses

   Juergen Quittek (editor)
   NEC Europe Ltd.
   NEC Laboratories Europe
   Network Research Division
   Kurfuersten-Anlage 36
   Heidelberg  69115
   DE

   Phone: +49 6221 4342-115
   Email: quittek@nw.neclab.eu


   Rolf Winter
   NEC Europe Ltd.
   NEC Laboratories Europe
   Network Research Division
   Kurfuersten-Anlage 36
   Heidelberg  69115
   DE

   Phone: +49 6221 4342-121
   Email: Rolf.Winter@nw.neclab.eu


   Thomas Dietz
   NEC Europe Ltd.
   NEC Laboratories Europe
   Network Research Division
   Kurfuersten-Anlage 36
   Heidelberg  69115
   DE

   Phone: +49 6221 4342-128
   Email: Thomas.Dietz@nw.neclab.eu















Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 54]


Internet-Draft              Power MIB Modules               October 2010


   Dominique Dudkowski
   NEC Europe Ltd.
   NEC Laboratories Europe
   Network Research Division
   Kurfuersten-Anlage 36
   Heidelberg  69115
   DE

   Phone: +49 6221 4342-233
   Email: Dominique.Dudkowski@nw.neclab.eu









































Quittek, et al.      draft-quittek-power-mib-02.txt            [Page 55]