Internet DRAFT - draft-ietf-idmr-thaler-dvmrp-mib

draft-ietf-idmr-thaler-dvmrp-mib



IDMR Working Group                                        Dave Thaler
INTERNET-DRAFT                                              Microsoft
Expires February 2000                                  30 August 1999

             Distance-Vector Multicast Routing Protocol MIB
                    <draft-thaler-dvmrp-mib-11.txt>

Status of this Memo

This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC2026.

Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups.  Note that other groups
may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time.  It is inappropriate to use Internet- Drafts as reference material
or to cite them other than as "work in progress."

The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt

The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.

Copyright Notice

Copyright (C) The Internet Society (1999).  All Rights Reserved.

1.  Abstract

This memo defines a portion of the Management Information Base (MIB) for
use with network management protocols in the Internet community.  In
particular, it describes managed objects used for managing the
Distance-Vector Multicast Routing Protocol (DVMRP).

Expires February 2000                                           [Page 1]

Draft                          DVMRP MIB                     August 1999

2.  Introduction

This memo defines a portion of the Management Information Base (MIB) for
use with network management protocols in the Internet community.  In
particular, it describes managed objects used for managing the
Distance-Vector Multicast Routing Protocol (DVMRP) protocol [16,17].
This MIB module is applicable to IP multicast routers which implement
DVMRP.

3.  The SNMP Network Management Framework

The SNMP Management Framework presently consists of five major
components:

o    An overall architecture, described in RFC 2271 [1].

o    Mechanisms for describing and naming objects and events for the
     purpose of management. The first version of this Structure of
     Management Information (SMI) is called SMIv1 and described in RFC
     1155 [2], RFC 1212 [3] and RFC 1215 [4]. The second version, called
     SMIv2, is described in RFC 2578 [5], RFC 2579 [6] and RFC 2580 [7].

o    Message protocols for transferring management information. The
     first version of the SNMP message protocol is called SNMPv1 and
     described in RFC 1157 [8]. A second version of the SNMP message
     protocol, which is not an Internet standards track protocol, is
     called SNMPv2c and described in RFC 1901 [9] and RFC 1906 [10].
     The third version of the message protocol is called SNMPv3 and
     described in RFC 1906 [10], RFC 2572 [11] and RFC 2574 [12].

o    Protocol operations for accessing management information. The first
     set of protocol operations and associated PDU formats is described
     in RFC 1157 [8]. A second set of protocol operations and associated
     PDU formats is described in RFC 1905 [13].

o    A set of fundamental applications described in RFC 2573 [14] and
     the view-based access control mechanism described in RFC 2575 [15].

Managed objects are accessed via a virtual information store, termed the
Management Information Base or MIB.  Objects in the MIB are defined
using the mechanisms defined in the SMI.

This memo specifies a MIB module that is compliant to the SMIv2. A MIB
conforming to the SMIv1 can be produced through the appropriate

Expires February 2000                                           [Page 2]

Draft                          DVMRP MIB                     August 1999

translations. The resulting translated MIB must be semantically
equivalent, except where objects or events are omitted because no
translation is possible (use of Counter64). Some machine readable
information in SMIv2 will be converted into textual descriptions in
SMIv1 during the translation process. However, this loss of machine
readable information is not considered to change the semantics of the
MIB.

3.1.  Object Definitions

Managed objects are accessed via a virtual information store, termed the
Management Information Base or MIB.  Objects in the MIB are defined
using the subset of Abstract Syntax Notation One (ASN.1) defined in the
SMI.  In particular, each object type is named by an OBJECT IDENTIFIER,
an administratively assigned name.  The object type together with an
object instance serves to uniquely identify a specific instantiation of
the object.  For human convenience, we often use a textual string,
termed the descriptor, to refer to the object type.

4.  Overview

4.1.  Structure of MIB

Managing DVMRP routers requires the following groups of information:

o    General statistics.

o    DVMRP configuration information common to all multicast-capable
     interfaces.

o    Information to store DVMRP neighbor information.

o    Information to store the DVMRP routing table.

o    Information related to DVMRP tree construction.

o    Information related to DVMRP security.

o    Traps used to alert a manager of critical DVMRP events.

Expires February 2000                                           [Page 3]

Draft                          DVMRP MIB                     August 1999

4.1.1.  General Description

This MIB controls all aspects of the DVMRP protocol.  It consists of six
groups of objects, and one group of notifications.  The object groups
are:

o    The dvmrpGeneralGroup is used to describe general configuration
     information.

o    The dvmrpInterfaceGroup is used to describe interface configuration
     and statistics, and augments the Multicast Routing Interface Table
     from the IP Multicast MIB [18].

o    The dvmrpNeighborGroup is used to describe peer configuration and
     statistics.

o    The dvmrpRoutingGroup is used to describe the DVMRP routing table.

o    The dvmrpTreeGroup is used to describe DVMRP tree construction
     state.

o    The dvmrpSecurityGroup is used to manage keys for securing DVMRP.

4.2.  Relationship to the IP Tunnel MIB

"DVMRP tunnels" (IP-in-IP tunnels which are commonly used with DVMRP)
are not managed via this MIB.  Instead, the IP Tunnel MIB [19] is used
for this purpose.

5.  Definitions

DVMRP-STD-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, mib-2,
    Integer32, Counter32, Gauge32, NOTIFICATION-TYPE,
    IpAddress, TimeTicks, BITS       FROM SNMPv2-SMI
    DisplayString, RowStatus         FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP               FROM SNMPv2-CONF
    SnmpAdminString                  FROM SNMP-FRAMEWORK-MIB
    InterfaceIndexOrZero,
    InterfaceIndex                   FROM IF-MIB;

Expires February 2000                                           [Page 4]

Draft                          DVMRP MIB                     August 1999

dvmrpStdMIB MODULE-IDENTITY
    LAST-UPDATED "9908301200Z" -- August 30, 1999
    ORGANIZATION "IETF IDMR Working Group."
    CONTACT-INFO
            " Dave Thaler
              Microsoft
              One Microsoft Way
              Redmond, WA 98052-6399
              EMail: dthaler@microsoft.com"
    DESCRIPTION
            "The MIB module for management of DVMRP routers."
    REVISION     "9908301200Z" -- August 30, 1999
    DESCRIPTION
            "Initial version, published as RFC xxxx (to be filled in by
            RFC-Editor)."
    ::= { mib-2 xx }
    -- NOTE TO RFC EDITOR: When this document is published as an
    -- RFC, replace xx with IANA assignment, and delete this comment.

dvmrpMIBObjects OBJECT IDENTIFIER ::= { dvmrpStdMIB 1 }

dvmrp           OBJECT IDENTIFIER ::= { dvmrpMIBObjects 1 }

dvmrpScalar     OBJECT IDENTIFIER ::= { dvmrp 1 }

dvmrpVersionString OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The router's DVMRP version information.  Similar to
            sysDescr in MIB-II, this is a free-form field which can be
            used to display vendor-specific information."
    ::= { dvmrpScalar 1 }

dvmrpGenerationId OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The generation identifier for the routing process.  This is
            used by neighboring routers to detect whether the DVMRP
            routing table should be resent."
    ::= { dvmrpScalar 2 }

Expires February 2000                                           [Page 5]

Draft                          DVMRP MIB                     August 1999

dvmrpNumRoutes OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of entries in the routing table.  This can be
            used to monitor the routing table size to detect illegal
            advertisements of unicast routes."
    ::= { dvmrpScalar 3 }

dvmrpReachableRoutes OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of entries in the routing table with non
            infinite metrics.  This can be used to detect network
            partitions by observing the ratio of reachable routes to
            total routes."
    ::= { dvmrpScalar 4 }

-- The DVMRP Interface Table

dvmrpInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's multicast-
            capable interfaces."
    ::= { dvmrp 2 }

dvmrpInterfaceEntry OBJECT-TYPE
    SYNTAX     DvmrpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpInterfaceTable.  This
            row augments ipMRouteInterfaceEntry in the IP Multicast MIB,
            where the threshold object resides."
    INDEX      { dvmrpInterfaceIfIndex }
    ::= { dvmrpInterfaceTable 1 }

DvmrpInterfaceEntry ::= SEQUENCE {

Expires February 2000                                           [Page 6]

Draft                          DVMRP MIB                     August 1999

    dvmrpInterfaceIfIndex               InterfaceIndex,
    dvmrpInterfaceLocalAddress          IpAddress,
    dvmrpInterfaceMetric                Integer32,
    dvmrpInterfaceStatus                RowStatus,
    dvmrpInterfaceRcvBadPkts            Counter32,
    dvmrpInterfaceRcvBadRoutes          Counter32,
    dvmrpInterfaceSentRoutes            Counter32,
    dvmrpInterfaceInterfaceKey          SnmpAdminString,
    dvmrpInterfaceInterfaceKeyVersion   Integer32
}

dvmrpInterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex value of the interface for which DVMRP is
            enabled."
    ::= { dvmrpInterfaceEntry 1 }

dvmrpInterfaceLocalAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The IP address this system will use as a source address on
            this interface.  On unnumbered interfaces, it must be the
            same value as dvmrpInterfaceLocalAddress for some interface
            on the system."
    ::= { dvmrpInterfaceEntry 2 }

dvmrpInterfaceMetric OBJECT-TYPE
    SYNTAX     Integer32 (1..31)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The distance metric for this interface which is used to
            calculate distance vectors."
    DEFVAL     { 1 }
    ::= { dvmrpInterfaceEntry 3 }

dvmrpInterfaceStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current

Expires February 2000                                           [Page 7]

Draft                          DVMRP MIB                     August 1999

    DESCRIPTION
            "The status of this entry.  Creating the entry enables DVMRP
            on the virtual interface; destroying the entry or setting it
            to notInService disables DVMRP on the virtual interface."
    ::= { dvmrpInterfaceEntry 4 }

dvmrpInterfaceRcvBadPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of DVMRP messages received on the interface by
            the DVMRP process which were subsequently discarded as
            invalid (e.g. invalid packet format, or a route report from
            an unknown neighbor)."
    ::= { dvmrpInterfaceEntry 5 }

dvmrpInterfaceRcvBadRoutes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of routes, in valid DVMRP packets, which were
            ignored because the entry was invalid."
    ::= { dvmrpInterfaceEntry 6 }

dvmrpInterfaceSentRoutes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of routes, in DVMRP Report packets, which have
            been sent on this interface.  Together with
            dvmrpNeighborRcvRoutes at a peer, this object is useful for
            detecting routes being lost."
    ::= { dvmrpInterfaceEntry 7 }

dvmrpInterfaceInterfaceKey OBJECT-TYPE
    SYNTAX     SnmpAdminString
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The (shared) key for authenticating neighbors on this
            interface.  This object is intended solely for the purpose
            of setting the interface key, and MUST be accessible only

Expires February 2000                                           [Page 8]

Draft                          DVMRP MIB                     August 1999

            via requests using both authentication and privacy.  The
            agent MAY report an empty string in response to get, get-
            next, get-bulk requests."
    ::= { dvmrpInterfaceEntry 8 }

dvmrpInterfaceInterfaceKeyVersion OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The highest version number of all known interface keys for
            this interface used for authenticating neighbors."
    ::= { dvmrpInterfaceEntry 9 }

-- The DVMRP Neighbor Table

dvmrpNeighborTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's DVMRP
            neighbors, as discovered by receiving DVMRP messages."
    ::= { dvmrp 3 }

dvmrpNeighborEntry OBJECT-TYPE
    SYNTAX     DvmrpNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpNeighborTable."
    INDEX      { dvmrpNeighborIfIndex, dvmrpNeighborAddress }
    ::= { dvmrpNeighborTable 1 }

DvmrpNeighborEntry ::= SEQUENCE {
    dvmrpNeighborIfIndex         InterfaceIndex,
    dvmrpNeighborAddress         IpAddress,
    dvmrpNeighborUpTime          TimeTicks,
    dvmrpNeighborExpiryTime      TimeTicks,
    dvmrpNeighborGenerationId    Integer32,
    dvmrpNeighborMajorVersion    Integer32,
    dvmrpNeighborMinorVersion    Integer32,
    dvmrpNeighborCapabilities    BITS,
    dvmrpNeighborRcvRoutes       Counter32,
    dvmrpNeighborRcvBadPkts      Counter32,

Expires February 2000                                           [Page 9]

Draft                          DVMRP MIB                     August 1999

    dvmrpNeighborRcvBadRoutes    Counter32,
    dvmrpNeighborState           INTEGER
}

dvmrpNeighborIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the virtual interface used to
            reach this DVMRP neighbor."
    ::= { dvmrpNeighborEntry 1 }

dvmrpNeighborAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP address of the DVMRP neighbor for which this entry
            contains information."
    ::= { dvmrpNeighborEntry 2 }

dvmrpNeighborUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this DVMRP neighbor (last) became a neighbor
            of the local router."
    ::= { dvmrpNeighborEntry 3 }

dvmrpNeighborExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before this DVMRP neighbor will
            be aged out."
    ::= { dvmrpNeighborEntry 4 }

dvmrpNeighborGenerationId OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION

Expires February 2000                                          [Page 10]

Draft                          DVMRP MIB                     August 1999

            "The neighboring router's generation identifier."
    ::= { dvmrpNeighborEntry 5 }

dvmrpNeighborMajorVersion OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The neighboring router's major DVMRP version number."
    ::= { dvmrpNeighborEntry 6 }

dvmrpNeighborMinorVersion OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The neighboring router's minor DVMRP version number."
    ::= { dvmrpNeighborEntry 7 }

dvmrpNeighborCapabilities OBJECT-TYPE
    SYNTAX     BITS {
                   leaf(0),
                   prune(1),
                   generationID(2),
                   mtrace(3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "This object describes the neighboring router's
            capabilities.  The leaf bit indicates that the neighbor has
            only one interface with neighbors.  The prune bit indicates
            that the neighbor supports pruning.  The generationID bit
            indicates that the neighbor sends its generationID in Probe
            messages.  The mtrace bit indicates that the neighbor can
            handle mtrace requests."
    ::= { dvmrpNeighborEntry 8 }

dvmrpNeighborRcvRoutes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of routes received in valid DVMRP packets
            received from this neighbor.  This can be used to diagnose

Expires February 2000                                          [Page 11]

Draft                          DVMRP MIB                     August 1999

            problems such as unicast route injection, as well as giving
            an indication of the level of DVMRP route exchange
            activity."
    ::= { dvmrpNeighborEntry 9 }

dvmrpNeighborRcvBadPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of packet received from this neighbor which were
            discarded as invalid."
    ::= { dvmrpNeighborEntry 10 }

dvmrpNeighborRcvBadRoutes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of routes, in valid DVMRP packets received from
            this neighbor, which were ignored because the entry was
            invalid."
    ::= { dvmrpNeighborEntry 11 }

dvmrpNeighborState OBJECT-TYPE
    SYNTAX     INTEGER { oneway(1), active(2), ignoring(3), down(4) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "State of the neighbor adjacency."
    ::= { dvmrpNeighborEntry 12 }

-- The DVMRP Route Table

dvmrpRouteTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpRouteEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The table of routes learned through DVMRP route exchange."
    ::= { dvmrp 4 }

dvmrpRouteEntry OBJECT-TYPE
    SYNTAX     DvmrpRouteEntry

Expires February 2000                                          [Page 12]

Draft                          DVMRP MIB                     August 1999

    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) containing the multicast routing
            information used by DVMRP in place of the unicast routing
            information."
    INDEX      { dvmrpRouteSource, dvmrpRouteSourceMask }
    ::= { dvmrpRouteTable 1 }

DvmrpRouteEntry ::= SEQUENCE {
    dvmrpRouteSource             IpAddress,
    dvmrpRouteSourceMask         IpAddress,
    dvmrpRouteUpstreamNeighbor   IpAddress,
    dvmrpRouteIfIndex            InterfaceIndexOrZero,
    dvmrpRouteMetric             Integer32,
    dvmrpRouteExpiryTime         TimeTicks,
    dvmrpRouteUpTime             TimeTicks
}

dvmrpRouteSource OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network address which when combined with the
            corresponding value of dvmrpRouteSourceMask identifies the
            sources for which this entry contains multicast routing
            information."
    ::= { dvmrpRouteEntry 1 }

dvmrpRouteSourceMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network mask which when combined with the corresponding
            value of dvmrpRouteSource identifies the sources for which
            this entry contains multicast routing information."
    ::= { dvmrpRouteEntry 2 }

dvmrpRouteUpstreamNeighbor OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION

Expires February 2000                                          [Page 13]

Draft                          DVMRP MIB                     August 1999

            "The address of the upstream neighbor (e.g., RPF neighbor)
            from which IP datagrams from these sources are received."
    ::= { dvmrpRouteEntry 3 }

dvmrpRouteIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the interface on which IP
            datagrams sent by these sources are received.  A value of 0
            typically means the route is an aggregate for which no
            next-hop interface exists."
    ::= { dvmrpRouteEntry 4 }

dvmrpRouteMetric OBJECT-TYPE
    SYNTAX     Integer32 (1..32)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The distance in hops to the source subnet."
    ::= { dvmrpRouteEntry 5 }

dvmrpRouteExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum amount of time remaining before this entry will
            be aged out."
    ::= { dvmrpRouteEntry 6 }

dvmrpRouteUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since the route represented by this entry was
            learned by the router."
    ::= { dvmrpRouteEntry 7 }

-- The DVMRP Routing Next Hop Table

dvmrpRouteNextHopTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpRouteNextHopEntry

Expires February 2000                                          [Page 14]

Draft                          DVMRP MIB                     August 1999

    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing information on the next
            hops on outgoing interfaces for routing IP multicast
            datagrams."
    ::= { dvmrp 5 }

dvmrpRouteNextHopEntry OBJECT-TYPE
    SYNTAX     DvmrpRouteNextHopEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the list of next hops on
            outgoing interfaces to which IP multicast datagrams from
            particular sources are routed."
    INDEX      { dvmrpRouteNextHopSource, dvmrpRouteNextHopSourceMask,
                 dvmrpRouteNextHopIfIndex }
    ::= { dvmrpRouteNextHopTable 1 }

DvmrpRouteNextHopEntry ::= SEQUENCE {
    dvmrpRouteNextHopSource             IpAddress,
    dvmrpRouteNextHopSourceMask         IpAddress,
    dvmrpRouteNextHopIfIndex            InterfaceIndex,
    dvmrpRouteNextHopType               INTEGER
}

dvmrpRouteNextHopSource OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network address which when combined with the
            corresponding value of dvmrpRouteNextHopSourceMask
            identifies the sources for which this entry specifies a next
            hop on an outgoing interface."
    ::= { dvmrpRouteNextHopEntry 1 }

dvmrpRouteNextHopSourceMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network mask which when combined with the corresponding
            value of dvmrpRouteNextHopSource identifies the sources for

Expires February 2000                                          [Page 15]

Draft                          DVMRP MIB                     August 1999

            which this entry specifies a next hop on an outgoing
            interface."
    ::= { dvmrpRouteNextHopEntry 2 }

dvmrpRouteNextHopIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex value of the interface for the outgoing
            interface for this next hop."
    ::= { dvmrpRouteNextHopEntry 3 }

dvmrpRouteNextHopType OBJECT-TYPE
    SYNTAX     INTEGER { leaf(1), branch(2) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Type is leaf if no downstream dependent neighbors exist on
            the outgoing virtual interface.  Otherwise, type is branch."
    ::= { dvmrpRouteNextHopEntry 4 }

-- The DVMRP Prune Table

dvmrpPruneTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpPruneEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's upstream prune
            state."
    ::= { dvmrp 6 }

dvmrpPruneEntry OBJECT-TYPE
    SYNTAX     DvmrpPruneEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpPruneTable."
    INDEX      { dvmrpPruneGroup, dvmrpPruneSource,
                 dvmrpPruneSourceMask }
    ::= { dvmrpPruneTable 1 }

DvmrpPruneEntry ::= SEQUENCE {
    dvmrpPruneGroup              IpAddress,

Expires February 2000                                          [Page 16]

Draft                          DVMRP MIB                     August 1999

    dvmrpPruneSource             IpAddress,
    dvmrpPruneSourceMask         IpAddress,
    dvmrpPruneExpiryTime         TimeTicks
}

dvmrpPruneGroup OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The group address which has been pruned."
    ::= { dvmrpPruneEntry 1 }

dvmrpPruneSource OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address of the source or source network which has been
            pruned."
    ::= { dvmrpPruneEntry 2 }

dvmrpPruneSourceMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address of the source or source network which has been
            pruned.  The mask must either be all 1's, or else
            dvmrpPruneSource and dvmrpPruneSourceMask must match
            dvmrpRouteSource and dvmrpRouteSourceMask for some entry in
            the dvmrpRouteTable."
    ::= { dvmrpPruneEntry 3 }

dvmrpPruneExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The amount of time remaining before this prune should
            expire at the upstream neighbor.  This value should be the
            minimum of the default prune lifetime and the remaining
            prune lifetimes of the local router's downstream neighbors,
            if any."
    ::= { dvmrpPruneEntry 4 }

Expires February 2000                                          [Page 17]

Draft                          DVMRP MIB                     August 1999

-- DVMRP Traps

dvmrpTraps      OBJECT IDENTIFIER ::= { dvmrp 7 }

dvmrpNeighborLoss NOTIFICATION-TYPE
    OBJECTS {
       dvmrpInterfaceLocalAddress, -- The originator of the trap
       dvmrpNeighborState  -- The new state
    }
    STATUS             current
    DESCRIPTION
            "A dvmrpNeighborLoss trap signifies the loss of a 2-way
            adjacency with a neighbor.  This trap should be generated
            when the neighbor state changes from active to one-way,
            ignoring, or down.  The trap should be generated only if the
            router has no other neighbors on the same interface with a
            lower IP address than itself."
    ::= { dvmrpTraps 1 }

dvmrpNeighborNotPruning NOTIFICATION-TYPE
    OBJECTS {
       dvmrpInterfaceLocalAddress, -- The originator of the trap
       dvmrpNeighborCapabilities
    }
    STATUS             current
    DESCRIPTION
            "A dvmrpNeighborNotPruning trap signifies that a non-pruning
            neighbor has been detected (in an implementation-dependent
            manner).  This trap should be generated at most once per
            generation ID of the neighbor.  For example, it should be
            generated at the time a neighbor is first heard from if the
            prune bit is not set in its capabilities.  It should also be
            generated if the local system has the ability to tell that a
            neighbor which sets the the prune bit in its capabilities is
            not pruning any branches over an extended period of time.
            The trap should be generated only if the router has no other
            neighbors on the same interface with a lower IP address than
            itself."
    ::= { dvmrpTraps 2 }

-- conformance information

dvmrpMIBConformance OBJECT IDENTIFIER ::= { dvmrpStdMIB 2 }

Expires February 2000                                          [Page 18]

Draft                          DVMRP MIB                     August 1999

dvmrpMIBCompliances OBJECT IDENTIFIER ::= { dvmrpMIBConformance 1 }

dvmrpMIBGroups      OBJECT IDENTIFIER ::= { dvmrpMIBConformance 2 }

-- compliance statements

dvmrpMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for the DVMRP MIB."
    MODULE  -- this module
        MANDATORY-GROUPS { dvmrpGeneralGroup, dvmrpInterfaceGroup,
            dvmrpNeighborGroup, dvmrpRoutingGroup, dvmrpTreeGroup
        }

        GROUP   dvmrpSecurityGroup
        DESCRIPTION
            "This group is mandatory for agents which support both
            authentication and privacy of SNMP messages, and only for
            those network interfaces for which DVMRP is authenticating
            neighbors."
    ::= { dvmrpMIBCompliances 1 }

-- units of conformance

dvmrpGeneralGroup OBJECT-GROUP
    OBJECTS { dvmrpVersionString, dvmrpGenerationId,
              dvmrpNumRoutes, dvmrpReachableRoutes
            }
    STATUS  current
    DESCRIPTION
            "A collection of objects used to describe general DVMRP
            configuration information."
    ::= { dvmrpMIBGroups 2 }

dvmrpInterfaceGroup OBJECT-GROUP
    OBJECTS { dvmrpInterfaceLocalAddress, dvmrpInterfaceMetric,
              dvmrpInterfaceStatus,
              dvmrpInterfaceRcvBadPkts, dvmrpInterfaceRcvBadRoutes,
              dvmrpInterfaceSentRoutes
            }
    STATUS  current
    DESCRIPTION

Expires February 2000                                          [Page 19]

Draft                          DVMRP MIB                     August 1999

            "A collection of objects used to describe DVMRP interface
            configuration and statistics."
    ::= { dvmrpMIBGroups 3 }

dvmrpNeighborGroup OBJECT-GROUP
    OBJECTS { dvmrpNeighborUpTime, dvmrpNeighborExpiryTime,
              dvmrpNeighborGenerationId,
              dvmrpNeighborMajorVersion, dvmrpNeighborMinorVersion,
              dvmrpNeighborCapabilities, dvmrpNeighborRcvRoutes,
              dvmrpNeighborRcvBadPkts, dvmrpNeighborRcvBadRoutes,
              dvmrpNeighborState
            }
    STATUS  current
    DESCRIPTION
            "A collection of objects used to describe DVMRP peer
            configuration and statistics."
    ::= { dvmrpMIBGroups 4 }

dvmrpRoutingGroup OBJECT-GROUP
    OBJECTS { dvmrpRouteUpstreamNeighbor, dvmrpRouteIfIndex,
              dvmrpRouteMetric, dvmrpRouteExpiryTime,
              dvmrpRouteUpTime, dvmrpRouteNextHopType
            }
    STATUS  current
    DESCRIPTION
            "A collection of objects used to store the DVMRP routing
            table."
    ::= { dvmrpMIBGroups 5 }

dvmrpSecurityGroup OBJECT-GROUP
    OBJECTS { dvmrpInterfaceInterfaceKey,
              dvmrpInterfaceInterfaceKeyVersion }
    STATUS  current
    DESCRIPTION
            "A collection of objects used to store information related
            to DVMRP security."
    ::= { dvmrpMIBGroups 6 }

dvmrpTreeGroup OBJECT-GROUP
    OBJECTS { dvmrpPruneExpiryTime }
    STATUS  current
    DESCRIPTION
            "A collection of objects used to store information related
            to DVMRP prune state."
    ::= { dvmrpMIBGroups 7 }

Expires February 2000                                          [Page 20]

Draft                          DVMRP MIB                     August 1999

dvmrpNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { dvmrpNeighborLoss,
                    dvmrpNeighborNotPruning }
    STATUS  current
    DESCRIPTION
            "A collection of notifications for signaling important DVMRP
            events."
    ::= { dvmrpMIBGroups 8 }

END

6.  Security Considerations

This MIB contains readable objects whose values provide information
related to multicast routing, including information on the network
topology.  There are also a number of objects that have a MAX-ACCESS
clause of read-write and/or read-create, which allow an administrator to
configure DVMRP in the router.

If the agent allows configuring keys via SNMP, for use by DVMRP, then
the security of DVMRP is at best only as secure as SNMP.  For this
reason, the security-related objects (i.e. those in the
dvmrpSecurityGroup) MUST NOT be accessible via unencrypted messages.  It
is also recommended that keys not be made visible through SNMP GET (or
GET-NEXT or GET-BULK) messages, even if encryption is used.

While unauthorized access to other readable objects is relatively
innocuous, unauthorized access to the write-able objects could cause a
denial of service.  Hence, the support for SET operations in a non-
secure environment without proper protection can have a negative effect
on network operations.

SNMPv1 by itself is such an insecure environment.  Even if the network
itself is secure (for example by using IPSec), even then, there is no
control as to who on the secure network is allowed to access and SET
(change/create/delete) the objects in this MIB.

It is recommended that the implementers consider the security features
as provided by the SNMPv3 framework.  Specifically, the use of the
User-based Security Model RFC 2274 [12] and the View-based Access
Control Model RFC 2275 [15] is recommended.

It is then a customer/user responsibility to ensure that the SNMP entity
giving access to this MIB, is properly configured to give access to

Expires February 2000                                          [Page 21]

Draft                          DVMRP MIB                     August 1999

those objects only to those principals (users) that have legitimate
rights to access them.

7.  Acknowledgements

David LeRoy, Tom Pusateri, and Bill Fenner provided valuable feedback on
this document.  Jeff Schiller also provided valuable feedback on the
security-related objects in this document.  The members of the IDMR WG
and the MBone community provided the motivation for this work.

8.  Author's Address

     Dave Thaler
     Microsoft
     One Microsoft Way
     Redmond, WA 98052-6399
     Phone: (425) 703-8835
     EMail: dthaler@microsoft.com

9.  References

[1]  Wijnen, B., Harrington, D., and R. Presuhn, "An Architecture for
     Describing SNMP Management Frameworks", RFC 2571, Cabletron
     Systems, Inc., BMC Software, Inc., IBM T. J. Watson Research, April
     1999.

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

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

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

[5]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.,
     and S. Waldbusser, "Structure of Management Information Version 2

Expires February 2000                                          [Page 22]

Draft                          DVMRP MIB                     August 1999

     (SMIv2)", RFC 2578, STD 58, Cisco Systems, SNMPinfo, TU
     Braunschweig, SNMP Research, First Virtual Holdings, International
     Network Services, April 1999.

[6]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.,
     and S. Waldbusser, "Textual Conventions for SMIv2", RFC 2579, STD
     58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research, First
     Virtual Holdings, International Network Services, April 1999.

[7]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.,
     and S. Waldbusser, "Conformance Statements for SMIv2", RFC 2580,
     STD 58, Cisco Systems, SNMPinfo, TU Braunschweig, SNMP Research,
     First Virtual Holdings, International Network Services, April 1999.

[8]  Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network
     Management Protocol", RFC 1157, STD 15, SNMP Research, Performance
     Systems International, Performance Systems International, MIT
     Laboratory for Computer Science, May 1990.

[9]  Case, J., McCloghrie, K., Rose, M., and S. Waldbusser,
     "Introduction to Community-based SNMPv2", RFC 1901, SNMP Research,
     Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
     International Network Services, 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, SNMP Research, Inc., Cisco Systems, Inc.,
     Dover Beach Consulting, Inc., International Network Services,
     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, SNMP Research, Inc., Cabletron Systems,
     Inc., BMC Software, Inc., IBM T. J. Watson Research, 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, IBM T. J. Watson Research, 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, SNMP Research, Inc., Cisco Systems, Inc.,
     Dover Beach Consulting, Inc., International Network Services,
     January 1996.

Expires February 2000                                          [Page 23]

Draft                          DVMRP MIB                     August 1999

[14] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications", RFC
     2573, SNMP Research, Inc., Secure Computing Corporation, Cisco
     Systems, 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, IBM T. J. Watson Research, BMC Software, Inc.,
     Cisco Systems, Inc., April 1999.

[16] Waitzman, D., Partridge, C., and S.E. Deering, "Distance Vector
     Multicast Routing Protocol", RFC 1075, November 1988.

[17] Pusateri, T., "Distance Vector Multicast Routing Protocol", Work in
     progress, February 1999.

[18] McCloghrie, K., Farinacci, D., and D. Thaler, "IP Multicast Routing
     MIB", Work in progress, May 1999.

[19] Thaler, D., "IP Tunnel MIB", RFC 2667, August 1999.

10.  Full Copyright Statement

Copyright (C) The Internet Society (1999).  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 implmentation 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

Expires February 2000                                          [Page 24]

Draft                          DVMRP MIB                     August 1999

INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
FITNESS FOR A PARTICULAR PURPOSE.

Expires February 2000                                          [Page 25]

Draft                          DVMRP MIB                     August 1999

Table of Contents

1 Abstract ........................................................    1
2 Introduction ....................................................    2
3 The SNMP Network Management Framework ...........................    2
3.1 Object Definitions ............................................    3
4 Overview ........................................................    3
4.1 Structure of MIB ..............................................    3
4.1.1 General Description .........................................    4
4.2 Relationship to the IP Tunnel MIB .............................    4
5 Definitions .....................................................    4
6 Security Considerations .........................................   21
7 Acknowledgements ................................................   22
8 Author's Address ................................................   22
9 References ......................................................   22
10 Full Copyright Statement .......................................   24

Expires February 2000                                          [Page 26]