RFC 2787

Definitions of Managed Objects for the Virtual Router Redundancy Protocol

๐Ÿ“… published March 2000, from ietf

Definitions of Managed Objects for the Virtual Router Redundancy Protocol ๐Ÿ’–

Network Working Group ยท Request for Comments: 2787 ๐ŸŽ€ Category: Standards Track โœจ Authors: B. Jewell (Copper Mountain Networks, Inc.) and D. Chuang (CoSine Communications) ๐Ÿซถ Date: March 2000 ๐Ÿ“… This doc doesn't list anything it obsoletes or updates in the title block, so there's nothing to flag there. ๐Ÿ™ˆ


Status of This Memo ๐Ÿ“œ

okay so this is a standards track protocol spec for the Internet community, and it's basically asking everyone to talk about it and suggest improvements ๐Ÿ—ฃ๏ธโœจ if you want the official standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐Ÿ’… and yes, distribution of this memo is unlimited ๐ŸŒธ

Copyright (C) The Internet Society (2000). All Rights Reserved. ๐Ÿ’œ

Abstract ๐Ÿฆ‹

so this spec adds an extension to the Management Information Base (MIB) for SNMP-based network management ๐Ÿ”ฅ specifically, it gives you objects for configuring, monitoring, and controlling routers that run the Virtual Router Redundancy Protocol (VRRP) [17] ๐Ÿ‘‘

the MIB module here is written to be compliant with SMIv2 [5], and it's semantically identical to the SMIv1 definitions [2] ๐Ÿงš

Table of Contents ๐Ÿ“

   1  The SNMP Network Management Framework .................    2
   2  Overview ..............................................    3
   2.1  VRRP MIB Structure ..................................    3
   2.2  Virtual Router Redundancy Protocol ..................    4
   2.3  VRRP MIB Table Design ...............................    4
   2.3.1  Relation to Interface Group .......................    5
   2.4  VRRP Scenarios ......................................    5
   2.4.1  Scenario #1 .......................................    5
   2.4.2  Scenario #2 .......................................    8
   3  Definitions ...........................................   11
   4  Security Considerations ...............................   27
   5  Acknowledgements ......................................   28
   6  References ............................................   28
   7  Authors' Addresses ....................................   30
   8  Intellectual Property Statement........................   30
   9  Full Copyright Statement...............................   31

1. The SNMP Management Framework ๐Ÿง โœจ

okay so the SNMP Management Framework is literally made of five major parts ๐Ÿ’…

  • an overall architecture, described in RFC 2571 [1] ๐Ÿ—๏ธ
  • mechanisms for describing and naming objects and events for management purposes ๐Ÿ“ the first version of this Structure of Management Information (SMI) is called SMIv1 and it's described in STD 16, RFC 1155 [2], STD 16, RFC 1212 [3] and RFC 1215 [4] ๐Ÿ’– the second version, SMIv2, is described in STD 58, RFC 2578 [5], STD 58, RFC 2579 [6] and STD 58, RFC 2580 [7] ๐ŸŒˆ
  • message protocols for transferring management information ๐Ÿ“จ the first version of the SNMP message protocol is SNMPv1, described in STD 15, RFC 1157 [8] ๐Ÿซถ a second version, SNMPv2c, is described in RFC 1901 [9] and RFC 1906 [10], and it is not an Internet standards track protocol ๐Ÿ™ˆ the third version is SNMPv3, described in RFC 1906 [10], RFC 2572 [11] and RFC 2574 [12] ๐Ÿ”ฅ
  • protocol operations for accessing management information ๐Ÿ”‘ the first set is described in STD 15, RFC 1157 [8], and a second set of operations and PDU formats is described in RFC 1905 [13] โœจ
  • a set of fundamental applications described in RFC 2573 [14], plus the view-based access control mechanism described in RFC 2575 [15] ๐Ÿ‘‘

if you want a more detailed intro to the current SNMP Management Framework, check out RFC 2570 [16] ๐Ÿฆ‹

managed objects are accessed through a virtual information store called the Management Information Base, or MIB ๐Ÿ—‚๏ธ objects in the MIB are defined using the mechanisms in the SMI ๐Ÿ’œ

this memo specifies a MIB module that is compliant with SMIv2 ๐Ÿ’… a MIB that conforms to SMIv1 can be produced through the right translations ๐Ÿงš the translated MIB has to be semantically equivalent, except where objects or events get dropped because no translation is possible (that's the case for Counter64) ๐Ÿ™ˆ some machine-readable info in SMIv2 gets turned into textual descriptions in SMIv1 during translation ๐Ÿ“ but this loss of machine-readable info is not considered to change the semantics of the MIB โœจ

2. Overview ๐ŸŒธ

this memo identifies the set of objects for configuring, monitoring, and controlling the Virtual Router Redundancy Protocol (VRRP), as defined in RFC 2338 [17] ๐ŸŽ€

VRRP specifies an election protocol. It lets one or more associated IP addresses be taken over by another router if the current IP address owner fails ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ so IP traffic from a host that was using a failed router as its default gateway is transparently forwarded by the VRRP router that took over ๐Ÿฆ‹ VRRP gives you redundancy in routed networks without needing dynamic routing or router discovery protocols configured on every end-host ๐Ÿซถ

since VRRP is only meant for IPv4 routers, this MIB uses the SYNTAX for IP addresses that is specific to IPv4 ๐ŸŒˆ that means changes will be needed for this MIB to interoperate in an IPv6 environment ๐Ÿ’€

2.1. VRRP MIB Structure ๐Ÿงฉ

the VRRP MIB has three conformance groups:

  • vrrpOperations Group: objects related to a VRRP router's configuration and control โš™๏ธ
  • vrrpStatistics Group: objects with information that's useful for monitoring how VRRP routers are doing ๐Ÿ“Š
  • vrrpNotifications Group: objects and definitions used in SNMP notifications sent by VRRP routers ๐Ÿ””

the MIB includes these tables:

(1) the vrrpOperTable, which has objects that define the operational characteristics of a VRRP router. Rows in this table correspond to instances of virtual routers ๐Ÿ‘‘ (2) the vrrpAssoIpAddrTable, which has the addresses of the virtual router(s) that a given VRRP router is backing up ๐Ÿซถ (3) the vrrpRouterStatsTable, which has the operating statistics for a VRRP router ๐Ÿ“ˆ

2.2. Virtual Router Redundancy Protocol ๐Ÿ”ฅ

this MIB is based on the following VRRP characteristics from the VRRP specification [17] ๐Ÿ’–

  • a "VRRP router" is one that's configured to run VRRP alongside one or more other VRRP routers attached to a LAN ๐Ÿ 
  • a VRRP router can run one or more instances of a virtual router ๐Ÿฆ‹
  • a "virtual router" is an abstraction made of two or more physical routers that are associated by a Virtual Router Identifier (VRID) ๐Ÿงš
  • an instance of a virtual router (on a physical VRRP router) can be uniquely identified by a combo of the 'ifIndex' [18] and the "Virtual Router Identifier" (VRID) ๐Ÿ”‘
  • for each VRID there's a set of one or more "associated IP addresses" that the virtual router backs up ๐Ÿ›Ÿ

2.3. VRRP MIB Table Design ๐Ÿ“

the tables in the VRRP MIB are built on the assumption that a VRRP network management application would most likely be designed to display information or provide configuration about a VRRP router on a "per-virtual-router basis" ๐Ÿ’… so the tables are made of conceptual rows grouped to show a view of individual virtual routers, with as few SNMP operations as possible โœจ

2.3.1. Relation to Interface Group (RFC 2233) [18]. ๐ŸŒ

since a router can take part in VRRP on one or more physical interfaces, "ifIndex" is used as an index into the tables in the VRRP MIB ๐Ÿซถ

2.4. VRRP Scenarios ๐ŸŽฌ

this section gives examples of how some of the objects in this MIB get instantiated for two different VRRP scenarios ๐Ÿงš first, here's the key for the labels in the tables and diagrams, which correspond to the actual MIB objects ๐Ÿ—๏ธ

   KEY:
   ----

   The labels in the following tables and diagrams correspond to the
   actual MIB objects as follows:

      if      = vrrpOperIfIndex
      VrId    = vrrpOperVrId
      State   = vrrpOperState
      Prior   = vrrpOperPriority
      AddrCnt = vrrpOperIpAddrCount
      IpAddr  = vrrpOperMasterIpAddr
      RowStat = vrrpOperRowStatus

2.4.1. VRRP Scenario #1 ๐ŸŽ€

okay so bestie, picture a simple network with two VRRP routers, and each one is running two virtual routers ๐Ÿฆ‹. this layout is borrowed straight from the VRRP spec [17], so it's the real deal. the stuff in () is the default gateway IP that each host, H1 through H4, is using. and when you see "Interface" in the diagram, it's using the meaning from IF-MIB [18] ๐Ÿ’…

                VRID=1       VRID=2
               +-----+      +-----+
               | MR1 |      | MR2 |
               |  &  |      |  &  |
               | BR2 |      | BR1 |
               +-----+      +-----+
  IP A ---------->*            *<---------- IP B
  Interface=I1    |            |            Interface=I2
                  |            |
                  |            |
------------------+------------+-----+--------+--------+--------+--
                                     ^        ^        ^        ^
                                     |        |        |        |
                                   (IP A)   (IP A)   (IP A)   (IP A)
                                     |        |        |        |
                                  +--+--+  +--+--+  +--+--+  +--+--+
                                  |  H1 |  |  H2 |  |  H3 |  |  H4 |
                                  +-----+  +-----+  +--+--+  +--+--+

here's the MIB view from the IP A router ๐Ÿ‘€

        -----   MIB Tables For VRRP Router "IP A":   -----

vrrpOperTable
-------------

   | if | VrId | State | Prior | AddrCnt | IpAddr | ... | RowStat |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I1 |  01  |   M   |  255  |   1     |   A    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I1 |  02  |   B   | 1-254 |   1     |   B    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+

vrrpAssoIpAddrTable
-------------------

   | if | VrId |  IP   | RowStat |
   +----+------+-------+---------+
   |    |      |       |         |
   | I1 |  01  |   A   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I1 |  02  |   B   | active  |
   |    |      |       |         |
   +----+------+-------+---------+

the notes, because they're important ๐Ÿ“

  1. I1 and I2 are used to designate IF indices on each respective router.
  2. For State: M = Master; B = Backup.
  3. In the vrrpOperTable, a priority of 255 means the respective router owns the IP address. aka this IP address is native to the router, which is what the spec calls "the IP Address Owner" [17]. โœจ

and here's the MIB view from the IP B router ๐Ÿ‘€

        -----   MIB Tables For VRRP Router "IP B":   -----

vrrpOperTable
-------------

   | if | VrId | State | Prior | AddrCnt | IpAddr | ... | RowStat |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I2 |  01  |   B   | 1-254 |    1    |   A    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I2 |  02  |   M   |  255  |    1    |   B    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+

vrrpAssoIpAddrTable
-------------------

   | if | VrId |  IP   | RowStat |
   +----+------+-------+---------+
   |    |      |       |         |
   | I2 |  01  |   A   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I2 |  02  |   B   | active  |
   |    |      |       |         |
   +----+------+-------+---------+

2.4.2. VRRP Scenario #2 ๐ŸŒธ

this one is giving "one interface, two IP addresses" energy ๐Ÿงš we've still got two virtual routers, but this time a single interface has been set up with two IP addresses. same deal as before: the () addresses are the default gateway for each host, H1 and H2 this time ๐Ÿ’–

                VRID=1       VRID=2
               +-----+      +-----+
               | MR1 |      | MR2 |
               |  &  |      |  &  |
               | BR2 |      | BR1 |
               +-----+      +-----+
  IP A ---------->*            *<---------- IP B
  IP C            |            |            Interface=I2
  Interface=I1    |            |
                  |            |
                  |            |
------------------+------------+-----+--------+
                                     ^        ^
                                     |        |
                                   (IP A)   (IP B)
                                     |        |
                                  +--+--+  +--+--+
                                  |  H1 |  |  H2 |
                                  +-----+  +-----+

MIB view from the IP A router ๐Ÿ‘€

        -----   MIB Tables For VRRP Router "IP A":   -----

vrrpOperTable
-------------

   | if | VrId | State | Prior | AddrCnt | IpAddr | ... | RowStat |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I1 |  01  |   M   |  255  |    2    |   A    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I1 |  02  |   B   | 1-254 |    1    |   B    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+

vrrpAssoIpAddrTable
-------------------

   | if | VrId |  IP   | RowStat |
   +----+------+-------+---------+
   |    |      |       |         |
   | I1 |  01  |   A   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I1 |  01  |   C   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I1 |  02  |   B   | active  |
   |    |      |       |         |
   +----+------+-------+---------+

MIB view from the IP B router ๐Ÿ‘€

        -----   MIB Tables For VRRP Router "IP B":   -----

vrrpOperTable
-------------

   | if | VrId | State | Prior | AddrCnt | IpAddr | ... | RowStat |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I2 |  01  |   B   | 1-254 |    2    |   A    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+
   |    |      |       |       |         |        |     |         |
   | I2 |  02  |   M   |  255  |    1    |   B    |     | active  |
   |    |      |       |       |         |        |     |         |
   +----+------+-------+-------+---------+--------+-( )-+---------+

vrrpAssoIpAddrTable
-------------------

   | if | VrId |  IP   | RowStat |
   +----+------+-------+---------+
   |    |      |       |         |
   | I2 |  01  |   A   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I2 |  01  |   C   | active  |
   |    |      |       |         |
   +----+------+-------+---------+
   |    |      |       |         |
   | I2 |  02  |   B   | active  |
   |    |      |       |         |
   +----+------+-------+---------+

3. Definitions โœจ

here's the MIB module itself, the official source of truth ๐Ÿ’œ

VRRP-MIB DEFINITIONS ::= BEGIN

 IMPORTS
     MODULE-IDENTITY, OBJECT-TYPE,
     NOTIFICATION-TYPE, Counter32,
     Integer32, IpAddress, mib-2         FROM SNMPv2-SMI

     TEXTUAL-CONVENTION, RowStatus,
     MacAddress, TruthValue, TimeStamp   FROM SNMPv2-TC

     MODULE-COMPLIANCE, OBJECT-GROUP,
     NOTIFICATION-GROUP                  FROM SNMPv2-CONF
     ifIndex                             FROM IF-MIB;


 vrrpMIB  MODULE-IDENTITY
     LAST-UPDATED "200003030000Z"
     ORGANIZATION "IETF VRRP Working Group"
     CONTACT-INFO
            "Brian R. Jewell
     Postal: Copper Mountain Networks, Inc.
             2470 Embarcadero Way
             Palo Alto, California 94303
     Tel:    +1 650 687 3367
     E-Mail: bjewell@coppermountain.com"

     DESCRIPTION
         "This MIB describes objects used for managing Virtual Router
          Redundancy Protocol (VRRP) routers."
     REVISION "200003030000Z"    -- 03 Mar 2000
     DESCRIPTION "Initial version as published in RFC 2787."
     ::= { mib-2 68 }

-- *******************************************************************
--  Textual Conventions
-- *******************************************************************

 VrId ::= TEXTUAL-CONVENTION
     STATUS       current
     DESCRIPTION
         "A number which, along with an interface index (ifIndex),
         serves to uniquely identify a virtual router on a given VRRP
         router. A set of one or more associated addresses is assigned
         to a VRID."
     SYNTAX      Integer32 (1..255)

-- *******************************************************************
--  VRRP MIB Groups
-- *******************************************************************

 vrrpOperations      OBJECT IDENTIFIER ::= { vrrpMIB 1 }
 vrrpStatistics      OBJECT IDENTIFIER ::= { vrrpMIB 2 }
 vrrpConformance     OBJECT IDENTIFIER ::= { vrrpMIB 3 }


-- *******************************************************************
--  Start of MIB objects
-- *******************************************************************

 vrrpNodeVersion  OBJECT-TYPE
     SYNTAX       Integer32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
        "This value identifies the particular version of the VRRP
         supported by this node."
     ::= { vrrpOperations 1 }

 vrrpNotificationCntl  OBJECT-TYPE
     SYNTAX       INTEGER {
         enabled     (1),
         disabled    (2)
     }
     MAX-ACCESS   read-write
     STATUS       current
     DESCRIPTION
        "Indicates whether the VRRP-enabled router will generate
         SNMP traps for events defined in this MIB. 'Enabled'
         results in SNMP traps; 'disabled', no traps are sent."
     DEFVAL { enabled }
     ::= { vrrpOperations 2 }

-- *******************************************************************
--  VRRP Operations Table

Okay bestie, the VRRP Operations Table is where the real drama lives ๐Ÿ’… Here's the next chunk, every line exact ๐ŸŽ€

 vrrpOperTable OBJECT-TYPE
     SYNTAX       SEQUENCE OF VrrpOperEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "Operations table for a VRRP router which consists of a
          sequence (i.e., one or more conceptual rows) of
          'vrrpOperEntry' items."

     ::= { vrrpOperations 3 }

 vrrpOperEntry OBJECT-TYPE
     SYNTAX       VrrpOperEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "An entry in the vrrpOperTable containing the operational
          characteristics of a virtual router. On a VRRP router,
          a given virtual router is identified by a combination
          of the IF index and VRID.

          Rows in the table cannot be modified unless the value
          of `vrrpOperAdminState' is `disabled' and the
          `vrrpOperState' has transitioned to `initialize'."

     INDEX    { ifIndex, vrrpOperVrId }
     ::= { vrrpOperTable 1 }

 VrrpOperEntry ::=
     SEQUENCE {
         vrrpOperVrId
             VrId,
         vrrpOperVirtualMacAddr
             MacAddress,
         vrrpOperState
             INTEGER,
         vrrpOperAdminState
             INTEGER,
         vrrpOperPriority
             Integer32,
         vrrpOperIpAddrCount
             Integer32,
         vrrpOperMasterIpAddr
             IpAddress,
         vrrpOperPrimaryIpAddr
             IpAddress,
         vrrpOperAuthType
             INTEGER,
         vrrpOperAuthKey
             OCTET STRING,
         vrrpOperAdvertisementInterval
             Integer32,
         vrrpOperPreemptMode
             TruthValue,
         vrrpOperVirtualRouterUpTime
             TimeStamp,
         vrrpOperProtocol

             INTEGER,
         vrrpOperRowStatus
             RowStatus
 }

So the table is a SEQUENCE OF VrrpOperEntry, basically a whole list of rows ๐Ÿ“‹ and each row is one virtual router. A router's identity is the combo of IF index + VRID ๐Ÿชช (that's the INDEX), and here's the spicy bit: rows can only be changed if vrrpOperAdminState is disabled and vrrpOperState has gone to initialize. Yes, the text literally says disabled even though the enum values are up and down, but we're copying it exactly so nobody gets lost ๐Ÿ™ˆ

 vrrpOperVrId OBJECT-TYPE
     SYNTAX       VrId
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "This object contains the Virtual Router Identifier (VRID)."
     ::= { vrrpOperEntry 1 }

 vrrpOperVirtualMacAddr OBJECT-TYPE
     SYNTAX       MacAddress
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The virtual MAC address of the virtual router. Although this
         object can be derived from the 'vrrpOperVrId' object, it is
         defined so that it is easily obtainable by a management
         application and can be included in VRRP-related SNMP traps."
     ::= { vrrpOperEntry 2 }

vrrpOperVrId ๐ŸŒธ is the Virtual Router Identifier (VRID), and it's not-accessible, so you can't poke it directly through the table.

vrrpOperVirtualMacAddr ๐Ÿฆ‹ is the virtual MAC address, read-only. It could be worked out from the VRID, but it's defined on its own so management apps can grab it easily and drop it into VRRP-related SNMP traps. Main character energy for a duplicate field ๐Ÿ’œ

 vrrpOperState OBJECT-TYPE
     SYNTAX       INTEGER {
         initialize(1),
         backup(2),
         master(3)
     }
     MAX-ACCESS   read-only
     STATUS       current

     DESCRIPTION
         "The current state of the virtual router. This object has
         three defined values:

           - `initialize', which indicates that all the
             virtual router is waiting for a startup event.

           - `backup', which indicates the virtual router is
             monitoring the availability of the master router.

           - `master', which indicates that the virtual router
             is forwarding packets for IP addresses that are
             associated with this router.

         Setting the `vrrpOperAdminState' object (below) initiates
         transitions in the value of this object."
     ::= { vrrpOperEntry 3 }

 vrrpOperAdminState OBJECT-TYPE
     SYNTAX       INTEGER {
         up(1),
         down(2)
     }
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "This object will enable/disable the virtual router
         function. Setting the value to `up', will transition
         the state of the virtual router from `initialize' to `backup'
         or `master', depending on the value of `vrrpOperPriority'.
         Setting the value to `down', will transition  the
         router from `master' or `backup' to `initialize'. State
         transitions may not be immediate; they sometimes depend on
         other factors, such as the interface (IF) state.

         The `vrrpOperAdminState' object must be set to `down' prior
         to modifying the other read-create objects in the conceptual
         row. The value of the `vrrpOperRowStatus' object (below)
         must be `active', signifying that the conceptual row
         is valid (i.e., the objects are correctly set),
         in order for this object to be set to `up'."
     DEFVAL    { down }
     ::= { vrrpOperEntry 4 }

vrrpOperState ๐Ÿงš is the router's current mood, and it has three looks:

  • initialize ๐Ÿ’ค: all the virtual router is waiting for a startup event (the text says it exactly like that, typos and all).
  • backup ๐Ÿ‘€: it's watching for the master to be around.
  • master ๐Ÿ‘‘: it's forwarding packets for the IP addresses tied to this router.

It's read-only, but flipping vrrpOperAdminState is what sets off the transitions ๐Ÿ”ฅ

vrrpOperAdminState ๐ŸŽ›๏ธ is the on/off switch, read-create, and it defaults to down. Setting up moves things from initialize to backup or master, depending on vrrpOperPriority. Setting down sends it back to initialize. Transitions aren't always instant either, since they can depend on the interface state too ๐Ÿ™ƒ Before you touch the other read-create objects in the row, vrrpOperAdminState has to be down. And to get it to up, vrrpOperRowStatus needs to be active, meaning the row is valid and everything's set correctly โœจ

 vrrpOperPriority OBJECT-TYPE
     SYNTAX       Integer32 (0..255)
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "This object specifies the priority to be used for the
         virtual router master election process. Higher values imply
         higher priority.

         A priority of '0', although not settable, is sent by
         the master router to indicate that this router has ceased
         to participate in VRRP and a backup virtual router should
         transition  to become a new master.

         A priority of 255 is used for the router that owns the
         associated IP address(es)."
     DEFVAL       { 100 }
     ::= { vrrpOperEntry 5 }

 vrrpOperIpAddrCount OBJECT-TYPE
     SYNTAX       Integer32 (0..255)
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The number of IP addresses that are associated with this
         virtual router. This number is equal to the number of rows
         in the vrrpAssoIpAddrTable that correspond to a given IF
         index/VRID pair."
     ::= { vrrpOperEntry 6 }

 vrrpOperMasterIpAddr OBJECT-TYPE
     SYNTAX       IpAddress
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The master router's real (primary) IP address. This is
         the IP address listed as the source in VRRP advertisement
         last received by this virtual router."
     ::= { vrrpOperEntry 7 }

 vrrpOperPrimaryIpAddr OBJECT-TYPE
     SYNTAX       IpAddress
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "In the case where there is more than one IP address for
         a given `ifIndex', this object is used to specify the IP
         address that will become the `vrrpOperMasterIpAddr', should
         the virtual router transition from backup to master. If
         this object is set to 0.0.0.0, the IP address which is
         numerically lowest will be selected."
     DEFVAL       { '00000000'H } -- 0.0.0.0
     ::= { vrrpOperEntry 8 }

vrrpOperPriority ๐Ÿ† runs from 0 to 255 (default 100), and higher means it wins the master election ๐Ÿ’ช The 0 is a special one: it's not settable, but the master sends it to say "I'm leaving VRRP", so a backup should step up ๐Ÿ‘‹ And 255 is for the router that actually owns the IP address(es) ๐Ÿ‘‘

vrrpOperIpAddrCount ๐Ÿ”ข is read-only and counts how many IP addresses belong to this router. It's the number of rows in the vrrpAssoIpAddrTable that match the IF index/VRID pair ๐Ÿงฎ

vrrpOperMasterIpAddr ๐Ÿ“ก is the master's real (primary) IP address, read-only, pulled from the source of the last VRRP advertisement this router got ๐Ÿ“ฌ

vrrpOperPrimaryIpAddr ๐ŸŽฏ is for when an interface has more than one IP address. It picks which one becomes vrrpOperMasterIpAddr when the router goes from backup to master. If you set it to 0.0.0.0, the numerically lowest IP address gets picked instead ๐Ÿซถ

 vrrpOperAuthType OBJECT-TYPE
     SYNTAX       INTEGER {
         noAuthentication(1),       -- VRRP protocol exchanges are not
                                    -- authenticated.
         simpleTextPassword(2),     -- Exchanges are authenticated by a
                                    -- clear text password.
         ipAuthenticationHeader(3)  -- Exchanges are authenticated using
                                    -- the IP authentication header.
     }
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION

         "Authentication type used for VRRP protocol exchanges between
         virtual routers. This value of this object is the same for a
         given ifIndex.

         New enumerations to this list can only be added via a new
         RFC on the standards track."
     DEFVAL       { noAuthentication }
     ::= { vrrpOperEntry 9 }

 vrrpOperAuthKey OBJECT-TYPE
     SYNTAX       OCTET STRING (SIZE (0..16))
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "The Authentication Key. This object is set according to
         the value of the 'vrrpOperAuthType' object
         ('simpleTextPassword' or 'ipAuthenticationHeader'). If the
         length of the value is less than 16 octets, the agent will
         left adjust and zero fill to 16 octets. The value of this
         object is the same for a given ifIndex.

         When read, vrrpOperAuthKey always returns an Octet String
         of length zero."
     ::= { vrrpOperEntry 10 }

vrrpOperAuthType ๐Ÿ” has three options: noAuthentication (default, no auth on VRRP exchanges), simpleTextPassword (clear text password), and ipAuthenticationHeader (the IP authentication header). It's the same for a given ifIndex, and new options can only be added through a new standards-track RFC, so no sneaky additions ๐Ÿ™…โ€โ™€๏ธ

vrrpOperAuthKey ๐Ÿ—๏ธ is the Authentication Key, an OCTET STRING of up to 16 octets. It's set based on vrrpOperAuthType (so it matters for simpleTextPassword or ipAuthenticationHeader). If you give it fewer than 16 octets, the agent left-adjusts and zero-fills to 16. Plot twist: when you read it, you always get back a zero-length string, so the key stays secret ๐Ÿคซ

 vrrpOperAdvertisementInterval OBJECT-TYPE
     SYNTAX       Integer32 (1..255)
     UNITS        "seconds"
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "The time interval, in seconds, between sending
         advertisement messages. Only the master router sends
         VRRP advertisements."
     DEFVAL       { 1 }
     ::= { vrrpOperEntry 11 }

 vrrpOperPreemptMode OBJECT-TYPE
     SYNTAX       TruthValue
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "Controls whether a higher priority virtual router will
         preempt a lower priority master."
     DEFVAL       { true }
     ::= { vrrpOperEntry 12 }

 vrrpOperVirtualRouterUpTime OBJECT-TYPE

     SYNTAX       TimeStamp
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "This is the value of the `sysUpTime' object when this
         virtual router (i.e., the `vrrpOperState') transitioned
         out of `initialized'."
     ::= { vrrpOperEntry 13 }

 vrrpOperProtocol OBJECT-TYPE
     SYNTAX   INTEGER {
         ip (1),
         bridge (2),
         decnet (3),
         other (4)
     }
     MAX-ACCESS read-create
     STATUS     current
     DESCRIPTION
         "The particular protocol being controlled by this Virtual
         Router.

         New enumerations to this list can only be added via a new
         RFC on the standards track."
     DEFVAL { ip }
     ::= { vrrpOperEntry 14 }

vrrpOperAdvertisementInterval โฑ๏ธ is the time between advertisements, in seconds (1 to 255, default 1). Only the master sends VRRP advertisements, so backups stay quiet ๐Ÿคซ

vrrpOperPreemptMode ๐ŸฅŠ is a TruthValue that controls whether a higher priority virtual router can preempt a lower priority master. It defaults to true โœจ

vrrpOperVirtualRouterUpTime โฐ is a TimeStamp, read-only, that records the sysUpTime value at the moment the virtual router transitioned out of initialized (the text spells it that way, so we're keeping it).

vrrpOperProtocol ๐ŸŒ says which protocol this virtual router is controlling: ip (default), bridge, decnet, or other. Same deal as before: new enumerations need a standards-track RFC ๐Ÿ“œ

 vrrpOperRowStatus OBJECT-TYPE
     SYNTAX       RowStatus
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "The row status variable, used in accordance to installation
         and removal conventions for conceptual rows. The rowstatus of
         a currently active row in the vrrpOperTable is constrained
         by the operational state of the corresponding virtual router.
         When `vrrpOperRowStatus' is set to active(1), no other
         objects in the conceptual row, with the exception of
         `vrrpOperAdminState', can be modified. Prior to setting the
         `vrrpOperRowStatus' object from `active' to a different value,
         the `vrrpOperAdminState' object must be set to `down' and the
         `vrrpOperState' object be transitioned to `initialize'.

         To create a row in this table, a manager sets this object
         to either createAndGo(4) or createAndWait(5). Until instances
         of all corresponding columns are appropriately configured,
         the value of the corresponding instance of the `vrrpOperRowStatus'
         column will be read as notReady(3).

         In particular, a newly created row cannot be made active(1)
         until (minimally) the corresponding instance of
         `vrrpOperVrId' has been set and there is at least one active
         row in the `vrrpAssoIpAddrTable' defining an associated
         IP address for the virtual router."
     ::= { vrrpOperEntry 15 }

vrrpOperRowStatus ๐Ÿ—‚๏ธ is the row's lifecycle manager. When it's active(1), nothing else in the row can change except vrrpOperAdminState. Before you move it off active, vrrpOperAdminState has to be down and vrrpOperState has to be back at initialize ๐Ÿงน

Making a new row? Use createAndGo(4) or createAndWait(5) ๐ŸŒฑ Until every column is configured, it reads as notReady(3) โณ And a brand-new row can't go active(1) until at least vrrpOperVrId is set and there's at least one active row in the vrrpAssoIpAddrTable with an IP address for that router. No shortcuts, bestie ๐Ÿ’…



-- *******************************************************************
--  VRRP Associated IP Address Table

Okay so the table of backed-up addresses gets its rows here, and it's giving organized ๐Ÿ’…๐ŸŽ€

 vrrpAssoIpAddrTable OBJECT-TYPE
     SYNTAX       SEQUENCE OF VrrpAssoIpAddrEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "The table of addresses associated with this virtual router."
     ::= { vrrpOperations 4 }

 vrrpAssoIpAddrEntry OBJECT-TYPE
     SYNTAX       VrrpAssoIpAddrEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "An entry in the table contains an IP address that is
         associated with a virtual router. The number of rows for
         a given ifIndex and VrId will equal the number of IP
         addresses associated (e.g., backed up) by the virtual
         router (equivalent to 'vrrpOperIpAddrCount').

         Rows in the table cannot be modified unless the value
         of `vrrpOperAdminState' is `disabled' and the
         `vrrpOperState' has transitioned to `initialize'."

     INDEX    { ifIndex, vrrpOperVrId, vrrpAssoIpAddr }
     ::= { vrrpAssoIpAddrTable 1 }

 VrrpAssoIpAddrEntry ::=
     SEQUENCE {
         vrrpAssoIpAddr
             IpAddress,
         vrrpAssoIpAddrRowStatus
             RowStatus
 }

 vrrpAssoIpAddr OBJECT-TYPE
     SYNTAX       IpAddress
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "The assigned IP addresses that a virtual router is
         responsible for backing up."
     ::= { vrrpAssoIpAddrEntry 1 }

 vrrpAssoIpAddrRowStatus OBJECT-TYPE
     SYNTAX       RowStatus
     MAX-ACCESS   read-create
     STATUS       current
     DESCRIPTION
         "The row status variable, used according to installation
         and removal conventions for conceptual rows. Setting this
         object to active(1) or createAndGo(4) results in the
         addition of an associated address for a virtual router.
         Destroying the entry or setting it to notInService(2)
         removes the associated address from the virtual router.
         The use of other values is implementation-dependent."
     ::= { vrrpAssoIpAddrEntry 2 }

VRRP Router Statistics ๐Ÿ“Šโœจ

Next up are the router-level counters, and bestie, these are the receipts ๐Ÿงพ every error the router spots gets its own tally, so you can see exactly what's going on.

-- *******************************************************************
--  VRRP Router Statistics
-- *******************************************************************

 vrrpRouterChecksumErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received with an invalid
         VRRP checksum value."
     ::= { vrrpStatistics 1 }

 vrrpRouterVersionErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received with an unknown
         or unsupported version number."
     ::= { vrrpStatistics 2 }

 vrrpRouterVrIdErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received with an invalid
         VRID for this virtual router."
     ::= { vrrpStatistics 3 }

VRRP Router Statistics Table ๐ŸŒธ

This is the per-router stats table, and it's literally a whole glow-up of counters, each one tracking a different kind of packet drama ๐Ÿ’€

-- *******************************************************************
--  VRRP Router Statistics Table
-- *******************************************************************

 vrrpRouterStatsTable OBJECT-TYPE
     SYNTAX       SEQUENCE OF VrrpRouterStatsEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "Table of virtual router statistics."
     ::= { vrrpStatistics 4 }

 vrrpRouterStatsEntry OBJECT-TYPE
     SYNTAX       VrrpRouterStatsEntry
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "An entry in the table, containing statistics information
         about a given virtual router."
     AUGMENTS    { vrrpOperEntry }
     ::= { vrrpRouterStatsTable 1 }

 VrrpRouterStatsEntry ::=
     SEQUENCE {
         vrrpStatsBecomeMaster
             Counter32,
         vrrpStatsAdvertiseRcvd
             Counter32,
         vrrpStatsAdvertiseIntervalErrors
             Counter32,
         vrrpStatsAuthFailures
             Counter32,
         vrrpStatsIpTtlErrors
             Counter32,
         vrrpStatsPriorityZeroPktsRcvd
             Counter32,
         vrrpStatsPriorityZeroPktsSent
             Counter32,
         vrrpStatsInvalidTypePktsRcvd
             Counter32,
         vrrpStatsAddressListErrors
             Counter32,
         vrrpStatsInvalidAuthType

             Counter32,
         vrrpStatsAuthTypeMismatch
             Counter32,
         vrrpStatsPacketLengthErrors
             Counter32
     }

 vrrpStatsBecomeMaster OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of times that this virtual router's state
         has transitioned to MASTER."
     ::= { vrrpRouterStatsEntry 1 }

 vrrpStatsAdvertiseRcvd OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP advertisements received by this
         virtual router."
     ::= { vrrpRouterStatsEntry 2 }

 vrrpStatsAdvertiseIntervalErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP advertisement packets received
         for which the advertisement interval is different than the
         one configured for the local virtual router."
     ::= { vrrpRouterStatsEntry 3 }

 vrrpStatsAuthFailures OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received that do not pass
         the authentication check."
     ::= { vrrpRouterStatsEntry 4 }

 vrrpStatsIpTtlErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received by the virtual
         router with IP TTL (Time-To-Live) not equal to 255."
     ::= { vrrpRouterStatsEntry 5 }

 vrrpStatsPriorityZeroPktsRcvd OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets received by the virtual
         router with a priority of '0'."
     ::= { vrrpRouterStatsEntry 6 }

 vrrpStatsPriorityZeroPktsSent OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of VRRP packets sent by the virtual router
         with a priority of '0'."
     ::= { vrrpRouterStatsEntry 7 }

 vrrpStatsInvalidTypePktsRcvd OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The number of VRRP packets received by the virtual router
         with an invalid value in the 'type' field."
     ::= { vrrpRouterStatsEntry 8 }

 vrrpStatsAddressListErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of packets received for which the address
         list does not match the locally configured list for the
         virtual router."
     ::= { vrrpRouterStatsEntry 9 }

 vrrpStatsInvalidAuthType OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of packets received with an unknown
         authentication type."
     ::= { vrrpRouterStatsEntry 10 }

 vrrpStatsAuthTypeMismatch OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of packets received with 'Auth Type' not
         equal to the locally configured authentication method
         (`vrrpOperAuthType')."
     ::= { vrrpRouterStatsEntry 11 }

 vrrpStatsPacketLengthErrors OBJECT-TYPE
     SYNTAX       Counter32
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The total number of packets received with a packet length
         less than the length of the VRRP header."
     ::= { vrrpRouterStatsEntry 12 }

Trap Definitions ๐Ÿ””

Okay this is the alarm bell section ๐Ÿšจ It's where the router calls out to the manager when something important happens, like becoming MASTER or spotting an auth failure. The auth one is the drama queen of the bunch ๐Ÿ™ˆ

-- *******************************************************************
--   Trap Definitions
-- *******************************************************************

 vrrpNotifications   OBJECT IDENTIFIER ::= { vrrpMIB 0 }

 vrrpTrapPacketSrc OBJECT-TYPE
     SYNTAX       IpAddress
     MAX-ACCESS   accessible-for-notify
     STATUS       current
     DESCRIPTION
         "The IP address of an inbound VRRP packet. Used by
          vrrpTrapAuthFailure trap."
     ::= { vrrpOperations 5 }

 vrrpTrapAuthErrorType OBJECT-TYPE
     SYNTAX        INTEGER {
         invalidAuthType (1),
         authTypeMismatch (2),
         authFailure (3)
     }
     MAX-ACCESS   accessible-for-notify
     STATUS       current
     DESCRIPTION
         "Potential types of configuration conflicts.
         Used by vrrpAuthFailure trap."

     ::= { vrrpOperations 6 }

 vrrpTrapNewMaster NOTIFICATION-TYPE
     OBJECTS      { vrrpOperMasterIpAddr
                  }
     STATUS       current
     DESCRIPTION
         "The newMaster trap indicates that the sending agent
         has transitioned to 'Master' state."
     ::= { vrrpNotifications 1 }

 vrrpTrapAuthFailure NOTIFICATION-TYPE
     OBJECTS      { vrrpTrapPacketSrc,
                    vrrpTrapAuthErrorType
                  }
     STATUS       current
     DESCRIPTION
         "A vrrpAuthFailure trap signifies that a packet has
         been received from a router whose authentication key
         or authentication type conflicts with this router's
         authentication key or authentication type. Implementation
         of this trap is optional."
     ::= { vrrpNotifications 2 }

Conformance Information ๐ŸŽ€

Last stop for this part: the conformance bit, where the MIB explains which pieces a compliant implementation has to include ๐Ÿ’… (the dotted banners are just the little dividers inside it).

-- *******************************************************************
--  Conformance Information
-- *******************************************************************

 vrrpMIBCompliances  OBJECT IDENTIFIER ::= { vrrpConformance 1 }
 vrrpMIBGroups       OBJECT IDENTIFIER ::= { vrrpConformance 2 }

-- ...................................................................
-- Compliance Statements
-- ...................................................................

 vrrpMIBCompliance MODULE-COMPLIANCE
     STATUS current
     DESCRIPTION
        "The core compliance statement for all VRRP implementations."
     MODULE -- this module
     MANDATORY-GROUPS  {
         vrrpOperGroup,
         vrrpStatsGroup
     }
     OBJECT        vrrpOperPriority
     WRITE-SYNTAX  Integer32 (1..255)
     DESCRIPTION  "SETable values are from 1 to 255."
     ::= { vrrpMIBCompliances 1 }

-- ...................................................................
-- Conformance Groups
-- ...................................................................

 vrrpOperGroup  OBJECT-GROUP
     OBJECTS  {
         vrrpNodeVersion,
         vrrpNotificationCntl,
         vrrpOperVirtualMacAddr,
         vrrpOperState,
         vrrpOperAdminState,
         vrrpOperPriority,
         vrrpOperIpAddrCount,
         vrrpOperMasterIpAddr,
         vrrpOperPrimaryIpAddr,
         vrrpOperAuthType,
         vrrpOperAuthKey,
         vrrpOperAdvertisementInterval,
         vrrpOperPreemptMode,
         vrrpOperVirtualRouterUpTime,
         vrrpOperProtocol,
         vrrpOperRowStatus,
         vrrpAssoIpAddrRowStatus
         }
     STATUS current
     DESCRIPTION
        "Conformance group for VRRP operations."
     ::= { vrrpMIBGroups 1 }

 vrrpStatsGroup  OBJECT-GROUP
     OBJECTS  {
         vrrpRouterChecksumErrors,
         vrrpRouterVersionErrors,
         vrrpRouterVrIdErrors,
         vrrpStatsBecomeMaster,
         vrrpStatsAdvertiseRcvd,
         vrrpStatsAdvertiseIntervalErrors,
         vrrpStatsAuthFailures,
         vrrpStatsIpTtlErrors,
         vrrpStatsPriorityZeroPktsRcvd,
         vrrpStatsPriorityZeroPktsSent,
         vrrpStatsInvalidTypePktsRcvd,
         vrrpStatsAddressListErrors,
         vrrpStatsInvalidAuthType,
         vrrpStatsAuthTypeMismatch,
         vrrpStatsPacketLengthErrors
         }
     STATUS current
     DESCRIPTION
        "Conformance group for VRRP statistics."
     ::= { vrrpMIBGroups 2 }

 vrrpTrapGroup  OBJECT-GROUP
     OBJECTS  {
         vrrpTrapPacketSrc,
         vrrpTrapAuthErrorType
         }
     STATUS current
     DESCRIPTION
        "Conformance group for objects contained in VRRP notifications."
     ::= { vrrpMIBGroups 3 }

 vrrpNotificationGroup NOTIFICATION-GROUP
     NOTIFICATIONS {
         vrrpTrapNewMaster,
         vrrpTrapAuthFailure
         }
     STATUS current
     DESCRIPTION
        "The VRRP MIB Notification Group."
     ::= { vrrpMIBGroups 4 }

END

4. Security Considerations ๐Ÿ’€

okay bestie, this part is serious ๐Ÿ’… a bunch of management objects in this MIB have a MAX-ACCESS clause of read-write or read-create. Those objects can be sensitive or vulnerable to security attacks in some networking environments, and doing SET operations in a non-secure environment without proper protection can seriously mess with VRRP router operations ๐Ÿ˜ญ

A number of objects in the vrrpOperTable are read-create, and messing with them can affect how a virtual router operates ๐Ÿซถ

Specific examples (not an exhaustive list, periodt):

  • The vrrpOperAdminState object, which could be used to disable a virtual router.
  • The vrrpOperPrimaryIpAddr object which, if compromised, could allow assignment of an invalid IP address to a master router.
  • The authentication type/key related objects, which could potentially render the VRRP security mechanisms ineffective.

Also lowkey scary: disabling the transmission of traps would nullify the capability of a virtual router to provide notification in the event of an authentication failure ๐Ÿ™ˆ

SNMPv1 by itself is not a secure environment. Even if the network itself is secure (for example by using IPSec), there is still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB ๐Ÿ’€

It is recommended that implementers consider the security features provided by the SNMPv3 framework. Specifically, the User-based Security Model RFC 2574 [RFC2574] and the View-based Access Control Model RFC 2575 [RFC2575] are recommended ๐Ÿ”ฅ

It is then a customer/user responsibility to make sure that the SNMP entity giving access to an instance of this MIB is properly configured. Access should be given to the objects only to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them ๐ŸŽ€

5. Acknowledgements โœจ

The authors would like to thank Danny Mitzel, Venkat Prasad, Al Pham, Robert Hinden, Venkat Prasad, Barbera Denny, Fred Baker, Jeff Case, Flavio Fernandes, Acee Lindem, Scott Barvick, and Bert Wijnen for their comments and suggestions ๐Ÿซถ๐Ÿ’–

6. References ๐Ÿ“š

[1] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for Describing SNMP Management Frameworks", RFC 2571, April 1999.

[2] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990.

[3] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991.

[4] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991.

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

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

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

[8] Case, J., Fedor, M., Schoffstall, M. and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990.

[9] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996.

[10] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996.

[11] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2572, April 1999.

[12] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2574, April 1999.

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

[14] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC 2573, April 1999.

[15] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2575, April 1999

[16] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction to Version 3 of the Internet-standard Network Management Framework", RFC 2570, April 1999

[17] Knight, S., Weaver, D., Whipple, D., Hinden, R., Mitzel, D., Hunt, P., Higginson, P., Shand, M. and Lindem, A., "Virtual Router Redundancy Protocol", RFC 2338, November 1997.

[18] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB using SMIv2", RFC 2233, November 1997.

7. Authors' Addresses ๐ŸŒธ

Brian R. Jewell
Copper Mountain Networks, Inc.
2470 Embarcadero Way
Palo Alto, California 94303
US

Phone: +1 650 687 3367
EMail: bjewell@coppermountain.com


David Chuang
CoSine Communications
1200 Bridge Parkway
Redwood City, CA 94065
US

Phone: +1 650 628 4850
EMail: david_chuang@cosinecom.com

8. Intellectual Property Statement ๐Ÿฆ‹

okay so the IETF takes no position on whether any intellectual property or other rights that might be claimed to cover the technology in this document are valid or in scope, or whether any license under those rights would be available. It also doesn't claim it has searched for any such rights. You can find info on the IETF's procedures for rights in standards-track and standards-related documents in BCP-11. Copies of claimed rights that were made available for publication, plus any assurances of licenses, or the result of an attempt to get a general license or permission for implementers or users, can be obtained from the IETF Secretariat ๐Ÿงš

The IETF invites anyone interested to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology required to practice this standard. Send that info to the IETF Executive Director ๐Ÿ’…

Copyright (C) The Internet Society (2000). All Rights Reserved. ๐Ÿซถ

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards (in which case the procedures for copyrights defined in the Internet Standards process must be followed), or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. โœจ

Acknowledgement ๐Ÿ“

Funding for the RFC Editor function is currently provided by the Internet Society. thank you internet society, you're iconic ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from