Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 3512

Configuring Networks and Devices with Simple Network Management Protocol (SNMP)

Pages: 83
Informational
Part 4 of 4 – Pages 58 to 83
First   Prev   None

Top   ToC   RFC3512 - Page 58   prevText

8. Example MIB Module With Template-based Data

This section defines a MIB module that controls the heating and air conditioning system for a large building. It contains both configuration and counter objects that allow operators to see how much cooling or heating a particular configuration has consumed. Objects that represent the configuration information at a "default" level (as referenced above) are also included. These tables, in combination with the application of the tables' row instance data as templated 'defaults', will allow operators to configure and monitor many rooms at once, change the configuration parameters based on time of day, and make a number of other sophisticated decisions based on the 'policy' implied by these defaults and their application. For this reason, these configuration controls have their instances specified from template object types.
Top   ToC   RFC3512 - Page 59
   In our simplified Heating Ventilation and Air Conditioning (HVAC)
   model we will create three tables based on a simple analysis.  More
   complicated systems will need more tables, but the principles will be
   the same.

Step 1: As with any other MIB module design, the first step
        is to determine what objects are necessary for
        configuration and control operations.  The first table
        to be created is a fairly traditional monitoring
        table.  It includes indices so that we will know what
        rooms the counters and status objects are for.  It
        includes an object that is a RowPointer to a table
        that contains configuration information.  The objects
        for the bldgHVACTable, our first table in the HVAC
        MIB module are:

Index objects that identify what floor and office we are
managing:

       bldgHVACFloor
       bldgHVACOffice

A single index reference to a table that 'glues' configuration
information defaults with descriptive information:

       bldgHVACCfgTemplate

A set of objects that show status and units of
work (bldgHVACCoolOrHeatMins) and standard per-row
SnmpAdminString, StorageType, and RowStatus columnar
objects:

        bldgHVACFanSpeed
        bldgHVACCurrentTemp
        bldgHVACCoolOrHeatMins
        bldgHVACDiscontinuityTime
        bldgHVACOwner
        bldgHVACStatus

Step 2: A configuration description table.  The purpose of this
        table is to provide a unique string identifier for
        templates.  These may be driven by policies in a
        network.  If it were necessary to configure devices
        to deliver a particular quality of service, the
        index string of this table could be the name and the
        description part, it could be a brief description of the
        underlying motivation such as: "provides extra heat to
        corner offices to counteract excessive exterior wind
Top   ToC   RFC3512 - Page 60
        chill".  Standard owner and status objects may also
        be helpful and are included here.  The row columnar
        objects are:

       bldgHVACCfgTemplateInfoIndex
       bldgHVACCfgTemplateInfoID
       bldgHVACCfgTemplateInfoDescr
       bldgHVACCfgTemplateInfoOwner
       bldgHVACCfgTemplateInfoStatus

Notice that to this point we have provided no
configuration information.  That will be in the next
table.  Some readers may wonder why this table is not
combined with the configuration template table described
in the next step.  In fact, they can be.  The reason for
having a separate table is that as systems become more
complex, there may be more than one configuration table
that points to these descriptions.  Another reason for
two tables is that this in not reproduced for every
template and instance, which can save some additional
data movement.  Every designer will have to evaluate the
tradeoffs between number of objects and data movement
efficiency just as with other MIB modules.

Step 3: The bldgHVACCfgTemplateTable contains the specific
        configuration parameters that are pointed to by the
        bldgHVACConfigPtr object.  Note that many rows in the
        bldgHVACTable can point to an entry in this table.  It
        is also possible for entries to be used by 1 or 0 rows
        of the bldgHVACTable.  It is the property of allowing
        multiple rows (instances) in the bldgHVACTable to
        point to a row in this table that can produce such
        efficiency gains from policy-based management with
        SNMP.  Also notice that the configuration data is tied
        directly to the counter data so that people can see
        how configurations impact behavior.

The objects in this table are all that are necessary
for configuration and connection to the other tables as
well as the usual SnmpAdminString, StorageType, and
RowStatus objects:

A simple index to the table:

       bldgHVACCfgTemplateIndex

The configuration objects:
Top   ToC   RFC3512 - Page 61
      bldgHVACCfgTemplateDesiredTemp
      bldgHVACCfgTemplateCoolOrHeat


Administrative objects for SnmpAdminString and
RowStatus:

       bldgHVACCfgTemplateInfo
       bldgHVACCfgTemplateOwner
       bldgHVACCfgTemplateStorage
       bldgHVACCfgTemplateStatus

8.1. MIB Module Definition

BLDG-HVAC-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, Counter32, Gauge32, OBJECT-TYPE, Unsigned32, experimental FROM SNMPv2-SMI MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType FROM SNMPv2-TC SnmpAdminString FROM SNMP-FRAMEWORK-MIB; bldgHVACMIB MODULE-IDENTITY LAST-UPDATED "200303270000Z" ORGANIZATION "SNMPCONF working group E-mail: snmpconf@snmp.com" CONTACT-INFO "Jon Saperia Postal: JDS Consulting 174 Chapman Street Watertown, MA 02472 U.S.A. Phone: +1 617 744 1079 E-mail: saperia@jdscons.com Wayne Tackabury Postal: Gold Wire Technology 411 Waverley Oaks Rd. Waltham, MA 02452 U.S.A. Phone: +1 781 398 8800 E-mail: wayne@goldwiretech.com
Top   ToC   RFC3512 - Page 62
        Michael MacFaden
        Postal:     Riverstone Networks
                    5200 Great America Pkwy.
                    Santa Clara, CA 95054
                    U.S.A.
        Phone:      +1 408 878 6500
        E-mail:     mrm@riverstonenet.com

        David Partain
        Postal:     Ericsson AB
                    P.O. Box 1248
                    SE-581 12  Linkoping
                    Sweden
        E-mail:     David.Partain@ericsson.com"
    DESCRIPTION
        "This example MIB module defines a set of management objects
        for heating ventilation and air conditioning systems.  It
        also includes objects that can be used to create policies
        that are applied to rooms.  This eliminates the need to send
        per-instance configuration commands to the system.

        Copyright (C) The Internet Society (2003).  This version of
        this MIB module is part of RFC 3512; see the RFC itself for
        full legal notices."

    REVISION "200303270000Z"
    DESCRIPTION
        "Initial version of BLDG-HVAC-MIB as published in RFC 3512."
    ::= { experimental 122 }

bldgHVACObjects         OBJECT IDENTIFIER ::= { bldgHVACMIB 1 }
bldgConformance         OBJECT IDENTIFIER ::= { bldgHVACMIB 2 }

--
-- Textual Conventions
--

BldgHvacOperation  ::= TEXTUAL-CONVENTION
    STATUS             current
    DESCRIPTION
        "Operations supported by a heating and cooling system.
        A reference to underlying general systems would go here."
    SYNTAX      INTEGER {
                         heat(1),
                         cool(2)
                }
--
-- HVAC Objects Group
Top   ToC   RFC3512 - Page 63
--

bldgHVACTable    OBJECT-TYPE
    SYNTAX      SEQUENCE OF BldgHVACEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table is the representation and data control
        for building HVAC by each individual office.
        The table has rows for, and is indexed by a specific
        floor and office number.  Each such row includes
        HVAC statistical and current status information for
        the associated office.  The row also contains a
        bldgHVACCfgTemplate columnar object that relates the
        bldgHVACTable row to a row in the bldgHVACCfgTemplateTable.
        If this value is nonzero, then the instance in the row
        that has a value for how the HVAC has been configured
        in the associated template (bldgHVACCfgTeplateTable row).
        Hence, the bldgHVACCfgTeplateTable row contains the
        specific configuration values for the offices as described
        in this table."
    ::= { bldgHVACObjects 1 }

bldgHVACEntry  OBJECT-TYPE
    SYNTAX       BldgHVACEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A row in the bldgHVACTable.  Each row represents a particular
        office in the building, qualified by its floor and office
        number.  A given row instance can be created or deleted by
        set operations  upon its bldgHVACStatus columnar
        object instance."
    INDEX { bldgHVACFloor, bldgHVACOffice }
        ::= { bldgHVACTable 1 }

BldgHVACEntry ::= SEQUENCE {
        bldgHVACFloor             Unsigned32,
        bldgHVACOffice            Unsigned32,
        bldgHVACCfgTemplate       Unsigned32,
        bldgHVACFanSpeed          Gauge32,
        bldgHVACCurrentTemp       Gauge32,
        bldgHVACCoolOrHeatMins    Counter32,
        bldgHVACDiscontinuityTime TimeStamp,
        bldgHVACOwner             SnmpAdminString,
        bldgHVACStorageType       StorageType,
        bldgHVACStatus            RowStatus
        }
Top   ToC   RFC3512 - Page 64
bldgHVACFloor    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..1000)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This portion of the index indicates the floor of the
         building.  The ground floor is considered the
         first floor.  For the purposes of this example,
         floors under the ground floor cannot be
         controlled using this MIB module."
    ::= { bldgHVACEntry 1 }

bldgHVACOffice    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This second component of the index specifies the
        office number."
    ::= { bldgHVACEntry 2 }

bldgHVACCfgTemplate  OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The index (bldgHVACCfgTemplateIndex instance)
        of an entry in the 'bldgHVACCfgTemplateTable'.
        The bldgHVACCfgTable row instance referenced
        is a pre-made configuration 'template'
        that represents the configuration described
        by the bldgHVACCfgTemplateInfoDescr object.  Note
        that not all configurations will be under a
        defined template.  As a result, a row in this
        bldgHVACTable may point to an entry in the
        bldgHVACCfgTemplateTable that does not in turn
        have a reference (bldgHVACCfgTemplateInfo) to an
        entry in the bldgHVACCfgTemplateInfoTable.  The
        benefit of this approach is that all
        configuration information is available in one
        table whether all elements in the system are
        derived from configured templates or not.

        Where the instance value for this colunmar object
        is zero, this row represents data for an office
        whose HVAC status can be monitored using the
        read-only columnar object instances of this
        row, but is not under the configuration control
Top   ToC   RFC3512 - Page 65
        of the agent."
    ::= { bldgHVACEntry 3 }

bldgHVACFanSpeed  OBJECT-TYPE
    SYNTAX            Gauge32
    UNITS             "revolutions per minute"
    MAX-ACCESS        read-only
    STATUS            current
    DESCRIPTION
        "Shows the revolutions per minute of the fan.  Fan speed
        will vary based on the difference between
        bldgHVACCfgTemplateDesiredTemp and bldgHVACCurrentTemp.  The
        speed is measured in revolutions of the fan blade per minute."
    ::= { bldgHVACEntry 4 }

bldgHVACCurrentTemp  OBJECT-TYPE
    SYNTAX            Gauge32
    UNITS             "degrees in celsius"
    MAX-ACCESS        read-only
    STATUS            current
    DESCRIPTION
        "The current measured temperature in the office.  Should
        the current temperature be measured at a value of less
        than zero degrees celsius, a read of the instance
        for this object will return a value of zero."
    ::= { bldgHVACEntry 5 }

bldgHVACCoolOrHeatMins  OBJECT-TYPE
    SYNTAX            Counter32
    UNITS             "minutes"
    MAX-ACCESS        read-only
    STATUS            current
    DESCRIPTION
        "The total number of heating or cooling minutes that have
        been consumed since the row was activated.  Notice that
        whether the minutes represent heating or cooling is a
        function of the configuration of this row.  If the system
        is re-initialized from a cooling to heating function or
        vice versa, then the counter would start over again.  This
        effect is similar to a reconfiguration of some network
        interface cards.  When parameters that impact
        configuration are changed, the subsystem must be
        re-initialized.  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
        bldgHVACDiscontinuityTime."
    ::= { bldgHVACEntry 6 }
Top   ToC   RFC3512 - Page 66
bldgHVACDiscontinuityTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime on the most recent occasion at which
        any heating or cooling operation for the office designated
        by this row instance experienced a discontinuity.  If
        no such discontinuities have occurred since the last re-
        initialization of the this row, then this object contains a
        zero value."
    ::= { bldgHVACEntry 7 }

bldgHVACOwner  OBJECT-TYPE
    SYNTAX            SnmpAdminString
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The identity of the operator/system that
        last modified this entry.  When a new entry
        is created, a valid SnmpAdminString must
        be supplied.  If, on the other hand, this
        entry is populated by the agent 'discovering'
        unconfigured rooms, the empty string is a valid
        value for this object."
    ::= { bldgHVACEntry 8 }

bldgHVACStorageType  OBJECT-TYPE
    SYNTAX            StorageType
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The persistence of this row of the table in system storage,
        as it pertains to permanence across system resets.  A columnar
        instance of this object with value 'permanent' need not allow
        write-access to any of the columnar object instances in the
        containing row."
    ::= { bldgHVACEntry 9  }

bldgHVACStatus  OBJECT-TYPE
    SYNTAX            RowStatus
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "Controls and reflects the creation and activation status of
        a row in this table.

        No attempt to modify a row columnar object instance value in
Top   ToC   RFC3512 - Page 67
        the bldgHVACTable should be issued while the value of
        bldgHVACStatus is active(1).  Should an agent receive a SET
        PDU attempting such a modification in this state, an
        inconsistentValue error should be returned as a result of
        the SET attempt."
    ::= { bldgHVACEntry 10 }
--
-- HVAC Configuration Template Table
--

bldgHVACCfgTemplateInfoTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF BldgHVACCfgTemplateInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides unique string identification for
        HVAC templates in a network.  If it were necessary to
        configure rooms to deliver a particular quality of climate
        control with regard to cooling or heating, the index string
        of a row in this table could be the template name.
        The bldgHVACCfgCfgTemplateInfoDescription
        contains a brief description of the template service objective
        such as: provides summer cooling settings for executive
        offices.  The bldgHVACCfgTemplateInfo in the
        bldgHVACCfgTemplateTable will contain the pointer to the
        relevant row in this table if it is intended that items
        that point to a row in the bldgHVACCfgTemplateInfoTable be
        identifiable as being under template control though this
        mechanism."

    ::= { bldgHVACObjects 2 }

bldgHVACCfgTemplateInfoEntry  OBJECT-TYPE
    SYNTAX       BldgHVACCfgTemplateInfoEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Each row represents a particular template and
        description.  A given row instance can be created or
        deleted by set operations upon its
        bldgHVACCfgTemplateInfoStatus columnar object
        instance."
    INDEX { bldgHVACCfgTemplateInfoIndex }
    ::= { bldgHVACCfgTemplateInfoTable 1 }

BldgHVACCfgTemplateInfoEntry ::= SEQUENCE {
        bldgHVACCfgTemplateInfoIndex          Unsigned32,
        bldgHVACCfgTemplateInfoID             SnmpAdminString,
Top   ToC   RFC3512 - Page 68
        bldgHVACCfgTemplateInfoDescr          SnmpAdminString,
        bldgHVACCfgTemplateInfoOwner          SnmpAdminString,
        bldgHVACCfgTemplateInfoStatus         RowStatus,
        bldgHVACCfgTemplateInfoStorType       StorageType
        }

bldgHVACCfgTemplateInfoIndex   OBJECT-TYPE
       SYNTAX       Unsigned32 (1..2147483647)
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "The unique index to a row in this table."
        ::= { bldgHVACCfgTemplateInfoEntry 1 }

bldgHVACCfgTemplateInfoID  OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "Textual identifier for this table row, and, consequently
        the template.  This should be a unique name within
        an administrative domain for a particular template so that
        all systems in a network that are under the same template
        can have the same 'handle' (e.g., 'Executive Offices',
        'Lobby Areas')."
    ::= { bldgHVACCfgTemplateInfoEntry 2 }


bldgHVACCfgTemplateInfoDescr   OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "A general description of the template.  One example might
        be - Controls the cooling for offices on higher floors
        during the summer."
    ::= { bldgHVACCfgTemplateInfoEntry 3 }

bldgHVACCfgTemplateInfoOwner  OBJECT-TYPE
    SYNTAX            SnmpAdminString
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The identity of the operator/system that last modified
        this entry."
    ::= { bldgHVACCfgTemplateInfoEntry 4 }

bldgHVACCfgTemplateInfoStatus  OBJECT-TYPE
Top   ToC   RFC3512 - Page 69
    SYNTAX            RowStatus
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The activation status of this row.

        No attempt to modify a row columnar object instance value in
        the bldgHVACCfgTemplateInfo Table should be issued while the
        value of bldgHVACCfgTemplateInfoStatus is active(1).
        Should an agent receive a SET PDU attempting such a modification
        in this state, an inconsistentValue error should be returned as
        a result of the SET attempt."
    ::= { bldgHVACCfgTemplateInfoEntry 5 }

bldgHVACCfgTemplateInfoStorType   OBJECT-TYPE
    SYNTAX            StorageType
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The persistence of this row of the table in system storage,
         as it pertains to permanence across system resets.  A columnar
        instance of this object with value 'permanent' need not allow
        write-access to any of the columnar object instances in the
        containing row."
    ::= { bldgHVACCfgTemplateInfoEntry 6  }

--
-- HVAC Configuration Template Table
--
bldgHVACCfgTemplateTable    OBJECT-TYPE
    SYNTAX      SEQUENCE OF BldgHVACCfgTemplateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains the templates, which
        can be used to set defaults that will
        be applied to specific offices.  The application
        of those values is accomplished by having a row
        instance of the bldgHVACTable reference a row of
        this table (by the value of the former's
        bldgHVACCfgTemplate columnar instance).  Identifying
        information concerning a row instance of this table
        can be found in the columnar data of the row instance
        of the bldgHVACCfgTemplateInfoTable entry referenced
        by the bldgHVACCfgTemplateInfo columnar object of
        this table."
    ::= { bldgHVACObjects 3 }
Top   ToC   RFC3512 - Page 70
bldgHVACCfgTemplateEntry  OBJECT-TYPE
    SYNTAX       BldgHVACCfgTemplateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Each row represents a single set of template parameters
        that can be applied to selected instances - in this case
        offices.  These policies will be turned on and off by the
        policy module through its scheduling facilities.

        A given row instance can be created or
        deleted by set operations upon its
        bldgHVACCfgTemplateStatus columnar object instance."
    INDEX { bldgHVACCfgTemplateIndex }
    ::= { bldgHVACCfgTemplateTable 1 }

BldgHVACCfgTemplateEntry ::= SEQUENCE {
        bldgHVACCfgTemplateIndex           Unsigned32,
        bldgHVACCfgTemplateDesiredTemp     Gauge32,
        bldgHVACCfgTemplateCoolOrHeat      BldgHvacOperation,
        bldgHVACCfgTemplateInfo            Unsigned32,
        bldgHVACCfgTemplateOwner           SnmpAdminString,
        bldgHVACCfgTemplateStorage         StorageType,
        bldgHVACCfgTemplateStatus          RowStatus
}

bldgHVACCfgTemplateIndex    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value for each defined template in this
        table.  This value can be referenced as a row index
        by any MIB module that needs access to this information.
        The bldgHVACCfgTemplate will point to entries in this
        table."
    ::= { bldgHVACCfgTemplateEntry 1 }

bldgHVACCfgTemplateDesiredTemp OBJECT-TYPE
    SYNTAX            Gauge32
    UNITS             "degrees in celsius"
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This is the desired temperature setting.  It might be
        changed at different times of the day or based on
        seasonal conditions.  It is permitted to change this value
        by first moving the row to an inactive state, making the
Top   ToC   RFC3512 - Page 71
        change and then reactivating the row."
    ::= { bldgHVACCfgTemplateEntry 2 }

bldgHVACCfgTemplateCoolOrHeat  OBJECT-TYPE
    SYNTAX             BldgHvacOperation
    MAX-ACCESS         read-create
    STATUS             current
    DESCRIPTION
        "This controls the heating and cooling mechanism and is
        set-able by building maintenance.  It is permitted to
        change this value by first moving the row to an inactive
        state, making the change and then reactivating the row."
    ::= { bldgHVACCfgTemplateEntry 3 }

bldgHVACCfgTemplateInfo OBJECT-TYPE
    SYNTAX             Unsigned32
    MAX-ACCESS         read-create
    STATUS             current
    DESCRIPTION
        "This object points to a row in the
        bldgHVACCfgTemplateInfoTable.  This controls the
        heating and cooling mechanism and is set-able by
        building maintenance.  It is permissible to change
        this value by first moving the row to an inactive
        state, making the change and then reactivating
        the row.  A value of zero means that this entry
        is not associated with a named template found
        in the bldgHVACCfgTemplateInfoTable."
    ::= { bldgHVACCfgTemplateEntry 4 }

bldgHVACCfgTemplateOwner  OBJECT-TYPE
    SYNTAX            SnmpAdminString
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The identity of the administrative entity
        that created this row of the table."
    ::= { bldgHVACCfgTemplateEntry 5 }

bldgHVACCfgTemplateStorage  OBJECT-TYPE
    SYNTAX            StorageType
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The persistence of this row of the table across
         system resets.  A columnar instance of this object with
         value 'permanent' need not allow write-access to any
         of the columnar object instances in the containing row."
Top   ToC   RFC3512 - Page 72
    ::= { bldgHVACCfgTemplateEntry 6 }

bldgHVACCfgTemplateStatus  OBJECT-TYPE
    SYNTAX            RowStatus
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "The activation status of this row of the table.

        No attempt to modify a row columnar object instance value in
        the bldgHVACCfgTemplateTable should be issued while the
        value of bldgHVACCfgTemplateStatus is active(1).
        Should an agent receive a SET PDU attempting such a modification
        in this state, an inconsistentValue error should be returned as
        a result of the SET attempt."
    ::= { bldgHVACCfgTemplateEntry 7 }

--
-- Conformance Information
--

bldgCompliances  OBJECT IDENTIFIER ::= { bldgConformance 1 }
bldgGroups       OBJECT IDENTIFIER ::= { bldgConformance 2 }

-- Compliance Statements

bldgCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The requirements for conformance to the BLDG-HVAC-MIB.  The
         bldgHVACObjects group must be implemented to conform to the
         BLDG-HVAC-MIB."
    MODULE -- this module

    GROUP bldgHVACObjectsGroup
    DESCRIPTION
        "The bldgHVACObjects is mandatory for all systems that
        support HVAC systems."
    ::= { bldgCompliances 1 }

bldgHVACObjectsGroup OBJECT-GROUP
    OBJECTS {
        bldgHVACCfgTemplate,
        bldgHVACFanSpeed, bldgHVACCurrentTemp,
        bldgHVACCoolOrHeatMins, bldgHVACDiscontinuityTime,
        bldgHVACOwner, bldgHVACStatus,
        bldgHVACStorageType, bldgHVACCfgTemplateInfoID,
        bldgHVACCfgTemplateInfoDescr, bldgHVACCfgTemplateInfoOwner,
Top   ToC   RFC3512 - Page 73
        bldgHVACCfgTemplateInfoStatus,
        bldgHVACCfgTemplateInfoStorType,
        bldgHVACCfgTemplateDesiredTemp,
        bldgHVACCfgTemplateCoolOrHeat,
        bldgHVACCfgTemplateInfo,
        bldgHVACCfgTemplateOwner,bldgHVACCfgTemplateStorage,
        bldgHVACCfgTemplateStatus
    }
    STATUS current
    DESCRIPTION
        "The bldgHVACObjects Group."
    ::= { bldgGroups 1 }

END

8.2. Notes on MIB Module with Template-based Data

The primary purpose of the example "HVAC" MIB module is to show how to construct a single module that includes configuration, template, counter and state information in a single module. If this were a 'real' module we would also have included definitions for notifications for the configuration change operations as previously described. We also would have included notifications for faults and other counter threshold events. Implementation and Instance Extensions: Just as with networking technologies, vendors may wish to add extensions that can distinguish their products from the competition. If an HVAC vendor also wanted to support humidity control, they could add that facility to their equipment and use AUGMENTS for the bldgHVACTemplateTable with two objects, one that indicates the desired humidity and the other, the actual. The bldgHVACTemplateTable could also be extended using this same approach so that HVAC policies could easily be extended to support this vendor.
Top   ToC   RFC3512 - Page 74

8.3. Examples of Usage of the MIB

The following two examples use two templates to configure the temperature in executive offices and in conference rooms. The "conference rooms" template is applied to all conference rooms (which happen to be office 104 on each floor), and the "executive offices" template is applied to executive offices. If offices 24, 25, and 26 on the third floor are executive offices, the values in the bldgHVACTable might be: bldgHVACCfgTemplate.3.24 = 2 bldgHVACFanSpeed.3.24 = 2989 bldgHVACCurrentTemp.3.24 = 24 bldgHVACCoolOrHeatMins.3.24 = 123 bldgHVACDiscontinuityTime.3.24 = sysUpTime + 12h + 21m bldgHVACOwner.3.24 = "policy engine" bldgHVACStorageType.3.24 = nonVolatile(3) bldgHVACStatus.3.24 = active(1) bldgHVACCfgTemplate.3.25 = 2 bldgHVACFanSpeed.3.25 = 0 bldgHVACCurrentTemp.3.25 = 22 bldgHVACCoolOrHeatMins.3.25 = 298 bldgHVACDiscontinuityTime.3.25 = sysUpTime + 4h + 2m bldgHVACOwner.3.25 = "policy engine" bldgHVACStorageType.3.25 = nonVolatile(3) bldgHVACStatus.3.25 = active(1) bldgHVACCfgTemplate.3.26 = 2 bldgHVACFanSpeed.3.26 = 0 bldgHVACCurrentTemp.3.26 = 22 bldgHVACCoolOrHeatMins.3.26 = 982 bldgHVACOwner.3.26 = "policy engine" bldgHVACStorageType.3.26 = nonVolatile(3) bldgHVACStatus.3.26 = active(1) The second entry in the bldgHVACCfgTemplateTable, to which all of the above point, might have the following configuration: bldgHVACCfgTemplateDesiredTemp.2 = 22 bldgHVACCfgTemplateCoolOrHeat.2 = cool(2) bldgHVACCfgTemplateInfo.2 = 2 bldgHVACCfgTemplateOwner.2 = "Senior Executive assistant" bldgHVACCfgTemplateStorage.2 = nonVolatile(3) bldgHVACCfgTemplateStatus.2 = active(1)
Top   ToC   RFC3512 - Page 75
   and the associated template information ("executive offices") might
   be:

   bldgHVACCfgTemplateInfoID.2 = "executive offices"
   bldgHVACCfgTemplateInfoDescr.2 = "Controls temperature for executive
                                     offices"
   bldgHVACCfgTemplateInfoOwner.2 = "Senior Executive assistant"
   bldgHVACCfgTemplateInfoStorType.2 = nonVolatile(3)
   bldgHVACCfgTemplateInfoStatus.2 = active(1)

   The policy engine can now associate instances of executive offices
   with the template called "executive offices" and apply the values in
   the second entry of the bldgHVACCfgTemplateTable to each of the
   instances of the executive offices.  This will then attempt to set
   the temperature in executive offices to 22 degrees celsius.

   It is also possible that there may be an office configured for a
   particular temperature, but without using a template.  For example,
   office 28 on the third floor might look like this:

   bldgHVACCfgTemplate.3.28 = 3
   bldgHVACFanSpeed.3.28 = 50
   bldgHVACCurrentTemp.3.28 = 26
   bldgHVACCoolOrHeatMins.3.28 = 0
   bldgHVACDiscontinuityTime.3.28 = 0
   bldgHVACOwner.3.28 = "Executive with poor circulation"
   bldgHVACStorageType.3.28 = nonVolatile(3)
   bldgHVACStatus.3.28 = active(1)

   The entry in the bldgHVACCfgTemplateTable (to which
   bldgHVACCfgTemplate.3.28 points) might instead look like:

   bldgHVACCfgTemplateDesiredTemp.3 = 28
   bldgHVACCfgTemplateCoolOrHeat.3 = cool(2)
   bldgHVACCfgTemplateInfo.3 = 0.0
   bldgHVACCfgTemplateOwner.3 = "Executive with poor circulation"
   bldgHVACCfgTemplateStorage.3 = nonVolatile(3)
   bldgHVACCfgTemplateStatus.3 = active(1)

   Note that this entry does not point to a template.

   If the executive's circulation improves so that the temperature
   should be aligned with other executive offices, this is accomplished
   by changing the value of bldgHVACCfgTemplate.3.28 from
   bldgHVACCfgTemplateInfoID.3 to bldgHVACCfgTemplateInfoID.2 (shown
   above).
Top   ToC   RFC3512 - Page 76
   Finally, there might be offices for which there is no configured
   temperature but management applications can read the current
   temperature, fan speed, and cooling or heating minutes from the
   bldgHVACTable.  In that case, the value of bldgHVACCfgTemplate will
   be a zero index ("null"), as will the value of bldgHVACOwner.

   bldgHVACCfgTemplate.4.2 = 0
   bldgHVACFanSpeed.3.28 = 50
   bldgHVACCurrentTemp.3.28 = 26
   bldgHVACCoolOrHeatMins.3.28 = 0
   bldgHVACDiscontinuityTime.3.28 = 0
   bldgHVACOwner.3.28 = ""
   bldgHVACStorageType.3.28 = nonVolatile(3)
   bldgHVACStatus.3.28 = active(1)

   As a second example, the conference rooms on several floors are
   configured using the "conference rooms" template.  When the values in
   the bldgHVACTable pertaining to conference rooms are read, it might
   look like:

   bldgHVACCfgTemplate.12.104 = bldgHVACCfgTemplateDesiredTemp.1
   bldgHVACFanSpeed.12.104 = 1423
   bldgHVACCurrentTemp.12.104 = 21
   bldgHVACCoolOrHeatMins.12.104 = 2193
   bldgHVACDiscontinuityTime.12.104 = sysUpTime + 36h + 15m
   bldgHVACOwner.12.104 =  = "Bob the Conference Guy"
   bldgHVACStorageType.12.104 = nonVolatile(3)
   bldgHVACStatus.12.104 = active(1)

   bldgHVACCfgTemplate.14.104 = bldgHVACCfgTemplateDesiredTemp.1
   bldgHVACFanSpeed.14.104 = 1203
   bldgHVACCurrentTemp.14.104 = 20
   bldgHVACCoolOrHeatMins.14.104 = 293
   bldgHVACDiscontinuityTime.14.104 = sysUpTime + 5h + 54m
   bldgHVACOwner.14.104 =  = "Bob the Conference Guy"
   bldgHVACStorageType.14.104 = nonVolatile(3)
   bldgHVACStatus.14.104 = active(1)

   bldgHVACCfgTemplate.15.104 = bldgHVACCfgTemplateDesiredTemp.1
   bldgHVACFanSpeed.15.104 = 12
   bldgHVACCurrentTemp.15.104 = 19
   bldgHVACCoolOrHeatMins.15.104 = 1123
   bldgHVACDiscontinuityTime.15.103 = sysUpTime + 2d + 2h + 7m
   bldgHVACOwner.15.104 =  = "Bob the Conference Guy"
   bldgHVACStorageType.15.104 = nonVolatile(3)
   bldgHVACStatus.15.104 = active(1)
Top   ToC   RFC3512 - Page 77
   The desired temperature and whether to heat or cool is configured in
   the first entry of the bldgHVACCfgTemplateTable, which tries to set
   the temperature to 19 degrees celsius in conference rooms:

   bldgHVACCfgTemplateDesiredTemp.1 = 19
   bldgHVACCfgTemplateCoolOrHeat.1 = cool(2)
   bldgHVACCfgTemplateInfo.1 = bldgHVACCfgTemplateInfoID.1
   bldgHVACCfgTemplateOwner.1 = "Bob the Conference Guy"
   bldgHVACCfgTemplateStorage.1 = nonVolatile(3)
   bldgHVACCfgTemplateStatus.1 = active(1)

   The associated template information would then have:

   bldgHVACCfgTemplateInfoID.1 = "conference rooms"
   bldgHVACCfgTemplateInfoDescr.1 = "Controls temperature in conference
   rooms" bldgHVACCfgTemplateInfoOwner.1 = "Bob the Conference Guy"
   bldgHVACCfgTemplateInfoStorType.1 = nonVolatile(3)
   bldgHVACCfgTemplateInfoStatus.1 = active(1)

   The policy system can then apply this template (cool to 19 degrees
   Celsius) to its notion of all of the conference rooms in the
   building.

9. Security Considerations

This document discusses practices and methods for using the SNMP for management and distribution of configuration information for network elements. Any effective use of the SNMP in this application must concern itself with issues of authentication of the management entities initiating configuration change and management, in addition to the integrity of the configuration data itself. Other more subtle considerations also exist. To that end, the section of this document entitled "Deployment and Security Issues" covers these security considerations to the extent they affect the current practices described throughout this document. In particular, in the subsection entitled "Secure Agent Considerations", there is a recommendation for the usage of Version 3 of the SNMP, and its essential presumption as a foundation for other practices described throughout. With the exception of a small number of cases where a mention is made to the contrary to illustrate techniques for coexistence with application entities dependent upon earlier versions of the SNMP, that recommendation of usage of Version 3 of the SNMP is reiterated here.
Top   ToC   RFC3512 - Page 78

10. Acknowledgments

This document was produced by the SNMPCONF Working Group. In particular, the editors wish to thank: Christopher Anderson Andy Bierman Greg Bruell Dr Jeffrey Case Chris Elliott Joel Halpern Pablo Halpern Wes Hardaker David Harrington Harrie Hazewinkel Thippanna Hongal Bob Moore David T. Perkins Randy Presuhn Dan Romascanu Shawn Routhier Steve Waldbusser Bert Wijnen

11. Normative References

[1] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, December 2002. [2] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [3] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [4] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [5] Presuhn, R. (Ed.), "Transport Mappings for the Simple Network Management Protocol (SNMPv2)", STD 62, RFC 3417, December 2002. [6] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3412, December 2002.
Top   ToC   RFC3512 - Page 79
   [7]  Blumenthal, U. and B. Wijnen, "User-based Security Model (USM)
        for version 3 of the Simple Network Management Protocol
        (SNMPv3)", STD 62, RFC 3414, December 2002.

   [8]  Presuhn, R. (Ed.), "Version 2 of the Protocol Operations for the
        Simple Network Management Protocol (SNMP)", STD 62, RFC 3416,
        December 2002.

   [9]  Levi, D., Meyer, P., and B. Stewart, "Simple Network Management
        Protocol Applications", STD 62, RFC 3413, December 2002.

   [10] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access
        Control Model (VACM) for the Simple Network Management Protocol
        (SNMP)", STD 62, RFC 3415, December 2002.

   [11] Presuhn, R. (Ed.), "Management Information Base for the Simple
        Network Management Protocol (SNMPv2)", STD 62, RFC 3418,
        December 2002.

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

   [13] Daniele, M., Haberman, B., Routhier, S. and J. Schoenwaelder,
        "Textual Conventions for Internet Network Addresses", RFC 3291,
        May 2002.

   [14] McCloghrie, K. (Ed.), "SNMPv2 Management Information Base for
        the Internet Protocol using SMIv2", RFC 2011, November 1996.

12. Informative References

[15] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990. [16] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991. [17] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991. [18] Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990. [19] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996.
Top   ToC   RFC3512 - Page 80
   [20] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB",
        RFC 2863, June 2000.

   [21] Brown, C. and F. Baker, "Management Information Base for Frame
        Relay DTEs Using SMIv2", RFC 2115, September 1997.

   [22] Baker, F. (Ed.), "Requirements for IP Version 4 Routers", RFC
        1812, June 1995.

   [23] Hawkinson, J. and T. Bates, "Guidelines for Creation, Selection,
        and Registration of an Autonomous System (AS)", BCP 6, RFC 1930,
        March 1996.

   [24] Decker, E., Langille, P., Rijsinghani, A. and K. McCloghrie,
        "Definitions of Managed Objects for Bridges", RFC 1493, July
        1993.

   [25] Levi, D. and J. Schoenwaelder "Definitions of Managed Objects
        for Scheduling Management Operations", RFC 3231, January 2002.

   [26] Bell, E., Smith, A., Langille, P., Rijsinghani, A. and K.
        McCloghrie, "Definitions of Managed Objects for Bridges with
        Traffic Classes, Multicast Filtering and Virtual LAN
        Extensions", RFC 2674, August 1999.

   [27] Baker, F., "IP Forwarding Table MIB", RFC 2096, January 1997.

   [28] St. Johns, M. (Ed.), "Radio Frequency (RF) Interface Management
        Information Base for MCNS/DOCSIS compliant RF interfaces", RFC
        2670, August 1999.

   [29] Baker, F. and R. Coltun, "OSPF Version 2 Management Information
        Base", RFC 1850, November 1995.

   [30] Blake, S., Black, D., Carlson M., Davies, E., Wang, Z. and W.
        Weiss, "An Architecture for Differentiated Services ", RFC 2475,
        December 1998.

   [31] Willis, S., Burruss, J. and J. Chu (Ed.), "Definitions of
        Managed Objects for the Fourth Version of the Border Gateway
        Protocol (BGP-4) using SMIv2", RFC 1657, July 1994.

   [32] Waldbusser, S., "Remote Network Monitoring Management
        Information Base", RFC 2819, May 2000.

   [33] McCloghrie, K. and G. Hanson, "The Inverted Stack Table
        Extension to the Interfaces Group MIB", RFC 2864, June 2000.
Top   ToC   RFC3512 - Page 81
   [34] McCloghrie, K. and A. Bierman, "Entity MIB (Version 2)", RFC
        2737, December 1999.

   [35] ITU-T,, Recommendation M.3010., PRINCIPLES FOR A
        TELECOMMUNICATIONS MANAGEMENT NETWORK.  February, 2000.

   [36] Waldbusser, S., Saperia, J., and Hongal, T., "Policy Based
        Management MIB", Work-in-progress.

   [37] Heintz, L., "SNMP Row Operations Extensions", Work-in-progress.

   [38] Zeltserman, D., "A Practical Guide to Snmpv3 and Network
        Management", Prentice Hall, 1999.

   [39] Noto, M., Spiegel, E. and K. Tesink, "Definitions of Textual
        Conventions and OBJECT-IDENTITIES for ATM Management", RFC 2514,
        February 1999.

   [40] Kassaveri, R., Editor, "Distributed Management Expression MIB",
        RFC 2982, October 2000.

   [41] St. Johns, M., "DOCSIS Cable Device MIB Cable Device Management
        Information Base for DOCSIS compliant Cable Modems and Cable
        Modem Termination Systems", RFC 2669, August 1999.

   [42] Westerinen, A., Schnizlein, J., Strassner, J., Scherling, M.,
        Quinn, B., Herzog, S., Huynh, A., Carlson, M., Perry, J. and S.
        Waldbusser, "Terminology for Policy-Based Management", RFC 3198,
        November 2001.

   [43] http://wwww.cisco.com/univercd/cc/td/product/software/ios113ed/
        11ed_cr/secur_c/scprt/scacls.pdf.

   [44] Waldbusser, S., "Remote Network Monitoring Management
        Information Base Version 2 using SMIv2", RFC 2021, January 1997.

13. Intellectual Property

The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to
Top   ToC   RFC3512 - Page 82
   obtain a general license or permission for the use of such
   proprietary rights by implementors or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.

14. Editors' Addresses

Michael R. MacFaden Riverstone Networks, Inc 5200 Great America Parkway Santa Clara, CA 95054 EMail: mrm@riverstonenet.com David Partain Ericsson AB P.O. Box 1248 SE-581 12 Linkoping Sweden EMail: David.Partain@ericsson.com Jon Saperia JDS Consulting 174 Chapman Street Watertown, MA 02472 EMail: saperia@jdscons.com Wayne F. Tackabury Gold Wire Technology 411 Waverley Oaks Rd. Waltham, MA 02452 EMail: wayne@goldwiretech.com
Top   ToC   RFC3512 - Page 83

15. Full Copyright Statement

Copyright (C) The Internet Society (2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.