RFC 8096

The IPv6-Specific MIB Modules Are Obsolete

πŸ“… published April 2017, from ietf

RFC 8096: The IPv6-Specific MIB Modules Are Obsolete πŸ¦‹

Okay bestie, this is RFC 8096, and its title is The IPv6-Specific MIB Modules Are Obsolete πŸ’… It was written by B. Fenner from Arista Networks, Inc., and it's dated April 2017. It's Informational (ISSN 2070-1721), and it obsoletes RFCs 2452, 2454, 2465, and 2466 ✨

Abstract πŸ’–

Back in 2005-2006, the IPv6 MIB update group put out new versions of the IP-MIB, UDP-MIB, TCP-MIB, and IP-FORWARD-MIB modules. These use the InetAddressType/InetAddress construct so IPv4 and IPv6 can share the same table, and it's giving iconic 🌈 This document includes versions of the obsoleted IPV6-MIB, IPV6-TC, IPV6-ICMP-MIB, IPV6-TCP-MIB, and IPV6-UDP-MIB modules, so MIB module repositories can get updated 🧚 It obsoletes RFCs 2452, 2454, 2465, and 2466 (meaning the RFCs that contain these MIBs) and reclassifies them as Historic πŸŽ€

Status of This Memo 🌸

This document isn't an Internet Standards Track specification. It's published for informational purposes only ✨

It's a product of the Internet Engineering Task Force (IETF), and it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). Not every document the IESG approves is a candidate for any level of Internet Standard, so check out Section 2 of RFC 7841 for the details πŸ™ˆ

For info on the current status of this document, any errata, and how to send feedback, head to http://www.rfc-editor.org/info/rfc8096 πŸ¦‹

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved πŸ’œ

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info), as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document. Code Components pulled out of this document have to include the Simplified BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes 🫢

This document might include material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The people controlling the copyright in some of that material might not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. Without an adequate license from those copyright holders, this document can't be modified outside the IETF Standards Process, and derivative works of it can't be created outside that process either. The one exceptions are formatting it for publication as an RFC and translating it into languages other than English 🌈

Table of Contents πŸ“š

   1. Motivation ......................................................3
   2. Historic IPV6-TC ................................................4
   3. Historic IPV6-MIB ...............................................6
   4. Historic IPV6-ICMP-MIB .........................................40
   5. Historic IPV6-UDP-MIB ..........................................54
   6. Historic IPV6-TCP-MIB ..........................................58
   7. Reclassification ...............................................63
   8. Security Considerations ........................................63
   9. IANA Considerations ............................................63
   10. References ....................................................64
      10.1. Normative References .....................................64
      10.2. Informative References ...................................64
   Author's Address ..................................................65

1. Motivation πŸŽ€

Okay so, back in 2005-2006, the IPv6 MIB update group published updated versions of the IP-MIB [RFC4293], UDP-MIB [RFC4113], TCP-MIB [RFC4022], and IP-FORWARD-MIB [RFC4292] modules. They use the InetAddressType/InetAddress construct to handle IPv4 and IPv6 in the same table πŸ’… The RFC Editor marked these documents as obsoleting the matching IPV6-MIBs. But the extracted content of those MIBs never changed in MIB repositories, and the original RFCs never moved off Proposed Standard, which is normal IETF policy πŸ™„

Here's the timeline for these MIB modules (and honestly, the added IPv6 support in the later revision of the original modules is the part people always overlook πŸ‘€):

                          IPv6-MIB--------X
                                           \
                 IP-MIB-------------------IP-MIB--->

This creates an unclear situation whenever you just look at MIB repositories, so we're republishing these MIB modules with the Structure of Management Information (SMI) status changed to obsolete. This is an unusual move, and it's not the intended path for every obsolete MIB module. The special history of these modules is what led to this special step ✨

2. Historic IPV6-TC πŸ¦‹

Here's the module, verbatim, bestie πŸ’–

IPV6-TC DEFINITIONS ::= BEGIN

-- Copyright (c) 2017 IETF Trust and the persons identified as
-- authors of the code.  All rights reserved.

--   Redistribution and use in source and binary forms, with or without
--   modification, is permitted pursuant to, and subject to the license
--   terms contained in, the Simplified BSD License set forth in Section
--   4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
--   (http://trustee.ietf.org/license-info).

IMPORTS
     Integer32                FROM SNMPv2-SMI
     TEXTUAL-CONVENTION       FROM SNMPv2-TC;

-- definition of textual conventions
Ipv6Address ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 addresses.
        This is a binary string of 16 octets in network
        byte-order.

        This object is obsoleted by INET-ADDRESS-MIB::InetAddress."
     SYNTAX       OCTET STRING (SIZE (16))

Ipv6AddressPrefix ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 address
       prefixes.  This is a binary string of up to 16
       octets in network byte-order.
       This object is obsoleted by INET-ADDRESS-MIB::InetAddress."
     SYNTAX       OCTET STRING (SIZE (0..16))

Ipv6AddressIfIdentifier ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 address
       interface identifiers.  This is a binary string
        of up to 8 octets in network byte-order.

       This object is obsoleted by IP-MIB::Ipv6AddressIfIdentifierTC."

     SYNTAX      OCTET STRING (SIZE (0..8))

Ipv6IfIndex ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "d"
     STATUS       obsolete
     DESCRIPTION
       "A unique value, greater than zero for each
       internetwork-layer interface in the managed
       system.  It is recommended that values are assigned
       contiguously starting from 1.  The value for each
       internetwork-layer interface must remain constant
       at least from one re-initialization of the entity's
       network management system to the next
       re-initialization.

       This object is obsoleted by IF-MIB::InterfaceIndex."
     SYNTAX       Integer32 (1..2147483647)

Ipv6IfIndexOrZero ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "d"
     STATUS       obsolete
     DESCRIPTION
         "This textual convention is an extension of the
         Ipv6IfIndex convention.  The latter defines
         a greater than zero value used to identify an IPv6
         interface in the managed system.  This extension
         permits the additional value of zero.  The value
         zero is object-specific and must therefore be
         defined as part of the description of any object
         which uses this syntax.  Examples of the usage of
         zero might include situations where interface was
         unknown, or when none or all interfaces need to be
         referenced.

         This object is obsoleted by IF-MIB::InterfaceIndexOrZero."
     SYNTAX       Integer32 (0..2147483647)

END

3. Historic IPV6-MIB ✨

okay bestie, this is the big one πŸŽ€ it's the obsolete IPv6 MIB module, so it's giving retired legend πŸ‘‘ but it's still in the spec so we can see every single object. the module's own DESCRIPTION says to use IP-MIB or IP-FORWARD-MIB instead πŸ’…

 IPV6-MIB DEFINITIONS ::= BEGIN

 IMPORTS
     MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
     mib-2, Counter32, Unsigned32, Integer32,
     Gauge32                               FROM SNMPv2-SMI
     DisplayString, PhysAddress, TruthValue, TimeStamp,
     VariablePointer, RowPointer           FROM SNMPv2-TC
     MODULE-COMPLIANCE, OBJECT-GROUP,
     NOTIFICATION-GROUP                    FROM SNMPv2-CONF
     Ipv6IfIndex, Ipv6Address, Ipv6AddressPrefix,
     Ipv6AddressIfIdentifier,
     Ipv6IfIndexOrZero                     FROM IPV6-TC;

 ipv6MIB MODULE-IDENTITY
     LAST-UPDATED "201702220000Z"
     ORGANIZATION "IETF IPv6 Working Group"
     CONTACT-INFO
       "           Dimitry Haskin

           Postal: Bay Networks, Inc.
                   660 Technology Park Drive.
                   Billerica, MA  01821

                   US

              Tel: +1-978-916-8124
           E-mail: dhaskin@baynetworks.com

                   Steve Onishi

           Postal: Bay Networks, Inc.
                   3 Federal Street
                   Billerica, MA 01821
                   US

              Tel: +1-978-916-3816
           E-mail: sonishi@baynetworks.com"
     DESCRIPTION
       "The obsolete MIB module for entities implementing the IPv6
        protocol.  Use the IP-MIB or IP-FORWARD-MIB instead.

        Copyright (c) 2017 IETF Trust and the persons identified
        as authors of the code. All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject
        to the license terms contained in, the Simplified BSD License
        set forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (http://trustee.ietf.org/license-info)."
     REVISION "201702220000Z"
     DESCRIPTION
       "Obsoleting this MIB module; it has been replaced by
       the revised IP-MIB (RFC 4293) and IP-FORWARD-MIB
       (RFC 4292)."
     REVISION "9802052155Z"
     DESCRIPTION
       "First revision, published as RFC 2465"
     ::= { mib-2 55 }

 -- the IPv6 general group

 ipv6MIBObjects OBJECT IDENTIFIER   ::= { ipv6MIB 1 }

 ipv6Forwarding OBJECT-TYPE
     SYNTAX      INTEGER {
                  forwarding(1),    -- acting as a router

                                    -- NOT acting as
                  notForwarding(2)  -- a router
                 }
      MAX-ACCESS read-write
      STATUS     obsolete
      DESCRIPTION
        "The indication of whether this entity is acting
        as an IPv6 router in respect to the forwarding of
        datagrams received by, but not addressed to, this
        entity.  IPv6 routers forward datagrams.  IPv6
        hosts do not (except those source-routed via the
        host).

        Note that for some managed nodes, this object may
        take on only a subset of the values possible.
        Accordingly, it is appropriate for an agent to
        return a `wrongValue' response if a management
        station attempts to change this object to an
        inappropriate value.

        This object is obsoleted by IP-MIB::ipv6IpForwarding."
      ::= { ipv6MIBObjects 1 }

 ipv6DefaultHopLimit OBJECT-TYPE
     SYNTAX      INTEGER(0..255)
     MAX-ACCESS  read-write
      STATUS     obsolete
     DESCRIPTION
        "The default value inserted into the Hop Limit
        field of the IPv6 header of datagrams originated
        at this entity, whenever a Hop Limit value is not
        supplied by the transport layer protocol.

        This object is obsoleted by IP-MIB::ipv6IpDefaultHopLimit."
     DEFVAL  { 64 }
     ::= { ipv6MIBObjects 2 }

ipv6Interfaces OBJECT-TYPE
     SYNTAX      Unsigned32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The number of IPv6 interfaces (regardless of
        their current state) present on this system.

        This object is obsolete; there is no direct replacement,
        but its value can be derived from the number of rows
        in the IP-MIB::ipv6InterfaceTable."
     ::= { ipv6MIBObjects 3 }

ipv6IfTableLastChange OBJECT-TYPE
     SYNTAX      TimeStamp
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The value of sysUpTime at the time of the last
       insertion or removal of an entry in the
       ipv6IfTable.  If the number of entries has been
       unchanged since the last re-initialization of
       the local network management subsystem, then this
       object contains a zero value.

       This object is obsoleted by
       IP-MIB::ipv6InterfaceTableLastChange."
     ::= { ipv6MIBObjects 4 }

-- the IPv6 Interfaces table

ipv6IfTable OBJECT-TYPE
     SYNTAX     SEQUENCE OF Ipv6IfEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
       "The IPv6 Interfaces table contains information
       on the entity's internetwork-layer interfaces.
       An IPv6 interface constitutes a logical network
       layer attachment to the layer immediately below

       IPv6 including internet layer 'tunnels', such as
       tunnels over IPv4 or IPv6 itself.

       This table is obsoleted by IP-MIB::ipv6InterfaceTable."
     ::= { ipv6MIBObjects 5 }

 ipv6IfEntry OBJECT-TYPE
     SYNTAX     Ipv6IfEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
       "An interface entry containing objects
        about a particular IPv6 interface.

        This object is obsoleted by IP-MIB::ipv6InterfaceEntry."
     INDEX   { ipv6IfIndex }
     ::= { ipv6IfTable 1 }

 Ipv6IfEntry ::= SEQUENCE {
         ipv6IfIndex              Ipv6IfIndex,
         ipv6IfDescr              DisplayString,
         ipv6IfLowerLayer         VariablePointer,
         ipv6IfEffectiveMtu       Unsigned32,
         ipv6IfReasmMaxSize       Unsigned32,
         ipv6IfIdentifier         Ipv6AddressIfIdentifier,
         ipv6IfIdentifierLength   INTEGER,
         ipv6IfPhysicalAddress    PhysAddress,
         ipv6IfAdminStatus        INTEGER,
         ipv6IfOperStatus         INTEGER,
         ipv6IfLastChange         TimeStamp
     }

 ipv6IfIndex OBJECT-TYPE
     SYNTAX     Ipv6IfIndex
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
       "A unique non-zero value identifying
        the particular IPv6 interface.

        This object is obsoleted.  In the IP-MIB,
        interfaces are simply identified by IfIndex."
     ::= { ipv6IfEntry 1 }

 ipv6IfDescr OBJECT-TYPE
     SYNTAX     DisplayString
     MAX-ACCESS read-write
     STATUS     obsolete
     DESCRIPTION
       "A textual string containing information about the
       interface.  This string may be set by the network
       management system.

       This object is obsoleted by IF-MIB::ifDescr."
     ::= { ipv6IfEntry 2 }

 ipv6IfLowerLayer OBJECT-TYPE
    SYNTAX      VariablePointer
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
      "This object identifies the protocol layer over
       which this network interface operates.  If this
       network interface operates over the data-link
       layer, then the value of this object refers to an
       instance of ifIndex [RFC1573].  If this network interface
       operates over an IPv4 interface, the value of this
       object refers to an instance of ipAdEntAddr [RFC1213].

       If this network interface operates over another
       IPv6 interface, the value of this object refers to
       an instance of ipv6IfIndex.  If this network
       interface is not currently operating over an active
       protocol layer, then the value of this object
       should be set to the OBJECT ID { 0 0 }.

       This object is obsolete.  The IF-STACK-TABLE may
       be used to express relationships between interfaces."
    ::= { ipv6IfEntry 3 }

 ipv6IfEffectiveMtu OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
      "The size of the largest IPv6 packet which can be
      sent/received on the interface, specified in
      octets.

      This object is obsolete.  The value of IF-MIB::ifMtu
      for the corresponding value of ifIndex represents the
      MTU of the interface."
 ::= { ipv6IfEntry 4 }

 ipv6IfReasmMaxSize OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
      "The size of the largest IPv6 datagram which this
      entity can re-assemble from incoming IPv6 fragmented
      datagrams received on this interface.

      This object is obsoleted by IP-MIB::ipv6InterfaceReasmMaxSize."
 ::= { ipv6IfEntry 5 }

 ipv6IfIdentifier OBJECT-TYPE
     SYNTAX      Ipv6AddressIfIdentifier
     MAX-ACCESS  read-write
     STATUS      obsolete
     DESCRIPTION
        "The Interface Identifier for this interface that
        is (at least) unique on the link this interface is
        attached to.  The Interface Identifier is combined
        with an address prefix to form an interface address.

        By default, the Interface Identifier is autoconfigured
        according to the rules of the link type this
        interface is attached to.

        This object is obsoleted by IP-MIB::ipv6InterfaceIdentifier."
     ::= { ipv6IfEntry 6 }

 ipv6IfIdentifierLength OBJECT-TYPE
     SYNTAX      INTEGER (0..64)
     UNITS       "bits"
     MAX-ACCESS  read-write
     STATUS      obsolete
     DESCRIPTION
       "The length of the Interface Identifier in bits.

       This object is obsolete.  It can be derived from the length
       of IP-MIB::ipv6InterfaceIdentifier; Interface Identifiers
       that are not an even number of octets are not supported."
     ::= { ipv6IfEntry 7 }

 ipv6IfPhysicalAddress OBJECT-TYPE
     SYNTAX      PhysAddress
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The interface's physical address.  For example, for
       an IPv6 interface attached to an 802.x link, this
       object normally contains a MAC address.  Note that
       in some cases this address may differ from the
       address of the interface's protocol sub-layer.  The
       interface's media-specific MIB must define the bit
       and byte ordering and the format of the value of
       this object.  For interfaces which do not have such
       an address (e.g., a serial line), this object should
       contain an octet string of zero length.

       This object is obsoleted by IF-MIB::ifPhysAddress."
     ::= { ipv6IfEntry 8 }

ipv6IfAdminStatus OBJECT-TYPE
    SYNTAX  INTEGER {
             up(1),       -- ready to pass packets
             down(2)
            }
    MAX-ACCESS  read-write
    STATUS      obsolete
    DESCRIPTION
      "The desired state of the interface.  When a managed
      system initializes, all IPv6 interfaces start with
      ipv6IfAdminStatus in the down(2) state.  As a result
      of either explicit management action or per
      configuration information retained by the managed
      system, ipv6IfAdminStatus is then changed to
      the up(1) state (or remains in the down(2) state).

      This object is obsolete.  IPv6 does not have a
      separate admin status; the admin status of the
      interface is represented by IF-MIB::ifAdminStatus."
    ::= { ipv6IfEntry 9 }
ooh the ipv6IfIdentifierLength one is a bit of a diva πŸ™ˆ it says interface identifiers that aren't an even number of octets just aren't supported, so keep that in mind when you're reading the MIB πŸ’œ

that's the whole vibe for this bit πŸ¦‹ more of the MIB is coming, so stay tuned, bestie ✨

ipv6IfOperStatus OBJECT-TYPE
    SYNTAX  INTEGER {
             up(1),             -- ready to pass packets

             down(2),
             noIfIdentifier(3), -- no interface identifier

                                -- status can not be
                                -- determined for some
             unknown(4),        -- reason

                                -- some component is
             notPresent(5)      -- missing
            }
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
      "The current operational state of the interface.
      The noIfIdentifier(3) state indicates that no valid
      Interface Identifier is assigned to the interface.
      This state usually indicates that the link-local
      interface address failed Duplicate Address Detection.
      If ipv6IfAdminStatus is down(2) then ipv6IfOperStatus
      should be down(2).  If ipv6IfAdminStatus is changed
      to up(1) then ipv6IfOperStatus should change to up(1)
      if the interface is ready to transmit and receive
      network traffic; it should remain in the down(2) or
      noIfIdentifier(3) state if and only if there is a
      fault that prevents it from going to the up(1) state;
      it should remain in the notPresent(5) state if
      the interface has missing (typically, lower layer)
      components.

      This object is obsolete.  IPv6 does not have a
      separate operational status; the operational status of the
      interface is represented by IF-MIB::ifOperStatus."
    ::= { ipv6IfEntry 10 }

ipv6IfLastChange OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
        "The value of sysUpTime at the time the interface
        entered its current operational state.  If the
        current state was entered prior to the last
        re-initialization of the local network management
        subsystem, then this object contains a zero
        value.

        This object is obsolete.  The last change of
        IF-MIB::ifOperStatus is represented by IF-MIB::ifLastChange."
    ::= { ipv6IfEntry 11 }

 --  IPv6 Interface Statistics table
 ipv6IfStatsTable OBJECT-TYPE
     SYNTAX     SEQUENCE OF Ipv6IfStatsEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
         "IPv6 interface traffic statistics.

         This table is obsoleted by the IP-MIB::ipIfStatsTable."
     ::= { ipv6MIBObjects 6 }

 ipv6IfStatsEntry OBJECT-TYPE
     SYNTAX     Ipv6IfStatsEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
         "An interface statistics entry containing objects
         at a particular IPv6 interface.

         This object is obsoleted by the IP-MIB::ipIfStatsEntry."
     AUGMENTS { ipv6IfEntry }
     ::= { ipv6IfStatsTable 1 }

 Ipv6IfStatsEntry ::= SEQUENCE {
         ipv6IfStatsInReceives
             Counter32,
         ipv6IfStatsInHdrErrors
             Counter32,
         ipv6IfStatsInTooBigErrors
             Counter32,
         ipv6IfStatsInNoRoutes
             Counter32,
         ipv6IfStatsInAddrErrors
             Counter32,
         ipv6IfStatsInUnknownProtos
             Counter32,
         ipv6IfStatsInTruncatedPkts
             Counter32,
         ipv6IfStatsInDiscards
             Counter32,
         ipv6IfStatsInDelivers
             Counter32,
         ipv6IfStatsOutForwDatagrams
             Counter32,
         ipv6IfStatsOutRequests
             Counter32,
         ipv6IfStatsOutDiscards
             Counter32,
         ipv6IfStatsOutFragOKs

             Counter32,
         ipv6IfStatsOutFragFails
             Counter32,
         ipv6IfStatsOutFragCreates
             Counter32,
         ipv6IfStatsReasmReqds
             Counter32,
         ipv6IfStatsReasmOKs
             Counter32,
         ipv6IfStatsReasmFails
             Counter32,
         ipv6IfStatsInMcastPkts
             Counter32,
         ipv6IfStatsOutMcastPkts
             Counter32
     }

 ipv6IfStatsInReceives OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The total number of input datagrams received by
        the interface, including those received in error.

        This object is obsoleted by IP-MIB::ipIfStatsHCInReceives."
     ::= { ipv6IfStatsEntry 1 }

 ipv6IfStatsInHdrErrors OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
     STATUS     obsolete
     DESCRIPTION
        "The number of input datagrams discarded due to
        errors in their IPv6 headers, including version
        number mismatch, other format errors, hop count
        exceeded, errors discovered in processing their
        IPv6 options, etc.

        This object is obsoleted by IP-MIB::ipIfStatsInHdrErrors."
     ::= { ipv6IfStatsEntry 2 }

 ipv6IfStatsInTooBigErrors OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The number of input datagrams that could not be
       forwarded because their size exceeded the link MTU
       of outgoing interface.

       This object is obsoleted.  It was not replicated in the
       IP-MIB due to feedback that systems did not retain the
       incoming interface of a packet that failed fragmentation."
     ::= { ipv6IfStatsEntry 3 }

 ipv6IfStatsInNoRoutes OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of input datagrams discarded because no
         route could be found to transmit them to their
         destination.

         This object is obsoleted by IP-MIB::ipIfStatsInNoRoutes."
     ::= { ipv6IfStatsEntry 4 }

 ipv6IfStatsInAddrErrors OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of input datagrams discarded because
        the IPv6 address in their IPv6 header's destination
        field was not a valid address to be received at
        this entity.  This count includes invalid
        addresses (e.g., ::0) and unsupported addresses
        (e.g., addresses with unallocated prefixes).  For
        entities which are not IPv6 routers and therefore
        do not forward datagrams, this counter includes
        datagrams discarded because the destination address
        was not a local address.

        This object is obsoleted by IP-MIB::ipIfStatsInAddrErrors."
     ::= { ipv6IfStatsEntry 5 }

 ipv6IfStatsInUnknownProtos OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of locally-addressed datagrams
        received successfully but discarded because of an
        unknown or unsupported protocol.  This counter is
        incremented at the interface to which these
        datagrams were addressed which might not be
        necessarily the input interface for some of
        the datagrams.

        This object is obsoleted by IP-MIB::ipIfStatsInUnknownProtos."
     ::= { ipv6IfStatsEntry 6 }

 ipv6IfStatsInTruncatedPkts OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of input datagrams discarded because
         datagram frame didn't carry enough data.

         This object is obsoleted by IP-MIB::ipIfStatsInTruncatedPkts."
     ::= { ipv6IfStatsEntry 7 }

 ipv6IfStatsInDiscards OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of input IPv6 datagrams for which no
        problems were encountered to prevent their
        continued processing, but which were discarded
        (e.g., for lack of buffer space).  Note that this
        counter does not include any datagrams discarded
        while awaiting re-assembly.

        This object is obsoleted by IP-MIB::ipIfStatsInDiscards."
     ::= { ipv6IfStatsEntry 8 }

 ipv6IfStatsInDelivers OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
      "The total number of datagrams successfully
      delivered to IPv6 user-protocols (including ICMP).
      This counter is incremented at the interface to
      which these datagrams were addressed which might
      not be necessarily the input interface for some of
      the datagrams.

      This object is obsoleted by IP-MIB::ipIfStatsHCInDelivers."
     ::= { ipv6IfStatsEntry 9 }

 ipv6IfStatsOutForwDatagrams OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of output datagrams which this
        entity received and forwarded to their final
        destinations.  In entities which do not act
        as IPv6 routers, this counter will include
        only those packets which were Source-Routed
        via this entity, and the Source-Route
        processing was successful.  Note that for
        a successfully forwarded datagram the counter
        of the outgoing interface is incremented.

        This object is obsoleted by
        IP-MIB::ipIfStatsHCOutForwDatagrams."
     ::= { ipv6IfStatsEntry 10 }

 ipv6IfStatsOutRequests OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
      "The total number of IPv6 datagrams which local IPv6
      user-protocols (including ICMP) supplied to IPv6 in
      requests for transmission.  Note that this counter
      does not include any datagrams counted in
      ipv6IfStatsOutForwDatagrams.

      This object is obsoleted by IP-MIB::ipIfStatsHCOutRequests."
     ::= { ipv6IfStatsEntry 11 }

 ipv6IfStatsOutDiscards OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
         "The number of output IPv6 datagrams for which no
         problem was encountered to prevent their
         transmission to their destination, but which were
         discarded (e.g., for lack of buffer space).  Note
         that this counter would include datagrams counted
         in ipv6IfStatsOutForwDatagrams if any such packets
         met this (discretionary) discard criterion.

         This object is obsoleted by IP-MIB::ipIfStatsOutDiscards."
     ::= { ipv6IfStatsEntry 12 }

 ipv6IfStatsOutFragOKs OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of IPv6 datagrams that have been
         successfully fragmented at this output interface.

         This object is obsoleted by IP-MIB::ipIfStatsOutFragOKs."
     ::= { ipv6IfStatsEntry 13 }

 ipv6IfStatsOutFragFails OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of IPv6 datagrams that have been
         discarded because they needed to be fragmented
         at this output interface but could not be.

         This object is obsoleted by IP-MIB::ipIfStatsOutFragFails."
     ::= { ipv6IfStatsEntry 14 }

 ipv6IfStatsOutFragCreates OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of output datagram fragments that have
         been generated as a result of fragmentation at
         this output interface.

         This object is obsoleted by IP-MIB::ipIfStatsOutFragCreates."
     ::= { ipv6IfStatsEntry 15 }

 ipv6IfStatsReasmReqds OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of IPv6 fragments received which needed
         to be reassembled at this interface.  Note that this
         counter is incremented at the interface to which
         these fragments were addressed which might not
         be necessarily the input interface for some of
         the fragments.

         This object is obsoleted by IP-MIB::ipIfStatsReasmReqds."

     ::= { ipv6IfStatsEntry 16 }

okay bestie, the status stuff is giving "this is obsolete, go look at IF-MIB" πŸ’… ipv6IfOperStatus says IPv6 doesn't have its own operational status anymore, so the real answer lives in IF-MIB::ifOperStatus πŸ¦‹

and the stats table is a whole vibe too 🧚 every counter says "obsoleted by IP-MIB::..." so it's basically a pointer to the newer table πŸŽ€

the key drama is that ipv6IfStatsInTooBigErrors wasn't copied over to IP-MIB at all, because systems didn't keep the incoming interface of a packet that failed fragmentation 😭🫢

Okay bestie, the IPv6 stats counters are next, and they're giving retired-but-still-iconic energy πŸ₯Ήβœ¨ Every one of these is marked obsolete, and IP-MIB has taken over their jobs πŸ’…

 ipv6IfStatsReasmOKs OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The number of IPv6 datagrams successfully
       reassembled.  Note that this counter is incremented
       at the interface to which these datagrams were
       addressed which might not be necessarily the input
       interface for some of the fragments.

       This object is obsoleted by IP-MIB::ipIfStatsReasmOKs."
     ::= { ipv6IfStatsEntry 17 }

 ipv6IfStatsReasmFails OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of failures detected by the IPv6 re-
        assembly algorithm (for whatever reason: timed
        out, errors, etc.).  Note that this is not
        necessarily a count of discarded IPv6 fragments
        since some algorithms (notably the algorithm in
        RFC 815) can lose track of the number of fragments
        by combining them as they are received.
        This counter is incremented at the interface to which
        these fragments were addressed which might not be
        necessarily the input interface for some of the
        fragments.

        This object is obsoleted by IP-MIB::ipIfStatsReasmFails."
     ::= { ipv6IfStatsEntry 18 }

 ipv6IfStatsInMcastPkts OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS     obsolete
     DESCRIPTION
        "The number of multicast packets received
         by the interface

         This object is obsoleted by IP-MIB::ipIfStatsHCInMcastPkts."
     ::= { ipv6IfStatsEntry 19 }

 ipv6IfStatsOutMcastPkts OBJECT-TYPE

     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "The number of multicast packets transmitted
         by the interface

         This object is obsoleted by IP-MIB::ipIfStatsHCOutMcastPkts."
     ::= { ipv6IfStatsEntry 20 }

Next up is the Address Prefix table, which is basically the list of every prefix hanging out on each IPv6 interface 🌸 Its replacement is IP-MIB::ipAddressPrefixTable, so the vibes are officially passing down the line πŸ¦‹

 -- Address Prefix table

 -- The IPv6 Address Prefix table contains information on
 -- the entity's IPv6 Address Prefixes that are associated
 -- with IPv6 interfaces.

 ipv6AddrPrefixTable OBJECT-TYPE
     SYNTAX  SEQUENCE OF Ipv6AddrPrefixEntry
     MAX-ACCESS  not-accessible
     STATUS      obsolete
     DESCRIPTION
         "The list of IPv6 address prefixes of
         IPv6 interfaces.

         This table is obsoleted by IP-MIB::ipAddressPrefixTable."
     ::= { ipv6MIBObjects 7 }

 ipv6AddrPrefixEntry OBJECT-TYPE
     SYNTAX  Ipv6AddrPrefixEntry
     MAX-ACCESS  not-accessible
     STATUS      obsolete
     DESCRIPTION
         "An interface entry containing objects of
         a particular IPv6 address prefix.

         This entry is obsoleted by IP-MIB::ipAddressPrefixEntry."
     INDEX   { ipv6IfIndex,
               ipv6AddrPrefix,
               ipv6AddrPrefixLength }
     ::= { ipv6AddrPrefixTable 1 }

 Ipv6AddrPrefixEntry ::= SEQUENCE {
      ipv6AddrPrefix                     Ipv6AddressPrefix,
      ipv6AddrPrefixLength               INTEGER,
      ipv6AddrPrefixOnLinkFlag           TruthValue,
      ipv6AddrPrefixAutonomousFlag       TruthValue,
      ipv6AddrPrefixAdvPreferredLifetime Unsigned32,
      ipv6AddrPrefixAdvValidLifetime     Unsigned32

     }

 ipv6AddrPrefix OBJECT-TYPE
     SYNTAX      Ipv6AddressPrefix
     MAX-ACCESS  not-accessible
     STATUS      obsolete
     DESCRIPTION
       "The prefix associated with the this interface.

       This object is obsoleted by IP-MIB::ipAddressPrefixPrefix."
     ::= { ipv6AddrPrefixEntry 1 }

 ipv6AddrPrefixLength OBJECT-TYPE
     SYNTAX      INTEGER (0..128)
     UNITS       "bits"
     MAX-ACCESS  not-accessible
     STATUS      obsolete
     DESCRIPTION
       "The length of the prefix (in bits).

       This object is obsoleted by IP-MIB::ipAddressPrefixLength."
     ::= { ipv6AddrPrefixEntry 2 }

 ipv6AddrPrefixOnLinkFlag OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "This object has the value 'true(1)', if this
       prefix can be used for on-link determination
       and the value 'false(2)' otherwise.

       This object is obsoleted by IP-MIB::ipAddressPrefixOnLinkFlag."
     ::= { ipv6AddrPrefixEntry 3 }

 ipv6AddrPrefixAutonomousFlag OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "Autonomous address configuration flag.  When
       true(1), indicates that this prefix can be used
       for autonomous address configuration (i.e. can
       be used to form a local interface address).
       If false(2), it is not used to autoconfigure
       a local interface address.

       This object is obsoleted by
       IP-MIB::ipAddressPrefixAutonomousFlag."
     ::= { ipv6AddrPrefixEntry 4 }

 ipv6AddrPrefixAdvPreferredLifetime OBJECT-TYPE
     SYNTAX      Unsigned32
     UNITS       "seconds"
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
        "It is the length of time in seconds that this
        prefix will remain preferred, i.e. time until
        deprecation.  A value of 4,294,967,295 represents
        infinity.

        The address generated from a deprecated prefix
        should no longer be used as a source address in
        new communications, but packets received on such
        an interface are processed as expected.

        This object is obsoleted by
        IP-MIB::ipAddressPrefixAdvPreferredLifetime."
     ::= { ipv6AddrPrefixEntry 5 }

 ipv6AddrPrefixAdvValidLifetime OBJECT-TYPE
     SYNTAX      Unsigned32
     UNITS       "seconds"
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "It is the length of time in seconds that this
       prefix will remain valid, i.e. time until
       invalidation.  A value of 4,294,967,295 represents
       infinity.

       The address generated from an invalidated prefix
       should not appear as the destination or source
       address of a packet.

       This object is obsoleted by
       IP-MIB::ipAddressPrefixAdvValidLifetime."
     ::= { ipv6AddrPrefixEntry 6 }

Now we're in the IPv6 Address table, which holds this node's own addressing info, and the lifetimes and statuses on it are a whole mood 🫢 Everything here points at IP-MIB::ipAddressTable and friends, so the new table is the main character now πŸ‘‘

 -- the IPv6 Address table

 -- The IPv6 address table contains this node's IPv6
 -- addressing information.

 ipv6AddrTable OBJECT-TYPE

    SYNTAX      SEQUENCE OF Ipv6AddrEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
      "The table of addressing information relevant to
      this node's interface addresses.

      This table is obsoleted by IP-MIB::ipAddressTable."
    ::= { ipv6MIBObjects 8 }

 ipv6AddrEntry OBJECT-TYPE
    SYNTAX      Ipv6AddrEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
        "The addressing information for one of this
        node's interface addresses.

        This entry is obsoleted by IP-MIB::ipAddressEntry."
    INDEX   { ipv6IfIndex, ipv6AddrAddress }
    ::= { ipv6AddrTable 1 }

 Ipv6AddrEntry ::=
    SEQUENCE {
         ipv6AddrAddress        Ipv6Address,
         ipv6AddrPfxLength      INTEGER,
         ipv6AddrType           INTEGER,
         ipv6AddrAnycastFlag    TruthValue,
         ipv6AddrStatus         INTEGER
        }

 ipv6AddrAddress OBJECT-TYPE
    SYNTAX      Ipv6Address
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
      "The IPv6 address to which this entry's addressing
      information pertains.

      This object is obsoleted by IP-MIB::ipAddressAddr."
    ::= { ipv6AddrEntry 1 }

 ipv6AddrPfxLength OBJECT-TYPE
    SYNTAX      INTEGER(0..128)
    UNITS       "bits"
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION

      "The length of the prefix (in bits) associated with
      the IPv6 address of this entry.

      This object is obsoleted by the IP-MIB::ipAddressPrefixLength
      in the row of the IP-MIB::ipAddressPrefixTable to which the
      IP-MIB::ipAddressPrefix points."
    ::= { ipv6AddrEntry 2 }

 ipv6AddrType OBJECT-TYPE
    SYNTAX      INTEGER {
                        -- address has been formed
                        -- using stateless
         stateless(1),  -- autoconfiguration

                        -- address has been acquired
                        -- by stateful means
                        -- (e.g. DHCPv6, manual
         stateful(2),   -- configuration)

                        -- type can not be determined
         unknown(3)     -- for some reason.
       }
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
       "The type of address.  Note that 'stateless(1)'
       refers to an address that was statelessly
       autoconfigured; 'stateful(2)' refers to a address
       which was acquired by via a stateful protocol
       (e.g. DHCPv6, manual configuration).

       This object is obsoleted by IP-MIB::ipAddressOrigin."
    ::= { ipv6AddrEntry 3 }

 ipv6AddrAnycastFlag OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "This object has the value 'true(1)', if this
       address is an anycast address and the value
       'false(2)' otherwise.

       This object is obsoleted by a value of 'anycast(2)'
       in IP-MIB::ipAddressType."
     ::= { ipv6AddrEntry 4 }

 ipv6AddrStatus OBJECT-TYPE

    SYNTAX      INTEGER {
             preferred(1),
             deprecated(2),
             invalid(3),
             inaccessible(4),
             unknown(5)   -- status can not be determined
                          -- for some reason.
            }
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
      "Address status.  The preferred(1) state indicates
      that this is a valid address that can appear as
      the destination or source address of a packet.
      The deprecated(2) state indicates that this is
      a valid but deprecated address that should no longer
      be used as a source address in new communications,
      but packets addressed to such an address are
      processed as expected.  The invalid(3) state indicates
      that this is not valid address which should not
      appear as the destination or source address of
      a packet.  The inaccessible(4) state indicates that
      the address is not accessible because the interface
      to which this address is assigned is not operational.

      This object is obsoleted by IP-MIB::ipAddressStatus."
    ::= { ipv6AddrEntry 5 }

Last stop for this part: the IPv6 routing objects 🧚 The route count and discard counter are obsolete too, and the routing table is moving over to IP-FORWARD-MIB, which is giving "new house, same drama" 🏑

 -- IPv6 Routing objects

 ipv6RouteNumber OBJECT-TYPE
     SYNTAX      Gauge32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The number of current ipv6RouteTable entries.
       This is primarily to avoid having to read
       the table in order to determine this number.

       This object is obsoleted by IP-FORWARD-MIB::inetCidrRouteNumber."
     ::= { ipv6MIBObjects 9 }

 ipv6DiscardedRoutes OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      obsolete
     DESCRIPTION
       "The number of routing entries which were chosen

        to be discarded even though they are valid.  One
        possible reason for discarding such an entry could
        be to free-up buffer space for other routing
        entries.

        This object is obsoleted by
        IP-FORWARD-MIB::inetCidrRouteDiscards."
     ::= { ipv6MIBObjects 10 }

 -- IPv6 Routing table

 ipv6RouteTable OBJECT-TYPE
     SYNTAX     SEQUENCE OF Ipv6RouteEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
       "IPv6 Routing table.  This table contains
       an entry for each valid IPv6 unicast route
       that can be used for packet forwarding
       determination.

       This table is obsoleted by IP-FORWARD-MIB::inetCidrRouteTable."
     ::= { ipv6MIBObjects 11 }

 ipv6RouteEntry OBJECT-TYPE
     SYNTAX     Ipv6RouteEntry
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
             "A routing entry.

This entry is obsoleted by ...

This ipv6NetToMedia stuff is getting retired πŸ’€ Every field now points at an IP-MIB replacement, so here's the rest of the neighbour table πŸ¦‹

       This object is obsoleted by IP-MIB::ipNetToPhysicalPhysAddress."
     ::= { ipv6NetToMediaEntry 2 }

ipv6NetToMediaType OBJECT-TYPE 🌸

 ipv6NetToMediaType OBJECT-TYPE
     SYNTAX     INTEGER {
                 other(1),    -- none of the following
                 dynamic(2),  -- dynamically resolved
                 static(3),   -- statically configured
                 local(4)     -- local interface
                }
     MAX-ACCESS read-only
     STATUS     obsolete
     DESCRIPTION
             "The type of the mapping.  The 'dynamic(2)' type
             indicates that the IPv6 address to physical
             addresses mapping has been dynamically
             resolved using the IPv6 Neighbor Discovery
             protocol.  The static(3)' types indicates that
             the mapping has been statically configured.
             The local(4) indicates that the mapping is
             provided for an entity's own interface address.

             This object is obsoleted by IP-MIB::ipNetToPhysicalType."
     ::= { ipv6NetToMediaEntry 3 }

ipv6IfNetToMediaState OBJECT-TYPE 🧠

Here's the Neighbor Unreachability Detection state, with all six values listed exactly as they are in the spec πŸ’–

ipv6IfNetToMediaState OBJECT-TYPE
    SYNTAX      INTEGER {
             reachable(1), -- confirmed reachability

             stale(2),     -- unconfirmed reachability

             delay(3),     -- waiting for reachability
                           -- confirmation before entering
                           -- the probe state

             probe(4),     -- actively probing

             invalid(5),   -- an invalidated mapping

             unknown(6)    -- state can not be determined
                           -- for some reason.
            }
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
        "The Neighbor Unreachability Detection [RFC2461] state
        for the interface when the address mapping in
        this entry is used.

        This object is obsoleted by IP-MIB::ipNetToPhysicalState."
    ::= { ipv6NetToMediaEntry 4 }

ipv6IfNetToMediaLastUpdated OBJECT-TYPE ⏰

ipv6IfNetToMediaLastUpdated OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      obsolete
    DESCRIPTION
        "The value of sysUpTime at the time this entry
        was last updated.  If this entry was updated prior
        to the last re-initialization of the local network
        management subsystem, then this object contains
        a zero value.

        This object is obsoleted by IP-MIB::ipNetToPhysicalLastUpdated."
    ::= { ipv6NetToMediaEntry 5 }

ipv6NetToMediaValid OBJECT-TYPE πŸ™ˆ

Setting this one to false(2) invalidates the entry, and the spec says agents don't have to delete those entries, so management stations need to be ready for stale rows. Check this object before you trust a row πŸ‘€

 ipv6NetToMediaValid OBJECT-TYPE
     SYNTAX     TruthValue
     MAX-ACCESS read-write
     STATUS     obsolete
     DESCRIPTION
      "Setting this object to the value 'false(2)' has
      the effect of invalidating the corresponding entry
      in the ipv6NetToMediaTable.  That is, it effectively
      disassociates the interface identified with said
      entry from the mapping identified with said entry.
      It is an implementation-specific matter as to
      whether the agent removes an invalidated entry
      from the table.  Accordingly, management stations
      must be prepared to receive tabular information
      from agents that corresponds to entries not
      currently in use.  Proper interpretation of such
      entries requires examination of the relevant
      ipv6NetToMediaValid object.

      This object is obsoleted by IP-MIB::ipNetToPhysicalRowStatus."
     DEFVAL  { true }
     ::= { ipv6NetToMediaEntry 6 }

Notifications 🚨

The notification tree needs that extra 0 sub-identifier so the MIB can convert to SNMPv1 and back without losing anything. It's giving very careful design πŸ’…

-- definition of IPv6-related notifications.
-- Note that we need ipv6NotificationPrefix with the 0
-- sub-identifier to make this MIB to translate to
-- an SNMPv1 format in a reversible way.  For example
-- it is needed for proxies that convert SNMPv1 traps
-- to SNMPv2 notifications without MIB knowledge.

ipv6Notifications      OBJECT IDENTIFIER
     ::= { ipv6MIB 2 }
ipv6NotificationPrefix OBJECT IDENTIFIER
     ::= { ipv6Notifications 0 }

ipv6IfStateChange NOTIFICATION-TYPE
     OBJECTS {
              ipv6IfDescr,
              ipv6IfOperStatus -- the new state of the If.
             }
     STATUS             obsolete
     DESCRIPTION
        "An ipv6IfStateChange notification signifies
        that there has been a change in the state of
        an ipv6 interface.  This notification should
        be generated when the interface's operational
        status transitions to or from the up(1) state.

        This object is obsoleted by IF-MIB::linkUp
        and IF-MIB::linkDown notifications."
     ::= { ipv6NotificationPrefix 1 }

Conformance information πŸ’œ

-- conformance information

ipv6Conformance OBJECT IDENTIFIER ::= { ipv6MIB 3 }

ipv6Compliances OBJECT IDENTIFIER ::= { ipv6Conformance 1 }
ipv6Groups      OBJECT IDENTIFIER ::= { ipv6Conformance 2 }

ipv6Compliance MODULE-COMPLIANCE πŸŽ€

Compliance statements are the checklist for SNMPv2 entities that implement the ipv6 MIB, and this one is obsolete too, replaced by IP-MIB::ipMIBCompliance2 ✨

-- compliance statements

ipv6Compliance MODULE-COMPLIANCE
    STATUS  obsolete
    DESCRIPTION
      "The compliance statement for SNMPv2 entities which
      implement ipv6 MIB.

      This compliance statement is obsoleted by
      IP-MIB::ipMIBCompliance2."
    MODULE  -- this module
        MANDATORY-GROUPS { ipv6GeneralGroup,
                           ipv6NotificationGroup }
          OBJECT    ipv6Forwarding
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6DefaultHopLimit
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6IfDescr

            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6IfIdentifier
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6IfIdentifierLength
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"

          OBJECT    ipv6IfAdminStatus
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6RouteValid
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
          OBJECT    ipv6NetToMediaValid
            MIN-ACCESS  read-only
            DESCRIPTION
               "An agent is not required to provide write
                access to this object"
    ::= { ipv6Compliances 1 }

ipv6GeneralGroup OBJECT-GROUP 🧁

This is the big one: every object that's been obsoleted gets bundled here, and the whole group is marked obsolete too, with the replacements living in various IP-MIB groups πŸ’…

ipv6GeneralGroup OBJECT-GROUP
    OBJECTS { ipv6Forwarding,
              ipv6DefaultHopLimit,
              ipv6Interfaces,
              ipv6IfTableLastChange,
              ipv6IfDescr,
              ipv6IfLowerLayer,
              ipv6IfEffectiveMtu,
              ipv6IfReasmMaxSize,
              ipv6IfIdentifier,
              ipv6IfIdentifierLength,
              ipv6IfPhysicalAddress,
              ipv6IfAdminStatus,
              ipv6IfOperStatus,
              ipv6IfLastChange,
              ipv6IfStatsInReceives,
              ipv6IfStatsInHdrErrors,
              ipv6IfStatsInTooBigErrors,
              ipv6IfStatsInNoRoutes,
              ipv6IfStatsInAddrErrors,
              ipv6IfStatsInUnknownProtos,
              ipv6IfStatsInTruncatedPkts,
              ipv6IfStatsInDiscards,
              ipv6IfStatsInDelivers,
              ipv6IfStatsOutForwDatagrams,
              ipv6IfStatsOutRequests,
              ipv6IfStatsOutDiscards,
              ipv6IfStatsOutFragOKs,
              ipv6IfStatsOutFragFails,
              ipv6IfStatsOutFragCreates,
              ipv6IfStatsReasmReqds,
              ipv6IfStatsReasmOKs,
              ipv6IfStatsReasmFails,
              ipv6IfStatsInMcastPkts,
              ipv6IfStatsOutMcastPkts,
              ipv6AddrPrefixOnLinkFlag,
              ipv6AddrPrefixAutonomousFlag,
              ipv6AddrPrefixAdvPreferredLifetime,
              ipv6AddrPrefixAdvValidLifetime,
              ipv6AddrPfxLength,
              ipv6AddrType,
              ipv6AddrAnycastFlag,
              ipv6AddrStatus,
              ipv6RouteNumber,
              ipv6DiscardedRoutes,
              ipv6RouteIfIndex,
              ipv6RouteNextHop,
              ipv6RouteType,
              ipv6RouteProtocol,
              ipv6RoutePolicy,
              ipv6RouteAge,
              ipv6RouteNextHopRDI,
              ipv6RouteMetric,
              ipv6RouteWeight,
              ipv6RouteInfo,
              ipv6RouteValid,
              ipv6NetToMediaPhysAddress,
              ipv6NetToMediaType,
              ipv6IfNetToMediaState,
              ipv6IfNetToMediaLastUpdated,
              ipv6NetToMediaValid }
    STATUS    obsolete
    DESCRIPTION
         "The IPv6 group of objects providing for basic

          management of IPv6 entities.

          This group is obsoleted by various groups in
          IP-MIB."
    ::= { ipv6Groups 1 }

ipv6NotificationGroup NOTIFICATION-GROUP πŸ””

ipv6NotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { ipv6IfStateChange }
    STATUS    obsolete
    DESCRIPTION
         "The notification that an IPv6 entity is required
          to implement.

          This group is obsoleted by
          IF-MIB::linkUpDownNotificationsGroup."
    ::= { ipv6Groups 2 }

 END

4. Historic IPV6-ICMP-MIB ✨

Okay bestie, now we're on to the ICMPv6 side. This whole module is marked historic, so the IP-MIB is the one to use 🧚

    IPV6-ICMP-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        Counter32, mib-2                 FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP  FROM SNMPv2-CONF
        ipv6IfEntry                      FROM IPV6-MIB;

    ipv6IcmpMIB MODULE-IDENTITY
        LAST-UPDATED "201702220000Z"
        ORGANIZATION "IETF IPv6 Working Group"
        CONTACT-INFO
          "           Dimitry Haskin

              Postal: Bay Networks, Inc.
                      660 Technology Park Drive.
                      Billerica, MA  01821
                      US

                 Tel: +1-978-916-8124
              E-mail: dhaskin@baynetworks.com

                      Steve Onishi

              Postal: Bay Networks, Inc.
                      3 Federal Street
                      Billerica, MA 01821
                      US

                 Tel: +1-978-916-3816
              E-mail: sonishi@baynetworks.com"
        DESCRIPTION
          "The obsolete MIB module for entities implementing
           the ICMPv6.  Use the IP-MIB instead.

           Copyright (c) 2017 IETF Trust and the persons
           identified as authors of the code.  All rights
           reserved.

           Redistribution and use in source and binary
           forms, with or without modification, is permitted
           pursuant to, and subject to the license terms contained
           in, the Simplified BSD License set forth in Section
           4.c of the IETF Trust's Legal Provisions Relating to
           IETF Documents
           (http://trustee.ietf.org/license-info)."
        REVISION "201702220000Z"
        DESCRIPTION
          "Obsoleting this MIB module; it has been replaced by
          the revised IP-MIB (RFC 4293)."
        REVISION "9801082155Z"
        DESCRIPTION
          "First revision, published as RFC 2466"
        ::= { mib-2 56 }

    -- the ICMPv6 group

    ipv6IcmpMIBObjects OBJECT IDENTIFIER ::= { ipv6IcmpMIB  1 }

    -- Per-interface ICMPv6 statistics table

    ipv6IfIcmpTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF Ipv6IfIcmpEntry
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
         "IPv6 ICMP statistics.  This table contains statistics
         of ICMPv6 messages that are received and sourced by
         the entity.

         This table is obsolete because systems were found
         not to maintain these statistics per-interface."
        ::= { ipv6IcmpMIBObjects 1 }

Okay bestie, the per-interface ICMPv6 stats table is literally obsolete now πŸ’€ but it's still in the spec, so we're going through every single entry 🫢

    ipv6IfIcmpEntry OBJECT-TYPE
        SYNTAX     Ipv6IfIcmpEntry
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
         "An ICMPv6 statistics entry containing
         objects at a particular IPv6 interface.

         Note that a receiving interface is
         the interface to which a given ICMPv6 message
         is addressed which may not be necessarily
         the input interface for the message.

         Similarly, the sending interface is
         the interface that sources a given
         ICMP message which is usually but not
         necessarily the output interface for the message.

         This table is obsolete because systems were found
         not to maintain these statistics per-interface."
        AUGMENTS { ipv6IfEntry }
        ::= { ipv6IfIcmpTable 1 }

    Ipv6IfIcmpEntry ::= SEQUENCE {
            ipv6IfIcmpInMsgs
                  Counter32      ,
            ipv6IfIcmpInErrors
                  Counter32      ,
            ipv6IfIcmpInDestUnreachs
                  Counter32      ,
            ipv6IfIcmpInAdminProhibs
                  Counter32      ,
            ipv6IfIcmpInTimeExcds
                  Counter32      ,
            ipv6IfIcmpInParmProblems
                  Counter32      ,
            ipv6IfIcmpInPktTooBigs
                  Counter32      ,
            ipv6IfIcmpInEchos
                  Counter32      ,
            ipv6IfIcmpInEchoReplies
                  Counter32      ,
            ipv6IfIcmpInRouterSolicits
                  Counter32      ,

            ipv6IfIcmpInRouterAdvertisements
                  Counter32      ,
            ipv6IfIcmpInNeighborSolicits
                  Counter32      ,
            ipv6IfIcmpInNeighborAdvertisements
                  Counter32      ,
            ipv6IfIcmpInRedirects
                  Counter32      ,
            ipv6IfIcmpInGroupMembQueries
                  Counter32      ,
            ipv6IfIcmpInGroupMembResponses
                  Counter32      ,
            ipv6IfIcmpInGroupMembReductions
                  Counter32      ,
            ipv6IfIcmpOutMsgs
                  Counter32      ,
            ipv6IfIcmpOutErrors
                  Counter32      ,
            ipv6IfIcmpOutDestUnreachs
                  Counter32      ,
            ipv6IfIcmpOutAdminProhibs
                  Counter32      ,
            ipv6IfIcmpOutTimeExcds
                  Counter32      ,
            ipv6IfIcmpOutParmProblems
                  Counter32      ,
            ipv6IfIcmpOutPktTooBigs
                  Counter32      ,
            ipv6IfIcmpOutEchos
                  Counter32      ,
            ipv6IfIcmpOutEchoReplies
                  Counter32      ,
            ipv6IfIcmpOutRouterSolicits
                  Counter32      ,
            ipv6IfIcmpOutRouterAdvertisements
                  Counter32      ,
            ipv6IfIcmpOutNeighborSolicits
                  Counter32      ,
            ipv6IfIcmpOutNeighborAdvertisements
                  Counter32      ,
            ipv6IfIcmpOutRedirects
                  Counter32      ,
            ipv6IfIcmpOutGroupMembQueries
                  Counter32      ,
            ipv6IfIcmpOutGroupMembResponses
                  Counter32      ,
            ipv6IfIcmpOutGroupMembReductions
                  Counter32

        }

    ipv6IfIcmpInMsgs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The total number of ICMP messages received
         by the interface which includes all those
         counted by ipv6IfIcmpInErrors.  Note that this
         interface is the interface to which the
         ICMP messages were addressed which may not be
         necessarily the input interface for the messages.

         This object has been obsoleted by IP-MIB::icmpStatsInMsgs."
        ::= { ipv6IfIcmpEntry 1 }

    ipv6IfIcmpInErrors OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP messages which the interface
         received but determined as having ICMP-specific
         errors (bad ICMP checksums, bad length, etc.).

         This object has been obsoleted by IP-MIB::icmpStatsInErrors."
        ::= { ipv6IfIcmpEntry 2 }

    ipv6IfIcmpInDestUnreachs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Destination Unreachable
         messages received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 3 }

    ipv6IfIcmpInAdminProhibs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP destination
         unreachable/communication administratively
         prohibited messages received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 4 }

    ipv6IfIcmpInTimeExcds OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Time Exceeded messages
          received by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 5 }

    ipv6IfIcmpInParmProblems OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Parameter Problem messages
          received by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 6 }

    ipv6IfIcmpInPktTooBigs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Packet Too Big messages
         received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 7 }

    ipv6IfIcmpInEchos OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Echo (request) messages

          received by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 8 }

    ipv6IfIcmpInEchoReplies OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Echo Reply messages received
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 9 }

    ipv6IfIcmpInRouterSolicits OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Router Solicit messages
          received by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 10 }

    ipv6IfIcmpInRouterAdvertisements OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Router Advertisement messages
         received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 11 }

    ipv6IfIcmpInNeighborSolicits OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Neighbor Solicit messages

          received by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 12 }

    ipv6IfIcmpInNeighborAdvertisements OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Neighbor Advertisement
         messages received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 13 }

    ipv6IfIcmpInRedirects OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of Redirect messages received
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 14 }

    ipv6IfIcmpInGroupMembQueries OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Query
         messages received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 15}

    ipv6IfIcmpInGroupMembResponses OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Response messages
         received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 16}

     ipv6IfIcmpInGroupMembReductions OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Reduction messages
         received by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsInPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 17}

    ipv6IfIcmpOutMsgs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The total number of ICMP messages which this
         interface attempted to send.  Note that this counter
         includes all those counted by icmpOutErrors.

         This object has been obsoleted by IP-MIB::icmpStatsOutMsgs."
        ::= { ipv6IfIcmpEntry 18 }

    ipv6IfIcmpOutErrors OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP messages which this interface did
         not send due to problems discovered within ICMP
         such as a lack of buffers.  This value should not
         include errors discovered outside the ICMP layer
         such as the inability of IPv6 to route the resultant
         datagram.  In some implementations there may be no
         types of error which contribute to this counter's
         value.

         This object has been obsoleted by IP-MIB::icmpStatsOutErrors."
        ::= { ipv6IfIcmpEntry 19 }

    ipv6IfIcmpOutDestUnreachs OBJECT-TYPE

        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Destination Unreachable
         messages sent by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 20 }

Okay bestie, the outgoing ICMPv6 counters are up next 🧚✨ Every one of these is a Counter32 that's read-only and marked obsolete πŸ’€, and each one points you to IP-MIB::icmpMsgStatsOutPkts for that message type. So the data is still there, just in a new home 🏑

    ipv6IfIcmpOutAdminProhibs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
          "Number of ICMP dest unreachable/communication
          administratively prohibited messages sent.

          This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 21 }

    ipv6IfIcmpOutTimeExcds OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Time Exceeded messages sent
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 22 }

    ipv6IfIcmpOutParmProblems OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Parameter Problem messages
         sent by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 23 }

    ipv6IfIcmpOutPktTooBigs OBJECT-TYPE

        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Packet Too Big messages sent
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 24 }

    ipv6IfIcmpOutEchos OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Echo (request) messages sent
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 25 }

    ipv6IfIcmpOutEchoReplies OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Echo Reply messages sent
         by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 26 }

    ipv6IfIcmpOutRouterSolicits OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Router Solicitation messages
          sent by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 27 }

    ipv6IfIcmpOutRouterAdvertisements OBJECT-TYPE

        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Router Advertisement messages
         sent by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 28 }

    ipv6IfIcmpOutNeighborSolicits OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Neighbor Solicitation
          messages sent by the interface.

          This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
          in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 29 }

    ipv6IfIcmpOutNeighborAdvertisements OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMP Neighbor Advertisement
         messages sent by the interface.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 30 }

    ipv6IfIcmpOutRedirects OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of Redirect messages sent.  For
         a host, this object will always be zero,
         since hosts do not send redirects.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 31 }

    ipv6IfIcmpOutGroupMembQueries OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Query
         messages sent.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 32}

    ipv6IfIcmpOutGroupMembResponses OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Response
         messages sent.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 33}

    ipv6IfIcmpOutGroupMembReductions OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     obsolete
        DESCRIPTION
         "The number of ICMPv6 Group Membership Reduction
         messages sent.

         This object has been obsoleted by IP-MIB::icmpMsgStatsOutPkts
         in the row corresponding to this message type."
        ::= { ipv6IfIcmpEntry 34}

Now the conformance bit πŸŽ€ Think of it as the MIB's little checklist. The ipv6IcmpConformance branch sits under ipv6IcmpMIB at 2, with the compliances and groups tucked underneath it 🌸

   -- conformance information

   ipv6IcmpConformance OBJECT IDENTIFIER ::= { ipv6IcmpMIB 2 }

   ipv6IcmpCompliances
           OBJECT IDENTIFIER ::= { ipv6IcmpConformance 1 }
   ipv6IcmpGroups
           OBJECT IDENTIFIER ::= { ipv6IcmpConformance 2 }

   -- compliance statements

   ipv6IcmpCompliance MODULE-COMPLIANCE

       STATUS  obsolete
       DESCRIPTION
         "The compliance statement for SNMPv2 entities which
         implement ICMPv6.

         This compliance statement has been obsoleted by
         IP-MIB::ipMIBCompliance2."
       MODULE  -- this module
           MANDATORY-GROUPS { ipv6IcmpGroup }
       ::= { ipv6IcmpCompliances 1 }

   ipv6IcmpGroup OBJECT-GROUP
       OBJECTS   {
                   ipv6IfIcmpInMsgs,
                   ipv6IfIcmpInErrors,
                   ipv6IfIcmpInDestUnreachs,
                   ipv6IfIcmpInAdminProhibs,
                   ipv6IfIcmpInTimeExcds,
                   ipv6IfIcmpInParmProblems,
                   ipv6IfIcmpInPktTooBigs,
                   ipv6IfIcmpInEchos,
                   ipv6IfIcmpInEchoReplies,
                   ipv6IfIcmpInRouterSolicits,
                   ipv6IfIcmpInRouterAdvertisements,
                   ipv6IfIcmpInNeighborSolicits,
                   ipv6IfIcmpInNeighborAdvertisements,
                   ipv6IfIcmpInRedirects,
                   ipv6IfIcmpInGroupMembQueries,
                   ipv6IfIcmpInGroupMembResponses,
                   ipv6IfIcmpInGroupMembReductions,
                   ipv6IfIcmpOutMsgs,
                   ipv6IfIcmpOutErrors,
                   ipv6IfIcmpOutDestUnreachs,
                   ipv6IfIcmpOutAdminProhibs,
                   ipv6IfIcmpOutTimeExcds,
                   ipv6IfIcmpOutParmProblems,
                   ipv6IfIcmpOutPktTooBigs,
                   ipv6IfIcmpOutEchos,
                   ipv6IfIcmpOutEchoReplies,
                   ipv6IfIcmpOutRouterSolicits,
                   ipv6IfIcmpOutRouterAdvertisements,
                   ipv6IfIcmpOutNeighborSolicits,
                   ipv6IfIcmpOutNeighborAdvertisements,
                   ipv6IfIcmpOutRedirects,
                   ipv6IfIcmpOutGroupMembQueries,
                   ipv6IfIcmpOutGroupMembResponses,
                   ipv6IfIcmpOutGroupMembReductions
                 }

       STATUS    obsolete
       DESCRIPTION
            "The ICMPv6 group of objects providing information
             specific to ICMPv6.

             This group has been obsoleted by IP-MIB::icmpStatsGroup."
       ::= { ipv6IcmpGroups 1 }

    END

5. Historic IPV6-UDP-MIB ✨

okay so this section is the IPV6-UDP-MIB, which is the MIB module for UDP over IPv6 πŸ¦‹ It's historic now, so it's giving retired-but-still-iconic energy. The module's own DESCRIPTION says it's obsolete and that you should use the UDP-MIB instead. It was replaced by the revised UDP-MIB (RFC 4113), and the first version came out as RFC 2454 πŸ’…

The module is registered under experimental 87, and its contact is Mike Daniele at Compaq Computer Corporation in Nashua, NH πŸ’œ It imports a few things from SNMPv2-CONF, SNMPv2-SMI and IPV6-TC, like Ipv6Address and Ipv6IfIndexOrZero 🧚

Here's the whole module, copied exactly:

 IPV6-UDP-MIB DEFINITIONS ::= BEGIN

 IMPORTS
    MODULE-COMPLIANCE, OBJECT-GROUP      FROM SNMPv2-CONF
    MODULE-IDENTITY, OBJECT-TYPE,
    mib-2, experimental                  FROM SNMPv2-SMI
    Ipv6Address, Ipv6IfIndexOrZero       FROM IPV6-TC;

 ipv6UdpMIB MODULE-IDENTITY
    LAST-UPDATED "201702220000Z"
    ORGANIZATION "IETF IPv6 MIB Working Group"
    CONTACT-INFO
         "               Mike Daniele

                 Postal: Compaq Computer Corporation
                         110 Spitbrook Rd
                         Nashua, NH 03062.
                         US

                 Phone:  +1 603 884 1423
                 Email:  daniele@zk3.dec.com"
    DESCRIPTION
         "The obsolete MIB module for entities implementing UDP
         over IPv6.  Use the UDP-MIB instead.

         Copyright (c) 2017 IETF Trust and the persons
         identified as authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms,
         with or without modification, is permitted pursuant to,
         and subject to the license terms contained in, the
         Simplified BSD License set forth in Section 4.c of the IETF
         Trust's Legal Provisions Relating to IETF Documents
         (http://trustee.ietf.org/license-info)."
    REVISION "201702220000Z"
    DESCRIPTION

         "Obsoleting this MIB module; it has been replaced by
         the revised UDP-MIB (RFC 4113)."
    REVISION "9801290000Z"
    DESCRIPTION
         "First revision, published as RFC 2454"
    ::= { experimental 87 }

 -- objects specific to UDP for IPv6

 udp      OBJECT IDENTIFIER ::= { mib-2 7 }

 -- the UDP over IPv6 Listener table

 -- This table contains information about this entity's
 -- UDP/IPv6 endpoints.  Only endpoints utilizing IPv6 addresses
 -- are contained in this table.  This entity's UDP/IPv4 endpoints
 -- are contained in udpTable.

 ipv6UdpTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Ipv6UdpEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
         "A table containing UDP listener information for
          UDP/IPv6 endpoints.

          This table is obsoleted by UDP-MIB::udpEndpointTable."
    ::= { udp 6 }

 ipv6UdpEntry OBJECT-TYPE
    SYNTAX      Ipv6UdpEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
         "Information about a particular current UDP listener.

          Note that conceptual rows in this table require an
          additional index object compared to udpTable, since
          IPv6 addresses are not guaranteed to be unique on the
          managed node.

          This entry is obsoleted by UDP-MIB::udpEndpointTable."
    INDEX   { ipv6UdpLocalAddress,
              ipv6UdpLocalPort,
              ipv6UdpIfIndex }
    ::= { ipv6UdpTable 1 }

 Ipv6UdpEntry ::= SEQUENCE {

    ipv6UdpLocalAddress    Ipv6Address,
    ipv6UdpLocalPort       INTEGER,
    ipv6UdpIfIndex         Ipv6IfIndexOrZero }

 ipv6UdpLocalAddress OBJECT-TYPE
    SYNTAX       Ipv6Address
    MAX-ACCESS   not-accessible
    STATUS       obsolete
    DESCRIPTION
         "The local IPv6 address for this UDP listener.
          In the case of a UDP listener which is willing
          to accept datagrams for any IPv6 address
          associated with the managed node, the value ::0
          is used.

          This object is obsoleted by UDP-MIB::udpEndpointLocalAddress."
    ::= { ipv6UdpEntry 1 }

 ipv6UdpLocalPort OBJECT-TYPE
     SYNTAX     INTEGER (0..65535)
     MAX-ACCESS not-accessible
     STATUS     obsolete
     DESCRIPTION
         "The local port number for this UDP listener.

         This object is obsoleted by UDP-MIB::udpEndpointLocalPort."
     ::= { ipv6UdpEntry 2 }

 ipv6UdpIfIndex OBJECT-TYPE
    SYNTAX     Ipv6IfIndexOrZero
    MAX-ACCESS   read-only
    STATUS     obsolete
    DESCRIPTION
         "An index object used to disambiguate conceptual rows in
          the table, since the ipv6UdpLocalAddress/ipv6UdpLocalPort
          pair may not be unique.

          This object identifies the local interface that is
          associated with ipv6UdpLocalAddress for this UDP listener.
          If such a local interface cannot be determined, this object
          should take on the value 0.  (A possible example of this
          would be if the value of ipv6UdpLocalAddress is ::0.)

          The interface identified by a particular non-0 value of
          this index is the same interface as identified by the same
          value of ipv6IfIndex.

          The value of this object must remain constant during
          the life of this UDP endpoint.

          This object is obsoleted by the zone identifier in
          an InetAddressIPv6z address in
          UDP-MIB::udpEndpointLocalAddress."
    ::= { ipv6UdpEntry 3 }

 --
 -- conformance information
 --

 ipv6UdpConformance OBJECT IDENTIFIER ::= { ipv6UdpMIB 2 }

 ipv6UdpCompliances OBJECT IDENTIFIER ::= { ipv6UdpConformance 1 }
 ipv6UdpGroups      OBJECT IDENTIFIER ::= { ipv6UdpConformance 2 }

 -- compliance statements

 ipv6UdpCompliance MODULE-COMPLIANCE
    STATUS  obsolete
    DESCRIPTION
         "The compliance statement for SNMPv2 entities which
          implement UDP over IPv6.

          This object is obsoleted by UDP-MIB::udpMIBCompliance2."
    MODULE  -- this module
    MANDATORY-GROUPS { ipv6UdpGroup }
    ::= { ipv6UdpCompliances 1 }

 ipv6UdpGroup OBJECT-GROUP
    OBJECTS   { -- these are defined in this module
                -- ipv6UdpLocalAddress (not-accessible)
                -- ipv6UdpLocalPort (not-accessible)
                ipv6UdpIfIndex }
    STATUS    obsolete
    DESCRIPTION
         "The group of objects providing management of
          UDP over IPv6.

          This group is obsoleted by several groups in UDP-MIB."
    ::= { ipv6UdpGroups 1 }

 END

🫢 so the big picture: the table ipv6UdpTable only holds the UDP listeners on IPv6 endpoints, and the IPv4 ones stay in udpTable. Every object in here is marked obsolete, and each one points you over to a UDP-MIB object (like UDP-MIB::udpEndpointTable) that replaces it 🌸

the ipv6UdpIfIndex description is the one to read carefully πŸ‘€ if no local interface can be figured out, the value is 0, and for a non-0 value it's the same interface as ipv6IfIndex. it also has to stay constant for the whole life of the UDP endpoint πŸ”₯

The compliance statement ipv6UdpCompliance and the group ipv6UdpGroup are both obsolete too, so UDP-MIB::udpMIBCompliance2 and those several UDP-MIB groups are where it's at now πŸ’–

6. Historic IPV6-TCP-MIB ✨

okay bestie, this is the old IPV6-TCP-MIB πŸ¦‹ it's obsolete now, so the vibe is "use the TCP-MIB instead" πŸ’… here's the whole module, exactly as written:

 IPV6-TCP-MIB DEFINITIONS ::= BEGIN

 IMPORTS
    MODULE-COMPLIANCE, OBJECT-GROUP      FROM SNMPv2-CONF
    MODULE-IDENTITY, OBJECT-TYPE,
    mib-2, experimental                  FROM SNMPv2-SMI
    Ipv6Address, Ipv6IfIndexOrZero       FROM IPV6-TC;

 ipv6TcpMIB MODULE-IDENTITY
    LAST-UPDATED "201702220000Z"
    ORGANIZATION "IETF IPv6 MIB Working Group"
    CONTACT-INFO
         "       Mike Daniele

                 Postal: Compaq Computer Corporation
                         110 Spitbrook Rd
                         Nashua, NH 03062.
                         US

                 Phone:  +1 603 884 1423
                 Email:  daniele@zk3.dec.com"
    DESCRIPTION
         "The obsolete MIB module for entities implementing TCP
         over IPv6.  Use the TCP-MIB instead.

         Copyright (c) 2017 IETF Trust and the persons identified
         as authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with
         or without modification, is permitted pursuant to, and
         subject to the license terms contained in, the Simplified
         BSD License set forth in Section 4.c of the IETF Trust's
         Legal Provisions Relating to IETF Documents
         (http://trustee.ietf.org/license-info)."
    REVISION "201702220000Z"
    DESCRIPTION
         "Obsoleting this MIB module; it has been replaced by
         the revised TCP-MIB (RFC 4022)."
    REVISION "9801290000Z"
    DESCRIPTION
         "First revision, published as RFC 2452"
    ::= { experimental 86 }

 -- objects specific to TCP for IPv6

 tcp      OBJECT IDENTIFIER ::= { mib-2 6 }
 -- the TCP over IPv6 Connection table

 -- This connection table contains information about this
 -- entity's existing TCP connections between IPv6 endpoints.
 -- Only connections between IPv6 addresses are contained in
 -- this table.  This entity's connections between IPv4
 -- endpoints are contained in tcpConnTable.

 ipv6TcpConnTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Ipv6TcpConnEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
         "A table containing TCP connection-specific information,
          for only those connections whose endpoints are IPv6 addresses.

          This table is obsoleted by TCP-MIB::tcpConnectionTable."
    ::= { tcp 16 }

 ipv6TcpConnEntry OBJECT-TYPE
    SYNTAX      Ipv6TcpConnEntry
    MAX-ACCESS  not-accessible
    STATUS      obsolete
    DESCRIPTION
         "A conceptual row of the ipv6TcpConnTable containing
          information about a particular current TCP connection.
          Each row of this table is transient, in that it ceases to
          exist when (or soon after) the connection makes the transition
          to the CLOSED state.

          Note that conceptual rows in this table require an additional
          index object compared to tcpConnTable, since IPv6 addresses
          are not guaranteed to be unique on the managed node.

          This entry is obsoleted by TCP-MIB::tcpConnectionEntry."
    INDEX   { ipv6TcpConnLocalAddress,
              ipv6TcpConnLocalPort,
              ipv6TcpConnRemAddress,
              ipv6TcpConnRemPort,
              ipv6TcpConnIfIndex }
    ::= { ipv6TcpConnTable 1 }

 Ipv6TcpConnEntry ::=
    SEQUENCE { ipv6TcpConnLocalAddress    Ipv6Address,
               ipv6TcpConnLocalPort       INTEGER,
               ipv6TcpConnRemAddress      Ipv6Address,
               ipv6TcpConnRemPort         INTEGER,
               ipv6TcpConnIfIndex         Ipv6IfIndexOrZero,
               ipv6TcpConnState           INTEGER }

 ipv6TcpConnLocalAddress OBJECT-TYPE
    SYNTAX     Ipv6Address
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
         "The local IPv6 address for this TCP connection.  In
          the case of a connection in the listen state which
          is willing to accept connections for any IPv6
          address associated with the managed node, the value
          ::0 is used.

          This object is obsoleted by
          TCP-MIB::tcpConnectionLocalAddressType."
    ::= { ipv6TcpConnEntry 1 }

 ipv6TcpConnLocalPort OBJECT-TYPE
    SYNTAX     INTEGER (0..65535)
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
         "The local port number for this TCP connection.

         This object is obsoleted by TCP-MIB::tcpConnectionLocalPort."
    ::= { ipv6TcpConnEntry 2 }

 ipv6TcpConnRemAddress OBJECT-TYPE
    SYNTAX     Ipv6Address
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
         "The remote IPv6 address for this TCP connection.

         This object is obsoleted by TCP-MIB::tcpConnectionRemAddress."
    ::= { ipv6TcpConnEntry 3 }

 ipv6TcpConnRemPort OBJECT-TYPE
    SYNTAX     INTEGER (0..65535)
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
         "The remote port number for this TCP connection.

         This object is obsoleted by TCP-MIB::tcpConnectionRemPort."
    ::= { ipv6TcpConnEntry 4 }

 ipv6TcpConnIfIndex OBJECT-TYPE

    SYNTAX     Ipv6IfIndexOrZero
    MAX-ACCESS not-accessible
    STATUS     obsolete
    DESCRIPTION
         "An index object used to disambiguate conceptual rows in
          the table, since the connection 4-tuple may not be unique.

          If the connection's remote address (ipv6TcpConnRemAddress)
          is a link-local address and the connection's local address
          (ipv6TcpConnLocalAddress) is not a link-local address, this
          object identifies a local interface on the same link as
          the connection's remote link-local address.

          Otherwise, this object identifies the local interface that
          is associated with the ipv6TcpConnLocalAddress for this
          TCP connection.  If such a local interface cannot be
          determined, this object should take on the value 0.
          (A possible example of this would be if the value of
          ipv6TcpConnLocalAddress is ::0.)

          The interface identified by a particular non-0 value of this
          index is the same interface as identified by the same value
          of ipv6IfIndex.

          The value of this object must remain constant during the life
          of the TCP connection.

          This object is obsoleted by the zone identifier in
          an InetAddressIPv6z address in either
          TCP-MIB::tcpConnectionLocalAddress or
          TCP-MIB::tcpConnectionRemAddress."
    ::= { ipv6TcpConnEntry 5 }

 ipv6TcpConnState OBJECT-TYPE
    SYNTAX     INTEGER {
         closed(1),
         listen(2),
         synSent(3),
         synReceived(4),
         established(5),
         finWait1(6),
         finWait2(7),
         closeWait(8),
         lastAck(9),
         closing(10),
         timeWait(11),
         deleteTCB(12) }
    MAX-ACCESS read-write
    STATUS     obsolete
    DESCRIPTION
         "The state of this TCP connection.

          The only value which may be set by a management station is
          deleteTCB(12).  Accordingly, it is appropriate for an agent
          to return an error response ('badValue' for SNMPv1,
          'wrongValue' for SNMPv2) if a management station attempts
          to set this object to any other value.

          If a management station sets this object to the value
          deleteTCB(12), then this has the effect of deleting the TCB
          (as defined in RFC 793) of the corresponding connection on
          the managed node, resulting in immediate termination of the
          connection.

          As an implementation-specific option, a RST segment may be
          sent from the managed node to the other TCP endpoint (note
          however that RST segments are not sent reliably).

          This object is obsoleted by TCP-MIB::tcpConnectionState."
    ::= { ipv6TcpConnEntry 6 }

 --
 -- conformance information
 --

 ipv6TcpConformance OBJECT IDENTIFIER ::= { ipv6TcpMIB 2 }

 ipv6TcpCompliances OBJECT IDENTIFIER ::= { ipv6TcpConformance 1 }
 ipv6TcpGroups      OBJECT IDENTIFIER ::= { ipv6TcpConformance 2 }

 -- compliance statements

 ipv6TcpCompliance MODULE-COMPLIANCE
    STATUS  obsolete
    DESCRIPTION
         "The compliance statement for SNMPv2 entities which
          implement TCP over IPv6.

          This compliance statement is obsoleted by
          TCP-MIB::tcpMIBCompliance2."
    MODULE  -- this module
    MANDATORY-GROUPS { ipv6TcpGroup }
    ::= { ipv6TcpCompliances 1 }

 ipv6TcpGroup OBJECT-GROUP
    OBJECTS   { -- these are defined in this module

                -- ipv6TcpConnLocalAddress (not-accessible)
                -- ipv6TcpConnLocalPort (not-accessible)
                -- ipv6TcpConnRemAddress (not-accessible)
                -- ipv6TcpConnRemPort (not-accessible)
                -- ipv6TcpConnIfIndex (not-accessible)
                ipv6TcpConnState }
    STATUS    obsolete
    DESCRIPTION
         "The group of objects providing management of
          TCP over IPv6.

          This group is obsoleted by several groups in TCP-MIB."
    ::= { ipv6TcpGroups 1 }

 END

7. Reclassification πŸ¦‹

okay so this section is giving housekeeping 🧹 this doc reclassifies [RFC2452], [RFC2454], [RFC2465], and [RFC2466] to Historic. so they're officially retired, no cap πŸͺ¦βœ¨

8. Security Considerations πŸ”’

this part is super important, so listen up πŸ‘‘ this document only has obsolete objects, and [RFC2578] says "should not be implemented and/or can be removed if previously implemented". since the stuff in here shouldn't be implemented, it has no security implications 🫢

If there were any security implications based on these objects in an implementation, removing these objects as [RFC2578] suggests would improve the security of that implementation. So if you're running something built on these objects, go clean them up πŸ”πŸ’œ

9. IANA Considerations πŸ’…

IANA has updated the SMI Numbers registry at http://www.iana.org/assignments/smi-numbers/ as described below. the registry got a glow-up 🌈

IANA has updated the "SMI Network Management MGMT Codes Internet-standard MIB" section as follows:

  • Removed RFC 1213 as a reference for mib-2.5 ("icmp").
  • Updated the reference for mib-2.6 ("tcp") to point to RFC 4022.
  • Removed RFC 1213 as a reference for mib-2.7 ("udp").
  • Removed RFC 2012 as a reference for mib-2.49 ("tcpMIB").
  • Added the "(Historic)" annotation for the entries for mib-2.55 ("ipv6MIB") and mib-2.56 ("ipv6IcmpMIB") and updated the reference of each to point to this document.

IANA has updated the "SMI Experimental Codes" section as follows:

  • Added the "(Historic)" annotation for experimental.74 ("IPv6 MIB").
  • Changed the "(Historical)" annotation for experimental.87 ("ipv6UdpMIB") to "(Historic)".
  • Updated the reference for experimental.86 ("ipv6TcpMIB") and experimental.87 ("ipv6UdpMIB") to point to this document.

10. References πŸ“š

10.1. Normative References

[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, DOI 10.17487/RFC2578, April 1999, http://www.rfc-editor.org/info/rfc2578.

10.2. Informative References πŸ¦‹

Okay so this is the part where the document name-drops all the background reading it leaned on, bestie πŸ“šβœ¨ Every entry below is a "go read this if you want the full story" pointer, and I'm listing them exactly as written so nobody gets lost 🫢

[RFC1213] McCloghrie, K. and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", STD 17, RFC 1213, DOI 10.17487/RFC1213, March 1991, <http://www.rfc-editor.org/info/rfc1213>.

[RFC1573] McCloghrie, K. and F. Kastenholz, "Evolution of the Interfaces Group of MIB-II", RFC 1573, DOI 10.17487/RFC1573, January 1994, <http://www.rfc-editor.org/info/rfc1573>.

[RFC2452] Daniele, M., "IP Version 6 Management Information Base for the Transmission Control Protocol", RFC 2452, DOI 10.17487/RFC2452, December 1998, <http://www.rfc-editor.org/info/rfc2452>.

[RFC2454] Daniele, M., "IP Version 6 Management Information Base for the User Datagram Protocol", RFC 2454, DOI 10.17487/RFC2454, December 1998, <http://www.rfc-editor.org/info/rfc2454>.

[RFC2461] Narten, T., Nordmark, E., and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, DOI 10.17487/RFC2461, December 1998, <http://www.rfc-editor.org/info/rfc2461>.

[RFC2465] Haskin, D. and S. Onishi, "Management Information Base for IP Version 6: Textual Conventions and General Group", RFC 2465, DOI 10.17487/RFC2465, December 1998, <http://www.rfc-editor.org/info/rfc2465>.

[RFC2466] Haskin, D. and S. Onishi, "Management Information Base for IP Version 6: ICMPv6 Group", RFC 2466, DOI 10.17487/RFC2466, December 1998, <http://www.rfc-editor.org/info/rfc2466>.

[RFC4022] Raghunarayan, R., Ed., "Management Information Base for the Transmission Control Protocol (TCP)", RFC 4022, DOI 10.17487/RFC4022, March 2005, <http://www.rfc-editor.org/info/rfc4022>.

[RFC4113] Fenner, B. and J. Flick, "Management Information Base for the User Datagram Protocol (UDP)", RFC 4113, DOI 10.17487/RFC4113, June 2005, <http://www.rfc-editor.org/info/rfc4113>.

[RFC4292] Haberman, B., "IP Forwarding Table MIB", RFC 4292, DOI 10.17487/RFC4292, April 2006, <http://www.rfc-editor.org/info/rfc4292>.

[RFC4293] Routhier, S., Ed., "Management Information Base for the Internet Protocol (IP)", RFC 4293, DOI 10.17487/RFC4293, April 2006, <http://www.rfc-editor.org/info/rfc4293>.


Author's Address ✨

Bill Fenner Arista Networks, Inc. 5453 Great America Parkway Santa Clara, CA 95054 United States of America

Phone: +1-408-547-5572 Email: fenner@fenron.com

That's the whole thing, bestie πŸŒˆπŸ’– Bill Fenner wrapped up IPv6 MIB-land with a tidy bow, and you are officially caught up πŸ‘‘πŸ§š

πŸ“¦ where this page comes from