RFC 1907

Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2)

πŸ“… published January 1996, from ietf

RFC 1907 ✨ Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2)

Okay bestie, the header is giving official paperwork πŸ“‹ but here's the tea. It's from the Network Working Group, specifically the SNMPv2 Working Group. The authors are J. Case (SNMP Research, Inc.), K. McCloghrie (Cisco Systems, Inc.), M. Rose (Dover Beach Consulting, Inc.), and S. Waldbusser (International Network Services). It's dated January 1996, it's a Standards Track doc, and it obsoletes RFC 1450 πŸ¦‹. The header doesn't list any RFCs it updates.


Status of this Memo πŸ“œ

So this document is an Internet standards track protocol for the whole Internet community, and it's basically inviting everyone to chat about it and suggest improvements 🫢. If you want to know where this protocol actually stands, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ’œ. Distribution of this memo is unlimited, so share away 🌸.

Table of Contents πŸ“–

1. Introduction ................................................    2
1.1 A Note on Terminology ......................................    2
2. Definitions .................................................    2
2.1 The System Group ...........................................    3
2.2 The SNMP Group .............................................    7
2.4 Information for Notifications ..............................    9
2.4.1 Well-known Traps .........................................   10
2.5 The Set Group ..............................................   11
2.6 Conformance Information ....................................   11
2.6.1 Compliance Statements ....................................   11
2.6.2 Units of Conformance .....................................   12
2.6.3 Obsolete Definitions .....................................   13
3. Security Considerations .....................................   18
4. Editor's Address ............................................   19
5. Acknowledgements ............................................   19
6. References ..................................................   20

1. Introduction ✨

Okay so picture a whole squad πŸ’… A management system has several (potentially many) nodes, and each one has a processing entity called an agent, which can get at its management instrumentation. There's also at least one management station, plus a management protocol that carries management information back and forth between the agents and the stations. Everything the protocol does happens under an administrative framework, and that framework is the one that spells out authentication, authorization, access control, and privacy policies πŸ”.

Management stations run management applications that watch over and control managed elements πŸ‘€. Managed elements are things like hosts, routers, terminal servers, and so on, and they get monitored and controlled through their management information.

All that management information gets treated like a collection of managed objects living in a virtual information store called the Management Information Base (MIB) πŸ—‚οΈ. Related objects get grouped into MIB modules. The modules are written in a subset of OSI's Abstract Syntax Notation One (ASN.1) [1], and that subset is called the Structure of Management Information (SMI) [2] 🧠.

The management protocol itself, SNMPv2 [3], handles the exchange of messages that carry management information between agents and management stations πŸ“¨. This document's whole purpose is to define the managed objects that describe how an SNMPv2 entity behaves πŸŽ€.

1.1. A Note on Terminology πŸ€“

Just so we're all on the same page: the original Internet-standard Network Management Framework, as described in RFCs 1155 (STD 16), 1157 (STD 15), and 1212 (STD 16), gets called the SNMP version 1 framework (SNMPv1) πŸ•°οΈ. The current framework is called the SNMP version 2 framework (SNMPv2) ✨.

2. Definitions πŸ’–

Here's the actual MIB module, the juicy part πŸ“

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;

snmpMIB MODULE-IDENTITY
    LAST-UPDATED "9511090000Z"
    ORGANIZATION "IETF SNMPv2 Working Group"
    CONTACT-INFO
            "        Marshall T. Rose

             Postal: Dover Beach Consulting, Inc.
                     420 Whisman Court
                     Mountain View, CA  94043-2186
                     US

                Tel: +1 415 968 1052

             E-mail: mrose@dbc.mtview.ca.us"
    DESCRIPTION
            "The MIB module for SNMPv2 entities."
    REVISION      "9304010000Z"
    DESCRIPTION
            "The initial revision of this MIB module was published as
            RFC 1450."
    ::= { snmpModules 1 }


snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }

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

2.1. The System Group πŸ–₯️

Now the System group, which is basically a bundle of objects that every managed system has in common πŸ’…

-- 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.4242, it could assign the identifier
            1.3.6.1.4.1.4242.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 offers.  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 }


-- object resource information
--
-- a collection of objects which describe the SNMPv2 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 SNMPv2 entity acting in an agent role with respect to
            various MIB modules.  SNMPv2 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
            SNMPv2 entity acting in an agent role."

    ::= { 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 instanciated."
    ::= { sysOREntry 4 }

2.2. The SNMP Group πŸ“‘

And last but not least for this part, the SNMP group, which is a collection of objects that gives basic instrumentation and control of an SNMP entity πŸŽ€

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

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

okay bestie, we're picking up right where the SNMP group left off πŸ’– so the first thing on the list is the counter for how many messages showed up at the SNMP entity πŸ“¬βœ¨

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 }

next up is the counter for messages with an unsupported SNMP version πŸ¦‹ these are the ones that get delivered, but the version isn't one the entity supports

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 }

then we've got the community name counter πŸ”‘ it tracks messages that used a community name the entity doesn't know πŸ’…

snmpInBadCommunityNames OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of SNMP messages delivered to the SNMP
            entity which used a SNMP community name not known to said
            entity."
    ::= { snmp 4 }

and this one is the sibling counter for operations the community named in the message isn't allowed to do πŸ‘€

snmpInBadCommunityUses OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of SNMP messages delivered to the SNMP
            entity which represented an SNMP operation which was not
            allowed by the SNMP community named in the message."
    ::= { snmp 5 }

snmpInASNParseErrs counts the ASN.1 or BER errors the entity runs into while decoding incoming messages 🧩 very much a "the bytes didn't make sense" moment 😭

snmpInASNParseErrs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of ASN.1 or BER errors encountered by the
            SNMP entity when decoding received SNMP messages."
    ::= { snmp 6 }

okay now this one is a whole vibe πŸ” snmpEnableAuthenTraps is an INTEGER that says whether the entity is allowed to generate authenticationFailure traps. the value here overrides any configuration info, so it's basically the on/off switch for all of those traps πŸ’œ

snmpEnableAuthenTraps OBJECT-TYPE
    SYNTAX      INTEGER { enabled(1), disabled(2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Indicates whether the SNMP entity is permitted to generate
            authenticationFailure traps.  The value of this object
            overrides any configuration information; as such, it
            provides a means whereby all authenticationFailure traps may
            be disabled.

            Note that it is strongly recommended that this object be
            stored in non-volatile memory so that it remains constant
            across re-initializations of the network management system."
    ::= { snmp 30 }

bestie pls read that last paragraph again 🚨 the spec says it's strongly recommended that this object be stored in non-volatile memory, so it sticks around across re-initializations of the network management system. no cap, that's the kind of detail that makes or breaks your setup πŸ’€

next are the two "silent drop" counters 🀫 they both count requests that got dropped without a reply. snmpSilentDrops is for when the reply would be too big for a local constraint or for the maximum message size of the originator

snmpSilentDrops OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION

            "The total number of GetRequest-PDUs, GetNextRequest-PDUs,
            GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs
            delivered to the SNMP entity which were silently dropped
            because the size of a reply containing an alternate
            Response-PDU with an empty variable-bindings field was
            greater than either a local constraint or the maximum
            message size associated with the originator of the request."
    ::= { snmp 31 }

and snmpProxyDrops is the one for proxy trouble πŸ” the request got dropped because sending the (maybe translated) message to a proxy target failed, and the failure wasn't a time-out, so no Response-PDU could come back 🌿

snmpProxyDrops OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of GetRequest-PDUs, GetNextRequest-PDUs,
            GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs
            delivered to the SNMP entity which were 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-PDU could be returned."
    ::= { snmp 32 }

ohh we're entering the notifications era πŸŒˆπŸ””

this next bit is the info for notifications πŸ’Œ it's a collection of objects that let the SNMPv2 entity be set up to send SNMPv2-Trap-PDUs when it's acting in an agent role πŸŽ€

-- information for notifications
--
-- a collection of objects which allow the SNMPv2 entity, when
-- acting in an agent role, to be configured to generate
-- SNMPv2-Trap-PDUs.

snmpTrap       OBJECT IDENTIFIER ::= { snmpMIBObjects 4 }

snmpTrapOID is the authoritative ID of the notification being sent right now πŸͺͺ it shows up as the second varbind in every SNMPv2-Trap-PDU and InformRequest-PDU

snmpTrapOID OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS accessible-for-notify
    STATUS     current
    DESCRIPTION
            "The authoritative identification of the notification
            currently being sent.  This variable occurs as the second
            varbind in every SNMPv2-Trap-PDU and InformRequest-PDU."
    ::= { snmpTrap 1 }

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

snmpTrapEnterprise is the authoritative ID of the enterprise linked to the trap being sent 🏒 and when a SNMPv2 proxy agent maps an RFC1157 Trap-PDU into a SNMPv2-Trap-PDU, it shows up as the last varbind πŸ§ƒ

snmpTrapEnterprise OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS accessible-for-notify
    STATUS     current
    DESCRIPTION
            "The authoritative identification of the enterprise
            associated with the trap currently being sent.  When a
            SNMPv2 proxy agent is mapping an RFC1157 Trap-PDU into a
            SNMPv2-Trap-PDU, this variable occurs as the last varbind."
    ::= { snmpTrap 3 }

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

now the well-known traps πŸ† these are the notifications everybody knows about

-- well-known traps

snmpTraps      OBJECT IDENTIFIER ::= { snmpMIBObjects 5 }

coldStart NOTIFICATION-TYPE
    STATUS  current
    DESCRIPTION
            "A coldStart trap signifies that the SNMPv2 entity, acting
            in an agent role, is reinitializing itself and that its
            configuration may have been altered."
    ::= { snmpTraps 1 }

warmStart NOTIFICATION-TYPE
    STATUS  current
    DESCRIPTION
            "A warmStart trap signifies that the SNMPv2 entity, acting
            in an agent role, is reinitializing itself such that its
            configuration is unaltered."
    ::= { snmpTraps 2 }

-- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 }
-- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 }
-- are defined in RFC 1573

coldStart is the "I'm restarting and my config might have changed" trap πŸ₯Ά warmStart is the "I'm restarting but my config is exactly the same" trap β˜€οΈ

authenticationFailure is the one that says the SNMPv2 entity got a protocol message that wasn't properly authenticated 🚫 every SNMPv2 implementation must be able to generate it, but snmpEnableAuthenTraps decides whether it actually gets sent πŸ”

authenticationFailure NOTIFICATION-TYPE
    STATUS  current
    DESCRIPTION
            "An authenticationFailure trap signifies that the SNMPv2
            entity, acting in an agent role, has received a protocol
            message that is not properly authenticated.  While all
            implementations of the SNMPv2 must be capable of generating
            this trap, the snmpEnableAuthenTraps object indicates
            whether this trap will be generated."
    ::= { snmpTraps 5 }

-- Note the egpNeighborLoss NOTIFICATION-TYPE ::= { snmpTraps 6 }
-- is defined in RFC 1213

next up is the set group πŸ§‘β€πŸ€β€πŸ§‘ it's for a bunch of cooperating SNMPv2 entities, all acting in a manager role, to coordinate their use of the SNMPv2 set operation. basically they're team-playing πŸ’ͺ

-- the set group
--
-- a collection of objects which allow several cooperating
-- SNMPv2 entities, all acting in a manager role, to
-- coordinate their use of the SNMPv2 set operation.

snmpSet        OBJECT IDENTIFIER ::= { snmpMIBObjects 6 }


snmpSetSerialNo OBJECT-TYPE
    SYNTAX     TestAndIncr
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "An advisory lock used to allow several cooperating SNMPv2
            entities, all acting in a manager role, to coordinate their
            use of the SNMPv2 set operation.

            This object is used for coarse-grain coordination.  To
            achieve fine-grain coordination, one or more similar objects
            might be defined within each MIB group, as appropriate."
    ::= { snmpSet 1 }

snmpSetSerialNo is an advisory lock πŸ”’ it's the coarse-grain coordination tool, and if you want fine-grain coordination, you could define one or more similar objects within each MIB group, as appropriate 🧠


now we get into the conformance information πŸ“‹ this is the part where the spec says what an implementation has to have to count as compliant πŸ’œ

-- 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 MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for SNMPv2 entities which
            implement the SNMPv2 MIB."
    MODULE  -- this module
        MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
                           snmpBasicNotificationsGroup }

        GROUP   snmpCommunityGroup
        DESCRIPTION
            "This group is mandatory for SNMPv2 entities which
            support community-based authentication."

    ::= { snmpMIBCompliances 2 }

so snmpBasicCompliance is the compliance statement for entities that implement the SNMPv2 MIB 🧾 the mandatory groups are snmpGroup, snmpSetGroup, systemGroup, and snmpBasicNotificationsGroup, and snmpCommunityGroup is mandatory only for entities that do community-based authentication πŸ”‘

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

now the units of conformance, aka the groups 🧩 first up is snmpGroup, which is a collection of objects that give basic instrumentation and control of an SNMPv2 entity πŸ› οΈ

snmpGroup OBJECT-GROUP
    OBJECTS { snmpInPkts,
              snmpInBadVersions,
              snmpInASNParseErrs,
              snmpSilentDrops,
              snmpProxyDrops,
              snmpEnableAuthenTraps }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation and
            control of an SNMPv2 entity."
    ::= { snmpMIBGroups 8 }

snmpCommunityGroup is the community-based one πŸ—οΈ it's for entities that support community-based authentication, and it gives basic instrumentation of that bit

snmpCommunityGroup OBJECT-GROUP
    OBJECTS { snmpInBadCommunityNames,
              snmpInBadCommunityUses }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation of
            a SNMPv2 entity which supports community-based
            authentication."
    ::= { snmpMIBGroups 9 }

snmpSetGroup holds snmpSetSerialNo, and it's the group that lets the cooperating manager entities coordinate their use of the set operation 🀝

snmpSetGroup OBJECT-GROUP
    OBJECTS { snmpSetSerialNo }
    STATUS  current
    DESCRIPTION
            "A collection of objects which allow several cooperating
            SNMPv2 entities, all acting in a manager role, to coordinate
            their use of the SNMPv2 set operation."
    ::= { snmpMIBGroups 5 }

systemGroup is the one with objects that are common to all managed systems πŸ–₯️ it's giving "everyone gets these" energy

systemGroup OBJECT-GROUP
    OBJECTS { sysDescr, sysObjectID, sysUpTime,

              sysContact, sysName, sysLocation,
              sysServices,
              sysORLastChange, sysORID,
              sysORUpTime, sysORDescr }
    STATUS  current
    DESCRIPTION
            "The system group defines objects which are common to all
            managed systems."
    ::= { snmpMIBGroups 6 }

and snmpBasicNotificationsGroup is the two notifications an SNMPv2 entity is required to implement πŸ”” that's coldStart and authenticationFailure πŸ’–

snmpBasicNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS { coldStart, authenticationFailure }
    STATUS        current
    DESCRIPTION
            "The two notifications which an SNMPv2 entity is required to
            implement."
    ::= { snmpMIBGroups 7 }

last stretch bestie, we're in the obsolete zone πŸŒˆπŸ•°οΈ

these next definitions come from RFC 1213 and got made obsolete once a subset of the snmp group was put into this MIB πŸ“œ snmpOutPkts is first, the count of SNMP messages passed from the SNMP protocol entity to the transport service

-- definitions in RFC 1213 made obsolete by the inclusion of a
-- subset of the snmp group in this MIB

snmpOutPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Messages which were
            passed from the SNMP protocol entity to the
            transport service."
    ::= { snmp 2 }

-- { snmp 7 } is not used

snmpInTooBigs, snmpInNoSuchNames, snmpInBadValues, snmpInReadOnlys and snmpInGenErrs are all obsolete too 🧹 each one counts SNMP PDUs delivered to the SNMP protocol entity with a particular error-status value. snmpInReadOnlys comes with a little extra note, so read it closely πŸ‘€

snmpInTooBigs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            delivered to the SNMP protocol entity and for
            which the value of the error-status field is
            `tooBig'."
    ::= { snmp 8 }

snmpInNoSuchNames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            delivered to the SNMP protocol entity and for
            which the value of the error-status field is
            `noSuchName'."
    ::= { snmp 9 }

snmpInBadValues OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            delivered to the SNMP protocol entity and for
            which the value of the error-status field is
            `badValue'."
    ::= { snmp 10 }

snmpInReadOnlys OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number valid SNMP PDUs which were
            delivered to the SNMP protocol entity and for
            which the value of the error-status field is
            `readOnly'.  It should be noted that it is a
            protocol error to generate an SNMP PDU which
            contains the value `readOnly' in the error-status
            field, as such this object is provided as a means
            of detecting incorrect implementations of the
            SNMP."
    ::= { snmp 11 }

snmpInGenErrs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            delivered to the SNMP protocol entity and for
            which the value of the error-status field is
            `genErr'."
    ::= { snmp 12 }

okay that's the end of this chunk, and the rest is coming up in part 3 🧚✨

snmpInTotalReqVars OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of MIB objects which have been
            retrieved successfully by the SNMP protocol entity
            as the result of receiving valid SNMP Get-Request
            and Get-Next PDUs."
    ::= { snmp 13 }

snmpInTotalSetVars OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of MIB objects which have been
            altered successfully by the SNMP protocol entity
            as the result of receiving valid SNMP Set-Request
            PDUs."
    ::= { snmp 14 }

snmpInGetRequests OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Request PDUs which
            have been accepted and processed by the SNMP
            protocol entity."
    ::= { snmp 15 }

snmpInGetNexts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Next PDUs which have
            been accepted and processed by the SNMP protocol
            entity."
    ::= { snmp 16 }

snmpInSetRequests OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Set-Request PDUs which
            have been accepted and processed by the SNMP
            protocol entity."

    ::= { snmp 17 }

snmpInGetResponses OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Response PDUs which
            have been accepted and processed by the SNMP
            protocol entity."
    ::= { snmp 18 }

snmpInTraps OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Trap PDUs which have
            been accepted and processed by the SNMP protocol
            entity."
    ::= { snmp 19 }

snmpOutTooBigs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            generated by the SNMP protocol entity and for
            which the value of the error-status field is
            `tooBig.'"
    ::= { snmp 20 }

snmpOutNoSuchNames OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            generated by the SNMP protocol entity and for
            which the value of the error-status is
            `noSuchName'."
    ::= { snmp 21 }

snmpOutBadValues OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            generated by the SNMP protocol entity and for
            which the value of the error-status field is
            `badValue'."
    ::= { snmp 22 }


-- { snmp 23 } is not used

snmpOutGenErrs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP PDUs which were
            generated by the SNMP protocol entity and for
            which the value of the error-status field is
            `genErr'."
    ::= { snmp 24 }

snmpOutGetRequests OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Request PDUs which
            have been generated by the SNMP protocol entity."
    ::= { snmp 25 }

snmpOutGetNexts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Next PDUs which have
            been generated by the SNMP protocol entity."
    ::= { snmp 26 }

snmpOutSetRequests OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Set-Request PDUs which
            have been generated by the SNMP protocol entity."
    ::= { snmp 27 }

snmpOutGetResponses OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Get-Response PDUs which
            have been generated by the SNMP protocol entity."
    ::= { snmp 28 }

snmpOutTraps OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
            "The total number of SNMP Trap PDUs which have
            been generated by the SNMP protocol entity."
    ::= { snmp 29 }

snmpObsoleteGroup OBJECT-GROUP
    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
    DESCRIPTION
            "A collection of objects from RFC 1213 made obsolete by this
            MIB."
    ::= { snmpMIBGroups 10 }

END

3. Security Considerations πŸ™ˆ

Security issues are not discussed in this memo. Not one word, bestie. πŸ’€

4. Editor's Address πŸ’…

Here's where you can reach the editor, Keith McCloghrie, at Cisco Systems:

   Keith McCloghrie
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA  95134-1706
   US

   Phone: +1 408 526 5260
   EMail: kzm@cisco.com

5. Acknowledgements 🫢

This doc is literally the glow-up of some serious work by four major contributors: ✨

   Jeffrey D. Case (SNMP Research, case@snmp.com)
   Keith McCloghrie (Cisco Systems, kzm@cisco.com)
   Marshall T. Rose (Dover Beach Consulting, mrose@dbc.mtview.ca.us)
   Steven Waldbusser (International Network Services, stevew@uni.ins.com)

Beyond that, the contributions of the SNMPv2 Working Group get a big shoutout too πŸ“£. A special thanks goes to these legends πŸ‘‘:

     Alexander I. Alten (Novell)
     Dave Arneson (Cabletron)
     Uri Blumenthal (IBM)
     Doug Book (Chipcom)
     Kim Curran (Bell-Northern Research)
     Jim Galvin (Trusted Information Systems)
     Maria Greene (Ascom Timeplex)
     Iain Hanson (Digital)
     Dave Harrington (Cabletron)
     Nguyen Hien (IBM)
     Jeff Johnson (Cisco Systems)
     Michael Kornegay (Object Quest)
     Deirdre Kostick (AT&T Bell Labs)
     David Levi (SNMP Research)
     Daniel Mahoney (Cabletron)
     Bob Natale (ACE*COMM)
     Brian O'Keefe (Hewlett Packard)
     Andrew Pearson (SNMP Research)
     Dave Perkins (Peer Networks)
     Randy Presuhn (Peer Networks)
     Aleksey Romanov (Quality Quorum)
     Shawn Routhier (Epilogue)
     Jon Saperia (BGS Systems)
     Bob Stewart (Cisco Systems, bstewart@cisco.com), chair
     Kaj Tesink (Bellcore)
     Glenn Waters (Bell-Northern Research)
     Bert Wijnen (IBM)

6. References πŸ“š

[1] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization. International Standard 8824, (December, 1987).

[2] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Structure of Management Information for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1902, January 1996.

[3] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996.

[4] J.D. Case, C. Partridge, Case Diagrams: A First Step to Diagramed Management Information Bases. Computer Communications Review, Volume 19, Number 1, (January, 1989). πŸ¦‹

πŸ“¦ where this page comes from