RFC 4295

Mobile IPv6 Management Information Base

πŸ“… published April 2006, from ietf

RFC 4295: Mobile IPv6 Management Information Base πŸ¦‹

okay so this is RFC 4295, and it's literally called Mobile IPv6 Management Information Base ✨ It's a Standards Track doc from the Network Working Group, dated April 2006. The authors are G. Keeni (Cyber Solutions Inc.), K. Koide (Tohoku University), K. Nagami (INTEC NetCore Inc.), and S. Gundavelli (Cisco Systems Inc.). The header doesn't list any RFCs that it obsoletes or updates, so nothing gets replaced or patched here πŸ’…


Status of This Memo πŸŽ€

This document is an Internet standards track protocol for the Internet community, and it's asking everyone for discussion and suggestions for improvements 🫢 For the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited.

Copyright (C) The Internet Society (2006).

Abstract ✨

This memo defines a chunk of the Management Information Base (MIB), the Mobile-IPv6 MIB, for network management protocols in the Internet community. The main goal is to monitor and control the mobile node, home agent, and correspondent node functions of a Mobile IPv6 (MIPv6) entity. It's giving "network manager's dream" 😭πŸ”₯

Table of Contents 🧚

   1. The Internet-Standard Management Framework ......................2
   2. Overview ........................................................2
      2.1. The Mobile IPv6 Protocol Entities ..........................2
      2.2. Terminology ................................................3
   3. Mobile IPv6 Monitoring and Control Requirements .................3
   4. MIB Design ......................................................4
   5. The Mobile-IPv6 MIB .............................................6
   6. Security Considerations .......................................104
   7. IANA Considerations ...........................................106
   8. References ....................................................106
      8.1. Normative References .....................................106
      8.2. Informative References ...................................107
   9. Acknowledgements ..............................................107

1. The Internet-Standard Management Framework 🌈

If you want the full scoop on the Internet-Standard Management Framework docs, go check section 7 of RFC 3410 [RFC3410] πŸ“š

Managed objects live in a virtual information store called the Management Information Base, or MIB πŸ—‚οΈ MIB objects are usually reached through the Simple Network Management Protocol (SNMP) πŸ’œ

The objects in the MIB are defined using the mechanisms from the Structure of Management Information (SMI) 🧠 This memo gives you a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580]. Very structured, very iconic ✨

2. Overview πŸ¦‹

2.1. The Mobile IPv6 Protocol Entities 🌸

Mobile IPv6 (MIPv6) [RFC3775] is the protocol that lets nodes stay reachable while they wander around the IPv6 Internet 🧳 Any entity that implements MIPv6 is a MIPv6 entity, and the protocol has three types of entities:

  • mobile node (MN): A node that can switch its point of attachment from one link to another, and still be reachable through its home address πŸ“±
  • correspondent node (CN): A peer node that a mobile node is talking to. The correspondent node can be either mobile or stationary. (Fun fact: a correspondent node doesn't necessarily need MIPv6 support πŸ™ˆ)
  • home agent (HA): A router on a mobile node's home link that the mobile node has registered its current care-of address with. While the mobile node is away from home, the home agent catches packets on the home link that are headed for the mobile node's home address, encapsulates them, and routes them to the mobile node's registered care-of address. Main character energy πŸ‘‘

This document defines a set of managed objects (MOs) that you can use to monitor and control MIPv6 entities πŸ’–

2.2. Terminology πŸŽ€

The terminology in this document lines up with the definitions in the Mobile IPv6 protocol specification [RFC3775] 🫢

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [RFC2119]. These are the official requirement words, so read them carefully bestie πŸ’…

3. Mobile IPv6 Monitoring and Control Requirements 🌈

To manage a MIPv6 entity, you need to be able to monitor the following:

  • capabilities of MIPv6 entities
  • traffic due to MIPv6
  • binding-related statistics (at home agent, correspondent node, and mobile node)
  • binding details (at home agent and correspondent node)
  • history of Binding Updates (at home agent, correspondent node, and mobile node)

The MIPv6 protocol document says that several MIPv6-related parameters should be manually configurable πŸ“ So the MIPv6 MIB should define managed objects you can use to configure those parameters. For example:

  • the preference value the home agent will use in Router Advertisements;
  • the lifetime value the home agent will use in Router Advertisements;
  • whether a home agent will send ICMP Mobile Prefix Advertisements to mobile nodes;
  • whether a home agent will respond to ICMP Mobile Prefix Solicitation messages from mobile nodes; and
  • whether a home agent will process multicast group membership control messages from mobile nodes.

4. MIB Design πŸ’…

The big idea here is to keep the MIB as simple as possible, while still making it effective enough to cover the essential monitoring and control needs. It's lowkey genius 🧚 Wherever it makes sense, existing MIBs get reused for monitoring and controlling MIPv6 entities, such as the IPSec MIB, the Neighbor Discovery MIB, and the Tunnel MIB [RFC4087] πŸ”

The Mobile IPv6 Management Information Base (MOBILEIPV6-MIB) is assumed to always be implemented alongside the IPv6-capable version of the IP-MIB [RFC4293] 🌸 The MOBILEIPV6-MIB uses the textual conventions defined in the INET-ADDRESS-MIB [RFC4001] ✨

The Mobile-IPv6 MIB is organized into these groups of definitions:

  • mip6Core: a generic group with objects that are common to all Mobile IPv6 entities.
  • mip6Ha: models the home agent service. It has objects specific to the services and associated advertisement parameters that the home agent offers on each of its links. It also has objects for maintaining the home agent list on each link where the service is offered.
  • mip6Mn: models the mobile node service. It has objects specific to the Dynamic Home Agent discovery function and its related parameters. It also has objects that record the movement of the mobile node.
  • mip6Cn: models the correspondent node, and is mostly about its part in the Return Routability procedure that the mobile node triggers for Route Optimization πŸ¦‹
  • mip6Notifications: defines the notifications used to asynchronously monitor Mobile IPv6 entities πŸ””

The tables in the groups above are:

   mip6BindingCacheTable   : models the binding cache on the home
                             agent and correspondent node.  It
                             contains details of the Binding Update
                             requests that have been received and
                             accepted.
   mip6BindingHistoryTable : tracks the history of the binding
                             cache.
   mip6NodeTrafficTable    : the mobile node-wise traffic counters.

   mip6MnHomeAddressTable  : contains all the home addresses
                             pertaining to the mobile node and
                             the corresponding registration status.
   mip6MnBLTable           : models the Binding Update List on the
                             mobile node.  It contains information
                             about the registration requests sent
                             by the mobile node and the
                             corresponding results.
   mip6CnCounterTable      : contains the mobile node-wise
                             registration statistics.
   mip6HaConfTable         : contains the configurable
                             advertisement parameters for all the
                             interfaces on which the home agent
                             service is advertised.
   mip6HaCounterTable      : contains registration statistics
                             for all mobile nodes registered
                             with the home agent.
   mip6HaListTable         : contains the list of all routers
                             that are acting as home agents on
                             each of the interfaces on which
                             the home agent service is offered
                             by this router.
   mip6HaGlAddrTable       : contains the global addresses of
                             the home agents.

5. The Mobile-IPv6 MIB. 🧜

Here's where the actual MIB module starts. It's a big, serious block of code, so I'm keeping it exactly as it is 🫢

  MOBILEIPV6-MIB DEFINITIONS ::= BEGIN
   IMPORTS
     MODULE-IDENTITY, mib-2, Unsigned32, Integer32, Counter32,
     Gauge32, Counter64,
     OBJECT-TYPE, NOTIFICATION-TYPE
                FROM SNMPv2-SMI
     TEXTUAL-CONVENTION,
     TruthValue, DateAndTime, TimeStamp
                FROM SNMPv2-TC
     MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                FROM SNMPv2-CONF
     InetAddressType, InetAddress
                FROM INET-ADDRESS-MIB
     ipv6InterfaceIfIndex
                FROM IP-MIB
     ;

 mip6MIB MODULE-IDENTITY
      LAST-UPDATED "200602010000Z"        --  1st February 2006
      ORGANIZATION "IETF mip6 Working Group"
      CONTACT-INFO
     "                      Glenn Mansfield Keeni
                    Postal: Cyber Solutions Inc.
                            6-6-3, Minami Yoshinari
                            Aoba-ku, Sendai, Japan 989-3204.
                       Tel: +81-22-303-4012
                       Fax: +81-22-303-4015
                    E-mail: glenn@cysols.com

                            Kenichi Nagami
                    Postal: INTEC NetCore Inc.
                            1-3-3, Shin-suna
                            Koto-ku, Tokyo, 135-0075
                            Japan

                       Tel: +81-3-5665-5069
                    E-mail: nagami@inetcore.com

                            Kazuhide Koide
                    Postal: Tohoku University
                            2-1-1, Katahira
                            Aoba-ku, Sendai, 980-8577
                            Japan

                       Tel: +81-22-217-5454
                    E-mail: koide@shiratori.riec.tohoku.ac.jp

Okay bestie, we're still in the MIB module, and this chunk is where the Binding Cache lives. The contact block comes first, then the big tree of groups, the textual convention for rejection codes, and the first half of the Binding Cache table. Let's gooo πŸ¦‹

                                Sri Gundavelli
                        Postal: Cisco Systems
                                170 W.Tasman Drive,
                                San Jose, CA 95134
                                USA

                           Tel: +1-408-527-6109
                        E-mail: sgundave@cisco.com

             Support Group E-mail: mip6@ietf.org"

             DESCRIPTION
                     "The MIB module for monitoring Mobile-IPv6
                      entities.

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

             REVISION    "200602010000Z"      -- 1st February 2006
             DESCRIPTION "Initial version, published as RFC 4295."

                  ::= { mib-2 133 }


       -- The major groups

       mip6Notifications        OBJECT IDENTIFIER ::= { mip6MIB 0 }
       mip6Objects              OBJECT IDENTIFIER ::= { mip6MIB 1 }
       mip6Conformance          OBJECT IDENTIFIER ::= { mip6MIB 2 }
       mip6Core                 OBJECT IDENTIFIER ::= { mip6Objects 1 }
       mip6Mn                   OBJECT IDENTIFIER ::= { mip6Objects 2 }
       mip6Cn                   OBJECT IDENTIFIER ::= { mip6Objects 3 }
       mip6Ha                   OBJECT IDENTIFIER ::= { mip6Objects 4 }

       -- The sub groups

       mip6System               OBJECT IDENTIFIER ::= { mip6Core 1 }
       mip6Bindings             OBJECT IDENTIFIER ::= { mip6Core 2 }
       mip6Stats                OBJECT IDENTIFIER ::= { mip6Core 3 }

       mip6MnSystem             OBJECT IDENTIFIER ::= { mip6Mn 1 }
       mip6MnConf               OBJECT IDENTIFIER ::= { mip6Mn 2 }
       mip6MnRegistration       OBJECT IDENTIFIER ::= { mip6Mn 3 }

       mip6CnSystem             OBJECT IDENTIFIER ::= { mip6Cn 1 }
       mip6CnStats              OBJECT IDENTIFIER ::= { mip6Cn 2 }

       mip6HaAdvertisement      OBJECT IDENTIFIER ::= { mip6Ha 1 }
       mip6HaStats              OBJECT IDENTIFIER ::= { mip6Ha 2 }



      -- Textual Conventions
       Mip6BURequestRejectionCode ::= TEXTUAL-CONVENTION
              STATUS        current
              DESCRIPTION
                      "The value of the status field in the Binding
                       Acknowledgment message when the Binding Update
                       was rejected.
                      "
              REFERENCE
                      "RFC 3775 : Section 6.1.8"
              SYNTAX  INTEGER {
                      reasonUnspecified               (1),  --(Code 128)
                      admProhibited                   (2),  --(Code 129)
                      insufficientResource            (3),  --(Code 130)
                      homeRegistrationNotSupported    (4),  --(Code 131)
                      notHomeSubnet                   (5),  --(Code 132)
                      notHomeAgentForThisMobileNode   (6),  --(Code 133)
                      duplicateAddressDetectionFailed (7),  --(Code 134)
                      sequenceNumberOutOfWindow       (8),  --(Code 135)
                      expiredHomeNonceIndex           (9),  --(Code 136)
                      expiredCareofNonceIndex         (10), --(Code 137)
                      expiredNonces                   (11), --(Code 138)
                      registrationTypeChangeDisallowed(12)  --(Code 139)
                     }

       mip6Capabilities OBJECT-TYPE
           SYNTAX      BITS {
                            mobileNode         (0),
                            homeAgent          (1),
                            correspondentNode  (2)
                       }
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "This object indicates the Mobile IPv6 functions that
                    are supported by this managed entity.  Multiple
                    Mobile IPv6 functions may be supported by a single
                    entity.
                   "
           REFERENCE
                   "RFC 3775 : Section 3.2, 4.1"
           ::= { mip6System 1 }

       mip6Status OBJECT-TYPE
           SYNTAX      INTEGER { enabled(1), disabled(2) }
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "This object indicates whether the Mobile IPv6
                    function is enabled for the managed entity.  If it
                    is enabled, the agent discovery and registration
                    functions will be operational.
                    Changing the status from enabled(1) to disabled(2)
                    will terminate the agent discovery and registration
                    functions.  On the other hand, changing the status
                    from disabled(2) to enabled(1) will start the agent
                    discovery and registration functions.

                    The value of this object SHOULD remain unchanged
                    across reboots of the managed entity.
                   "
           ::= { mip6System 2 }


       -- mip6BindingCache

        mip6BindingCacheTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6BindingCacheEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "This table models the Binding Cache on the
                    managed entity.  The cache is maintained by home
                    agents and correspondent nodes.  It contains
                    both correspondent registration entries and home
                    registration entries.

                    Entries in this table are not required to survive
                    a reboot of the managed entity.
                   "
           REFERENCE
                   "RFC 3775 : Section 4.5, 9.1, 10.1"
           ::= { mip6Bindings 1 }

        mip6BindingCacheEntry OBJECT-TYPE
           SYNTAX      Mip6BindingCacheEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "This entry represents a conceptual row in the
                    binding cache table.  It represents a single Binding
                    Update.

                    Implementors need to be aware that if the total
                    number of octets in mip6BindingHomeAddress
                    exceeds 113, then OIDs of column
                    instances in this row will have more than 128
                    sub-identifiers and cannot be accessed using
                    SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX  { mip6BindingHomeAddressType, mip6BindingHomeAddress }
           ::= { mip6BindingCacheTable 1 }

        Mip6BindingCacheEntry ::=
           SEQUENCE {
            mip6BindingHomeAddressType   InetAddressType,
            mip6BindingHomeAddress       InetAddress,
            mip6BindingCOAType           InetAddressType,
            mip6BindingCOA               InetAddress,
            mip6BindingTimeRegistered    DateAndTime,
            mip6BindingTimeGranted       Gauge32,
            mip6BindingTimeRemaining     Gauge32,
            mip6BindingHomeRegn          TruthValue,
            mip6BindingMaxSeq            Unsigned32,
            mip6BindingUsageTS           DateAndTime,
            mip6BindingUsageCount        Gauge32,
            mip6BindingAdminStatus       INTEGER
           }

       mip6BindingHomeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6BindingHomeAddress
                    that follows.
                   "
           ::= { mip6BindingCacheEntry 1 }

       mip6BindingHomeAddress OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The home address of the mobile node corresponding
                    to the Binding Cache entry.  This field is used as
                    the key for searching the mobile node's current
                    care-of address in the Binding Cache.

                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6BindingHomeAddressType object.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 2 }

       mip6BindingCOAType   OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6BindingCOA that
                    follows.
                   "
           ::= { mip6BindingCacheEntry 3 }

       mip6BindingCOA   OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The care-of address of the mobile node indicated by
                    the home address field (mip6BindingHomeAddress) in
                    this Binding Cache entry.

                    The type of the address represented by this object
                    is specified by the corresponding mip6BindingCOAType
                    object.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 4 }

        mip6BindingTimeRegistered OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The timestamp when this Binding Cache entry was
                    created.
                   "
           ::= { mip6BindingCacheEntry 5 }

        mip6BindingTimeGranted OBJECT-TYPE
           SYNTAX      Gauge32
           UNITS       "seconds"
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The lifetime in seconds granted to the mobile node
                    for this registration.
                   "
           ::= { mip6BindingCacheEntry 6 }

       mip6BindingTimeRemaining OBJECT-TYPE
           SYNTAX      Gauge32
           UNITS       "seconds"
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The lifetime in seconds remaining for this
                    registration.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 7 }

        mip6BindingHomeRegn OBJECT-TYPE
           SYNTAX      TruthValue
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "This object indicates whether or not this Binding
                    Cache entry is a home registration entry (applicable
                    only on nodes that support home agent
                    functionality).
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 8 }

        mip6BindingMaxSeq OBJECT-TYPE
           SYNTAX      Unsigned32 (0..65536)
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The maximum value of the Sequence Number field
                    received in previous Binding Updates for this home
                    address (mip6BindingHomeAddress).
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1, 9.5.1"
           ::= { mip6BindingCacheEntry 9 }

Okay so the big thing to clock here is that the Binding Cache is the star of the show 🌸 The table is indexed by the mobile node's home address, and each row is one Binding Update. The mip6BindingCacheEntry description has a little warning about the 113-octet limit and the 128 sub-identifier thing, which is giving "SNMP limits are real, bestie" πŸ’€

And the rejection codes? Iconic πŸ‘‘ They're the values you see in the status field of a Binding Acknowledgment when a Binding Update gets turned down. Reason unspecified, admin prohibited, insufficient resource, the whole drama πŸ’…

We've still got the rest of the Binding Cache columns and the other tables coming up in the next part, so stay tuned 🧚✨

okay bestie, we're still in the MIB and it's giving history + traffic vibes πŸ¦‹

        mip6BindingUsageTS OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The timestamp when this entry was last looked up.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 10 }

        mip6BindingUsageCount OBJECT-TYPE
           SYNTAX      Gauge32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of times this entry was looked up.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 11 }

        mip6BindingAdminStatus OBJECT-TYPE
           SYNTAX      INTEGER {
                           active     (1),
                           inactive   (2)
                       }
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "This is an administrative object used to control
                    the status of a binding cache entry.  By default
                    the value will be 'active'(1).
                    A value of 'inactive'(2) will indicate that the
                    validity of the entry is suspended.  It does not
                    exist in the binding cache for all practical
                    purposes.
                    The state can be changed from 'active' to
                    'inactive' by operator intervention.
                    Causing the state to change to 'inactive' results
                    in the entry being deleted from the cache.
                    Attempts to change the status from 'inactive'
                    to 'active' will be rejected.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.1"
           ::= { mip6BindingCacheEntry 12 }

       -- mip6BindingHistory
       -- Once the lifetime expires an entry will be removed from the
       -- Binding Cache.
       -- For monitoring purposes it will be useful to have access to
       -- the history of the Binding Cache.  BindingHistoryTable serves
       -- this purpose.  It records the history of the Bindings.
       -- The size of the table will be left to implementors.

        mip6BindingHistoryTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6BindingHistoryEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "A table containing a record of the bindings.
                   "
           ::= { mip6Bindings 2 }

        mip6BindingHistoryEntry OBJECT-TYPE
           SYNTAX      Mip6BindingHistoryEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The record of a binding.

                    Implementors need to be aware that if the total
                    number of octets in mip6BindingHstHomeAddress
                    exceeds 112, then OIDs of column
                    instances in this row will have more than 128
                    sub-identifiers and cannot be accessed using
                    SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX   { mip6BindingHstHomeAddressType,
                     mip6BindingHstHomeAddress ,
                     mip6BindingHstIndex}
           ::= { mip6BindingHistoryTable 1 }

        Mip6BindingHistoryEntry ::=
           SEQUENCE {
            mip6BindingHstHomeAddressType   InetAddressType,
            mip6BindingHstHomeAddress       InetAddress,
            mip6BindingHstIndex             Unsigned32,
            mip6BindingHstCOAType           InetAddressType,
            mip6BindingHstCOA               InetAddress,
            mip6BindingHstTimeRegistered    DateAndTime,
            mip6BindingHstTimeExpired       DateAndTime,
            mip6BindingHstHomeRegn          TruthValue,
            mip6BindingHstUsageTS           DateAndTime,
            mip6BindingHstUsageCount        Gauge32
           }

       mip6BindingHstHomeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the
                    mip6BindingHstHomeAddress that follows.
                   "
           ::= { mip6BindingHistoryEntry 1 }

       mip6BindingHstHomeAddress OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "Mobile node's home address.

                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6BindingHstHomeAddressType object.
                   "
           ::= { mip6BindingHistoryEntry 2 }

       mip6BindingHstIndex OBJECT-TYPE
           SYNTAX      Unsigned32 (1..4294967295)
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The index to uniquely identify this record along
                    with the mobile node's HomeAddress type and
                    HomeAddress.  It should be monotonically increasing.
                    It may wrap after reaching its max value."
           ::= { mip6BindingHistoryEntry 3 }

       mip6BindingHstCOAType   OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6BindingHstCOA that
                    follows.
                   "
           ::= { mip6BindingHistoryEntry 4 }

       mip6BindingHstCOA   OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Mobile node's care-of address.  One mobile node can
                    have multiple bindings with different
                    care-of addresses.
                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6BindingHstCOAType object.
                   "
           ::= { mip6BindingHistoryEntry 5 }

        mip6BindingHstTimeRegistered OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The timestamp when this Binding Cache entry was
                    created.
                   "
           ::= { mip6BindingHistoryEntry 6 }

        mip6BindingHstTimeExpired OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The timestamp when this Binding Cache entry expired.
                   "
           ::= { mip6BindingHistoryEntry 7 }

        mip6BindingHstHomeRegn OBJECT-TYPE
           SYNTAX      TruthValue
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "This object indicates whether or not this Binding
                    Cache entry is a home registration entry (applicable
                    only on nodes that support home agent
                    functionality).
                   "
           ::= { mip6BindingHistoryEntry 8 }

        mip6BindingHstUsageTS OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The timestamp when this entry was last looked up.
                   "
           ::= { mip6BindingHistoryEntry 9 }

        mip6BindingHstUsageCount OBJECT-TYPE
           SYNTAX      Gauge32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of times this entry was looked up.
                   "
           ::= { mip6BindingHistoryEntry 10 }

       -- mip6TrafficCounters

       -- MIPv6 Traffic will be characterized by
       -- IPv6 datagrams which satisfy at least one of the following
       -- conditions
       --   - the datagrams are tunneled to the mobile node by the HA
       --   - the datagrams are reverse tunneled by the MN to the HA
       --   - the datagrams have the Routing header type 2 set.
       --   - the datagrams have the Home Address option set in the
       --     Destination Option extension header
       --   - the datagrams have the mobility header

        mip6TotalTraffic OBJECT IDENTIFIER ::= { mip6Stats 1 }
       --  REFERENCE
       --             "RFC 3775 : Section 4.1, 6.3, 6.4"

        mip6InOctets  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The total number of octets in the MIPv6 datagrams
                   received by the MIPv6 entity.  This will include
                   datagrams with the Mobility Header, the Home Address
                   option in the Destination Option extension header
                   (Next Header value = 60), or the type 2 Routing
                   Header.  It will also include the IPv6 datagrams that
                   are reverse tunneled to a home agent from a mobile
                   node's home address.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CounterDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 1 }

        mip6HCInOctets  OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The total number of octets in the MIPv6 datagrams
                   received by the MIPv6 entity.  This will include
                   datagrams with the Mobility Header, the Home Address
                   option in the Destination Option extension header
                   (Next Header value = 60), or the type 2 Routing
                   Header.  It will also include the IPv6 datagrams that
                   are reverse tunneled to a home agent from a mobile
                   node's home address.
                   This object is a 64-bit version of mip6InOctets.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CounterDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 2 }

that's the end of this chunk, and the traffic counters are giving main character energy πŸ’…βœ¨

Okay so we're still deep in the MIB, bestie, and these counters are literally the scorekeepers πŸ’…πŸ§š. The first block is the total traffic counters for the whole MIPv6 entity: packets and octets, in both 32-bit and 64-bit versions, plus a timestamp for when they last got reset. Every one of them points back to RFC 3775 Sections 6.1, 6.3, 6.4 and 10.4.5 πŸ¦‹

        mip6InPkts    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams received by the MIPv6
                    entity.  This will include datagrams with the
                    Mobility Header, the Home Address option in the
                    Destination Option extension header (Next Header
                    value = 60), or the type 2 Routing Header.
                    It will also include the IPv6 datagrams that are
                    reverse tunneled to a home agent from a mobile
                    node's home address.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 3 }

        mip6HCInPkts    OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams received by the MIPv6
                    entity.  This will include datagrams with the
                    Mobility Header, the Home Address option in the
                    Destination Option extension header (Next Header
                    value = 60), or the type 2 Routing Header.  It will
                    also include the IPv6 datagrams that are reverse
                    tunneled to a home agent from a mobile node's home
                    address.
                    This object is a 64-bit version of mip6InPkts.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 4 }

        mip6OutOctets  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The total number of octets in the MIPv6 datagrams
                   sent by the MIPv6 entity.  This will include
                   datagrams with the Mobility Header, the Home Address
                   option in the Destination Option extension header
                   (Next Header value = 60), or the type 2 Routing
                   Header.  It will also include the IPv6 datagrams that
                   are reverse tunneled to a home agent from a mobile
                   node's home address.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CounterDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 5 }

        mip6HCOutOctets  OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The total number of octets in the MIPv6 datagrams
                   sent by the MIPv6 entity.  This will include
                   datagrams with the Mobility Header, the Home Address
                   option in the Destination Option extension header
                   (Next Header value = 60), or the type 2 Routing
                   Header.  It will also include the IPv6 datagrams that
                   are reverse tunneled to a home agent from a mobile
                   node's home address.
                   This object is a 64-bit version of mip6OutOctets.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CounterDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 6 }

        mip6OutPkts    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams sent by the MIPv6
                    entity.  This will include the datagrams with
                    Mobility Header, the Home Address option in the
                    Destination Option extension header (Next Header
                    value = 60), or the type 2 Routing Header.  It will
                    also include the IPv6 datagrams that are reverse
                    tunneled to a home agent from a mobile node's home
                    address.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 7 }

        mip6HCOutPkts    OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams sent by the MIPv6
                    entity.  This will include datagrams with the
                    Mobility Header, the Home Address option in the
                    Destination Option extension header (Next Header
                    value = 60), or the type 2 Routing Header.  It will
                    also include the IPv6 datagrams that are reverse
                    tunneled to a home agent from a mobile node's home
                    address.
                    This object is a 64-bit version of mip6OutPkts.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6TotalTraffic 8 }

        mip6CounterDiscontinuityTime OBJECT-TYPE
           SYNTAX      TimeStamp
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The value of sysUpTime on the most recent occasion
                    at which any one or more of this MIPv6 entities
                    global counters, viz., counters with OID prefix
                    'mip6TotalTraffic' or 'mip6CnGlobalStats' or
                    'mip6HaGlobalStats' suffered a discontinuity.
                    If no such discontinuities have occurred since the
                    last re-initialization of the local management
                    subsystem, then this object will have a zero value.
                   "
           ::= { mip6TotalTraffic 9 }

Next up is the per mobile node traffic stuff πŸŽ€. Instead of one big global bucket, you get a whole table with one row per mobile node, keyed by its home address. Heads up though: the row's DESCRIPTION has a big warning about long home addresses (more than 113 octets) making the OIDs too long for SNMPv1, SNMPv2c and SNMPv3 to reach, so that's something to keep in mind πŸ™ˆ

       -- mip6NodeTrafficCounters

        mip6NodeTrafficTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6NodeTrafficEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "A table containing MIPv6 traffic counters per mobile
                    node.
                   "
           ::= { mip6Stats 2 }

        mip6NodeTrafficEntry OBJECT-TYPE
           SYNTAX      Mip6NodeTrafficEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The MIPv6 traffic statistics for a mobile node.

                    Implementors need to be aware that if the total
                    number of octets in mip6BindingHomeAddress
                    exceeds 113, then OIDs of column
                    instances in this row will have more than 128
                    sub-identifiers and cannot be accessed using
                    SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX  { mip6BindingHomeAddressType, mip6BindingHomeAddress }
           ::= { mip6NodeTrafficTable 1 }

        Mip6NodeTrafficEntry ::=
           SEQUENCE {
                 mip6NodeInOctets             Counter32,
                 mip6HCNodeInOctets           Counter64,
                 mip6NodeInPkts               Counter32,
                 mip6HCNodeInPkts             Counter64,
                 mip6NodeOutOctets            Counter32,
                 mip6HCNodeOutOctets          Counter64,
                 mip6NodeOutPkts              Counter32,
                 mip6HCNodeOutPkts            Counter64,
                 mip6NodeCtrDiscontinuityTime TimeStamp
           }

        mip6NodeInOctets  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of octets in the MIPv6 datagrams
                    received from the mobile node by the MIPv6 entity.
                    This will include datagrams with the Mobility
                    Header or the Home Address option in the Destination
                    Option extension header (Next Header value = 60).
                    It will also include the IPv6 datagrams that are
                    reverse tunneled to a home agent from the mobile
                    node's home address.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 1 }

        mip6HCNodeInOctets  OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of octets in the MIPv6 datagrams
                    received from the mobile node by the MIPv6 entity.
                    This will include datagrams with the Mobility
                    Header or the Home Address option in the Destination
                    Option extension header (Next Header value = 60).
                    It will also include the IPv6 datagrams that are
                    reverse tunneled to a home agent from the mobile
                    node's home address.
                    This object is a 64-bit version of mip6NodeInOctets.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 2 }

okay so we're still in the traffic counters πŸ¦‹ these count MIPv6 datagrams and octets going to and from the mobile node, and the 64-bit "HC" versions exist so the numbers don't wrap around too fast πŸ“Šβœ¨

        mip6NodeInPkts    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams received from the
                    mobile node by the MIPv6 entity.  This will include
                    the datagrams with the Mobility Header or
                    the Home Address option in the Destination
                    Option extension header (Next Header value = 60).
                    It will also include the IPv6 datagrams that are
                    reverse tunneled to a home agent from the mobile
                    node's home address.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 3 }

        mip6HCNodeInPkts    OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams received from the
                    mobile node by the MIPv6 entity.  This will include
                    datagrams with the Mobility Header or the Home
                    Address option in the Destination Option extension
                    header (Next Header value = 60).  It will also
                    include the IPv6 datagrams that are reverse tunneled
                    to a home agent from the mobile node's home address.
                    This object is a 64-bit version of mip6NodeInPkts.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 4 }

        mip6NodeOutOctets  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of octets in the MIPv6 datagrams
                    sent to the mobile node by the MIPv6 entity.  This
                    will include datagrams with the Mobility Header
                    or the type 2 Routing Header.  It will also include
                    the IPv6 datagrams that are tunneled by a home agent
                    to the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 5 }

        mip6HCNodeOutOctets  OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The total number of octets in the MIPv6 datagrams
                   sent to the mobile node by the MIPv6 entity.  This
                   will include datagrams with the Mobility Header
                   or the type 2 Routing Header.  It will also include
                   the IPv6 datagrams that are tunneled by a home agent
                   to the mobile node.
                   This object is a 64-bit version of mip6NodeOutOctets.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6NodeCtrDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 6 }

        mip6NodeOutPkts    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of MIPv6 datagrams sent to the mobile
                    node by the MIPv6 entity.  This will include
                    datagrams with the Mobility Header or the type 2
                    Routing Header.  It will also include the IPv6
                    datagrams that are tunneled by a home agent to the
                    mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6NodeCtrDiscontinuityTime.
                   "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 7 }

        mip6HCNodeOutPkts    OBJECT-TYPE
           SYNTAX      Counter64
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The number of MIPv6 datagrams sent to the mobile
                   node by the MIPv6 entity.  This will include
                   datagrams with the Mobility Header or the type 2
                   Routing Header.  It will also include the IPv6
                   datagrams that are tunneled by a home agent to the
                   mobile node.
                   This object is a 64-bit version of mip6NodeOutOctets.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6NodeCtrDiscontinuityTime.
                  "
           REFERENCE
                      "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5"
           ::= { mip6NodeTrafficEntry 8 }

        mip6NodeCtrDiscontinuityTime OBJECT-TYPE
           SYNTAX      TimeStamp
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The value of sysUpTime on the most recent occasion
                    at which any one or more of the counters in this row
                    suffered a discontinuity.  The relevant counters are
                    the specific instances of any Counter32 or Counter64
                    objects in this row.
                    If no such discontinuities have occurred since the
                    last re-initialization of the local management
                    subsystem, then this object contains a zero value.
                   "
           ::= { mip6NodeTrafficEntry 9 }

       -- mip6MnSystem Group

       mip6MnHomeAddressTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6MnHomeAddressEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "A table containing registration status for all the
                    home addresses pertaining to the mobile node.
                   "
           ::= { mip6MnSystem 1 }

        mip6MnHomeAddressEntry OBJECT-TYPE
           SYNTAX      Mip6MnHomeAddressEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The registration status for a home address.

                    Implementors need to be aware that if the total
                    number of octets in mip6MnHomeAddress
                    exceeds 113, then OIDs of column instances in
                    this row will have more than 128 sub-identifiers and
                    cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX   { mip6MnHomeAddressType, mip6MnHomeAddress }
           ::= { mip6MnHomeAddressTable 1 }

        Mip6MnHomeAddressEntry ::=
           SEQUENCE {
                 mip6MnHomeAddressType            InetAddressType,
                 mip6MnHomeAddress                InetAddress,
                 mip6MnHomeAddressState           INTEGER
           }

       mip6MnHomeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6MnHomeAddress that
                    follows.
                   "
           ::= { mip6MnHomeAddressEntry 1 }

       mip6MnHomeAddress OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "A unicast routable address assigned to the mobile
                   node.  This is used as the 'permanent address' of the
                   mobile node in the sense that it remains unchanged
                   regardless of the mobile node's current point of
                   attachment.  If mobile node doesn't have a home
                   address assigned yet, then this object will take the
                   default 'unspecified' value ::0.

                   The type of the address represented by this object
                   is specified by the corresponding
                   mip6MnHomeAddressType object.
                  "
           REFERENCE
                   "RFC 3775 : Section 3.2"
           ::= { mip6MnHomeAddressEntry 2 }

       mip6MnHomeAddressState OBJECT-TYPE
           SYNTAX      INTEGER {
                               unknown(1),
                               home(2),
                               registered(3),
                               pending(4),
                               isolated(5)
                       }
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "This object indicates the state of the mobile node:
                    unknown     -- The state of the mobile node
                                   cannot be determined.
                    home        -- mobile node is on the home network.
                    registered  -- mobile node is on a foreign network
                                   and is registered with the home
                                   agent.
                    pending     -- mobile node has sent registration
                                   request to the home agent and is
                                   waiting for the reply.
                    isolated    -- mobile node is isolated from network,
                                   i.e., it is not in its home network,
                                   it is not registered, and no
                                   registration ack is pending.
                   "
           ::= { mip6MnHomeAddressEntry 3 }

       -- Mobile Node Discovery and Advertisement Group Counters

       mip6MnDiscoveryRequests OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Dynamic Home Agent Address
                    Discovery Requests sent by the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.5, 11.4.1"
              ::= { mip6MnConf 1 }

the home-address table is where the mobile node's "permanent address" lives, and the state object tells you whether it's home, registered, pending, or isolated πŸ πŸ’œ

okay so we're picking up right where the counters left off πŸ’– this part is all about the mobile node's discovery, prefix, and move-detection counters, then the start of the Binding Update List registration group πŸ¦‹

       mip6MnDiscoveryReplies OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Dynamic Home Agent Address
                    Discovery Replies received by the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.5, 11.4.1"
              ::= { mip6MnConf 2 }

       mip6MnDiscoveryTimeouts OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Dynamic Home Agent Address
                    Discovery Requests that timed out.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.5, 11.4.1, 12"
              ::= { mip6MnConf 3 }

       mip6MnPrefixSolicitationsSent OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Mobile Prefix Solicitations
                    sent by the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.5, 11.4.2"
              ::= { mip6MnConf 4 }

       mip6MnPrefixAdvsRecd OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Mobile Prefix Advertisements
                    received by the mobile node.  This will include the
                    ICMP Mobile Prefix Advertisements that failed the
                    validity checks.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.6, 11.4.3"
           ::= { mip6MnConf 5 }

       mip6MnPrefixAdvsIgnored OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Mobile Prefix Advertisements
                    discarded by the validity check.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.6, 11.4.3"
           ::= { mip6MnConf 6 }

       mip6MnMovedToFN OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Number of times the mobile node has detected
                    movement to a foreign network from another
                    foreign network or from the home network, has
                    reconstructed its care-of address and has initiated
                    the care-of address registration process.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.5.1"
           ::= { mip6MnConf 7 }

       mip6MnMovedToHN OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Number of times the mobile node has detected
                    movement from a foreign network to its home
                    network.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.5.4"
           ::= { mip6MnConf 8 }

       -- Mobile Node Registration Group

       -- Registration table of mobile node
       mip6MnBLTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6MnBLEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "This table corresponds to the Binding Update List
                   (BL) that is maintained by the mobile node.  The list
                   holds an item for every binding that the mobile node
                   has established or is trying to establish.  Both
                   correspondent and home registrations are included in
                   this table.  Entries from the table are deleted as
                   the lifetime of the binding expires.
                  "
           REFERENCE
                   "RFC 3775 : Section 4.5, 11.1"
           ::= { mip6MnRegistration 1 }

       mip6MnBLEntry OBJECT-TYPE
           SYNTAX      Mip6MnBLEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "Information about a Binding Update sent by the
                    mobile node either to its home agent or to one of
                    its correspondent nodes.

                    Implementors need to be aware that if the total
                    number of octets in mip6MnHomeAddress and
                    mip6MnBLNodeAddress exceeds 111, then OIDs of column
                    instances in this row will have more than 128
                    sub-identifiers and cannot be accessed using
                    SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX { mip6MnHomeAddressType,
                   mip6MnHomeAddress,
                   mip6MnBLNodeAddressType,
                   mip6MnBLNodeAddress
                 }
           ::= { mip6MnBLTable 1 }

       Mip6MnBLEntry ::= SEQUENCE {
           mip6MnBLNodeAddressType   InetAddressType,
           mip6MnBLNodeAddress       InetAddress,
           mip6MnBLCOAType           InetAddressType,
           mip6MnBLCOA               InetAddress,
           mip6MnBLLifeTimeRequested Unsigned32,
           mip6MnBLLifeTimeGranted   Unsigned32,
           mip6MnBLMaxSeq            Unsigned32,
           mip6MnBLTimeSent          DateAndTime,
           mip6MnBLAccepted          TruthValue,
           mip6MnBLAcceptedTime      DateAndTime,
           mip6MnBLRetransmissions   Gauge32,
           mip6MnBLDontSendBUFlag    TruthValue
           }

       mip6MnBLNodeAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                    "The InetAddressType of the mip6MnBLNodeAddress
                     that follows.
                    "
           ::= { mip6MnBLEntry 1 }

       mip6MnBLNodeAddress OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The address of the agent as used in the destination
                    address of the Binding Update.  The agent
                    may be a home agent or a correspondent node.

                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6MnBLNodeAddressType object.

                    "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 2 }

       mip6MnBLCOAType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The InetAddressType of the mip6MnBLCOA that follows.
                   "
           ::= { mip6MnBLEntry 3 }

       mip6MnBLCOA OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Care-of address that the mobile node intends to
                    register in the Binding Update request.

                    The type of the address represented by this object
                    is specified by the corresponding mip6MnBLCOAType
                    object.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 4 }

       mip6MnBLLifeTimeRequested OBJECT-TYPE
           SYNTAX      Unsigned32
           UNITS       "seconds"
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The lifetime requested by the mobile node (in
                    seconds) in the Binding Update.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 5 }

       mip6MnBLLifeTimeGranted OBJECT-TYPE
           SYNTAX      Unsigned32
           UNITS       "seconds"
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The lifetime granted to the mobile node for this
                    binding.  This field will be inaccessible if the
                    Binding Update request has not been accepted.
                    The lifetime remaining (lR) can be calculated using
                    the current time (cT), mip6MnBLAcceptedTime (aT) and
                    mip6MnBLLifeTimeGranted (lG) as follows:
                            lR  = lG - (cT - aT).
                    When lR is zero, this entry will be deleted from the
                    Binding Update List and consequently from this
                    table.
                   "
           ::= { mip6MnBLEntry 6 }

       mip6MnBLMaxSeq OBJECT-TYPE
           SYNTAX      Unsigned32 (0..65536)
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The maximum value of the Sequence Number field sent
                    in previous Binding Updates to this destination.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 7 }

       mip6MnBLTimeSent OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time when the last (re-)transmission occurred."
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 8 }

Okay so we're still in the binding list table, and this bit wraps up the last few columns πŸ’… The first two are about whether the mobile node's Binding Update actually got accepted, and when that happened ⏰

       mip6MnBLAccepted OBJECT-TYPE
           SYNTAX      TruthValue
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "true(1) if the mobile node has received a
                    binding acknowledgment indicating that service has
                    been accepted (status code 0 or 1); false(2)
                    otherwise.  false(2) implies that the registration
                    is still pending.
                   "
           ::= { mip6MnBLEntry 9 }

       mip6MnBLAcceptedTime OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time at which the mobile node receives a binding
                    acknowledgment indicating that Binding Update has
                    been accepted (status code 0 or 1);
                    This object will be inaccessible if the Binding
                    Update request is still pending.
                   "
           ::= { mip6MnBLEntry 10 }

So mip6MnBLAccepted is basically a yes or no πŸ™Œ true(1) means the mobile node got a binding ack saying it's in (status code 0 or 1), and false(2) means the registration is still pending. mip6MnBLAcceptedTime is the timestamp for that moment the ack arrived, and it's just not available while the request is still hanging πŸ•°οΈ

Next up we've got retransmissions and the "don't send BUs here anymore" flag πŸ¦‹

       mip6MnBLRetransmissions  OBJECT-TYPE
           SYNTAX      Gauge32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The number of Binding Update retransmissions.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 11 }

       mip6MnBLDontSendBUFlag OBJECT-TYPE
           SYNTAX      TruthValue
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "true(1) indicates that future binding updates
                    will not be sent to mip6MnBLNodeAddress.
                    false(2) implies that binding updates will be
                    sent to mip6MnBLNodeAddress.
                    The mobile node sets this flag in the when it
                    receives an ICMP Parameter Problem, Code 1,
                    error message in response to a return
                    routability message or Binding Update sent to
                    mip6MnBLNodeAddress.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.1"
           ::= { mip6MnBLEntry 12 }

mip6MnBLRetransmissions is just a running Gauge32 count of how many times the Binding Update got resent, and it points back to RFC 3775 Section 11.1 πŸ” mip6MnBLDontSendBUFlag is the drama queen of this table πŸ™ˆ When it's true(1), no more binding updates go to that mip6MnBLNodeAddress. It gets flipped on when the mobile node gets an ICMP Parameter Problem, Code 1 error back after sending a return routability message or a Binding Update to that address πŸ’€


Now the mobile node registration counters, which live under mip6MnRegistration 2 πŸ“Š Every one of these is a Counter32, and they all share the same discontinuity note about re-initialization and mip6CounterDiscontinuityTime 🌸

       -- Mobile Node Registration Group Counters

       mip6MnRegnCounters OBJECT IDENTIFIER ::= { mip6MnRegistration 2 }

       mip6MnMobilityMessagesSent OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of mobility messages, i.e., IPv6
                    datagrams with Mobility Header, sent by the mobile
                    node.  There are 3 types of mobility messages, viz.,
                    Home Test Init, Care-of Test Init, and Binding
                    Updates, that are sent by mobile nodes.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 4.2, 6.1"
           ::= {  mip6MnRegnCounters 1 }

       mip6MnMobilityMessagesRecd OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of mobility messages, i.e., IPv6
                    datagrams with Mobility Header, received by the
                    mobile node.  There are 5 types of mobility
                    messages, viz., Home Test, Care-of Test, Binding
                    Acknowledgment, Binding Refresh Request, and Binding
                    Error, that are sent to mobile nodes.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 4.2, 6.1"
           ::= {  mip6MnRegnCounters 2 }

       mip6MnBUsToHA  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates sent to the mobile
                    node's home agent(s).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.7.1"
           ::= {  mip6MnRegnCounters 3 }

       mip6MnBUAcksFromHA  OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of valid binding acknowledgments
                    received from the mobile node's home agent(s).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.7.3"
           ::= {  mip6MnRegnCounters 4 }

       mip6MnBUsToCN OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates sent to
                    correspondent nodes by the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.7.2"
           ::= {  mip6MnRegnCounters 5 }

       mip6MnBUAcksFromCN OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of valid Binding Update acks
                    received from all the correspondent nodes.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.7.3"
           ::= {  mip6MnRegnCounters 6 }

       mip6MnBindingErrorsFromCN OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Error messages received
                    by mobile node from CN.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           ::= {  mip6MnRegnCounters 7 }

       mip6MnICMPErrorsRecd OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of ICMP Error messages of type ICMP
                    Parameter Problem, Code 1 or Code 2, received by
                    the mobile node from a correspondent node in
                    response to a return routability procedure, a
                    Binding Update, or a packet with the Home Address
                    option.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.3.5"
           ::= {  mip6MnRegnCounters 8 }

       mip6MnBRRequestsRecd OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Refresh requests
                    received by the mobile node from correspondent
                    nodes.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 11.7.4"
           ::= {  mip6MnRegnCounters 9 }

Those nine counters are the mobile node's mobility message tally sheet 🧾 They cover what it sends and receives, the Binding Updates going to home agents and correspondent nodes, the acks coming back, and the ICMP errors and Binding Refresh requests that show up along the way πŸ’œ


Last but not least, the correspondent node side, which sits under mip6CnGlobalStats 🧚

       -- Registration Group counters used for Correspondent Node
       mip6CnGlobalStats OBJECT IDENTIFIER ::= { mip6CnStats 1 }


       mip6CnHomeTestInitsRecd     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Home Test Init messages received.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.4.1"
           ::= { mip6CnGlobalStats 1 }

       mip6CnHomeTestsSent      OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Home Test messages sent.  If a Home
                    Test Init message is found to be valid, a Home Test
                    message will be generated and sent.  Otherwise the
                    Home Test message is silently discarded.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.4.3"
           ::= { mip6CnGlobalStats 2 }

       mip6CnCareOfTestInitsRecd     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Care-of Test Init messages received.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.4.2"
           ::= { mip6CnGlobalStats 3 }

       mip6CnCareOfTestsSent            OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Care-of Test messages sent.  If a
                    Care-of Test Init message is found to be valid, a
                    Care-of Test message will be generated and sent.
                    Otherwise the Care-of Test message is silently
                    discarded.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.4.4"
           ::= { mip6CnGlobalStats 4 }

These four CN counters are all about the return routability tests, so they track Home Test Init and Care-of Test Init messages received, plus the Home Test and Care-of Test messages sent back out 🫢 Note that a Home Test or Care-of Test only goes out when the matching Init message checks out as valid. Otherwise it just gets silently discarded 🀫

okay so this next batch is all the correspondent node's counters πŸŽ€ they basically keep score of every Binding Update, Binding Ack, and Binding Error that goes through the CN, so you can see what's actually happening πŸ“Šβœ¨

       mip6CnBUsRecd     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates received by the
                    correspondent node from mobile nodes.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.5.1"
           ::= { mip6CnGlobalStats 5 }

       mip6CnBUAcksSent    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of acknowledgments sent by the
                    correspondent node for the Binding Updates received.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.5.4"
           ::= { mip6CnGlobalStats 6 }


       mip6CnBRsSent     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Refresh Request messages
                    sent by the correspondent node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.5.5"
           ::= { mip6CnGlobalStats 7 }

        mip6CnBindingErrors OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Error messages sent by the
                    correspondent node to the mobile node.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.3.3"
           ::= { mip6CnGlobalStats 8 }

       mip6CnBUsAccepted   OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates accepted by the
                    correspondent node.  If a Binding Acknowledgment
                    message is sent for the Binding Update request,
                    the Status code field in the message will have
                    a value less than 128.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.5.1, 9.5.4"
           ::= { mip6CnGlobalStats 9 }

       mip6CnBUsRejected   OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected
                    by the correspondent node.  If a Binding
                    Acknowledgment message has been sent for the Binding
                    Update request, the Status code field in the
                    message will have a value greater than or equal to
                    128.  Otherwise the Binding Update request will be
                    silently discarded.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 9.5.1, 9.5.4"
           ::= { mip6CnGlobalStats 10 }

       mip6CnReasonUnspecified OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the correspondent node with status code in the
                    Binding Acknowledgment message indicating 'reason
                    unspecified' (Code 128).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8"
           ::= { mip6CnGlobalStats 11 }

       mip6CnInsufficientResource OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the correspondent node with status code in the
                    Binding Acknowledgment message indicating
                    'insufficient resources' (Code 130).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8"
           ::= { mip6CnGlobalStats 12 }

       mip6CnHomeRegnNotSupported OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "Total number of Binding Update requests rejected by
                   correspondent node with status code in the Binding
                   Acknowledgment message indicating 'home registration
                   not supported' (Code 131).
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CounterDiscontinuityTime.
                  "
           REFERENCE
                   "RFC 3775 : Section 10.3.1"
           ::= { mip6CnGlobalStats 13 }

       mip6CnSeqNumberOutOfWindow OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates rejected by
                    correspondent node with status code in the Binding
                    Acknowledgment message indicating 'sequence number
                    out of window' (Code 135).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8, 9.5.1"
           ::= { mip6CnGlobalStats 14 }

       mip6CnExpiredHomeNonceIndex OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Updates rejected by
                    correspondent node with status code in the Binding
                    Acknowledgment message indicating 'expired home
                    nonce index' (Code 136).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8, 9.5.1"
           ::= { mip6CnGlobalStats 15 }

       mip6CnExpiredCareOfNonceIndex OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Updates rejected by
                    correspondent node with status code in the Binding
                    Acknowledgment message indicating 'expired
                    care-of nonce index' (Code 137).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8, 9.5.1"
           ::= { mip6CnGlobalStats 16 }

       mip6CnExpiredNonce OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Updates rejected by
                    correspondent node with status code in the Binding
                    Acknowledgment message indicating 'expired nonces'
                    (Code 138), i.e., the correspondent node no longer
                    recognizes the Home Nonce Index value and the
                    Care-of Nonce Index value.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8, 9.5.1"
           ::= { mip6CnGlobalStats 17 }

       mip6CnRegTypeChangeDisallowed OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Updates rejected by
                    correspondent node with status code in the Binding
                    Acknowledgment message indicating 'registration
                    type change disallowed' (Code 139), i.e., a binding
                    already exists for the given home address and the
                    home registration flag has a different value than
                    the Home Registration (H) bit in the Binding Update.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 6.1.8, 9.5.1"
           ::= { mip6CnGlobalStats 18 }



       -- The Correspondent Node statistics by mobile node

       mip6CnCounterTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6CnCounterEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "A table containing each mobile ."
           ::= { mip6CnStats 2 }

that's the whole global stats crew πŸ’œ and the table at the bottom is just getting started, so the per-mobile-node breakdown is coming next πŸ¦‹

Okay so, we're picking up right where the counter table left off, bestie πŸ’– Here's the correspondent node counter entry, which is where the CN keeps its own receipts on the mobile node's Binding Updates 🧚

       mip6CnCounterEntry OBJECT-TYPE
           SYNTAX      Mip6CnCounterEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The set of correspondent node counters for a mobile
                    node.

                    Implementors need to be aware that if the total
                    number of octets in mip6BindingHomeAddress
                    exceeds 113, then OIDs of column instances in
                    this row will have more than 128 sub-identifiers and
                    cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX   {    mip6BindingHomeAddressType,
                        mip6BindingHomeAddress
                   }
           ::= { mip6CnCounterTable 1 }

       Mip6CnCounterEntry ::=
           SEQUENCE {
              mip6CnBURequestsAccepted       Counter32,
              mip6CnBURequestsRejected       Counter32,
              mip6CnBCEntryCreationTime      DateAndTime,
              mip6CnBUAcceptedTime           DateAndTime,
              mip6CnBURejectionTime          DateAndTime,
              mip6CnBURejectionCode          Mip6BURequestRejectionCode,
              mip6CnCtrDiscontinuityTime     TimeStamp
           }

       mip6CnBURequestsAccepted OBJECT-TYPE   --(Code 0,1)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests from the
                    mobile node accepted by the correspondent node.
                    If Binding Acknowledgment messages are sent, then
                    the status code in the message will have a value
                    less than 128.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CnCtrDiscontinuityTime.
                   "
           ::= { mip6CnCounterEntry 1 }

       mip6CnBURequestsRejected     OBJECT-TYPE
                                         -- (Code 128 through Code 159)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "Total number of Binding Update requests from the
                   mobile node that have been rejected by the
                   correspondent node.  This includes the Binding Update
                   requests for which a Binding Acknowledgment message
                   has been sent with status code value greater than or
                   equal to 128 and the Binding Acknowledgment requests
                   that have been silently discarded.
                   Discontinuities in the value of this counter can
                   occur at re-initialization of the management system,
                   and at other times as indicated by the value of
                   mip6CnCtrDiscontinuityTime.
                  "
           ::= { mip6CnCounterEntry 2 }

       mip6CnBCEntryCreationTime        OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time when the current Binding Cache entry was
                    created for the mobile node.
                   "
           ::= { mip6CnCounterEntry 3 }

       mip6CnBUAcceptedTime OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time at which the last Binding Update was
                    accepted by the correspondent node and the
                    corresponding Binding Cache entry was updated.
                   "
           ::= { mip6CnCounterEntry 4 }

       mip6CnBURejectionTime   OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time at which the last Binding Update message
                    was rejected by the correspondent node.
                    If there have been no rejections, then this object
                    will be inaccessible.
                   "
           ::= { mip6CnCounterEntry 5 }

       mip6CnBURejectionCode  OBJECT-TYPE
              SYNTAX      Mip6BURequestRejectionCode
              MAX-ACCESS  read-only
              STATUS      current
              DESCRIPTION
                     "If a Binding Acknowledgment is sent to the mobile
                      node, this is the status code (> 128) that is
                      returned in the Binding Acknowledgment.
                      In case a Binding Acknowledgment is not sent to
                      the mobile node, then this will be the value
                      of the Status code that corresponds to the reason
                      of the rejection.  If there have been no
                      rejections, then this object will be inaccessible.
                     "
           REFERENCE
                   "RFC 3775 : Section 6.1.8"

              ::= { mip6CnCounterEntry 6 }

        mip6CnCtrDiscontinuityTime OBJECT-TYPE
           SYNTAX      TimeStamp
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The value of sysUpTime on the most recent occasion
                   at which any one or more of counters in this row,
                   viz., instances of 'mip6CnBURequestsAccepted' and
                   'mip6CnBURequestsRejected', suffered a discontinuity.
                   If no such discontinuities have occurred since the
                   last re-initialization of the local management
                   subsystem, then this object will have a zero value.
                  "
           ::= { mip6CnCounterEntry 7 }

       -- Home agent group
       mip6HaAdvsRecd OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of valid Router Advertisements
                    received with the Home Agent (H) bit set, on
                    all the links on which it is serving as a Home
                    Agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 7"
           ::= { mip6HaAdvertisement 1 }


       mip6HaAdvsSent OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of unsolicited multicast Router
                    Advertisements sent with the Home Agent (H) bit set,
                    on all the links on which the router is serving as
                    a Home Agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
           REFERENCE
                   "RFC 3775 : Section 7"
           ::= { mip6HaAdvertisement 2 }


       mip6HaConfTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6HaConfEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "A table containing configurable advertisement
                   parameters for all interfaces on which the
                   home agent service is advertised.
                   It is RECOMMENDED that the last written values
                   of the objects in the conceptual rows of this
                   table will remain unchanged across reboots of
                   the managed entity provided that the interfaces
                   have not been renumbered after the reboot.
                  "
           ::= { mip6HaAdvertisement 3 }

       mip6HaConfEntry OBJECT-TYPE
           SYNTAX      Mip6HaConfEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "Advertisement parameters for an interface.
                   The instances of the columnar objects in this entry
                   pertain to the interface that is uniquely identified
                   by the ipv6InterfaceIfIndex of the interface.  The
                   same ipv6InterfaceIfIndex object is used to uniquely
                   identify instances of the columnar objects of this
                   conceptual row.
                  "
           INDEX   { ipv6InterfaceIfIndex }
           ::= { mip6HaConfTable 1 }

       Mip6HaConfEntry    ::= SEQUENCE {
             mip6HaAdvPreference               Integer32,
             mip6HaAdvLifetime                 Integer32,
             mip6HaPrefixAdv                   INTEGER,
             mip6HaPrefixSolicitation          INTEGER,
             mip6HaMCastCtlMsgSupport          INTEGER
           }

       mip6HaAdvPreference OBJECT-TYPE
           SYNTAX      Integer32 (0..65536)
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                  "The preference value for the home agent to
                   be used in the Router Advertisements.  Higher
                   value denotes greater preference.
                  "
           REFERENCE
                   "RFC 3775 : Section 7.4, 8.4"
           ::= { mip6HaConfEntry 1 }

       mip6HaAdvLifetime   OBJECT-TYPE
           SYNTAX      Integer32 (1..65535)
           UNITS       "seconds"
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                  "The lifetime value for the home agent to be
                   used in the Router Advertisements.
                  "
           REFERENCE
                   "RFC 3775 : Section 7.4"
           ::= { mip6HaConfEntry 2 }

       mip6HaPrefixAdv    OBJECT-TYPE
           SYNTAX      INTEGER { enabled(1), disabled(2) }
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "Indicates whether the home agent should support
                    sending of the ICMP Mobile Prefix Advertisements.
                    If it is disabled(2), the home agent will not
                    send ICMP Mobile Prefix Advertisements to the
                    mobile nodes.
                    The state can be changed from enabled(1) to
                    disabled(2) and vice versa by operator
                    intervention.
                    Causing the state to change from enabled(1) to
                    disabled(2) will result in the home agent
                    disabling the Prefix advertisement function.
                    On the other hand, changing the status from
                    disabled(2) to enabled(1) will start the prefix
                    advertisement function.
                   "
           REFERENCE
                   "RFC 3775 : Section 8.4"
           ::= { mip6HaConfEntry 3}
Heads up, bestie: that 113-octet thing in mip6CnCounterEntry is a real gotcha. Long home addresses can push the OIDs past 128 sub-identifiers, and then SNMPv1, SNMPv2c, and SNMPv3 can't reach those columns at all 😭

okay bestie, we're deep in the home agent config now 🧚 the first two knobs are both on/off switches, and they're literally named right there in the code πŸ’…

       mip6HaPrefixSolicitation   OBJECT-TYPE
           SYNTAX      INTEGER { enabled(1), disabled(2) }
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "Indicates whether the home agent should respond
                    to ICMP Mobile Prefix Solicitation messages it
                    receives from the mobile nodes.  By default, the
                    value will be set to enabled(1).  If it is
                    disabled(2), the home agent will not respond to
                    any ICMP Mobile Prefix Solicitation messages.
                    The state can be changed from enabled(1) to
                    disabled(2), by operator intervention.  Causing
                    the state to change from enabled(1) to
                    disabled(2) will result in the home agent not
                    responding to any ICMP Mobile Prefix
                    Solicitation messages it receives from the
                    mobile nodes.
                   "
           REFERENCE
                   "RFC 3775 : Section 8.4"
           ::= { mip6HaConfEntry 4}


      mip6HaMCastCtlMsgSupport OBJECT-TYPE
           SYNTAX      INTEGER { enabled(1), disabled(2) }
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                   "Indicates whether the home agent should enable
                    support for the processing of the multicast
                    group membership control messages it receives
                    from the mobile nodes.  By default, the value
                    will be set to enabled(1).  If it is
                    disabled(2), the home agent will not process
                    any multicast group control messages it receives
                    from the mobile nodes.
                    The state can be changed from enabled(1) to
                    disabled(2), by operator intervention.  Causing
                    the state to change from enabled(1) to
                    disabled(2) will result in the home agent
                    disabling the processing of the multicast group
                    control messages it received from the mobile
                    nodes.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.4.3"
           ::= { mip6HaConfEntry 5}

ngl the first one is basically the "ignore my prefix requests" switch πŸ™ˆ and the second is the "stop handling my multicast group stuff" switch 🫢 both default to enabled(1), and flipping them from enabled(1) to disabled(2) is an operator move πŸ‘‘

Now the registration counters. Everything in this group lives under mip6HaGlobalStats, so it's giving very organised vibes 🌸

       -- Registration Group counters HA

       mip6HaGlobalStats OBJECT IDENTIFIER ::= { mip6HaStats 1 }

       mip6HaHomeTestInitsRecd     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Home Test Init messages received by
                    the home agent.  This will include Home Test Init
                    messages that failed the validity checks.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
             REFERENCE
                      "RFC 3775 : Section 5.2.5"
           ::= { mip6HaGlobalStats 1 }

       mip6HaHomeTestsSent      OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Home Test messages sent by the
                    home agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
            REFERENCE
                      "RFC 3775 : Section 5.2.5"
           ::= { mip6HaGlobalStats 2 }

       mip6HaBUsRecd     OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates received by the
                    home agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 3 }

       mip6HaBUAcksSent    OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Acknowledgments sent
                    by the home agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 4 }

       mip6HaBRAdviceSent OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Acknowledgments sent
                    by the home agent with Binding Refresh Advice
                    mobility option included.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 5 }

       mip6HaBUsAccepted   OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Updates accepted by this HA.
                    Binding Acknowledgment with status code of 0 or 1.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 6 }

these counters are giving "keep receipts" energy 🧾 they tally up Home Test Inits, Home Tests, Binding Updates, Binding Acks, Binding Refresh Advice, and accepted Binding Updates. every one of them has the same discontinuity note too, so it can reset at re-initialization or whenever mip6CounterDiscontinuityTime says so πŸ’œ

       mip6HaPrefDiscoverReqd OBJECT-TYPE        -- (Code 1)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The total number of Binding Acknowledgments sent by
                    the home agent with status code indicating 'accepted
                    but prefix discovery necessary'  (Code 1).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 7 }

       mip6HaReasonUnspecified OBJECT-TYPE               -- (Code 128)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'reason
                    unspecified' (Code 128).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 8 }

       mip6HaAdmProhibited OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'administratively
                    prohibited' (Code 129).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 9 }

       mip6HaInsufficientResource OBJECT-TYPE            -- (Code 130)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'insufficient
                    resources' (Code 130).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 9.5.2"
           ::= { mip6HaGlobalStats 10 }

       mip6HaHomeRegnNotSupported OBJECT-TYPE    -- (Code 131)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'home
                    registration not supported' (Code 131).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 11 }

       mip6HaNotHomeSubnet OBJECT-TYPE                   -- (Code 132)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'not home subnet'
                    (Code 132).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 12 }

and that's the rejection tally!! ✨ the status codes 1, 128, 129, 130, 131 and 132 each get their own counter, so you can see how many Binding Acknowledgments went out with each one πŸŽ€ ngl the codes are the real main characters here πŸ‘‘

OK bestie πŸ’– we're in the home agent's stats era now, and these counters are basically the scoreboard for every time a binding update got turned away πŸ’…

       mip6HaNotHomeAgentForThisMN OBJECT-TYPE           -- (Code 133)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'not home agent
                    for this mobile node' (Code 133).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.2"
           ::= { mip6HaGlobalStats 13 }

       mip6HaDupAddrDetectionFailed OBJECT-TYPE       -- (Code 134)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'Duplicate
                    Address Detection failed' (Code 134).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6HaGlobalStats 14 }

       mip6HaSeqNumberOutOfWindow OBJECT-TYPE            -- (Code 135)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'sequence number
                    out of window' (Code 135).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 9.5.1"
           ::= { mip6HaGlobalStats 15 }

       mip6HaExpiredHomeNonceIndex OBJECT-TYPE           -- (Code 136)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'expired home
                    nonce index' (Code 136).
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 9.5.1"
           ::= { mip6HaGlobalStats 16 }

       mip6HaRegTypeChangeDisallowed OBJECT-TYPE         -- (Code 139)
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of Binding Update requests rejected by
                    the home agent with status code in the Binding
                    Acknowledgment message indicating 'registration
                    type change disallowed' (Code 139), i.e., a binding
                    already exists for the given home address and the
                    home registration flag has a different value than
                    the Home Registration (H) bit in the Binding Update.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6CounterDiscontinuityTime.
                   "
              REFERENCE
                      "RFC 3775 : Section 9.5.1"
           ::= { mip6HaGlobalStats 17 }

Okay, now we're getting into the per-node stuff πŸ¦‹ The next bit is a table with one row for each mobile node registered with the home agent, so it's like a little fan club of stats, one entry per member 🌸

       -- Home agent registration Counters per node
       mip6HaCounterTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6HaCounterEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "A table containing registration statistics for all
                    mobile nodes registered with the home agent.
                   "
           ::= { mip6HaStats 2 }

       mip6HaCounterEntry  OBJECT-TYPE
           SYNTAX      Mip6HaCounterEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "Home agent registration statistics for a mobile
                    node.

                    Implementors need to be aware that if the total
                    number of octets in mip6BindingHomeAddress
                    exceeds 113, then OIDs of column instances in
                    this row will have more than 128 sub-identifiers and
                    cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.
                   "
           INDEX   { mip6BindingHomeAddressType,
                     mip6BindingHomeAddress
                   }
           ::= { mip6HaCounterTable 1 }

       Mip6HaCounterEntry      ::= SEQUENCE {
           mip6HaBURequestsAccepted       Counter32,
           mip6HaBURequestsDenied         Counter32,
           mip6HaBCEntryCreationTime      DateAndTime,
           mip6HaBUAcceptedTime           DateAndTime,
           mip6HaBURejectionTime          DateAndTime,
           mip6HaRecentBURejectionCode    Mip6BURequestRejectionCode,
           mip6HaCtrDiscontinuityTime     TimeStamp
           }

       mip6HaBURequestsAccepted OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of service requests for the mobile node
                    accepted by the home agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6HaCtrDiscontinuityTime.
                   "
           ::= { mip6HaCounterEntry 1 }

       mip6HaBURequestsDenied   OBJECT-TYPE
           SYNTAX      Counter32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "Total number of service requests for the mobile node
                    rejected by the home agent.
                    Discontinuities in the value of this counter can
                    occur at re-initialization of the management system,
                    and at other times as indicated by the value of
                    mip6HaCtrDiscontinuityTime.
                   "
           ::= { mip6HaCounterEntry 2 }

       mip6HaBCEntryCreationTime   OBJECT-TYPE
           SYNTAX      DateAndTime
           UNITS       "seconds"
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time when the current Binding Cache entry was
                    created for the mobile node.
                   "
           ::= { mip6HaCounterEntry 3 }

       mip6HaBUAcceptedTime  OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time at which the last Binding Update was
                    accepted by the home agent for this mobile node.
                   "
           ::= { mip6HaCounterEntry 4 }

       mip6HaBURejectionTime  OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time at which the last Binding Update was
                    rejected by the home agent for this mobile node.
                    If there have been no rejections, then this object
                    will be inaccessible.
                   "
           ::= { mip6HaCounterEntry 5 }

       mip6HaRecentBURejectionCode  OBJECT-TYPE
           SYNTAX      Mip6BURequestRejectionCode
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "If a Binding Acknowledgment is sent to the mobile
                    node, this is the status code (> 128) that is
                    returned in the Binding Acknowledgment.
                    In case a Binding Acknowledgment is not sent to the
                    mobile node, then this will be the value of the
                    status code that corresponds to the reason of the
                    rejection.
                    If there have been no rejections, then this object
                    will be inaccessible.
                   "
           ::= { mip6HaCounterEntry 6 }

        mip6HaCtrDiscontinuityTime OBJECT-TYPE
           SYNTAX      TimeStamp
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                  "The value of sysUpTime on the most recent occasion
                   at which any one or more of counters in this row,
                   viz., instances of 'mip6HaBURequestsAccepted' and
                   'mip6HaBURequestsRejected', suffered a discontinuity.
                   If no such discontinuities have occurred since the
                   last re-initialization of the local management
                   subsystem, then this object will have a zero value.
                  "
           ::= { mip6HaCounterEntry 7 }

Last one for this part, and it's the home agent list table 🧚 It's the directory of every router that's currently acting as a home agent, and it's organised per interface, which is very neat πŸ“

       -- Home Agent List Table
       mip6HaListTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6HaListEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "This table models the Home Agents List that contains
                    the list of all routers that are acting as home
                    agents on each of the interfaces on which the home
                    agent service is offered by this router.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.1"
           ::= { mip6HaAdvertisement 4 }

       mip6HaListEntry  OBJECT-TYPE
           SYNTAX      Mip6HaListEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "Information about a router that is offering home
                   agent service.
                   The instances of the columnar objects in this entry
                   pertain to an interface for a particular value of
                   mip6HaLinkLocalAddressType and
                   mip6HaLinkLocalAddress.  The interface is uniquely
                   identified by its ipv6InterfaceIfIndex.  The same
                   ipv6InterfaceIfIndex object is used in conjunction
                   with the mip6HaLinkLocalAddressType and
                   mip6HaLinkLocalAddress to uniquely identify
                   instances of the columnar objects of this row.

Okay so the SNMP table rules get a little spicy in this part 🫢 The first bit finishes the mip6HaListEntry description, and it's giving sub-identifier limit drama πŸ’€

                   Implementors need to be aware that if the total
                   number of octets in mip6HaLinkLocalAddress
                   exceeds 112, then OIDs of column instances in
                   this row will have more than 128 sub-identifiers and
                   cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.
                  "
           INDEX   { ipv6InterfaceIfIndex, mip6HaLinkLocalAddressType,
                                           mip6HaLinkLocalAddress }
           ::= { mip6HaListTable 1 }

       Mip6HaListEntry      ::= SEQUENCE {
           mip6HaLinkLocalAddressType      InetAddressType,
           mip6HaLinkLocalAddress          InetAddress,
           mip6HaPreference                Integer32,
           mip6HaRecvLifeTime              Gauge32,
           mip6HaRecvTimeStamp             DateAndTime
           }

       mip6HaLinkLocalAddressType  OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The address type for the link-local address
                    of the home agent that follows.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.1"
           ::= { mip6HaListEntry 1 }

       mip6HaLinkLocalAddress  OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The link local address of the home agent.

                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6HaLinkLocalAddressType object.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.1"
           ::= { mip6HaListEntry 2 }

      mip6HaPreference     OBJECT-TYPE
           SYNTAX      Integer32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The preference value of this home agent.
                    Higher values indicate a more preferable home
                    agent.  The preference value is obtained from
                    the preference field of the received Router
                    Advertisement.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.1"
           ::= { mip6HaListEntry 3 }

      mip6HaRecvLifeTime       OBJECT-TYPE
           SYNTAX      Gauge32
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The lifetime for this home agent.
                   "
           REFERENCE
                   "RFC 3775 : Section 10.1"
           ::= { mip6HaListEntry 4 }

      mip6HaRecvTimeStamp  OBJECT-TYPE
           SYNTAX      DateAndTime
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The time when the home agent advertisement was
                    received.
                   "
           ::= { mip6HaListEntry 5 }

      --
      -- The list of global addresses of a home agent in the
      -- home agent list
      --

      mip6HaGlAddrTable OBJECT-TYPE
           SYNTAX      SEQUENCE OF Mip6HaGlAddrEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "This table contains the global addresses of the home
                    agents in the Home Agents List.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.1"
           ::= { mip6HaAdvertisement 5 }

       mip6HaGlAddrEntry  OBJECT-TYPE
           SYNTAX      Mip6HaGlAddrEntry
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                  "A global address for a home agent in the Home Agents
                   List.
                   The instances of the columnar objects in this entry
                   pertain to an interface for a particular value of
                   mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress
                   and mip6HaGaAddrSeqNo.
                   The mip6HaGaAddrSeqNo object is used to distinguish
                   between multiple instances of the home agent global
                   addresses on the same interface for the same set of
                   mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress,
                   values.
                   There is no upper-bound on the maximum number of
                   global addresses on an interface but, for practical
                   purposes, the upper-bound of the value
                   mip6HaGaAddrSeqNo is set to 1024.
                   The interface is uniquely identified by its
                   ipv6InterfaceIfIndex.  The same ipv6InterfaceIfIndex
                   object is used in conjunction with the
                   mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress,
                   and mip6HaGaAddrSeqNo to uniquely identify instances
                   of the columnar objects of this row.

                   Implementors need to be aware that if the total
                   number of octets in mip6HaLinkLocalAddress
                   exceeds 111, then OIDs of column instances in
                   this row will have more than 128 sub-identifiers and
                   cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3.
                  "
           INDEX   { ipv6InterfaceIfIndex,   mip6HaLinkLocalAddressType,
                     mip6HaLinkLocalAddress, mip6HaGaAddrSeqNo }
           ::= { mip6HaGlAddrTable 1 }

       Mip6HaGlAddrEntry      ::= SEQUENCE {
           mip6HaGaAddrSeqNo              Integer32,
           mip6HaGaGlobalAddressType      InetAddressType,
           mip6HaGaGlobalAddress          InetAddress
       }
       mip6HaGaAddrSeqNo  OBJECT-TYPE
           SYNTAX      Integer32 (1..1024)
           MAX-ACCESS  not-accessible
           STATUS      current
           DESCRIPTION
                   "The index that along with ipv6InterfaceIfIndex,
                    mip6HaLinkLocalAddressType, and
                    mip6HaLinkLocalAddress uniquely identifies this row.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.1"
           ::= { mip6HaGlAddrEntry 1 }

       mip6HaGaGlobalAddressType  OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "The address type for the global address of the
                    home agent that follows.
                   "
           ::= { mip6HaGlAddrEntry 2 }

       mip6HaGaGlobalAddress  OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
                   "A global address of the home agent.

                    The type of the address represented by this object
                    is specified by the corresponding
                    mip6HaGaGlobalAddressType object.
                   "
           ::= { mip6HaGlAddrEntry 3 }

   --
   -- Notifications
   --

       mip6MnRegistered NOTIFICATION-TYPE
           OBJECTS   {
                       mip6BindingTimeRegistered,
                       mip6BindingCOAType,
                       mip6BindingCOA
                     }
           STATUS    current
           DESCRIPTION
                   "This notification is sent by a home agent when
                    a mobile node registers with the home agent
                    for the first time.
                    Notifications will not be sent for subsequent
                    updates and/or refreshes.
                    The MO instances in the notifications will be
                    identified by the mip6BindingHomeAddressType
                    and mip6BindingHomeAddress for the mobile node
                    in the mip6BindingCacheTable.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.1"
           ::= { mip6Notifications 1 }

       mip6MnDeRegistered NOTIFICATION-TYPE
           OBJECTS   {
                       mip6BindingTimeRegistered,
                       mip6BindingCOAType,
                       mip6BindingCOA
                     }
           STATUS    current
           DESCRIPTION
                   "This notification is sent by a home agent every
                    time a mobile node de-registers with the home
                    agent by sending a Binding Update that requests
                    the home agent to delete a binding.
                    The MO instances in the notifications will be
                    identified by the mip6BindingHomeAddressType
                    and mip6BindingHomeAddress for the mobile node
                    in the mip6BindingCacheTable.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.2"
           ::= { mip6Notifications 2 }

       mip6MnCOAChanged NOTIFICATION-TYPE
           OBJECTS   {
                       mip6BindingTimeRegistered,
                       mip6BindingCOAType,
                       mip6BindingCOA
                     }
           STATUS    current
           DESCRIPTION
                   "This notification is sent by a home agent every
                    time a mobile node sends a Binding Update with
                    a new care-of address (for an existing Binding
                    Cache entry).
                    Notifications will not be sent for subsequent
                    updates and/or refreshes for the same Care-of
                    address.
                    The registration of a new care-of address may
                    indicate that the mobile node has moved or that
                    the primary care-of address of the mobile node
                    has become deprecated.
                    The MO instances in the notifications will be
                    identified by the mip6BindingHomeAddressType
                    and mip6BindingHomeAddress for the mobile node
                    in the mip6BindingCacheTable.
                   "
              REFERENCE
                      "RFC 3775 : Section 11.5.2, 11.7.1"
           ::= { mip6Notifications 3 }

       mip6MnBindingExpiredAtHA NOTIFICATION-TYPE
           OBJECTS   {
                       mip6BindingTimeRegistered,
                       mip6BindingCOAType,
                       mip6BindingCOA
                     }
           STATUS    current
           DESCRIPTION
                   "This notification is sent by a home agent when a
                    binding for the mobile node at the home agent
                    expired (no timely Binding Updates were received).
                    The MO instances in the notifications will be
                    identified by the mip6BindingHomeAddressType
                    and mip6BindingHomeAddress for the mobile node
                    in the mip6BindingCacheTable.
                   "
              REFERENCE
                      "RFC 3775 : Section 10.3.2"
           ::= { mip6Notifications 4 }
⚠️ bestie notice the sneaky detail: the home agent global address limit is written as 112 in the list entry but 111 in the global address entry πŸ‘€ both numbers are in the spec exactly like that, so keep them straight 🧚

okay the notifications section is next and it's giving "tell me when the mobile node does a thing" energy πŸ¦‹

Okay bestie, picking up right where the last part left off πŸ¦‹ This is the notification section, and it's giving event alert. A correspondent node fires off mip6MnBindingExpiredAtCN when a binding it's holding for a mobile node has run out 😭 (aka no timely Binding Updates came in). The notification tells you which mobile node it was by pointing at the mip6BindingHomeAddressType and mip6BindingHomeAddress entries in the mip6BindingCacheTable πŸ’œ

       mip6MnBindingExpiredAtCN NOTIFICATION-TYPE
           OBJECTS   {
                       mip6BindingTimeRegistered,
                       mip6BindingCOAType,
                       mip6BindingCOA
                     }
           STATUS    current
           DESCRIPTION
                   "This notification is sent by a correspondent node
                    when a binding for the mobile node at the
                    correspondent node expired (no timely Binding
                    Updates were received).
                    The MO instances in the notifications will be
                    identified by the mip6BindingHomeAddressType
                    and mip6BindingHomeAddress for the mobile node
                    in the mip6BindingCacheTable.
                   "
           ::= { mip6Notifications 5 }

Now the conformance stuff πŸŽ€ This is where the MIB gets organised into little bundles called groups, and each one is numbered under mip6Groups (or mip6Compliances for the compliance statements that come later). Think of it like a playlist, but for MIB objects 🎢

       -- Conformance information
      mip6Groups      OBJECT IDENTIFIER ::= { mip6Conformance 1 }
      mip6Compliances OBJECT IDENTIFIER ::= { mip6Conformance 2 }

       -- Units of conformance
      mip6SystemGroup    OBJECT-GROUP
           OBJECTS {
                     mip6Capabilities,
                     mip6Status
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for basic MIPv6
                     monitoring."
           ::= { mip6Groups 1 }

      mip6BindingCacheGroup    OBJECT-GROUP
           OBJECTS {
                     mip6BindingCOAType,
                     mip6BindingCOA,
                     mip6BindingTimeRegistered,
                     mip6BindingTimeGranted,
                     mip6BindingTimeRemaining,
                     mip6BindingMaxSeq,
                     mip6BindingHomeRegn,
                     mip6BindingUsageTS,
                     mip6BindingUsageCount,
                     mip6BindingAdminStatus
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring the
                     Binding Cache.
                   "
           ::= { mip6Groups 2 }

      mip6BindingHstGroup    OBJECT-GROUP
           OBJECTS {
                     mip6BindingHstCOAType,
                     mip6BindingHstCOA,
                     mip6BindingHstTimeRegistered,
                     mip6BindingHstTimeExpired,
                     mip6BindingHstHomeRegn,
                     mip6BindingHstUsageTS,
                     mip6BindingHstUsageCount
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring the
                     Binding History.  This can be used to monitor
                     the movement of the mobile node.
                   "
           ::= { mip6Groups 3 }

      mip6TotalTrafficGroup    OBJECT-GROUP
           OBJECTS {
                     mip6InOctets,
                     mip6HCInOctets,
                     mip6InPkts,
                     mip6HCInPkts,
                     mip6OutOctets,
                     mip6HCOutOctets,
                     mip6OutPkts,
                     mip6HCOutPkts,
                     mip6CounterDiscontinuityTime
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring the
                     total MIPv6 traffic.
                   "
           ::= { mip6Groups 4 }

      mip6NodeTrafficGroup    OBJECT-GROUP
           OBJECTS {
                     mip6NodeInOctets,
                     mip6HCNodeInOctets,
                     mip6NodeInPkts,
                     mip6HCNodeInPkts,
                     mip6NodeOutOctets,
                     mip6HCNodeOutOctets,
                     mip6NodeOutPkts,
                     mip6HCNodeOutPkts,
                     mip6NodeCtrDiscontinuityTime
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring the
                     MIPv6 traffic due to a mobile node.
                   "
           ::= { mip6Groups 5 }

      mip6MnSystemGroup    OBJECT-GROUP
           OBJECTS {
                     mip6MnHomeAddressState
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for basic monitoring
                     of the mobile node.
                   "
           ::= { mip6Groups 6 }

      mip6MnConfGroup   OBJECT-GROUP
           OBJECTS {
                     mip6MnDiscoveryRequests,
                     mip6MnDiscoveryReplies,
                     mip6MnDiscoveryTimeouts,
                     mip6MnPrefixSolicitationsSent,
                     mip6MnPrefixAdvsRecd,
                     mip6MnPrefixAdvsIgnored,
                     mip6MnMovedToFN,
                     mip6MnMovedToHN
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     the advertisement-related info on the
                     mobile node.
                   "
           ::= { mip6Groups 7 }

      mip6MnRegistrationGroup  OBJECT-GROUP
           OBJECTS {
                     mip6MnBLCOAType,
                     mip6MnBLCOA,
                     mip6MnBLLifeTimeRequested,
                     mip6MnBLLifeTimeGranted,
                     mip6MnBLMaxSeq,
                     mip6MnBLTimeSent,
                     mip6MnBLAccepted,
                     mip6MnBLAcceptedTime,
                     mip6MnBLRetransmissions,
                     mip6MnBLDontSendBUFlag,
                  --
                  -- Binding Update List
                  --
                     mip6MnMobilityMessagesSent,
                     mip6MnMobilityMessagesRecd,
                     mip6MnBUsToHA,
                     mip6MnBUAcksFromHA,
                     mip6MnBUsToCN,
                     mip6MnBUAcksFromCN,
                     mip6MnBindingErrorsFromCN,
                     mip6MnICMPErrorsRecd,
                     mip6MnBRRequestsRecd
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     the registration statistics for the mobile node.
                   "
           ::= { mip6Groups 8 }

      mip6CnStatsGroup   OBJECT-GROUP
           OBJECTS {
                     mip6CnBURequestsAccepted,
                     mip6CnBURequestsRejected,
                     mip6CnBCEntryCreationTime,
                     mip6CnBUAcceptedTime,
                     mip6CnBURejectionTime,
                     mip6CnBURejectionCode,
                     mip6CnCtrDiscontinuityTime
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     the control messages and corresponding
                     statistics for each mobile node
                     communicating with the correspondent
                     node.
                   "
           ::= { mip6Groups 9 }

      mip6HaSystemGroup   OBJECT-GROUP
           OBJECTS {
                     mip6HaAdvsRecd,
                     mip6HaAdvsSent,
                     mip6HaAdvPreference,
                     mip6HaAdvLifetime,
                     mip6HaPrefixAdv,
                     mip6HaPrefixSolicitation,
                     mip6HaMCastCtlMsgSupport
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     the advertisement-related parameters and
                     statistics for the home agent.
                   "
           ::= { mip6Groups 10 }

       mip6HaListGroup   OBJECT-GROUP
           OBJECTS {
                     mip6HaPreference,
                     mip6HaRecvLifeTime,
                     mip6HaRecvTimeStamp,
                     mip6HaGaGlobalAddressType,
                     mip6HaGaGlobalAddress
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     the Home Agent List on the home agent.
                   "
           ::= { mip6Groups 11 }

       mip6HaStatsGroup   OBJECT-GROUP
           OBJECTS {
                     mip6HaBURequestsAccepted,
                     mip6HaBURequestsDenied,
                     mip6HaBCEntryCreationTime,
                     mip6HaBUAcceptedTime,
                     mip6HaBURejectionTime,
                     mip6HaRecentBURejectionCode,
                     mip6HaCtrDiscontinuityTime

          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     registration-related statistics on the home agent.
                   "
           ::= { mip6Groups 12 }

       mip6CnGlobalStatsGroup   OBJECT-GROUP
           OBJECTS {
                     mip6CnHomeTestInitsRecd,
                     mip6CnHomeTestsSent,
                     mip6CnCareOfTestInitsRecd,
                     mip6CnCareOfTestsSent,
                     mip6CnBUsRecd,
                     mip6CnBUAcksSent,
                     mip6CnBRsSent,
                     mip6CnBindingErrors,
                     mip6CnBUsAccepted,
                     mip6CnBUsRejected,
                     mip6CnReasonUnspecified,
                     mip6CnInsufficientResource,
                     mip6CnHomeRegnNotSupported,
                     mip6CnSeqNumberOutOfWindow,
                     mip6CnExpiredHomeNonceIndex,
                     mip6CnExpiredCareOfNonceIndex,
                     mip6CnExpiredNonce,
                     mip6CnRegTypeChangeDisallowed
          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     advertisement and registration statistics on
                     a correspondent node.
                   "
           ::= { mip6Groups 13 }

       mip6HaGlobalStatsGroup   OBJECT-GROUP
           OBJECTS {
                     mip6HaHomeTestInitsRecd,
                     mip6HaHomeTestsSent,
                     mip6HaBUsRecd,
                     mip6HaBUAcksSent,
                     mip6HaBRAdviceSent,
                     mip6HaBUsAccepted,
                     mip6HaPrefDiscoverReqd,
                     mip6HaReasonUnspecified,
                     mip6HaAdmProhibited,
                     mip6HaInsufficientResource,
                     mip6HaHomeRegnNotSupported,
                     mip6HaNotHomeSubnet,
                     mip6HaNotHomeAgentForThisMN,
                     mip6HaDupAddrDetectionFailed,
                     mip6HaSeqNumberOutOfWindow,
                     mip6HaExpiredHomeNonceIndex,
                     mip6HaRegTypeChangeDisallowed

          }
           STATUS  current
           DESCRIPTION
                   " A collection of objects for monitoring
                     advertisement and registration statistics on
                     a home agent.
                   "
           ::= { mip6Groups 14 }

       mip6BindingCacheCtlGroup    OBJECT-GROUP
           OBJECTS {
                     mip6BindingAdminStatus
          }
           STATUS  current
           DESCRIPTION
                   "A collection of objects for controlling the
                    Binding Cache.
                   "
           ::= { mip6Groups 15 }

       mip6NotificationGroup   NOTIFICATION-GROUP
           NOTIFICATIONS {
                    mip6MnRegistered,
                    mip6MnDeRegistered,
                    mip6MnCOAChanged,
                    mip6MnBindingExpiredAtHA,
                    mip6MnBindingExpiredAtCN
          }
           STATUS  current
           DESCRIPTION
                   "A collection of notifications from a home agent
                    or correspondent node to the Manager about the
                    status of a mobile node.
                   "
           ::= { mip6Groups 16 }



       -- Compliance statements

That's the end of this chunk! ✨ There's more MIB to come in the next part, so stay tuned, bestie πŸ’…πŸŒΈ

Okay so this is the part where the MIB tells you exactly what an SNMP agent has to do to count as "compliant," and bestie, it's giving checklist πŸ’…. There are seven compliance statements, and they're basically tiers: some are just the core stuff, some add monitoring for the Binding Cache, Binding History, and traffic, and some are the read-only versions where nobody can write to the objects. The mobile node one (mip6MnCoreCompliance) is its own separate thing for basic mobile node functionality 🧚

Here's the first one, the core compliance statement. It's the bare minimum, and the only mandatory group is mip6SystemGroup 🌸

      mip6CoreCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB.
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6SystemGroup }

           ::= { mip6Compliances 1 }

Next up is mip6Compliance2, which is the one for agents that also monitor the Binding Cache and the Total Traffic. Its mandatory groups are mip6SystemGroup, mip6BindingCacheGroup, and mip6TotalTrafficGroup πŸ¦‹ This one also has a whole note about INDEX objects. SMIv2 can't express them with OBJECT clauses, so the requirements get written out in comment form inside the DESCRIPTION. The main point is that global IPv6 addresses are needed for mip6BindingHomeAddress ✨

      mip6Compliance2 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and support
                   monitoring of the Binding Cache and the Total
                   Traffic.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6SystemGroup,
                                  mip6BindingCacheGroup,
                                  mip6TotalTrafficGroup
                                   }
           ::= { mip6Compliances 2 }

Then there's mip6Compliance3, the full-monitoring one. It covers the Binding Cache, the Binding History, the total traffic, and the mobile node-wide traffic 🌈 It has the same INDEX-object note as before, but it also adds the mip6BindingHst home address objects. Its mandatory groups are mip6SystemGroup, mip6BindingCacheGroup, mip6BindingHstGroup, mip6TotalTrafficGroup, and mip6NodeTrafficGroup πŸ‘‘

      mip6Compliance3 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring of the Binding Cache,
                   the Binding History, the total traffic, and
                   the mobile node-wide traffic.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6SystemGroup,
                                  mip6BindingCacheGroup,
                                  mip6BindingHstGroup,
                                  mip6TotalTrafficGroup,
                                  mip6NodeTrafficGroup
                                 }

           ::= { mip6Compliances 3 }

Now the read-only side 🫢 mip6CoreReadOnlyCompliance is the read-only version of the core one. It's for agents that don't support read-write, so the mip6Status object only needs read-only min-access. The mandatory group is still just mip6SystemGroup πŸ“

      mip6CoreReadOnlyCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode).
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6SystemGroup }

           OBJECT      mip6Status
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           ::= { mip6Compliances 4 }

mip6ReadOnlyCompliance2 is the read-only version of the Binding Cache and Total Traffic one. It has the same mandatory groups as mip6Compliance2, and it sets both mip6Status and mip6BindingAdminStatus to read-only min-access. It also carries the INDEX-object note πŸ’–

      mip6ReadOnlyCompliance2 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode) and
                   support monitoring of the Binding Cache and Total
                   Traffic.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                  "
           MODULE  -- this module

               MANDATORY-GROUPS { mip6SystemGroup,
                                  mip6BindingCacheGroup,
                                  mip6TotalTrafficGroup
                                   }
           OBJECT      mip6Status
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6BindingAdminStatus
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."
           ::= { mip6Compliances 5 }

mip6ReadOnlyCompliance3 is the read-only version of the full-monitoring one, covering the Binding Cache, Binding History, total traffic, and mobile node-wide traffic 🌸 It has the same mandatory groups as mip6Compliance3, the same read-only min-access settings for mip6Status and mip6BindingAdminStatus, and the same INDEX-object note ✨

      mip6ReadOnlyCompliance3 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode) and support
                   monitoring of the Binding Cache, the Binding History,
                   the total traffic, and the mobile node-wide traffic.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                   -- OBJECT      mip6BindingHstHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the
                   --     mip6BindingHstHomeAddress object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6SystemGroup,
                                  mip6BindingCacheGroup,
                                  mip6BindingHstGroup,
                                  mip6TotalTrafficGroup,
                                  mip6NodeTrafficGroup
                                 }
           OBJECT      mip6Status
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6BindingAdminStatus
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."
           ::= { mip6Compliances 6 }

Last but not least is mip6MnCoreCompliance, the one for basic mobile node functionality πŸ¦‹ It's a separate track from the agent ones, and its only mandatory group is mip6MnSystemGroup. Like the Binding Cache ones, it carries the INDEX-object note, but this time it's about mip6MnHomeAddress and mip6MnHomeAddressType πŸ’œ

      mip6MnCoreCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring of the basic mobile node
                   functionality.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6MnHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6MnSystemGroup
                                 }
           ::= { mip6Compliances 7 }

That's the full set of compliance statements, and the next bit picks up from here πŸŽ€

okay so we're deep in the compliance section now πŸŽ€ this is where the MIB spells out which groups you have to implement depending on what kind of mobile IPv6 entity you're running πŸ’… the wording is a little wild because some INDEX objects can't be written as OBJECT clauses in SMIv2, so the rules get tucked into the DESCRIPTION text instead πŸ€“

      mip6MnCompliance2 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring of the mobile node
                   functionality specifically the Discovery- and
                   Registration-related statistics,
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6MnHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.
                   --
                   -- OBJECT      mip6MnBLNodeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6MnBLNodeAddress
                   --     object.

                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6MnSystemGroup,
                                  mip6MnConfGroup,
                                  mip6MnRegistrationGroup,
                                  mip6TotalTrafficGroup
                                 }
           ::= { mip6Compliances 8 }

      mip6CnCoreCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                   "The compliance statement for SNMP entities
                    that implement the MOBILEIPV6-MIB and
                    support monitoring of the basic correspondent node
                    functionality.
                   "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6CnGlobalStatsGroup,
                                  mip6TotalTrafficGroup
                                 }
           ::= { mip6Compliances 9 }

      mip6CnCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring of the basic correspondent node
                   functionality.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.

                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6CnGlobalStatsGroup,
                                  mip6CnStatsGroup,
                                  mip6TotalTrafficGroup
                                 }
           ::= { mip6Compliances 10 }

      mip6HaCoreCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                   "The compliance statement for SNMP entities
                    that implement the MOBILEIPV6-MIB and
                    support monitoring of the basic home agent
                    functionality.
                   "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup
                                 }
           ::= { mip6Compliances 11 }

      mip6HaCompliance2 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring of the home agent
                   functionality specifically the Home Agent List
                   and the home-agent-registration-related statistics,
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType { ipv6z(4) }
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddress
                   -- SYNTAX      InetAddress (SIZE(20))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup,
                                  mip6HaListGroup,
                                  mip6HaStatsGroup,
                                  mip6HaGlobalStatsGroup,
                                  mip6TotalTrafficGroup
                                 }
           ::= { mip6Compliances 12 }

      mip6HaCompliance3 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support monitoring and control of the home agent
                   functionality specifically the Home Agent List
                   and the home-agent-registration-related statistics,

                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType { ipv6z(4) }
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddress
                   -- SYNTAX      InetAddress (SIZE(20))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup,
                                  mip6HaListGroup,
                                  mip6HaStatsGroup,
                                  mip6HaGlobalStatsGroup,
                                  mip6BindingCacheCtlGroup,
                                  mip6TotalTrafficGroup
                                 }
           ::= { mip6Compliances 13 }

      mip6HaCoreReadOnlyCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode) and
                   support monitoring of the basic home agent
                   functionality.
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup
                                 }
           OBJECT      mip6HaAdvPreference
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaAdvLifetime
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixAdv
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixSolicitation
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaMCastCtlMsgSupport
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           ::= { mip6Compliances 14 }

      mip6HaReadOnlyCompliance2 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode) and
                   support monitoring of the home agent
                   functionality specifically the Home Agent List
                   and the home-agent-registration-related statistics.

the next bit picks up right where this description cuts off πŸ¦‹

                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType { ipv6z(4) }
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddress
                   -- SYNTAX      InetAddress (SIZE(20))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup,
                                  mip6HaListGroup,
                                  mip6HaStatsGroup,
                                  mip6HaGlobalStatsGroup,
                                  mip6TotalTrafficGroup
                                 }

           OBJECT      mip6HaAdvPreference
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaAdvLifetime
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixAdv
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixSolicitation
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaMCastCtlMsgSupport
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           ::= { mip6Compliances 15 }

      mip6HaReadOnlyCompliance3 MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB without support
                   for read-write (i.e., in read-only mode) and
                   support monitoring and control of the home agent
                   functionality specifically the Home Agent List
                   and the home-agent-registration-related statistics,

                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:
                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddressType
                   -- SYNTAX      InetAddressType { ipv6z(4) }
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                   -- OBJECT      mip6HaLinkLocalAddress
                   -- SYNTAX      InetAddress (SIZE(20))
                   -- DESCRIPTION
                   --     This MIB module requires support for local
                   --     ipv6 addresses for the mip6HaLinkLocalAddress
                   --     object.
                   --
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6HaSystemGroup,
                                  mip6HaListGroup,
                                  mip6HaStatsGroup,
                                  mip6HaGlobalStatsGroup,
                                  mip6BindingCacheCtlGroup,
                                  mip6TotalTrafficGroup
                                 }

           OBJECT      mip6HaAdvPreference
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaAdvLifetime
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixAdv
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaPrefixSolicitation
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6HaMCastCtlMsgSupport
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           OBJECT      mip6BindingAdminStatus
           MIN-ACCESS  read-only
           DESCRIPTION
                  "Write access is not required."

           ::= { mip6Compliances 16 }

       mip6NotificationCompliance MODULE-COMPLIANCE
           STATUS  current
           DESCRIPTION
                  "The compliance statement for SNMP entities
                   that implement the MOBILEIPV6-MIB and
                   support Notification from home agent or
                   correspondent node to management stations
                   about the mobile node status.
                   There are a number of INDEX objects that cannot be
                   represented in the form of OBJECT clauses in SMIv2,
                   but for which there are compliance requirements,
                   expressed in OBJECT clause form in this description:

                   -- OBJECT      mip6BindingHomeAddressType
                   -- SYNTAX      InetAddressType { ipv6(2) }
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                   --
                   -- OBJECT      mip6BindingHomeAddress
                   -- SYNTAX      InetAddress (SIZE(16))
                   -- DESCRIPTION
                   --     This MIB module requires support for global
                   --     ipv6 addresses for the mip6BindingHomeAddress
                   --     object.
                  "
           MODULE  -- this module
               MANDATORY-GROUPS { mip6NotificationGroup
                                 }
           ::= { mip6Compliances 17 }

      END

okay so this is the compliance wrap-up bestie πŸ’œ The read-only home agent level (compliance 15) is the base one, and compliance 16 is the same vibe but it also has to handle the binding cache control group and the mip6BindingAdminStatus object, still read-only πŸ¦‹. Then compliance 17 is all about notifications from the home agent or correspondent node to management stations about the mobile node status πŸ”₯. The bit about the INDEX objects that can't be written as OBJECT clauses is kinda iconic, since it gets handled in the DESCRIPTION text instead ✨

6. Security Considerations ✨

Okay bestie, this part is serious, so let's be real about it. A bunch of the objects in this MIB module have a MAX-ACCESS of read-write, which means they can be changed, and that makes them sensitive or vulnerable in some network environments. SET operations running in a non-secure setup with no proper protection can seriously mess with network operations 😭 Here are the tables and objects, plus why each one is a risk:

mip6Status:  The value of this object is used to enable or
             disable the MIPv6 functionality on a MIPv6 entity.
             Access to this MO may be abused to disrupt the
             MIPv6 communication.
mip6HaAdvPreference: Access to this object may be abused to
             force MNs into selecting the wrong HA.
mip6HaAdvLifetime: Access to this object may be abused to set
             the advertised lifetime to incorrect values.  That
             will have an adverse impact on the MIPv6
             communication.
mip6BindingAdminStatus: The value of this object is used to
             control the status of a Binding Cache entry.
             Access to this object may be abused to deny Mobile
             IPv6 connectivity to a legitimate user or to
             grant Mobile IPv6 connectivity to an illegal user.
mip6HaPrefixAdv: The value of this object indicates whether
             the home agent will send ICMP Mobile Prefix
             Advertisements to the mobile node.
             Access to this object may be abused to send
             unwanted/wrong prefix information or to deny the
             mobile node from receiving information about the
             changes in the home prefixes.
             This may result in disruption of the Mobile IPv6
             connectivity.
mip6HaPrefixSolicitation: The value of this object indicates
             whether the home agent should respond to ICMP
             Mobile Prefix Solicitation messages from a mobile
             node.  Access to this object may be abused to deny
             the mobile node information about its home prefix.
             This may result in disruption of the Mobile IPv6
             connectivity.
mip6HaMCastCtlMsgSupport: The value of this object decides
             whether the home agent should process the
             multicast group membership control messages it
             receives from mobile nodes.  Access to this object
             may be used to subvert administrate policy on
             multicasting or to disrupt the multicast
             communication with the mobile node.

Now the readable stuff. Objects with a MAX-ACCESS other than not-accessible can also be sensitive or vulnerable, so it's important to lock down even GET and/or NOTIFY access, and maybe even encrypt their values when they travel over the network via SNMP πŸ” Here's the spicy list:

The address-related objects are the most private vibes in this whole MIB πŸ™ˆ The care-of-address ones reveal where the mobile node is and how it moves around, so that info must be carefully handled:

mip6BindingHstCOAType
mip6BindingHstCOA
mip6MnBLCOAType
mip6MnBLCOA

The mobile node's home-address and home-agent info can also be sensitive, since it can give a malicious party clues on how to disrupt the mobile node's communication channels πŸ‘€

mip6BindingHstHomeAddressType,
mip6BindingHstHomeAddress,
mip6MnHomeAddressType,
mip6MnHomeAddress

And the correspondent node address objects show who the mobile node is talking to, which is private and sensitive info too πŸ’œ

mip6MnBLNodeAddressType,
mip6MnBLNodeAddress

Real talk: SNMP versions before SNMPv3 didn't have adequate security πŸ’€ Even if the network itself is secure (say, by using IPSec), there's still no control over who on that secure network can GET and SET (read, change, create, delete) the objects in this MIB module.

It is RECOMMENDED that implementors consider the security features the SNMPv3 framework provides (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms for authentication and privacy πŸ”₯

Deployment of SNMP versions before SNMPv3 is NOT RECOMMENDED 🚫 Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security 🫢 After that, it's a customer or operator responsibility to make sure the SNMP entity giving access to this MIB module is configured so only the principals (users) with legitimate rights can GET or SET (change, create, delete) the objects. Main character energy means locking the door, bestie ✨

7. IANA Considerations πŸŽ€

IANA has assigned a base arc in the 'mib-2' (standards track) OID tree for the 'mip6MIB' MODULE-IDENTITY defined in the Mobile-IPv6 MIB. The mib-2 number is 133 for mip6MIB πŸ¦‹

8. References πŸ“š

8.1. Normative References

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

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

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

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

[RFC3775]    Johnson, D., Perkins, C., and Arkko J., Mobility Support
             in IPv6" RFC 3775, June 2004.

[RFC4293]    Routhier, S., Ed., "Management Information Base for the
             Internet Protocol (IP)", RFC 4293, April 2006.

[RFC4001]    Daniele, M., Haberman, B., Routhier, S., and J.
             Schoenwaelder, "Textual Conventions for Internet Network
             Addresses", RFC 4001, February 2005.

8.2. Informative References

[RFC3410]    Case, J., Mundy, R., Partain, D., and B. Stewart,
             "Introduction and Applicability Statements for
             Internet-Standard Management Framework", RFC 3410,
             December 2002.

[RFC4087]    Thaler, D., "IP Tunnel MIB", RFC 4087, June 2005.

9. Acknowledgements πŸ’–

The following groups and individuals contributed to this document with discussions and comments 🌸

WIDE-netman group
C.M. Heard

Authors' Addresses 🧚

Glenn Mansfield Keeni
Cyber Solutions Inc.
6-6-3 Minami Yoshinari
Aoba-ku, Sendai 989-3204
Japan

Phone: +81-22-303-4012
EMail: glenn@cysols.com


Kenichi Nagami
INTEC NetCore Inc.
1-3-3, Shin-suna
Koto-ku, Tokyo, 135-0075
Japan

Phone:  +81-3-5665-5069
EMail: nagami@inetcore.com


Kazuhide Koide
Tohoku University
2-1-1, Katahira
Aoba-ku, Sendai, 980-8577
Japan

Phone: +81-22-217-5454
EMail: koide@shiratori.riec.tohoku.ac.jp


Sri Gundavelli
Cisco Systems
170 W.Tasman Drive,
San Jose, CA 95134
USA

Phone: +1-408-527-6109
EMail: sgundave@cisco.com

Copyright (C) The Internet Society (2006).

This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.

This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ’…

The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights.  Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.

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

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

Acknowledgement 🫢

Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
πŸ“¦ where this page comes from