tech-invite   World Map     

3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search

RFC 3512

 
 
 

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

Part 4 of 4, p. 58 to 83
Prev RFC Part

 


prevText      Top      Up      ToC       Page 58 
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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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      Up      ToC       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.