RFC 3434
Remote Monitoring MIB Extensions for High Capacity Alarms
RFC 3434: Remote Monitoring MIB Extensions for High Capacity Alarms π
Okay bestie, this one is by A. Bierman and K. McCloghrie from Cisco Systems, Inc. π It's a Standards Track doc dated December 2002, and it's all about extending RMON alarms so they can handle 64-bit counters π¦ It doesn't say it obsoletes or updates anything, so no drama there β¨
Status of This Memo πΈ
So this is an Internet standards track protocol for the Internet community, and they're literally asking for discussion and suggestions for improvements π£οΈ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited π
Copyright Notice π§
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract π
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. Basically, it describes managed objects that extend the alarm thresholding capabilities in the Remote Monitoring (RMON) MIB (RFC 2819) so they give similar threshold monitoring for objects based on the Counter64 data type π₯
Table of Contents π
1 The Internet-Standard Management Framework ................... 2
2 Terms ........................................................ 2
3 Overview ..................................................... 2
3.1 Relationship to the Remote Monitoring MIBs ............... 3
4 MIB Structure ................................................ 4
4.1 MIB Group Overview ....................................... 4
4.1.1 High Capacity Alarm Control Group .................. 5
4.1.2 High Capacity Alarm Capabilities ................... 6
4.1.3 High Capacity Alarm Notifications .................. 6
5 Definitions .................................................. 6
6 Intellectual Property ........................................ 21
7 Acknowledgements ............................................. 21
8 Normative References ......................................... 21
9 Informative References ....................................... 22
10 Security Considerations ..................................... 22
11 Authors' Addresses .......................................... 23
12 Full Copyright Statement .................................... 24
1. The Internet-Standard Management Framework π¦
For a detailed overview of the documents that describe the current Internet-Standard Management Framework, check out section 7 of RFC 3410 [RFC3410] π
Managed objects are accessed via a virtual information store called the Management Information Base, or MIB. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] π
2. Terms π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119. [RFC2119]
3. Overview β¨
Okay so there's a real need for a standardized way to give Counter64 objects the same alarm thresholding that Counter32 objects already have π The RMON-1 alarmTable objects and RMON-1 notification types are specific to 32-bit objects, so they can't properly monitor Counter64-based objects. We need extensions that explicitly support Counter64-based objects, and they're completely independent of the existing RMON-1 alarm mechanisms π«Ά
Counter64 usage is going up, and one reason is that network interfaces keep getting faster ποΈ RFC 2863 [RFC2863] says:
As the speed of network media increase, the minimum time in which a 32 bit counter will wrap decreases. For example, a 10Mbs stream of back-to-back, full-size packets causes ifInOctets to wrap in just over 57 minutes; at 100Mbs, the minimum wrap time is 5.7 minutes, and at 1Gbs, the minimum is 34 seconds. Requiring that interfaces be polled frequently enough not to miss a counter wrap is increasingly problematic.
and therefore requires:
For interfaces that operate at 20,000,000 (20 million) bits per second or less, 32-bit byte and packet counters MUST be supported. For interfaces that operate faster than 20,000,000 bits/second, and slower than 650,000,000 bits/second, 32-bit packet counters MUST be supported and 64-bit octet counters MUST be supported. For interfaces that operate at 650,000,000 bits/second or faster, 64-bit packet counters AND 64-bit octet counters MUST be supported.
Of the variables people set RMON-1 alarmTable thresholds on, two of the most popular are ifInOctets and ifOutOctets π So as people use the 64-bit versions, ifHCInOctets and ifHCOutOctets, there's an increasing need to use RMON-1's thresholding for those too π
The RMON-1 Alarm Group is implemented not only by all RMON probes, but also by the SNMP agents in lots of other device types, for monitoring any of their (non-RMON) integer-valued MIB objects π It's been implemented so widely because it's obviously valuable. Without this extension, though, that value is becoming incomplete because it doesn't support 64-bit integers. This extension is the easiest, simplest, and most compatible way for an implementation to fix that gap π
3.1. Relationship to the Remote Monitoring MIBs π
This MIB is meant to be implemented in Remote Monitoring (RMON) probes, which may also support the RMON-1 MIB [RFC2819]. Those probes can be stand-alone devices, or they can be co-located with other networking devices (e.g., ethernet switches and repeaters) π
The High Capacity Alarm Group does everything RMON-1's Alarm Group does, plus more, so it's a superset π¦ That means one day in the distant future, RMON-1's Alarm Group might be deprecated in favor of this MIB's High Capacity Alarm Group. But that day won't come before this document, or one of its successors, reaches the same standardization state as RMON-1 π«
4. MIB Structure π§©
Figure 1: HC-ALARM MIB Functional Structure
+---------------------------------------------+
| |
| (RMON-1) (HC-ALARM) |
| +-----------+ +-----------+ |
| | | | | |
| | alarm | | hcAlarm | |
| | Table | | Table | |
| | | | | |
| +-----------+ +-----------+ |
| | | |
| V (RMON-1) V |
| +----------------------------------+ |
| | | |
| | eventTable | |
| | | |
| +----------------------------------+ |
| | | |
| | | |
| V V |
| +---------------+ +----------------+ |
| | risingAlarm | | hcRisingAlarm | |
| | fallingAlarm | | hcFallingAlarm | |
| | Notifications | | Notifications | |
| +---------------+ +----------------+ |
| (RMON-1) (HC-ALARM) |
+---------------------------------------------+
4.1. MIB Group Overview ποΈ
The HC-ALARM MIB has three MIB groups:
- hcAlarmControlObjects group Controls the configuration of alarms for high capacity MIB object instances.
- hcAlarmCapabilities group Describes the high capacity alarm capabilities provided by the agent.
- hcAlarmNotifications group Provides new rising and falling threshold notifications for high capacity objects.
4.1.1. High Capacity Alarm Control Group ποΈ
This group has one table, which a management station uses to configure high capacity alarm entries. To set up alarm thresholding for Counter64 or CounterBasedGauge64 objects, a management application has to configure the hcAlarmTable in a way that's similar to how RMON-1's alarmTable gets configured π
Some of the DESCRIPTION clauses for objects in the alarmTable use language that's specific to the alarmTable itself. Because of that, their defined semantics don't let them be used for this MIB too. So the following objects are basically cloned from the alarmTable over to the hcAlarmTable π°
alarmTable hcAlarmTable
---------- ------------
alarmIndex hcAlarmIndex
alarmInterval hcAlarmInterval
alarmVariable hcAlarmVariable
alarmSampleType hcAlarmSampleType
alarmStartupAlarm hcAlarmStartupAlarm
alarmRisingEventIndex hcAlarmRisingEventIndex
alarmFallingEventIndex hcAlarmFallingEventIndex
alarmOwner hcAlarmOwner
alarmStatus hcAlarmStatus
On top of that, the following hcAlarmTable objects are used as high capacity values instead of the matching 32-bit version in the alarmTable π’
alarmTable hcAlarmTable
---------- ------------
alarmValue hcAlarmAbsValue
hcAlarmValueStatus
alarmRisingThreshold hcAlarmRisingThreshAbsValueLo
hcAlarmRisingThreshAbsValueHi
hcAlarmRisingThresholdValStatus
alarmFallingThreshold hcAlarmFallingThreshAbsValueLo
hcAlarmFallingThreshAbsValueHi
hcAlarmFallingThresholdValStatus
Even so, the hcAlarmTable does have a few differences from the alarmTable π
- Counter64 based objects are thresholded properly.
- An entry is not destroyed if the instance identified by the hcAlarmVariable is not available during a polling interval.
- The RowStatus textual convention is used instead of EntryStatus for the hcAlarmStatus object.
- The non-volatile storage of an HC alarm entry is explicitly controlled with a StorageType parameter.
- A counter is provided to indicate the number of times the hcAlarmVariable object value could not be retrieved by the agent.
4.1.2. High Capacity Alarm Capabilities π
This group has a single scalar object, called hcAlarmCapabilities. It describes the basic high capacity alarm features the agent supports β¨
4.1.3. High Capacity Alarm Notifications π¨
This group has two notifications, hcRisingAlarm and hcFallingAlarm. They're generated for high capacity alarms in the same way, and they convey essentially the same information, as RMON-1's risingAlarm and fallingAlarm notifications do for alarmTable-specified alarms π₯
5. Definitions π
HC-ALARM-MIB DEFINITIONS ::= BEGIN
Okay bestie, the module starts with its imports π¦β¨ Here's where we pick up.
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
Integer32, Counter32, Unsigned32
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF
RowStatus, VariablePointer, StorageType,
TEXTUAL-CONVENTION
FROM SNMPv2-TC
CounterBasedGauge64
FROM HCNUM-TC
rmon, OwnerString, rmonEventGroup
FROM RMON-MIB;
hcAlarmMIB MODULE-IDENTITY
LAST-UPDATED "200212160000Z"
ORGANIZATION "IETF RMONMIB Working Group"
CONTACT-INFO
" Andy Bierman
Cisco Systems, Inc.
Tel: +1 408 527-3711
E-mail: abierman@cisco.com
Postal: 170 West Tasman Drive
San Jose, CA USA 95134
Keith McCloghrie
Cisco Systems, Inc.
Tel: +1 408 526-5260
E-mail: kzm@cisco.com
Postal: 170 West Tasman Drive
San Jose, CA USA 95134
Send comments to <rmonmib@ietf.org>
Mailing list subscription info:
http://www.ietf.org/mailman/listinfo/rmonmib "
DESCRIPTION
"This module defines Remote Monitoring MIB extensions for
High Capacity Alarms.
Copyright (C) The Internet Society (2002). This version
of this MIB module is part of RFC 3434; see the RFC
itself for full legal notices."
REVISION "200212160000Z"
DESCRIPTION
"Initial version of the High Capacity Alarm MIB module.
This version published as RFC 3434."
::= { rmon 29 }
hcAlarmObjects OBJECT IDENTIFIER ::= { hcAlarmMIB 1 }
hcAlarmNotifications OBJECT IDENTIFIER ::= { hcAlarmMIB 2 }
hcAlarmConformance OBJECT IDENTIFIER ::= { hcAlarmMIB 3 }
hcAlarmControlObjects OBJECT IDENTIFIER ::= { hcAlarmObjects 1 }
hcAlarmCapabilitiesObjects OBJECT IDENTIFIER
::= { hcAlarmObjects 2 }
--
-- Textual Conventions
--
HcValueStatus ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"This data type indicates the validity and sign of the data
in associated object instances which represent the absolute
value of a high capacity numeric quantity. Such an object
may be represented with one or more object instances. An
object of type HcValueStatus MUST be defined within the same
structure as the object(s) representing the high capacity
absolute value.
If the associated object instance(s) representing the high
capacity absolute value could not be accessed during the
sampling interval, and is therefore invalid, then the
associated HcValueStatus object will contain the value
'valueNotAvailable(1)'.
If the associated object instance(s) representing the high
capacity absolute value are valid and actual value of the
sample is greater than or equal to zero, then the associated
HcValueStatus object will contain the value
'valuePositive(2)'.
If the associated object instance(s) representing the high
capacity absolute value are valid and the actual value of
the sample is less than zero, then the associated
HcValueStatus object will contain the value
'valueNegative(3)'. The associated absolute value should be
multiplied by -1 to obtain the true sample value."
SYNTAX INTEGER {
valueNotAvailable(1),
valuePositive(2),
valueNegative(3)
}
--
-- High Capacity Alarm Table
--
hcAlarmTable OBJECT-TYPE
SYNTAX SEQUENCE OF HcAlarmEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of entries for the configuration of high capacity
alarms."
::= { hcAlarmControlObjects 1 }
hcAlarmEntry OBJECT-TYPE
SYNTAX HcAlarmEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the hcAlarmTable. Entries are usually
created in this table by management application action, but
may also be created by agent action as well."
INDEX { hcAlarmIndex }
::= { hcAlarmTable 1 }
HcAlarmEntry ::= SEQUENCE {
hcAlarmIndex Integer32,
hcAlarmInterval Integer32,
hcAlarmVariable VariablePointer,
hcAlarmSampleType INTEGER,
hcAlarmAbsValue CounterBasedGauge64,
hcAlarmValueStatus HcValueStatus,
hcAlarmStartupAlarm INTEGER,
hcAlarmRisingThreshAbsValueLo Unsigned32,
hcAlarmRisingThreshAbsValueHi Unsigned32,
hcAlarmRisingThresholdValStatus HcValueStatus,
hcAlarmFallingThreshAbsValueLo Unsigned32,
hcAlarmFallingThreshAbsValueHi Unsigned32,
hcAlarmFallingThresholdValStatus HcValueStatus,
hcAlarmRisingEventIndex Integer32,
hcAlarmFallingEventIndex Integer32,
hcAlarmValueFailedAttempts Counter32,
hcAlarmOwner OwnerString,
hcAlarmStorageType StorageType,
hcAlarmStatus RowStatus }
hcAlarmIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary integer index value used to uniquely identify
this high capacity alarm entry."
::= { hcAlarmEntry 1 }
hcAlarmInterval OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The interval in seconds over which the data is sampled and
compared with the rising and falling thresholds. When
setting this variable, care should be taken in the case of
deltaValue sampling - the interval should be set short
enough that the sampled variable is very unlikely to
increase or decrease by more than 2^63 - 1 during a single
sampling interval.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 2 }
hcAlarmVariable OBJECT-TYPE
SYNTAX VariablePointer
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The object identifier of the particular variable to be
sampled. Only variables that resolve to an ASN.1 primitive
type of INTEGER (INTEGER, Integer32, Counter32, Counter64,
Gauge, or TimeTicks) may be sampled.
Because SNMP access control is articulated entirely in terms
of the contents of MIB views, no access control mechanism
exists that can restrict the value of this object to
identify only those objects that exist in a particular MIB
view. Because there is thus no acceptable means of
restricting the read access that could be obtained through
the alarm mechanism, the probe must only grant write access
to this object in those views that have read access to all
objects on the probe.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 3 }
hcAlarmSampleType OBJECT-TYPE
SYNTAX INTEGER {
absoluteValue(1),
deltaValue(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The method of sampling the selected variable and
calculating the value to be compared against the thresholds.
If the value of this object is absoluteValue(1), the value
of the selected variable will be compared directly with the
thresholds at the end of the sampling interval. If the
value of this object is deltaValue(2), the value of the
selected variable at the last sample will be subtracted from
the current value, and the difference compared with the
thresholds.
If the associated hcAlarmVariable instance could not be
obtained at the previous sample interval, then a delta
sample is not possible, and the value of the associated
hcAlarmValueStatus object for this interval will be
valueNotAvailable(1).
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 4 }
hcAlarmAbsValue OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The absolute value (i.e., unsigned value) of the
hcAlarmVariable statistic during the last sampling period.
The value during the current sampling period is not made
available until the period is completed.
To obtain the true value for this sampling interval, the
associated instance of hcAlarmValueStatus must be checked,
and the value of this object adjusted as necessary.
If the MIB instance could not be accessed during the
sampling interval, then this object will have a value of
zero and the associated instance of hcAlarmValueStatus will
be set to 'valueNotAvailable(1)'."
::= { hcAlarmEntry 5 }
hcAlarmValueStatus OBJECT-TYPE
SYNTAX HcValueStatus
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object indicates the validity and sign of the data for
the hcAlarmAbsValue object, as described in the
HcValueStatus textual convention."
::= { hcAlarmEntry 6 }
hcAlarmStartupAlarm OBJECT-TYPE
SYNTAX INTEGER {
risingAlarm(1),
fallingAlarm(2),
risingOrFallingAlarm(3)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The alarm that may be sent when this entry is first set to
active. If the first sample after this entry becomes active
is greater than or equal to the rising threshold and this
object is equal to risingAlarm(1) or
risingOrFallingAlarm(3), then a single rising alarm will be
generated. If the first sample after this entry becomes
valid is less than or equal to the falling threshold and
this object is equal to fallingAlarm(2) or
risingOrFallingAlarm(3), then a single falling alarm will be
generated.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 7 }
hcAlarmRisingThreshAbsValueLo OBJECT-TYPE π
okay bestie, the rising threshold is split across three objects, and this is the lower 32 bits π
hcAlarmRisingThreshAbsValueLo OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The lower 32 bits of the absolute value for threshold for
the sampled statistic. The actual threshold value is
determined by the associated instances of the
hcAlarmRisingThreshAbsValueHi and
hcAlarmRisingThresholdValStatus objects, as follows:
ABS(threshold) = hcAlarmRisingThreshAbsValueLo +
(hcAlarmRisingThreshAbsValueHi * 2^^32)
The absolute value of the threshold is adjusted as required,
as described in the HcValueStatus textual convention. These
three object instances are conceptually combined to
represent the rising threshold for this entry.
When the current sampled value is greater than or equal to
this threshold, and the value at the last sampling interval
was less than this threshold, a single event will be
generated. A single event will also be generated if the
first sample after this entry becomes valid is greater than
or equal to this threshold and the associated
hcAlarmStartupAlarm is equal to risingAlarm(1) or
risingOrFallingAlarm(3).
After a rising event is generated, another such event will
not be generated until the sampled value falls below this
threshold and reaches the threshold identified by the
hcAlarmFallingThreshAbsValueLo,
hcAlarmFallingThreshAbsValueHi, and
hcAlarmFallingThresholdValStatus objects.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 8 }
hcAlarmRisingThreshAbsValueHi OBJECT-TYPE β¨
now the upper 32 bits, same energy, just the other half of the number πΈ
hcAlarmRisingThreshAbsValueHi OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The upper 32 bits of the absolute value for threshold for
the sampled statistic. The actual threshold value is
determined by the associated instances of the
hcAlarmRisingThreshAbsValueLo and
hcAlarmRisingThresholdValStatus objects, as follows:
ABS(threshold) = hcAlarmRisingThreshAbsValueLo +
(hcAlarmRisingThreshAbsValueHi * 2^^32)
The absolute value of the threshold is adjusted as required,
as described in the HcValueStatus textual convention. These
three object instances are conceptually combined to
represent the rising threshold for this entry.
When the current sampled value is greater than or equal to
this threshold, and the value at the last sampling interval
was less than this threshold, a single event will be
generated. A single event will also be generated if the
first sample after this entry becomes valid is greater than
or equal to this threshold and the associated
hcAlarmStartupAlarm is equal to risingAlarm(1) or
risingOrFallingAlarm(3).
After a rising event is generated, another such event will
not be generated until the sampled value falls below this
threshold and reaches the threshold identified by the
hcAlarmFallingThreshAbsValueLo,
hcAlarmFallingThreshAbsValueHi, and
hcAlarmFallingThresholdValStatus objects.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 9 }
hcAlarmRisingThresholdValStatus OBJECT-TYPE π¦
this one is the sign for the rising threshold, and yes the description really says "hcAlarmRisingThresAbsValueLo", typo and all π
hcAlarmRisingThresholdValStatus OBJECT-TYPE
SYNTAX HcValueStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object indicates the sign of the data for the rising
threshold, as defined by the hcAlarmRisingThresAbsValueLo
and hcAlarmRisingThresAbsValueHi objects, as described in
the HcValueStatus textual convention.
The enumeration 'valueNotAvailable(1)' is not allowed, and
the associated hcAlarmStatus object cannot be equal to
'active(1)' if this object is set to this value.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 10 }
hcAlarmFallingThreshAbsValueLo OBJECT-TYPE π
the falling side, mirror image of the rising one. it fires when the value drops instead π§
hcAlarmFallingThreshAbsValueLo OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The lower 32 bits of the absolute value for threshold for
the sampled statistic. The actual threshold value is
determined by the associated instances of the
hcAlarmFallingThreshAbsValueHi and
hcAlarmFallingThresholdValStatus objects, as follows:
ABS(threshold) = hcAlarmFallingThreshAbsValueLo +
(hcAlarmFallingThreshAbsValueHi * 2^^32)
The absolute value of the threshold is adjusted as required,
as described in the HcValueStatus textual convention. These
three object instances are conceptually combined to
represent the falling threshold for this entry.
When the current sampled value is less than or equal to this
threshold, and the value at the last sampling interval was
greater than this threshold, a single event will be
generated. A single event will also be generated if the
first sample after this entry becomes valid is less than or
equal to this threshold and the associated
hcAlarmStartupAlarm is equal to fallingAlarm(2) or
risingOrFallingAlarm(3).
After a falling event is generated, another such event will
not be generated until the sampled value rises above this
threshold and reaches the threshold identified by the
hcAlarmRisingThreshAbsValueLo,
hcAlarmRisingThreshAbsValueHi, and
hcAlarmRisingThresholdValStatus objects.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 11 }
hcAlarmFallingThreshAbsValueHi OBJECT-TYPE π
upper half of the falling threshold, same vibes as the rising Hi one π
hcAlarmFallingThreshAbsValueHi OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The upper 32 bits of the absolute value for threshold for
the sampled statistic. The actual threshold value is
determined by the associated instances of the
hcAlarmFallingThreshAbsValueLo and
hcAlarmFallingThresholdValStatus objects, as follows:
ABS(threshold) = hcAlarmFallingThreshAbsValueLo +
(hcAlarmFallingThreshAbsValueHi * 2^^32)
The absolute value of the threshold is adjusted as required,
as described in the HcValueStatus textual convention. These
three object instances are conceptually combined to
represent the falling threshold for this entry.
When the current sampled value is less than or equal to this
threshold, and the value at the last sampling interval was
greater than this threshold, a single event will be
generated. A single event will also be generated if the
first sample after this entry becomes valid is less than or
equal to this threshold and the associated
hcAlarmStartupAlarm is equal to fallingAlarm(2) or
risingOrFallingAlarm(3).
After a falling event is generated, another such event will
not be generated until the sampled value rises above this
threshold and reaches the threshold identified by the
hcAlarmRisingThreshAbsValueLo,
hcAlarmRisingThreshAbsValueHi, and
hcAlarmRisingThresholdValStatus objects.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 12 }
hcAlarmFallingThresholdValStatus OBJECT-TYPE π
the sign for the falling threshold. same rule as the rising one: valueNotAvailable(1) is a no-go π
ββοΈ
hcAlarmFallingThresholdValStatus OBJECT-TYPE
SYNTAX HcValueStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object indicates the sign of the data for the falling
threshold, as defined by the hcAlarmFallingThreshAbsValueLo
and hcAlarmFallingThreshAbsValueHi objects, as described in
the HcValueStatus textual convention.
The enumeration 'valueNotAvailable(1)' is not allowed, and
the associated hcAlarmStatus object cannot be equal to
'active(1)' if this object is set to this value.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 13 }
hcAlarmRisingEventIndex OBJECT-TYPE β
this is where you point the rising alarm at an event entry. zero means no event, since zero isn't a valid event index π«Ά
hcAlarmRisingEventIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The index of the eventEntry that is used when a rising
threshold is crossed. The eventEntry identified by a
particular value of this index is the same as identified by
the same value of the eventIndex object. If there is no
corresponding entry in the eventTable, then no association
exists. In particular, if this value is zero, no associated
event will be generated, as zero is not a valid event index.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 14 }
hcAlarmFallingEventIndex OBJECT-TYPE π₯
the falling version of the same idea: point it at an event entry, and zero means nothing gets fired π
hcAlarmFallingEventIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The index of the eventEntry that is used when a falling
threshold is crossed. The eventEntry identified by a
particular value of this index is the same as identified by
the same value of the eventIndex object. If there is no
corresponding entry in the eventTable, then no association
exists. In particular, if this value is zero, no associated
event will be generated, as zero is not a valid event index.
This object may not be modified if the associated
hcAlarmStatus object is equal to active(1)."
::= { hcAlarmEntry 15 }
hcAlarmValueFailedAttempts OBJECT-TYPE πΈ
this counter keeps track of the polls where the value just wasn't there. read-only, so hands off π
hcAlarmValueFailedAttempts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times the associated hcAlarmVariable instance
was polled on behalf of this hcAlarmEntry, (while in the
active state) and the value was not available. This counter
may experience a discontinuity if the agent restarts,
indicated by the value of sysUpTime."
::= { hcAlarmEntry 16 }
hcAlarmOwner OBJECT-TYPE π
the entity that set up this entry is the one using its resources. basically, whoever made it owns it π
hcAlarmOwner OBJECT-TYPE
SYNTAX OwnerString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The entity that configured this entry and is therefore
using the resources assigned to it."
::= { hcAlarmEntry 17 }
hcAlarmStorageType OBJECT-TYPE π§
last one in this batch! this says how the entry is stored, and if it's permanent(4), the event index objects have to be writable π
β¨
hcAlarmStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of non-volatile storage configured for this entry.
If this object is equal to 'permanent(4)', then the
associated hcAlarmRisingEventIndex and
hcAlarmFallingEventIndex objects must be writable."
::= { hcAlarmEntry 18 }
4. Identifiers in HTTP β¨
Okay, so the last row knob is hcAlarmStatus, and it's the one that decides whether a row is actually live π . Here's the full definition, verbatim:
hcAlarmStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this row.
An entry MUST NOT exist in the active state unless all
objects in the entry have an appropriate value, as described
in the description clause for each writable object.
The hcAlarmStatus object may be modified if the associated
instance of this object is equal to active(1),
notInService(2), or notReady(3). All other writable objects
may be modified if the associated instance of this object is
equal to notInService(2) or notReady(3)."
::= { hcAlarmEntry 19 }
Next up is the capabilities bit. It tells you what the agent is able to do with high capacity alarms π
--
-- Capabilities
--
hcAlarmCapabilities OBJECT-TYPE
SYNTAX BITS {
hcAlarmCreation(0),
hcAlarmNvStorage(1)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of the high capacity alarm capabilities
supported by this agent.
If the 'hcAlarmCreation' BIT is set, then this agent allows
NMS applications to create entries in the hcAlarmTable.
If the 'hcAlarmNvStorage' BIT is set, then this agent allows
entries in the hcAlarmTable which will be recreated after a
system restart, as controlled by the hcAlarmStorageType
object."
::= { hcAlarmCapabilitiesObjects 1 }
Now the notifications, which are the alarm bells that go off when a threshold gets crossed ππΈ
--
-- Notifications
--
hcAlarmNotifPrefix OBJECT IDENTIFIER
::= { hcAlarmNotifications 0 }
hcRisingAlarm NOTIFICATION-TYPE
OBJECTS { hcAlarmVariable,
hcAlarmSampleType,
hcAlarmAbsValue,
hcAlarmValueStatus,
hcAlarmRisingThreshAbsValueLo,
hcAlarmRisingThreshAbsValueHi,
hcAlarmRisingThresholdValStatus,
hcAlarmRisingEventIndex }
STATUS current
DESCRIPTION
"The SNMP notification that is generated when a high
capacity alarm entry crosses its rising threshold and
generates an event that is configured for sending SNMP
traps.
The hcAlarmEntry object instances identified in the OBJECTS
clause are from the entry that causes this notification to
be generated."
::= { hcAlarmNotifPrefix 1 }
hcFallingAlarm NOTIFICATION-TYPE
OBJECTS { hcAlarmVariable,
hcAlarmSampleType,
hcAlarmAbsValue,
hcAlarmValueStatus,
hcAlarmFallingThreshAbsValueLo,
hcAlarmFallingThreshAbsValueHi,
hcAlarmFallingThresholdValStatus,
hcAlarmFallingEventIndex }
STATUS current
DESCRIPTION
"The SNMP notification that is generated when a high
capacity alarm entry crosses its falling threshold and
generates an event that is configured for sending SNMP
traps.
The hcAlarmEntry object instances identified in the OBJECTS
clause are from the entry that causes this notification to
be generated."
::= { hcAlarmNotifPrefix 2 }
And last but not least, the conformance section, which spells out what an implementation has to include to count as compliant π§
--
-- Conformance Section
--
hcAlarmCompliances OBJECT IDENTIFIER ::= { hcAlarmConformance 1 }
hcAlarmGroups OBJECT IDENTIFIER ::= { hcAlarmConformance 2 }
hcAlarmCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the High
Capacity Alarm MIB."
MODULE -- this module
MANDATORY-GROUPS {
hcAlarmControlGroup,
hcAlarmCapabilitiesGroup,
hcAlarmNotificationsGroup
}
MODULE RMON-MIB
MANDATORY-GROUPS { rmonEventGroup }
::= { hcAlarmCompliances 1 }
-- Object Groups
hcAlarmControlGroup OBJECT-GROUP
OBJECTS {
hcAlarmInterval,
hcAlarmVariable,
hcAlarmSampleType,
hcAlarmAbsValue,
hcAlarmValueStatus,
hcAlarmStartupAlarm,
hcAlarmRisingThreshAbsValueLo,
hcAlarmRisingThreshAbsValueHi,
hcAlarmRisingThresholdValStatus,
hcAlarmFallingThreshAbsValueLo,
hcAlarmFallingThreshAbsValueHi,
hcAlarmFallingThresholdValStatus,
hcAlarmRisingEventIndex,
hcAlarmFallingEventIndex,
hcAlarmValueFailedAttempts,
hcAlarmOwner,
hcAlarmStorageType,
hcAlarmStatus
}
STATUS current
DESCRIPTION
"A collection of objects used to configure entries for high
capacity alarm threshold monitoring purposes."
::= { hcAlarmGroups 1 }
hcAlarmCapabilitiesGroup OBJECT-GROUP
OBJECTS {
hcAlarmCapabilities
}
STATUS current
DESCRIPTION
"A collection of objects used to indicate an agent's high
capacity alarm threshold monitoring capabilities."
::= { hcAlarmGroups 2 }
hcAlarmNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS {
hcRisingAlarm,
hcFallingAlarm
}
STATUS current
DESCRIPTION
"A collection of notifications to deliver information
related to a high capacity rising or falling threshold event
to a management application."
::= { hcAlarmGroups 3 }
END
6. Intellectual Property π¦
Okay, so this part is the legal-ish bit, but it's still important bestie. The IETF doesn't take a side on whether any intellectual property or other rights that someone might claim over the tech in this doc are valid or how far they reach. It also doesn't say it has tried to find any of those rights. If you want the IETF's rules on rights for standards-track and standards-related documents, go read BCP-11. Any claims of rights that were filed for publication, any promises of licenses, or the results of trying to get a general license or permission to use those proprietary rights for implementors or users of this spec can all be requested from the IETF Secretariat. π
The IETF also invites anyone to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to practice this standard. Send that info to the IETF Executive Director π
7. Acknowledgements π«Ά
This memo came out of the RMONMIB working group, and it's built on the existing alarmTable objects in the RMON-1 MIB module [RFC2819]. To keep the RMON "look-and-feel" and semantic consistency, some of Steve Waldbusser's text from [RFC2819] got adapted for this MIB. Iconic credit where it's due π
8. Normative References π
- [RFC2026] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
- [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
- [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Conformance Statements for SMIv2", RFC 2580, STD 58, April 1999.
- [RFC2819] Waldbusser, S., "Remote Network Monitoring Management Information Base", STD 59, RFC 2819, May 2000.
- [RFC3414] 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.
- [RFC3415] 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.
9. Informative References π
- [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
- [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June, 2000.
10. Security Considerations π
Okay bestie, this section is seriously important, so listen up π There are a bunch of management objects in this MIB that have a MAX-ACCESS clause of read-write and/or read-create. Those objects might be sensitive or vulnerable in some network environments. Running SET operations in a non-secure environment without proper protection can really mess with network operations.
There are also a few managed objects in this MIB that may contain sensitive information. They are:
hcAlarmAbsValue
hcAlarmValueStatus
These objects get used together, and they may expose the values of particular MIB instances, as identified by the associated instances of the hcAlarmVariable object.
hcAlarmVariable
This object identifies the object instance that the associated hcAlarmEntry will periodically sample. SNMP access control is described entirely in terms of the contents of MIB views, so there's no access control mechanism that can limit the value of this object to only the objects in a particular MIB view. So there's no real way to restrict the read access that the alarm mechanism could give you. That means the probe must only grant write access to this object in views that have read access to all objects on the probe. π
SNMPv1 by itself is not a secure environment. Even if the network itself is secure (for example by using IPSec), there's no control over who on that secure network gets to access and GET/SET (read/change/create/delete) the objects in this MIB π
It is recommended that implementors consider the security features provided by the SNMPv3 framework. Specifically, the use of the User-based Security Model STD 62, RFC 3414 [RFC3414] and the View-based Access Control Model STD 62, RFC 3415 [RFC3415] is recommended. β¨
It is then a customer/user responsibility to make sure that the SNMP entity giving access to an instance of this MIB is properly configured to give access only to the objects, and only to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them. Lock it down, babe π
11. Authors' Addresses π
Andy Bierman Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA USA 95134 Phone: +1 408-527-3711 EMail: abierman@cisco.com
Keith McCloghrie Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA USA 95134 Phone: +1 408-526-5260 EMail: kzm@cisco.com
12. Full Copyright Statement β¨
Okay bestie, this part is the legal fine print at the end of the doc, and I'm going to be honest, it's a little dry, but it matters so we don't mess up the permissions π
Copyright (C) The Internet Society (2002). 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. π¦
So the vibe is: you can share it, you can write stuff that explains it or helps people use it, and you can translate it into other languages. Just keep the copyright notice and the paragraph like this on everything you make, and don't edit the actual document itself, unless it's for developing Internet standards (then the Internet Standards process rules apply) or translating. π«Ά
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. π Literally forever, no take-backs.
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. π So basically, no guarantees at all, it's used as-is.
Acknowledgement π
Funding for the RFC Editor function is currently provided by the Internet Society. π The Internet Society is paying for the RFC Editor work, so they get a shoutout here. π
π¦ where this page comes from
- ietf: rfc3434 2002-12
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms