SNMPv2-MIB(7)

πŸ“¦
version 25.3.2.8 Β· 3 versions
, in debian bookworm, ubuntu jammy, ubuntu noble

πŸ¦‹ SNMPv2-MIB(7) πŸ¦‹

okay bestie, this is part 1 of 3 of the SNMPv2-MIB(7) page β€” the Erlang/OTP MIB module for SNMP entities. we're literally in the group chat with the IETF now, no cap. πŸ’…


πŸ’– NAME πŸ’–

SNMPv2-MIB β€” The Erlang/OTP MIB module for SNMP entities


✨ DESCRIPTION ✨

The module opens with SNMPv2-MIB DEFINITIONS ::= BEGIN, and the imports are doing the absolute most. Here's the exact opening, character for character:

       SNMPv2-MIB DEFINITIONS ::= BEGIN

       IMPORTS
           MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
           TimeTicks, Counter32, snmpModules, mib-2
               FROM SNMPv2-SMI
           DisplayString, TestAndIncr, TimeStamp

               FROM SNMPv2-TC
           MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
               FROM SNMPv2-CONF;

Then we get snmpMIB MODULE-IDENTITY, and it's giving official IETF SNMPv3 Working Group realness. It carries LAST-UPDATED "200210160000Z", the organization, the whole contact block, the description with the copyright line, and all three revisions. Here it is exactly:

       snmpMIB MODULE-IDENTITY
           LAST-UPDATED "200210160000Z"
           ORGANIZATION "IETF SNMPv3 Working Group"
           CONTACT-INFO
                   "WG-EMail:   snmpv3@lists.tislabs.com
                    Subscribe:  snmpv3-request@lists.tislabs.com

                    Co-Chair:   Russ Mundy
                                Network Associates Laboratories
                    postal:     15204 Omega Drive, Suite 300
                                Rockville, MD 20850-4601
                                USA
                    EMail:      mundy@tislabs.com
                    phone:      +1 301 947-7107

                    Co-Chair:   David Harrington
                                Enterasys Networks
                    postal:     35 Industrial Way
                                P. O. Box 5005
                                Rochester, NH 03866-5005
                                USA
                    EMail:      dbh@enterasys.com
                    phone:      +1 603 337-2614

                    Editor:     Randy Presuhn
                                BMC Software, Inc.
                    postal:     2141 North First Street
                                San Jose, CA 95131
                                USA
                    EMail:      randy_presuhn@bmc.com
                    phone:      +1 408 546-1006"
           DESCRIPTION
                   "The MIB module for SNMP entities.

                    Copyright (C) The Internet Society (2002). This
                    version of this MIB module is part of RFC 3418;
                    see the RFC itself for full legal notices.
                   "
           REVISION      "200210160000Z"
           DESCRIPTION
                   "This revision of this MIB module was published as
                    RFC 3418."
           REVISION      "199511090000Z"
           DESCRIPTION
                   "This revision of this MIB module was published as
                    RFC 1907."
           REVISION      "199304010000Z"
           DESCRIPTION
                   "The initial revision of this MIB module was published
                   as RFC 1450."
           ::= { snmpModules 1 }

After ::= { snmpModules 1 }, we get snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }, plus three commented-out obsolete OIDs. Not me pointing at obsolete things β€” they're literally labeled obsolete in the source:

       snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }

       --  ::= { snmpMIBObjects 1 }        this OID is obsolete
       --  ::= { snmpMIBObjects 2 }        this OID is obsolete
       --  ::= { snmpMIBObjects 3 }        this OID is obsolete
these OIDs are obsolete, bestie β€” respect the comments. πŸ’€

Next up is the System group β€” described as β€œa collection of objects common to all managed systems.” It starts at system OBJECT IDENTIFIER ::= { mib-2 1 }. Here's the exact block for all seven core system objects:

       -- the System group
       --
       -- a collection of objects common to all managed systems.

       system   OBJECT IDENTIFIER ::= { mib-2 1 }

       sysDescr OBJECT-TYPE
           SYNTAX      DisplayString (SIZE (0..255))
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "A textual description of the entity.  This value should
                   include the full name and version identification of
                   the system's hardware type, software operating-system,
                   and networking software."
           ::= { system 1 }

       sysObjectID OBJECT-TYPE
           SYNTAX      OBJECT IDENTIFIER
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The vendor's authoritative identification of the
                   network management subsystem contained in the entity.
                   This value is allocated within the SMI enterprises
                   subtree (1.3.6.1.4.1) and provides an easy and
                   unambiguous means for determining `what kind of box' is
                   being managed.  For example, if vendor `Flintstones,
                   Inc.' was assigned the subtree 1.3.6.1.4.1.424242,
                   it could assign the identifier 1.3.6.1.4.1.424242.1.1
                   to its `Fred Router'."
           ::= { system 2 }

       sysUpTime OBJECT-TYPE
           SYNTAX      TimeTicks
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time (in hundredths of a second) since the
                   network management portion of the system was last
                   re-initialized."
           ::= { system 3 }

       sysContact OBJECT-TYPE
           SYNTAX      DisplayString (SIZE (0..255))
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "The textual identification of the contact person for
                   this managed node, together with information on how
                   to contact this person.  If no contact information is
                   known, the value is the zero-length string."
           ::= { system 4 }

       sysName OBJECT-TYPE
           SYNTAX      DisplayString (SIZE (0..255))
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "An administratively-assigned name for this managed
                   node.  By convention, this is the node's fully-qualified
                   domain name.  If the name is unknown, the value is
                   the zero-length string."
           ::= { system 5 }

       sysLocation OBJECT-TYPE
           SYNTAX      DisplayString (SIZE (0..255))
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "The physical location of this node (e.g., 'telephone
                   closet, 3rd floor').  If the location is unknown, the
                   value is the zero-length string."
           ::= { system 6 }

       sysServices OBJECT-TYPE
           SYNTAX      INTEGER (0..127)
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "A value which indicates the set of services that this
                   entity may potentially offer.  The value is a sum.

                   This sum initially takes the value zero. Then, for
                   each layer, L, in the range 1 through 7, that this node
                   performs transactions for, 2 raised to (L - 1) is added
                   to the sum.  For example, a node which performs only
                   routing functions would have a value of 4 (2^(3-1)).
                   In contrast, a node which is a host offering application
                   services would have a value of 72 (2^(4-1) + 2^(7-1)).
                   Note that in the context of the Internet suite of
                   protocols, values should be calculated accordingly:

                        layer      functionality
                          1        physical (e.g., repeaters)
                          2        datalink/subnetwork (e.g., bridges)
                          3        internet (e.g., supports the IP)
                          4        end-to-end  (e.g., supports the TCP)
                          7        applications (e.g., supports the SMTP)

                   For systems including OSI protocols, layers 5 and 6
                   may also be counted."
           ::= { system 7 }

quick vibe check on those, bestie:

  • sysDescr β€” read-only DisplayString (SIZE (0..255)), status current. It's the textual description of the entity, and it should include the full name and version identification of the system's hardware type, software operating-system, and networking software. πŸ’–
  • sysObjectID β€” read-only OBJECT IDENTIFIER, status current. It's the vendor's authoritative identification of the network management subsystem contained in the entity. It's allocated within the SMI enterprises subtree 1.3.6.1.4.1, so it's an easy and unambiguous way to determine what kind of box is being managed. Example: vendor Flintstones, Inc. assigned subtree 1.3.6.1.4.1.424242 could assign 1.3.6.1.4.1.424242.1.1 to its Fred Router.
  • sysUpTime β€” read-only TimeTicks, status current. It's the time in hundredths of a second since the network management portion of the system was last re-initialized.
  • sysContact β€” read-write DisplayString (SIZE (0..255)), status current. Textual identification of the contact person for this managed node, plus info on how to contact them. If no contact information is known, the value is the zero-length string.
  • sysName β€” read-write DisplayString (SIZE (0..255)), status current. Administratively-assigned name for this managed node. By convention, it's the node's fully-qualified domain name. If the name is unknown, the value is the zero-length string.
  • sysLocation β€” read-write DisplayString (SIZE (0..255)), status current. Physical location of this node (e.g., telephone closet, 3rd floor). If the location is unknown, the value is the zero-length string.
  • sysServices β€” read-only INTEGER (0..127), status current. It indicates the set of services this entity may potentially offer, and the value is a sum. It starts at zero; for each layer L, in the range 1 through 7, that this node performs transactions for, 2 raised to (L - 1) is added to the sum. Example: a node that performs only routing functions would have 4 (2^(3-1)). A host offering application services would have 72 (2^(4-1) + 2^(7-1)). In the Internet suite of protocols, calculate accordingly: layer 1 physical (e.g., repeaters), layer 2 datalink/subnetwork (e.g., bridges), layer 3 internet (e.g., supports the IP), layer 4 end-to-end (e.g., supports the TCP), layer 7 applications (e.g., supports the SMTP). For systems including OSI protocols, layers 5 and 6 may also be counted.

Then comes the object resource information section β€” a collection of objects that describe the SNMP entity's (statically and dynamically configurable) support of various MIB modules. The first one is sysORLastChange, and then the whole sysORTable situation unfolds. Exact block:

       -- object resource information
       --
       -- a collection of objects which describe the SNMP entity's
       -- (statically and dynamically configurable) support of
       -- various MIB modules.

       sysORLastChange OBJECT-TYPE
           SYNTAX     TimeStamp
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "The value of sysUpTime at the time of the most recent
                   change in state or value of any instance of sysORID."
           ::= { system 8 }

       sysORTable OBJECT-TYPE
           SYNTAX     SEQUENCE OF SysOREntry
           MAX-ACCESS not-accessible
           STATUS     current
           DESCRIPTION
                   "The (conceptual) table listing the capabilities of
                   the local SNMP application acting as a command
                   responder with respect to various MIB modules.
                   SNMP entities having dynamically-configurable support
                   of MIB modules will have a dynamically-varying number
                   of conceptual rows."
           ::= { system 9 }

       sysOREntry OBJECT-TYPE
           SYNTAX     SysOREntry
           MAX-ACCESS not-accessible
           STATUS     current
           DESCRIPTION
                   "An entry (conceptual row) in the sysORTable."
           INDEX      { sysORIndex }
           ::= { sysORTable 1 }

       SysOREntry ::= SEQUENCE {
           sysORIndex     INTEGER,
           sysORID        OBJECT IDENTIFIER,
           sysORDescr     DisplayString,
           sysORUpTime    TimeStamp
       }

       sysORIndex OBJECT-TYPE
           SYNTAX     INTEGER (1..2147483647)
           MAX-ACCESS not-accessible
           STATUS     current
           DESCRIPTION
                   "The auxiliary variable used for identifying instances
                   of the columnar objects in the sysORTable."
           ::= { sysOREntry 1 }

       sysORID OBJECT-TYPE
           SYNTAX     OBJECT IDENTIFIER
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "An authoritative identification of a capabilities
                   statement with respect to various MIB modules supported
                   by the local SNMP application acting as a command
                   responder."
           ::= { sysOREntry 2 }

       sysORDescr OBJECT-TYPE
           SYNTAX     DisplayString
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "A textual description of the capabilities identified
                   by the corresponding instance of sysORID."
           ::= { sysOREntry 3 }

       sysORUpTime OBJECT-TYPE
           SYNTAX     TimeStamp
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "The value of sysUpTime at the time this conceptual
                   row was last instantiated."
           ::= { sysOREntry 4 }

breakdown, because we love a table moment:

  • sysORLastChange β€” read-only TimeStamp, status current. It's the value of sysUpTime at the time of the most recent change in state or value of any instance of sysORID.
  • sysORTable β€” SEQUENCE OF SysOREntry, MAX-ACCESS not-accessible, status current. It's the (conceptual) table listing the capabilities of the local SNMP application acting as a command responder with respect to various MIB modules. SNMP entities having dynamically-configurable support of MIB modules will have a dynamically-varying number of conceptual rows.
  • sysOREntry β€” SYNTAX SysOREntry, MAX-ACCESS not-accessible, status current. It's an entry (conceptual row) in the sysORTable. INDEX { sysORIndex }.
  • SysOREntry ::= SEQUENCE { ... } β€” exact sequence: sysORIndex INTEGER, sysORID OBJECT IDENTIFIER, sysORDescr DisplayString, sysORUpTime TimeStamp.
  • sysORIndex β€” INTEGER (1..2147483647), MAX-ACCESS not-accessible, status current. The auxiliary variable used for identifying instances of the columnar objects in the sysORTable.
  • sysORID β€” read-only OBJECT IDENTIFIER, status current. An authoritative identification of a capabilities statement with respect to various MIB modules supported by the local SNMP application acting as a command responder.
  • sysORDescr β€” read-only DisplayString, status current. A textual description of the capabilities identified by the corresponding instance of sysORID.
  • sysORUpTime β€” read-only TimeStamp, status current. The value of sysUpTime at the time this conceptual row was last instantiated.

Finally, part 1 hits the SNMP group β€” a collection of objects providing basic instrumentation and control of an SNMP entity. It starts at snmp OBJECT IDENTIFIER ::= { mib-2 11 }. Here's the exact block, and yes, snmpInBadVersions is at { snmp 3 }, not 2 β€” pay attention, bestie:

       -- the SNMP group
       --
       -- a collection of objects providing basic instrumentation and
       -- control of an SNMP entity.

       snmp     OBJECT IDENTIFIER ::= { mib-2 11 }

       snmpInPkts OBJECT-TYPE
           SYNTAX     Counter32
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "The total number of messages delivered to the SNMP
                   entity from the transport service."
           ::= { snmp 1 }

       snmpInBadVersions OBJECT-TYPE
           SYNTAX     Counter32
           MAX-ACCESS read-only
           STATUS     current
           DESCRIPTION
                   "The total number of SNMP messages which were delivered
                   to the SNMP entity and were for an unsupported SNMP
                   version."
           ::= { snmp 3 }
  • snmpInPkts β€” read-only Counter32, status current. It's the total number of messages delivered to the SNMP entity from the transport service.
  • snmpInBadVersions β€” read-only Counter32, status current. It's the total number of SNMP messages which were delivered to the SNMP entity and were for an unsupported SNMP version.

okay so now we get to the actual meat of this MIB β€” the scalars, the notification crew, the set-group lock, and honestly a whole lot of conformance paperwork πŸ’… every single object, every single OID, no skipping, we're eating this whole thing.

πŸŽ€ snmpInBadCommunityNames

SYNTAX     Counter32
MAX-ACCESS read-only
STATUS     current

This one counts the total number of community-based SNMP messages (think SNMPv1, bestie) that got delivered to the SNMP entity while using an SNMP community name that the entity straight-up did not know. Not recognized? Counter goes up. 🫢

Also β€” and this is the fun part β€” implementations that authenticate community-based SNMP messages using check(s) on top of just matching the community name (like, by also checking whether the message came from a transport address that's allowed to use a specified community name) MAY include in this value the number of messages that failed the additional check(s).

it is strongly RECOMMENDED that the documentation for any security model used to authenticate community-based SNMP messages spell out the precise conditions that contribute to this value. like, be specific, iykyk.

::= { snmp 4 }

πŸ¦‹ snmpInBadCommunityUses

SYNTAX     Counter32
MAX-ACCESS read-only
STATUS     current

The total number of community-based SNMP messages (SNMPv1, again) delivered to the SNMP entity that represented an SNMP operation which was not allowed for the SNMP community named in the message. so like, you had the community name, it just wasn't allowed to do that. rude. πŸ’€

The precise conditions under which this counter gets incremented (if at all) depend on how the SNMP entity implements its access control mechanism and how its applications interact with that access control mechanism. it's vibes-dependent, fr fr.

it is strongly RECOMMENDED that the documentation for any access control mechanism used to control access to and visibility of MIB instrumentation specify the precise conditions that contribute to this value.

::= { snmp 5 }

✨ snmpInASNParseErrs

SYNTAX     Counter32
MAX-ACCESS read-only
STATUS     current

The total number of ASN.1 or BER errors the SNMP entity ran into while decoding received SNMP messages. the parsing L, honestly. 😭

::= { snmp 6 }

πŸ‘‘ snmpEnableAuthenTraps

SYNTAX      INTEGER { enabled(1), disabled(2) }
MAX-ACCESS  read-write
STATUS      current

Tells you whether the SNMP entity is permitted to generate authenticationFailure traps. the value of this object overrides any configuration information β€” so it's a whole main-character override β€” which means it gives you a way to disable all the authenticationFailure traps at once. slay.

note that it is strongly recommended that this object be stored in non-volatile memory so it stays constant across re-initializations of the network management system. don't let it forget itself.

::= { snmp 30 }

🌸 snmpSilentDrops

SYNTAX     Counter32
MAX-ACCESS read-only
STATUS     current

The total number of Confirmed Class PDUs β€” like GetRequest-PDUs, GetNextRequest-PDUs, GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs β€” delivered to the SNMP entity that got silently dropped because the size of a reply containing an alternate Response Class PDU (like a Response-PDU) with an empty variable-bindings field was bigger than either a local constraint or the maximum message size associated with the originator of the request. too big, no reply, no explanation. the audacity. πŸ™ˆ

::= { snmp 31 }

🧚 snmpProxyDrops

SYNTAX     Counter32
MAX-ACCESS read-only
STATUS     current

The total number of Confirmed Class PDUs (such as GetRequest-PDUs, GetNextRequest-PDUs, GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs) delivered to the SNMP entity that got silently dropped because the transmission of the (possibly translated) message to a proxy target failed in a manner β€” other than a time-out β€” such that no Response Class PDU (such as a Response-PDU) could be returned. proxy said nope and ghosted. πŸ’€

::= { snmp 32 }


πŸ’– information for notifications

-- a collection of objects which allow the SNMP entity, when
-- supporting a notification originator application,
-- to be configured to generate SNMPv2-Trap-PDUs.
snmpTrap       OBJECT IDENTIFIER ::= { snmpMIBObjects 4 }

πŸŽ€ snmpTrapOID

SYNTAX     OBJECT IDENTIFIER
MAX-ACCESS accessible-for-notify
STATUS     current

The authoritative identification of the notification currently being sent. this variable shows up as the second varbind in every SNMPv2-Trap-PDU and InformRequest-PDU. second varbind, always, iconic behavior. πŸ‘‘

::= { snmpTrap 1 }

--  ::= { snmpTrap 2 }   this OID is obsolete

πŸ’œ snmpTrapEnterprise

SYNTAX     OBJECT IDENTIFIER
MAX-ACCESS accessible-for-notify
STATUS     current

The authoritative identification of the enterprise associated with the trap currently being sent. when an SNMP proxy agent is mapping an RFC1157 Trap-PDU into a SNMPv2-Trap-PDU, this variable shows up as the last varbind. last but never least. 🫢

::= { snmpTrap 3 }

--  ::= { snmpTrap 4 }   this OID is obsolete

πŸ”₯ well-known traps

snmpTraps      OBJECT IDENTIFIER ::= { snmpMIBObjects 5 }

⭐ coldStart

STATUS  current

A coldStart trap means the SNMP entity β€” the one supporting a notification originator application β€” is reinitializing itself, and its configuration may have been altered. fresh start, possibly new settings, no cap. 🌈

::= { snmpTraps 1 }

🌸 warmStart

STATUS  current

A warmStart trap means the SNMP entity supporting a notification originator application is reinitializing itself such that its configuration is unaltered. same vibe, same config, just a little reboot moment. ✨

::= { snmpTraps 2 }

heads up: the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 } and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 } are defined in RFC 2863 [RFC2863]. not our house, not our problem.

πŸ¦‹ authenticationFailure

STATUS  current

An authenticationFailure trap means the SNMP entity received a protocol message that is not properly authenticated. and yeah β€” while all implementations of SNMP entities MAY be capable of generating this trap, the snmpEnableAuthenTraps object is the one that says whether this trap will actually be generated. so it's a maybe on capability, and a definite yes/no on permission. πŸ’…

::= { snmpTraps 5 }

also note: the egpNeighborLoss notification is defined as { snmpTraps 6 } in RFC 1213. respectfully, not ours.

πŸ’… the set group

-- a collection of objects which allow several cooperating
-- command generator applications to coordinate their use of the
-- set operation.
snmpSet        OBJECT IDENTIFIER ::= { snmpMIBObjects 6 }

πŸŽ€ snmpSetSerialNo

SYNTAX     TestAndIncr
MAX-ACCESS read-write
STATUS     current

An advisory lock that lets several cooperating command generator applications coordinate their use of the SNMP set operation. it's the "one at a time, besties" object. 🫢

This object is for coarse-grain coordination. to get fine-grain coordination, one or more similar objects might be defined within each MIB group, as appropriate. so, like, zoom in if you need to.

::= { snmpSet 1 }


πŸ’œ conformance information

snmpMIBConformance
               OBJECT IDENTIFIER ::= { snmpMIB 2 }

snmpMIBCompliances
               OBJECT IDENTIFIER ::= { snmpMIBConformance 1 }
snmpMIBGroups  OBJECT IDENTIFIER ::= { snmpMIBConformance 2 }

πŸ”₯ compliance statements

--    ::= { snmpMIBCompliances 1 }      this OID is obsolete

πŸ’€ snmpBasicCompliance

STATUS  deprecated

The compliance statement for SNMPv2 entities that implement the SNMPv2 MIB. but β€” this compliance statement is replaced by snmpBasicComplianceRev2. so it's the deprecated older sibling. still valid to know about, not the one you should be using. 😭

MODULE  -- this module
    MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
                       snmpBasicNotificationsGroup }

    GROUP   snmpCommunityGroup
  • GROUP snmpCommunityGroup β€” DESCRIPTION: "This group is mandatory for SNMPv2 entities which support community-based authentication."

::= { snmpMIBCompliances 2 }

πŸ‘‘ snmpBasicComplianceRev2

STATUS  current

The compliance statement for SNMP entities that implement this MIB module. this is the current one, the upgrade, the glow-up. ✨

MODULE  -- this module
    MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
                       snmpBasicNotificationsGroup }

    GROUP   snmpCommunityGroup
  • GROUP snmpCommunityGroup β€” DESCRIPTION: "This group is mandatory for SNMP entities which support community-based authentication."
    GROUP   snmpWarmStartNotificationGroup
  • GROUP snmpWarmStartNotificationGroup β€” DESCRIPTION: "This group is mandatory for an SNMP entity which supports command responder applications, and is able to reinitialize itself such that its configuration is unaltered."

::= { snmpMIBCompliances 3 }


⭐ units of conformance

--  ::= { snmpMIBGroups 1 }           this OID is obsolete
--  ::= { snmpMIBGroups 2 }           this OID is obsolete
--  ::= { snmpMIBGroups 3 }           this OID is obsolete

--  ::= { snmpMIBGroups 4 }           this OID is obsolete

🌈 snmpGroup

STATUS  current

A collection of objects providing basic instrumentation and control of an SNMP entity. the core squad, fr fr. 🫢

OBJECTS { snmpInPkts,
          snmpInBadVersions,
          snmpInASNParseErrs,
          snmpSilentDrops,
          snmpProxyDrops,
          snmpEnableAuthenTraps }

::= { snmpMIBGroups 8 }

🫢 the OBJECT-GROUPs (aka the actual friend groups)

ok so these are literal groups of objects β€” think curated group chats where every member is an OID. Each one has its roster, a status, and a spot in the tree. Let's meet them πŸ’…

snmpCommunityGroup

  • OBJECTS β€” snmpInBadCommunityNames, snmpInBadCommunityUses
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 9 }

it's giving basic instrumentation for an SNMP entity that does community-based authentication. two little counters, one very specific job πŸŽ€

snmpSetGroup

  • OBJECTS β€” snmpSetSerialNo
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 5 }

this one is literally just for coordination β€” it lets a bunch of command generator applications cooperate on who gets to use the set operation. teamwork makes the dream work fr fr 🫢

systemGroup

  • OBJECTS β€” sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices, sysORLastChange, sysORID, sysORUpTime, sysORDescr
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 6 }

the main character group honestly ✨ these are the objects that are common to all managed systems, no exceptions, everyone has them.

snmpBasicNotificationsGroup

  • NOTIFICATIONS β€” coldStart, authenticationFailure
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 7 }

the basic notifications that an SNMP entity supporting command responder applications implements. just the two, but they carry 😭

snmpWarmStartNotificationGroup

  • NOTIFICATIONS β€” warmStart
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 11 }

an additional notification, and it's conditional bestie β€” it's for an SNMP entity supporting command responder applications if it's able to reinitialize itself in a way that leaves its configuration unaltered. if it can't, this isn't your group πŸ’€

snmpNotificationGroup

  • OBJECTS β€” snmpTrapOID, snmpTrapEnterprise
  • STATUS β€” current
  • ::= β€” { snmpMIBGroups 12 }

these two objects are required for entities that support notification originator applications. required. non-negotiable. periodt πŸ”₯


πŸ’€ the obsolete era (RFC 1213 leftovers)

straight from the source, queen: -- definitions in RFC 1213 made obsolete by the inclusion of a subset of the snmp group in this MIB

so this whole next chunk is the vintage collection β€” every one of these is Counter32, read-only, and obsolete. they're still documented, they're just not the moment anymore. let's give them their flowers anyway 🌸

  • snmpOutPkts β€” ::= { snmp 2 } β€” the total number of SNMP messages that got passed from the SNMP protocol entity over to the transport service. off they go πŸ’Œ
  • { snmp 7 } β€” not used. that's it, that's the whole note. -- { snmp 7 } is not used πŸ™ˆ
  • snmpInTooBigs β€” ::= { snmp 8 } β€” total SNMP PDUs delivered to the SNMP protocol entity where the error-status field was tooBig.
  • snmpInNoSuchNames β€” ::= { snmp 9 } β€” same deal, but the error-status field was noSuchName.
  • snmpInBadValues β€” ::= { snmp 10 } β€” and again, error-status field was badValue.
  • snmpInReadOnlys β€” ::= { snmp 11 } β€” total number of valid SNMP PDUs delivered to the SNMP protocol entity where the error-status field was readOnly. and listen β€” it's a protocol error to generate an SNMP PDU that puts readOnly in the error-status field, so this object exists purely as a lil detector for incorrect SNMP implementations πŸ‘€
  • snmpInGenErrs β€” ::= { snmp 12 } β€” error-status field was genErr, you know the drill.
  • snmpInTotalReqVars β€” ::= { snmp 13 } β€” total MIB objects successfully retrieved by the SNMP protocol entity thanks to receiving valid SNMP Get-Request and Get-Next PDUs. productive icon πŸ’…
  • snmpInTotalSetVars β€” ::= { snmp 14 } β€” total MIB objects successfully altered by the SNMP protocol entity as a result of receiving valid SNMP Set-Request PDUs.
  • snmpInGetRequests β€” ::= { snmp 15 } β€” total SNMP Get-Request PDUs accepted and processed by the SNMP protocol entity.
  • snmpInGetNexts β€” ::= { snmp 16 } β€” total SNMP Get-Next PDUs accepted and processed by the SNMP protocol entity.
  • snmpInSetRequests β€” ::= { snmp 17 } β€” total SNMP Set-Request PDUs accepted and processed by the SNMP protocol entity.
  • snmpInGetResponses β€” ::= { snmp 18 } β€” total SNMP Get-Response PDUs accepted and processed by the SNMP protocol entity.
  • snmpInTraps β€” ::= { snmp 19 } β€” total SNMP Trap PDUs accepted and processed by the SNMP protocol entity.
  • snmpOutTooBigs β€” ::= { snmp 20 } β€” total SNMP PDUs generated by the SNMP protocol entity where the error-status field was tooBig. (note we flipped from in to out β€” this is the outgoing side πŸ¦‹)
  • snmpOutNoSuchNames β€” ::= { snmp 21 } β€” generated by the entity, error-status was noSuchName.
  • snmpOutBadValues β€” ::= { snmp 22 } β€” generated by the entity, error-status field was badValue.
  • { snmp 23 } β€” not used either!! -- { snmp 23 } is not used 😭
  • snmpOutGenErrs β€” ::= { snmp 24 } β€” generated by the entity, error-status field was genErr.
  • snmpOutGetRequests β€” ::= { snmp 25 } β€” total SNMP Get-Request PDUs generated by the SNMP protocol entity.
  • snmpOutGetNexts β€” ::= { snmp 26 } β€” total SNMP Get-Next PDUs generated by the SNMP protocol entity.
  • snmpOutSetRequests β€” ::= { snmp 27 } β€” total SNMP Set-Request PDUs generated by the SNMP protocol entity.
  • snmpOutGetResponses β€” ::= { snmp 28 } β€” total SNMP Get-Response PDUs generated by the SNMP protocol entity.
  • snmpOutTraps β€” ::= { snmp 29 } β€” total SNMP Trap PDUs generated by the SNMP protocol entity.

snmpObsoleteGroup

  • OBJECTS β€” snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, snmpInTotalReqVars, snmpInTotalSetVars, snmpInGetRequests, snmpInGetNexts, snmpInSetRequests, snmpInGetResponses, snmpInTraps, snmpOutTooBigs, snmpOutNoSuchNames, snmpOutBadValues, snmpOutGenErrs, snmpOutGetRequests, snmpOutGetNexts, snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps
  • STATUS β€” obsolete
  • ::= β€” { snmpMIBGroups 10 }

the reunion tour group πŸ’€ a collection of objects from RFC 1213 that this MIB module made obsolete. twenty-two members, zero current status, all vibes.

END

and that's the module, bestie β€” it literally ends with END 😌 that's not me being cute, that's the syntax.


and that's a wrap on SNMPv2-MIB(7)! this whole thing ships with Erlang/OTP's SNMP, filed under the section 7 man pages. go forth and poll responsibly πŸ§šβ€β™€οΈπŸ’–