RFC 5643

Management Information Base for OSPFv3

πŸ“… published August 2009, from ietf

RFC 5643: Management Information Base for OSPFv3 πŸ’–

Okay bestie, RFC 5643 is all about the Management Information Base (MIB) for OSPFv3, the version of OSPF that runs on IPv6 πŸ¦‹. It's a Standards Track document from August 2009. The lead editors are D. Joyal (Nortel) and V. Manral (IP Infusion), and both are marked as Ed. (editor). The title block doesn't list anything it obsoletes or updates, so this one stands on its own ✨.

Abstract ✨

Okay so this memo defines a chunk of the MIB for network management protocols in IPv6-based internets. The main thing it does is define objects for managing OSPF for IPv6, which is also called OSPF version 3 (OSPFv3). It's giving "manage your routing from one place" energy 🌸.

Status of This Memo πŸ“

This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements 🫢. For the 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) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, as they were in effect on the date this document was published (http://trustee.ietf.org/license-info). Please read these documents carefully, because they describe your rights and restrictions for this document πŸ‘€.

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

Table of Contents πŸ“š

1. The Internet-Standard Management Framework ......................3
2. Overview ........................................................3
   2.1. IPv6 Interfaces ............................................3
   2.2. Addressing Semantics .......................................4
   2.3. Authentication .............................................4
   2.4. Type of Service ............................................4
   2.5. Flooding Scope .............................................4
   2.6. Virtual Links ..............................................4
   2.7. Neighbors ..................................................5
   2.8. OSPFv3 Counters ............................................5
   2.9. Multiple OSPFv3 Instances ..................................5
   2.10. Notifications .............................................5
   2.11. Conventions ...............................................6
3. OSPFv3 Notification Overview ....................................6
   3.1. Introduction ...............................................6
   3.2. Ignoring Initial Activity ..................................6
   3.3. Throttling Notifications ...................................6
   3.4. One Notification per OSPFv3 Event ..........................7
   3.5. Polling Event Counters .....................................7
4. Structure of the OSPFv3 MIB Module ..............................7
   4.1. General Variables ..........................................8
   4.2. Area Table .................................................8
   4.3. Area-Scope, Link-Scope, and AS-Scope Link State Database ...8
   4.4. Host Table .................................................8
   4.5. Interface Table ............................................8
   4.6. Virtual Interface Table ....................................8
   4.7. Neighbor, Configured Neighbor, and Virtual Neighbor
        Tables .....................................................8
   4.8. Area Aggregate Table .......................................8
   4.9. Notifications ..............................................9
5. Definitions .....................................................9
6. Security Considerations ........................................92
7. IANA Considerations ............................................93
8. Acknowledgements ...............................................93
9. References .....................................................93
   9.1. Normative References ......................................93
   9.2. Informative References ....................................94

1. The Internet-Standard Management Framework ✨

Okay so if you want the full tour of the documents that describe the current Internet-Standard Management Framework, check section 7 of RFC 3410 [RFC3410] πŸ—ΊοΈ.

Managed objects are accessed through a virtual information store called the Management Information Base, or MIB πŸ—„οΈ. Most MIB objects get accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined with the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580]. Main character energy πŸ‘‘.

2. Overview 🌸

This memo defines a portion of the MIB for managing the Open Shortest Path First Routing Protocol for IPv6 [RFC5340], otherwise known as OSPF version 3 (OSPFv3). The fundamental mechanisms of OSPF version 2 (OSPFv2) [RFC2328] stay the same in OSPFv3, but some things had to change because IP address sizes and protocol semantics differ between IPv4 and IPv6 πŸ¦‹. Where the protocol operations haven't changed from OSPFv2, the OSPFv3 specification doesn't restate the details. It just points to the relevant sections of the OSPFv2 specification. This MIB module follows the same approach and includes Reference clauses that refer to the OSPFv2 specification when they apply πŸ’….

2.1. IPv6 Interfaces πŸ”Œ

IPv6 interfaces attach to links [RFC2460]. A link is roughly defined as the layer below IPv6, like Ethernet or an IPv4 tunnel. One or more IPv6 prefixes can be associated with an IPv6 interface. You can configure IPv6 interfaces and their prefixes through the IP-MIB [RFC4293]. IPv6 interfaces live in the IPv6 Interface Table, and IPv6 prefixes live in the Internet Address Prefix Table. Each IPv6 interface gets identified by a unique index value, and IPv6 Address Prefix Table entries tied to an interface reference that interface's index 🧚.

Here's the difference that matters. In OSPFv2, an Interface Identifier is a local IPv4 address or a MIB-2 interface index. In OSPFv3, an Interface Identifier is an IPv6 interface index πŸŽ€. For example, the index value of an OSPFv3 Interface Table entry is the IPv6 interface index of the IPv6 interface that OSPFv3 is configured to run on.

2.2. Addressing Semantics 🏷️

Router ID, Area ID, and Link State ID stay at the OSPFv2 size of 32 bits. To keep things unique, a router running IPv4 and IPv6 at the same time can keep using a local IPv4 host address, represented as an unsigned 32-bit value, as its OSPFv3 Router ID. Otherwise, the Router ID has to be picked another way (for example, administratively assigned) 🫢.

Router ID, Area ID, and Link State ID don't have addressing semantics in OSPFv3, so their syntax changes to Unsigned32. The Router ID index component comes before the Link State ID index component in the OSPFv3 MIB module. That's because Link State IDs don't carry addressing semantics, which makes them less unique identifiers than the Router ID. It's more useful to do partial Object Identifier (OID) lookups that extend to the Router ID instead of the Link State ID πŸ”.

2.3. Authentication πŸ”

In OSPFv3, authentication has been removed from the protocol itself. The MIB objects related to authentication didn't get carried forward from the OSPFv2 MIB module πŸ™…β€β™€οΈ.

2.4. Type of Service 🚦

The OSPFv2 MIB module objects related to Type of Service (ToS) didn't get carried forward to the OSPFv3 MIB module πŸ’€.

2.5. Flooding Scope 🌊

Flooding scope for link state advertisements (LSAs) got generalized, and it's now explicitly encoded in the LSA's LS type field. The action to take when you receive an unknown LSA type is also encoded in the LS type field [RFC5340]. The OSPFv3 MIB module defines three Link State Database tables: one for Area-scope LSAs, one for Link-scope LSAs, and one for Autonomous System (AS)-scope LSAs πŸ—‚οΈ.

Addressing semantics got removed from router-LSAs in OSPFv3. That means virtual links now need to be assigned an Interface ID so they can be advertised in Hello packets and in router-LSAs. A read-only object has been added to the Virtual Interface Table entry so you can view the assigned Interface ID πŸ‘€.

2.7. Neighbors 🀝

The OSPFv3 Neighbor Table is read-only. It holds information learned from Hellos received from neighbors, including configured neighbors. The OSPFv3 Configured Neighbor Table holds entries for manually configured neighbors, which are used on non-broadcast multi-access (NBMA) and Point-to-Multipoint interface types 🌈.

2.8. OSPFv3 Counters πŸ”’

This MIB module defines several counters, namely:

  • ospfv3OriginateNewLsas and ospfv3RxNewLsas in the ospfv3GeneralGroup
  • ospfv3AreaSpfRuns and ospfv3AreaNssaTranslatorEvents in the ospfv3AreaTable
  • ospfv3IfEvents in the ospfv3IfTable
  • ospfv3VirtIfEvents in the ospfv3VirtIfTable
  • ospfv3NbrEvents in the ospfv3NbrTable
  • ospfv3VirtNbrEvents in the ospfv3VirtNbrTable

As a best practice, a management entity should use the discontinuity object, ospfv3DiscontinuityTime, when it reads these counters. That tells it whether an event happened that would make its understanding of the counters invalid. A restart of the OSPFv3 routing process is an example of a discontinuity event πŸ”„.

2.9. Multiple OSPFv3 Instances 🧩

SNMPv3 supports "contexts," which can be used to set up MIB views on multiple OSPFv3 instances on the same system. See [RFC3411] or its successors for details πŸͺž.

2.10. Notifications πŸ””

Notifications define a set of notifications, objects, and mechanisms that improve your ability to manage IP internetworks using OSPFv3 as their Interior Gateway Protocol (IGP) ✨.

2.11. Conventions πŸ“–

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

3.1. Introduction

okay so OSPFv3 is totally event-driven 🧚 an event can be a change in an OSPFv3 interface's link-level status, an OSPFv3 timer going off, or a received OSPFv3 protocol packet ✨ and a lot of what OSPFv3 does after one of these events ends up changing the routing topology 🌸

as routing topologies get big and messy, it's honestly so hard to figure out where a topology change or a weird routing path came from if you have to poll a huge number of routers 😭 polling tons of devices is a lot, so the more prudent move is for devices to tell a network manager about potentially critical OSPF events using SNMP notifications πŸ””

the ospfv3NotificationEnable object gives you a coarse level of control over OSPFv3 notifications πŸŽ€ you can use it to fully turn notification generation on or off πŸ’… if you want fine-grain control over individual notifications, that's done with the objects defined in RFC 3413 [RFC3413], specifically the ones described in Section 6 πŸ’œ

3.2. Ignoring Initial Activity

the majority of critical events happen when OSPFv3 gets enabled on a router 🌈 that's when the Designated Router gets elected and neighbor adjacencies form ✨ during that early period, a big flood of notifications is unnecessary because those events are expected πŸ™ˆ so to avoid pointless notifications, a router should not originate expected OSPFv3 interface-related notifications until two of that interface's dead timer intervals have elapsed ⏳ the expected OSPFv3 interface notifications are ospfv3IfStateChange, ospfv3VirtIfStateChange, ospfv3NbrStateChange, and ospfv3VirtNbrStateChange πŸ¦‹

3.3. Throttling Notifications

the throttling mechanism is similar to the one explained in RFC 1224 [RFC1224] πŸ“ the main idea is a sliding window, defined in seconds, with an upper bound on how many notifications may be generated inside that window πŸͺŸ fun fact, unlike RFC 1224, notifications are not sent to tell the network manager that the throttling mechanism has kicked in πŸ™Š

a single window should be used to throttle all OSPFv3 notification types, except ospfv3LsdbOverflow and ospfv3LsdbApproachingOverflow, which should not be throttled 🚫 for example, say the window time is 3 and the upper bound is 3, and events cause notifications 1, 2, 3, and 4 (that's 4 notifications within a 3-second period) 😀 then the 4th notification should not be generated πŸ’€

appropriate values are 7 notifications with a window time of 10 seconds πŸ’–

3.4. One Notification per OSPFv3 Event

a bunch of the notifications in this MIB module get generated when a router finds something unusual while parsing an OSPFv3 packet or handling a timer event πŸ‘€ and there can be more than one unusual condition in a single event ✨ for example, a Link State Update packet might contain several retransmitted link state advertisements (LSAs), or a retransmitted database description packet might contain several database description entries πŸ“¦ so to keep the number of notifications and variables under control, OSPFv3 should generate at most one notification per OSPFv3 event 🫢 only the variables tied to the first unusual condition should go along with that notification πŸ’… and if more than one type of unusual condition shows up while parsing the packet, only the first event will generate a notification πŸ‘‘

3.5. Polling Event Counters

a lot of the tables in the OSPFv3 MIB module have generalized event counters πŸ”’ by turning on the notifications defined in this document, a network manager can get more specific info about those events πŸ•΅οΈβ€β™€οΈ a network manager might want to poll those counters and enable OSPFv3 notifications when a particular counter starts climbing abnormally πŸ“ˆ literally the perfect early-warning system πŸ₯Ή

4. Structure of the OSPFv3 MIB Module ✨

the MIB is made up of the following sections πŸ—‚οΈ

     General Variables
     Area Table
     Area-Scope Link State Database
     Link-Scope Link State Databases (non-virtual and virtual)
     AS-Scope Link State Database
     Host Table
     Interface Table
     Virtual Interface Table
     Neighbor Table
     Configured Neighbor Table
     Virtual Neighbor Table
     Area Aggregate Table
     Notifications

4.1. General Variables

the General Variables are global to the OSPFv3 Process 🌍

4.2. Area Table

the Area Data Structure describes the OSPFv3 Areas that the router participates in 🏘️

the link state databases are mainly there to give you detailed info for network debugging πŸ” there are separate tables for Link-scope LSAs received over non-virtual interfaces and over virtual interfaces 🧩

4.4. Host Table

the Host Table is there so you can view configured Host Route information πŸ‘€

4.5. Interface Table

the Interface Table describes the various IPv6 links where OSPFv3 is configured πŸ”—

4.6. Virtual Interface Table

the Virtual Interface Table describes virtual OSPFv3 links πŸŒ€

4.7. Neighbor, Configured Neighbor, and Virtual Neighbor Tables

the Neighbor Table, the Configured Neighbor Table, and the Virtual Neighbor Table all describe the neighbors of the OSPFv3 Process 🀝

4.8. Area Aggregate Table

the Area Aggregate Table describes prefixes that summarize routing information for export outside of an Area πŸ“¦βœ¨

4.9. Notifications

notifications are defined for OSPFv3 events πŸ”” several objects are defined specifically to be used as variables with notifications πŸ’œ

5. Definitions πŸ’…

    OSPFV3-MIB DEFINITIONS ::= BEGIN

    IMPORTS
            MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2,
            Counter32, Gauge32, Integer32, Unsigned32
                    FROM SNMPv2-SMI
            TEXTUAL-CONVENTION, TruthValue, RowStatus, TimeStamp
                    FROM SNMPv2-TC
            MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                    FROM SNMPv2-CONF
            InterfaceIndex
                    FROM IF-MIB
            InetAddressType, InetAddress, InetAddressPrefixLength,
            InetAddressIPv6
                    FROM INET-ADDRESS-MIB
            Metric, BigMetric, Status,
            HelloRange, DesignatedRouterPriority
                    FROM OSPF-MIB;

    ospfv3MIB MODULE-IDENTITY
            LAST-UPDATED "200908130000Z"
            ORGANIZATION "IETF OSPF Working Group"
            CONTACT-INFO
                "WG E-Mail: ospf@ietf.org
                 WG Chairs: Acee Lindem
                            acee@redback.com

                            Abhay Roy
                            akr@cisco.com

                 Editors:   Dan Joyal
                            Nortel
                            600 Technology Park Drive
                            Billerica, MA  01821, USA
                            djoyal@nortel.com

                            Vishwas Manral
                            IP Infusion
                            Almora, Uttarakhand
                            India
                            vishwas@ipinfusion.com"

             DESCRIPTION
                "The MIB module for OSPF version 3.

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

                 Redistribution and use in source and binary forms, with
                 or without modification, are permitted provided that
                 the following conditions are met:

                 - Redistributions of source code must retain the above
                   copyright notice, this list of conditions and the
                   following disclaimer.

                - Redistributions in binary form must reproduce the
                  above copyright notice, this list of conditions and
                  the following disclaimer in the documentation and/or
                  other materials provided with the distribution.

                - Neither the name of Internet Society, IETF or IETF
                  Trust, nor the names of specific contributors, may be
                  used to endorse or promote products derived from this
                  software without specific prior written permission.

                  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
                  CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED
                  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                  PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
                  THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
                  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
                  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
                  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
                  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
                  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                  POSSIBILITY OF SUCH DAMAGE.

                  This version of this MIB module is part of RFC 5643;
                  see the RFC itself for full legal notices."

             REVISION "200908130000Z"
             DESCRIPTION
                 "Initial version, published as RFC 5643"
             ::= { mib-2 191 }

    -- Textual conventions

    Ospfv3UpToRefreshIntervalTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS        current
             DESCRIPTION
                  "The values one might be able to configure for
                  variables bounded by the Refresh Interval."
             REFERENCE
                  "OSPF Version 2, Appendix B, Architectural Constants"
             SYNTAX      Unsigned32 (1..1800)

    Ospfv3DeadIntervalRangeTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS        current
             DESCRIPTION
                  "The range, in seconds, of dead interval value."
             REFERENCE
                  "OSPF for IPv6, Appendix C.3, Router Interface
                  Parameters"
             SYNTAX      Unsigned32 (1..'FFFF'h)

    Ospfv3RouterIdTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                  "A 32-bit, unsigned integer uniquely identifying the
                  router in the Autonomous System.  To ensure
                  uniqueness, this may default to the value of one of
                  the router's IPv4 host addresses if IPv4 is
                  configured on the router."
             REFERENCE
                  "OSPF for IPv6, Appendix C.1, Global Parameters"
             SYNTAX      Unsigned32 (1..'FFFFFFFF'h)

    Ospfv3LsIdTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                  "A unique 32-bit identifier of the piece of the
                  routing domain that is being described by a link
                  state advertisement.  In contrast to OSPFv2, the
                  Link State ID (LSID) has no addressing semantics."
             REFERENCE
                  "OSPF Version 2, Section 12.1.4, Link State ID"
             SYNTAX      Unsigned32 (1..'FFFFFFFF'h)

    Ospfv3AreaIdTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                  "An OSPFv3 Area Identifier.  A value of zero
                  identifies the backbone area."
             REFERENCE
                  "OSPF for IPv6, Appendix C.3 Router Interface
                  Parameters"
             SYNTAX      Unsigned32 (0..'FFFFFFFF'h)

    Ospfv3IfInstIdTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                  "An OSPFv3 Interface Instance ID."
             REFERENCE
                  "OSPF for IPv6, Appendix C.3, Router Interface
                  Parameters"
             SYNTAX      Unsigned32 (0..255)

Okay so the Area ID and Interface Instance ID textual conventions are wrapping up here, and the area one is literally just "0 means backbone" 🌸 Simple but iconic. Interface Instance IDs are 0 to 255, which is giving very specific, very contained energy πŸ¦‹

    Ospfv3LsaSequenceTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                "The sequence number field is a signed 32-bit
                integer.  It is used to detect old and duplicate
                link state advertisements.  The space of
                sequence numbers is linearly ordered.  The
                larger the sequence number, the more recent the
                advertisement."
             REFERENCE
                "OSPF Version 2, Section 12.1.6, LS sequence
                number"
             SYNTAX      Integer32

    Ospfv3LsaAgeTC ::= TEXTUAL-CONVENTION
             DISPLAY-HINT "d"
             STATUS      current
             DESCRIPTION
                "The age of the link state advertisement in
                seconds.  The high-order bit of the LS age
                field is considered the DoNotAge bit for
                support of on-demand circuits."
             REFERENCE
                "OSPF Version 2, Section 12.1.1, LS age;
                 Extending OSPF to Support Demand Circuits,
                 Section 2.2, The LS age field"
             SYNTAX      Unsigned32 (0..3600 | 32768..36368)

Bestie, the LS sequence number is a signed 32-bit integer, and the bigger it is, the newer the advertisement. That's the whole vibe: higher number, fresher tea β˜• ✨ The LS age one is the main character πŸ‘‘ Its high-order bit is the DoNotAge flag, which is there for on-demand circuits, so it's literally a bit doing double duty. Ngl that's so efficient πŸ’…

    -- Top-level structure of MIB
    ospfv3Notifications  OBJECT IDENTIFIER ::= { ospfv3MIB 0 }
    ospfv3Objects        OBJECT IDENTIFIER ::= { ospfv3MIB 1 }
    ospfv3Conformance    OBJECT IDENTIFIER ::= { ospfv3MIB 2 }

    -- OSPFv3 General Variables

    -- These parameters apply globally to the Router's
    -- OSPFv3 Process.

    ospfv3GeneralGroup OBJECT IDENTIFIER ::= { ospfv3Objects 1 }

Okay so here's the top-level layout 🧚 The MIB splits into three branches: notifications, objects, and conformance. The general group lives under objects, and everything in it applies to the router's whole OSPFv3 process, not just one interface. Very big-picture, very "I run the whole show" πŸ‘‘πŸŽ€

    ospfv3RouterId OBJECT-TYPE
            SYNTAX         Ospfv3RouterIdTC
            MAX-ACCESS     read-write
            STATUS         current
            DESCRIPTION
                "A 32-bit unsigned integer uniquely identifying
                the router in the Autonomous System.  To ensure
                uniqueness, this may default to the 32-bit
                unsigned integer representation of one of
                the router's IPv4 interface addresses (if IPv4
                is configured on the router).

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
            REFERENCE
                  "OSPF for IPv6, Appendix C.1, Global Parameters"
            ::= { ospfv3GeneralGroup 1 }

    ospfv3AdminStatus OBJECT-TYPE
            SYNTAX          Status
            MAX-ACCESS      read-write
            STATUS          current
            DESCRIPTION
                "The administrative status of OSPFv3 in the
                router.  The value 'enabled' denotes that the
                OSPFv3 Process is active on at least one
                interface; 'disabled' disables it on all
                interfaces.

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
            ::= { ospfv3GeneralGroup 2 }

    ospfv3VersionNumber OBJECT-TYPE
            SYNTAX          INTEGER { version3 (3) }
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The version number of OSPF for IPv6 is 3."
            ::= { ospfv3GeneralGroup 3 }

    ospfv3AreaBdrRtrStatus OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "A flag to denote whether this router is an area
                border router.  The value of this object is true (1)
                when the router is an area border router."
            REFERENCE
                "OSPF Version 2, Section 3, Splitting the AS into
                Areas"
            ::= { ospfv3GeneralGroup 4 }

    ospfv3ASBdrRtrStatus OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-write
            STATUS          current
            DESCRIPTION
                "A flag to note whether this router is
                configured as an Autonomous System border router.

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
            REFERENCE
                "OSPF Version 2, Section 3.3, Classification of
                routers"
            ::= { ospfv3GeneralGroup 5 }

Okay the Router ID is a 32-bit unsigned integer that uniquely names the router in the Autonomous System, and it can default to one of the router's IPv4 addresses if IPv4 is on πŸ¦‹ It's persistent, so when you write to it, the entity saves that change to non-volatile storage. Same deal for the AS border router flag, which is read-write and also persistent πŸ’–

The admin status is giving on/off energy. "Enabled" means OSPFv3 is active on at least one interface, and "disabled" turns it off everywhere. The version number is just 3, no cap, because that's OSPF for IPv6 🌈 The area border router flag is read-only, and it's true (1) when the router is an area border router. Simple, iconic πŸ’…

    ospfv3AsScopeLsaCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of AS-scope (e.g., AS-External) link state
                advertisements in the link state database."
            ::= { ospfv3GeneralGroup 6 }

    ospfv3AsScopeLsaCksumSum OBJECT-TYPE
            SYNTAX          Unsigned32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The 32-bit unsigned sum of the LS checksums of
                the AS-scoped link state advertisements
                contained in the link state database.  This sum
                can be used to determine if there has been a
                change in a router's link state database or
                to compare the link state database of two
                routers."
            ::= { ospfv3GeneralGroup 7 }

    ospfv3OriginateNewLsas OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of new link state advertisements
                that have been originated.  This number is
                incremented each time the router originates a new
                LSA.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3GeneralGroup 8 }

    ospfv3RxNewLsas OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of link state advertisements
                received that are determined to be new
                instantiations.  This number does not include
                newer instantiations of self-originated link state
                advertisements.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3GeneralGroup 9 }

    ospfv3ExtLsaCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                 "The number of External (LS type 0x4005) in the
                 link state database."
            ::= { ospfv3GeneralGroup 10 }

Bestie, the AS-scope LSA count tells you how many AS-scope advertisements (like AS-External ones) are sitting in your link state database πŸ“š The checksum sum is a 32-bit unsigned sum of those LS checksums. It's a quick way to see if the database changed or to compare two routers' databases, which is lowkey genius 🧠✨

The originate and receive counters are both Counter32s. Originate goes up every time the router creates a new LSA, and receive counts new instantiations from others, not including newer copies of its own LSAs 🫢 Both can reset at re-initialization or whenever ospfv3DiscontinuityTime says so.

The external LSA count is a Gauge32 for External (LS type 0x4005) entries in the database, so that's another "how full is my tea cup" metric πŸ“

    ospfv3ExtAreaLsdbLimit OBJECT-TYPE
            SYNTAX          Integer32 (-1..'7FFFFFFF'h)
            MAX-ACCESS      read-write
            STATUS          current
            DESCRIPTION
                "The maximum number of non-default
                AS-external-LSA entries that can be stored in the
                link state database.  If the value is -1, then
                there is no limit.

                When the number of non-default AS-external-LSAs
                in a router's link state database reaches
                ospfv3ExtAreaLsdbLimit, the router enters Overflow
                state.  The router never holds more than
                ospfv3ExtAreaLsdbLimit non-default AS-external-LSAs
                in its database.  ospfv3ExtAreaLsdbLimit MUST be set
                identically in all routers attached to the OSPFv3
                backbone and/or any regular OSPFv3 area (i.e.,
                OSPFv3 stub areas and not-so-stubby-areas (NSSAs)
                are excluded).

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
            ::= { ospfv3GeneralGroup 11 }

    ospfv3ExitOverflowInterval OBJECT-TYPE
            SYNTAX          Unsigned32
            UNITS           "seconds"
            MAX-ACCESS      read-write
            STATUS          current
            DESCRIPTION
                "The number of seconds that, after entering
                Overflow state, a router will attempt to leave
                Overflow state.  This allows the router to again
                originate non-default, AS-External-LSAs.  When
                set to 0, the router will not leave Overflow
                state until restarted.

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."

            ::= { ospfv3GeneralGroup 12 }
Heads up, this one is a big deal 🚨 The external LSA limit caps how many non-default AS-external-LSA entries can live in the database. The value -1 means no limit at all. When you hit the limit, the router enters Overflow state and never holds more than that many. Also, this limit has to be set identically on every router attached to the OSPFv3 backbone and any regular OSPFv3 area, but stub areas and NSSAs are excluded from that rule πŸ’€

The exit overflow interval is how many seconds a router waits after entering Overflow state before trying to leave it, which lets it originate non-default AS-External-LSAs again πŸ¦‹ If you set it to 0, the router stays in Overflow until it's restarted. Very dramatic, very committed πŸ™ˆ

    ospfv3DemandExtensions OBJECT-TYPE
            SYNTAX         TruthValue
            MAX-ACCESS     read-write
            STATUS         current
            DESCRIPTION
                "The router's support for demand circuits.
                The value of this object is true (1) when
                demand circuits are supported.

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
            REFERENCE
                "OSPF Version 2; Extending OSPF to Support Demand
                Circuits"
            ::= { ospfv3GeneralGroup 13 }

    ospfv3ReferenceBandwidth OBJECT-TYPE
           SYNTAX       Unsigned32
           UNITS        "kilobits per second"
           MAX-ACCESS   read-write
           STATUS       current
           DESCRIPTION
               "Reference bandwidth in kilobits per second for
               calculating default interface metrics.  The
               default value is 100,000 KBPS (100 MBPS).

               This object is persistent, and when written, the
               entity SHOULD save the change to non-volatile
               storage."
           REFERENCE
               "OSPF Version 2, Appendix C.3, Router interface
               parameters"
           DEFVAL { 100000 }
        ::= { ospfv3GeneralGroup 14 }

    ospfv3RestartSupport OBJECT-TYPE
           SYNTAX       INTEGER { none(1),
                                  plannedOnly(2),
                                  plannedAndUnplanned(3)
                             }
           MAX-ACCESS   read-write
           STATUS       current
           DESCRIPTION
               "The router's support for OSPF graceful restart.
               Options include no restart support, only planned
               restarts, or both planned and unplanned restarts.

Okay the demand extensions object is a yes/no for whether the router supports demand circuits, and it's read-write and persistent πŸŽ€ Then the reference bandwidth is the number used to work out default interface metrics, measured in kilobits per second. The default is 100,000 KBPS, which is 100 MBPS 🌈 It's also persistent, so writes stick around ✨

And the graceful restart support object is giving three options: none, planned restarts only, or both planned and unplanned restarts. I'm literally obsessed with how clean that enum is 😭🫢

Okay bestie, picking up right where we left off πŸ’–

               This object is persistent, and when written, the
               entity SHOULD save the change to non-volatile
               storage."
           REFERENCE "Graceful OSPF Restart, Appendix B.1, Global
                        Parameters (Minimum subset)"
           ::= { ospfv3GeneralGroup 15 }

    ospfv3RestartInterval OBJECT-TYPE
           SYNTAX       Ospfv3UpToRefreshIntervalTC
           UNITS        "seconds"
           MAX-ACCESS   read-write
           STATUS       current
           DESCRIPTION
               "Configured OSPF graceful restart timeout interval.

               This object is persistent, and when written, the
               entity SHOULD save the change to non-volatile
               storage."
           REFERENCE "Graceful OSPF Restart, Appendix B.1, Global
                     Parameters (Minimum subset)"
           DEFVAL { 120 }
           ::= { ospfv3GeneralGroup 16 }

    ospfv3RestartStrictLsaChecking OBJECT-TYPE
          SYNTAX       TruthValue
          MAX-ACCESS   read-write
          STATUS       current
          DESCRIPTION
             "Indicates if strict LSA checking is enabled for
             graceful restart.  A value of true (1) indicates that
             strict LSA checking is enabled.

             This object is persistent, and when written,
             the entity SHOULD save the change to non-volatile
             storage."
          REFERENCE "Graceful OSPF Restart, Appendix B.2, Global
                    Parameters (Optional)"
          DEFVAL { true }
          ::= { ospfv3GeneralGroup 17 }

    ospfv3RestartStatus OBJECT-TYPE
           SYNTAX       INTEGER { notRestarting(1),
                                  plannedRestart(2),
                                  unplannedRestart(3)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "The current status of OSPF graceful restart capability."
           ::= { ospfv3GeneralGroup 18 }

    ospfv3RestartAge OBJECT-TYPE
           SYNTAX       Ospfv3UpToRefreshIntervalTC
           UNITS        "seconds"
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "Remaining time in the current OSPF graceful restart
              interval."
           ::= { ospfv3GeneralGroup 19 }

    ospfv3RestartExitReason OBJECT-TYPE
           SYNTAX       INTEGER { none(1),
                                  inProgress(2),
                                  completed(3),
                                  timedOut(4),
                                  topologyChanged(5)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "Describes the outcome of the last attempt at a
              graceful restart.

              none:            no restart has yet been attempted.
              inProgress:      a restart attempt is currently underway.
              completed:       the last restart completed successfully.
              timedOut:        the last restart timed out.
              topologyChanged: the last restart was aborted due to
                               a topology change."
        ::= { ospfv3GeneralGroup 20 }

    ospfv3NotificationEnable OBJECT-TYPE
           SYNTAX TruthValue
           MAX-ACCESS read-write
           STATUS current
           DESCRIPTION
               "This object provides a coarse level of control
                over the generation of OSPFv3 notifications.

                If this object is set to true (1), then it enables
                the generation of OSPFv3 notifications.  If it is
                set to false (2), these notifications are not
                generated.

                This object is persistent, and when written, the
                entity SHOULD save the change to non-volatile
                storage."
       ::= { ospfv3GeneralGroup 21 }

   ospfv3StubRouterSupport OBJECT-TYPE
        SYNTAX       TruthValue
        MAX-ACCESS   read-only
        STATUS       current
        DESCRIPTION
            "The router's support for stub router functionality.  An
            object value of true (1) indicates that stub router
            functionality is supported."
        REFERENCE
            "OSPF Stub Router Advertisement"
        ::= { ospfv3GeneralGroup 22 }

    ospfv3StubRouterAdvertisement OBJECT-TYPE
        SYNTAX       INTEGER {
                           doNotAdvertise(1),
                           advertise(2)
                           }
        MAX-ACCESS   read-write
        STATUS       current
        DESCRIPTION
            "This object controls the advertisement of
            stub LSAs by the router.  The value
            doNotAdvertise (1) will result in the advertisement
            of standard LSAs and is the default value.

            This object is persistent, and when written,
            the entity SHOULD save the change to non-volatile
            storage."
        REFERENCE
            "OSPF Stub Router Advertisement, Section 2, Proposed
            Solution"
        DEFVAL { doNotAdvertise }
        ::= { ospfv3GeneralGroup 23 }

   ospfv3DiscontinuityTime OBJECT-TYPE
       SYNTAX     TimeStamp
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
          "The value of sysUpTime on the most recent occasion
           at which any one of this MIB's counters suffered
           a discontinuity.

           If no such discontinuities have occurred since the last
           re-initialization of the local management subsystem,
           then this object contains a zero value."
       ::= { ospfv3GeneralGroup 24 }

     ospfv3RestartTime OBJECT-TYPE
         SYNTAX     TimeStamp
         MAX-ACCESS read-only
         STATUS     current
         DESCRIPTION
            "The value of sysUpTime on the most recent occasion
             at which the ospfv3RestartExitReason was updated."
         ::= { ospfv3GeneralGroup 25 }

    -- The OSPFv3 Area Data Structure contains information
    -- regarding the various areas.  The interfaces and
    -- virtual links are configured as part of these areas.
    -- Area 0, by definition, is the backbone area.

    ospfv3AreaTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3AreaEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Information describing the configured
                parameters and cumulative statistics of the router's
                attached areas.  The interfaces and
                virtual links are configured as part of these areas.
                Area 0, by definition, is the backbone area."
            REFERENCE
                "OSPF Version 2, Section 6, The Area Data
                Structure"
            ::= { ospfv3Objects 2 }

    ospfv3AreaEntry OBJECT-TYPE
            SYNTAX          Ospfv3AreaEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Information describing the configured
                parameters and cumulative statistics of one of the
                router's attached areas.

                The information in this table is persistent,
                and when written, the entity SHOULD save the a
                change to non-volatile storage."
            INDEX           { ospfv3AreaId }
            ::= { ospfv3AreaTable 1 }

    Ospfv3AreaEntry ::= SEQUENCE {
            ospfv3AreaId
                    Ospfv3AreaIdTC,
            ospfv3AreaImportAsExtern
                    INTEGER,
            ospfv3AreaSpfRuns
                    Counter32,
            ospfv3AreaBdrRtrCount
                    Gauge32,
            ospfv3AreaAsBdrRtrCount
                    Gauge32,
            ospfv3AreaScopeLsaCount
                    Gauge32,
            ospfv3AreaScopeLsaCksumSum
                    Unsigned32,
            ospfv3AreaSummary
                    INTEGER,
            ospfv3AreaRowStatus
                    RowStatus,
            ospfv3AreaStubMetric
                    BigMetric,
            ospfv3AreaNssaTranslatorRole
                    INTEGER,
            ospfv3AreaNssaTranslatorState
                    INTEGER,
            ospfv3AreaNssaTranslatorStabInterval
                    Unsigned32,
            ospfv3AreaNssaTranslatorEvents
                    Counter32,
            ospfv3AreaStubMetricType
                    INTEGER,
            ospfv3AreaTEEnabled
                    TruthValue
            }

    ospfv3AreaId OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A 32-bit unsigned integer uniquely identifying an area.
                Area ID 0 is used for the OSPFv3 backbone."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            ::= { ospfv3AreaEntry 1 }

    ospfv3AreaImportAsExtern OBJECT-TYPE
            SYNTAX          INTEGER {
                            importExternal(1),   -- normal area
                            importNoExternal(2), -- stub area
                            importNssa(3)        -- not-so-stubby-area
                            }
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "Indicates whether an area is a stub area, NSSA, or
                standard area.  AS-scope LSAs are not imported into stub
                areas or NSSAs.  NSSAs import AS-External data as NSSA
                LSAs that have Area-scope."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            DEFVAL { importExternal }
            ::= { ospfv3AreaEntry 2 }

    ospfv3AreaSpfRuns OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of times that the intra-area route
                table has been calculated using this area's
                link state database.  This is typically done
                using Dijkstra's algorithm.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3AreaEntry 3 }

    ospfv3AreaBdrRtrCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The total number of area border routers
                reachable within this area.  This is initially zero,
                and is calculated in each Shortest Path First (SPF)
                pass."
            DEFVAL { 0 }
            ::= { ospfv3AreaEntry 4 }

    ospfv3AreaAsBdrRtrCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The total number of Autonomous System border
                routers reachable within this area.  This is
                initially zero, and is calculated in each SPF
                pass."
            DEFVAL { 0 }
            ::= { ospfv3AreaEntry 5 }

    ospfv3AreaScopeLsaCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The total number of Area-scope link state
                advertisements in this area's link state
                database."
             DEFVAL { 0 }
            ::= { ospfv3AreaEntry 6 }

That's the end of this bit, and we're getting into the good stuff next πŸŽ€

ospfv3AreaScopeLsaCksumSum OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The 32-bit unsigned sum of the Area-scope link state advertisements' LS checksums contained in this area's link state database. The sum can be used to determine if there has been a change in a router's link state database or to compare the link state database of two routers." ::= { ospfv3AreaEntry 7 }

ospfv3AreaSummary OBJECT-TYPE SYNTAX INTEGER { noAreaSummary(1), sendAreaSummary(2) } MAX-ACCESS read-create STATUS current DESCRIPTION "The variable ospfv3AreaSummary controls the import of Inter-Area LSAs into stub and NSSA areas. It has no effect on other areas.

If it is noAreaSummary, the router will neither originate nor propagate Inter-Area LSAs into the stub or NSSA area. It will only advertise a default route.

If it is sendAreaSummary, the router will both summarize and propagate Inter-Area LSAs." DEFVAL { sendAreaSummary } ::= { ospfv3AreaEntry 8 }

ospfv3AreaRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object permits management of the table by facilitating actions such as row creation, construction, and destruction.

The value of this object has no effect on whether other objects in this conceptual row can be modified." ::= { ospfv3AreaEntry 9 }

ospfv3AreaStubMetric OBJECT-TYPE SYNTAX BigMetric MAX-ACCESS read-create STATUS current DESCRIPTION "The metric value advertised for the default route into stub and NSSA areas. By default, this equals the least metric among the interfaces to other areas." ::= { ospfv3AreaEntry 10 }

ospfv3AreaNssaTranslatorRole OBJECT-TYPE SYNTAX INTEGER { always(1), candidate(2) } MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates an NSSA border router's policy to perform NSSA translation of NSSA-LSAs into AS-External-LSAs." DEFVAL { candidate } ::= { ospfv3AreaEntry 11 }

ospfv3AreaNssaTranslatorState OBJECT-TYPE SYNTAX INTEGER { enabled(1), elected(2), disabled(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates if and how an NSSA border router is performing NSSA translation of NSSA-LSAs into AS-External-LSAs. When this object is set to 'enabled', the NSSA border router's ospfv3AreaNssaTranslatorRole has been set to 'always'. When this object is set to 'elected', a candidate NSSA border router is translating NSSA-LSAs into AS-External-LSAs. When this object is set to 'disabled', a candidate NSSA Border router is NOT translating NSSA-LSAs into AS-External-LSAs." ::= { ospfv3AreaEntry 12 }

ospfv3AreaNssaTranslatorStabInterval OBJECT-TYPE SYNTAX Unsigned32 UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The stability interval defined as the number of seconds after an elected translator determines its services are no longer required that it should continue to perform its translation duties." DEFVAL { 40 } ::= { ospfv3AreaEntry 13 }

ospfv3AreaNssaTranslatorEvents OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates the number of Translator state changes that have occurred since the last start-up of the OSPFv3 routing 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 ospfv3DiscontinuityTime." ::= { ospfv3AreaEntry 14 }

ospfv3AreaStubMetricType OBJECT-TYPE SYNTAX INTEGER { ospfv3Metric(1), -- OSPF Metric comparableCost(2), -- external type 1 nonComparable(3) -- external type 2 } MAX-ACCESS read-create STATUS current DESCRIPTION "This variable assigns the type of metric advertised as a default route." DEFVAL { ospfv3Metric } ::= { ospfv3AreaEntry 15 }

ospfv3AreaTEEnabled OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates whether or not traffic engineering is enabled in the area. The object is set to the value true (1) to enable traffic engineering. Traffic engineering is disabled by default." DEFVAL { false } ::= { ospfv3AreaEntry 16 }

-- OSPFv3 AS-Scope Link State Database

ospfv3AsLsdbTable OBJECT-TYPE SYNTAX SEQUENCE OF Ospfv3AsLsdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The OSPFv3 Process's AS-scope link state database (LSDB). The LSDB contains the AS-scope link state advertisements from throughout the areas that the device is attached to." ::= { ospfv3Objects 3 }

ospfv3AsLsdbEntry OBJECT-TYPE SYNTAX Ospfv3AsLsdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single AS-scope link state advertisement." INDEX { ospfv3AsLsdbType, ospfv3AsLsdbRouterId, ospfv3AsLsdbLsid }

::= { ospfv3AsLsdbTable 1 }

Ospfv3AsLsdbEntry ::= SEQUENCE { ospfv3AsLsdbType Unsigned32, ospfv3AsLsdbRouterId Ospfv3RouterIdTC, ospfv3AsLsdbLsid Ospfv3LsIdTC, ospfv3AsLsdbSequence Ospfv3LsaSequenceTC, ospfv3AsLsdbAge Ospfv3LsaAgeTC, ospfv3AsLsdbChecksum Integer32, ospfv3AsLsdbAdvertisement OCTET STRING, ospfv3AsLsdbTypeKnown TruthValue }

ospfv3AsLsdbType OBJECT-TYPE SYNTAX Unsigned32(0..'FFFFFFFF'h) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The type of the link state advertisement. Each link state type has a separate advertisement format. AS-scope LSAs not recognized by the router may be stored in the database." ::= { ospfv3AsLsdbEntry 1 }

ospfv3AsLsdbRouterId OBJECT-TYPE SYNTAX Ospfv3RouterIdTC MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 32-bit number that uniquely identifies the originating router in the Autonomous System." REFERENCE "OSPF Version 2, Appendix C.1, Global parameters" ::= { ospfv3AsLsdbEntry 2 }

ospfv3AsLsdbLsid OBJECT-TYPE SYNTAX Ospfv3LsIdTC MAX-ACCESS not-accessible STATUS current DESCRIPTION "The Link State ID is an LS type-specific field containing a unique identifier; it identifies the piece of the routing domain that is being described by the advertisement. In contrast to OSPFv2, the LSID has no addressing semantics." ::= { ospfv3AsLsdbEntry 3 }

-- Note that the OSPF sequence number is a 32-bit signed -- integer. It starts with the value '80000001'h -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. -- Thus, a typical sequence number will be very negative.

ospfv3AsLsdbSequence OBJECT-TYPE SYNTAX Ospfv3LsaSequenceTC MAX-ACCESS read-only STATUS current DESCRIPTION "The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate link state advertisements. The space of sequence numbers is linearly ordered. The larger the sequence number, the more recent the advertisement." REFERENCE "OSPF Version 2, Section 12.1.6, LS sequence number" ::= { ospfv3AsLsdbEntry 4 }

ospfv3AsLsdbAge OBJECT-TYPE SYNTAX Ospfv3LsaAgeTC UNITS "seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "This field is the age of the link state advertisement in seconds. The high-order bit of the LS age field is considered the DoNotAge bit for support of on-demand circuits." REFERENCE "OSPF Version 2, Section 12.1.1, LS age; Extending OSPF to Support Demand Circuits, Section 2.2, The LS age field." ::= { ospfv3AsLsdbEntry 5 }

ospfv3AsLsdbChecksum OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "This field is the checksum of the complete contents of the advertisement, excepting the age field. The age field is excepted so that an advertisement's age can be incremented without updating the checksum. The checksum used is the same that is used for ISO connectionless datagrams; it is commonly referred to as the Fletcher checksum." REFERENCE "OSPF Version 2, Section 12.1.7, LS checksum" ::= { ospfv3AsLsdbEntry 6 }

ospfv3AsLsdbAdvertisement OBJECT-TYPE SYNTAX OCTET STRING (SIZE (1..65535)) MAX-ACCESS read-only STATUS current DESCRIPTION "The entire link state advertisement, including its header." ::= { ospfv3AsLsdbEntry 7 }

okay so we're still in 4.3 and the AS-scope table is wrapping up right here πŸŽ€ then the Area-scope and Link-scope tables roll in like the main characters they are πŸ’…πŸ¦‹

    ospfv3AsLsdbTypeKnown OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The value true (1) indicates that the LSA type
                is recognized by this router."
            ::= { ospfv3AsLsdbEntry 8 }

     --  OSPFv3 Area-Scope Link State Database

    ospfv3AreaLsdbTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3AreaLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The OSPFv3 Process's Area-scope LSDB.
                The LSDB contains the Area-scope link state
                advertisements from throughout the area that the
                device is attached to."
            ::= { ospfv3Objects 4 }

    ospfv3AreaLsdbEntry OBJECT-TYPE
            SYNTAX          Ospfv3AreaLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A single Area-scope link state advertisement."
            INDEX           { ospfv3AreaLsdbAreaId,
                              ospfv3AreaLsdbType,
                              ospfv3AreaLsdbRouterId,
                              ospfv3AreaLsdbLsid }
            ::= { ospfv3AreaLsdbTable 1 }

    Ospfv3AreaLsdbEntry ::= SEQUENCE {
            ospfv3AreaLsdbAreaId
                    Ospfv3AreaIdTC,
            ospfv3AreaLsdbType
                    Unsigned32,
            ospfv3AreaLsdbRouterId
                    Ospfv3RouterIdTC,
            ospfv3AreaLsdbLsid
                    Ospfv3LsIdTC,
            ospfv3AreaLsdbSequence
                    Ospfv3LsaSequenceTC,
            ospfv3AreaLsdbAge
                    Ospfv3LsaAgeTC,
            ospfv3AreaLsdbChecksum
                    Integer32,
            ospfv3AreaLsdbAdvertisement
                    OCTET STRING,
            ospfv3AreaLsdbTypeKnown
                    TruthValue
            }

    ospfv3AreaLsdbAreaId OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The 32-bit identifier of the Area from which the
                LSA was received."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            ::= { ospfv3AreaLsdbEntry 1 }

    ospfv3AreaLsdbType OBJECT-TYPE
            SYNTAX          Unsigned32(0..'FFFFFFFF'h)
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The type of the link state advertisement.
                Each link state type has a separate
                advertisement format.  Area-scope LSAs unrecognized
                by the router are also stored in this database."
            ::= { ospfv3AreaLsdbEntry 2 }

    ospfv3AreaLsdbRouterId OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The 32-bit number that uniquely identifies the
                originating router in the Autonomous System."
            REFERENCE
                "OSPF Version 2, Appendix C.1, Global parameters"
            ::= { ospfv3AreaLsdbEntry 3 }

    ospfv3AreaLsdbLsid OBJECT-TYPE
            SYNTAX          Ospfv3LsIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Link State ID is an LS type-specific field
                containing a unique identifier;
                it identifies the piece of the routing domain
                that is being described by the advertisement.
                In contrast to OSPFv2, the LSID has no
                addressing semantics."
            ::= { ospfv3AreaLsdbEntry 4 }

    -- Note that the OSPF sequence number is a 32-bit signed
    -- integer.  It starts with the value '80000001'h
    -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h.
    -- Thus, a typical sequence number will be very negative.

    ospfv3AreaLsdbSequence OBJECT-TYPE
            SYNTAX          Ospfv3LsaSequenceTC
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The sequence number field is a signed 32-bit
                integer.  It is used to detect old and
                duplicate link state advertisements.  The space
                of sequence numbers is linearly ordered.  The
                larger the sequence number, the more recent the
                advertisement."

            REFERENCE
                "OSPF Version 2, Section 12.1.6, LS sequence
                number"
            ::= { ospfv3AreaLsdbEntry 5 }

    ospfv3AreaLsdbAge OBJECT-TYPE
            SYNTAX          Ospfv3LsaAgeTC
            UNITS           "seconds"
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the age of the link state
                advertisement in seconds.  The high-order bit
                of the LS age field is considered the DoNotAge
                bit for support of on-demand circuits."
            REFERENCE
                "OSPF Version 2, Section 12.1.1, LS age;
                 Extending OSPF to Support Demand Circuits,
                 Section 2.2, The LS age field."
            ::= { ospfv3AreaLsdbEntry 6 }

    ospfv3AreaLsdbChecksum OBJECT-TYPE
            SYNTAX          Integer32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the checksum of the complete
                contents of the advertisement, excepting the
                age field.  The age field is excepted so that
                an advertisement's age can be incremented
                without updating the checksum.  The checksum
                used is the same that is used for ISO
                connectionless datagrams; it is commonly
                referred to as the Fletcher checksum."
            REFERENCE
                "OSPF Version 2, Section 12.1.7, LS checksum"
            ::= { ospfv3AreaLsdbEntry 7 }

    ospfv3AreaLsdbAdvertisement OBJECT-TYPE
            SYNTAX          OCTET STRING (SIZE (1..65535))
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The entire link state advertisement, including
                its header."
            ::= { ospfv3AreaLsdbEntry 8 }

    ospfv3AreaLsdbTypeKnown OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The value true (1) indicates that the LSA type is
                recognized by this router."
            ::= { ospfv3AreaLsdbEntry 9 }

    -- OSPFv3 Link-Scope Link State Database, for non-virtual interfaces

    ospfv3LinkLsdbTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3LinkLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The OSPFv3 Process's Link-scope LSDB for non-virtual
                interfaces.  The LSDB contains the Link-scope link
                state advertisements from the interfaces that the
                device is attached to."
            ::= { ospfv3Objects 5 }

    ospfv3LinkLsdbEntry OBJECT-TYPE
            SYNTAX          Ospfv3LinkLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A single Link-scope link state advertisement."
            INDEX           { ospfv3LinkLsdbIfIndex,
                              ospfv3LinkLsdbIfInstId,
                              ospfv3LinkLsdbType,
                              ospfv3LinkLsdbRouterId,
                              ospfv3LinkLsdbLsid }
            ::= { ospfv3LinkLsdbTable 1 }

    Ospfv3LinkLsdbEntry ::= SEQUENCE {
            ospfv3LinkLsdbIfIndex
                    InterfaceIndex,
            ospfv3LinkLsdbIfInstId
                    Ospfv3IfInstIdTC,
            ospfv3LinkLsdbType
                    Unsigned32,
            ospfv3LinkLsdbRouterId
                    Ospfv3RouterIdTC,
            ospfv3LinkLsdbLsid
                    Ospfv3LsIdTC,
            ospfv3LinkLsdbSequence
                    Ospfv3LsaSequenceTC,

            ospfv3LinkLsdbAge
                    Ospfv3LsaAgeTC,
            ospfv3LinkLsdbChecksum
                    Integer32,
            ospfv3LinkLsdbAdvertisement
                    OCTET STRING,
            ospfv3LinkLsdbTypeKnown
                    TruthValue
            }

    ospfv3LinkLsdbIfIndex OBJECT-TYPE
            SYNTAX         InterfaceIndex
            MAX-ACCESS     not-accessible
            STATUS         current
            DESCRIPTION
                "The identifier of the link from which the LSA
                was received."
            ::= { ospfv3LinkLsdbEntry 1 }

    ospfv3LinkLsdbIfInstId OBJECT-TYPE
            SYNTAX         Ospfv3IfInstIdTC
            MAX-ACCESS     not-accessible
            STATUS         current
            DESCRIPTION
                "The identifier of the interface instance from
                which the LSA was received."
            ::= { ospfv3LinkLsdbEntry 2 }

    ospfv3LinkLsdbType OBJECT-TYPE
            SYNTAX          Unsigned32(0..'FFFFFFFF'h)
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The type of the link state advertisement.
                Each link state type has a separate
                advertisement format.  Link-scope LSAs unrecognized
                by the router are also stored in this database."
            ::= { ospfv3LinkLsdbEntry 3 }

    ospfv3LinkLsdbRouterId OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The 32-bit number that uniquely identifies the
                originating router in the Autonomous System."
            REFERENCE
                "OSPF Version 2, Appendix C.1, Global parameters"

            ::= { ospfv3LinkLsdbEntry 4 }

    ospfv3LinkLsdbLsid OBJECT-TYPE
            SYNTAX        Ospfv3LsIdTC
            MAX-ACCESS    not-accessible
            STATUS        current
            DESCRIPTION
                "The Link State ID is an LS type-specific field
                containing a unique identifier;
                it identifies the piece of the routing domain
                that is being described by the advertisement.
                In contrast to OSPFv2, the LSID has no
                addressing semantics.  However, in OSPFv3
                the Link State ID always contains the flooding
                scope of the LSA."
            ::= { ospfv3LinkLsdbEntry 5 }

    -- Note that the OSPF sequence number is a 32-bit signed
    -- integer.  It starts with the value '80000001'h
    -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h.
    -- Thus, a typical sequence number will be very negative.

    ospfv3LinkLsdbSequence OBJECT-TYPE
            SYNTAX          Ospfv3LsaSequenceTC
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The sequence number field is a signed 32-bit
                integer.  It is used to detect old and duplicate
                link state advertisements.  The space of
                sequence numbers is linearly ordered.  The
                larger the sequence number, the more recent the
                advertisement."
            REFERENCE
                "OSPF Version 2, Section 12.1.6, LS sequence
                number"
            ::= { ospfv3LinkLsdbEntry 6 }

okay bestie, the link-LSDB fields are next and they're lowkey iconic πŸ¦‹ The age field even has its own DoNotAge bit for on-demand circuits 🧚

    ospfv3LinkLsdbAge OBJECT-TYPE
            SYNTAX          Ospfv3LsaAgeTC
            UNITS           "seconds"
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the age of the link state
                advertisement in seconds.  The high-order bit
                of the LS age field is considered the DoNotAge
                bit for support of on-demand circuits."

            REFERENCE
                "OSPF Version 2, Section 12.1.1, LS age;
                 Extending OSPF to Support Demand Circuits,
                 Section 2.2, The LS age field."
            ::= { ospfv3LinkLsdbEntry 7 }

    ospfv3LinkLsdbChecksum OBJECT-TYPE
            SYNTAX          Integer32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the checksum of the complete
                contents of the advertisement, excepting the
                age field.  The age field is excepted so that
                an advertisement's age can be incremented
                without updating the checksum.  The checksum
                used is the same that is used for ISO
                connectionless datagrams; it is commonly
                referred to as the Fletcher checksum."
            REFERENCE
                "OSPF Version 2, Section 12.1.7, LS checksum"
            ::= { ospfv3LinkLsdbEntry 8 }

    ospfv3LinkLsdbAdvertisement OBJECT-TYPE
            SYNTAX          OCTET STRING (SIZE (1..65535))
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The entire link state advertisement, including
                its header."
            ::= { ospfv3LinkLsdbEntry 9 }

    ospfv3LinkLsdbTypeKnown OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The value true (1) indicates that the LSA type is
                recognized by this router."
            ::= { ospfv3LinkLsdbEntry 10 }

    -- OSPF Host Table

    ospfv3HostTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3HostEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION

                "The Host/Metric Table indicates what hosts are
                directly attached to the router and their
                corresponding metrics."
            REFERENCE
                "OSPF Version 2, Appendix C.7, Host route
                parameters"
            ::= { ospfv3Objects 6 }

    ospfv3HostEntry OBJECT-TYPE
            SYNTAX          Ospfv3HostEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A metric to be advertised when a given host is
                reachable.

                The information in this table is persistent, and
                when written, the entity SHOULD save the change
                to non-volatile storage."
            INDEX           { ospfv3HostAddressType,
                              ospfv3HostAddress }
            ::= { ospfv3HostTable 1 }

    Ospfv3HostEntry ::= SEQUENCE {
            ospfv3HostAddressType
                    InetAddressType,
            ospfv3HostAddress
                    InetAddress,
            ospfv3HostMetric
                    Metric,
            ospfv3HostRowStatus
                    RowStatus,
            ospfv3HostAreaID
                    Ospfv3AreaIdTC
            }

    ospfv3HostAddressType OBJECT-TYPE
            SYNTAX          InetAddressType
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The address type of ospfv3HostAddress.  Only IPv6
                global address type is expected."
            REFERENCE
                "OSPF Version 2, Appendix C.7, Host route
                parameters"
            ::= { ospfv3HostEntry 1 }

    ospfv3HostAddress OBJECT-TYPE
            SYNTAX          InetAddress
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The IPv6 address of the host.  Must be an
                IPv6 global address."
            REFERENCE
                "OSPF Version 2, Appendix C.7, Host route
                parameters"
            ::= { ospfv3HostEntry 2 }

    ospfv3HostMetric OBJECT-TYPE
            SYNTAX          Metric
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The metric to be advertised."
            REFERENCE
                "OSPF Version 2, Appendix C.7, Host route
                parameters"
            ::= { ospfv3HostEntry 3 }

    ospfv3HostRowStatus OBJECT-TYPE
            SYNTAX          RowStatus
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "This object permits management of the table by
                facilitating actions such as row creation,
                construction, and destruction.

                The value of this object has no effect on
                whether other objects in this conceptual row can be
                modified."
            ::= { ospfv3HostEntry 4 }

    ospfv3HostAreaID OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The Area the host entry is to be found within.
                By default, the area for the subsuming OSPFv3
                interface, or Area 0 if there is no subsuming
                interface."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"

            ::= { ospfv3HostEntry 5 }

    -- OSPFv3 Interface Table

    ospfv3IfTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3IfEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The OSPFv3 Interface Table describes the
                interfaces from the viewpoint of OSPFv3."
            REFERENCE
                "OSPF for IPv6, Appendix C.3, Router Interface
                Parameters"
            ::= { ospfv3Objects 7 }

    ospfv3IfEntry OBJECT-TYPE
            SYNTAX          Ospfv3IfEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The OSPFv3 Interface Entry describes one
                interface from the viewpoint of OSPFv3.

                The information in this table is persistent,
                and when written, the entity SHOULD save the
                change to non-volatile storage."
            INDEX           { ospfv3IfIndex,
                              ospfv3IfInstId }
            ::= { ospfv3IfTable 1 }

    Ospfv3IfEntry ::= SEQUENCE {
            ospfv3IfIndex
                    InterfaceIndex,
            ospfv3IfInstId
                    Ospfv3IfInstIdTC,
            ospfv3IfAreaId
                    Ospfv3AreaIdTC,
            ospfv3IfType
                    INTEGER,
            ospfv3IfAdminStatus
                    Status,
            ospfv3IfRtrPriority
                    DesignatedRouterPriority,
            ospfv3IfTransitDelay
                    Ospfv3UpToRefreshIntervalTC,
            ospfv3IfRetransInterval
                    Ospfv3UpToRefreshIntervalTC,

            ospfv3IfHelloInterval
                    HelloRange,
            ospfv3IfRtrDeadInterval
                     Ospfv3DeadIntervalRangeTC,
            ospfv3IfPollInterval
                    Unsigned32,
            ospfv3IfState
                    INTEGER,
            ospfv3IfDesignatedRouter
                    Ospfv3RouterIdTC,
            ospfv3IfBackupDesignatedRouter
                    Ospfv3RouterIdTC,
            ospfv3IfEvents
                    Counter32,
            ospfv3IfRowStatus
                    RowStatus,
            ospfv3IfDemand
                    TruthValue,
            ospfv3IfMetricValue
                    Metric,
            ospfv3IfLinkScopeLsaCount
                    Gauge32,
            ospfv3IfLinkLsaCksumSum
                    Unsigned32,
            ospfv3IfDemandNbrProbe
                    TruthValue,
            ospfv3IfDemandNbrProbeRetransLimit
                    Unsigned32,
            ospfv3IfDemandNbrProbeInterval
                    Unsigned32,
            ospfv3IfTEDisabled
                    TruthValue,
            ospfv3IfLinkLSASuppression
                    TruthValue
            }

    ospfv3IfIndex OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The interface index of this OSPFv3 interface.
                It corresponds to the interface index of the
                IPv6 interface on which OSPFv3 is configured."
            ::= { ospfv3IfEntry 1 }

    ospfv3IfInstId OBJECT-TYPE
            SYNTAX          Ospfv3IfInstIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Enables multiple interface instances of OSPFv3
                to be run over a single link.  Each interface
                instance would be assigned a separate ID.  This ID
                has local link significance only."
            ::= { ospfv3IfEntry 2 }

    ospfv3IfAreaId OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "A 32-bit integer uniquely identifying the area
                to which the interface connects.  Area ID
                0 is used for the OSPFv3 backbone."
            DEFVAL          { 0 }
            ::= { ospfv3IfEntry 3 }

    ospfv3IfType OBJECT-TYPE
            SYNTAX          INTEGER {
                            broadcast(1),
                            nbma(2),
                            pointToPoint(3),
                            pointToMultipoint(5)
                            }
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The OSPFv3 interface type."
            ::= { ospfv3IfEntry 4 }

    ospfv3IfAdminStatus OBJECT-TYPE
            SYNTAX          Status
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The OSPFv3 interface's administrative status.
                The value formed on the interface; the interface
                will be advertised as an internal route to some
                area.  The value 'disabled' denotes that the
                interface is external to OSPFv3.

                Note that a value of 'disabled' for the object
                ospfv3AdminStatus will override a value of
                'enabled' for the interface."
            DEFVAL          { enabled }
            ::= { ospfv3IfEntry 5 }

    ospfv3IfRtrPriority OBJECT-TYPE
            SYNTAX          DesignatedRouterPriority
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The priority of this interface.  Used in
                multi-access networks, this field is used in
                the designated-router election algorithm.  The
                value 0 signifies that the router is not
                eligible to become the Designated Router on this
                particular network.  In the event of a tie in
                this value, routers will use their Router ID as
                a tie breaker."
            DEFVAL          { 1 }
            ::= { ospfv3IfEntry 6 }

ospfv3IfTransitDelay OBJECT-TYPE SYNTAX Ospfv3UpToRefreshIntervalTC UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The estimated number of seconds it takes to transmit a Link State Update packet over this interface. LSAs contained in the update packet must have their age incremented by this amount before transmission. This value should take into account the transmission and propagation delays of the interface." REFERENCE "OSPF for IPv6, Appendix C.3, Router Interface Parameters." DEFVAL { 1 } ::= { ospfv3IfEntry 7 }

ospfv3IfRetransInterval OBJECT-TYPE SYNTAX Ospfv3UpToRefreshIntervalTC UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The number of seconds between link state advertisement retransmissions for adjacencies belonging to this interface. This value is also used when retransmitting database description and Link State Request packets." DEFVAL { 5 } ::= { ospfv3IfEntry 8 }

ospfv3IfHelloInterval OBJECT-TYPE SYNTAX HelloRange UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The length of time, in seconds, between the Hello packets that the router sends on the interface. This value must be the same for all routers attached to a common network." DEFVAL { 10 } ::= { ospfv3IfEntry 9 }

ospfv3IfRtrDeadInterval OBJECT-TYPE SYNTAX Ospfv3DeadIntervalRangeTC UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The number of seconds that a router's Hello packets have not been seen before its neighbors declare the router down on the interface. This should be some multiple of the Hello interval. This value must be the same for all routers attached to a common network." DEFVAL { 40 } ::= { ospfv3IfEntry 10 }

ospfv3IfPollInterval OBJECT-TYPE SYNTAX Unsigned32 UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "The larger time interval, in seconds, between the Hello packets sent to an inactive, non-broadcast multi-access neighbor." DEFVAL { 120 } ::= { ospfv3IfEntry 11 }

ospfv3IfState OBJECT-TYPE SYNTAX INTEGER { down(1), loopback(2), waiting(3), pointToPoint(4), designatedRouter(5), backupDesignatedRouter(6), otherDesignatedRouter(7), standby(8) } MAX-ACCESS read-only STATUS current DESCRIPTION "The OSPFv3 interface state. An interface may be in standby state if there are multiple interfaces on the link and another interface is active. The interface may be in Down state if the underlying IPv6 interface is down or if the admin status is 'disabled' either globally or for the interface." ::= { ospfv3IfEntry 12 }

ospfv3IfDesignatedRouter OBJECT-TYPE SYNTAX Ospfv3RouterIdTC MAX-ACCESS read-only STATUS current DESCRIPTION "The Router ID of the Designated Router." ::= { ospfv3IfEntry 13 }

ospfv3IfBackupDesignatedRouter OBJECT-TYPE SYNTAX Ospfv3RouterIdTC MAX-ACCESS read-only STATUS current DESCRIPTION "The Router ID of the Backup Designated Router." ::= { ospfv3IfEntry 14 }

ospfv3IfEvents OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times this OSPFv3 interface has changed its state or an error has occurred.

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 ospfv3DiscontinuityTime." ::= { ospfv3IfEntry 15 }

ospfv3IfRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object permits management of the table by facilitating actions such as row creation, construction, and destruction.

The value of this object has no effect on whether other objects in this conceptual row can be modified." ::= { ospfv3IfEntry 16 }

ospfv3IfDemand OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates whether Demand OSPFv3 procedures (Hello suppression to FULL neighbors and setting the DoNotAge flag on propagated LSAs) should be performed on this interface." DEFVAL { false } ::= { ospfv3IfEntry 17 }

ospfv3IfMetricValue OBJECT-TYPE SYNTAX Metric MAX-ACCESS read-create STATUS current DESCRIPTION "The metric assigned to this interface. The default value of the metric is 'Reference Bandwidth / ifSpeed'. The value of the reference bandwidth can be set in the ospfv3ReferenceBandwidth object." ::= { ospfv3IfEntry 18 }

ospfv3IfLinkScopeLsaCount OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of Link-scope link state advertisements in this link's link state database." ::= { ospfv3IfEntry 19 }

ospfv3IfLinkLsaCksumSum OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The 32-bit unsigned sum of the Link-scope link state advertisements' LS checksums contained in this link's link state database. The sum can be used to determine if there has been a change in a router's link state database or to compare the link state database of two routers." ::= { ospfv3IfEntry 20 }

ospfv3IfDemandNbrProbe OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates whether or not neighbor probing is enabled to determine whether or not the neighbor is inactive. Neighbor probing is disabled by default." DEFVAL { false } ::= { ospfv3IfEntry 21 }

ospfv3IfDemandNbrProbeRetransLimit OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-create STATUS current DESCRIPTION "The number of consecutive LSA retransmissions before the neighbor is deemed inactive and the neighbor adjacency is brought down." DEFVAL { 10 } ::= { ospfv3IfEntry 22}

ospfv3IfDemandNbrProbeInterval OBJECT-TYPE SYNTAX Unsigned32 UNITS "seconds" MAX-ACCESS read-create STATUS current DESCRIPTION "Defines how often the neighbor will be probed." DEFVAL { 120 } ::= { ospfv3IfEntry 23 }

ospfv3IfTEDisabled OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates whether or not traffic engineering is disabled on the interface when traffic engineering is enabled in the area where the interface is attached. The object is set to the value true (1) to disable traffic engineering on the interface. Traffic engineering is enabled by default on the interface when traffic engineering is enabled in the area where the interface is attached." DEFVAL { false } ::= { ospfv3IfEntry 24 }

ospfv3IfLinkLSASuppression OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Specifies whether or not link LSA origination is suppressed for broadcast or NBMA interface types. The object is set to value true (1) to suppress the origination." REFERENCE "OSPF for IPv6, Appendix C.3, Router Interface Parameters" DEFVAL { false } ::= { ospfv3IfEntry 25 }

-- OSPFv3 Virtual Interface Table

ospfv3VirtIfTable OBJECT-TYPE SYNTAX SEQUENCE OF Ospfv3VirtIfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about this router's virtual interfaces that the OSPFv3 Process is configured to carry on."

REFERENCE "OSPF for IPv6, Appendix C.4, Virtual Link Parameters" ::= { ospfv3Objects 8 }

ospfv3VirtIfEntry OBJECT-TYPE SYNTAX Ospfv3VirtIfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a single virtual interface.

The information in this table is persistent, and when written, the entity SHOULD save the change to non-volatile storage." INDEX { ospfv3VirtIfAreaId, ospfv3VirtIfNeighbor } ::= { ospfv3VirtIfTable 1 }

okay bestie, the virtual link table is up next and it's giving organized πŸŽ€ each column is one property of a virtual link, like its transit area, its far-end router, and its timers πŸ’…

    Ospfv3VirtIfEntry ::= SEQUENCE {
            ospfv3VirtIfAreaId
                    Ospfv3AreaIdTC,
            ospfv3VirtIfNeighbor
                    Ospfv3RouterIdTC,
            ospfv3VirtIfIndex
                    InterfaceIndex,
            ospfv3VirtIfInstId
                    Ospfv3IfInstIdTC,
            ospfv3VirtIfTransitDelay
                    Ospfv3UpToRefreshIntervalTC,
            ospfv3VirtIfRetransInterval
                    Ospfv3UpToRefreshIntervalTC,
            ospfv3VirtIfHelloInterval
                    HelloRange,
            ospfv3VirtIfRtrDeadInterval
                    Ospfv3DeadIntervalRangeTC,
            ospfv3VirtIfState
                    INTEGER,
            ospfv3VirtIfEvents
                    Counter32,
            ospfv3VirtIfRowStatus
                    RowStatus,
            ospfv3VirtIfLinkScopeLsaCount
                    Gauge32,
            ospfv3VirtIfLinkLsaCksumSum
                    Unsigned32
            }

    ospfv3VirtIfAreaId OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The transit area that the virtual link
                traverses.  By definition, this is not
                Area 0."
            ::= { ospfv3VirtIfEntry 1 }

    ospfv3VirtIfNeighbor OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Router ID of the virtual neighbor."
            ::= { ospfv3VirtIfEntry 2 }

    ospfv3VirtIfIndex OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The local interface index assigned by the
                OSPFv3 Process to this OSPFv3 virtual interface.
                It is advertised in Hellos sent over the virtual
                link and in the router's router-LSAs."
            ::= { ospfv3VirtIfEntry 3 }

    ospfv3VirtIfInstId OBJECT-TYPE
            SYNTAX          Ospfv3IfInstIdTC
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The local Interface Instance ID assigned by the
                OSPFv3 Process to this OSPFv3 virtual interface."
            ::= { ospfv3VirtIfEntry 4 }

    ospfv3VirtIfTransitDelay OBJECT-TYPE
            SYNTAX          Ospfv3UpToRefreshIntervalTC
            UNITS           "seconds"
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The estimated number of seconds it takes to
                transmit a Link State Update packet over this
                interface."
            DEFVAL          { 1 }
            ::= { ospfv3VirtIfEntry 5 }

    ospfv3VirtIfRetransInterval OBJECT-TYPE
            SYNTAX          Ospfv3UpToRefreshIntervalTC
            UNITS           "seconds"
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The number of seconds between link state
                advertisement retransmissions for adjacencies
                belonging to this interface.  This value is
                also used when retransmitting database
                description and Link State Request packets.  This
                value should be well over the expected
                round-trip time."
            DEFVAL          { 5 }
            ::= { ospfv3VirtIfEntry 6 }

    ospfv3VirtIfHelloInterval OBJECT-TYPE
            SYNTAX          HelloRange
            UNITS           "seconds"
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The length of time, in seconds, between the
                Hello packets that the router sends on the
                interface.  This value must be the same for the
                virtual neighbor."
            DEFVAL          { 10 }
            ::= { ospfv3VirtIfEntry 7 }

    ospfv3VirtIfRtrDeadInterval OBJECT-TYPE
            SYNTAX          Ospfv3DeadIntervalRangeTC
            UNITS           "seconds"
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The number of seconds that a router's Hello
                packets have not been seen before its
                neighbors declare the router down.  This should
                be some multiple of the Hello interval.  This
                value must be the same for the virtual
                neighbor."
            DEFVAL          { 60 }
            ::= { ospfv3VirtIfEntry 8 }

    ospfv3VirtIfState OBJECT-TYPE
            SYNTAX          INTEGER {
                            down(1),
                            pointToPoint(4)
                            }
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "OSPF virtual interface states.  The same encoding
                as the ospfV3IfTable is used."
            ::= { ospfv3VirtIfEntry 9 }

    ospfv3VirtIfEvents OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of state changes or error events on
                this virtual link.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3VirtIfEntry 10 }

    ospfv3VirtIfRowStatus OBJECT-TYPE
            SYNTAX          RowStatus
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "This object permits management of the table by
                facilitating actions such as row creation,
                construction, and destruction.

                The value of this object has no effect on
                whether other objects in this conceptual row can be
                modified."
            ::= { ospfv3VirtIfEntry 11 }

    ospfv3VirtIfLinkScopeLsaCount OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The total number of Link-scope link state
                advertisements in this virtual link's link state
                database."

            ::= { ospfv3VirtIfEntry 12 }

    ospfv3VirtIfLinkLsaCksumSum OBJECT-TYPE
            SYNTAX          Unsigned32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The 32-bit unsigned sum of the Link-scope link state
                advertisements' LS checksums contained in this
                virtual link's link state database.  The sum can be used
                to determine if there has been a change in a
                router's link state database or to compare the
                link state database of two routers."
            ::= { ospfv3VirtIfEntry 13 }

    -- OSPFv3 Neighbor Table

    ospfv3NbrTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3NbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A table describing all neighbors in the
                locality of the OSPFv3 router."
            REFERENCE
                "OSPF Version 2, Section 10, The Neighbor Data
                Structure"
            ::= { ospfv3Objects 9 }

    ospfv3NbrEntry OBJECT-TYPE
            SYNTAX          Ospfv3NbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The information regarding a single neighbor."
            REFERENCE
                "OSPF Version 2, Section 10, The Neighbor Data
                Structure"
            INDEX           { ospfv3NbrIfIndex,
                              ospfv3NbrIfInstId,
                              ospfv3NbrRtrId }
            ::= { ospfv3NbrTable 1 }

    Ospfv3NbrEntry ::= SEQUENCE {
            ospfv3NbrIfIndex
                    InterfaceIndex,
            ospfv3NbrIfInstId
                    Ospfv3IfInstIdTC,

            ospfv3NbrRtrId
                    Ospfv3RouterIdTC,
            ospfv3NbrAddressType
                    InetAddressType,
            ospfv3NbrAddress
                    InetAddress,
            ospfv3NbrOptions
                    Integer32,
            ospfv3NbrPriority
                    DesignatedRouterPriority,
            ospfv3NbrState
                    INTEGER,
            ospfv3NbrEvents
                    Counter32,
            ospfv3NbrLsRetransQLen
                    Gauge32,
            ospfv3NbrHelloSuppressed
                    TruthValue,
            ospfv3NbrIfId
                    InterfaceIndex,
            ospfv3NbrRestartHelperStatus
                    INTEGER,
            ospfv3NbrRestartHelperAge
                    Ospfv3UpToRefreshIntervalTC,
            ospfv3NbrRestartHelperExitReason
                    INTEGER
            }

    ospfv3NbrIfIndex OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Local Link ID of the link over which the
                 neighbor can be reached."
            ::= { ospfv3NbrEntry 1 }

    ospfv3NbrIfInstId OBJECT-TYPE
            SYNTAX          Ospfv3IfInstIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Interface instance over which the neighbor
                can be reached.  This ID has local link
                significance only."
            ::= { ospfv3NbrEntry 2 }

    ospfv3NbrRtrId OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A 32-bit unsigned integer uniquely identifying the
                neighboring router in the Autonomous System."
            ::= { ospfv3NbrEntry 3 }

    ospfv3NbrAddressType OBJECT-TYPE
            SYNTAX          InetAddressType
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The address type of ospfv3NbrAddress.  Only IPv6
                addresses without zone index are expected."
            ::= { ospfv3NbrEntry 4 }

    ospfv3NbrAddress OBJECT-TYPE
            SYNTAX          InetAddress
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The IPv6 address of the neighbor associated with
                the local link."
            ::= { ospfv3NbrEntry 5 }

    ospfv3NbrOptions OBJECT-TYPE
            SYNTAX          Integer32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "A bit mask corresponding to the neighbor's
                options field."
            REFERENCE
                "OSPF for IPv6, Appendix A.2, The Options Field"
            ::= { ospfv3NbrEntry 6 }

    ospfv3NbrPriority OBJECT-TYPE
            SYNTAX          DesignatedRouterPriority
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The priority of this neighbor in the designated-
                router election algorithm.  The value 0 signifies
                that the neighbor is not eligible to become the
                Designated Router on this particular network."
            ::= { ospfv3NbrEntry 7 }

okay so this is where the neighbor drama really kicks off πŸ’… the state object tells you how things are going with each neighbor 🫢

    ospfv3NbrState OBJECT-TYPE
            SYNTAX          INTEGER {
                            down(1),
                            attempt(2),
                            init(3),
                            twoWay(4),
                            exchangeStart(5),
                            exchange(6),
                            loading(7),
                            full(8)
                            }
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The state of the relationship with this
                neighbor."
            REFERENCE
                "OSPF Version 2, Section 10.1, Neighbor states"
            ::= { ospfv3NbrEntry 8 }

    ospfv3NbrEvents OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of times this neighbor relationship
                has changed state or an error has occurred.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3NbrEntry 9 }

    ospfv3NbrLsRetransQLen OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The current length of the retransmission
                queue."
            ::= { ospfv3NbrEntry 10 }

    ospfv3NbrHelloSuppressed OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "Indicates whether Hellos are being suppressed
                to the neighbor."
            ::= { ospfv3NbrEntry 11 }

    ospfv3NbrIfId OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The Interface ID that the neighbor advertises
                in its Hello packets on this link, that is, the
                neighbor's local interface index."
            ::= { ospfv3NbrEntry 12 }

    ospfv3NbrRestartHelperStatus OBJECT-TYPE
           SYNTAX       INTEGER { notHelping(1),
                                  helping(2)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "Indicates whether the router is acting
              as a graceful restart helper for the neighbor."
              ::= { ospfv3NbrEntry 13 }

    ospfv3NbrRestartHelperAge OBJECT-TYPE
           SYNTAX       Ospfv3UpToRefreshIntervalTC
           UNITS        "seconds"
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "Remaining time in current OSPF graceful restart
              interval, if the router is acting as a restart
              helper for the neighbor."
           ::= { ospfv3NbrEntry 14 }

    ospfv3NbrRestartHelperExitReason OBJECT-TYPE
           SYNTAX       INTEGER { none(1),
                                  inProgress(2),
                                  completed(3),
                                  timedOut(4),
                                  topologyChanged(5)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
              "Describes the outcome of the last attempt at acting
              as a graceful restart helper for the neighbor.

              none:            no restart has yet been attempted.
              inProgress:      a restart attempt is currently underway.
              completed:       the last restart completed successfully.
              timedOut:        the last restart timed out.
              topologyChanged: the last restart was aborted due to
                               a topology change."
        ::= { ospfv3NbrEntry 15 }

    -- OSPFv3 Configured Neighbor Table

    ospfv3CfgNbrTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3CfgNbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A table describing all configured neighbors.

                The Configured Neighbors table just gives
                OSPFv3 information for sending OSPFv3 packets
                to potential neighbors and is typically used
                on NBMA and Point-to-Multipoint networks.
                Once a Hello is received from a neighbor in
                the Configured Neighbor table, an entry for
                that neighbor is created in the Neighbor table
                and adjacency state is maintained there.
                Neighbors on multi-access or Point-to-Point
                networks can use multicast addressing, so only
                Neighbor table entries are created for them."
            REFERENCE
                "OSPF Version 2, Section 10, The Neighbor Data
                Structure"
            ::= { ospfv3Objects 10 }

    ospfv3CfgNbrEntry OBJECT-TYPE
            SYNTAX          Ospfv3CfgNbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The information regarding a single configured
                neighbor.

                The information in this table is persistent,
                and when written, the entity SHOULD save the
                change to non-volatile storage."

            REFERENCE
                "OSPF Version 2, Section 10, The Neighbor Data
                Structure"
            INDEX           { ospfv3CfgNbrIfIndex,
                              ospfv3CfgNbrIfInstId,
                              ospfv3CfgNbrAddressType,
                              ospfv3CfgNbrAddress }
            ::= { ospfv3CfgNbrTable 1 }

    Ospfv3CfgNbrEntry ::= SEQUENCE {
            ospfv3CfgNbrIfIndex
                    InterfaceIndex,
            ospfv3CfgNbrIfInstId
                    Ospfv3IfInstIdTC,
            ospfv3CfgNbrAddressType
                    InetAddressType,
            ospfv3CfgNbrAddress
                    InetAddress,
            ospfv3CfgNbrPriority
                    DesignatedRouterPriority,
            ospfv3CfgNbrRowStatus
                    RowStatus
            }

    ospfv3CfgNbrIfIndex OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Local Link ID of the link over which the
                 neighbor can be reached."
            ::= { ospfv3CfgNbrEntry 1 }

    ospfv3CfgNbrIfInstId OBJECT-TYPE
            SYNTAX          Ospfv3IfInstIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Interface instance over which the neighbor
                can be reached.  This ID has local link
                significance only."
            ::= { ospfv3CfgNbrEntry 2 }

    ospfv3CfgNbrAddressType OBJECT-TYPE
            SYNTAX          InetAddressType
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The address type of ospfv3NbrAddress.  Only IPv6
                addresses without zone index are expected."
            ::= { ospfv3CfgNbrEntry 3 }

    ospfv3CfgNbrAddress OBJECT-TYPE
            SYNTAX          InetAddress
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The IPv6 address of the neighbor associated with
                the local link."
            ::= { ospfv3CfgNbrEntry 4 }

    ospfv3CfgNbrPriority OBJECT-TYPE
            SYNTAX          DesignatedRouterPriority
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "The priority of this neighbor in the designated-
                router election algorithm.  The value 0 signifies
                that the neighbor is not eligible to become the
                Designated Router on this particular network."
            DEFVAL          { 1 }
            ::= { ospfv3CfgNbrEntry 5 }

    ospfv3CfgNbrRowStatus OBJECT-TYPE
            SYNTAX          RowStatus
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "This object permits management of the table by
                facilitating actions such as row creation,
                construction, and destruction.

                The value of this object has no effect on
                whether other objects in this conceptual row can be
                modified."
            ::= { ospfv3CfgNbrEntry 6 }

    -- OSPFv3 Virtual Neighbor Table

    ospfv3VirtNbrTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3VirtNbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A table describing all virtual neighbors."

            REFERENCE
                "OSPF Version 2, Section 15, Virtual Links"
            ::= { ospfv3Objects 11 }

    ospfv3VirtNbrEntry OBJECT-TYPE
            SYNTAX          Ospfv3VirtNbrEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "Virtual neighbor information."
            INDEX           { ospfv3VirtNbrArea,
                              ospfv3VirtNbrRtrId }
            ::= { ospfv3VirtNbrTable 1 }

    Ospfv3VirtNbrEntry ::= SEQUENCE {
            ospfv3VirtNbrArea
                    Ospfv3AreaIdTC,
            ospfv3VirtNbrRtrId
                    Ospfv3RouterIdTC,
            ospfv3VirtNbrIfIndex
                    InterfaceIndex,
            ospfv3VirtNbrIfInstId
                    Ospfv3IfInstIdTC,
            ospfv3VirtNbrAddressType
                    InetAddressType,
            ospfv3VirtNbrAddress
                    InetAddress,
            ospfv3VirtNbrOptions
                    Integer32,
            ospfv3VirtNbrState
                    INTEGER,
            ospfv3VirtNbrEvents
                    Counter32,
            ospfv3VirtNbrLsRetransQLen
                    Gauge32,
            ospfv3VirtNbrHelloSuppressed
                    TruthValue,
            ospfv3VirtNbrIfId
                    InterfaceIndex,
            ospfv3VirtNbrRestartHelperStatus
                    INTEGER,
            ospfv3VirtNbrRestartHelperAge
                    Ospfv3UpToRefreshIntervalTC,
            ospfv3VirtNbrRestartHelperExitReason
                    INTEGER
            }

    ospfv3VirtNbrArea OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The transit area Identifier."
            ::= { ospfv3VirtNbrEntry 1 }

    ospfv3VirtNbrRtrId OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A 32-bit integer uniquely identifying the
                neighboring router in the Autonomous System."
            ::= { ospfv3VirtNbrEntry 2 }

    ospfv3VirtNbrIfIndex OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The local Interface ID for the virtual link over
                which the neighbor can be reached."
            ::= { ospfv3VirtNbrEntry 3 }

okay bestie, we're still deep in the virtual neighbor stuff πŸ¦‹ Here's the next chunk of the MIB, and it's a lot of fields, so let's go!

    ospfv3VirtNbrIfInstId OBJECT-TYPE
            SYNTAX          Ospfv3IfInstIdTC
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The interface instance for the virtual link over
                which the neighbor can be reached."
            ::= { ospfv3VirtNbrEntry 4 }

    ospfv3VirtNbrAddressType OBJECT-TYPE
            SYNTAX          InetAddressType
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The address type of ospfv3VirtNbrAddress.  Only IPv6
                addresses without zone index are expected."
            ::= { ospfv3VirtNbrEntry 5 }

    ospfv3VirtNbrAddress OBJECT-TYPE
            SYNTAX          InetAddress
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The IPv6 address advertised by this virtual neighbor.
                It must be a global scope address."
            ::= { ospfv3VirtNbrEntry 6 }

    ospfv3VirtNbrOptions OBJECT-TYPE
            SYNTAX          Integer32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "A bit mask corresponding to the neighbor's options
                field."
            REFERENCE
                "OSPF for IPv6, Appendix A.2, The Options Field"
            ::= { ospfv3VirtNbrEntry 7 }

    ospfv3VirtNbrState OBJECT-TYPE
            SYNTAX          INTEGER {
                            down(1),
                            attempt(2),
                            init(3),
                            twoWay(4),
                            exchangeStart(5),
                            exchange(6),
                            loading(7),
                            full(8)
                            }
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The state of the virtual neighbor relationship."
            ::= { ospfv3VirtNbrEntry 8 }

    ospfv3VirtNbrEvents OBJECT-TYPE
            SYNTAX          Counter32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The number of times this virtual link has
                changed its state or an error has occurred.

                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 ospfv3DiscontinuityTime."
            ::= { ospfv3VirtNbrEntry 9 }

    ospfv3VirtNbrLsRetransQLen OBJECT-TYPE
            SYNTAX          Gauge32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The current length of the retransmission
                queue."
            ::= { ospfv3VirtNbrEntry 10 }

    ospfv3VirtNbrHelloSuppressed OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "Indicates whether Hellos are being suppressed
                to the neighbor."
            ::= { ospfv3VirtNbrEntry 11 }

    ospfv3VirtNbrIfId OBJECT-TYPE
            SYNTAX          InterfaceIndex
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The Interface ID that the neighbor advertises
                in its Hello packets on this virtual link, that is,
                the neighbor's local Interface ID."
            ::= { ospfv3VirtNbrEntry 12 }

So this bit covers the virtual neighbor's interface instance, address type and address, options, state, events counter, retransmission queue length, Hello suppression, and interface ID. ✨ Notice the address has to be a global scope one, and the address type is only IPv6 without a zone index 🌸

The restart helper fields come next, and they're giving graceful restart vibes πŸ”₯

   ospfv3VirtNbrRestartHelperStatus OBJECT-TYPE
           SYNTAX       INTEGER { notHelping(1),
                                  helping(2)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
               "Indicates whether the router is acting
               as a graceful restart helper for the neighbor."
              ::= { ospfv3VirtNbrEntry 13 }

    ospfv3VirtNbrRestartHelperAge OBJECT-TYPE
           SYNTAX       Ospfv3UpToRefreshIntervalTC
           UNITS        "seconds"
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
               "Remaining time in the current OSPF graceful restart
               interval, if the router is acting as a restart
               helper for the neighbor."

           ::= { ospfv3VirtNbrEntry 14 }

    ospfv3VirtNbrRestartHelperExitReason OBJECT-TYPE
           SYNTAX       INTEGER { none(1),
                                  inProgress(2),
                                  completed(3),
                                  timedOut(4),
                                  topologyChanged(5)
                                }
           MAX-ACCESS   read-only
           STATUS       current
           DESCRIPTION
               "Describes the outcome of the last attempt at acting
               as a graceful restart helper for the neighbor.

               none:            no restart has yet been attempted.
               inProgress:      a restart attempt is currently underway.
               completed:       the last restart completed successfully.
               timedOut:        the last restart timed out.
               topologyChanged: the last restart was aborted due to
                                a topology change."
        ::= { ospfv3VirtNbrEntry 15 }

    --
    -- The OSPFv3 Area Aggregate Table
    --

So the helper status tells you if the router is helping a neighbor restart, the age is how much time is left in that restart window, and the exit reason says how the last attempt turned out: none, inProgress, completed, timedOut, or topologyChanged πŸ’…

Now the Area Aggregate Table. It's basically the bouncer for address aggregates going out of an area, so the stuff beyond the borders stays small 🧚 It's indexed by area ID, LSDB type, prefix type, prefix, and prefix length, and if one range swallows another, the most specific match wins πŸ‘‘

    ospfv3AreaAggregateTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3AreaAggregateEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Area Aggregate Table acts as an adjunct
                to the Area Table.  It describes those address
                aggregates that are configured to be propagated
                from an area.  Its purpose is to reduce the amount
                of information that is known beyond an area's
                borders.

                A range of IPv6 prefixes specified by a
                prefix / prefix length pair.  Note that if
                ranges are configured such that one range
                subsumes another range, the most specific
                match is the preferred one."
            ::= { ospfv3Objects 12 }

    ospfv3AreaAggregateEntry OBJECT-TYPE
            SYNTAX          Ospfv3AreaAggregateEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A single area aggregate entry.

                Information in this table is persistent, and
                when this object is written, the entity SHOULD
                save the change to non-volatile storage."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            INDEX           { ospfv3AreaAggregateAreaID,
                              ospfv3AreaAggregateAreaLsdbType,
                              ospfv3AreaAggregatePrefixType,
                              ospfv3AreaAggregatePrefix,
                              ospfv3AreaAggregatePrefixLength }
            ::= { ospfv3AreaAggregateTable 1 }

    Ospfv3AreaAggregateEntry ::= SEQUENCE {
            ospfv3AreaAggregateAreaID
                    Ospfv3AreaIdTC,
            ospfv3AreaAggregateAreaLsdbType
                    INTEGER,
            ospfv3AreaAggregatePrefixType
                    InetAddressType,
            ospfv3AreaAggregatePrefix
                    InetAddress,
            ospfv3AreaAggregatePrefixLength
                    InetAddressPrefixLength,
            ospfv3AreaAggregateRowStatus
                    RowStatus,
            ospfv3AreaAggregateEffect
                    INTEGER,
            ospfv3AreaAggregateRouteTag
                    Unsigned32
            }

    ospfv3AreaAggregateAreaID OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The area the Address Aggregate is to be found
                within."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            ::= { ospfv3AreaAggregateEntry 1 }

    ospfv3AreaAggregateAreaLsdbType OBJECT-TYPE
            SYNTAX          INTEGER {
                            interAreaPrefixLsa(8195), -- 0x2003
                            nssaExternalLsa(8199)     -- 0x2007
                            }
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The type of the Address Aggregate.  This field
                specifies the Area LSDB type that this Address
                Aggregate applies to."
            REFERENCE
                "OSPF Version 2, Appendix A.4.1, The LSA header"
            ::= { ospfv3AreaAggregateEntry 2 }

    ospfv3AreaAggregatePrefixType OBJECT-TYPE
            SYNTAX          InetAddressType
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The prefix type of ospfv3AreaAggregatePrefix.  Only
                IPv6 addresses are expected."
            ::= { ospfv3AreaAggregateEntry 3 }

    ospfv3AreaAggregatePrefix OBJECT-TYPE
            SYNTAX          InetAddress (SIZE (0..16))
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The IPv6 prefix."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            ::= { ospfv3AreaAggregateEntry 4 }

    ospfv3AreaAggregatePrefixLength OBJECT-TYPE
            SYNTAX          InetAddressPrefixLength (3..128)
            UNITS           "bits"
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The length of the prefix (in bits).  A prefix can
                not be shorter than 3 bits."
            REFERENCE
                "OSPF Version 2, Appendix C.2, Area parameters"
            ::= { ospfv3AreaAggregateEntry 5 }

    ospfv3AreaAggregateRowStatus OBJECT-TYPE
            SYNTAX          RowStatus
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "This object permits management of the table by
                facilitating actions such as row creation,
                construction, and destruction.

                The value of this object has no effect on
                whether other objects in this conceptual row can be
                modified."
            ::= { ospfv3AreaAggregateEntry 6 }

    ospfv3AreaAggregateEffect OBJECT-TYPE
            SYNTAX          INTEGER {
                            advertiseMatching(1),
                            doNotAdvertiseMatching(2)
                            }
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "Prefixes subsumed by ranges will either trigger the
                advertisement of the indicated aggregate
                (advertiseMatching) or result in the prefix not
                being advertised at all outside the area."
            DEFVAL          { advertiseMatching }
            ::= { ospfv3AreaAggregateEntry 7 }

    ospfv3AreaAggregateRouteTag OBJECT-TYPE
            SYNTAX          Unsigned32
            MAX-ACCESS      read-create
            STATUS          current
            DESCRIPTION
                "This tag is advertised only in the summarized
                As-External LSA when summarizing from NSSA-LSAs to
                AS-External-LSAs."
            DEFVAL         { 0 }
            ::= { ospfv3AreaAggregateEntry 8 }

    -- OSPFv3 Link-Scope Link State Database, for virtual interfaces

Quick heads-up on the aggregate entries: the prefix length has to be at least 3 bits, and the area aggregate effect defaults to advertiseMatching ✨ The route tag only shows up in the summarized AS-External LSA when summarizing from NSSA-LSAs, which is such a specific little detail and I'm obsessed πŸ™ˆ

okay so we're still deep in the MIB definitions πŸŽ€ this part is all about the Virtual Link LSDB table, which is basically a little folder of Link-scope LSAs for virtual interfaces πŸ¦‹ let's get into it πŸ’…

    ospfv3VirtLinkLsdbTable OBJECT-TYPE
            SYNTAX          SEQUENCE OF Ospfv3VirtLinkLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The OSPFv3 Process's Link-scope LSDB for virtual
                interfaces.  The LSDB contains the Link-scope link
                state advertisements from virtual interfaces."

            ::= { ospfv3Objects 13 }

    ospfv3VirtLinkLsdbEntry OBJECT-TYPE
            SYNTAX          Ospfv3VirtLinkLsdbEntry
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "A single Link-scope link state advertisement
                for a virtual interface."
            INDEX           { ospfv3VirtLinkLsdbIfAreaId,
                              ospfv3VirtLinkLsdbIfNeighbor,
                              ospfv3VirtLinkLsdbType,
                              ospfv3VirtLinkLsdbRouterId,
                              ospfv3VirtLinkLsdbLsid }
            ::= { ospfv3VirtLinkLsdbTable 1 }

    Ospfv3VirtLinkLsdbEntry ::= SEQUENCE {
            ospfv3VirtLinkLsdbIfAreaId
                    Ospfv3AreaIdTC,
            ospfv3VirtLinkLsdbIfNeighbor
                    Ospfv3RouterIdTC,
            ospfv3VirtLinkLsdbType
                    Unsigned32,
            ospfv3VirtLinkLsdbRouterId
                    Ospfv3RouterIdTC,
            ospfv3VirtLinkLsdbLsid
                    Ospfv3LsIdTC,
            ospfv3VirtLinkLsdbSequence
                    Ospfv3LsaSequenceTC,
            ospfv3VirtLinkLsdbAge
                    Ospfv3LsaAgeTC,
            ospfv3VirtLinkLsdbChecksum
                    Integer32,
            ospfv3VirtLinkLsdbAdvertisement
                    OCTET STRING,
            ospfv3VirtLinkLsdbTypeKnown
                    TruthValue
            }

    ospfv3VirtLinkLsdbIfAreaId OBJECT-TYPE
            SYNTAX          Ospfv3AreaIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The transit area that the virtual link
                traverses.  By definition, this is not
                Area 0."
            ::= { ospfv3VirtLinkLsdbEntry 1 }

    ospfv3VirtLinkLsdbIfNeighbor OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The Router ID of the virtual neighbor."
            ::= { ospfv3VirtLinkLsdbEntry 2 }

    ospfv3VirtLinkLsdbType OBJECT-TYPE
            SYNTAX          Unsigned32(0..'FFFFFFFF'h)
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The type of the link state advertisement.
                Each link state type has a separate
                advertisement format.  Link-scope LSAs unrecognized
                by the router are also stored in this database."
            ::= { ospfv3VirtLinkLsdbEntry 3 }

    ospfv3VirtLinkLsdbRouterId OBJECT-TYPE
            SYNTAX          Ospfv3RouterIdTC
            MAX-ACCESS      not-accessible
            STATUS          current
            DESCRIPTION
                "The 32-bit number that uniquely identifies the
                originating router in the Autonomous System."
            REFERENCE
                "OSPF Version 2, Appendix C.1, Global parameters"
            ::= { ospfv3VirtLinkLsdbEntry 4 }

    ospfv3VirtLinkLsdbLsid OBJECT-TYPE
            SYNTAX        Ospfv3LsIdTC
            MAX-ACCESS    not-accessible
            STATUS        current
            DESCRIPTION
                "The Link State ID is an LS type-specific field
                containing a unique identifier;
                it identifies the piece of the routing domain
                that is being described by the advertisement.
                In contrast to OSPFv2, the LSID has no
                addressing semantics."
            ::= { ospfv3VirtLinkLsdbEntry 5 }

    -- Note that the OSPF sequence number is a 32-bit signed
    -- integer.  It starts with the value '80000001'h
    -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h.
    -- Thus, a typical sequence number will be very negative.

    ospfv3VirtLinkLsdbSequence OBJECT-TYPE
            SYNTAX          Ospfv3LsaSequenceTC
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The sequence number field is a signed 32-bit
                integer.  It is used to detect old and duplicate
                link state advertisements.  The space of
                sequence numbers is linearly ordered.  The
                larger the sequence number, the more recent the
                advertisement."
            REFERENCE
                "OSPF Version 2, Section 12.1.6, LS sequence
                number"
            ::= { ospfv3VirtLinkLsdbEntry 6 }

    ospfv3VirtLinkLsdbAge OBJECT-TYPE
            SYNTAX          Ospfv3LsaAgeTC
            UNITS           "seconds"
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the age of the link state
                advertisement in seconds.  The high-order bit
                of the LS age field is considered the DoNotAge
                bit for support of on-demand circuits."
            REFERENCE
                "OSPF Version 2, Section 12.1.1, LS age;
                 Extending OSPF to Support Demand Circuits,
                 Section 2.2, The LS age field."
            ::= { ospfv3VirtLinkLsdbEntry 7 }

    ospfv3VirtLinkLsdbChecksum OBJECT-TYPE
            SYNTAX          Integer32
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "This field is the checksum of the complete
                contents of the advertisement, excepting the
                age field.  The age field is excepted so that
                an advertisement's age can be incremented
                without updating the checksum.  The checksum
                used is the same that is used for ISO
                connectionless datagrams; it is commonly
                referred to as the Fletcher checksum."
            REFERENCE
                "OSPF Version 2, Section 12.1.7, LS checksum"
            ::= { ospfv3VirtLinkLsdbEntry 8 }

    ospfv3VirtLinkLsdbAdvertisement OBJECT-TYPE
            SYNTAX          OCTET STRING (SIZE (1..65535))
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The entire link state advertisement, including
                its header."
            ::= { ospfv3VirtLinkLsdbEntry 9 }

    ospfv3VirtLinkLsdbTypeKnown OBJECT-TYPE
            SYNTAX          TruthValue
            MAX-ACCESS      read-only
            STATUS          current
            DESCRIPTION
                "The value true (1) indicates that the LSA type is
                recognized by this router."
            ::= { ospfv3VirtLinkLsdbEntry 10 }

next up is the Notification Table, which is where the router keeps the bits it needs for notifications πŸ”” it's giving organised πŸ’…

    -- The Ospfv3 Notification Table

    -- The Ospfv3 Notification Table records fields that are
    -- required for notifications.

    ospfv3NotificationEntry OBJECT IDENTIFIER
            ::= { ospfv3Objects 14 }

    ospfv3ConfigErrorType OBJECT-TYPE
        SYNTAX       INTEGER {
                        badVersion(1),
                        areaMismatch(2),
                        unknownNbmaNbr(3), -- Router is DR eligible
                        unknownVirtualNbr(4),
                        helloIntervalMismatch(5),
                        deadIntervalMismatch(6),
                        optionMismatch(7),
                        mtuMismatch(8),
                        duplicateRouterId(9),
                        noError(10) }
        MAX-ACCESS   accessible-for-notify
        STATUS   current
        DESCRIPTION
            "Potential types of configuration conflicts.
            Used by the ospfv3ConfigError and
            ospfv3ConfigVirtError notifications."
        ::= { ospfv3NotificationEntry 1 }

    ospfv3PacketType OBJECT-TYPE
        SYNTAX       INTEGER {
                        hello(1),
                        dbDescript(2),
                        lsReq(3),
                        lsUpdate(4),
                        lsAck(5),
                        nullPacket(6) }
        MAX-ACCESS   accessible-for-notify
        STATUS       current
        DESCRIPTION
            "OSPFv3 packet types."
        ::= { ospfv3NotificationEntry 2 }

    ospfv3PacketSrc  OBJECT-TYPE
        SYNTAX       InetAddressIPv6
        MAX-ACCESS   accessible-for-notify
        STATUS       current
        DESCRIPTION
            "The IPv6 address of an inbound packet that cannot
            be identified by a neighbor instance.

            Only IPv6 addresses without zone index are expected."
        ::= { ospfv3NotificationEntry 3 }

    -- Notification Definitions

    -- The notifications need to be throttled so as to not overwhelm the
    -- management agent in case of rapid changes to the OSPFv3 module.

   ospfv3VirtIfStateChange NOTIFICATION-TYPE
        OBJECTS { ospfv3RouterId,  -- The originator of the notification
                  ospfv3VirtIfState  -- The new state
           }
        STATUS       current
        DESCRIPTION
            "An ospfv3VirtIfStateChange notification signifies that
            there has been a change in the state of an OSPFv3 virtual
            interface.

            This notification should be generated when the interface
            state regresses (e.g., goes from Point-to-Point to Down)
            or progresses to a terminal state (i.e., Point-to-Point)."
        ::= { ospfv3Notifications 1 }

   ospfv3NbrStateChange NOTIFICATION-TYPE
        OBJECTS { ospfv3RouterId, -- The originator of the notification
                  ospfv3NbrState  -- The new state

           }
        STATUS       current
        DESCRIPTION
            "An ospfv3NbrStateChange notification signifies that
            there has been a change in the state of a
            non-virtual OSPFv3 neighbor.  This notification should be
            generated when the neighbor state regresses
            (e.g., goes from Attempt or Full to 1-Way or
            Down) or progresses to a terminal state (e.g.,
            2-Way or Full).  When a neighbor transitions
            from or to Full on non-broadcast multi-access
            and broadcast networks, the notification should be
            generated by the Designated Router.  A Designated
            Router transitioning to Down will be noted by
            ospfIfStateChange."
        ::= { ospfv3Notifications 2 }

   ospfv3VirtNbrStateChange NOTIFICATION-TYPE
        OBJECTS { ospfv3RouterId, -- The originator of the notification
                  ospfv3VirtNbrState  -- The new state
           }
        STATUS       current
        DESCRIPTION
            "An ospfv3VirtNbrStateChange notification signifies
            that there has been a change in the state of an OSPFv3
            virtual neighbor.  This notification should be generated
            when the neighbor state regresses (e.g., goes
            from Attempt or Full to 1-Way or Down) or
            progresses to a terminal state (e.g., Full)."
        ::= { ospfv3Notifications 3 }

ospfv3IfConfigError NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3IfState, -- State of the interface ospfv3PacketSrc, -- IPv6 address of source ospfv3ConfigErrorType, -- Type of error ospfv3PacketType -- Type of packet } STATUS current DESCRIPTION "An ospfv3IfConfigError notification signifies that a packet has been received on a non-virtual interface from a router whose configuration parameters conflict with this router's configuration parameters. Note that the event optionMismatch should cause a notification only if it prevents an adjacency from forming." ::= { ospfv3Notifications 4 }

ospfv3VirtIfConfigError NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3VirtIfState, -- State of the interface ospfv3ConfigErrorType, -- Type of error ospfv3PacketType } STATUS current DESCRIPTION "An ospfv3VirtIfConfigError notification signifies that a packet has been received on a virtual interface from a router whose configuration parameters conflict with this router's configuration parameters. Note that the event optionMismatch should cause a notification only if it prevents an adjacency from forming." ::= { ospfv3Notifications 5 }

ospfv3IfRxBadPacket NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3IfState, -- State of the interface ospfv3PacketSrc, -- The source IPv6 address ospfv3PacketType -- Type of packet } STATUS current DESCRIPTION "An ospfv3IfRxBadPacket notification signifies that an OSPFv3 packet that cannot be parsed has been received on a non-virtual interface." ::= { ospfv3Notifications 6 }

ospfv3VirtIfRxBadPacket NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3VirtIfState, -- State of the interface ospfv3PacketType -- Type of packet } STATUS current DESCRIPTION "An ospfv3VirtIfRxBadPacket notification signifies that an OSPFv3 packet that cannot be parsed has been received on a virtual interface." ::= { ospfv3Notifications 7 }

ospfv3LsdbOverflow NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3ExtAreaLsdbLimit -- Limit on External LSAs } STATUS current DESCRIPTION "An ospfv3LsdbOverflow notification signifies that the number of LSAs in the router's link state database has exceeded ospfv3ExtAreaLsdbLimit." ::= { ospfv3Notifications 8 }

ospfv3LsdbApproachingOverflow NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3ExtAreaLsdbLimit } STATUS current DESCRIPTION "An ospfv3LsdbApproachingOverflow notification signifies that the number of LSAs in the router's link state database has exceeded ninety percent of ospfv3ExtAreaLsdbLimit." ::= { ospfv3Notifications 9 }

ospfv3IfStateChange NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3IfState -- The new state } STATUS current DESCRIPTION "An ospfv3IfStateChange notification signifies that there has been a change in the state of a non-virtual OSPFv3 interface. This notification should be generated when the interface state regresses (e.g., goes from DR to Down) or progresses to a terminal state (i.e., Point-to-Point, DR Other, DR, or Backup)." ::= { ospfv3Notifications 10 }

ospfv3NssaTranslatorStatusChange NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3AreaNssaTranslatorState -- new state } STATUS current DESCRIPTION "An ospfv3NssaTranslatorStatusChange notification indicates that there has been a change in the router's ability to translate OSPFv3 NSSA LSAs into OSPFv3 External LSAs. This notification should be generated when the Translator Status transitions from or to any defined status on a per-area basis." ::= { ospfv3Notifications 11 }

ospfv3RestartStatusChange NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3RestartStatus, -- new status ospfv3RestartInterval, ospfv3RestartExitReason } STATUS current DESCRIPTION "An ospfv3RestartStatusChange notification signifies that there has been a change in the graceful restart state for the router. This notification should be generated when the router restart status changes." ::= { ospfv3Notifications 12 }

ospfv3NbrRestartHelperStatusChange NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3NbrRestartHelperStatus, -- new status ospfv3NbrRestartHelperAge, ospfv3NbrRestartHelperExitReason } STATUS current DESCRIPTION "An ospfv3NbrRestartHelperStatusChange notification signifies that there has been a change in the graceful restart helper state for the neighbor. This notification should be generated when the neighbor restart helper status transitions for a neighbor." ::= { ospfv3Notifications 13 }

ospfv3VirtNbrRestartHelperStatusChange NOTIFICATION-TYPE OBJECTS { ospfv3RouterId, -- The originator of the notification ospfv3VirtNbrRestartHelperStatus, -- new status ospfv3VirtNbrRestartHelperAge, ospfv3VirtNbrRestartHelperExitReason } STATUS current DESCRIPTION "An ospfv3VirtNbrRestartHelperStatusChange notification signifies that there has been a change in the graceful restart helper state for the virtual neighbor. This notification should be generated when the virtual neighbor restart helper status transitions for a virtual neighbor." ::= { ospfv3Notifications 14 }

-- Conformance Information ospfv3Groups OBJECT IDENTIFIER ::= { ospfv3Conformance 1 } ospfv3Compliances OBJECT IDENTIFIER ::= { ospfv3Conformance 2 }

-- Compliance Statements

ospfv3FullCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement" MODULE -- this module MANDATORY-GROUPS { ospfv3BasicGroup, ospfv3AreaGroup, ospfv3IfGroup, ospfv3VirtIfGroup, ospfv3NbrGroup, ospfv3CfgNbrGroup, ospfv3VirtNbrGroup, ospfv3AreaAggregateGroup }

GROUP ospfv3AsLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their AS-scope link state database."

GROUP ospfv3AreaLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Area-scope link state database."

GROUP ospfv3LinkLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Link-scope link state database for non-virtual interfaces."

GROUP ospfv3VirtLinkLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Link-scope link state database for virtual interfaces."

GROUP ospfv3HostGroup DESCRIPTION "This group is required for OSPFv3 systems that support attached hosts."

GROUP ospfv3NotificationObjectGroup DESCRIPTION "This group is required for OSPFv3 systems that support OSPFv3 notifications."

GROUP ospfv3NotificationGroup DESCRIPTION "This group is required for OSPFv3 systems that support OSPFv3 notifications."

OBJECT ospfv3NbrAddressType SYNTAX InetAddressType { ipv6(2) } DESCRIPTION "An implementation is only required to support IPv6 address without zone index."

OBJECT ospfv3NbrAddress SYNTAX InetAddress (SIZE (16)) DESCRIPTION "An implementation is only required to support IPv6 address without zone index."

OBJECT ospfv3VirtNbrAddressType SYNTAX InetAddressType { ipv6(2) } DESCRIPTION "An implementation is only required to support IPv6 address without zone index."

OBJECT ospfv3VirtNbrAddress SYNTAX InetAddress (SIZE (16)) DESCRIPTION "An implementation is only required to support IPv6 address without zone index."

::= { ospfv3Compliances 1 }

ospfv3ReadOnlyCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "When this MIB module is implemented without support for read-create (i.e., in read-only mode), the implementation can claim read-only compliance. Such a device can then be monitored, but cannot be configured with this MIB."

MODULE -- this module MANDATORY-GROUPS { ospfv3BasicGroup, ospfv3AreaGroup, ospfv3IfGroup, ospfv3VirtIfGroup, ospfv3NbrGroup, ospfv3CfgNbrGroup, ospfv3VirtNbrGroup, ospfv3AreaAggregateGroup }

GROUP ospfv3AsLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their AS-scope link state database."

GROUP ospfv3AreaLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Area-scope link state database."

GROUP ospfv3LinkLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Link-scope link state database for non-virtual interfaces."

GROUP ospfv3VirtLinkLsdbGroup DESCRIPTION "This group is required for OSPFv3 systems that display their Link-scope link state database for virtual interfaces."

okay so we're still in the compliance section, and this bit lists the optional groups plus a read-only minimum-access rule for a whole pile of objects πŸŽ€ basically, if your system supports attached hosts or OSPFv3 notifications, you need these groups, and the write-access stuff is never required πŸ’…

          GROUP           ospfv3HostGroup
          DESCRIPTION
              "This group is required for OSPFv3 systems that
              support attached hosts."

          GROUP           ospfv3NotificationObjectGroup
          DESCRIPTION
              "This group is required for OSPFv3 systems that
              support OSPFv3 notifications."

          GROUP           ospfv3NotificationGroup
          DESCRIPTION
              "This group is required for OSPFv3 systems that
              support OSPFv3 notifications."

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          OBJECT ospfv3AreaAggregateRouteTag
          MIN-ACCESS read-only
          DESCRIPTION
               "Write access is not required."
       ::= { ospfv3Compliances 2 }

    -- units of conformance

    ospfv3BasicGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3RouterId,
                            ospfv3AdminStatus,
                            ospfv3VersionNumber,
                            ospfv3AreaBdrRtrStatus,
                            ospfv3ASBdrRtrStatus,
                            ospfv3AsScopeLsaCount,
                            ospfv3AsScopeLsaCksumSum,
                            ospfv3OriginateNewLsas,
                            ospfv3RxNewLsas,
                            ospfv3ExtLsaCount,
                            ospfv3ExtAreaLsdbLimit,
                            ospfv3ExitOverflowInterval,
                            ospfv3DemandExtensions,
                            ospfv3ReferenceBandwidth,
                            ospfv3RestartSupport,
                            ospfv3RestartInterval,
                            ospfv3RestartStrictLsaChecking,
                            ospfv3RestartStatus,
                            ospfv3RestartAge,
                            ospfv3RestartExitReason,
                            ospfv3NotificationEnable,
                            ospfv3StubRouterSupport,
                            ospfv3StubRouterAdvertisement,
                            ospfv3DiscontinuityTime,
                            ospfv3RestartTime
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for managing/monitoring
                OSPFv3 global parameters."
            ::= { ospfv3Groups 1 }

    ospfv3AreaGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3AreaImportAsExtern,
                            ospfv3AreaSpfRuns,
                            ospfv3AreaBdrRtrCount,
                            ospfv3AreaAsBdrRtrCount,
                            ospfv3AreaScopeLsaCount,
                            ospfv3AreaScopeLsaCksumSum,
                            ospfv3AreaSummary,
                            ospfv3AreaRowStatus,
                            ospfv3AreaStubMetric,
                            ospfv3AreaNssaTranslatorRole,
                            ospfv3AreaNssaTranslatorState,
                            ospfv3AreaNssaTranslatorStabInterval,
                            ospfv3AreaNssaTranslatorEvents,
                            ospfv3AreaStubMetricType,
                            ospfv3AreaTEEnabled
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                supporting areas."
            ::= { ospfv3Groups 2 }

    ospfv3AsLsdbGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3AsLsdbSequence,
                            ospfv3AsLsdbAge,
                            ospfv3AsLsdbChecksum,
                            ospfv3AsLsdbAdvertisement,
                            ospfv3AsLsdbTypeKnown
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                that display their AS-scope link state database."
            ::= { ospfv3Groups 3 }

    ospfv3AreaLsdbGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3AreaLsdbSequence,
                            ospfv3AreaLsdbAge,
                            ospfv3AreaLsdbChecksum,
                            ospfv3AreaLsdbAdvertisement,
                            ospfv3AreaLsdbTypeKnown
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                that display their Area-scope link state database."
            ::= { ospfv3Groups 4 }

    ospfv3LinkLsdbGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3LinkLsdbSequence,
                            ospfv3LinkLsdbAge,
                            ospfv3LinkLsdbChecksum,
                            ospfv3LinkLsdbAdvertisement,
                            ospfv3LinkLsdbTypeKnown
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                that display their Link-scope link state database
                for non-virtual interfaces."
            ::= { ospfv3Groups 5 }
    ospfv3HostGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3HostMetric,
                            ospfv3HostRowStatus,
                            ospfv3HostAreaID
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                that support attached hosts."
            ::= { ospfv3Groups 6 }

    ospfv3IfGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3IfAreaId,
                            ospfv3IfType,
                            ospfv3IfAdminStatus,
                            ospfv3IfRtrPriority,
                            ospfv3IfTransitDelay,
                            ospfv3IfRetransInterval,
                            ospfv3IfHelloInterval,
                            ospfv3IfRtrDeadInterval,
                            ospfv3IfPollInterval,
                            ospfv3IfState,
                            ospfv3IfDesignatedRouter,
                            ospfv3IfBackupDesignatedRouter,
                            ospfv3IfEvents,
                            ospfv3IfRowStatus,
                            ospfv3IfDemand,
                            ospfv3IfMetricValue,
                            ospfv3IfLinkScopeLsaCount,
                            ospfv3IfLinkLsaCksumSum,
                            ospfv3IfDemandNbrProbe,
                            ospfv3IfDemandNbrProbeRetransLimit,
                            ospfv3IfDemandNbrProbeInterval,
                            ospfv3IfTEDisabled,
                            ospfv3IfLinkLSASuppression
                            }
            STATUS          current
            DESCRIPTION
                "These interface objects are used for
                managing/monitoring OSPFv3 interfaces."
            ::= { ospfv3Groups 7 }

    ospfv3VirtIfGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3VirtIfIndex,
                            ospfv3VirtIfInstId,
                            ospfv3VirtIfTransitDelay,
                            ospfv3VirtIfRetransInterval,
                            ospfv3VirtIfHelloInterval,
                            ospfv3VirtIfRtrDeadInterval,
                            ospfv3VirtIfState,
                            ospfv3VirtIfEvents,
                            ospfv3VirtIfRowStatus,
                            ospfv3VirtIfLinkScopeLsaCount,
                            ospfv3VirtIfLinkLsaCksumSum
                            }
            STATUS          current
            DESCRIPTION
                "These virtual interface objects are used for
                managing/monitoring OSPFv3 virtual interfaces."
            ::= { ospfv3Groups 8 }

    ospfv3NbrGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3NbrAddressType,
                            ospfv3NbrAddress,
                            ospfv3NbrOptions,
                            ospfv3NbrPriority,
                            ospfv3NbrState,
                            ospfv3NbrEvents,
                            ospfv3NbrLsRetransQLen,
                            ospfv3NbrHelloSuppressed,
                            ospfv3NbrIfId,
                            ospfv3NbrRestartHelperStatus,
                            ospfv3NbrRestartHelperAge,
                            ospfv3NbrRestartHelperExitReason
                            }
            STATUS          current
            DESCRIPTION
                "These neighbor objects are used for
                managing/monitoring OSPFv3 neighbors."
            ::= { ospfv3Groups 9 }

    ospfv3CfgNbrGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3CfgNbrPriority,
                            ospfv3CfgNbrRowStatus
                            }
            STATUS          current
            DESCRIPTION
                "These configured neighbor objects are used for
                managing/monitoring OSPFv3-configured neighbors."
            ::= { ospfv3Groups 10 }

    ospfv3VirtNbrGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3VirtNbrIfIndex,
                            ospfv3VirtNbrIfInstId,
                            ospfv3VirtNbrAddressType,
                            ospfv3VirtNbrAddress,
                            ospfv3VirtNbrOptions,
                            ospfv3VirtNbrState,
                            ospfv3VirtNbrEvents,
                            ospfv3VirtNbrLsRetransQLen,
                            ospfv3VirtNbrHelloSuppressed,
                            ospfv3VirtNbrIfId,
                            ospfv3VirtNbrRestartHelperStatus,
                            ospfv3VirtNbrRestartHelperAge,
                            ospfv3VirtNbrRestartHelperExitReason
                            }
            STATUS          current
            DESCRIPTION
                "These virtual neighbor objects are used for
                managing/monitoring OSPFv3 virtual neighbors."
            ::= { ospfv3Groups 11 }

    ospfv3AreaAggregateGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3AreaAggregateRowStatus,
                            ospfv3AreaAggregateEffect,
                            ospfv3AreaAggregateRouteTag
                            }
            STATUS          current
            DESCRIPTION
                "These area aggregate objects are required for
                aggregating OSPFv3 prefixes for summarization
                across areas."
            ::= { ospfv3Groups 12 }

    ospfv3VirtLinkLsdbGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3VirtLinkLsdbSequence,
                            ospfv3VirtLinkLsdbAge,
                            ospfv3VirtLinkLsdbChecksum,
                            ospfv3VirtLinkLsdbAdvertisement,
                            ospfv3VirtLinkLsdbTypeKnown
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used for OSPFv3 systems
                that display their Link-scope link state database
                for virtual interfaces."
            ::= { ospfv3Groups 13 }

    ospfv3NotificationObjectGroup OBJECT-GROUP
            OBJECTS         {
                            ospfv3ConfigErrorType,
                            ospfv3PacketType,
                            ospfv3PacketSrc
                            }
            STATUS          current
            DESCRIPTION
                "These objects are used to record notification
                parameters."
            ::= { ospfv3Groups 14 }

    ospfv3NotificationGroup NOTIFICATION-GROUP
            NOTIFICATIONS   {
                            ospfv3VirtIfStateChange,
                            ospfv3NbrStateChange,
                            ospfv3VirtNbrStateChange,
                            ospfv3IfConfigError,
                            ospfv3VirtIfConfigError,
                            ospfv3IfRxBadPacket,
                            ospfv3VirtIfRxBadPacket,
                            ospfv3LsdbOverflow,
                            ospfv3LsdbApproachingOverflow,
                            ospfv3IfStateChange,
                            ospfv3NssaTranslatorStatusChange,
                            ospfv3RestartStatusChange,
                            ospfv3NbrRestartHelperStatusChange,
                            ospfv3VirtNbrRestartHelperStatusChange
                            }
            STATUS          current
            DESCRIPTION
                "This group is used for OSPFv3 notifications."
            ::= { ospfv3Groups 15 }

    END

6. Security Considerations ✨

okay bestie, this section is seriously important 🚨 so let's get into it πŸ’…. This MIB module has a bunch of management objects with a MAX-ACCESS of read-write and/or read-create πŸ”§. Those objects can be sensitive or vulnerable in some network environments 😬. If you let SET operations happen in a non-secure environment without proper protection, that can really mess with network operations πŸ’€. Like, improper manipulation of these objects can knock out network connectivity by administratively disabling the entire OSPFv3 entity or individual interfaces, by deleting configured neighbors, by reducing the limit on External LSAs, by changing ASBR status, by manipulating route aggregation, by manipulating interface and route metrics, by changing Hello interval or dead interval, or by changing interface type 😭. Remote monitoring can be defeated by disabling SNMP notifications πŸ™ˆ. And performance can take a hit from increasing the limit on External LSAs or changing DR/BDR (Designated Router / Backup Designated Router) priority πŸ“‰.

Some of the readable objects here (the ones with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable in some environments πŸ‘€. So it's important to control even GET and/or NOTIFY access to them, and possibly even encrypt their values when they're sent over the network via SNMP πŸ”. Unauthorized access to readable objects in this MIB module lets someone discover the network topology and operating parameters πŸ—ΊοΈ. That info can be used to target further attacks on the network or to gain a competitive business advantage πŸ•΅οΈβ€β™€οΈ.

SNMP versions prior to SNMPv3 did not include adequate security 🚫. Even if the network itself is secure (for example by using IPsec), there's still no control over who on that secure network can access and GET/SET (read/change/create/delete) the objects in this MIB module 😀.

It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) πŸ›‘οΈβœ¨.

Further, deploying SNMP versions prior to SNMPv3 is NOT RECOMMENDED πŸ™…β€β™€οΈ. Instead, it is RECOMMENDED to deploy SNMPv3 and enable cryptographic security πŸ”’πŸ’œ. It's then a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is properly configured, so access to the objects goes only to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them πŸ‘‘. No one gets in unless they're on the list, periodt πŸ’….


7. IANA Considerations 🌸

The MIB module in this document uses the following IANA-assigned OBJECT IDENTIFIER values, which are recorded in the SMI Numbers registry πŸ“‹:

     Descriptor        OBJECT IDENTIFIER value
     ----------        -----------------------

     ospfv3MIB           { mib-2 191 }

8. Acknowledgements 🫢

This document is based on the MIB for OSPF version 2 [RFC4750] πŸ¦‹. The editors would like to thank Toshiaki Takada, Ramachandran Radhakrishnan, Harikrishna Golapalli, Mahesh Kurapati, Acee Lindem, Keith McCloghrie, Manish Gupta, Nic Neate, Vanitha N., Vivek Dubey, Ramana Koppula, Boris Benenson, and Hong Zhang for their constructive comments πŸ’–. Special thanks to Joan Cucchiara for her thorough review as the MIB Doctor πŸ‘‘πŸŒˆ.


9. References πŸ“š

9.1. Normative References ✨

okay so these are the docs this spec literally can't function without 🫢 the reference list is where the whole family tree lives, bestie 🌳

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

[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.

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

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

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

[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF for
          IPv6", RFC 5340, July 2008.

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

[RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed.,
          Coltun, R., and F. Baker, "OSPF Version 2 Management
          Information Base", RFC 4750, December 2006.

9.2. Informative References ✨

these ones are the extra reading πŸ“š not strictly required but SO good to have on hand, no cap πŸ’œ

[RFC1224] Steinberg, L., "Techniques for managing asynchronously
          generated alerts", RFC 1224, May 1991.

[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
          (IPv6) Specification", RFC 2460, December 1998.

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

[RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An
          Architecture for Describing Simple Network Management
          Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
          December 2002.

[RFC3413] Levi, D., Meyer, P., and B. Stewart, "Simple Network
          Management Protocol (SNMP) Applications", STD 62, RFC 3413,
          December 2002.

Contributors' Addresses πŸŽ€

these lovely people helped build this, so they get their flowers πŸ’

Jacek Kwiatkowski
Intel Technology Poland
ul. Slowackiego 173
80-298 Gdansk, Poland
EMail: jacek.kwiatkowski@intel.com


Sebastian Zwolinski
Intel Technology Poland
ul. Slowackiego 173
80-298 Gdansk, Poland
EMail: sebastian.zwolinski@intel.com

Editors' Addresses πŸ¦‹

and these are the editors who kept the whole thing together 🫢 slay, honestly πŸ‘‘

Dan Joyal
Nortel
600 Technology Park Drive
Billerica, MA 01821
EMail: djoyal@nortel.com


Vishwas Manral
IP Infusion
Almora, Uttarakhand
India
EMail: vishwas@ipinfusion.com
πŸ“¦ where this page comes from