RFC 7184

Definition of Managed Objects for the Optimized Link State Routing Protocol Version 2

πŸ“… published April 2014, from ietf

RFC 7184: Definition of Managed Objects for the Optimized Link State Routing Protocol Version 2 πŸ’–

Okay bestie, here's the quick intel πŸŽ€ This is an Internet Standards Track document, published in April 2014 with ISSN 2070-1721. The authors are U. Herberg (Fujitsu Laboratories of America), R. Cole (US Army CERDEC), and T. Clausen (LIX, Ecole Polytechnique). The title block doesn't list anything it obsoletes or updates, so it's a clean slate 🧚

Abstract

Okay so this doc defines the Management Information Base (MIB) module for configuring and managing the Optimized Link State Routing Protocol version 2 (OLSRv2) πŸ¦‹ The OLSRv2-MIB module is split into configuration info, state info, performance info, and notifications. The state and performance stuff is seriously useful when you're troubleshooting the routing protocol πŸ” And there are two levels of compliance, so it can run on constrained routers too, which is giving practical πŸ’…

Status of This Memo

This is an Internet Standards Track document. 🌸

It's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 πŸ“š

For the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc7184 ✨

Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. ©️

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

Table of Contents

   1. Introduction ....................................................2
   2. The Internet-Standard Management Framework ......................3
   3. Conventions .....................................................3
   4. Overview ........................................................3
      4.1. Terms ......................................................4
   5. Structure of the MIB Module .....................................4
      5.1. The Configuration Group ....................................5
      5.2. The State Group ............................................5
      5.3. The Performance Group ......................................5
      5.4. The Notifications Group ....................................5
      5.5. Tables and Indexing ........................................6
   6. Relationship to Other MIB Modules ...............................9
      6.1. Relationship to the SNMPv2-MIB .............................9
      6.2. Relationship to the NHDP-MIB ...............................9
      6.3. MIB Modules Required for IMPORTS ...........................9
   7. Definitions ....................................................10
   8. Security Considerations ........................................77
   9. Applicability Statement ........................................80
   10. IANA Considerations ...........................................81
   11. Acknowledgements ..............................................81
   12. References ....................................................82
      12.1. Normative References .....................................82
      12.2. Informative References ...................................83
   Appendix A. IANAolsrv2LinkMetricType-MIB ..........................84

1. Introduction ✨

This document defines the Management Information Base (MIB) module for configuring and managing the Optimized Link State Routing Protocol version 2 (OLSRv2). πŸ¦‹ The OLSRv2-MIB module is structured into configuration information, state information, performance information, and notifications. Config is only part of the story here: the extra state and performance info is what helps you troubleshoot problems and performance issues in the routing protocol πŸ”§ Different levels of compliance let implementers use smaller subsets of all the defined objects, so this MIB module can be deployed on even more constrained routers πŸ’œ

2. The Internet-Standard Management Framework 🌈

For a detailed overview of the documents that describe the current Internet-Standard Management Framework, check out Section 7 of [RFC3410] πŸ“–

Managed objects are accessed through a virtual information store called the Management Information Base, or MIB. MIB objects are usually accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB module are defined using the mechanisms in the Structure of Management Information (SMI). This document specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, [RFC2578], STD 58, [RFC2579] and STD 58 [RFC2580] 🧠

3. Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] πŸŽ€

4. Overview 🌸

The Optimized Link State Routing Protocol version 2 (OLSRv2) [RFC7181] is a table-driven, proactive routing protocol. In plain English, it swaps topology info with other routers in the network periodically πŸ” OLSRv2 is an optimization of the classical link state routing protocol, and its key concept is multipoint relays (MPRs). Each router picks a set of its neighbor routers (which "cover" all of its symmetrically connected 2-hop neighbor routers) as MPRs. Then MPRs get used for both flooding reduction and topology reduction. It's giving efficiency πŸ’…

This document gives management and control capabilities for an OLSRv2 instance. That means management apps can monitor the state and performance of an OLSRv2 router, and they can change settings of the OLSRv2 instance, like router or interface parameters such as message intervals βš™οΈ

OLSRv2 depends on the neighborhood info discovered by the "Mobile Ad Hoc Network (MANET) Neighborhood Discovery Protocol (NHDP)" [RFC6130]. So the OLSRv2-MIB module is aligned with the NHDP-MIB module [RFC6779] and augments several of its tables and objects. The big thing is that router interfaces and discovered neighbors share common indexes, as described in Section 5.2 🫢

4.1. Terms

The following definitions apply throughout this document:

  • Configuration Objects - switches, tables, and objects that are initialized to default settings or set through the management interface defined by this MIB module.
  • State Objects - automatically generated values that define the current operating state of the OLSRv2 protocol instance in the router.
  • Performance Objects - automatically generated values that help an administrator or automated tool assess the performance of the OLSRv2 process on the router.
  • Notification Objects - objects that define triggers and associated notification messages, allowing for asynchronous tracking of predefined events on the managed router. πŸ””

5. Structure of the MIB Module πŸ’Ž

This section shows the structure of the OLSRv2-MIB module. The objects are arranged like this:

  • olsrv2MIBObjects - defines the objects forming the basis for the OLSRv2-MIB module. These objects are divided up by function into the following groups:
    • Configuration Group - defining objects related to the configuration of the OLSRv2 instance on the router.
    • State Group - defining objects that reflect the current state of the OLSRv2 instance running on the router.
    • Performance Group - defining objects that are useful to a management system when characterizing the performance of OLSRv2 on the router and in the MANET.
  • olsrv2MIBNotifications - objects defining OLSRv2-MIB module notifications.
  • olsrv2MIBConformance - defining the minimal and maximal conformance requirements for implementations of this MIB module. πŸ“‹

5.1. The Configuration Group βš™οΈ

The OLSRv2 router is configured with a set of controls. The authoritative list of configuration controls within the OLSRv2-MIB module is found in the MIB module itself. In general, the OLSRv2-MIB module was built to support all configuration objects defined in [RFC7181]. For all of the configuration parameters, the same constraints and default values as defined in [RFC7181] are followed 🫧

5.2. The State Group πŸ“Š

The State Group reports current state information of a router running [RFC7181]. The OLSRv2-MIB module State Group tables were designed to contain the complete set of state information defined within the Information Bases in [RFC7181] πŸ—‚οΈ

The OLSRv2-MIB module State Group tables are built as extensions to the corresponding tables in the State Group of the NHDP-MIB module [RFC6779]. The AUGMENTS clause is used, when possible, to make these table extensions. Also, the State Group tables in this MIB module line up with the corresponding tables in the NHDP-MIB module [RFC6779], as described in Section 6.2 πŸ“

5.3. The Performance Group πŸ“ˆ

The Performance Group reports values relevant to system performance. Frequent changes of sets, or frequent recalculation of the Routing Set or the MPRs, can hurt OLSRv2 performance. This MIB module defines several objects that can be polled, for example to calculate histories or monitor how often changes happen. That helps the network administrator spot unusual topology changes or other changes that affect the stability and reliability of the MANET πŸ‘€ One such framework is specified in REPORT-MIB [REPORT-MIB] πŸ¦‹

5.4. The Notifications Group πŸ””

The Notifications Group has three parts: Control (olsrv2NotificationsControl), Objects (olsrv2NotificationsObjects), and States (olsrv2NotificationsStates). The Control part defines objects that control how often notifications get generated. The Objects part defines the supported notifications, and the States part defines extra info carried within the notifications πŸ’Œ

The olsrv2NotificationsObjects sub-tree holds the list of notifications supported within the OLSRv2-MIB module, along with their intended purpose or utility 🧾

The same mechanisms for improving network performance by reducing the number of notifications apply as defined in Section 5.1 of [RFC6779]. These objects define the thresholds and time windows for specific notifications defined in the NHDP-MIB module: olsrv2RoutingSetRecalculationCountThreshold, olsrv2RoutingSetRecalculationCountWindow, olsrv2MPRSetRecalculationCountThreshold, and olsrv2MPRSetRecalculationCountWindow 🌟

5.5. Tables and Indexing ✨

okay bestie, this is where we figure out how every table in the OLSRv2-MIB gets its keys πŸ”‘. The tables are indexed by these constructs, no cap:

  • nhdpIfIndex - the ifIndex of the local router on which NHDP is configured. This is defined in the NHDP-MIB.
  • nhdpDiscIfIndex - a locally managed index representing a known interface on a neighboring router. This is defined in the NHDP-MIB.
  • nhdpDiscRouterIndex - a locally managed index representing an ID of a known neighboring router. This is defined in the NHDP-MIB.
  • {olsrv2LibOrigSetIpAddrType, olsrv2LibOrigSetIpAddr} - this index (pair) uniquely identifies recently used originator addresses found within the olsrv2LibOrigSetTable.
  • {olsrv2LibLocAttNetSetIpAddrType, olsrv2LibLocAttNetSetIpAddr, olsrv2LibLocAttNetSetIpAddrPrefixLen} - this index (triplet) uniquely identifies local attached networks reachable through local (non-OLSRv2) interfaces on this router. These are recorded in the olsrv2LibLocAttNetSetTable.
  • {olsrv2TibAdRemoteRouterSetIpAddrType, olsrv2TibAdRemoteRouterSetIpAddr} - this index (pair) uniquely identifies each router in the network that transmits Topology Control (TC) messages received by this router. These records are recorded in the olsrv2TibAdRemoteRouterSetIpAddr.
  • {olsrv2TibRouterTopologySetFromOrigIpAddrType, olsrv2TibRouterTopologySetFromOrigIpAddr, olsrv2TibRouterTopologySetToOrigIpAddrType, olsrv2TibRouterTopologySetToOrigIpAddr} - this index (quadruplet) uniquely identifies discovered links within the network recorded by this router. Information associated with each link is stored in the olsrv2TibRouterTopologySetTable.
  • {olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType, olsrv2TibRoutableAddressTopologySetFromOrigIpAddr, olsrv2TibRoutableAddressTopologySetFromDestIpAddrType, olsrv2TibRoutableAddressTopologySetFromDestIpAddr} - this index (quadruplet) uniquely identifies reachable addresses within the network and the router's advertising of these addresses. This information is stored in the olsrv2TibRoutableAddressTopologySetTable.
  • {olsrv2TibAttNetworksSetOrigIpAddrType, olsrv2TibAttNetworksSetOrigIpAddr, olsrv2TibAttNetworksSetNetIpAddrType, olsrv2TibAttNetworksSetNetIpAddr, olsrv2TibAttNetworksSetNetIpAddrPrefixLen} - this index (quintuplet) uniquely identifies the networks (which may be outside the MANET) and the routers through which these networks can be reached. This information is stored in the olsrv2TibAttNetworksSetTable.
  • {olsrv2TibRoutingSetDestIpAddrType, olsrv2TibRoutingSetDestIpAddr, olsrv2TibRoutingSetDestIpAddrPrefixLen} - this index (triplet) uniquely identifies the address of a reachable destination in the network. This indexes the olsrv2TibRoutingSetTable, which contains the next-hop information to reach the indexed addresses.

Now here's how those tables and their indexing actually line up πŸ’…:

  • olsrv2InterfaceTable - describes the OLSRv2 status on the NHDP interfaces of this router. This table augments nhdpInterfaceEntry and, as such, it is indexed by the {nhdpIfIndex} from the NHDP-MIB.
  • olsrv2IibLinkSetTable - records all links from other routers that are, or recently were, 1-hop neighbors. This table augments nhdpIibLinkSetEntry and, as such, it is indexed by nhdpIfIndex and nhdpDiscIfIndex.
  • olsrv2Iib2HopSetTable - records network addresses of symmetric 2-hop neighbors and the links to the associated 1-hop neighbors. This table augments nhdpIib2HopSetEntry and, as such, it is indexed by {nhdpIfIndex, nhdpDiscIfIndex, nhdpIib2HopSetIpAddressType, nhdpIib2HopSetIpAddress}.
  • olsrv2LibOrigSetTable - records addresses that were recently used as originator addresses by this router. This table is indexed by {olsrv2LibOrigSetIpAddrType, olsrv2LibOrigSetIpAddr}.
  • olsrv2LibLocAttNetSetTable - records its local non-OLSRv2 interfaces via which it can act as a gateway to other networks. This table is indexed by {olsrv2LibLocAttNetSetIpAddrType, olsrv2LibLocAttNetSetIpAddr, olsrv2LibLocAttNetSetIpAddrPrefixLen}.
  • olsrv2NibNeighborSetTable - records all network addresses of each 1-hop neighbor. This table augments nhdpNibNeighborSetEntry and, as such, it is indexed by the {nhdpDiscRouterIndex}.
  • olsrv2TibAdRemoteRouterSetTable - records information describing each remote router in the network that transmits TC messages. This table is indexed by {olsrv2TibAdRemoteRouterSetIpAddrType, olsrv2TibAdRemoteRouterSetIpAddr}.
  • olsrv2TibRouterTopologySetTable - records topology information about the network. This table is indexed by {olsrv2TibRouterTopologySetFromOrigIpAddrType, olsrv2TibRouterTopologySetFromOrigIpAddr, olsrv2TibRouterTopologySetToOrigIpAddrType, olsrv2TibRouterTopologySetToOrigIpAddr}.
  • olsrv2TibRoutableAddressTopologySetTable - records topology information about the routable addresses within the MANET and via which routers they may be reached. This table is indexed by {olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType, olsrv2TibRoutableAddressTopologySetFromOrigIpAddr, olsrv2TibRoutableAddressTopologySetFromDestIpAddrType, olsrv2TibRoutableAddressTopologySetFromDestIpAddr}.
  • olsrv2TibAttNetworksSetTable - records information about networks (which may be outside the MANET) attached to other routers and their routable addresses. This table is indexed by {olsrv2TibAttNetworksSetOrigIpAddrType, olsrv2TibAttNetworksSetOrigIpAddr, olsrv2TibAttNetworksSetNetIpAddrType, olsrv2TibAttNetworksSetNetIpAddr, olsrv2TibAttNetworksSetNetIpAddrPrefixLen}.
  • olsrv2TibRoutingSetTable - records the first hop along a selected path to each destination for which any such path is known. This table is indexed by {olsrv2TibRoutingSetDestIpAddrType, olsrv2TibRoutingSetDestIpAddr, olsrv2TibRoutingSetDestIpAddrPrefixLen}.
  • olsrv2InterfacePerfTable - records performance counters for each active OLSRv2 interface on this device. This table augments nhdpInterfacePerfEntry and, as such, it is indexed by {nhdpIfIndex} from the NHDP-MIB.

6. Relationship to Other MIB Modules 🧚

okay so this section is all about how the MIB modules in this document hang out with other standards, especially the ones carrying their own MIB modules 🫢. Any MIB modules and specific imported definitions that SHOULD be implemented alongside this one get called out right here.

6.1. Relationship to the SNMPv2-MIB

The System group in the SNMPv2-MIB module [RFC3418] is mandatory for all systems, and its objects apply to the entity as a whole. It gives identification of the management entity plus some other system-wide data. The OLSRv2-MIB module does not duplicate those objects, because we are not about to copy-paste what's already there πŸ’€.

6.2. Relationship to the NHDP-MIB

OLSRv2 depends on the neighborhood information discovered by [RFC6130] 🌸. An instance of OLSRv2 MUST have an associated instance of NHDP running on the same device for the discovery and routing system to work properly. So that the OLSRv2-MIB module can correctly fill in the objects about discovered neighbors, the State Group tables of the NHDP-MIB module [RFC6779] are aligned with the State Group tables of this MIB module. This is done with the AUGMENTS capability of SMIv2 (where appropriate), which lets you cross-reference info between the two MIB modules within a given SNMP context. Main character energy πŸ‘‘.

6.3. MIB Modules Required for IMPORTS

The OLSRv2-MIB module IMPORTS objects from NHDP-MIB [RFC6779], SNMPv2-SMI [RFC2578], SNMPv2-TC [RFC2579], SNMPv2-CONF [RFC2580], IF-MIB [RFC2863], and INET-ADDRESS-MIB [RFC4001]. It also IMPORTS objects from the IANAolsrv2LinkMetricType-MIB, which lives at http://www.iana.org/assignments/ianaolsrv2linkmetrictype-mib πŸ¦‹.


7. Definitions πŸ’–

this section is the whole OLSRv2-MIB module as defined by the spec, so here it is in all its glory ✨:

OLSRv2-MIB DEFINITIONS ::= BEGIN

IMPORTS

   MODULE-IDENTITY, OBJECT-TYPE, Counter32, Counter64,
   Integer32, Unsigned32, mib-2, TimeTicks,
   NOTIFICATION-TYPE
            FROM SNMPv2-SMI -- RFC 2578

   TEXTUAL-CONVENTION, TimeStamp, TruthValue
            FROM SNMPv2-TC -- RFC 2579

   MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
            FROM SNMPv2-CONF -- STD 58

   InetAddressType, InetAddress,
   InetAddressPrefixLength
            FROM INET-ADDRESS-MIB -- RFC 4001

   nhdpInterfaceEntry,
   nhdpIibLinkSetEntry, nhdpIib2HopSetEntry,
   nhdpNibNeighborSetEntry, nhdpInterfacePerfEntry
            FROM NHDP-MIB -- RFC 6779

   IANAolsrv2LinkMetricTypeTC
            FROM IANA-OLSRv2-LINK-METRIC-TYPE-MIB
   ;

manetOlsrv2MIB MODULE-IDENTITY
   LAST-UPDATED "201404090000Z"   -- 09 April 2014
   ORGANIZATION "IETF MANET Working Group"
   CONTACT-INFO
      "WG E-Mail: manet@ietf.org

       WG Chairs: sratliff@cisco.com
                  jmacker@nrl.navy.mil

       Editors:   Ulrich Herberg
                  Fujitsu Laboratories of America
                  1240 East Arques Avenue
                  Sunnyvale, CA 94085
                  USA
                  Email: ulrich@herberg.name
                  URI: http://www.herberg.name/

                  Thomas Heide Clausen
                  Ecole Polytechnique
                  LIX
                  91128 Palaiseau Cedex
                  France
                  Email: T.Clausen@computer.org
                  URI: http://www.thomasclausen.org/

                  Robert G. Cole
                  US Army CERDEC
                  Space and Terrestrial Communications
                  6010 Frankford Street
                  Bldg 6010, Room 453H
                  Aberdeen Proving Ground, MD 21005
                  USA
                  Phone: +1 443 395-8744
                  Email: robert.g.cole@us.army.mil
                  URI: http://www.cs.jhu.edu/~rgcole"

   DESCRIPTION
      "This OLSRv2-MIB module is applicable to routers
       implementing the Optimized Link State Routing
       Protocol version 2 (OLSRv2) defined in RFC 7181.

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

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

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

     -- Revision History
     REVISION    "201404090000Z"   -- 09 April 2014
     DESCRIPTION
      "Initial version of this MIB module,
       published as RFC 7184."

     ::= { mib-2 219 }

--
-- TEXTUAL CONVENTIONS
--

Okay bestie, these are the textual conventions, which are basically custom types that the rest of the MIB reuses πŸ’… Let's go πŸŽ€

Olsrv2MetricValueCompressedFormTC ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "d"
   STATUS      current
   DESCRIPTION
      "OLSRv2 Metrics are expressed in terms of a Link Metric
       Compressed Form within the OLSRv2 protocol.  This textual
       convention defines the syntax of the metric objects
       consistent with the definitions of the OLSRv2 Link
       Metric Compressed Form in Section 6.2 of RFC 7181.

       The 12-bit compressed form of a link metric uses a modified
       form of a representation with an 8-bit mantissa (denoted a)
       and a 4-bit exponent (denoted b).  Note that if represented
       as the 12-bit value 256b+a, then the ordering of those 12-bit
       values is identical to the ordering of the represented values.

       The value so represented is (257+a)2^b - 256, where ^ denotes
       exponentiation.  This has a minimum value
       (when a = 0 and b = 0) of MINIMUM_METRIC = 1 and a maximum
       value (when a = 255 and b = 15) of MAXIMUM_METRIC = 2^24 - 256.

       Hence, the metric values so represented range from 1 to
       16776960.  The special value of 0 is reserved for the
       UNKNOWN_METRIC value.

       If a network manager sets the metric value 'm' through the
       MIB module, then the OLSRv2 code can both use this value
       and derive a compressed representation of 'm' (as used in
       messages) as specified in Section 6.2 of RFC7181.
       The value 'm' is persistently stored by the MIB module.
       If the MIB module is pulling this metric's value from some other
       source, e.g., the protocol instance, then this value is stored
       as is."
   SYNTAX  Unsigned32 (0..16776960)

Olsrv2TimeValueCompressedForm32TC ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "x"
   STATUS      current
   DESCRIPTION
      "OLSRv2 time values may be expressed in terms of a compressed
       form within the OLSRv2 protocol.  This textual convention
       defines the syntax of the time objects defined in terms of
       an integer number of milliseconds, consistent with the
       definitions of the 8-bit exponent-mantissa compressed form
       defined in Section 5 of RFC 5497.  Time values with this
       representation are defined in terms of a constant C, which
       is represented in terms of seconds.  The constant C
       (time granularity) is used as specified in RFC 5497.
       It MUST be the same as is used by NHDP (RFC 6130).

       The 8-bit compressed form of a time value uses a modified
       form of a representation with a 3-bit mantissa (denoted a)
       and a 5-bit exponent (denoted b).  Note that if represented
       as the 8-bit value 8b+a, then the ordering of those 8-bit
       values is identical to the ordering of the represented values.

       The minimum time value that can be represented in this manner
       is C.  The maximum time value that can be represented in
       this manner is 15 * 2^28 * C, 15*268,435,456 * C,
       4,026,531,840 * C, or about 45 days if, for example,
       C = 1/1024 second.

       This TEXTUAL-CONVENTION limits the maximum value of the
       time granularity constant C to be no greater than 1/1024
       seconds due to its use of the Unsigned32 syntax limiting
       the maximum number of milliseconds to no more than
       3932160000.

       When OLSRv2 uses this 8-bit exponent-mantissa compressed
       form, this object value MUST be translated from the
       integer form represented in this MIB module into the
       exponent-mantissa form for the OLSRv2 protocol to use
       according to the algorithm defined in Section 5 of
       RFC 5497 for finding the next larger time value within
       the exponent-mantissa format.

       If a network manager sets the time value 't' through the
       MIB module, then the OLSRv2 code can derive
       'compressed_t' = T(a,b) according to the algorithm
       in RFC 5497 and 'compressed_t' is the value represented
       in the OLSRv2 messages.  But, the value 't' is persistently
       stored by the MIB module.  If the MIB module is pulling
       this time parameter from some other source that is using
       the compressed form, i.e., the protocol instance, then
       this value is stored as is, after converting from
       number of time constants C into number of milliseconds."
   SYNTAX  Unsigned32 (1..3932160000)

Olsrv2StatusTC ::= TEXTUAL-CONVENTION
   STATUS      current
   DESCRIPTION
      "Controls the operation of the OLSRv2

       protocol on the device or a specific interface.
       For example, for an interface, 'enabled' indicates
       that OLSRv2 is permitted to operate,
       and 'disabled' indicates that it is not."
   SYNTAX  INTEGER {
      enabled (1),
      disabled (2)
   }

WillingnessTC ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "x"
   STATUS    current
   DESCRIPTION
      "A willingness value that evaluates to the
       device's interest in participating in
       a particular function, process, or behavior.

       The willingness ranges from a low value of
       WILL_NEVER(0) to a high value of
       WILL_ALWAYS(15).  For each parameter x,
       there is an associated willingness value
       W(x) such that WILL_NEVER < W(x) <= WILL_ALWAYS."
   SYNTAX   Unsigned32 (0..15)

Next up are the top-level OID assignments. These are just the branches the notifications, objects and conformance stuff hang off of, so it's basically the family tree 🌳🧚

--
-- Top-Level Object Identifier Assignments
--

olsrv2MIBNotifications OBJECT IDENTIFIER ::= { manetOlsrv2MIB 0 }
olsrv2MIBObjects       OBJECT IDENTIFIER ::= { manetOlsrv2MIB 1 }
olsrv2MIBConformance   OBJECT IDENTIFIER ::= { manetOlsrv2MIB 2 }

--
-- olsrv2ConfigurationGroup
--

--    Contains the OLSRv2 objects that configure specific
--    options that determine the overall performance and operation
--    of the OLSRv2 routing process.

olsrv2ConfigurationGroup OBJECT IDENTIFIER ::= {olsrv2MIBObjects 1}


   olsrv2AdminStatus  OBJECT-TYPE
      SYNTAX      Olsrv2StatusTC
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The configured status of the OLSRv2 process
          on this device.  'enabled(1)' means that
          OLSRv2 is configured to run on this device.
          'disabled(2)' mean that the OLSRv2 process
          is configured off.

          Operation of the OLSRv2 protocol
          requires the operation of the Neighborhood
          Discovery Protocol (RFC 6130).  Hence, this
          object cannot have a status of 'enabled'
          unless at least one interface on the device
          is a MANET interface with NHDP enabled on that
          interface.  If a network manager attempts to
          set this object to 'enabled' when no interfaces
          on this device have NHDP enabled, the device
          MUST fail the set with inconsistentValue.
          If all device interfaces running NHDP become
          disabled or removed, then the
          olsrv2AdminStatus MUST be 'disabled'.

          If the network manager, or other means, sets
          this object to 'disabled', then the associated
          interface specific objects, i.e., the
          olsrv2InterfaceAdminStatus objects MUST all
          be 'disabled'.

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

   olsrv2InterfaceTable  OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2InterfaceEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The olsrv2InterfaceTable describes the OLSRv2
          status on the NHDP interfaces of this router.
          As such, this table augments the nhdpInterfaceTable
          defined in the NHDP-MIB (RFC 6779).  NHDP interfaces
          are explicitly defined by network management, command
          line interface (CLI) or other means for interfaces on
          the device that are intended to run MANET protocols.
          The olsrv2InterfaceTable contains a single object: the
          olsrv2InterfaceAdminStatus object.  This
          object is set by network management, or by
          other means, e.g., CLI.

          A conceptual row in this table exists if and only
          if a corresponding entry in the nhdpInterfaceTable
          exists.  If the corresponding entry with nhdpIfIndex
          value is deleted from the nhdpInterfaceTable, then
          the entry in this table is automatically deleted and
          OLSRv2 is disabled on this interface,
          and all configuration and state information
          related to this interface is to be removed
          from memory.

          The olsrv2InterfaceAdminStatus can only be
          'enabled' if the corresponding olsrv2AdminStatus
          object is also set to 'enabled'."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2ConfigurationGroup 2 }

   olsrv2InterfaceEntry OBJECT-TYPE
      SYNTAX      Olsrv2InterfaceEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The olsrv2InterfaceEntry describes one OLSRv2
          local interface configuration as indexed by
          its nhdpIfIndex, as defined in the
          NHDP-MIB (RFC 6779).

          The objects in this table are persistent, and when
          written, the device SHOULD save the change to
          non-volatile storage.  For further information
          on the storage behavior for these objects, refer
          to the description for the nhdpIfRowStatus
          object in the NHDP-MIB (RFC6779)."
      REFERENCE
         "RFC 6779 - Definition of Managed Objects for
          the Neighborhood Discovery Protocol,
          Herberg, U., Cole, R.G., and I. Chakeres,
          October 2012"
      AUGMENTS { nhdpInterfaceEntry }
   ::= { olsrv2InterfaceTable 1 }

   Olsrv2InterfaceEntry ::=
      SEQUENCE {
         olsrv2InterfaceAdminStatus

            Olsrv2StatusTC
      }

   olsrv2InterfaceAdminStatus OBJECT-TYPE
      SYNTAX      Olsrv2StatusTC
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
         "The OLSRv2 interface's administrative status.
          The value 'enabled(1)' denotes that the interface
          is permitted to participate in the OLSRv2 routing
          process.  The value 'disabled(2)' denotes that
          the interface is not permitted to participate
          in the OLSRv2 routing process.

          The configuration objects for the OLSRv2 routing
          process, other than the administrative status objects,
          are common to all interfaces on this device.
          As such, the OLSRv2 configuration objects are globally
          defined for the device and are not contained within
          the olsrv2InterfaceTable."
      DEFVAL { disabled }
   ::= { olsrv2InterfaceEntry 1 }

   olsrv2OrigIpAddrType  OBJECT-TYPE
       SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
          "The type of the olsrv2OrigIpAddr, as defined
           in the InetAddress MIB module (RFC 4001).

           Only the values 'ipv4(1)' and
           'ipv6(2)' are supported."
       REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2ConfigurationGroup 3 }

   olsrv2OrigIpAddr  OBJECT-TYPE
       SYNTAX      InetAddress (SIZE(4|16))
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
          "The router's originator address.  An address that
           is unique (within the MANET) to this router.

Okay bestie, the cute part where we get into the local history times and message intervals is next πŸŽ€πŸ’–

           This object is persistent, and when written,
           the entity SHOULD save the change to
           non-volatile storage."
       REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2ConfigurationGroup 4 }

   --
   -- Local History Times
   --

   olsrv2OHoldTime  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2OHoldTime corresponds to
         O_HOLD_TIME of OLSRv2, and represents the
         time for which a recently used and replaced
         originator address is used to recognize the router's
         own messages.

         Guidance for setting this object may be found
         in Section 5 of the OLSRv2 specification (RFC 7181),
         which indicates that:
             o  olsrv2OHoldTime > 0

         This object is persistent, and when written,
         the entity SHOULD save the change to
         non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 30000 }
   ::= { olsrv2ConfigurationGroup 5 }


   --
   -- Message intervals
   --

   olsrv2TcInterval  OBJECT-TYPE
      SYNTAX      Olsrv2TimeValueCompressedForm32TC
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2TcInterval corresponds to
         TC_INTERVAL of OLSRv2 and represents the
         maximum time between the transmission of
         two successive TC messages by this router.

         Guidance for setting this object may be found
         in Section 5 of the OLSRv2 specification (RFC 7181),
         which indicates that:

             o olsrv2TcInterval > 0
             o olsrv2TcInterval >= olsrv2TcMinInterval

         This object is persistent, and when written,
         the entity SHOULD save the change to
         non-volatile storage."
      REFERENCE
         "Section 5 on Representing Time.
          RFC 5497 - Representing Multi-Value Time in
          Mobile Ad Hoc Networks (MANETs),
          Clausen, T. and C. Dearlove, March 2009.

          and

          Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 5000 }
   ::= { olsrv2ConfigurationGroup 6 }

   olsrv2TcMinInterval  OBJECT-TYPE
      SYNTAX      Olsrv2TimeValueCompressedForm32TC
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2TcMinInterval corresponds to
         TC_MIN_INTERVAL of OLSRv2 and represents
         the minimum interval between transmission of
         two successive TC messages by this router.

         Guidance for setting this object may be found
         in Section 5 of the OLSRv2 specification (RFC 7181),
         which indicates that:

             o olsrv2TcInterval >= olsrv2TcMinInterval

         The OLSRv2 protocol may choose to represent this
         time interval in terms of the 8-bit exponent-mantissa
         form defined in Section 5 of RFC 5497.  When this
         is the case, this object value MUST be translated
         from the integer form represented in this
         MIB module into the exponent-mantissa form for the
         OLSRv2 protocol to use according to the algorithm
         defined in Section 5 of RFC 5497 for finding the
         next larger time value within the exponent-mantissa
         format.

         This object is persistent, and when written,
         the entity SHOULD save the change to
         non-volatile storage."
      REFERENCE
         "Section 5 on Representing Time.
          RFC 5497 - Representing Multi-Value Time in
          Mobile Ad Hoc Networks (MANETs),
          Clausen, T. and C. Dearlove, March 2009.

          and

          Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 1250 }
   ::= { olsrv2ConfigurationGroup 7 }


   --
   -- Advertised information validity times
   --

   olsrv2THoldTime  OBJECT-TYPE
      SYNTAX      Olsrv2TimeValueCompressedForm32TC
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2THoldTime corresponds to
         T_HOLD_TIME of OLSRv2 and is used as the
         minimum value in the TLV with
         Type = VALIDITY_TIME included in all
         TC messages sent by this router.

         Guidance for setting this object may be found
         in Section 5 of the OLSRv2 specification (RFC 7181),
         which indicates that:
             o olsrv2THoldTime >= olsrv2TcInterval
             o If TC messages can be lost, then
               olsrv2THoldTime SHOULD be
               significantly greater than olsrv2TcInterval;
               a value >= 3 x olsrv2TcInterval is RECOMMENDED.

         This object is persistent, and when written,
         the entity SHOULD save the change to
         non-volatile storage."
      REFERENCE
         "Section 5 on Representing Time.
          RFC 5497 - Representing Multi-Value Time in
          Mobile Ad Hoc Networks (MANETs),
          Clausen, T. and C. Dearlove, March 2009.

          and

          Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 15000 }
   ::= { olsrv2ConfigurationGroup 8 }

   olsrv2AHoldTime  OBJECT-TYPE
      SYNTAX      Olsrv2TimeValueCompressedForm32TC
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2AHoldTime corresponds to
         A_HOLD_TIME of OLSRv2 and represents
         the period during which TC messages are sent
         after they no longer have any advertised
         information to report, but are sent in order
         to accelerate outdated information removal by other
         routers.

         Guidance for setting this object may be found
         in Section 5 of the OLSRv2 specification (RFC 7181),
         which indicates that:
            o If TC messages can be lost, then
              olsrv2AHoldTime SHOULD be
              significantly greater than olsrv2TcInterval;
              a value >= 3 x olsrv2TcInterval is
              RECOMMENDED.

         This object is persistent, and when written,
         the entity SHOULD save the change to
         non-volatile storage."
      REFERENCE
         "Section 5 on Representing Time.
          RFC 5497 - Representing Multi-Value Time in
          Mobile Ad Hoc Networks (MANETs),
          Clausen, T. and C. Dearlove, March 2009.

          and

          Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 15000 }
   ::= { olsrv2ConfigurationGroup 9 }

   --
   -- Received message validity times
   --

   olsrv2RxHoldTime  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2RxHoldTime corresponds to
          RX_HOLD_TIME of OLSRv2 and represents the period
          after receipt of a message by the appropriate OLSRv2
          interface of this router for which that information
          is recorded, in order that the message is recognized
          as having been previously received on this OLSRv2
          interface.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o olsrv2RxHoldTime > 0
             o This parameter SHOULD be greater
               than the maximum difference in time that a
               message may take to traverse the MANET,
               taking into account any message forwarding
               jitter as well as propagation, queuing,
               and processing delays.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 30000 }
   ::= { olsrv2ConfigurationGroup 10 }

   olsrv2PHoldTime  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2PHoldTime corresponds to
          P_HOLD_TIME of OLSRv2 and represents the period
          after receipt of a message that is processed by
          this router for which that information is recorded,
          in order that the message is not processed again
          if received again.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o olsrv2PHoldTime > 0
             o This parameter SHOULD be greater
               than the maximum difference in time that a
               message may take to traverse the MANET,
               taking into account any message forwarding
               jitter as well as propagation, queuing,
               and processing delays.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 30000 }
   ::= { olsrv2ConfigurationGroup 11 }

   olsrv2FHoldTime  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2FHoldTime corresponds to
          F_HOLD_TIME of OLSRv2 and represents the period
          after receipt of a message that is forwarded by this
          router for which that information is recorded, in order
          that the message is not forwarded again if received again.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o olsrv2FHoldTime > 0
             o This parameter SHOULD be greater
               than the maximum difference in time that a
               message may take to traverse the MANET,
               taking into account any message forwarding
               jitter as well as propagation, queuing,
               and processing delays.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 30000 }
   ::= { olsrv2ConfigurationGroup 12 }

   --
   -- Jitter times
   --

okay so the config group ends with the jitter knobs and hop limits, and honestly they're giving main character energy πŸŽ€βœ¨

   olsrv2TpMaxJitter  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2TpMaxJitter corresponds to
          TP_MAXJITTER of OLSRv2 and represents the value
          of MAXJITTER used in RFC 5148 for periodically
          generated TC messages sent by this router.

          For constraints on these parameters, see RFC 5148.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 500 }
   ::= { olsrv2ConfigurationGroup 13 }

   olsrv2TtMaxJitter  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2TtMaxJitter corresponds to
          TT_MAXJITTER of OLSRv2 and represents the value
          of MAXJITTER used in RFC 5148 for externally
          triggered TC messages sent by this router.

          For constraints on these parameters, see RFC 5148.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 500 }
   ::= { olsrv2ConfigurationGroup 14 }

   olsrv2FMaxJitter  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "milliseconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2FMaxJitter corresponds to
          F_MAXJITTER of OLSRv2 and represents the
          default value of MAXJITTER used in RFC 5148 for
          messages forwarded by this router.

          For constraints on these parameters, see RFC 5148.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 500 }
   ::= { olsrv2ConfigurationGroup 15 }

   --
   -- Hop limits
   --

   olsrv2TcHopLimit  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..255)
      UNITS       "hops"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2TcHopLimit corresponds to
          TC_HOP_LIMIT of OLSRv2.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o The maximum value of
               olsrv2TcHopLimit >= the network diameter
               in hops, a value of 255 is RECOMMENDED.
             o olsrv2TcHopLimit >= 2.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
       REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
       DEFVAL { 255 }
   ::= { olsrv2ConfigurationGroup 16 }

Next up is the willingness stuff, and it's giving "who gets to route and who gets to flood" πŸŒΈπŸ¦‹

   --
   -- Willingness
   --

   olsrv2WillRouting  OBJECT-TYPE

      SYNTAX      WillingnessTC
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2WillRouting corresponds to
          WILL_ROUTING of OLSRv2.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o WILL_NEVER (0) <= olsrv2WillRouting <=
                                  WILL_ALWAYS (15)

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 7 }
   ::= { olsrv2ConfigurationGroup 17 }

   olsrv2WillFlooding     OBJECT-TYPE
      SYNTAX      WillingnessTC
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2WillFlooding corresponds to
          WILL_FLOODING of OLSRv2.

          Guidance for setting this object may be found
          in Section 5 of the OLSRv2 specification (RFC 7181),
          which indicates that:
             o WILL_NEVER (0) <= olsrv2WillFlooding <=
                                  WILL_ALWAYS (15)

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { 7 }
   ::= { olsrv2ConfigurationGroup 18 }
   olsrv2LinkMetricType  OBJECT-TYPE
      SYNTAX      IANAolsrv2LinkMetricTypeTC
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2LinkMetricType corresponds to
          LINK_METRIC_TYPE of OLSRv2.

          If olsrv2LinkMetricType changes, then all
          link metric information recorded by this router
          is invalid.  The router MUST take the
          actions described in Section 5.5.
          'Parameter Change Constraints' and
          Section 17 'Information Base Changes'
          in RFC 7181.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "Section 5 on Protocol Parameters.
          RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      DEFVAL { unknown }
   ::= { olsrv2ConfigurationGroup 19 }

--
-- olsrv2StateGroup
--

--
-- Contains information describing the current state of
-- the OLSRv2 process.
--

olsrv2StateGroup  OBJECT IDENTIFIER ::= { olsrv2MIBObjects 2 }

The state group is where the router's live view of its neighbours lives, and the link set is the first stop πŸ§šπŸ’œ

   --
   -- Interface Information Base (IIB)
   --

   --
   -- Link Set from RFC 6130, extended by L_in_metric,
   -- L_out_metric, and L_mpr_selector entries for each tuple
   --

   olsrv2IibLinkSetTable OBJECT-TYPE

      SYNTAX       SEQUENCE OF Olsrv2IibLinkSetEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A Link Set of an interface records all links
          from other routers that are, or recently
          were, 1-hop neighbors."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 1 }

   olsrv2IibLinkSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2IibLinkSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A Link Set consists of Link Tuples, each
          representing a single link indexed by the
          local and remote interface pair.  Each Link Set
          from NHDP is extended by OLSRv2 by the following
          fields:

          (L_in_metric (olsrv2IibLinkSetInMetricValue),
           L_out_metric (olsrv2IibLinkSetOutMetricValue),
           L_mpr_selector (olsrv2IibLinkSetMprSelector))"
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      AUGMENTS { nhdpIibLinkSetEntry }
   ::= { olsrv2IibLinkSetTable 1 }

   Olsrv2IibLinkSetEntry ::=
      SEQUENCE {
         olsrv2IibLinkSetInMetricValue
            Olsrv2MetricValueCompressedFormTC,
         olsrv2IibLinkSetOutMetricValue
            Olsrv2MetricValueCompressedFormTC,
         olsrv2IibLinkSetMprSelector
            TruthValue
      }

   olsrv2IibLinkSetInMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2IibLinkSetInMetricValue is the metric of the link
          from the OLSRv2 interface with addresses
          L_neighbor_iface_addr_list to this OLSRv2 interface.
          The L_neighbor_iface_addr_list is identified by
          the nhdpDiscIfIndex, which is an index to the
          nhdpIibLinkSetTable, which this table augments."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2IibLinkSetEntry 1 }

   olsrv2IibLinkSetOutMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "olsrv2IibLinkSetOutMetricValue is the metric of the
          link to the OLSRv2 interface with addresses
          L_neighbor_iface_addr_list from this OLSRv2 interface.
          The L_neighbor_iface_addr_list is identified by
          the nhdpDiscIfIndex, which is an index to the
          nhdpIibLinkSetTable, which this table augments."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2IibLinkSetEntry 2 }

   olsrv2IibLinkSetMprSelector  OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2IibLinkSetMprSelector is a boolean flag,
          recording whether this neighbor has selected this router
          as a flooding MPR, i.e., is a flooding MPR selector
          of this router."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2IibLinkSetEntry 3 }

Now the 2-hop set, which is where the router keeps track of friends-of-friends πŸ‘―β€β™€οΈπŸ’…

   --
   -- 2-Hop Set; from RFC 6130, extended by OLSRv2 by the
   -- following fields: N2_in_metric, N2_out_metric
   --

   olsrv2Iib2HopSetTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2Iib2HopSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A 2-Hop Set of an interface records network
          addresses of symmetric 2-hop neighbors, and
          the symmetric links to symmetric 1-hop neighbors
          through which these symmetric 2-hop neighbors
          can be reached.  It consists of 2-Hop Tuples."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 2 }

   olsrv2Iib2HopSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2Iib2HopSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "olsrv2Iib2HopSetTable consists of 2-Hop Tuples,
          each representing a single network address of
          a symmetric 2-hop neighbor and a single MANET
          interface of a symmetric 1-hop neighbor.
          Each 2-Hop Set from NHDP is extended by
          OLSRv2 by the following fields:

okay so the next bit is the tail end of the 2-hop set entry, and then we're into the Local Information Base 🧚 the Originator Set and Local Attached Network Set are giving main character energy, no cap πŸ’…

          (N2_in_metric (olsrv2Iib2HopSetInMetricValue),
           N2_out_metric (olsrv2Iib2HopSetOutMetricValue))"
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      AUGMENTS { nhdpIib2HopSetEntry }
   ::= { olsrv2Iib2HopSetTable 1 }

   Olsrv2Iib2HopSetEntry ::=
      SEQUENCE {
         olsrv2Iib2HopSetInMetricValue
            Olsrv2MetricValueCompressedFormTC,
         olsrv2Iib2HopSetOutMetricValue
            Olsrv2MetricValueCompressedFormTC
      }

   olsrv2Iib2HopSetInMetricValue  OBJECT-TYPE

      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2Iib2HopSetInMetricValue is the neighbor
          metric from the router with address
          N2_2hop_iface_addr to the router
          with OLSRv2 interface addresses
          N2_neighbor_iface_addr_list.

          The N2_2hop_iface_addr is identified by the
          (nhdpIib2HopSetIpAddressType,
          nhdpIib2HopSetIpAddress) pair from the
          nhdpIibLinkSetTable, which this table augments.

          The N2_neighbor_iface_addr_list is defined by
          the nhdpDiscIfIndex, which is an index of the
          nhdpIibLinkSetTable, which this table augments."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014.

          and

          RFC 6779 - Definition of Managed Objects for the
          Neighborhood Discovery Process, Herberg, U.,
          Cole, R., and I. Chakeres, October 2012."
   ::= { olsrv2Iib2HopSetEntry 1 }

   olsrv2Iib2HopSetOutMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2Iib2HopSetOutMetricValue is the neighbor metric
          to the router with address N2_2hop_iface_addr
          from the router with OLSRv2 interface addresses
          N2_neighbor_iface_addr_list.

          The N2_2hop_iface_addr is identified by the
          (nhdpIib2HopSetIpAddressType,
          nhdpIib2HopSetIpAddress) pair from the
          nhdpIibLinkSetTable, which this table augments.

          The N2_neighbor_iface_addr_list is defined by
          the nhdpDiscIfIndex, which is an index of the
          nhdpIibLinkSetTable, which this table augments."

      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014.

          and

          RFC 6779 - Definition of Managed Objects for the
          Neighborhood Discovery Process, Herberg, U.,
          Cole, R., and I. Chakeres, October 2012."
   ::= { olsrv2Iib2HopSetEntry 2 }

   --
   -- Local Information Base  - as defined in RFC 6130,
   -- extended by the addition of an Originator Set,
   -- defined in Section 6.1 and a Local Attached
   -- Network Set, defined in Section 6.2.
   --

   --
   -- Originator Set
   --

   olsrv2LibOrigSetTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2LibOrigSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A router's Originator Set records addresses
          that were recently used as originator addresses
          by this router."
       REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 3 }

   olsrv2LibOrigSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2LibOrigSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A router's Originator Set consists of
          Originator Tuples:

          (O_orig_addr (olsrv2LibOrigSetIpAddrType
           and olsrv2LibOrigSetIpAddr),
           O_time (olsrv2LibOrigSetExpireTime))."

      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2LibOrigSetIpAddrType,
              olsrv2LibOrigSetIpAddr }
   ::= { olsrv2LibOrigSetTable 1 }

   Olsrv2LibOrigSetEntry ::=
      SEQUENCE {
         olsrv2LibOrigSetIpAddrType
            InetAddressType,
         olsrv2LibOrigSetIpAddr
            InetAddress,
         olsrv2LibOrigSetExpireTime
            TimeStamp
      }

   olsrv2LibOrigSetIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2LibOrigSetIpAddr,
          as defined in the InetAddress MIB (RFC4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibOrigSetEntry 1 }

   olsrv2LibOrigSetIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "An originator address recently employed
          by this router."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibOrigSetEntry 2 }

   olsrv2LibOrigSetExpireTime  OBJECT-TYPE

      SYNTAX      TimeStamp
      UNITS      "centiseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2LibOrigSetExpireTime specifies the value
          of sysUptime when this entry SHOULD expire and be
          removed from the olsrv2LibOrigSetTable.  This time
          is determined at the time the entry is added,
          derived from the following expression:

             O_time := current time + O_HOLD_TIME

          where O_time is olsrv2LibOrigSetExpireTime,
          current_time is current sysUptime, and
          O_HOLD_TIME is a parameter of the OLSRv2
          protocol.  In the event that the
          O_HOLD_TIME is changed, the
          olsrv2LibOrigSetExpireTime needs to be
          recomputed for each of the entries in this table."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibOrigSetEntry 3 }

   --
   -- Local Attached Network Set
   --

   olsrv2LibLocAttNetSetTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2LibLocAttNetSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A router's Local Attached Network Set records
          its local non-OLSRv2 interfaces via which it
          can act as a gateway to other networks."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 4 }

   olsrv2LibLocAttNetSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2LibLocAttNetSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The entries include the Local Attached
          Network Tuples:

          (AL_net_addr (olsrv2LibLocAttNetSetIpAddr),
           AL_dist (olsrv2LibLocAttNetSetDistance),
           AL_metric (olsrv2LibLocAttNetSetMetricValue)
          )

          where:

             AL_net_addr is the network address
             of an attached network that can
             be reached via this router.  The
             AL_net_addr is defined in this MIB
             module by the tuple
             (olsrv2LibLocAttNetSetIpAddrType,
              olsrv2LibLocAttNetSetIpAddr,
              olsrv2LibLocAttNetSetIpAddrPrefixLen).

             AL_dist is the number of hops to
             the network with address AL_net_addr
             from this router.  The AL_dist is
             defined in this MIB module by the
             olsrv2LibLocAttNetSetDistance object.

             AL_metric is the metric of the link to
             the attached network with address
             AL_net_addr from this router.  The
             AL_metric is defined in this MIB module
             by the olsrv2LibLocAttNetSetMetricValue
             object.

          OLSRv2 (RFC 7181) defines the rules for managing
          entries within this table, e.g., populating
          and purging entries.  Specific instructions for the
          olsrv2LibLocAttNetSetEntry(s) are found in
          Sections 7.2 and 17 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2LibLocAttNetSetIpAddrType,
              olsrv2LibLocAttNetSetIpAddr,
              olsrv2LibLocAttNetSetIpAddrPrefixLen }
   ::= { olsrv2LibLocAttNetSetTable 1 }

   Olsrv2LibLocAttNetSetEntry ::=

      SEQUENCE {
         olsrv2LibLocAttNetSetIpAddrType
            InetAddressType,
         olsrv2LibLocAttNetSetIpAddr
            InetAddress,
         olsrv2LibLocAttNetSetIpAddrPrefixLen
            InetAddressPrefixLength,
         olsrv2LibLocAttNetSetDistance
            Unsigned32,
         olsrv2LibLocAttNetSetMetricValue
            Olsrv2MetricValueCompressedFormTC
      }

   olsrv2LibLocAttNetSetIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2LibLocAttNetSetIpAddr, as defined
          in the InetAddress MIB (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibLocAttNetSetEntry 1 }

   olsrv2LibLocAttNetSetIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the network address of an attached
          network that can be reached via this router."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibLocAttNetSetEntry 2 }

   olsrv2LibLocAttNetSetIpAddrPrefixLen  OBJECT-TYPE
      SYNTAX      InetAddressPrefixLength
      UNITS       "bits"
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION

         "Indicates the number of leading one bits that form the
          mask to be logically ANDed with the destination address
          before being compared to the value in the
          olsrv2LibLocAttNetSetIpAddr field."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibLocAttNetSetEntry 3 }

   olsrv2LibLocAttNetSetDistance  OBJECT-TYPE
      SYNTAX      Unsigned32 (1..255)
      UNITS       "hops"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object specifies the number of hops
          to the network with address
          olsrv2LibLocAttNetSetIpAddr from this router."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2LibLocAttNetSetEntry 4 }

that's the end of the Local Attached Network Set bits for this part πŸ¦‹ the Local Attached Network Set stuff is up next, so stay tuned bestie 🫢✨

olsrv2LibLocAttNetSetMetricValue OBJECT-TYPE SYNTAX Olsrv2MetricValueCompressedFormTC MAX-ACCESS read-only STATUS current DESCRIPTION "This object specifies the metric of the link to the attached network with address AL_net_addr from this router. The AL_net_addr is defined by the tuple (olsrv2LibLocAttNetSetIpAddrType, olsrv2LibLocAttNetSetIpAddr, olsrv2LibLocAttNetSetIpAddrPrefixLen)." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2LibLocAttNetSetEntry 5 }

-- -- Neighbor Information Base --

-- -- Neighbor Set - as defined in RFC 6130, -- extended by OLSRv2 by the addition of the following -- elements to each Neighbor Tuple: -- N_orig_addr (olsrv2NibNeighborSetNOrigIpAddrType, -- olsrv2NibNeighborSetNOrigIpAddr) -- N_in_metric (olsrv2NibNeighborSetNInMetricValue) -- N_out_metric (olsrv2NibNeighborSetNOutMetricValue) -- N_will_flooding (olsrv2NibNeighborSetNWillFlooding) -- N_will_routing (olsrv2NibNeighborSetNWillRouting) -- N_flooding_mpr (olsrv2NibNeighborSetNFloodingMpr) -- N_routing_mpr (olsrv2NibNeighborSetNRoutingMpr) -- N_mpr_selector (olsrv2NibNeighborSetNMprSelector) -- N_advertised (olsrv2NibNeighborSetNAdvertised) --

olsrv2NibNeighborSetTable OBJECT-TYPE SYNTAX SEQUENCE OF Olsrv2NibNeighborSetEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A router's Neighbor Set records all network addresses of each 1-hop neighbor. It consists of Neighbor Tuples, each representing a single 1-hop neighbor." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2StateGroup 5 }

olsrv2NibNeighborSetEntry OBJECT-TYPE SYNTAX Olsrv2NibNeighborSetEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Each Neighbor Tuple in the Neighbor Set, defined in RFC 6130, has these additional elements: N_orig_addr (olsrv2NibNeighborSetNOrigIpAddrType, olsrv2NibNeighborSetNOrigIpAddr) N_in_metric (olsrv2NibNeighborSetNInMetricValue) N_out_metric (olsrv2NibNeighborSetNOutMetricValue) N_will_flooding (olsrv2NibNeighborSetNWillFlooding) N_will_routing (olsrv2NibNeighborSetNWillRouting) N_flooding_mpr (olsrv2NibNeighborSetNFloodingMpr) N_routing_mpr (olsrv2NibNeighborSetNRoutingMpr) N_mpr_selector (olsrv2NibNeighborSetNMprSelector) N_advertised (olsrv2NibNeighborSetNAdvertised) defined here as extensions."

REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." AUGMENTS { nhdpNibNeighborSetEntry } ::= { olsrv2NibNeighborSetTable 1 }

Olsrv2NibNeighborSetEntry ::= SEQUENCE { olsrv2NibNeighborSetNOrigIpAddrType InetAddressType, olsrv2NibNeighborSetNOrigIpAddr InetAddress, olsrv2NibNeighborSetNInMetricValue Olsrv2MetricValueCompressedFormTC, olsrv2NibNeighborSetNOutMetricValue Olsrv2MetricValueCompressedFormTC, olsrv2NibNeighborSetNWillFlooding WillingnessTC, olsrv2NibNeighborSetNWillRouting WillingnessTC, olsrv2NibNeighborSetNFloodingMpr TruthValue, olsrv2NibNeighborSetNRoutingMpr TruthValue, olsrv2NibNeighborSetNMprSelector TruthValue, olsrv2NibNeighborSetNAdvertised TruthValue }

olsrv2NibNeighborSetNOrigIpAddrType OBJECT-TYPE SYNTAX InetAddressType { ipv4(1) , ipv6(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "The type of the olsrv2NibNeighborSetNOrigIpAddr, as defined in the InetAddress MIB module (RFC4001).

Only the values 'ipv4(1)' and 'ipv6(2)' are supported." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 1 }

olsrv2NibNeighborSetNOrigIpAddr OBJECT-TYPE

SYNTAX InetAddress (SIZE(4|16)) MAX-ACCESS read-only STATUS current DESCRIPTION "This is the originator IP address of the neighbor represented by this table entry." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 2 }

olsrv2NibNeighborSetNInMetricValue OBJECT-TYPE SYNTAX Olsrv2MetricValueCompressedFormTC MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the neighbor metric of any link from this neighbor to an OLSRv2 interface of this router, i.e., the minimum of all corresponding L_in_metric (olsrv2IibLinkSetInMetricValue) with L_status = SYMMETRIC and L_in_metric (olsrv2IibLinkSetInMetricValue) != UNKNOWN_METRIC, UNKNOWN_METRIC if there are no such Link Tuples. UNKNOWN_METRIC has a value of 0." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 3 }

olsrv2NibNeighborSetNOutMetricValue OBJECT-TYPE SYNTAX Olsrv2MetricValueCompressedFormTC MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the neighbor metric of any link from an OLSRv2 interface of this router to this neighbor, i.e., the minimum of all corresponding L_out_metric (olsrv2IibLinkSetOutMetricValue) with L_status = SYMMETRIC and L_out_metric (olsrv2IibLinkSetOutMetricValue) != UNKNOWN_METRIC, UNKNOWN_METRIC if there are no such Link Tuples. UNKNOWN_METRIC has a value of 0." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 4 }

olsrv2NibNeighborSetNWillFlooding OBJECT-TYPE SYNTAX WillingnessTC MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the neighbor's willingness to be selected as a flooding MPR, in the range from WILL_NEVER to WILL_ALWAYS, both inclusive, taking the value WILL_NEVER if no OLSRv2 specific information is received from this neighbor." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 5 }

olsrv2NibNeighborSetNWillRouting OBJECT-TYPE SYNTAX WillingnessTC MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the neighbor's willingness to be selected as a routing MPR, in the range from WILL_NEVER to WILL_ALWAYS, both inclusive, taking the value WILL_NEVER if no OLSRv2 specific information is received from this neighbor." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 6 }

olsrv2NibNeighborSetNFloodingMpr OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "This object is a boolean flag, recording whether this neighbor is selected as a flooding MPR by this router." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 7 } olsrv2NibNeighborSetNRoutingMpr OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "This object is a boolean flag, recording whether this neighbor is selected as a routing MPR by this router." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 8 }

olsrv2NibNeighborSetNMprSelector OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "This object is a boolean flag, recording whether this neighbor has selected this router as a routing MPR, i.e., is a routing MPR selector of this router.

When set to 'true', then this router is selected as a routing MPR by the neighbor router. When set to 'false', then this router is not selected by the neighbor as a routing MPR." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2NibNeighborSetEntry 9 }

olsrv2NibNeighborSetNAdvertised OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "This object, N_mpr_selector (olsrv2NibNeighborSetNMprSelector), is a boolean flag, recording whether this router has elected to advertise a link to this neighbor in its TC messages." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014."

::= { olsrv2NibNeighborSetEntry 10 }

olsrv2NibNeighborSetTableAnsn OBJECT-TYPE SYNTAX Unsigned32 (0..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "Advertised Neighbor Sequence Number (ANSN), is a variable, whose value is included in TC messages to indicate the freshness of the information transmitted." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2StateGroup 6 }

-- -- Topology Information Base - this Information -- Base is specific to OLSRv2 and is defined in -- Section 10 of RFC 7181. --

-- -- Advertising Remote Router Set --

olsrv2TibAdRemoteRouterSetTable OBJECT-TYPE SYNTAX SEQUENCE OF Olsrv2TibAdRemoteRouterSetEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A router's Advertising Remote Router Set records information describing each remote router in the network that transmits TC messages." REFERENCE "RFC 7181 - The Optimized Link State Routing Protocol Version 2, Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg, April 2014." ::= { olsrv2StateGroup 7 }

okay so the Advertised Neighbor Set table is where the router keeps its ANSN-tagged remote router info, and the sequence number wraparound stuff is literally so iconic πŸ§šπŸ’…

   olsrv2TibAdRemoteRouterSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2TibAdRemoteRouterSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A router's Advertised Neighbor Set Table entry
          consists of Advertising Remote Router Tuples:

          (AR_orig_addr (olsrv2TibAdRemoteRouterSetIpAddrType,
                         olsrv2TibAdRemoteRouterSetIpAddr),
           AR_seq_number (olsrv2TibAdRemoteRouterSetMaxSeqNo),
           AR_time (olsrv2TibAdRemoteRouterSetExpireTime).

          Addresses associated with this router are
          found in the NHDP-MIB module's nhdpDiscIfSetTable.

          OLSRv2 (RFC 7181) defines the rules for managing
          entries within this table, e.g., populating
          and purging entries.  Specific instructions for the
          olsrv2TibAdRemoteRouterSetEntry(s) are found in
          Section 10.1 and Section 17 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2TibAdRemoteRouterSetIpAddrType,
              olsrv2TibAdRemoteRouterSetIpAddr }
   ::= { olsrv2TibAdRemoteRouterSetTable 1 }

   Olsrv2TibAdRemoteRouterSetEntry ::=
      SEQUENCE {
         olsrv2TibAdRemoteRouterSetIpAddrType
            InetAddressType,
         olsrv2TibAdRemoteRouterSetIpAddr
            InetAddress,
         olsrv2TibAdRemoteRouterSetMaxSeqNo
            Unsigned32,
         olsrv2TibAdRemoteRouterSetExpireTime
            TimeStamp
      }

   olsrv2TibAdRemoteRouterSetIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibAdRemoteRouterSetIpAddr,
          as defined in the InetAddress MIB module (RFC4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAdRemoteRouterSetEntry 1 }
   olsrv2TibAdRemoteRouterSetIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the originator address of a received
          TC message."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAdRemoteRouterSetEntry 2 }

   olsrv2TibAdRemoteRouterSetMaxSeqNo  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..65535)
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the greatest Advertised Neighbor Sequence
          Number (ANSN) in any TC message
          received that originated from the router
          with originator address
          olsrv2TibAdRemoteRouterSetIpAddr.

          Sequence numbers are used in the OLSRv2 protocol
          for the purpose of discarding 'old' information,
          i.e., messages received out of order.  However,
          with a limited number of bits for representing
          sequence numbers, wraparound (that the sequence
          number is incremented from the maximum possible
          value to zero) will occur.  To prevent this from
          interfering with the operation of this protocol,
          OLSRv2 implementations observe the following when
          determining the ordering of sequence numbers.

          In OLSRv2, MAXVALUE designates one more than the
          largest possible value for a sequence number.
          For a 16-bit sequence number, MAXVALUE is 65536.

          The sequence number S1 is said to be 'greater than'
          the sequence number S2 if:

             o  S1 > S2 AND S1 - S2 < MAXVALUE/2 OR

             o  S2 > S1 AND S2 - S1 > MAXVALUE/2

          When sequence numbers S1 and S2 differ by MAXVALUE/2,
          their ordering cannot be determined.  In this case,
          which should not occur, either ordering may be
          assumed.

          Thus, when comparing two messages, it is possible
          - even in the presence of wraparound - to determine
          which message contains the most recent information."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAdRemoteRouterSetEntry 3 }

   olsrv2TibAdRemoteRouterSetExpireTime  OBJECT-TYPE
      SYNTAX      TimeStamp
      UNITS       "centiseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2TibAdRemoteRouterSetExpireTime specifies the value
          of sysUptime when this entry SHOULD expire and be
          removed from the olsrv2TibAdRemoteRouterSetTable."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAdRemoteRouterSetEntry 4 }

   --
   -- Router Topology Set
   --

   olsrv2TibRouterTopologySetTable OBJECT-TYPE
      SYNTAX       SEQUENCE OF Olsrv2TibRouterTopologySetEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A router's Router Topology Set records topology
          information about the network."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 8 }

   olsrv2TibRouterTopologySetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2TibRouterTopologySetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "It consists of Router Topology Tuples:

          (TR_from_orig_addr
             (olsrv2TibRouterTopologySetFromOrigIpAddrType,
              olsrv2TibRouterTopologySetFromOrigIpAddr),
           TR_to_orig_addr
             (olsrv2TibRouterTopologySetToOrigIpAddrType,
              olsrv2TibRouterTopologySetToOrigIpAddr),
           TR_seq_number (olsrv2TibRouterTopologySetSeqNo),
           TR_metric (olsrv2TibRouterTopologySetMetricValue),
           TR_time (olsrv2TibRouterTopologySetExpireTime)).

          OLSRv2 (RFC 7181) defines the rules for managing
          entries within this table, e.g., populating
          and purging entries.  Specific instructions for the
          olsrv2TibRouterTopologySetEntry(s) are found in
          Section 10.2 and Section 17 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2TibRouterTopologySetFromOrigIpAddrType,
              olsrv2TibRouterTopologySetFromOrigIpAddr,
              olsrv2TibRouterTopologySetToOrigIpAddrType,
              olsrv2TibRouterTopologySetToOrigIpAddr }
   ::= { olsrv2TibRouterTopologySetTable 1 }

   Olsrv2TibRouterTopologySetEntry ::=
      SEQUENCE {
         olsrv2TibRouterTopologySetFromOrigIpAddrType
            InetAddressType,
         olsrv2TibRouterTopologySetFromOrigIpAddr
            InetAddress,
         olsrv2TibRouterTopologySetToOrigIpAddrType
            InetAddressType,
         olsrv2TibRouterTopologySetToOrigIpAddr
            InetAddress,
         olsrv2TibRouterTopologySetSeqNo
            Unsigned32,
         olsrv2TibRouterTopologySetMetricValue
            Olsrv2MetricValueCompressedFormTC,
         olsrv2TibRouterTopologySetExpireTime
            TimeStamp
      }

   olsrv2TibRouterTopologySetFromOrigIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRouterTopologySetFromOrigIpAddr,
          as defined in the InetAddress MIB module (RFC4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 1 }

   olsrv2TibRouterTopologySetFromOrigIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the originator address of a router that can
          reach the router with originator address TR_to_orig_addr
          in one hop."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 2 }

   olsrv2TibRouterTopologySetToOrigIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRouterTopologySetToOrigIpAddr,
          as defined in the InetAddress MIB module (RFC4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 3 }

   olsrv2TibRouterTopologySetToOrigIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the originator address of a router that can be
          reached by the router with originator address
          TR_to_orig_addr in one hop."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 4 }

   olsrv2TibRouterTopologySetSeqNo  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..65535)
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the greatest Advertised Neighbor Sequence
          Number (ANSN) in any TC message
          received that originated from the router
          with originator address TR_from_orig_addr,
          i.e., that contributed to the information
          contained in this Tuple and that is defined by the
          objects:
             (olsrv2TibRouterTopologySetFromOrigIpAddrType,
              olsrv2TibRouterTopologySetFromOrigIpAddr).

          Sequence numbers are used in the OLSRv2 protocol
          for the purpose of discarding 'old' information,
          i.e., messages received out of order.  However,
          with a limited number of bits for representing
          sequence numbers, wraparound (that the sequence
          number is incremented from the maximum possible
          value to zero) will occur.  To prevent this from
          interfering with the operation of this protocol,
          OLSRv2 implementations observe the following when
          determining the ordering of sequence numbers.

          In OLSRv2, MAXVALUE designates one more than the
          largest possible value for a sequence number.
          For a 16-bit sequence number, MAXVALUE is 65536.

          The sequence number S1 is said to be 'greater than'
          the sequence number S2 if:

             o  S1 > S2 AND S1 - S2 < MAXVALUE/2 OR

             o  S2 > S1 AND S2 - S1 > MAXVALUE/2

          When sequence numbers S1 and S2 differ by MAXVALUE/2,
          their ordering cannot be determined.  In this case,
          which should not occur, either ordering may be
          assumed.

Okay so, picking up right where the TC sequence number checks wrap up πŸŽ€ Here's the rest of that table entry, the Routable Address Topology Set, and the start of the Attached Network Set. πŸ’…

          Thus, when comparing two messages, it is possible
          - even in the presence of wraparound - to determine
          which message contains the most recent information."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 5 }

   olsrv2TibRouterTopologySetMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the neighbor metric from the router
          with originator address TR_from_orig_addr
          (olsrv2TibRouterTopologySetFromOrigIpAddrType,
          olsrv2TibRouterTopologySetFromOrigIpAddr) to
          the router with originator address TR_to_orig_addr
          (olsrv2TibRouterTopologySetToOrigIpAddrType,
          olsrv2TibRouterTopologySetToOrigIpAddr)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 6 }

   olsrv2TibRouterTopologySetExpireTime  OBJECT-TYPE
      SYNTAX      TimeStamp
      UNITS       "centiseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2TibRouterTopologySetExpireTime specifies the value
          of sysUptime when this entry SHOULD expire and be
          removed from the olsrv2TibRouterTopologySetTable."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRouterTopologySetEntry 7 }

   --
   -- Routable Address Topology Set
   --

   olsrv2TibRoutableAddressTopologySetTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2TibRoutableAddressTopologySetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A router's Routable Address Topology Set records topology
          information about the routable addresses within the MANET,
          including via which routers they may be reached."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 9 }

   olsrv2TibRoutableAddressTopologySetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2TibRoutableAddressTopologySetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "It consists of Router Topology Tuples:

          (TA_from_orig_addr
               (olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType
                olsrv2TibRoutableAddressTopologySetFromOrigIpAddr),
           TA_dest_addr
               (olsrv2TibRoutableAddressTopologySetFromDestIpAddrType
                olsrv2TibRoutableAddressTopologySetFromDestIpAddr),
           TA_seq_number (olsrv2TibRoutableAddressTopologySetSeqNo)
           TA_metric (olsrv2TibRoutableAddressTopologySetMetricValue)
           TA_time (olsrv2TibRoutableAddressTopologySetExpireTime)
          )

          OLSRv2 (RFC 7181) defines the rules for managing
          entries within this table, e.g., populating
          and purging entries.  Specific instructions for the
          olsrv2TibRoutableAddressTopologySetEntry(s) are found
          in Section 10.3 and Section 17 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType,
              olsrv2TibRoutableAddressTopologySetFromOrigIpAddr,
              olsrv2TibRoutableAddressTopologySetDestIpAddrType,
              olsrv2TibRoutableAddressTopologySetDestIpAddr }
   ::= { olsrv2TibRoutableAddressTopologySetTable 1 }

    Olsrv2TibRoutableAddressTopologySetEntry ::=
       SEQUENCE {
          olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType
            InetAddressType,
          olsrv2TibRoutableAddressTopologySetFromOrigIpAddr
            InetAddress,
          olsrv2TibRoutableAddressTopologySetDestIpAddrType
            InetAddressType,
          olsrv2TibRoutableAddressTopologySetDestIpAddr
            InetAddress,
          olsrv2TibRoutableAddressTopologySetSeqNo
            Unsigned32,
          olsrv2TibRoutableAddressTopologySetMetricValue
            Olsrv2MetricValueCompressedFormTC,
          olsrv2TibRoutableAddressTopologySetExpireTime
            TimeStamp
       }

   olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the
          olsrv2TibRoutableAddressTopologySetFromOrigIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 1 }

   olsrv2TibRoutableAddressTopologySetFromOrigIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the originator address of a router that can
          reach the router with routable address TA_dest_addr
          in one hop."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 2 }
   olsrv2TibRoutableAddressTopologySetDestIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRouterTopologySetToOrigIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 3 }

   olsrv2TibRoutableAddressTopologySetDestIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is a routable address of a router that can be
          reached by the router with originator address
          TA_from_orig_addr in one hop.  The TA_from_orig_addr
          is defined by the tuple
          (olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType
           olsrv2TibRoutableAddressTopologySetFromOrigIpAddr)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 4 }

   olsrv2TibRoutableAddressTopologySetSeqNo  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..65535)
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the greatest Advertised Neighbor Sequence
          Number (ANSN) in any TC message
          received that originated from the router
          with originator address TA_from_orig_addr,
          i.e., that contributed to the information
          contained in this Tuple.  The TA_from_orig_addr
          is defined by the tuple
          (olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType
           olsrv2TibRoutableAddressTopologySetFromOrigIpAddr)."
      REFERENCE

         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 5 }

   olsrv2TibRoutableAddressTopologySetMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the neighbor metric from the router
          with originator address TA_from_orig_addr (defined
          by the tuple
          (olsrv2TibRoutableAddressTopologySetFromOrigIpAddrType
           olsrv2TibRoutableAddressTopologySetFromOrigIpAddr))
          to the router with OLSRv2 interface address TA_dest_addr
          (defined by the tuple
          (olsrv2TibRoutableAddressTopologySetFromDestIpAddrType
           olsrv2TibRoutableAddressTopologySetFromDestIpAddr))."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 6 }

   olsrv2TibRoutableAddressTopologySetExpireTime  OBJECT-TYPE
      SYNTAX      TimeStamp
      UNITS       "centiseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2TibRoutableAddressTopologySetExpireTime
          specifies the value of sysUptime when this entry
          SHOULD expire and be removed from the
          olsrv2TibRoutableAddressTopologySetTable."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutableAddressTopologySetEntry 7 }

   --
   -- Attached Network Set
   --

   olsrv2TibAttNetworksSetTable OBJECT-TYPE
      SYNTAX       SEQUENCE OF Olsrv2TibAttNetworksSetEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A router's Attached Network Set records information
          about networks (which may be outside the MANET)
          attached to other routers and their routable addresses."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 10 }

   olsrv2TibAttNetworksSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2TibAttNetworksSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "It consists of Attached Network Tuples:

          (AN_orig_addr
             (olsrv2TibAttNetworksSetOrigIpAddrType,
              olsrv2TibAttNetworksSetOrigIpAddr),
           AN_net_addr
             (olsrv2TibAttNetworksSetNetIpAddrType,
              olsrv2TibAttNetworksSetNetIpAddr,
              olsrv2TibAttNetworksSetNetIpAddrPrefixLen),
           AN_seq_number (olsrv2TibAttNetworksSetSeqNo),
           AN_dist (olsrv2TibAttNetworksSetDist),
           AN_metric (olsrv2TibAttNetworksSetMetricValue),
           AN_time (olsrv2TibAttNetworksSetExpireTime)
          )

          OLSRv2 (RFC 7181) defines the rules for managing
          entries within this table, e.g., populating
          and purging entries.  Specific instructions for the
          olsrv2TibRoutableAddressTopologySetEntry(s) are found
          in Section 10.4 and Section 17 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2TibAttNetworksSetOrigIpAddrType,
              olsrv2TibAttNetworksSetOrigIpAddr,
              olsrv2TibAttNetworksSetNetIpAddrType,
              olsrv2TibAttNetworksSetNetIpAddr,
              olsrv2TibAttNetworksSetNetIpAddrPrefixLen }
   ::= { olsrv2TibAttNetworksSetTable 1 }

Okay so the attached networks set is where the gateway magic lives 🧚 Every row says which router can act as a gateway to which network, how far away it is, and when the entry expires. Let's go πŸ’…

   Olsrv2TibAttNetworksSetEntry ::=

      SEQUENCE {
         olsrv2TibAttNetworksSetOrigIpAddrType
            InetAddressType,
         olsrv2TibAttNetworksSetOrigIpAddr
            InetAddress,
         olsrv2TibAttNetworksSetNetIpAddrType
            InetAddressType,
         olsrv2TibAttNetworksSetNetIpAddr
            InetAddress,
         olsrv2TibAttNetworksSetNetIpAddrPrefixLen
            InetAddressPrefixLength,
         olsrv2TibAttNetworksSetSeqNo
            Unsigned32,
         olsrv2TibAttNetworksSetDist
            Unsigned32,
         olsrv2TibAttNetworksSetMetricValue
            Olsrv2MetricValueCompressedFormTC,
         olsrv2TibAttNetworksSetExpireTime
            TimeStamp
      }

   olsrv2TibAttNetworksSetOrigIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibAttNetworksSetOrigIpAddr,
          as defined in the InetAddress MIB module (RFC4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 1 }

   olsrv2TibAttNetworksSetOrigIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the originator address, of type
          olsrv2TibAttNetworksSetOrigIpAddrType, of a
          router that can act as gateway to the
          network with address AN_net_addr.  The
          AN_net_addr is defined by the tuple
             (olsrv2TibAttNetworksSetNetIpAddrType,

              olsrv2TibAttNetworksSetNetIpAddr,
              olsrv2TibAttNetworksSetNetIpAddrPrefixLen)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 2 }

   olsrv2TibAttNetworksSetNetIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibAttNetworksSetNetIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 3 }

   olsrv2TibAttNetworksSetNetIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the network address, of type
          olsrv2TibAttNetworksSetNetIpAddrType, of an
          attached network, that may be reached via
          the router with originator address AN_orig_addr.
          The AN_orig_addr is defined by the tuple
             (olsrv2TibAttNetworksSetOrigIpAddrType,
              olsrv2TibAttNetworksSetOrigIpAddr)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 4 }

   olsrv2TibAttNetworksSetNetIpAddrPrefixLen  OBJECT-TYPE
      SYNTAX      InetAddressPrefixLength
      UNITS       "bits"
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION

         "Indicates the number of leading one bits that form the
          mask to be logically ANDed with the destination address
          before being compared to the value in the
          olsrv2TibAttNetworksSetNetIpAddr field."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 5 }

   olsrv2TibAttNetworksSetSeqNo  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..65535)
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This is the greatest Advertised Neighbor Sequence
          Number (ANSN) in any TC message received
          that originated from the router
          with originator address AN_orig_addr
          (i.e., that contributed to the information
          contained in this Tuple).  The AN_orig_addr
          is defined by the tuple
             (olsrv2TibAttNetworksSetOrigIpAddrType,
              olsrv2TibAttNetworksSetOrigIpAddr).

          Sequence numbers are used in the OLSRv2 protocol
          for the purpose of discarding 'old' information,
          i.e., messages received out of order.  However,
          with a limited number of bits for representing
          sequence numbers, wraparound (that the sequence
          number is incremented from the maximum possible
          value to zero) will occur.  To prevent this from
          interfering with the operation of this protocol,
          the following MUST be observed when determining
          the ordering of sequence numbers.

          The term MAXVALUE designates in the following one
          more than the largest possible value for a sequence
          number.  For a 16-bit sequence number (as are those
          defined in this specification), MAXVALUE is 65536.

          The sequence number S1 is said to be 'greater than'
          the sequence number S2 if:

             o  S1 > S2 AND S1 - S2 < MAXVALUE/2 OR

             o  S2 > S1 AND S2 - S1 > MAXVALUE/2

          When sequence numbers S1 and S2 differ by MAXVALUE/2,
          their ordering cannot be determined.  In this case,
          which should not occur, either ordering may be
          assumed.

          Thus, when comparing two messages, it is possible
          - even in the presence of wraparound - to determine
          which message contains the most recent information."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 6 }

   olsrv2TibAttNetworksSetDist  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..255)
      UNITS       "hops"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The number of hops to the network
          with address AN_net_addr from the router with
          originator address AN_orig_addr.
          The AN_orig_addr is defined by the tuple
             (olsrv2TibAttNetworksSetOrigIpAddrType,
              olsrv2TibAttNetworksSetOrigIpAddr)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 7 }

   olsrv2TibAttNetworksSetMetricValue  OBJECT-TYPE
      SYNTAX      Olsrv2MetricValueCompressedFormTC
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The metric of the link from the router with
          originator address AN_orig_addr to the attached
          network with address AN_net_addr.
          The AN_net_addr is defined by the tuple
            (olsrv2TibAttNetworksSetNetIpAddrType,
             olsrv2TibAttNetworksSetNetIpAddr,
             olsrv2TibAttNetworksSetNetIpAddrPrefixLen)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."

   ::= { olsrv2TibAttNetworksSetEntry 9 }

   olsrv2TibAttNetworksSetExpireTime  OBJECT-TYPE
      SYNTAX      TimeStamp
      UNITS       "centiseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "olsrv2TibAttNetworksSetExpireTime
          specifies the value of sysUptime when this
          entry SHOULD expire and be removed from the
          olsrv2TibAttNetworksSetTable."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibAttNetworksSetEntry 10 }

   --
   -- Routing Set
   --

   olsrv2TibRoutingSetTable OBJECT-TYPE
      SYNTAX       SEQUENCE OF Olsrv2TibRoutingSetEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A router's Routing Set records the first hop along a
          selected path to each destination for which any such
          path is known."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2StateGroup 11 }

   olsrv2TibRoutingSetEntry  OBJECT-TYPE
      SYNTAX      Olsrv2TibRoutingSetEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
          "It consists of Routing Tuples:

           (R_dest_addr, R_next_iface_addr,
            R_local_iface_addr, R_dist, R_metric)"
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
      INDEX { olsrv2TibRoutingSetDestIpAddrType,
              olsrv2TibRoutingSetDestIpAddr,
              olsrv2TibRoutingSetDestIpAddrPrefixLen }
   ::= { olsrv2TibRoutingSetTable 1 }

   Olsrv2TibRoutingSetEntry ::=
      SEQUENCE {
         olsrv2TibRoutingSetDestIpAddrType
            InetAddressType,
         olsrv2TibRoutingSetDestIpAddr
            InetAddress,
         olsrv2TibRoutingSetDestIpAddrPrefixLen
            InetAddressPrefixLength,
         olsrv2TibRoutingSetNextIfIpAddrType
            InetAddressType,
         olsrv2TibRoutingSetNextIfIpAddr
            InetAddress,
         olsrv2TibRoutingSetLocalIfIpAddrType
            InetAddressType,
         olsrv2TibRoutingSetLocalIfIpAddr
            InetAddress,
         olsrv2TibRoutingSetDist
            Unsigned32,
         olsrv2TibRoutingSetMetricValue
            Unsigned32
      }

   olsrv2TibRoutingSetDestIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRoutingSetDestIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and 'ipv6(2)' are
          supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 1 }

   olsrv2TibRoutingSetDestIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This is the address of the destination,
          either the address of an interface of
          a destination router or the network
          address of an attached network."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 2 }

   olsrv2TibRoutingSetDestIpAddrPrefixLen  OBJECT-TYPE
      SYNTAX      InetAddressPrefixLength
      UNITS       "bits"
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Indicates the number of leading one bits that form the
          mask to be logically ANDed with the destination address
          before being compared to the value in the
          olsrv2TibRoutingSetDestIpAddr field.

okay bestie, the MIB is still going and this next bit is all about the routing set entries πŸ’…

          Note: This definition needs to be consistent
          with the current forwarding table MIB module description.
          Specifically, it SHOULD allow for longest prefix
          matching of network addresses."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 3 }

   olsrv2TibRoutingSetNextIfIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRoutingSetNextIfIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 4 }

   olsrv2TibRoutingSetNextIfIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object is the OLSRv2 interface address of the
          next hop on the selected path to the
          destination."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 5 }

   olsrv2TibRoutingSetLocalIfIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType { ipv4(1) , ipv6(2) }
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2TibRoutingSetLocalIfIpAddr
          and olsrv2TibRoutingSetNextIfIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 6 }

   olsrv2TibRoutingSetLocalIfIpAddr  OBJECT-TYPE
      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object is the address of the local OLSRv2
          interface over which a packet must be
          sent to reach the destination by the
          selected path."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 7 }

   olsrv2TibRoutingSetDist  OBJECT-TYPE
      SYNTAX      Unsigned32 (0..255)
      UNITS       "hops"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object is the number of hops on the selected
          path to the destination."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 8 }

   olsrv2TibRoutingSetMetricValue  OBJECT-TYPE
      SYNTAX      Unsigned32(0..4294901760)
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object is the metric of the route
          to the destination with address R_dest_addr.
          The maximum value of this object can be
          256 times MAXIMUM_METRIC,
          as represented in Olsrv2MetricValueCompressedFormTC, i.e.,
          4294901760."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2TibRoutingSetEntry 9 }

the routing set objects are basically the whole story of where a packet goes next πŸ¦‹ next hop, local interface, hop count, and metric, all stored as read-only so you can look but not touch πŸŽ€


now we're in the performance group πŸ“Šβœ¨ it's all counters that help you see how the OLSRv2 process is actually doing

--
-- OLSRv2 Performance Group
--

--
--    Contains objects that help to characterize the
--    performance of the OLSRv2 routing process.
--

olsrv2PerformanceObjGrp  OBJECT IDENTIFIER ::= {olsrv2MIBObjects 3}

    --
    -- Objects per local interface
    --

   olsrv2InterfacePerfTable  OBJECT-TYPE
      SYNTAX      SEQUENCE OF Olsrv2InterfacePerfEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table summarizes performance objects that are
          measured per each active local OLSRv2 interface.
          If the olsrv2InterfaceAdminStatus of the interface
          changes to 'disabled', then the row associated with this
          interface SHOULD be removed from this table."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2PerformanceObjGrp 1 }

   olsrv2InterfacePerfEntry OBJECT-TYPE
      SYNTAX      Olsrv2InterfacePerfEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "A single entry contains performance counters for
          each active local OLSRv2 interface."
      AUGMENTS { nhdpInterfacePerfEntry }
   ::= { olsrv2InterfacePerfTable 1 }

   Olsrv2InterfacePerfEntry ::=
      SEQUENCE {
         olsrv2IfTcMessageXmits
            Counter32,
         olsrv2IfTcMessageRecvd
            Counter32,
         olsrv2IfTcMessageXmitAccumulatedSize
            Counter64,
         olsrv2IfTcMessageRecvdAccumulatedSize
            Counter64,
         olsrv2IfTcMessageTriggeredXmits
            Counter32,
         olsrv2IfTcMessagePeriodicXmits
            Counter32,
         olsrv2IfTcMessageForwardedXmits
            Counter32,
         olsrv2IfTcMessageXmitAccumulatedMPRSelectorCount
            Counter32
      }

so the table is per local interface, and the table's SHOULD-remove rule kicks in when an interface goes 'disabled' πŸ™ˆ that's the one place this part uses SHOULD in caps, so it's a real requirement, not a vibe

   olsrv2IfTcMessageXmits  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "messages"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION

         "A counter is incremented each time a TC
          message has been transmitted on that interface."
   ::= { olsrv2InterfacePerfEntry 1 }

   olsrv2IfTcMessageRecvd  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "messages"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented each time a
          TC message has been received on that interface.
          This excludes all messages that are ignored due to
          OLSRv2 protocol procedures, such as messages
          considered invalid for processing by this router,
          as defined in Section 16.3.1 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2InterfacePerfEntry 2 }

   olsrv2IfTcMessageXmitAccumulatedSize  OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "octets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented by the number of octets in
          a TC message each time a TC message has been sent."
   ::= { olsrv2InterfacePerfEntry 3 }

   olsrv2IfTcMessageRecvdAccumulatedSize  OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "octets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented by the number of octets in
          a TC message each time a TC message has been received.
          This excludes all messages that are ignored due to
          OLSRv2 protocol procedures, such as messages
          considered invalid for processing by this router,
          as defined in Section 16.3.1 of OLSRv2 (RFC 7181)."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."

   ::= { olsrv2InterfacePerfEntry 4 }

   olsrv2IfTcMessageTriggeredXmits  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "messages"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented each time a triggered
          TC message has been sent."
   ::= { olsrv2InterfacePerfEntry 5 }

   olsrv2IfTcMessagePeriodicXmits  OBJECT-TYPE
      SYNTAX      Counter32
       UNITS      "messages"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented each time a periodic
          TC message has been sent."
   ::= { olsrv2InterfacePerfEntry 6 }

   olsrv2IfTcMessageForwardedXmits  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "messages"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented each time a
          TC message has been forwarded."
   ::= { olsrv2InterfacePerfEntry 7 }

   olsrv2IfTcMessageXmitAccumulatedMPRSelectorCount OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "advertised MPR selectors"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "A counter is incremented by the number of advertised
          MPR selectors in a TC each time a TC
          message has been sent."
   ::= { olsrv2InterfacePerfEntry 8 }

these counters are giving full stats-nerd energy πŸ“ˆ they count TC messages sent, received, triggered, periodic, forwarded, plus the bytes and the MPR selectors πŸ“

   --
   -- Objects concerning the Routing Set
   --

   olsrv2RoutingSetRecalculationCount  OBJECT-TYPE

      SYNTAX      Counter32
      UNITS       "recalculations"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This counter increments each time the Routing Set has
          been recalculated."
   ::= { olsrv2PerformanceObjGrp 2 }

   --
   -- Objects concerning the MPR set
   --

   olsrv2MPRSetRecalculationCount  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "recalculations"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This counter increments each time the MPRs
          of this router have been recalculated for
          any of its interfaces."
   ::= { olsrv2PerformanceObjGrp 3 }

--
-- Notifications
--

olsrv2NotificationsObjects OBJECT IDENTIFIER ::=
                                     { olsrv2MIBNotifications 0 }
olsrv2NotificationsControl OBJECT IDENTIFIER ::=
                                     { olsrv2MIBNotifications 1 }
olsrv2NotificationsStates  OBJECT IDENTIFIER ::=
                                     { olsrv2MIBNotifications 2 }


   -- olsrv2NotificationsObjects

   olsrv2RouterStatusChange NOTIFICATION-TYPE
       OBJECTS { olsrv2OrigIpAddrType, -- The address type of
                                       --    the originator of
                                       --    the notification.
                 olsrv2OrigIpAddr,     -- The originator of
                                       --    the notification.
                 olsrv2AdminStatus     -- The new state.
       }
       STATUS      current
       DESCRIPTION

          "olsrv2RouterStatusChange is a notification generated
           when the OLSRv2 router changes it status.
           The router status is maintained in the
           olsrv2AdminStatus object."
   ::= { olsrv2NotificationsObjects 1 }

the counters wrap up and then the notifications start, and the router-status-change one is the first alert in the line 🚨✨ main character energy for sure πŸ‘‘

Okay bestie, this is where the notifications get loud πŸ””βœ¨ The router tells you when its originator address changes, and it also pings you when recalculations pile up.

   olsrv2OrigIpAddrChange NOTIFICATION-TYPE
      OBJECTS { olsrv2OrigIpAddrType, -- The address type of
                                      --    the originator of
                                      --    the notification.
                olsrv2OrigIpAddr,     -- The originator of
                                      --    the notification.
                olsrv2PreviousOrigIpAddrType, -- The address
                                      -- type of the previous
                                      -- address of
                                      -- the originator of
                                      -- the notification.
                olsrv2PreviousOrigIpAddr  -- The previous
                                      -- address of the
                                      -- originator of
                                      -- the notification.
      }
      STATUS      current
      DESCRIPTION
         "olsrv2OrigIpAddrChange is a notification generated when
          the OLSRv2 router changes it originator IP address.
          The notification includes the new and the previous
          originator IP address of the OLSRv2 router."
   ::= { olsrv2NotificationsObjects 2 }

   olsrv2RoutingSetRecalculationCountChange NOTIFICATION-TYPE
      OBJECTS { olsrv2OrigIpAddrType, -- The address type of
                                      --   the originator of
                                      --   the notification.
                olsrv2OrigIpAddr,     -- The originator of
                                      --   the notification.
                olsrv2RoutingSetRecalculationCount  -- Number
                                          -- of the
                                          -- Routing Set
                                          -- recalculations.
      }
      STATUS       current
      DESCRIPTION
         "The olsrv2RoutingSetRecalculationCountChange
          notification is generated when a significant number of
          Routing Set recalculations have occurred in a short time.
          This notification SHOULD be generated no more than once
          per olsrv2RoutingSetRecalculationCountWindow.

          The network administrator SHOULD select
          appropriate values for 'significant number of
          Routing Set recalculations' and 'short time' through
          the settings of the
          olsrv2RoutingSetRecalculationCountThreshold
          and olsrv2RoutingSetRecalculationCountWindow objects."
   ::= { olsrv2NotificationsObjects 3 }

   olsrv2MPRSetRecalculationCountChange NOTIFICATION-TYPE
      OBJECTS { olsrv2OrigIpAddrType, -- The address type of
                                      --   the originator of
                                      --   the notification.
                olsrv2OrigIpAddr,     -- The originator of
                                      --   the notification.
                olsrv2MPRSetRecalculationCount  -- Number of
                                      --   MPR set
                                      --   recalculations.
      }
      STATUS       current
      DESCRIPTION
         "The olsrv2MPRSetRecalculationCountChange
          notification is generated when a significant
          number of MPR set recalculations occur in
          a short period of time.  This notification
          SHOULD be generated no more than once
          per olsrv2MPRSetRecalculationCountWindow.
          The network administrator SHOULD select
          appropriate values for 'significant number of
          MPR set recalculations' and 'short period of
          time' through the settings of the
          olsrv2MPRSetRecalculationCountThreshold and
          olsrv2MPRSetRecalculationCountWindow objects."
   ::= { olsrv2NotificationsObjects 4 }

So the originator change alert fires whenever the router swaps its originator IP, and it carries both the new address and the old one πŸ‘€ Main character energy for IP addresses πŸ’…

Then the two recalculation alerts are like the router yelling "I've been recalculating way too much, bestie 😭". They're only meant to go off once per window max, so you don't get spammed. The admin picks what counts as "significant" and "short time" using the threshold and window knobs coming up next πŸŽ€

   -- olsrv2NotificationsControl

   olsrv2RoutingSetRecalculationCountThreshold OBJECT-TYPE
      SYNTAX      Integer32 (0..255)
      UNITS       "recalculations"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "A threshold value for the
          olsrv2RoutingSetRecalculationCount object.
          If the number of occurrences exceeds this
          threshold within the previous
          olsrv2RoutingSetRecalculationCountWindow,
          then the olsrv2RoutingSetRecalculationCountChange
          notification is to be generated.

          It is RECOMMENDED that the value of this
          threshold be set to at least 20 and higher
          in dense topologies with frequent expected
          topology changes."
      DEFVAL { 20 }
   ::= { olsrv2NotificationsControl 1 }

   olsrv2RoutingSetRecalculationCountWindow OBJECT-TYPE
      SYNTAX      TimeTicks
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "This object is used to determine whether to generate
          an olsrv2RoutingSetRecalculationCountChange notification.
          This object represents an interval from the present moment,
          extending into the past, expressed in hundredths of
          a second.  If the change in the value of the
          olsrv2RoutingSetRecalculationCount object during
          this interval has exceeded the value of
          olsrv2RoutingSetRecalculationCountThreshold, then
          an olsrv2RoutingSetRecalculationCountChange notification
          is generated.

          It is RECOMMENDED that the value for this
          window be set to at least 5 times the
          nhdpHelloInterval (whose default value is
          2 seconds."
      DEFVAL { 1000 }
   ::= { olsrv2NotificationsControl 2 }

   olsrv2MPRSetRecalculationCountThreshold OBJECT-TYPE
      SYNTAX      Integer32 (0..255)
      UNITS       "recalculations"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "A threshold value for the
          olsrv2MPRSetRecalculationCount object.
          If the number of occurrences exceeds this
          threshold within the previous
          olsrv2MPRSetRecalculationCountWindow,
          then the
          olsrv2MPRSetRecalculationCountChange
          notification is to be generated.

          It is RECOMMENDED that the value of this
          threshold be set to at least 20 and higher
          in dense topologies with frequent expected
          topology changes."
      DEFVAL { 20 }
   ::= { olsrv2NotificationsControl 3 }

   olsrv2MPRSetRecalculationCountWindow OBJECT-TYPE
      SYNTAX       TimeTicks
      MAX-ACCESS   read-write
      STATUS       current
      DESCRIPTION
         "This object is used to determine whether to generate
          an olsrv2MPRSetRecalculationCountChange notification.
          This object represents an interval from the present moment,
          extending into the past, expressed in hundredths of
          a second.  If the change in the value of the
          olsrv2MPRSetRecalculationCount object during
          that interval has exceeded the value of
          olsrv2MPRSetRecalculationCountThreshold, then the
          an olsrv2MPRSetRecalculationCountChange notification
          is generated.

          It is RECOMMENDED that the value for this
          window be set to at least 5 times the
          nhdpHelloInterval."
      DEFVAL { 1000 }
   ::= { olsrv2NotificationsControl 4 }

The threshold objects are the trigger dials 🎚️ Both default to 20 and are read-write, and the spec RECOMMENDED starting at 20 or higher in dense topologies where things change a lot 🌸

The window objects measure time in hundredths of a second, so the default 1000 means 10 seconds πŸ’œ The spec RECOMMENDED setting them to at least 5 times the nhdpHelloInterval, which defaults to 2 seconds πŸ¦‹

Now the state objects, which are the router's memory of where it used to live 🧚

   olsrv2PreviousOrigIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType  { ipv4(1) , ipv6(2) }
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The type of the olsrv2PreviousOrigIpAddr,
          as defined in the InetAddress MIB module (RFC 4001).

          Only the values 'ipv4(1)' and
          'ipv6(2)' are supported.

          This object MUST have the same persistence
          characteristics as olsrv2PreviousOrigIpAddr."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2NotificationsStates 1 }

   olsrv2PreviousOrigIpAddr  OBJECT-TYPE

      SYNTAX      InetAddress (SIZE(4|16))
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The previous origination IP address
          of this OLSRv2 router.

          This object SHOULD be updated each time
          the olsrv2OrigIpAddr is modified.

          This object is persistent, and when written,
          the entity SHOULD save the change to
          non-volatile storage."
      REFERENCE
         "RFC 7181 - The Optimized Link State Routing Protocol
          Version 2, Clausen, T., Dearlove, C., Jacquet, P.,
          and U. Herberg, April 2014."
   ::= { olsrv2NotificationsStates 2 }

The type object only ever holds ipv4(1) or ipv6(2), and it MUST keep the same persistence as the address it describes πŸ”’ The address object is 4 or 16 octets, so it's either IPv4 or IPv6 🌈 It's persistent too, and the spec says it SHOULD get updated whenever olsrv2OrigIpAddr changes, plus saved to non-volatile storage when written πŸ’Ύ

Time for the compliance paperwork, bestie πŸ“œ

   --
   -- Compliance Statements
   --

   olsrv2Compliances  OBJECT IDENTIFIER ::= { olsrv2MIBConformance 1 }
   olsrv2MIBGroups    OBJECT IDENTIFIER ::= { olsrv2MIBConformance 2 }

   olsrv2BasicCompliance  MODULE-COMPLIANCE
      STATUS current
      DESCRIPTION
         "The basic implementation requirements for
          managed network entities that implement
          the OLSRv2 routing process."
      MODULE  -- this module
      MANDATORY-GROUPS { olsrv2ConfigObjectsGroup }
   ::= { olsrv2Compliances 1 }

   olsrv2FullCompliance MODULE-COMPLIANCE
      STATUS current
      DESCRIPTION
         "The full implementation requirements for
          managed network entities that implement
          the OLSRv2 routing process."
      MODULE  -- this module
      MANDATORY-GROUPS { olsrv2ConfigObjectsGroup,
                         olsrv2StateObjectsGroup,
                         olsrv2PerfObjectsGroup,
                         olsrv2NotificationsObjectsGroup,
                         olsrv2NotificationsGroup }

   ::= { olsrv2Compliances 2 }

   --
   -- Units of Conformance
   --

   olsrv2ConfigObjectsGroup OBJECT-GROUP
      OBJECTS {
         olsrv2AdminStatus,
         olsrv2InterfaceAdminStatus,
         olsrv2OrigIpAddrType,
         olsrv2OrigIpAddr,
         olsrv2OHoldTime,
         olsrv2TcInterval,
         olsrv2TcMinInterval,
         olsrv2THoldTime,
         olsrv2AHoldTime,
         olsrv2RxHoldTime,
         olsrv2PHoldTime,
         olsrv2FHoldTime,
         olsrv2TpMaxJitter,
         olsrv2TtMaxJitter,
         olsrv2FMaxJitter,
         olsrv2TcHopLimit,
         olsrv2WillFlooding,
         olsrv2WillRouting,
         olsrv2LinkMetricType
      }
      STATUS      current
      DESCRIPTION
         "Objects to permit configuration of OLSRv2.
          All of these SHOULD be backed by non-volatile
          storage."
   ::= { olsrv2MIBGroups 1 }

There are two compliance levels πŸŽ€ The basic one only requires the config group, and the full one requires the config, state, performance, notifications objects, and notifications groups all together πŸ’–

Last bit: the config group is for setting up OLSRv2, and all of those objects SHOULD be backed by non-volatile storage so your settings survive a reboot 🌟

   olsrv2StateObjectsGroup  OBJECT-GROUP
      OBJECTS {
         olsrv2LibOrigSetExpireTime,
         olsrv2LibLocAttNetSetDistance,
         olsrv2LibLocAttNetSetMetricValue,
         olsrv2IibLinkSetInMetricValue,
         olsrv2IibLinkSetOutMetricValue,
         olsrv2IibLinkSetMprSelector,
         olsrv2Iib2HopSetInMetricValue,
         olsrv2Iib2HopSetOutMetricValue,
         olsrv2NibNeighborSetNOrigIpAddrType,
         olsrv2NibNeighborSetNOrigIpAddr,
         olsrv2NibNeighborSetNInMetricValue,
         olsrv2NibNeighborSetNOutMetricValue,
         olsrv2NibNeighborSetNWillFlooding,
         olsrv2NibNeighborSetNWillRouting,
         olsrv2NibNeighborSetNFloodingMpr,
         olsrv2NibNeighborSetNRoutingMpr,
         olsrv2NibNeighborSetNMprSelector,
         olsrv2NibNeighborSetNAdvertised,
         olsrv2NibNeighborSetTableAnsn,
         olsrv2TibAdRemoteRouterSetMaxSeqNo,
         olsrv2TibAdRemoteRouterSetExpireTime,
         olsrv2TibRouterTopologySetSeqNo,
         olsrv2TibRouterTopologySetMetricValue,
         olsrv2TibRouterTopologySetExpireTime,
         olsrv2TibRoutableAddressTopologySetExpireTime,
         olsrv2TibRoutableAddressTopologySetSeqNo,
         olsrv2TibRoutableAddressTopologySetMetricValue,
         olsrv2TibAttNetworksSetSeqNo,
         olsrv2TibAttNetworksSetDist,
         olsrv2TibAttNetworksSetMetricValue,
         olsrv2TibAttNetworksSetExpireTime,
         olsrv2TibRoutingSetNextIfIpAddrType,
         olsrv2TibRoutingSetNextIfIpAddr,
         olsrv2TibRoutingSetLocalIfIpAddrType,
         olsrv2TibRoutingSetLocalIfIpAddr,
         olsrv2TibRoutingSetDist,
         olsrv2TibRoutingSetMetricValue
      }
      STATUS      current
      DESCRIPTION
         "Objects to permit monitoring of OLSRv2 state."
   ::= { olsrv2MIBGroups 2 }

   olsrv2PerfObjectsGroup  OBJECT-GROUP
      OBJECTS {
         olsrv2IfTcMessageXmits,
         olsrv2IfTcMessageRecvd,
         olsrv2IfTcMessageXmitAccumulatedSize,
         olsrv2IfTcMessageRecvdAccumulatedSize,
         olsrv2IfTcMessageTriggeredXmits,
         olsrv2IfTcMessagePeriodicXmits,
         olsrv2IfTcMessageForwardedXmits,
         olsrv2IfTcMessageXmitAccumulatedMPRSelectorCount,
         olsrv2RoutingSetRecalculationCount,
         olsrv2MPRSetRecalculationCount
      }
      STATUS      current
      DESCRIPTION
         "Objects to support monitoring of OLSRv2 performance."

   ::= { olsrv2MIBGroups 3 }

   olsrv2NotificationsObjectsGroup OBJECT-GROUP
      OBJECTS {
         olsrv2RoutingSetRecalculationCountThreshold,
         olsrv2RoutingSetRecalculationCountWindow,
         olsrv2MPRSetRecalculationCountThreshold,
         olsrv2MPRSetRecalculationCountWindow,
         olsrv2PreviousOrigIpAddrType,
         olsrv2PreviousOrigIpAddr
      }
      STATUS      current
      DESCRIPTION
         "Objects to support the notification types in the
          olsrv2NotificationsGroup.  Some of these appear in
          notification payloads, others serve to control
          notification generation."
   ::= { olsrv2MIBGroups 4 }


   olsrv2NotificationsGroup NOTIFICATION-GROUP
      NOTIFICATIONS {
         olsrv2RouterStatusChange,
         olsrv2OrigIpAddrChange,
         olsrv2RoutingSetRecalculationCountChange,
         olsrv2MPRSetRecalculationCountChange
      }
      STATUS current
      DESCRIPTION
          "Notification types to support management of OLSRv2."
   ::= { olsrv2MIBGroups 5 }

END

8. Security Considerations πŸ”

Okay bestie, this section is serious, so buckle up 😭 This MIB module defines objects for configuring, monitoring, and getting notifications about OLSRv2 [RFC7181]. OLSRv2 lets routers learn the topology of the routing domain by swapping TC messages, so they can work out shortest paths to every destination router in that domain ✨

There are a bunch of management objects in this MIB module with a MAX-ACCESS of read-write and/or read-create. Those can be sensitive or vulnerable in some network environments. SET operations with no proper protection, in a non-secure environment, can seriously mess with network operations πŸ’€ Here are the tables and objects, and why they're sensitive:

  • olsrv2TcInterval, olsrv2TcMinInterval: these writable objects control how fast TC messages get sent. Set them too high and it could turn into a form of DoS attack by overloading interface resources. Set them too low and OLSRv2 might not converge fast enough to give accurate routes to every destination in the domain.
  • olsrv2TcHopLimit: defines the hop limit for TC messages. Set too low, messages won't be forwarded beyond the defined scope, so routers further away from the message originator won't be able to build appropriate topology graphs 🧚
  • olsrv2OHoldTime, olsrv2THoldTime, olsrv2AHoldTime, olsrv2RxHoldTime, olsrv2PHoldTime, olsrv2FHoldTime: these define hold times for tuples in the different Information Bases of OLSRv2. Set too low, information expires super quickly, which may harm correct operation of the routing protocol.
  • olsrv2WillFlooding and olsrv2WillRouting: these define how willing this router is to become an MPR. If set to WILL_NEVER (0), the managed router won't forward any TC messages and won't accept a selection to become an MPR from neighbouring routers. If set to WILL_ALWAYS (15), neighbours will prefer this router during MPR selection, so it may attract more traffic πŸ“
  • olsrv2TpMaxJitter, olsrv2TtMaxJitter, olsrv2FMaxJitter: these define jitter values for TC message transmission and forwarding. Set too low, control traffic may get lost when collisions occur.
  • olsrv2LinkMetricType: defines the type of link metric a router uses (for example ETX or hop count). Whenever this value changes, all link metric information the router has recorded becomes invalid, which resets information acquired from other routers in the MANET. Also, if olsrv2LinkMetricType on a router is set to a value that other routers in the MANET don't know, those routers won't be able to establish routes to that router or through it. Existing routes to a router with an unknown olsrv2LinkMetricType will be removed.
Heads up: a bad value in that last one can wipe out routes across the whole MANET, so treat it with care 🚨

Some of the readable objects in this MIB module (meaning objects with a MAX-ACCESS other than not-accessible) may also be sensitive or vulnerable in some environments. So it's important to control even GET and/or NOTIFY access to them, and possibly encrypt their values when they're sent over the network via SNMP πŸ”’ Here are the tables and objects, and why:

  • olsrv2TibRouterTopologySetTable: this table contains information on the topology of the MANET, specifically the IP addresses of the routers in the MANET (as identified by the olsrv2TibRouterTopologySetFromOrigIpAddr and olsrv2TibRouterTopologySetToOrigIpAddr objects). It gives an adversary broad information about the members of the MANET, all in one single table. That can be used to speed up attacks on the other members without having to go through a laborious discovery process of their own πŸ‘€

Some of the tables in this MIB module AUGMENT tables defined in NHDP-MIB [RFC6779]. So care must be taken when configuring access control here, to make sure the permissions granted for the AUGMENTing tables are consistent with the access controls permitted within the NHDP-MIB. The list below identifies the AUGMENTing tables and their NHDP-MIB counterparts. It is RECOMMENDED that access control policies for these table pairs are consistently set 🫢

  • The olsrv2InterfaceTable AUGMENTs the nhdpInterfaceTable.
  • The olsrv2IibLinkSetTable AUGMENTs the nhdpIibLinkSetTable.
  • The olsrv2Iib2HopSetTable AUGMENTs the nhdpIib2HopSetTable.
  • The olsrv2NibNeighborSetTable AUGMENTs the nhdpNibNeighborSetTable.
  • The olsrv2InterfacePerfTable AUGMENTs the nhdpInterfacePerfTable.

MANET technology is often deployed to support emergency services or military tactical applications. In those applications it's imperative to keep the communications network running properly and to protect the sensitive information related to how it operates πŸ›‘οΈ So when implementing these capabilities, the full use of SNMPv3 cryptographic mechanisms for authentication and privacy is RECOMMENDED πŸ’œ

SNMP versions prior to SNMPv3 didn't include adequate security. Even if the network itself is secure (for example by using IPsec), there's no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module πŸ™ˆ

Implementations SHOULD provide the security features described by the SNMPv3 framework (see [RFC3410]). Implementations claiming compliance with the SNMPv3 standard MUST include full support for authentication and privacy via the User-based Security Model (USM) [RFC3414] with the AES cipher algorithm [RFC3826]. Implementations MAY also provide support for the Transport Security Model (TSM) [RFC5591] in combination with a secure transport such as SSH [RFC5592] or TLS/DTLS [RFC6353] ✨

Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to 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 is only given to principals (users) with legitimate rights to GET or SET (change/create/delete) them πŸ‘‘

9. Applicability Statement ✨

okay so this section is basically the "where does this MIB actually make sense?" talk 🧚 This document describes objects for configuring parameters of the Optimized Link State Routing Protocol version 2 (OLSRv2) [RFC7181] process on a router. This MIB module, called OLSRv2-MIB, also reports state, performance info, and notifications. OLSRv2 depends on info gathered by the Neighborhood Discovery Protocol [RFC6130] to do its thing, and NHDP is managed through the NHDP-MIB [RFC6779] πŸ’œ

MANET deployments can be wildly different, bestie πŸ’€ The topology dynamics, channel capacity, loss rates, traffic flow directions, and the memory and CPU of the routers can all vary a ton. SNMP, and therefore this MIB module, only fits a subset of MANET deployments, specifically ones:

  • In which routers have enough memory and CPU resources to run SNMP and expose the MIB module.
  • Where a Network Management System (NMS) is defined to which notifications are generated and from which routers can be managed.
  • Where this NMS is reachable from routers in the MANET most of the time (as notifications to the NMS and management information from the NMS to the router will be lost when connectivity is temporarily lost). This requires that the topology of the MANET is only moderately dynamic.
  • Where the underlying wireless channel supports enough bandwidth to run SNMP, and where loss rates of the channel are not exhaustive.

Certain MANET deployments are a great fit for this MIB 🌸 Community networks with non-mobile routers, dynamic topology because of changing link quality, and a predefined gateway (that could also serve as NMS) are all examples of networks where this MIB applies. Other, more constrained MANET deployments may not be able to run SNMP and will need different management protocols, no cap 🫢

Some level of configuration, i.e., read-write objects, is desirable for OLSRv2 deployments. Topology-related config is critical for initial system startup ✨ It covers things like enabling OLSRv2 on new interfaces, or initially configuring OLSRv2 on a router's interfaces through the olsrv2InterfaceAdminStatus object. OLSRv2 lets you do some performance tuning through various protocol parameters, and this MIB lets you configure those parameters through read-write objects such as olsrv2TcHopLimit or olsrv2FMaxJitter. Other read-write objects control Notification behavior through this MIB, e.g., the olsrv2RoutingSetRecalculationCountThreshold object πŸŽ€

A fuller discussion of MANET network management applicability is coming later, and it's handled elsewhere. [MGMT-SNAP] gives a snapshot of OLSRv2-routed MANET management as it's currently deployed, while [MANET-MGMT] is meant to give specific guidelines on MANET network management, looking at the various MIB modules that have been written πŸ“š


10. IANA Considerations πŸ¦‹

IANA now maintains the IANAolsrv2LinkMetricType-MIB and keeps it synchronized with the "LINK_METRIC Address Block TLV Type Extensions" registry at http://www.iana.org/assignments/manet-parameters.

The MIB modules in this document use the following IANA-assigned OBJECT IDENTIFIER values, recorded in the SMI Numbers registry:

Descriptor                       OBJECT IDENTIFIER value
----------                       -----------------------
OLSRv2-MIB                           { mib-2 219 }
IANA-OLSRv2-LINK-METRIC-TYPE-MIB     { mib-2 221 }

11. Acknowledgements 🫢

The authors want to thank Randy Presuhn, Benoit Claise, Adrian Farrel, and the entire MANET WG for reviewing this document πŸ’–

This MIB document uses the template written by D. Harrington, which is based on contributions from the MIB Doctors, especially Juergen Schoenwaelder, Dave Perkins, C.M. Heard, and Randy Presuhn ✨


12. References πŸ“š

12.1. Normative References

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

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

[RFC2579]    McCloghrie, K., Ed., Perkins, D., Ed., and J.
             Schoenwaelder, Ed., "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.

[RFC2863]    McCloghrie, K. and F. Kastenholz, "The Interfaces Group
             MIB", RFC 2863, June 2000.

[RFC3414]    Blumenthal, U. and B. Wijnen, "User-based Security Model
             (USM) for version 3 of the Simple Network Management
             Protocol (SNMPv3)", STD 62, RFC 3414, December 2002.

[RFC3418]    Presuhn, R., "Management Information Base (MIB) for the
             Simple Network Management Protocol (SNMP)", STD 62, RFC
             3418, December 2002.

[RFC3826]    Blumenthal, U., Maino, F., and K. McCloghrie, "The
             Advanced Encryption Standard (AES) Cipher Algorithm in
             the SNMP User-based Security Model", RFC 3826, June
             2004.

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

[RFC5591]    Harrington, D. and W. Hardaker, "Transport Security
             Model for the Simple Network Management Protocol
             (SNMP)", RFC 5591, June 2009.

[RFC5592]    Harrington, D., Salowey, J., and W. Hardaker, "Secure
             Shell Transport Model for the Simple Network Management
             Protocol (SNMP)", RFC 5592, June 2009.

[RFC6130]    Clausen, T., Dearlove, C., and J. Dean, "Mobile Ad Hoc
             Network (MANET) Neighborhood Discovery Protocol (NHDP)",
             RFC 6130, April 2011.

[RFC6353]    Hardaker, W., "Transport Layer Security (TLS) Transport
             Model for the Simple Network Management Protocol
             (SNMP)", RFC 6353, July 2011.

[RFC6779]    Herberg, U., Cole, R., and I. Chakeres, "Definition of
             Managed Objects for the Neighborhood Discovery
             Protocol", RFC 6779, October 2012.

[RFC7181]    Clausen, T., Dearlove, C., Jacquet, P., and U. Herberg,
             "The Optimized Link State Routing Protocol Version 2",
             RFC 7181, April 2014.

12.2. Informative References

[MANET-MGMT] Nguyen, J., Cole, R., Herberg, U., Yi, J., and J. Dean,
             "Network Management of Mobile Ad hoc Networks (MANET):
             Architecture, Use Cases, and Applicability", Work in
             Progress, February 2013.

[MGMT-SNAP]  Clausen, T. and U. Herberg, "Snapshot of OLSRv2-Routed
             MANET Management", Work in Progress, February 2014.

[REPORT-MIB] Cole, R., Macker, J., and A. Bierman, "Definition of
             Managed Objects for Performance Reporting", Work in
             Progress, November 2012.

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

Appendix A. IANAolsrv2LinkMetricType-MIB 🧚

This document sets up the IANAolsrv2LinkMetricType-MIB module. IANA now maintains it and keeps it synchronized with the "LINK_METRIC Address Block TLV Type Extensions" registry at http://www.iana.org/assignments/manet-parameters. If there are any discrepancies (e.g., future updates to the MIB), the IANA site is the definitive source for this MIB πŸ’…

IANA-OLSRv2-LINK-METRIC-TYPE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, mib-2
              FROM SNMPv2-SMI
    TEXTUAL-CONVENTION
              FROM SNMPv2-TC;

ianaolsrv2LinkMetricType MODULE-IDENTITY
    LAST-UPDATED "201404090000Z"  -- 09 April 2014
    ORGANIZATION "IANA"
    CONTACT-INFO "Internet Assigned Numbers Authority

                  Postal: ICANN
                          12025 Waterfront Drive, Suite 300
                          Los Angeles, CA 90094-2536

                  Tel:    +1 310 301 5800
                  E-Mail: iana@iana.org"
    DESCRIPTION  "This MIB module defines the
                  IANAolsrv2LinkMetricType Textual
                  Convention, and thus the enumerated values of
                  the olsrv2LinkMetricType object defined in
                  the OLSRv2-MIB."
    REVISION      "201404090000Z"  -- 09 April 2014
    DESCRIPTION   "Initial version of this MIB as published in
                   RFC 7184."

    ::= { mib-2 221 }

IANAolsrv2LinkMetricTypeTC ::= TEXTUAL-CONVENTION
   STATUS      current
   DESCRIPTION
      "This data type is used as the syntax of the
       olsrv2LinkMetricType object in the definition
       of the OLSRv2-MIB module.

       The olsrv2LinkMetricType corresponds to
       LINK_METRIC_TYPE of OLSRv2 (RFC 7181).
       OLSRv2 uses bidirectional additive link metrics
       to determine shortest distance routes (i.e.,
       routes with smallest total of link metric values).

       OLSRv2 has established a registry for the LINK_METRIC_TYPEs
       (denoted 'LINK_METRIC Address Block TLV Type Extensions'):
              http://www.iana.org/assignments/manet-parameters/

       This is done in Section 24.5 in OLSRv2 (RFC 7181).
       The LINK_METRIC_TYPE (which has as corresponding
       object in the MIB module olsrv2LinkMetricType)
       corresponds to the type extension of
       the LINK_METRIC TLV that is set up in the
       'LINK_METRIC Address Block TLV Type Extensions' registry.
       Whenever new link metric types are added to that registry,
       IANA MUST update this textual convention accordingly.

       The definition of this textual convention with the
       addition of newly assigned values is published
       periodically by the IANA, in either the Assigned
       Numbers RFC, or some derivative of it specific to
       Internet Network Management number assignments.  (The
       latest arrangements can be obtained by contacting the
       IANA.)

       Requests for new values should be made to IANA via
       email (iana@iana.org)."
   SYNTAX  INTEGER {
              unknown(0)     -- Link metric meaning assigned
                             --       by administrative action
                             -- 1-223 Unassigned
                             -- 224-255 Reserved for
                             --       Experimental Use
   }

   END

Authors' Addresses 🌈

Ulrich Herberg
Fujitsu Laboratories of America
1240 East Arques Avenue
Sunnyvale, CA  94085
USA

EMail: ulrich@herberg.name
URI:   http://www.herberg.name/


Robert G. Cole
US Army CERDEC
6010 Frankford Road, Bldg 6010
Aberdeen Proving Ground, Maryland  21005
USA

Phone: +1 443 395 8744
EMail: robert.g.cole@us.army.mil
URI:   http://www.cs.jhu.edu/~rgcole/


Thomas Heide Clausen
LIX, Ecole Polytechnique
Palaiseau Cedex  91128
France

Phone: +33 6 6058 9349
EMail: T.Clausen@computer.org
URI:   http://www.ThomasClausen.org/
πŸ“¦ where this page comes from