RFC 3878

Alarm Reporting Control Management Information Base (MIB)

๐Ÿ“… published September 2004, from ietf

RFC 3878: Alarm Reporting Control Management Information Base (MIB) ๐Ÿฆ‹ (part 1 of 3)

okay bestie, this one is all about the Alarm Reporting Control MIB ๐ŸŽ€ It's basically a way for a manager to tell a device "hey, hold off on yelling about alarms for a bit" ๐Ÿ’…


The title block tea โ˜•

  • Working group: Network Working Group โœจ
  • RFC number: 3878
  • Category: Standards Track ๐Ÿ”ฅ
  • Authors: H. Lam (Lucent Technologies), A. Huynh (Cetus Networks) and D. Perkins (SNMPinfo) ๐Ÿ‘‘
  • Date: September 2004 ๐ŸŒˆ
  • Obsoletes and updates: the header doesn't list anything this one obsoletes or updates ๐Ÿ™ˆ

Status of this Memo ๐Ÿ’œ

This doc is an Internet standards track protocol spec for the Internet community, and it's asking for discussion and suggestions for improvements ๐Ÿซถ If you want the current standardization state and status of this protocol, check the "Internet Official Protocol Standards" (STD 1) edition that's current. And distribution of this memo is unlimited, so share away ๐Ÿฆ‹

Copyright (C) The Internet Society (2004).

Abstract โœจ

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets. Specifically, it defines objects for controlling the reporting of alarm conditions ๐Ÿ”ฅ

Table of Contents ๐Ÿงš

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
2.  The Internet-Standard Management Framework . . . . . . . . . .  2
3.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  2
4.  ARC MIB Overview . . . . . . . . . . . . . . . . . . . . . . .  2
    4.1.  Relationship between ARC mode and Alarm Reporting. . . .  4
5.  ARC MIB Object Definitions . . . . . . . . . . . . . . . . . .  4
6.  Security Considerations. . . . . . . . . . . . . . . . . . . . 13
7.  Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 14
8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
    8.1.  Normative References . . . . . . . . . . . . . . . . . . 14
    8.2.  Informative References . . . . . . . . . . . . . . . . . 15
9.  Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 15
10. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 16

1. Introduction ๐ŸŒธ

The main audience here is network operators who are responsible for running network resources ๐Ÿ’– This document defines an alarm reporting control (ARC) MIB module, which gives a manager a mechanism to suppress or defer the reporting of alarm conditions, based on the resource ID and the alarm condition type ๐ŸŽ€

2. The Internet-Standard Management Framework ๐Ÿฆ‹

Want the full overview of the Internet-Standard Management Framework docs? Go look at section 7 of RFC 3410 [RFC3410] ๐Ÿงš

Managed objects are accessed through 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 to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ๐Ÿ‘‘

3. Conventions ๐ŸŒˆ

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] ๐Ÿ’œ

4. ARC MIB Overview ๐ŸŒธ

There's a real need for a way to control the reporting of alarm conditions for resources in a network device ๐Ÿ˜ญ For example, a manager might want to (a) inhibit the reporting of alarm conditions of a resource until the resource is problem-free, (b) inhibit the reporting of alarm conditions of a resource for a specified time period, or (c) inhibit the reporting of alarm conditions of a resource indefinitely, until the managing system explicitly allows it later on ๐Ÿ’…

The alarm reporting control (ARC) feature gives you automatic in-service provisioning ๐ŸŽ€ It leaves enough time for service setup, customer testing and other maintenance stuff while everything sits in an "alarm-free" state ๐Ÿซถ Once a resource is "problem-free", alarm reporting can be turned back on automatically or manually (aka allowed) โœจ

When a network resource is in ARC mode (i.e., in nalm, nalmTI, nalmQI or nalmQICD states, as described in the MIB), technicians and managing systems don't get flooded with unnecessary work items during things like service provisioning and network setup/teardown ๐Ÿ™ˆ That cuts maintenance costs and makes operating and maintaining these systems way smoother ๐Ÿ”ฅ Putting a network resource in ARC mode shall not affect the availability of active alarm condition information for potential retrieval ๐Ÿ’–

ITU-T Recommendation M.3100 Amendment 3 [M.3100 Amd3] covers the business requirements, analysis and design of the Alarm Reporting Control feature ๐Ÿงš

This document defines the MIB objects that support a subset of the ARC functions described in M.3100 Amd3 ๐ŸŒˆ Specifically, it defines a table that can be used to specify the ARC settings for the resources in a system ๐Ÿ‘‘

M.3100 Amendment 3 [M.3100 Amd3] defines five ARC states: alm, nalm, nalmQI, nalmQICD and nalmTI ๐Ÿ’œ In the ARC MIB module, the arcState object models those M.3100 ARC states. Note that the alm state (alarm reporting is allowed) is not in the enumeration for this object's value, but the MIB implicitly supports it anyway ๐Ÿฆ‹ Once a resource enters normal reporting mode (i.e., into the alm state) for the specified alarm type, the matching row is automatically deleted from the arc table ๐Ÿ˜ญ You can also set arcState to alm manually, by setting the RowStatus object to 'destroy' ๐Ÿ’…

The ARC MIB module in this document gives you a way to control the reporting of alarm conditions ๐ŸŽ€ A set of applicable alarm conditions is defined in ITU-T Recommendation M.3100 [M.3100] and they're called "probable causes" ๐Ÿซถ These probable causes (alarm conditions) are included in the IANAItuProbableCause TC, which is defined in the IANA-ITU-ALARM-TC MIB module [RFC3877]. The IANA-ITU-ALARM-TC MIB module is maintained on the IANA web-site [ITUALARMTC]. [RFC3877]. โœจ

The ARC MIB module defines an IANAItuProbableCauseOrZero TC, which can take any value of IANAItuProbableCause or 0 ๐Ÿ”ฅ The ARC MIB module also uses IANAItuProbableCauseOrZero to define the ARC settings for the managed resource in the network elements ๐Ÿ‘‘ Defining and storing alarms (active and history alarms, standing and transient alarms, and alarm notifications) is out of scope for this document ๐ŸŒธ

4.1. Relationship between ARC mode and alarm reporting ๐Ÿ’–

When the ARC MIB module is used in a managed system, these rules apply ๐Ÿงš

  • For an alarm condition raised before entering ARC mode, the alarm raised and alarm cleared reports get sent as usual ๐Ÿ’…
  • For an alarm condition raised after entering ARC mode and also cleared before exiting ARC mode, no alarm raised report gets sent and no alarm cleared report gets sent either ๐Ÿ™ˆ
  • For an alarm condition raised after entering ARC mode and not cleared when exiting ARC mode, the alarm raised report is deferred until the moment ARC mode is exited ๐Ÿ˜ญ The alarm cleared report gets sent as usual (i.e., at the time the alarm is cleared) ๐ŸŽ€

Further details of the ARC function are in M.3100 Amd3 [M.3100 Amd3] ๐Ÿฆ‹

5. ARC MIB Object Definition ๐Ÿ‘‘

Here's the actual MIB module, copied exactly as written ๐Ÿซถ Don't mess with a single character in here, implementers rely on every bit of it ๐Ÿ’…

ARC-MIB DEFINITIONS ::= BEGIN

IMPORTS
  MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2
          FROM SNMPv2-SMI                           -- [RFC2578]
  TEXTUAL-CONVENTION, RowStatus, StorageType
          FROM SNMPv2-TC                            -- [RFC2579]
  MODULE-COMPLIANCE, OBJECT-GROUP
          FROM SNMPv2-CONF                          -- [RFC2580]
  ResourceId
          FROM ALARM-MIB;                           -- [RFC3877]

arcMibModule MODULE-IDENTITY
  LAST-UPDATED "200409090000Z"  -- September 09, 2004
  ORGANIZATION "IETF Distributed Management Working Group"
  CONTACT-INFO
       "WG EMail:  disman@ietf.org
              Subscribe: disman-request@ietf.org
              http://www.ietf.org/html.charters/disman-charter.html

        Chair:     Randy Presuhn
                   E-mail: randy_presuhn@mindspring.com

        Editor:    Hing-Kam Lam
                   Lucent Technologies, 4C-616
                   101 Crawfords Corner Road
                   Holmdel, NJ 07733
                   USA
                   Tel: +1 732 949 8338
                   E-mail: hklam@lucent.com"

  DESCRIPTION
    "The MIB module describes the objects for controlling a resource
     in reporting alarm conditions that it detects.

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

  REVISION  "200409090000Z"  -- September 09, 2004
  DESCRIPTION
       "Initial version, published as RFC 3878."
  ::={ mib-2 117 }

------------------
-- TEXTUAL-CONVENTION
------------------

IANAItuProbableCauseOrZero ::= TEXTUAL-CONVENTION
  STATUS  current
  DESCRIPTION
    "This TC can take any value of IANAItuProbableCause or 0.
     IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC
     module, which is maintained at the IANA web site and
     published in the Alarm MIB document (see RFC 3877)."
  REFERENCE
    "IANA-ITU-ALARM-TC MIB module as maintained at the IANA web site.
     The initial module was also published in RFC 3877."
--
  SYNTAX  INTEGER (0..2147483647)

------------------
-- MIB Objects
------------------

arcTimeIntervals   OBJECT IDENTIFIER ::= { arcMibModule 1 }
arcObjects         OBJECT IDENTIFIER ::= { arcMibModule 2 }

arcTITimeInterval OBJECT-TYPE
  SYNTAX  Unsigned32
  UNITS       "seconds"
  MAX-ACCESS  read-write
  STATUS  current
  DESCRIPTION

    "This variable indicates the time interval used for the nalmTI
     state, in units of second.  It is a pre-defined length of time
     in which the resource will stay in the nalmTI state before
     transition into the alm state.

     Instances of this object SHOULD persist across agent restarts."
  ::= { arcTimeIntervals 1 }

arcCDTimeInterval OBJECT-TYPE
  SYNTAX  Unsigned32
  UNITS       "seconds"
  MAX-ACCESS  read-write
  STATUS  current
  DESCRIPTION
    "This variable indicates the time interval used for the nalmQICD
     state, in units of second.  It is a pre-defined length of time
     in which the resource will stay in the nalmQICD state before
     transition into the alm state after it is problem-free.

     Instances of this object SHOULD persist across agent restarts."
  ::= { arcTimeIntervals 2 }

Okay bestie, the MIB objects are where things get spicy ๐Ÿ’…๐Ÿฆ‹. Each block below is copied exactly, and my notes are right under it so you can vibe with the logic โœจ

arcTable OBJECT-TYPE
  SYNTAX  SEQUENCE OF ArcEntry
  MAX-ACCESS  not-accessible
  STATUS  current
  DESCRIPTION
    "A table of Alarm Reporting Control (ARC) settings on the system.

     Alarm Reporting Control is a feature that provides an automatic
     in-service provisioning capability.  Alarm reporting is turned
     off on a per-resource basis for a selective set of potential
     alarm conditions to allow sufficient time for customer testing
     and other maintenance activities in an 'alarm free' state.
     Once a resource is ready for service, alarm reporting is
     automatically or manually turned on.

     Functional description and requirements of Alarm Reporting
     Control are defined in ITU-T Recommendation M.3100 Amendment 3
     [M.3100 Amd3]."

  REFERENCE
        "ITU Recommendation M.3100 Amendment 3, 'Generic Network
         Information Model', January 2001."
  ::= { arcObjects 1 }

arcTable is the whole ARC settings table ๐ŸŽ€. Alarm Reporting Control is basically automatic in-service provisioning: alarm reporting gets switched off for a resource on a selective set of alarm conditions, so testing and maintenance can happen in an "alarm free" state ๐ŸŒธ. Once the resource is ready for service, reporting gets turned on automatically or manually. The full functional description lives in ITU-T M.3100 Amendment 3, so that's your go-to source ๐Ÿ“š.

arcEntry OBJECT-TYPE
  SYNTAX  ArcEntry
  MAX-ACCESS  not-accessible
  STATUS  current
  DESCRIPTION
    "A conceptual row that contains information about an ARC setting
     of a resource in the system.

     Implementation need to be aware that if the total size of
     arcIndex and arcNotificationId exceeds 114 sub-IDs, then OIDs
     of column instances in this table will have more than 128
     sub-IDs and cannot be access using SNMPv1, SNMPv2c, or snmpv3."

  INDEX  { arcIndex, arcAlarmType, arcNotificationId }
  ::= { arcTable 1 }

ArcEntry ::=
  SEQUENCE {
    arcIndex                      ResourceId,
    arcAlarmType                  IANAItuProbableCauseOrZero,
    arcNotificationId             OBJECT IDENTIFIER,
    arcState                      INTEGER,
    arcNalmTimeRemaining          Unsigned32,
    arcRowStatus                  RowStatus,
    arcStorageType                StorageType
    }

arcEntry is one conceptual row holding one ARC setting for one resource ๐Ÿฆ‹. Heads up: the index is arcIndex, arcAlarmType, and arcNotificationId together. If arcIndex and arcNotificationId add up to more than 114 sub-IDs, the column OIDs go past 128 sub-IDs, and then they can't be accessed over SNMPv1, SNMPv2c, or snmpv3 ๐Ÿ˜ญ. That's the kind of detail implementers need to know about, so keep it on your radar ๐Ÿซถ. The ArcEntry SEQUENCE just lists the seven columns in order.

arcIndex OBJECT-TYPE
  SYNTAX  ResourceId
  MAX-ACCESS  not-accessible
  STATUS  current
  DESCRIPTION
    "This object uniquely identifies a resource, which is under the
     arcState's control for the associated arcAlarmType.

     For example, if the resource is an interface, this object will
     point to an instance of interface, e.g., ifIndex.1."
  ::= { arcEntry 1 }

arcIndex picks out the resource that arcState is in charge of for the matching arcAlarmType ๐Ÿงš. Example time: if the resource is an interface, this points at an instance of interface, like ifIndex.1 ๐Ÿ’–.

arcAlarmType OBJECT-TYPE
  SYNTAX  IANAItuProbableCauseOrZero
  MAX-ACCESS  not-accessible
  STATUS  current
  DESCRIPTION
    "This object identifies the alarm condition type controlled by the
     arcState.  It specifies the value 0 or a value of
     IANAItuProbableCause that is applicable to the resource.
     IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC
     module in the Alarm MIB document.

     The value of zero (0) implies any probable causes that are
     applicable to the resource.  Usually, the applicable probable
     causes of a resource are specified in the resource-specific mib."
  ::= { arcEntry 2 }

arcAlarmType names the alarm condition that arcState controls ๐Ÿ”ฎ. It's either 0 or an IANAItuProbableCause value that fits the resource. That type is defined in the IANA-ITU-ALARM-TC module over in the Alarm MIB document. Zero is the wildcard: it covers any probable causes that apply to the resource, and usually those causes get spelled out in the resource-specific MIB ๐ŸŒˆ.

arcNotificationId OBJECT-TYPE
  SYNTAX  OBJECT IDENTIFIER
  MAX-ACCESS  not-accessible
  STATUS  current
  DESCRIPTION
    "This object identifies the type of notification to be suppressed.
     The notification type identified should be the one normally used
     by the resource for reporting its alarms.  When the value of 0.0 is
     specified for this object, it implies all applicable notification
     types."
  ::= { arcEntry 3 }

arcNotificationId is the notification type you want suppressed ๐Ÿ“. Ideally it's the one the resource normally uses for its alarms. Setting it to 0.0 means every applicable notification type gets the hush treatment ๐Ÿคซ.

arcState OBJECT-TYPE
  SYNTAX  INTEGER {
            nalm (1),
            nalmQI (2),
            nalmTI (3),
            nalmQICD (4)
            }
  MAX-ACCESS  read-create
  STATUS  current
  DESCRIPTION
    "Defined in M.3100 Amendment 3 [M.3100 Amd3], there are five
     ARC states: alm, nalm, nalmQI, nalmQICD, and nalmTI.

        alm:        Alarm reporting is turned on (i.e., is allowed).
        nalm:       Alarm reporting is turned off (i.e., not allowed).
        nalmQI:     nalm - Qualified Inhibit. Alarm reporting is
                    turned off until the managed entity is qualified
                    problem-free for an optional persistence interval.
                    Problem-free means that the condition corresponding
                    to the specified alarm type is cleared.
        nalmQICD:   nalmQI - Count down.  This is a substate of nalmQI
                    and performs the persistence timing countdown
                    function after the managed entity is qualified
                    problem-free.
        nalmTI:     nalm - Timed Inhibit.  Alarm reporting is turned
                    off for a specified time interval.

     alm may transition to nalm, nalmQI or nalmTI by management request.

     nalm may transition to alm, nalmQI or nalmTI by management request.

     nalmQI may transition to nalm or alm by management request.

     nalmQI may transition to alm automatically
             if qualified problem-free (if nalmQICD is not supported) or
             if the CD timer expired (if nalmQICD is supported)

     nalmTI may transition to alm or nalm by management request.

     nalmTI may transition to alm automatically if the TI timer expired.

     Further details of ARC state transitions are defined in Figure 3
     of M.3100 Amd3 [M.3100 Amd3].

     According to the requirements in M.3100 Amd3, a resource
     supporting the ARC feature shall support the alm state and at
     least one of the nalm, nalmTI, and nalmQI states. The nalmQICD
     state is an optional substate of nalmQI.

     The arcState object controls the alarm reporting state of a
     resource. Note that the state alm (alarm reporting is allowed) is
     not listed in the enumeration of the value of this object. However,
     this state is implicitly supported by the mib.
     Once a resource enters the normal reporting mode (i.e., in the alm
     state) for the specified alarm type, the corresponding
     row will be automatically deleted from the arc table.
     Also the manual setting of arcState to alm can be achieved through
     setting the RowStatus object to 'destroy'.

     The nalamQICD state is a transitional state from nalmQI to alm. It
     is optional depending on the resource type and the implementation
     of the resource.  If it is supported, before the state
     transitions from nalmQI to alm, a count down period is activated
     for a duration set by the object arcNalmCDTimeInterval.  When the
     time is up, the arcState transitions to alm."

  ::= { arcEntry 4 }

arcState is the big one, bestie ๐Ÿ‘‘๐Ÿ”ฅ. There are five ARC states in M.3100 Amendment 3: alm, nalm, nalmQI, nalmQICD, and nalmTI ๐Ÿ’…. Here's the tea:

  • alm: alarm reporting is on, aka allowed ๐Ÿ””
  • nalm: alarm reporting is off, aka not allowed ๐Ÿ”•
  • nalmQI: Qualified Inhibit. Reporting stays off until the managed entity is qualified problem-free for an optional persistence interval ๐ŸงŠ
  • nalmQICD: a substate of nalmQI that runs the persistence countdown once the entity is qualified problem-free โณ
  • nalmTI: Timed Inhibit, where reporting stays off for a set time interval โฐ

Transitions are where it gets iconic ๐Ÿ’€. alm can move to nalm, nalmQI, or nalmTI on a management request. nalm can go to alm, nalmQI, or nalmTI on request. nalmQI can go to nalm or alm on request, and it can also flip to alm automatically once it's qualified problem-free (or when the CD timer expires, if nalmQICD is supported). nalmTI can go to alm or nalm on request, and it goes to alm automatically when the TI timer expires ๐Ÿฆ‹. Full state diagrams live in Figure 3 of M.3100 Amd3.

Now the conformance vibes: a resource supporting ARC has to support alm, plus at least one of nalm, nalmTI, and nalmQI. nalmQICD is optional ๐ŸŒธ. Notice alm isn't in the enumeration because the MIB handles it implicitly โœจ. When a resource goes back to normal reporting (alm), its row gets auto-deleted from the arc table. Setting arcState to alm by hand can also be done by setting RowStatus to 'destroy' ๐Ÿงน. Last thing: nalmQICD is a transitional state from nalmQI to alm, and if it's supported, a countdown runs for the duration in arcNalmCDTimeInterval ๐Ÿ•ฐ๏ธ.

arcNalmTimeRemaining OBJECT-TYPE
  SYNTAX  Unsigned32
  UNITS       "seconds"
  MAX-ACCESS  read-create
  STATUS  current
  DESCRIPTION
    "This variable indicates the time remaining in the nalmTI state
     or the nalmQICD state, in units of second.

     At the moment the resource enters the nalmTI state, this variable
     will have the initial value equal to the value of
     arcNalmTITimeInterval and then starts decrementing as time goes by.

     Similarly at the moment the resource enters the nalmQICD state,
     this variable will have the initial value equal to the value of
     arcNalmCDTimeInterval and then starts decrementing as time goes by.

     This variable is read-create and thus will allow the manager to
     write (extend or shorten), as needed, the remaining time when the
     resource is in the nalmTI or nalmQICD state.

     If this variable is supported and the resource is currently not in
     the nalmTI nor nalmQICD state, the value of this variable shall
     equal to zero."
  ::= { arcEntry 5 }

arcNalmTimeRemaining is a countdown clock in seconds โฑ๏ธ. When a resource enters nalmTI or nalmQICD, it starts at the matching interval value and ticks down from there ๐Ÿ’ซ. Managers can write to it, so they can extend or shorten the remaining time while the resource is in one of those two states ๐Ÿ™Œ. If it's supported and the resource isn't in nalmTI or nalmQICD, the value sits at zero ๐Ÿ˜ด.

arcRowStatus OBJECT-TYPE
  SYNTAX  RowStatus
  MAX-ACCESS  read-create
  STATUS  current
  DESCRIPTION
    "This columnar object is used for creating and deleting a conceptual
     row of the arcTable.  It is used to create and delete an arc
     setting.

     Setting RowStatus to createAndGo or createAndWait implies creating
     a new ARC setting for the specified resource and alarm type.
     Setting RowStatus to destroy implies removing the ARC setting and
     thus has the effect of resuming normal reporting behaviour of the
     resource for the alarm type.

     Only the objects arcState, arcNalmTimeRemaining, and arcRowStatus
     can be updated when a row is active. All the objects, except
     arcNalmTimeRemaining, must be set before the row can be activated."
  ::= { arcEntry 6 }

arcRowStatus is the create-and-delete switch for rows ๐ŸŽฌ. createAndGo or createAndWait makes a new ARC setting for that resource and alarm type ๐ŸŒฑ. destroy removes the setting and puts normal reporting back in place ๐Ÿ—‘๏ธ. Once a row is active, only arcState, arcNalmTimeRemaining, and arcRowStatus can change. Everything except arcNalmTimeRemaining has to be set before the row can be activated, so no skipping steps ๐Ÿ“.

arcStorageType OBJECT-TYPE
  SYNTAX       StorageType
  MAX-ACCESS   read-create
  STATUS       current
  DESCRIPTION
    "The storage type for this conceptual row.
     Conceptual rows having the value 'permanent' must
     allow write-access at a minimum to arcState.
     Note that arcState must allow change by management request.
     Therefore, no row can be created with 'readOnly'.
     If a set operation tries to set the value to 'readOnly',
     then an 'inconsistentValue' error must be returned."
  DEFVAL      { nonVolatile }
  ::= { arcEntry 7}

arcStorageType is where the row's storage type lives ๐Ÿ’พ. Rows marked 'permanent' still need write access to arcState at minimum, since arcState has to stay changeable by management โœ๏ธ. That's why no row can be created as 'readOnly'. If someone tries to set 'readOnly', the answer is an 'inconsistentValue' error ๐Ÿ™…โ€โ™€๏ธ. The default is nonVolatile ๐Ÿ’œ.

--------------------------
-- conformance information
--------------------------

arcConformance OBJECT IDENTIFIER ::= { arcMibModule 3 }

arcCompliances OBJECT IDENTIFIER ::= { arcConformance 1 }

arcCompliance MODULE-COMPLIANCE
  STATUS  current
    DESCRIPTION
      "The compliance statement for systems supporting
       the ARC MIB module."

  MODULE -- this module
           MANDATORY-GROUPS {
            arcSettingGroup
           }

  OBJECT arcStorageType
    WRITE-SYNTAX StorageType {
                         volatile(2),
                         nonVolatile(3),
                         permanent(4)
                         }
    DESCRIPTION
      "Support for value 'other' is not required.
       The arcState object must allow change by management
       request.  Therefore, no row can be created with
       'readOnly'."

  GROUP  arcTIGroup
  DESCRIPTION
    "This group is REQUIRED for ARC settings
     that provide the Time Inhibit (TI) function."

  GROUP  arcQICDGroup
  DESCRIPTION
    "This group is REQUIRED for ARC settings
     that provide the Quality Inhibit (QI) Count Down (CD)
     function."

  ::= { arcCompliances 1 }

Conformance time! ๐ŸŒˆ This part spells out what a system needs to do to claim compliance. arcSettingGroup is mandatory. Support for the 'other' value of arcStorageType isn't required, and WRITE-SYNTAX accepts volatile, nonVolatile, and permanent ๐Ÿงพ. The TI group is REQUIRED for ARC settings that provide Time Inhibit, and the QICD group is REQUIRED for ARC settings that provide the Quality Inhibit Count Down function ๐Ÿซถ.

arcGroups OBJECT IDENTIFIER ::= { arcConformance 2 }
arcSettingGroup OBJECT-GROUP
  OBJECTS {
          arcState,
          arcRowStatus,
          arcStorageType
          }
   STATUS   current
   DESCRIPTION
     "A collection of objects applicable to
      basic ARC setting."
   ::= { arcGroups 1}

arcTIGroup OBJECT-GROUP
  OBJECTS {
          arcTITimeInterval,
          arcNalmTimeRemaining
          }
   STATUS   current
   DESCRIPTION
     "A collection of objects applicable to
      ARC setting that support the Time Inhibit (TI)
      function."
   ::= { arcGroups 2}

arcQICDGroup OBJECT-GROUP
  OBJECTS {
          arcCDTimeInterval,
          arcNalmTimeRemaining
          }
  STATUS   current
  DESCRIPTION
    "A collection of objects applicable to
     ARC setting that support the Quality Inhibit (QI)
     Count Down (CD) function."
  ::= { arcGroups 3}

END

Groups time ๐Ÿงฉ. arcSettingGroup covers arcState, arcRowStatus, and arcStorageType for basic ARC settings ๐Ÿ’–. arcTIGroup covers arcTITimeInterval and arcNalmTimeRemaining for the Time Inhibit function โฐ. arcQICDGroup covers arcCDTimeInterval and arcNalmTimeRemaining for the Quality Inhibit Count Down function ๐Ÿ”ฎ. And that's the module wrapped up, END ๐ŸŽ€

6. Security Considerations ๐Ÿ”

okay bestie, security is serious, so this section gets the full drama ๐Ÿ˜ญ๐Ÿ’… this MIB module has a bunch of management objects marked read-write and/or read-create. In some network environments those objects can be sensitive or vulnerable, and SET operations on an unprotected, non-secure network can really mess with network operations ๐Ÿšจ These are the tables and objects, and their sensitivity/vulnerability:

arcTITimeInterval,
arcCDTimeInterval,
arcState,
arcNalmTimeRemaining,
arcRowStatus,
arcStorageType.

Changing these can be disruptive โœจ The effects can range from alarm notifications getting dropped all the way to a flood of unwanted alarm notifications coming from the network. And if reporting of an alarm gets suppressed or deferred, important diagnostic information might not arrive in time, including info that could help you spot an attack ๐Ÿ™ˆ

Some of the readable objects in this MIB module (the ones whose MAX-ACCESS is anything other than not-accessible) can also be sensitive or vulnerable in some environments ๐Ÿซฃ So it matters a lot to control even GET and/or NOTIFY access to them, and possibly even encrypt their values when they travel over the network via SNMP. Same objects as before:

arcTITimeInterval,
arcCDTimeInterval,
arcState,
arcNalmTimeRemaining,
arcRowStatus,
arcStorageType.

Reading these tells you about the setting that controls how alarm notifications get generated, so yes, they're worth guarding ๐Ÿ‘€

Here's the tea ๐Ÿต SNMP versions before SNMPv3 didn't include adequate security. 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 module. Not it ๐Ÿ’€

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

Also, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security ๐Ÿ›ก๏ธ After that, it's on the customer/operator to make sure that the SNMP entity giving access to an instance of this MIB module is configured so that only the principals (users) with legitimate rights can access the objects and actually GET or SET (change/create/delete) them. Locking the door is the main character move ๐Ÿ‘‘

7. Acknowledgements ๐Ÿซถ

The authors wish to thank Brian Teer and Sharon Chisholm for reviewing and commenting on this document. Shoutout to them, they're the real MVPs ๐ŸŒธ

8. References โœจ

8.1. Normative References

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

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

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

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

[RFC3877]     Chisholm, S. and D. Romascanu, "Alarm Management
              Information Base (MIB)", RFC 3877, September 2004.

[ITUALARMTC]  http://www.iana.org/assignments/ianaitualarmtc-mib

[M.3100]      ITU Recommendation M.3100, "Generic Network Information
              Model", July 1995.

[M.3100 Amd3] ITU Recommendation M.3100 Amendment 3, "Generic Network
              Information Model", January 2001.

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

9. Authors' Addresses ๐Ÿ“ฎ

Hing-Kam Lam
Lucent Technologies
101 Crawfords Corner Road, Room 4C-616
Holmdel, NJ 07733
USA

Phone:   +1 732-949-8338
EMail:   hklam@lucent.com


An-ni Huynh
Cetus Networks
USA

EMail: a_n_huynh@yahoo.com


David T. Perkins
548 Quailbrook Ct
San Jose, CA 95110
USA

Phone:   +1 408-394-8702
EMail:   dperkins@snmpinfo.com

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property ๐Ÿงพ

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights 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; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement ๐Ÿ’œ

Funding for the RFC Editor function is currently provided by the Internet Society. โœจ

๐Ÿ“ฆ where this page comes from