Network Working Group                                      Z. Zhang, Ed.
Internet-Draft                                                   Juniper
Intended status: Standards Track                                 S. Asif
Expires: June 11, November 1, 2018                                           AT&T
                                                                A. Green
                                                                      BT
                                                           S. Gulranjani
                                                                   Cisco
                                                                 P. Jain
                                                          Alcatel-Lucent
                                                         H. Tsunoda, Ed.
                                          Tohoku Institute of Technology
                                                       December 08, 2017
                                                          April 30, 2018

       BGP/MPLS Layer 3 VPN Multicast Management Information Base
                      draft-ietf-bess-mvpn-mib-05
                      draft-ietf-bess-mvpn-mib-06

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 to configure and/or
   monitor MVPN, Multicast in MultiProtocol Label Switching/Border
   Gateway Protocol (MPLS/BGP) IP Virtual Private Networks (VPNs) on a
   Provider Edge router.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on June 11, November 1, 2018.

Copyright Notice

   Copyright (c) 2017 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  The Internet-Standard Management Framework  . . . . . . . . .   4
   3.  MCAST-VPN-MIB . . . . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Summary of MIB Module . . . . . . . . . . . . . . . . . .   4
     3.2.  MIB Module Definitions  . . . . . . . . . . . . . . . . .   7   6
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  36  62
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  37  63
   6.  Acknowledgement . . . . . . . . . . . . . . . . . . . . . . .  37  64
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  37  64
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  37  64
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  39  66
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39  66

1.  Introduction

   [RFC6513], [RFC6514], and [RFC6625] specify procedures for supporting
   multicast in Border Gateway Protocol/MultiProtocol Label Switching
   (BGP/MPLS) Layer 3 (IP) Virtual Private Network (VPN).  Throughout
   this document, we will use the term "Multicast VPN (MVPN)" [RFC6513]
   to refer to a BGP/MPLS IP VPN that supports multicast.

   Provider Edge routers (PEs) exchange the VPN customer multicast
   (C-multicast) routing information with each other.  In [RFC6513], two
   basic methods for exchanging C-multicast routing information are
   defined (1) Protocol Independent Multicast (PIM) [RFC7761] and (2)
   BGP.

   In the rest of this document we will use the term "PIM-MVPN" to refer
   to PIM being used for exchanging C-multicast routing information, and
   "BGP-MVPN" to refer to BGP being used for exchanging C-multicast
   routing information.

   This document describes managed objects to configure and/or monitor
   MVPN.  The managed objects are common to both PIM-MVPN and BGP-MVPN.

   Comments should be made directly to the BESS WG at bess@ietf.org.

1.1.  Terminology

   This document adopts the definitions, acronyms and mechanisms
   described in [RFC6513] and other documents that [RFC6513] refers to.
   Familiarity with Multicast, MPLS, Layer 3 (L3) VPN, MVPN concepts
   and/or mechanisms is assumed.  Some terms specifically related to
   this document are explained below.

   MVPN can be achieved by using various kinds of transport mechanisms
   for forwarding a packet to all or a subset of PEs across service
   provider networks.  Such transport mechanisms are referred to as
   provider tunnels (P-tunnels).

   "Provider Multicast Service Interface (PMSI)" [RFC6513] is a
   conceptual interface instantiated by a provider tunnel (P-tunnel), a
   transport mechanism used to deliver multicast traffic.  A PE uses to
   send customer multicast traffic to all or some PEs in the same VPN.

   There are two kinds of PMSI: "Inclusive PMSI (I-PMSI)" and "Selective
   PMSI (S-PMSI)" [RFC6513].  An I-PMSI is a PMSI that enables a PE
   attached to a particular MVPN to transmit a message to all PEs in the
   same VPN.  An S-PMSI is a PMSI that enables a PE attached to a
   particular MVPN to transmit a message to some of the PEs in the same
   VPN.

   As described in [RFC4382], each PE router maintains one default
   forwarding table and "VPN "Virtual Routing and Forwarding tables", or
   "VRFs".  Throughout this document, we will use the term "multicast
   VRF (MVRF)" to refer a VRF that is configured to contain the
   multicast routing information.

   Interchangeably, the term MVRF and MVPN are used to refer to a
   particular Multicast VPN instantiation on a particular PE.

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

2.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [RFC3410].

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

3.  MCAST-VPN-MIB

   This document defines MCAST-VPN-MIB, a MIB module for monitoring and/
   or configuring MVPNs on PEs.

3.1.  Summary of MIB Module

   The configuration and states specific to an MVPN include

   MCAST-VPN-MIB provides the following information elements: functionalities for monitoring
   and configuring MVPN.

   o  C-multicast routing information exchange protocol (PIM or BGP)  Monitoring attribute informations of MVRFs of MVPNs presented on a
      PE

   o  I-PMSI, S-PMSI  Configuring some timers related to a MVRF

   o  Notifying creation, deletion, and corresponding P-tunnels modification of MVRFs on a PE

   o  Mapping  Monitoring attribute informations of C-multicast PMSIs on a PE

   o  Monitoring advertisement exchanged by a PE

   o  Monitoring routing entries in an MVRF

   o  Monitoring information to PMSI tunnels on next-hops in an MVRF

   o  Notifying events that a PE joins or leaves a multicast group

   To represent provide these information elements, functionalities, MCAST-VPN-MIB defines eight nine tables: mvpnGeneralTable, mvpnBgpGeneralTable, mvpnSpmsiConfigTable,
   mvpnPmsiConfigTable, mvpnIpmsiTable, mvpnInterAsIpmsiTable,
   mvpnGenericTable, mvpnBgpGenericlTable, mvpnPmsiTable,
   mvpnSpmsiTable, mvpnMrouteTable.

   The following four tables represent the MVPN configurations on PEs.

   o  mvpnGeneralTable

   o  mvpnBgpGeneralTable

   o  mvpnSpmsiConfigTable

   o  mvpnPmsiConfigTable mvpnIpmsiAdvtTable, mvpnInterAsIpmsiAdvtTable,
   mvpnSpmsiAdvtTable, mvpnMrouteTable, and mvpnMrouteNextHopTable.

   The following diagram shows the relationship among those four two tables
   use for configuration.  Each box in the diagram represents a table,
   and the label contain information of each box corresponds to a table name.  An arrow
   indicates that one table has a pointer to a row in another table.
   The entry in mvpnGeneralTable and mvpnSpmsiConfigTable has MVRFs of MVPNs
   configured on a pointer
   to the row pertaining to the entry in the mvpnPmsiConfigTable.

        +--------------+
        | mvpnBgp      |
        | GeneralTable |
        +--------------+    +-------------------+    +-----------------+
        | mvpnGeneral  |    | mvpnPmsiConfig    |    | mvpnSpmsiConfig |
        | Table        | -> | Table             | <- | Table           |
        +--------------+    +-------------------+    +-----------------+ PE.

   o  mvpnGeneralTable  mvpnGenericTable

      This table represents MVPNs that are configured on specifies the generic information about MVRFs present
      in a PE.  Each entry in this table is created for each MVRF
      representing an instance of MVPN.  The entry represetns general configuration/
      states
      configuration/states of the MVRF, including Inclusive PMSI
      (I-PMSI) configuration.  The MVPN  An MVRF represented by the entry in this
      table must have the a corresponding VRF in MPLS-L3VPN-STD-MIB
      [RFC4382].

   o  mvpnBgpGeneralTable  mvpnBgpGenericTable

      This table augments specifies the aformentioned mvpnGeneralTable.  This
      table contains BGP-MVPN specific managed objects.

   o  mvpnSpmsiConfigTable

      This table contains managed objects necessary information of MVRFs of MVPNs
      that use BGP for configure
      Selective PMSI (S-PMSI) associated with exchanging C-Multicast routing information
      present in a PE.  Each MVRF of an MVPN that use BGP for exchanging
      C-Multicast routing information will have an entry in this table.
      The MVRF represented by this entry will have a corresponding entry
      in the mvpnGenericTable.

   The following two tables contain information of PMSIs configured on a
   PE.

   o  mvpnPmsiConfigTable  mvpnPmsiTable

      This table contains common managed objects common to representing attribute
      information of both I-PMSI and
      S-PMSI configurations. Selective PMSI (S-PMSI) configured
      on a PE.  Both I-PMSI configuration information (in the entry in
      mvpnGeneralTable) and S-PMSI configuration information (in the entry in
      mvpnSpmsiConfigTable) refer to an entry in this table.

   o  mvpnSpmsiTable

      This table contains managed objects representing attribute
      information that is specific for S-PMSI associated with an MVRF on
      a PE.

   The following four three tables are designed for monitoring MVPNs on PEs.

   o  mvpnIpmsiTable

   o  mvpnInterAsIpmsiTable

   o  mvpnSpmsiTable

   o  mvpnMrouteTable
   The following diagram shows the relationship among these four tables
   and the l2l3VpnMcastPmsiTunnelAttributeTable defined separately in
   L2L3-VPN-MCAST-MIB [I-D.ietf-bess-l2l3-vpn-mcast-mib].  The entry in
   every table has advertisements
   that is advertised/received by a pointer to the row pertaining to the entry in the
   l2l3VpnMcastPmsiTunnelAttributeTable.

        +--------------+    +-------------------+    +-----------------+
        |  mvpnIpmsi   | -> | l2L3VpnMcastPmsi  | <- |    mvpnSpmsi    |
        |  Table       |    | TunnelAttribute   |    |    Table        |
        +--------------+    | Table             |    +-----------------+
                         -> +-------------------+
                        /            ^
                       /             |
        +--------------+    +-------------------+
        | mvpnInterAs  |    |  mvpnMrouteTable  |
        | IpmsiTable   |    +-------------------+
        +--------------+ PE.

   o  mvpnIpmsiTable  mvpnIpmsiAdvtTable

      This table contains managed objects for monitoring all representing advertisements of
      Intra-AS I-PMSIs advertised and received advertised/received by a PE.  This table contains all
      advertised and received Intra-AS I-PMSIs.  With PIM-MVPN, it is
      applicable only when BGP-Based Autodiscovery of MVPN Membership is
      used.

   o  mvpnInterAsIpmsiTable  mvpnInterAsIpmsiAdvtTable
      This table contains all advertised and received Inter-AS I-PMSIs.
      With PIM-MVPN, it is applicable only when BGP-Based Autodiscovery managed objects representing advertisements of MVPN Membership is used.
      Inter-AS I-PMSIs advertised/received by a PE.

   o  mvpnSpmsiTable  mvpnSpmsiAdvtTable

      This table contains managed objects for monitoring all representing advertisements of
      S-PMSIs
      advertised and received advertised/received by a PE.

   The following two tables are designed for handling routing
   information that is advertised/received by a PE.

   o  mvpnMrouteTable

      This table augments
      ipMcastMIB.ipMcast.ipMcastRouteTable [RFC5132], for some MVPN
      specific information. contains multicast routing information in MVRFs present
      in a PE.

   o  l2l3VpnMcastPmsiTunnelAttributeTable

      An entry of this  mvpnMrouteNextHopTable

      The table corresponds to a PMSI Tunnel attribute and
      is maintained by a PE router that advertises and receives contains information on the
      attribute.  Th entry in this table is referred by entries next-hops on outgoing
      interfaces for routing IP multicast datagrams in
      mvpnIpmsiTable, mvpnInterAsIpmsiTable, mvpnSpmsiTable, and
      mvpnMrouteTable. MVPNs present on
      a PE.

3.2.  MIB Module Definitions

  MCAST-VPN-MIB DEFINITIONS ::= BEGIN

  IMPORTS
     MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
     Counter32, Counter64, Gauge32, Unsigned32, TimeTicks,
     zeroDotZero, mib-2
        FROM SNMPv2-SMI                         -- [RFC2578]

     MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF                        -- [RFC2580]

     TruthValue,

     RowPointer, RowStatus,  TimeStamp, TimeInterval
        FROM SNMPv2-TC                          -- [RFC2579]

     SnmpAdminString

     CounterBasedGauge64
        FROM SNMP-FRAMEWORK-MIB HCNUM-TC                           -- [RFC2571] [RFC2856]

     InterfaceIndex, InterfaceIndexOrZero
        FROM IF-MIB                             -- [RFC2863]

     InetAddress, InetAddressType, InetAddressPrefixLength,
     InetAutonomousSystemNumber
        FROM INET-ADDRESS-MIB                   -- [RFC2851]

     mplsL3VpnVrfName, MplsL3VpnRouteDistinguisher
        FROM MPLS-L3VPN-STD-MIB                 -- [RFC4382]

     ipMcastRouteEntry

     IANAipRouteProtocol, IANAipMRouteProtocol
        FROM IPMCAST-MIB IANA-RTPROTO-MIB                   -- [RFC5132] [RTPROTO]

     L2L3VpnMcastProviderTunnelType
        FROM L2L3-VPN-MCAST-TC-MIB;

  mvpnMIB MODULE-IDENTITY
     LAST-UPDATED "201712081200Z" "201804301200Z"  -- 8th December 2017 30th April 2018 12:00:00 GMT
     ORGANIZATION "IETF BESS Working Group."
     CONTACT-INFO
           "       Zhaohui Zhang
                   Juniper Networks, Inc.
                   10 Technology Park Drive
                   Westford, MA 01886
                   USA
                   Email: zzhang@juniper.net

                   Saud Asif
                   AT&T
                   C5-3D30 200 South Laurel Avenue
                   Middletown, NJ 07748
                   USA
                   Email: sasif@att.com

                   Andy Green
                   BT Design 21CN Converged Core IP & Data
                   01473 629360 Adastral Park, Martlesham Heath,
                   Ipswich IP5 3RE
                   UK
                   Email: andy.da.green@bt.com

                   Sameer Gulrajani
                   Cisco Systems
                   Tasman Drive San Jose, CA  95134
                   USA
                   Email: sameerg@cisco.com

                   Pradeep G. Jain
                   Alcatel-Lucent Inc
                   701 E Middlefield road Mountain view, CA 94043
                   USA
                   Email: pradeep.jain@alcatel-lucent.com

                   Hiroshi Tsunoda
                   Tohoku Institute of Technology
                   35-1, Yagiyama Kasumi-cho
                   Taihaku-ku, Sendai, 982-8577
                   Japan
                   Email: tsuno@m.ieice.org

                   Comments and discussion to bess@ietf.org"

     DESCRIPTION
          "This MIB contains managed object definitions for
           multicast in BGP/MPLS IP VPNs defined by [RFC6513].
           Copyright (C) The Internet Society (2017)." (2018)."

    -- Revision history.

    REVISION "201712081200Z" "201804301200Z"  -- 8th December, 2017 30th April, 2018
    DESCRIPTION
        "Initial version, published as RFC XXXX."

    -- RFC Ed. replace XXXX with actual RFC number and remove this note

    ::= { mib-2 YYYY }

    -- IANA Reg.: Please assign a value for "YYYY" under the
    -- 'mib-2' subtree and record the assignment in the SMI
    -- Numbers registry.

    -- RFC Ed.: When the above assignment has been made, please
    -- remove the above note
    -- replace "YYYY" here with the assigned value and
    -- remove this note.

  -- Top level components of this MIB.
  mvpnNotifications OBJECT IDENTIFIER ::= { mvpnMIB 0 }

  -- tables, scalars
  mvpnObjects       OBJECT IDENTIFIER ::= { mvpnMIB 1 }

  -- conformance information
  mvpnConformance   OBJECT IDENTIFIER ::= { mvpnMIB 2 }

  -- mvpn Objects
  mvpnScalars       OBJECT IDENTIFIER ::= { mvpnObjects 1 }
  mvpnGeneral
  mvpnGeneric       OBJECT IDENTIFIER ::= { mvpnObjects 2 }
  mvpnConfig        OBJECT IDENTIFIER ::= { mvpnObjects 3 }
  mvpnStates        OBJECT IDENTIFIER ::= { mvpnObjects 4 }

  -- Scalar Objects
  mvpnMvrfs OBJECT-TYPE
     SYNTAX        Gauge32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The total number of MVRFs Multicast Virtual Routing and
          Forwarding tables (MVRFs) that are present on
          this Provider Edge router (PE), whether (PE). This includes MVRFs
          for IPv4, IPv6, or and mLDP C-Multicast." C-Multicast.
         "
     ::= { mvpnScalars 1 }

  mvpnV4Mvrfs OBJECT-TYPE
     SYNTAX        Gauge32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of MVRFs for IPv4 C-Multicast that are
          present in this PE." PE.
         "
     ::= { mvpnScalars 2 }

  mvpnV6Mvrfs OBJECT-TYPE
     SYNTAX        Gauge32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of MVRFs for IPv6 C-Multicast that are
          present in this PE." PE.
         "
     ::= { mvpnScalars 3 }

  mvpnPimV4Mvrfs OBJECT-TYPE
     SYNTAX         Gauge32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
         "The number of PIM-MVPN MVRFs of MVPNs that use PIM for
          exchanging IPv4 C-Multicast that are routing information
          present in this PE." PE.
         "
     ::= { mvpnScalars 4 }

  mvpnPimV6Mvrfs OBJECT-TYPE
     SYNTAX         Gauge32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
         "The number of PIM-MVPN MVRFs of MVPNs that use PIM for
          exchanging IPv6 C-Multicast that are routing information
          present in this PE."
     ::= PE.
         "
     ::= { mvpnScalars 5 }

  mvpnBgpV4Mvrfs OBJECT-TYPE
     SYNTAX         Gauge32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
         "The number of BGP-MVPN MVRFs of MVPNs that use BGP for
          exchanging IPv4 C-Multicast that are routing information
          present in this PE." PE.
         "
     ::= { mvpnScalars 6 }

  mvpnBgpV6Mvrfs OBJECT-TYPE
     SYNTAX         Gauge32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
         "The number of BGP-MVPN MVRFs of MVPNs that use BGP for
          exchanging IPv6 C-Multicast that are routing information
          present in this PE." PE.
         "
     ::= { mvpnScalars 7 }

  mvpnMldpMvrfs OBJECT-TYPE
     SYNTAX         Gauge32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
         "The number of BGP-MVPN MVRFs of MVPNs that use BGP for
          exchanging mLDP C-Multicast that are routing information
          present in this PE." PE.
         "
     ::= { mvpnScalars 8 }

  mvpnNotificationEnable OBJECT-TYPE
     SYNTAX        TruthValue
     MAX-ACCESS    read-write
     STATUS        current
     DESCRIPTION
          "If this object is TRUE, then the generation of all
           notifications defined in this MIB is enabled."
     DEFVAL { false }
     ::= { mvpnScalars 9 }

  -- General Generic MVRF Information Table

  mvpnGeneralTable

  mvpnGenericTable  OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnGeneralEntry MvpnGenericEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table specifies the general generic information about the MVRFs
          present in this PE." PE.

          Entries in this table are not required to survive a reboot
          of the managed entity.
         "
     ::= { mvpnGeneral mvpnGeneric 1 }

  mvpnGeneralEntry

  mvpnGenericEntry OBJECT-TYPE
     SYNTAX        MvpnGeneralEntry        MvpnGenericEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An
         "This entry represents a conceptual row in the mvpnGenericTable.
          Each MVRF serviced by the PE will have an entry in this table is created for each table.
          The MVRF represented by this entry will have one or more
          corresponding P-Multicast Service Interfaces (PMSIs)
          and a corresponding VRF in the
          PE." MPLS-L3VPN-STD-MIB [RFC4382].
         "
     INDEX {
             mplsL3VpnVrfName,
             mvpnGenAddressFamily
           }
     ::= { mvpnGeneralTable mvpnGenericTable 1 }

  MvpnGeneralEntry

  MvpnGenericEntry ::= SEQUENCE {
    mvpnGenAddressFamily         INTEGER,
    mvpnGenMvrfStatusChange
    mvpnGenMvrfLastOperation     INTEGER,
    mvpnGenMvrfStatusChangeTime
    mvpnGenMvrfLastOperationTime TimeStamp,
    mvpnGenCmcastRouteProtocol   INTEGER,
    mvpnGenIpmsiConfig
    mvpnGenIpmsiInfo             RowPointer,
    mvpnGenInterAsPmsiConfig
    mvpnGenInterAsPmsiInfo       RowPointer,
    mvpnGenUmhSelection          INTEGER,
    mvpnGenSiteType
    mvpnGenCustomerSiteType     INTEGER,
    mvpnGenSptnlLimit            Unsigned32,
    mvpnGenRowStatus             RowStatus
    mvpnGenSPTunnelLimit         Unsigned32
  }

  mvpnGenAddressFamily OBJECT-TYPE
     SYNTAX      INTEGER {
                           ipv4(1),
                           ipv6(2)
                         }
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "The Address Family that of the MVRF represented by this entry is for" entry"
     REFERENCE
         "RFC6513, Section 1
         "
     ::= { mvpnGeneralEntry mvpnGenericEntry 1 }

  mvpnGenMvrfStatusChange

  mvpnGenMvrfLastOperation OBJECT-TYPE
     SYNTAX      INTEGER {
                           createdMvrf(1),
                           deletedMvrf(2),
                           modifiedMvrfIpmsiConfig(3),
                           modifiedMvrfSpmsiConfig(4)
                         }
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
         "This object describes the last status change that
          happened for operation pertaining
          to the given MVRF. MVRF represented by this entry.

            createdMvrf(1):
              indicates that
              the MVRF was created in the PE.

            deletedMvrf(2):
              indicates that
              the MVRF was deleted from the PE.
              A row in this table will never have
              mvpnGenMvrfStatusChange
              mvpnGenMvrfLastOperation equal to deletedMvrf(2),
              because in that case the row itself will be deleted
              from the table.
              This value for mvpnGenMvrfStatusChange mvpnGenMvrfLastOperation is defined
              mainly for use in mvpnMvrfStatusChange mvpnMvrfOperationChange notification.

            modifiedMvrfIpmsiConfig(3):
              indicates that the
              an I-PMSI for the MVRF was configured,
              deleted or changed.

            modifiedMvrfSpmsiConfig(4):
              indicates that the
              an S-PMSI for the MVRF was configured,
              deleted or changed.
         "
     DEFVAL { createdMvrf }
     ::= { mvpnGeneralEntry mvpnGenericEntry 2 }

  mvpnGenMvrfStatusChangeTime

  mvpnGenMvrfLastOperationTime OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The time at which the last status change operation for the MVRF in
          question took place. The last operational change is specified
          by mvpnGenMvrfStatusChange. mvpnGenMvrfLastOperation.
          The time at which the last operation, specifed
          in mvpnGenMvrfLastOperation, for the MVRF
          represented by this entry was carried out.
         "

     ::= { mvpnGeneralEntry mvpnGenericEntry 3 }

  mvpnGenCmcastRouteProtocol OBJECT-TYPE
     SYNTAX        INTEGER {
                             pim (1),
                             bgp (2)
                           }
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "The protocol used to signal C-multicast states routing
          information across the provider core.
            pim(1):
            PIM (PIM-MVPN).
            bgp(2): (PIM-MVPN): pim(1)
            BGP (BGP-MVPN). (BGP-MVPN): bgp(2)
         "
     REFERENCE
         "RFC6513, Section 5"
     ::= { mvpnGeneralEntry mvpnGenericEntry 4 }

  mvpnGenIpmsiConfig

  mvpnGenIpmsiInfo OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "This points to a conceptual row representing
          the corresponding I-PMSI in mvpnPmsiConfigTable,
          for mvpnPmsiTable.
          If there is no I-PMSI configuration. for the MVRF, the
          value of this object will be zeroDotZero.
         "
     DEFVAL        { zeroDotZero }
     ::= { mvpnGeneralEntry mvpnGenericEntry 5 }

  mvpnGenInterAsPmsiConfig

  mvpnGenInterAsPmsiInfo OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "This points to a conceptual row in mvpnPmsiConfigTable,
          for inter-as representing
          the corresponding Inter-AS I-PMSI configuration, in mvpnPmsiTable,
          in case of segmented
          inter-as Inter-AS provider tunnels.
          If there is no segmented Inter-AS I-PMSI for the MVRF,
          the value of this object will be zeroDotZero.
         "
     DEFVAL        { zeroDotZero }
     ::= { mvpnGeneralEntry mvpnGenericEntry 6 }

  mvpnGenUmhSelection OBJECT-TYPE
     SYNTAX        INTEGER {
                             highestPeAddress  (1),
                             cRootGroupHashing (2),
                             ucastUmhRoute     (3)
                           }
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "The UMH selection method for this mvpn, as specified in
          section 5.1.3 of [RFC6513]:
            highestPeAddress   (1):
            PE with the highest address
            cRootGroupHashing  (2): address:        highestPeAddress  (1)
            hashing based on (c-root, c-group)
            uncastUmhRoute     (3): c-group): cRootGroupHashing (2)
            per ucast route towards c-root c-root:     ucastUmhRoute     (3)
         "
     REFERENCE
         "RFC6513, Section 5.1"
     ::= { mvpnGeneralEntry mvpnGenericEntry 7 }

  mvpnGenSiteType

  mvpnGenCustomerSiteType OBJECT-TYPE
     SYNTAX        INTEGER {
                             senderReceiver (1),
                             receiverOnly   (2),
                             senderOnly     (3)
                           }
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "Whether
         "The type of a customer site, which is connected to
          this PE, in the MVPN which has the MVRF represented
          by this site entry.

            Site is a receiver-only site or not.
            senderReceiver (1): both sender and receiver site.
            receiverOnly   (2): receiver: senderReceiver (1)
            Site is receiver-only site.
            senderOnly     (3):           : receiverOnly   (2)
            Site is sender-only site.             : senderOnly     (3)
         "
     REFERENCE
         "RFC6513, Section 2.3"
     ::= { mvpnGeneralEntry mvpnGenericEntry 8 }

  mvpnGenSptnlLimit

  mvpnGenSPTunnelLimit OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "The max maximum number of selective provider tunnels that
          this PE allows for this mvpn." MVPN.
         "
     REFERENCE
         "RFC6513, Section 13"

     ::= { mvpnGeneralEntry mvpnGenericEntry 9 }

  mvpnGenRowStatus OBJECT-TYPE
     SYNTAX        RowStatus
     MAX-ACCESS    read-create
     STATUS        current
     DESCRIPTION
         "This is used to create or delete a row in this table."
     ::= { mvpnGeneralEntry 10 }

  -- General Generic BGP-MVPN table

  mvpnBgpGeneralTable

  mvpnBgpGenericTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnBgpGeneralEntry MvpnBgpGenericEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table augments specifies the mvpnGeneralTable and is for BGP-MVPN specific information. information of MVRFs of MVPNs
          that use BGP for exchanging C-Multicast routing information
          present in this PE.
         "
     ::= { mvpnGeneral mvpnGeneric 2 }

  mvpnBgpGeneralEntry

  mvpnBgpGenericEntry OBJECT-TYPE
     SYNTAX           MvpnBgpGeneralEntry           MvpnBgpGenericEntry
     MAX-ACCESS       not-accessible
     STATUS           current
     DESCRIPTION
         "The mvpnBgpGeneralEntry matches and augments
         "This entry represents a conceptual row in the mvpnBgpGenericTable.
          Each MVRF of an
          mvpnGeneralEntry MVPN that use BGP for exchanging C-Multicast
          routing information will have an entry in this table.
          The MVRF represented by this entry will have
          a BGP-MVPN instance, with BGP-MVPN
          specific informatoin. corresponding entry in the mvpnGenericTable.
         "
     AUGMENTS
     INDEX { mvpnGeneralEntry
             mplsL3VpnVrfName,
             mvpnGenAddressFamily
           }
  ::= { mvpnBgpGeneralTable mvpnBgpGenericTable 1 }

  MvpnBgpGeneralEntry

  MvpnBgpGenericEntry ::= SEQUENCE {
    mvpnBgpGenMode                       INTEGER,
    mvpnBgpGenVrfRtImport
    mvpnBgpGenVrfRouteImport             MplsL3VpnRouteDistinguisher,
    mvpnBgpGenSrcAs          InetAutonomousSystemNumber                      InetAutonomousSystemNumber,
    mvpnBgpGenCmcastRouteWithdrawalTimer Unsigned32,
    mvpnBgpGenSrcSharedTreeJoinTimer     Unsigned32,
    mvpnBgpGenMsgRateLimit               Unsigned32,
    mvpnBgpGenMaxSpmsiAdRoutes           Unsigned32,
    mvpnBgpGenMaxSpmsiAdRouteFreq        Unsigned32,
    mvpnBgpGenMaxSrcActiveAdRoutes       Unsigned32,
    mvpnBgpGenMaxSrcActiveAdRouteFreq    Unsigned32
  }

  mvpnBgpGenMode OBJECT-TYPE
     SYNTAX        INTEGER {
                             rptSpt  (1),
                             sptOnly (2)
                           }
     MAX-ACCESS    read-write    read-only
     STATUS        current
     DESCRIPTION
         "For two different BGP-MVPN modes:
            rptSpt(1):  inter-site shared tree mode
            sptOnly(2): inter-site source-only tree mode.
         "
     REFERENCE
         "RFC6513, Section 9.3.1"
     ::= { mvpnBgpGeneralEntry 1}

  mvpnBgpGenVrfRtImport mvpnBgpGenericEntry 1 }

  mvpnBgpGenVrfRouteImport OBJECT-TYPE
     SYNTAX             MplsL3VpnRouteDistinguisher
     MAX-ACCESS         read-write         read-only
     STATUS             current
     DESCRIPTION
         "The VRF Route Import Extended Community that this PE
          adds to unicast vpn VPN routes that it advertises for this mvpn. MVPN.
         "
     REFERENCE
         "RFC4364, Section 4.2
          RFC4382,
         "RFC6514, Section 7
         "
     ::= { mvpnBgpGeneralEntry 2} mvpnBgpGenericEntry 2 }

  mvpnBgpGenSrcAs      OBJECT-TYPE
     SYNTAX            InetAutonomousSystemNumber
     MAX-ACCESS        read-only
     STATUS            current
     DESCRIPTION
         "The Source AS number in Source AS Extended Community that this
          PE adds to the unicast vpn VPN routes that it advertises for
          this mvpn. MVPN.
         "
     REFERENCE
         "RFC6514, Section 6
         "
     ::= { mvpnBgpGeneralEntry 3}

  -- PMSI Configuration Table

  mvpnPmsiConfigTable mvpnBgpGenericEntry 3 }

  mvpnBgpGenCmcastRouteWithdrawalTimer OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnPmsiConfigEntry        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "This table specifies
         "The configurable timer to control the configured PMSIs." delay
          for the advertisement of withdrawals of
          C-multicast routes.

         "
     REFERENCE
         "RFC6514, Section 16.1.1"
     ::= { mvpnConfig 1 mvpnBgpGenericEntry 4 }

  mvpnPmsiConfigEntry

  mvpnBgpGenSrcSharedTreeJoinTimer OBJECT-TYPE
     SYNTAX        MvpnPmsiConfigEntry        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "An entry in this table is created for each PMSI configured
          on this router. It can be referred
         "The configurable timer to by either I-PMSI
          configuration (in mvpnGeneralEntry) or S-PMSI configuration
          (in mvpnSpmsiConfigEntry) control the delay
          for the advertisement of Source/Shared Tree Join
          C-multicast routes.
         "
     INDEX       {
                   mvpnPmsiConfigTunnelType,
                   mvpnPmsiConfigTunnelAuxInfo,
                   mvpnPmsiConfigTunnelPimGroupAddrType,
                   mvpnPmsiConfigTunnelPimGroupAddr,
                   mvpnPmsiConfigTunnelOrTemplateName
                 }

     ::= { mvpnPmsiConfigTable 1 }

  MvpnPmsiConfigEntry
     REFERENCE
         "RFC6514, Section 16.1.2"
     ::= SEQUENCE {
    mvpnPmsiConfigTunnelType
                                   L2L3VpnMcastProviderTunnelType,
    mvpnPmsiConfigTunnelAuxInfo    Unsigned32,
    mvpnPmsiConfigTunnelPimGroupAddrType
                                   InetAddressType,
    mvpnPmsiConfigTunnelPimGroupAddr
                                   InetAddress,
    mvpnPmsiConfigTunnelOrTemplateName
                                   SnmpAdminString,
    mvpnPmsiConfigEncapsType       INTEGER,
    mvpnPmsiConfigRowStatus        RowStatus mvpnBgpGenericEntry 5 }

  mvpnPmsiConfigTunnelType

  mvpnBgpGenMsgRateLimit OBJECT-TYPE
     SYNTAX        L2L3VpnMcastProviderTunnelType        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "Type
         "The upper bounds on rate of tunnel used to instantiate the PMSI." BGP message exchange among PEs
          for exchanging C-multicast routing information
         "
     REFERENCE
         "RFC6514, Section 17"
     ::= { mvpnPmsiConfigEntry 1 mvpnBgpGenericEntry 6 }

  mvpnPmsiConfigTunnelAuxInfo

  mvpnBgpGenMaxSpmsiAdRoutes OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "Additional tunnel information depending
         "The upper bound on the value of
          mvpnPmsiConfigTunnelType object.

            pimSsm(3), pimAsm(4), pimBidir(5):
              In case of S-PMSI, number of groups starting at
              mvpnPmsiConfigTunnelPimGroupAddress.
              This allows a range of PIM provider tunnel
              group addresses to be specified in S-PMSI case.
              In I-PMSI case, it must be 1.

            rsvpP2mp(1):
              1 for statically specified rsvp-p2mp tunnel
              2 for dynamically created rsvp-p2mp tunnel

            ingressReplication(6):
              1 for using any existing p2p/mp2p LSP
              2 for dynamically creating new p2p LSP A-D routes.
         "
     REFERENCE
         "RFC6514, Section 17"
     ::= { mvpnPmsiConfigEntry 2 }

  mvpnPmsiConfigTunnelPimGroupAddrType OBJECT-TYPE
     SYNTAX        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "In case of PIM provider tunnel, the type of tunnel address."
     ::= { mvpnPmsiConfigEntry 3 mvpnBgpGenericEntry 7 }

  mvpnPmsiConfigTunnelPimGroupAddr

  mvpnBgpGenMaxSpmsiAdRouteFreq OBJECT-TYPE
     SYNTAX        InetAddress        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "In case of PIM provider tunnel, the provider tunnel address."
         "The upper bound on how frequently S-PMSI A-D routes
          may be generated.

         "
     REFERENCE
         "RFC6514, Section 17"
     ::= { mvpnPmsiConfigEntry 4 mvpnBgpGenericEntry 8 }

  mvpnPmsiConfigTunnelOrTemplateName

  mvpnBgpGenMaxSrcActiveAdRoutes OBJECT-TYPE
     SYNTAX        SnmpAdminString        Unsigned32
     MAX-ACCESS    not-accessible    read-write
     STATUS        current
     DESCRIPTION
         "The tunnel name or template name used to create tunnels.
          The value of this object depends upper bound on the values number of
          mvpnPmsiConfigTunnelType and mvpnPmsiConfigTunnelAuxInfo
          objects:

          dynamically created rsvp-p2mp tunnel:       template name
          statically specified rsvp-p2mp tunnel:      tunnel name
          ingress-replication using
            dynamically created LSPs:                 template name
          other:                                      null Source Active A-D routes.
         "
     REFERENCE
         "RFC6514, Section 17"
     ::= { mvpnPmsiConfigEntry 5 mvpnBgpGenericEntry 9 }

  mvpnPmsiConfigEncapsType

  mvpnBgpGenMaxSrcActiveAdRouteFreq OBJECT-TYPE
     SYNTAX        INTEGER {
                             greIp (1),
                             ipIp  (2),
                             mpls  (3)
                           }        Unsigned32
     MAX-ACCESS    read-create    read-write
     STATUS        current
     DESCRIPTION
         "The encapsulation type to upper bound on how frequently Source Active A-D routes
          may be used, in case of PIM tunnel or
          ingress-replication. generated.
         "
     REFERENCE
         "RFC6514, Section 17"
     ::= { mvpnPmsiConfigEntry 6 }

  mvpnPmsiConfigRowStatus OBJECT-TYPE
     SYNTAX        RowStatus
     MAX-ACCESS    read-create
     STATUS        current
     DESCRIPTION
         "Used to create/modify/delete a row in this table."
    ::= { mvpnPmsiConfigEntry 7 mvpnBgpGenericEntry 10 }

  -- S-PMSI configuration table

  mvpnSpmsiConfigTable PMSI Configuration Table

  mvpnPmsiTable  OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnSpmsiConfigEntry MvpnPmsiEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This
         "An entry in this table specifies S-PMSI configuration." corresponds to
          the attribute information of a specific
          PMSI configured on a PE router.
         "
     ::= { mvpnConfig 2 1 }

  mvpnSpmsiConfigEntry

  mvpnPmsiEntry OBJECT-TYPE
     SYNTAX        MvpnSpmsiConfigEntry        MvpnPmsiEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An entry is created for each S-PMSI configuration."
         "A conceptual row corresponding to a specific
          PMSI on this router.

         "
     INDEX       {
                   mplsL3VpnVrfName,
                   mvpnSpmsiConfigCmcastAddrType,
                   mvpnSpmsiConfigCmcastGroupAddr,
                   mvpnSpmsiConfigCmcastGroupPrefixLen,
                   mvpnSpmsiConfigCmcastSourceAddr,
                   mvpnSpmsiConfigCmcastSourcePrefixLen
                   mvpnPmsiTunnelIfIndex
                 }
     ::= { mvpnSpmsiConfigTable mvpnPmsiTable 1 }

  MvpnSpmsiConfigEntry

  MvpnPmsiEntry ::= SEQUENCE {
     mvpnSpmsiConfigCmcastAddrType
    mvpnPmsiTunnelIfIndex          InterfaceIndex,
    mvpnPmsiTunnelType             L2L3VpnMcastProviderTunnelType,
    mvpnPmsiTunnelPimGroupAddrType InetAddressType,
     mvpnSpmsiConfigCmcastGroupAddr       InetAddress,
     mvpnSpmsiConfigCmcastGroupPrefixLen  InetAddressPrefixLength,
     mvpnSpmsiConfigCmcastSourceAddr
    mvpnPmsiTunnelPimGroupAddr     InetAddress,
     mvpnSpmsiConfigCmcastSourcePrefixLen InetAddressPrefixLength,
     mvpnSpmsiConfigThreshold             Unsigned32,
     mvpnSpmsiConfigPmsiPointer           RowPointer,
     mvpnSpmsiConfigRowStatus             RowStatus
    mvpnPmsiEncapsulationType      INTEGER
  }

  mvpnSpmsiConfigCmcastAddrType

  mvpnPmsiTunnelIfIndex OBJECT-TYPE
     SYNTAX        InetAddressType        InterfaceIndex
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "Type of C-multicast address"
     ::= { mvpnSpmsiConfigEntry 1 }

  mvpnSpmsiConfigCmcastGroupAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "C-multicast group address"
         "This is a unique index for an entry in the
          mvpnPmsiTable.  A non-zero index for an
          entry indicates the ifIndex for the corresponding
          entry of PMSI in the ifTable.
         "
     REFERENCE
         "RFC2863
         "
     ::= { mvpnSpmsiConfigEntry 2 mvpnPmsiEntry 1 }

  mvpnSpmsiConfigCmcastGroupPrefixLen

  mvpnPmsiTunnelType OBJECT-TYPE
     SYNTAX        InetAddressPrefixLength        L2L3VpnMcastProviderTunnelType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "C-multicast group address prefix length.
          A group 0 (or ::0) with prefix length 32 (or 128)
          indicates wildcard group, while a group 0 (or ::0)
          with prefix length 0
         "This object indicates any group. the type of tunnel used to
          instantiate the PMSI corresponding to this entry"
     REFERENCE
         "RFC6513 Sec. 2.6
         "
     ::= { mvpnSpmsiConfigEntry 3 mvpnPmsiEntry 2 }

  mvpnSpmsiConfigCmcastSourceAddr

  mvpnPmsiTunnelPimGroupAddrType OBJECT-TYPE
     SYNTAX        InetAddress        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "C-multicast source address"
         "When the PIM provider tunnel is used for instantiating
          the PMSI corresponding to this entry, i.e.,
          the value of mvpnPmsiTunnelType is
          pimSsm(3), pimAsm(4), or pimBidir(5),
          this object indicates the type of tunnel address.
          Otherwise, the value of this object will be
          unknown(0).
         "
     ::= { mvpnSpmsiConfigEntry 4 mvpnPmsiEntry 3 }

  mvpnSpmsiConfigCmcastSourcePrefixLen

  mvpnPmsiTunnelPimGroupAddr OBJECT-TYPE
     SYNTAX        InetAddressPrefixLength        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "C-multicast source address prefix length.
          A source 0 (or ::0) with prefix length 32 (or 128)
         "When the PIM provider tunnel is used for instantiating
          the PMSI corresponding to this entry, i.e.,
          the value of mvpnPmsiTunnelType is
          pimSsm(3), pimAsm(4), or pimBidir(5),
          this object indicates the tunnel address.
          Otherwise, the value of this object will be
          a wildcard source, while a source 0 (or ::0)
          with prefix string of length 0 indicates any source. zero.
         "
     ::= { mvpnSpmsiConfigEntry 5 mvpnPmsiEntry 4 }

  mvpnSpmsiConfigThreshold

  mvpnPmsiEncapsulationType OBJECT-TYPE
     SYNTAX        Unsigned32  (0..4294967295)
     UNITS         "kilobits per second"        INTEGER {
                             greIp (1),
                             ipIp  (2),
                             mpls  (3)
                           }
     MAX-ACCESS    read-create    read-only
     STATUS        current
     DESCRIPTION
         "The bandwidth threshold value which when exceeded encapsulation type to be used for sending
          packets through a
          multicast routing entry in P-tunnel.

          The enumerated values and the given MVRF, triggers usage
          of S-PMSI. corresponding
          encapsulation types are as follows:

           greIp (0) : GRE (Generic Routing Encapsulation) encapsulation [RFC2784]
           ipIp  (1) : IP-in-IP encapsulation [RFC2003]
           mpls  (2) : MPLS encapsulation [RFC3032]
         "
     REFERENCE
         "RFC2003
          RFC2784
          RFC3032
          RFC6513 Sec. 12.1
         "

     ::= { mvpnSpmsiConfigEntry 6 mvpnPmsiEntry 5 }

  mvpnSpmsiConfigPmsiPointer

  -- S-PMSI configuration table

  mvpnSpmsiTable  OBJECT-TYPE
     SYNTAX        RowPointer        SEQUENCE OF MvpnSpmsiEntry
     MAX-ACCESS    read-create    not-accessible
     STATUS        current
     DESCRIPTION
         "This points to a row
         "An entry in mvpnPmsiConfigTable,
          to specify tunnel attributes.
         "
     ::= { mvpnSpmsiConfigEntry 7 }

  mvpnSpmsiConfigRowStatus OBJECT-TYPE
     SYNTAX        RowStatus
     MAX-ACCESS    read-create
     STATUS        current
     DESCRIPTION
         "Used this table corresponds to create/modify/delete
          a row in this table."
    ::= { mvpnSpmsiConfigEntry 8 }

  -- Table of intra-as I-PMSIs advertised/received

  mvpnIpmsiTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnIpmsiEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This specific S-PMSI configured on a PE router.
          This table stores only S-PMSI specific
          attribute information and generic attribute
          information of the S-PMSI is for all advertised/received I-PMSI
          advertisements. stored in
          mvpnPmsiTable.
          Therefore, there MUST be corresponding entry
          that pertains to the S-PMSI, in mvpnPmsiTable.
         "
     ::= { mvpnStates 1 mvpnConfig 2 }

  mvpnIpmsiEntry

  mvpnSpmsiEntry OBJECT-TYPE
     SYNTAX        MvpnIpmsiEntry        MvpnSpmsiEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An entry in this table corresponds
         "A conceptual row corresponding to an I-PMSI
          advertisement that is advertised/received a specific
          S-PMSI on this router.

          This represents all

          Implementers need to be aware that there are quite a few
          index objects that together can exceed the sender PEs size allowed
          for an Object Identifier (OID).  So implementers must make
          sure that OIDs of column instances in the MVPN,
          with the provider tunnel this table will have
          no more than 128 sub-identifiers, otherwise they use to send traffic. cannot be
          accessed using SNMPv1, SNMPv2c, or SNMPv3.
         "
     INDEX       {
                   mplsL3VpnVrfName,
              mvpnIpmsiAfi,
              mvpnIpmsiRD,
              mvpnIpmsiOrigAddrType,
              mvpnIpmsiOrigAddr
                   mvpnSpmsiCmcastAddrType,
                   mvpnSpmsiCmcastGroupAddr,
                   mvpnSpmsiCmcastGroupPrefixLen,
                   mvpnSpmsiCmcastSourceAddr,
                   mvpnSpmsiCmcastSourcePrefixLen
                 }
     ::= { mvpnIpmsiTable mvpnSpmsiTable 1 }

  MvpnIpmsiEntry

  MvpnSpmsiEntry ::= SEQUENCE {
     mvpnIpmsiAfi          INTEGER,
     mvpnIpmsiRD           MplsL3VpnRouteDistinguisher,
     mvpnIpmsiOrigAddrType
     mvpnSpmsiCmcastAddrType        InetAddressType,
     mvpnIpmsiOrigAddr
     mvpnSpmsiCmcastGroupAddr       InetAddress,
     mvpnIpmsiUpTime       TimeInterval,
     mvpnIpmsiAttribute
     mvpnSpmsiCmcastGroupPrefixLen  InetAddressPrefixLength,
     mvpnSpmsiCmcastSourceAddr      InetAddress,
     mvpnSpmsiCmcastSourcePrefixLen InetAddressPrefixLength,
     mvpnSpmsiThreshold             Unsigned32,
     mvpnSpmsiPmsiPointer           RowPointer
  }

  mvpnIpmsiAfi

  mvpnSpmsiCmcastAddrType OBJECT-TYPE
     SYNTAX        INTEGER {
                             ipv4(1),
                             ipv6(2)
                           }        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The address family this I-PMSI
         "Type of C-multicast source and group addresses of
          a particular C-flow which is for."
     ::= { mvpnIpmsiEntry 1 }

  mvpnIpmsiRD OBJECT-TYPE
     SYNTAX        MplsL3VpnRouteDistinguisher
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Route Distinguisher in assigned to an S-PMSI
          corresponding to this I-PMSI." entry."
     ::= { mvpnIpmsiEntry 2 mvpnSpmsiEntry 1 }

  mvpnIpmsiOrigAddrType

  mvpnSpmsiCmcastGroupAddr OBJECT-TYPE
     SYNTAX        InetAddressType        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Internet
         "A group address type of mvpnIpmsiOrigAddr." a particular C-flow which is
          assigned to an S-PMSI corresponding to this entry."
     ::= { mvpnIpmsiEntry 3 mvpnSpmsiEntry 2 }

  mvpnIpmsiOrigAddr

  mvpnSpmsiCmcastGroupPrefixLen OBJECT-TYPE
     SYNTAX        InetAddress        InetAddressPrefixLength
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The BGP address
         "A prefix length of the PE that originated the I-PMSI." mvpnSpmsiCmcastGroupAddr.
          A group 0 (or ::0) with prefix length 32 (or 128)
          indicates wildcard group, while a group 0 (or ::0)
          with prefix length 0 indicates any group.
         "
     ::= { mvpnSpmsiEntry 3 }

  mvpnSpmsiCmcastSourceAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "A source address of a particular C-flow which is
          assigned to an S-PMSI corresponding to this entry."
     ::= { mvpnIpmsiEntry mvpnSpmsiEntry 4 }

  mvpnIpmsiUpTime

  mvpnSpmsiCmcastSourcePrefixLen OBJECT-TYPE
     SYNTAX        TimeInterval        InetAddressPrefixLength
     MAX-ACCESS    read-only    not-accessible
     STATUS        current
     DESCRIPTION
         "A prefix length of mvpnSpmsiCmcastSourceAddr.
          A source 0 (or ::0) with prefix length 32 (or 128)
          indicates a wildcard source, while a source 0 (or ::0)
          with prefix length 0 indicates any source.
         "
     ::= { mvpnSpmsiEntry 5 }

  mvpnSpmsiThreshold OBJECT-TYPE
     SYNTAX        Unsigned32  (0..4294967295)
     UNITS         "kilobits per second"
     MAX-ACCESS    read-write
     STATUS        current
     DESCRIPTION
         "The time since this I-PMSI
          was first advertised/received by bandwidth threshold value which when exceeded for a
          multicast routing entry in the PE. given MVRF, triggers usage
          of S-PMSI.
         "
     REFERENCE
         "RFC6513 Sec. 7.2"
     ::= { mvpnIpmsiEntry 5 mvpnSpmsiEntry 6 }

  mvpnIpmsiAttribute

  mvpnSpmsiPmsiPointer OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "Points
         "This points to a row in the l2L3VpnMcastPmsiTunnelAttributeTable." mvpnPmsiTable,
          to specify tunnel attributes.
         "
     ::= { mvpnIpmsiEntry 6 mvpnSpmsiEntry 7 }

  -- Table of inter-as intra-as I-PMSIs advertised/received

  mvpnInterAsIpmsiTable

  mvpnIpmsiAdvtTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnInterAsIpmsiEntry MvpnIpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table is for all advertised/received inter-as I-PMSI
          advertisements."
          advertisements.
         "
     ::= { mvpnStates 2 1 }

  mvpnInterAsIpmsiEntry

  mvpnIpmsiAdvtEntry OBJECT-TYPE
     SYNTAX        MvpnInterAsIpmsiEntry        MvpnIpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An entry in this table corresponds to an inter-as I-PMSI
          advertisement that is advertised/received on by this router.
          This represents all the ASes sender PEs in the MVPN,
          with the provider tunnel used they use to send traffic to. traffic.

          Implementers need to be aware that there are quite a few
          index objects that together can exceed the size allowed
          for an Object Identifier (OID).  So implementers must make
          sure that OIDs of column instances in this table will have
          no more than 128 sub-identifiers, otherwise they cannot be
          accessed using SNMPv1, SNMPv2c, or SNMPv3.
         "
     INDEX  {
              mplsL3VpnVrfName,
              mvpnInterAsIpmsiAfi,
              mvpnInterAsIpmsiRD,
              mvpnInterAsIpmsiSrcAs
              mvpnIpmsiAdvtAfi,
              mvpnIpmsiAdvtRD,
              mvpnIpmsiAdvtOrigAddrType,
              mvpnIpmsiAdvtOrigAddr
            }
     ::= { mvpnInterAsIpmsiTable mvpnIpmsiAdvtTable 1 }

  MvpnInterAsIpmsiEntry

  MvpnIpmsiAdvtEntry ::= SEQUENCE {
     mvpnInterAsIpmsiAfi
     mvpnIpmsiAdvtAfi                      INTEGER,
     mvpnInterAsIpmsiRD
     mvpnIpmsiAdvtRD                       MplsL3VpnRouteDistinguisher,
     mvpnInterAsIpmsiSrcAs        InetAutonomousSystemNumber,
     mvpnInterAsIpmsiAttribute    RowPointer
     mvpnIpmsiAdvtOrigAddrType             InetAddressType,
     mvpnIpmsiAdvtOrigAddr                 InetAddress,
     mvpnIpmsiAdvtTunnelAttribute          RowPointer,
     mvpnIpmsiAdvtReceived                 Counter32,
     mvpnIpmsiAdvtReceivedError            Counter32,
     mvpnIpmsiAdvtMalformedTunnelType      Counter32,
     mvpnIpmsiAdvtMalformedTunnelId        Counter32,
     mvpnIpmsiAdvtLastReceivedTime         TimeStamp,
     mvpnIpmsiAdvtCounterDiscontinuityTime TimeStamp
     }

  mvpnInterAsIpmsiAfi

  mvpnIpmsiAdvtAfi OBJECT-TYPE
     SYNTAX        INTEGER {
                             ipv4(1),
                             ipv6(2)
                           }
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The address family this I-PMSI is for."

     ::= { mvpnInterAsIpmsiEntry mvpnIpmsiAdvtEntry 1 }

  mvpnInterAsIpmsiRD

  mvpnIpmsiAdvtRD OBJECT-TYPE
     SYNTAX        MplsL3VpnRouteDistinguisher
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Route Distinguisher in this inter-as I-PMSI."
     ::= { mvpnInterAsIpmsiEntry mvpnIpmsiAdvtEntry 2 }

  mvpnInterAsIpmsiSrcAs

  mvpnIpmsiAdvtOrigAddrType OBJECT-TYPE
     SYNTAX        InetAutonomousSystemNumber        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The source-as in this inter-as I-PMSI." Internet address type of mvpnIpmsiAdvtOrigAddr."
     ::= { mvpnInterAsIpmsiEntry mvpnIpmsiAdvtEntry 3 }

  mvpnInterAsIpmsiAttribute

  mvpnIpmsiAdvtOrigAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The BGP address of the PE that originated the I-PMSI."
     ::= { mvpnIpmsiAdvtEntry 4 }

  mvpnIpmsiAdvtTunnelAttribute OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "Points to a row in the l2L3VpnMcastPmsiTunnelAttributeTable."
     ::= { mvpnInterAsIpmsiEntry 4 mvpnIpmsiAdvtEntry 5 }

  -- Table of S-PMSIs advertised/received

  mvpnSpmsiTable

  mvpnIpmsiAdvtReceived OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnSpmsiEntry        Counter32
     MAX-ACCESS    not-accessible    read-only
     STATUS        current
     DESCRIPTION
         "This table has information about
         "The number of I-PMSI advertisements received by the S-PMSIs sent/received PE router.
          This includes advertisements that were discarded.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by a PE. the value of
          mvpnIpmsiAdvtCounterDiscontinuityTime.
         "
     ::= { mvpnStates 3 mvpnIpmsiAdvtEntry 6 }

  mvpnSpmsiEntry

  mvpnIpmsiAdvtReceivedError OBJECT-TYPE
     SYNTAX        MvpnSpmsiEntry        Counter32
     MAX-ACCESS    not-accessible    read-only
     STATUS        current
     DESCRIPTION
         "An entry
         "The total number of errors in the I-PMSI advertisements
          received by the PE router.
          The value of this table object is created or updated for each S-PMSI
          advertised/received the sum of
          the values of mvpnIpmsiAdvtMalformedTunnelType and
          mvpnIpmsiAdvtMalformedTunnelId.
          Discontinuities in a particular MVRF. the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnIpmsiAdvtCounterDiscontinuityTime.
         "
     INDEX  {
              mplsL3VpnVrfName,
              mvpnSpmsiCmcastAddrType,
              mvpnSpmsiCmcastGroupAddr,
              mvpnSpmsiCmcastGroupPrefixLen,
              mvpnSpmsiCmcastSourceAddr,
              mvpnSpmsiCmcastSourcePrefixLen,
              mvpnSpmsiOrigAddrType,
              mvpnSpmsiOrigAddr
            }
     ::= { mvpnSpmsiTable 1 }

  MvpnSpmsiEntry ::= SEQUENCE {
     mvpnSpmsiCmcastAddrType        InetAddressType,
     mvpnSpmsiCmcastGroupAddr       InetAddress,
     mvpnSpmsiCmcastGroupPrefixLen  InetAddressPrefixLength,
     mvpnSpmsiCmcastSourceAddr      InetAddress,
     mvpnSpmsiCmcastSourcePrefixLen InetAddressPrefixLength,
     mvpnSpmsiOrigAddrType          InetAddressType,
     mvpnSpmsiOrigAddr              InetAddress,
     mvpnSpmsiTunnelAttribute       RowPointer,
     mvpnSpmsiUpTime                TimeInterval,
     mvpnSpmsiExpTime               TimeInterval,
     mvpnSpmsiRefCnt                Unsigned32 mvpnIpmsiAdvtEntry 7 }

  mvpnSpmsiCmcastAddrType

  mvpnIpmsiAdvtMalformedTunnelType OBJECT-TYPE
     SYNTAX        InetAddressType        Counter32
     MAX-ACCESS    not-accessible    read-only
     STATUS        current
     DESCRIPTION
         "The Internet address type number of received I-PMSI advertisements that
          contain a PMSI Tunnel attribute whose Tunnel
          Type field has an undefined tunnel type.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of mvpnSpmsiCmcastGroup/Source."
          mvpnIpmsiAdvtCounterDiscontinuityTime.
         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnSpmsiEntry 1 mvpnIpmsiAdvtEntry 8 }

  mvpnSpmsiCmcastGroupAddr

  mvpnIpmsiAdvtMalformedTunnelId   OBJECT-TYPE
     SYNTAX        InetAddress        Counter32
     MAX-ACCESS    not-accessible    read-only
     STATUS        current
     DESCRIPTION
         "S-PMSI C-multicast group address.
          If it is 0 (or ::0), this is
         "The number of received I-PMSI advertisements that
          contain a wildcard group,
          and mvpnSpmsiCmcastGroupPrefixLen must PMSI Tunnel attribute whose Tunnel
          Identifier field cannot be 32 (or 128). parsed as a
          tunnel identifier of the tunnel types specified in
          the Tunnel type field of the attribute.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnIpmsiAdvtCounterDiscontinuityTime.

         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnSpmsiEntry 2 mvpnIpmsiAdvtEntry 9 }

  mvpnSpmsiCmcastGroupPrefixLen

  mvpnIpmsiAdvtLastReceivedTime   OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime when the last I-PMSI
          advertisement was received by the PE router.
         "
     ::= { mvpnIpmsiAdvtEntry 10 }

  mvpnIpmsiAdvtCounterDiscontinuityTime OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime on the most recent occasion
          at which any one or more of this syslog application's
          counters, viz., counters with OID prefix
          'mvpnIpmsiAdvtReceived' or
          'mvpnIpmsiAdvtReceivedError' or
          'mvpnIpmsiAdvtMalformedTunnelType' or
          'mvpnIpmsiAdvtMalformedTunnelId' suffered a
          discontinuity.
          If no such discontinuities have occurred since the
          last re-initialization of the local management
          subsystem, then this object will have a zero value.
         "
     ::= { mvpnIpmsiAdvtEntry 11 }

  -- Table of inter-as I-PMSIs advertised/received

  mvpnInterAsIpmsiAdvtTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnInterAsIpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table is for all advertised/received inter-as I-PMSI
          advertisements."
     ::= { mvpnStates 2 }

  mvpnInterAsIpmsiAdvtEntry OBJECT-TYPE
     SYNTAX        MvpnInterAsIpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An entry in this table corresponds to an inter-as I-PMSI
          advertisement that is advertised/received by this router.
          This represents all the ASes in the MVPN,
          with the provider tunnel used to send traffic to.

          Implementers need to be aware that there are quite a few
          index objects that together can exceed the size allowed
          for an Object Identifier (OID).  So implementers must make
          sure that OIDs of column instances in this table will have
          no more than 128 sub-identifiers, otherwise they cannot be
          accessed using SNMPv1, SNMPv2c, or SNMPv3.
         "
     INDEX  {
              mplsL3VpnVrfName,
              mvpnInterAsIpmsiAdvtAfi,
              mvpnInterAsIpmsiAdvtRD,
              mvpnInterAsIpmsiAdvtSrcAs
            }
     ::= { mvpnInterAsIpmsiAdvtTable 1 }

  MvpnInterAsIpmsiAdvtEntry ::= SEQUENCE {
     mvpnInterAsIpmsiAdvtAfi                      INTEGER,
     mvpnInterAsIpmsiAdvtRD                       MplsL3VpnRouteDistinguisher,
     mvpnInterAsIpmsiAdvtSrcAs                    InetAutonomousSystemNumber,
     mvpnInterAsIpmsiAdvtTunnelAttribute          RowPointer,
     mvpnInterAsIpmsiAdvtReceived                 Counter32,
     mvpnInterAsIpmsiAdvtReceivedError            Counter32,
     mvpnInterAsIpmsiAdvtMalformedTunnelType      Counter32,
     mvpnInterAsIpmsiAdvtMalformedTunnelId        Counter32,
     mvpnInterAsIpmsiAdvtLastReceivedTime         TimeStamp,
     mvpnInterAsIpmsiAdvtCounterDiscontinuityTime TimeStamp
  }

  mvpnInterAsIpmsiAdvtAfi OBJECT-TYPE
     SYNTAX        INTEGER {
                             ipv4(1),
                             ipv6(2)
                           }
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The address family this I-PMSI is for."
     ::= { mvpnInterAsIpmsiAdvtEntry 1 }

  mvpnInterAsIpmsiAdvtRD OBJECT-TYPE
     SYNTAX        MplsL3VpnRouteDistinguisher
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Route Distinguisher in this inter-as I-PMSI."
     ::= { mvpnInterAsIpmsiAdvtEntry 2 }

  mvpnInterAsIpmsiAdvtSrcAs OBJECT-TYPE
     SYNTAX        InetAutonomousSystemNumber
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The source-as in this inter-as I-PMSI."
     ::= { mvpnInterAsIpmsiAdvtEntry 3 }

  mvpnInterAsIpmsiAdvtTunnelAttribute OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "Points to a row in the l2L3VpnMcastPmsiTunnelAttributeTable."
     ::= { mvpnInterAsIpmsiAdvtEntry 4 }

  mvpnInterAsIpmsiAdvtReceived OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of Inter-AS I-PMSI advertisements received
          by the PE router.
          This includes advertisements that were discarded.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnInterAsIpmsiAdvtCounterDiscontinuityTime.
         "
     ::= { mvpnInterAsIpmsiAdvtEntry 5 }

  mvpnInterAsIpmsiAdvtReceivedError OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The total number of errors in the Inter-AS I-PMSI
          advertisements received by the PE router.
          The value of this object is the sum of
          the values of mvpnInterAsIpmsiAdvtMalformedTunnelType and
          mvpnInterAsIpmsiAdvtMalformedTunnelId.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnInterAsIpmsiAdvtCounterDiscontinuityTime.
         "
     ::= { mvpnInterAsIpmsiAdvtEntry 6 }

  mvpnInterAsIpmsiAdvtMalformedTunnelType OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of received Inter-AS I-PMSI advertisements that
          contain a PMSI Tunnel attribute whose Tunnel
          Type field has an undefined tunnel type.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnInterAsIpmsiAdvtCounterDiscontinuityTime.
         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnInterAsIpmsiAdvtEntry 7 }

  mvpnInterAsIpmsiAdvtMalformedTunnelId   OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of received Inter-AS I-PMSI advertisements that
          contain a PMSI Tunnel attribute whose Tunnel
          Identifier field cannot be parsed as a
          tunnel identifier of the tunnel types specified in
          the Tunnel type field of the attribute.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnInterAsIpmsiAdvtCounterDiscontinuityTime.
         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnInterAsIpmsiAdvtEntry 8 }

  mvpnInterAsIpmsiAdvtLastReceivedTime   OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime when the last Inter-AS I-PMSI
          advertisement was received by the PE router.
         "
     ::= { mvpnInterAsIpmsiAdvtEntry 9 }

  mvpnInterAsIpmsiAdvtCounterDiscontinuityTime OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime on the most recent occasion
          at which any one or more of this syslog application's
          counters, viz., counters with OID prefix
          'mvpnInterAsIpmsiAdvtReceived' or
          'mvpnInterAsIpmsiAdvtReceivedError' or
          'mvpnInterAsIpmsiAdvtMalformedTunnelType' or
          'mvpnInterAsIpmsiAdvtMalformedTunnelId' suffered a
          discontinuity.
          If no such discontinuities have occurred since the
          last re-initialization of the local management
          subsystem, then this object will have a zero value.
         "
     ::= { mvpnInterAsIpmsiAdvtEntry 10 }

  -- Table of S-PMSIs advertised/received

  mvpnSpmsiAdvtTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnSpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table has information about the S-PMSIs sent/received
          by a PE.
         "
     ::= { mvpnStates 3 }

  mvpnSpmsiAdvtEntry OBJECT-TYPE
     SYNTAX        MvpnSpmsiAdvtEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "An entry in this table is created or updated for each S-PMSI
          advertised/received in a particular MVRF.

          Implementers need to be aware that there are quite a few
          index objects that together can exceed the size allowed
          for an Object Identifier (OID).  So implementers must make
          sure that OIDs of column instances in this table will have
          no more than 128 sub-identifiers, otherwise they cannot be
          accessed using SNMPv1, SNMPv2c, or SNMPv3.
         "
     INDEX  {
              mplsL3VpnVrfName,
              mvpnSpmsiAdvtCmcastAddrType,
              mvpnSpmsiAdvtCmcastGroupAddr,
              mvpnSpmsiAdvtCmcastGroupPrefixLen,
              mvpnSpmsiAdvtCmcastSourceAddr,
              mvpnSpmsiAdvtCmcastSourcePrefixLen,
              mvpnSpmsiAdvtOrigAddrType,
              mvpnSpmsiAdvtOrigAddr
            }
     ::= { mvpnSpmsiAdvtTable 1 }

  MvpnSpmsiAdvtEntry ::= SEQUENCE {
     mvpnSpmsiAdvtCmcastAddrType           InetAddressType,
     mvpnSpmsiAdvtCmcastGroupAddr          InetAddress,
     mvpnSpmsiAdvtCmcastGroupPrefixLen     InetAddressPrefixLength,
     mvpnSpmsiAdvtCmcastSourceAddr         InetAddress,
     mvpnSpmsiAdvtCmcastSourcePrefixLen    InetAddressPrefixLength,
     mvpnSpmsiAdvtOrigAddrType             InetAddressType,
     mvpnSpmsiAdvtOrigAddr                 InetAddress,
     mvpnSpmsiAdvtTunnelAttribute          RowPointer,
     mvpnSpmsiAdvtExpTime                  TimeInterval,
     mvpnSpmsiAdvtRefCnt                   Unsigned32,
     mvpnSpmsiAdvtReceived                 Counter32,
     mvpnSpmsiAdvtReceivedError            Counter32,
     mvpnSpmsiAdvtMalformedTunnelType      Counter32,
     mvpnSpmsiAdvtMalformedTunnelId        Counter32,
     mvpnSpmsiAdvtLastReceivedTime         TimeStamp,
     mvpnSpmsiAdvtCounterDiscontinuityTime TimeStamp
  }

  mvpnSpmsiAdvtCmcastAddrType OBJECT-TYPE
     SYNTAX        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Internet address type of mvpnSpmsiAdvtCmcastGroup/Source."
     ::= { mvpnSpmsiAdvtEntry 1 }

  mvpnSpmsiAdvtCmcastGroupAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "S-PMSI C-multicast group address.

          If it is 0 (or ::0), this is a wildcard group,
          and mvpnSpmsiAdvtCmcastGroupPrefixLen must be 32 (or 128).
         "
     ::= { mvpnSpmsiAdvtEntry 2 }

  mvpnSpmsiAdvtCmcastGroupPrefixLen OBJECT-TYPE
     SYNTAX        InetAddressPrefixLength
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "S-PMSI C-multicast group address prefix length."
     ::= { mvpnSpmsiAdvtEntry 3 }

  mvpnSpmsiAdvtCmcastSourceAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "S-PMSI C-multicast source address
          If it is 0 (or ::0), this is a wildcard source,
          and mvpnSpmsiAdvtCmcastSourcePrefixLen must be 32 (or 128).
         "
     ::= { mvpnSpmsiAdvtEntry 4 }

  mvpnSpmsiAdvtCmcastSourcePrefixLen OBJECT-TYPE
     SYNTAX        InetAddressPrefixLength
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "S-PMSI C-multicast source address prefix length."
     ::= { mvpnSpmsiAdvtEntry 5 }

  mvpnSpmsiAdvtOrigAddrType OBJECT-TYPE
     SYNTAX        InetAddressType
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The Internet address type of mvpnSpmsiAdvtOrigAddr."
     ::= { mvpnSpmsiAdvtEntry 6 }

  mvpnSpmsiAdvtOrigAddr OBJECT-TYPE
     SYNTAX        InetAddress
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "The BGP address of the PE that originated the S-PMSI."
     ::= { mvpnSpmsiAdvtEntry 7 }

  mvpnSpmsiAdvtTunnelAttribute OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "A row pointer to the l2L3VpnMcastPmsiTunnelAttributeTable"
     ::= { mvpnSpmsiAdvtEntry 8 }

  mvpnSpmsiAdvtExpTime OBJECT-TYPE
     SYNTAX        TimeInterval
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "For UDP-based S-PMSI signaling for PIM-MVPN,
          the amount of time remaining before this
          received S-PMSI Join Message expires,
          or the next S-PMSI Join Message refresh is to be
          advertised again from the PE.
          Otherwise, it is 0.
         "
     ::= { mvpnSpmsiAdvtEntry 9 }

  mvpnSpmsiAdvtRefCnt OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of c-multicast routes that are mapped to
          this S-PMSI.
         "
     ::= { mvpnSpmsiAdvtEntry 10 }

  mvpnSpmsiAdvtReceived OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of S-PMSI advertisements received by the PE router.
          This includes advertisements that were discarded.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnIpmsiAdvtCounterDiscontinuityTime.
         "
     ::= { mvpnSpmsiAdvtEntry 11 }

  mvpnSpmsiAdvtReceivedError OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The total number of errors in the S-PMSI advertisements
          received by the PE router.
          The value of this object is the sum of
          the values of mvpnSpmsiAdvtMalformedTunnelType and
          mvpnSpmsiAdvtMalformedTunnelId.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnSpmsiAdvtCounterDiscontinuityTime.
         "
     ::= { mvpnSpmsiAdvtEntry 12 }

  mvpnSpmsiAdvtMalformedTunnelType OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of received S-PMSI advertisements that
          contain a PMSI Tunnel attribute whose Tunnel
          Type field has an undefined tunnel type.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnSpmsiAdvtCounterDiscontinuityTime.
         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnSpmsiAdvtEntry 13 }

  mvpnSpmsiAdvtMalformedTunnelId   OBJECT-TYPE
     SYNTAX        Counter32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of received S-PMSI advertisements that
          contain a PMSI Tunnel attribute whose Tunnel
          Identifier field cannot be parsed as a
          tunnel identifier of the tunnel types specified in
          the Tunnel type field of the attribute.
          Discontinuities in the value of this counter can
          occur at re-initialization of the management system,
          and at other times as indicated by the value of
          mvpnSpmsiAdvtCounterDiscontinuityTime.
         "
     REFERENCE
         "RFC6514 Sec.5"
     ::= { mvpnSpmsiAdvtEntry 14 }

  mvpnSpmsiAdvtLastReceivedTime   OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime when the last S-PMSI
          advertisement was received by the PE router.
         "
     ::= { mvpnSpmsiAdvtEntry 15 }

  mvpnSpmsiAdvtCounterDiscontinuityTime OBJECT-TYPE
     SYNTAX        TimeStamp
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The value of sysUpTime on the most recent occasion
          at which any one or more of this syslog application's
          counters, viz., counters with OID prefix
          'mvpnSpmsiAdvtReceived' or
          'mvpnSpmsiAdvtReceivedError' or
          'mvpnSpmsiAdvtMalformedTunnelType' or
          'mvpnSpmsiAdvtMalformedTunnelId' suffered a
          discontinuity.
          If no such discontinuities have occurred since the
          last re-initialization of the local management
          subsystem, then this object will have a zero value.
         "
     ::= { mvpnSpmsiAdvtEntry 16 }

  -- Table of multicast routes in an MVPN

  mvpnMrouteTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnMrouteEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table contains multicast routing information
          in MVRFs present in the PE.
         "
     ::= { mvpnStates 4 }

  mvpnMrouteEntry OBJECT-TYPE
     SYNTAX        MvpnMrouteEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This entry corresponds to each of multicast routing
          information components for IP datagrams
          from a particular source and addressed to a particular
          IP multicast group address.

          OIDs are limited to 128 sub-identifiers, but this limit
          is not enforced by the syntax of this entry.  In practice,
          this does not present a problem, because IP address types
          allowed by conformance statements do not exceed this limit.
         "
     INDEX  {
              mplsL3VpnVrfName,
              mvpnMrouteCmcastGroupAddrType,
              mvpnMrouteCmcastGroupAddr,
              mvpnMrouteCmcastGroupPrefixLength,
              mvpnMrouteCmcastSourceAddrType,
              mvpnMrouteCmcastSourceAddr,
              mvpnMrouteCmcastSourcePrefixLength
            }
     ::= { mvpnMrouteTable 1 }

  MvpnMrouteEntry ::= SEQUENCE {
     mvpnMrouteCmcastGroupAddrType       InetAddressType,
     mvpnMrouteCmcastGroupAddr           InetAddress,
     mvpnMrouteCmcastGroupPrefixLength   InetAddressPrefixLength,
     mvpnMrouteCmcastSourceAddrType      InetAddressType,
     mvpnMrouteCmcastSourceAddr          InetAddress,
     mvpnMrouteCmcastSourcePrefixLength  InetAddressPrefixLength,
     mvpnMrouteUpstreamNeighborAddrType  InetAddressType,
     mvpnMrouteUpstreamNeighborAddr      InetAddress,
     mvpnMrouteInIfIndex                 InterfaceIndexOrZero,
     mvpnMrouteTimeStamp                 TimeStamp,
     mvpnMrouteExpiryTime                TimeTicks,
     mvpnMrouteProtocol                  IANAipMRouteProtocol,
     mvpnMrouteRtProtocol                IANAipRouteProtocol,
     mvpnMrouteRtAddrType                InetAddressType,
     mvpnMrouteRtAddr                    InetAddress,
     mvpnMrouteRtPrefixLength            InetAddressPrefixLength,
     mvpnMrouteRtType                    INTEGER,
     mvpnMrouteOctets                    Counter64,
     mvpnMroutePkts                      Counter64,
     mvpnMrouteTtlDropOctets             Counter64,
     mvpnMrouteTtlDropPackets            Counter64,
     mvpnMrouteDifferentInIfOctets       Counter64,
     mvpnMrouteDifferentInIfPackets      Counter64,
     mvpnMrouteBps                       CounterBasedGauge64,
     mvpnMroutePmsiPointer               RowPointer,
     mvpnMrouteNumberOfLocalReplication  Unsigned32,
     mvpnMrouteNumberOfRemoteReplication Unsigned32
  }

  mvpnMrouteCmcastGroupAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteGroupAddr.  Legal values correspond to
          the subset of address families for which multicast
          forwarding is supported."
     ::= { mvpnMrouteEntry 1 }

  mvpnMrouteCmcastGroupAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The IP multicast group address which, when combined with
          the corresponding value specified in
          mvpnMrouteGroupPrefixLength, identifies the groups for
          which this entry contains multicast routing information.

          This address object is only significant up to
          mvpnMrouteGroupPrefixLength bits.  The remaining address
          bits are set to zero.  This is especially important for this
          index field, which is part of the index of this entry.  Any
          non-zero bits would signify an entirely different entry.

          For addresses of type ipv4z or ipv6z, the appended zone
          index is significant even though it lies beyond the prefix
          length.  The use of these address types indicate that this
          forwarding state applies only within the given zone.  Zone
          index zero is not valid in this table."
     ::= { mvpnMrouteEntry 2 }

  mvpnMrouteCmcastGroupPrefixLength OBJECT-TYPE
     SYNTAX     InetAddressPrefixLength
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The length in bits of the mask which, when combined with
          the corresponding value of mvpnMrouteGroupAddr, identifies the
          groups for which this entry contains multicast routing
          information.

          The InetAddressType is given by
          mvpnMrouteGroupAddrType.  For values 'ipv4' and
          'ipv4z', this object must be in the range 4..32.  For values
          'ipv6' and 'ipv6z', this object must be in the range
          8..128.
         "
     ::= { mvpnMrouteEntry 3 }

  mvpnMrouteCmcastSourceAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteSourceAddr.

          A value of unknown(0) indicates a non-source-specific entry,
          corresponding to all sources in the group.  Otherwise, the
          value MUST be the same as the value of
          mvpnMrouteGroupAddrType.
         "
     ::= { mvpnMrouteEntry 4 }

  mvpnMrouteCmcastSourceAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The network address which, when combined with the
          corresponding value of mvpnMrouteSourcePrefixLength,
          identifies the sources for which this entry contains
          multicast routing information.

          This address object is only significant up to
          mvpnMrouteSourcePrefixLength bits.  The remaining address
          bits are set to zero.  This is especially important for this
          index field, which is part of the index of this entry.  Any
          non-zero bits would signify an entirely different entry.

          For addresses of type ipv4z or ipv6z, the appended zone
          index is significant even though it lies beyond the prefix
          length.  The use of these address types indicate that this
          source address applies only within the given zone.  Zone
          index zero is not valid in this table.
         "
     ::= { mvpnMrouteEntry 5 }

  mvpnMrouteCmcastSourcePrefixLength OBJECT-TYPE
     SYNTAX     InetAddressPrefixLength
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The length in bits of the mask which, when combined with
          the corresponding value of mvpnMrouteSource, identifies
          the sources for which this entry contains multicast routing
          information.

          The InetAddressType is given by
          mvpnMrouteSourceAddrType.  For the value 'unknown',
          this object must be zero.  For values 'ipv4' and 'ipv4z',
          this object must be in the range 4..32.  For values 'ipv6'
          and 'ipv6z', this object must be in the range 8..128."
     ::= { mvpnMrouteEntry 6 }

  mvpnMrouteUpstreamNeighborAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteUpstreamNeighborAddr.

          An address type of unknown(0) indicates that the upstream
          neighbor is unknown, for example in BIDIR-PIM."
     REFERENCE "RFC 5015"
     ::= { mvpnMrouteEntry 7 }

  mvpnMrouteUpstreamNeighborAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The address of the upstream neighbor (for example, RPF
          neighbor) from which IP datagrams from these sources to
          this multicast address are received.
         "
     ::= { mvpnMrouteEntry 8 }

  mvpnMrouteInIfIndex 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 to this multicast address
          are received.  A value of 0 indicates that datagrams are not
          subject to an incoming interface check, but may be accepted
          on multiple interfaces (for example, in BIDIR-PIM).
         "
     REFERENCE
         "RFC 5015"
     ::= { mvpnMrouteEntry 9 }

  mvpnMrouteTimeStamp OBJECT-TYPE
     SYNTAX     TimeStamp
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The value of sysUpTime at which the multicast routing
          information represented by this entry was learned by the
          router.

          If this information was present at the most recent re-
          initialization of the local management subsystem, then this
          object contains a zero value.
         "
     ::= { mvpnMrouteEntry 10 }

  mvpnMrouteExpiryTime OBJECT-TYPE
     SYNTAX     TimeTicks
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The minimum amount of time remaining before this entry will
          be aged out.  The value 0 indicates that the entry is not
          subject to aging.  If mvpnMrouteNextHopState is pruned(1),
          this object represents the remaining time until the prune
          expires.  If this timer expires, state reverts to
          forwarding(2).  Otherwise, this object represents the time
          until this entry is removed from the table.
         "
     ::= { mvpnMrouteEntry 11 }

  mvpnMrouteProtocol OBJECT-TYPE
     SYNTAX     IANAipMRouteProtocol
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The multicast routing protocol via which this multicast
          forwarding entry was learned.
         "
     ::= { mvpnMrouteEntry 12 }

  mvpnMrouteRtProtocol OBJECT-TYPE
     SYNTAX     IANAipRouteProtocol
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The routing mechanism via which the route used to find the
          upstream or parent interface for this multicast forwarding
          entry was learned.
         "
     ::= { mvpnMrouteEntry 13 }

  mvpnMrouteRtAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteRtAddr.
         "
     ::= { mvpnMrouteEntry 14 }

  mvpnMrouteRtAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The address portion of the route used to find the upstream
          or parent interface for this multicast forwarding entry.

          This address object is only significant up to
          mvpnMrouteRtPrefixLength bits.  The remaining address bits
          are set to zero.

          For addresses of type ipv4z or ipv6z, the appended zone
          index is significant even though it lies beyond the prefix
          length.  The use of these address types indicate that this
          forwarding state applies only within the given zone.  Zone
          index zero is not valid in this table.
         "
     ::= { mvpnMrouteEntry 15 }

  mvpnMrouteRtPrefixLength OBJECT-TYPE
     SYNTAX     InetAddressPrefixLength
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The length in bits of the mask associated with the route
          used to find the upstream or parent interface for this
          multicast forwarding entry.

          The InetAddressType is given by mvpnMrouteRtAddressType.
          For values 'ipv4' and 'ipv4z', this object must be in the
          range 4..32.  For values 'ipv6' and 'ipv6z', this object
          must be in the range 8..128.
         "
     ::= { mvpnMrouteEntry 16 }

  mvpnMrouteRtType OBJECT-TYPE
     SYNTAX     INTEGER {
                 unicast (1),  -- Unicast route used in multicast RIB
                 multicast (2) -- Multicast route
                }
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The reason the given route was placed in the (logical)
          multicast Routing Information Base (RIB).  A value of
          unicast means that the route would normally be placed only
          in the unicast RIB, but was placed in the multicast RIB
          due (instead or in addition) to local configuration, such as
          when running PIM over RIP.  A value of multicast means that
          the route was explicitly added to the multicast RIB by the
          routing protocol, such as the Distance Vector Multicast
          Routing Protocol (DVMRP) or Multiprotocol BGP.
         "
     ::= { mvpnMrouteEntry 17 }

  mvpnMrouteOctets OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of octets contained in IP datagrams that were
          received from these sources and addressed to this multicast
          group address, and which were forwarded by this router.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     ::= { mvpnMrouteEntry 18 }

  mvpnMroutePkts OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of packets routed using this multicast route
          entry.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     ::= { mvpnMrouteEntry 19 }

  mvpnMrouteTtlDropOctets OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of octets contained in IP datagrams that this
          router has received from these sources and addressed to this
          multicast group address, which were dropped because the TTL
          (IPv4) or Hop Limit (IPv6) was decremented to zero, or to a
          value less than ipMcastInterfaceTtl for all next hops.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     ::= { mvpnMrouteEntry 20 }

  mvpnMrouteTtlDropPackets OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of packets that this router has received from
          these sources and addressed to this multicast group address,
          which were dropped because the TTL (IPv4) or Hop Limit
          (IPv6) was decremented to zero, or to a value less than
          ipMcastInterfaceTtl for all next hops.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     ::= { mvpnMrouteEntry 21 }

  mvpnMrouteDifferentInIfOctets OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of octets contained in IP datagrams that this
          router has received from these sources and addressed to this
          multicast group address, which were dropped because they
          were received on an unexpected interface.

          For RPF checking protocols (such as PIM-SM), these packets
          arrived on interfaces other than mvpnMrouteInIfIndex, and
          were dropped because of this failed RPF check.  (RPF paths
          are 'Reverse Path Forwarding' paths; the unicast routes to
          the expected origin of multicast data flows).
          Other protocols may drop packets on an incoming interface
          check for different reasons (for example, BIDIR-PIM performs
          a DF check on receipt of packets).  All packets dropped as a
          result of an incoming interface check are counted here.

          If this counter increases rapidly, this indicates a problem.
          A significant quantity of multicast data is arriving at this
          router on unexpected interfaces, and is not being forwarded.

          For guidance, if the rate of increase of this counter
          exceeds 1% of the rate of increase of mvpnMrouteOctets,
          then there are multicast routing problems that require
          investigation.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     REFERENCE
         "RFC 4601
          RFC 5015
         "
     ::= { mvpnMrouteEntry 22 }

  mvpnMrouteDifferentInIfPackets OBJECT-TYPE
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The number of packets which this router has received from
          these sources and addressed to this multicast group address,
          which were dropped because they were received on an
          unexpected interface.

          For RPF checking protocols (such as PIM-SM), these packets
          arrived on interfaces other than mvpnMrouteInIfIndex, and
          were dropped because of this failed RPF check.  (RPF paths
          are 'Reverse Path Forwarding' path; the unicast routes to
          the expected origin of multicast data flows).

          Other protocols may drop packets on an incoming interface
          check for different reasons (for example, BIDIR-PIM performs
          a DF check on receipt of packets).  All packets dropped as a
          result of an incoming interface check are counted here.

          If this counter increases rapidly, this indicates a problem.
          A significant quantity of multicast data is arriving at this
          router on unexpected interfaces, and is not being forwarded.

          For guidance, if the rate of increase of this counter
          exceeds 1% of the rate of increase of mvpnMroutePkts, then
          there are multicast routing problems that require
          investigation.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteTimeStamp.
         "
     REFERENCE
         "RFC 4601
          RFC 5015
         "
     ::= { mvpnMrouteEntry 23 }

  mvpnMrouteBps OBJECT-TYPE
     SYNTAX     CounterBasedGauge64
     UNITS      "bits per second"
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "Bits per second forwarded by this router using this
          multicast routing entry.

          This value is a sample; it is the number of bits forwarded
          during the last whole 1 second sampling period.  The value
          during the current 1 second sampling period is not made
          available until the period is completed.

          The quantity being sampled is the same as that measured by
          mvpnMrouteOctets.  The units and the sampling method are
          different.
         "
     ::= { mvpnMrouteEntry 24 }

  mvpnMroutePmsiPointer OBJECT-TYPE
     SYNTAX        RowPointer
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The I-PMSI or S-PMSI this C-multicast route is using.
          This is important because an implementation may not have an
          interface corresponding to a provider tunnel,
          that can be used in mvpnMrouteNextHopEntry.
         "
     ::= { mvpnMrouteEntry 25 }

  mvpnMrouteNumberOfLocalReplication OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "Number of replications for local receivers.
          For example, if an ingress PE needs to send traffic out of
          N PE-CE interfaces, then mvpnMrouteNumberOfLocalReplication
          is N.
         "
     ::= { mvpnMrouteEntry 26 }

  mvpnMrouteNumberOfRemoteReplication OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "Number of local replications for remote PEs. For example,
          if the number of remote PEs that need to receive traffic is N,
          then mvpnMrouteNumberOfRemoteReplication is N in case of
          Ingress Replication, but may be less than N in case of RSVP-TE
          or mLDP P2MP tunnels, depending on the actual number of
          replications the PE needs do.
         "

     ::= { mvpnMrouteEntry 27 }

  mvpnMrouteNextHopTable OBJECT-TYPE
     SYNTAX     SEQUENCE OF MvpnMrouteNextHopEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The (conceptual) table containing information on the
          next-hops on outgoing interfaces for routing IP multicast
          datagrams.  Each entry is one of a list of next-hops on
          outgoing interfaces for particular sources sending to a
          particular multicast group address."
     ::= { mvpnStates 5 }

  mvpnMrouteNextHopEntry OBJECT-TYPE
     SYNTAX     MvpnMrouteNextHopEntry
     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 to an IP multicast group address are
          routed.

          OIDs are limited to 128 sub-identifiers, but this limit
          is not enforced by the syntax of this entry.  In practice,
          this does not present a problem, because IP address types
          allowed by conformance statements do not exceed this limit.
         "
     INDEX      {
                  mplsL3VpnVrfName,
                  mvpnMrouteNextHopGroupAddrType,
                  mvpnMrouteNextHopGroupAddr,
                  mvpnMrouteNextHopGroupPrefixLength,
                  mvpnMrouteNextHopSourceAddrType,
                  mvpnMrouteNextHopSourceAddr,
                  mvpnMrouteNextHopSourcePrefixLength,
                  mvpnMrouteNextHopIfIndex,
                  mvpnMrouteNextHopAddrType,
                  mvpnMrouteNextHopAddr
                }
     ::= { mvpnMrouteNextHopTable 1 }

  MvpnMrouteNextHopEntry ::= SEQUENCE {
     mvpnMrouteNextHopGroupAddrType       InetAddressType,
     mvpnMrouteNextHopGroupAddr           InetAddress,
     mvpnMrouteNextHopGroupPrefixLength   InetAddressPrefixLength,
     mvpnMrouteNextHopSourceAddrType      InetAddressType,
     mvpnMrouteNextHopSourceAddr          InetAddress,
     mvpnMrouteNextHopSourcePrefixLength  InetAddressPrefixLength,
     mvpnMrouteNextHopIfIndex             InterfaceIndex,
     mvpnMrouteNextHopAddrType            InetAddressType,
     mvpnMrouteNextHopAddr                InetAddress,
     mvpnMrouteNextHopState               INTEGER,
     mvpnMrouteNextHopTimeStamp           TimeStamp,
     mvpnMrouteNextHopExpiryTime          TimeTicks,
     mvpnMrouteNextHopClosestMemberHops   Unsigned32,
     mvpnMrouteNextHopProtocol            IANAipMRouteProtocol,
     mvpnMrouteNextHopOctets              Counter64,
     mvpnMrouteNextHopPkts                Counter64
  }

  mvpnMrouteNextHopGroupAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteNextHopGroupAddr.  Legal values
          correspond to the subset of address families for which
          multicast forwarding is supported.
         "
     ::= { mvpnMrouteNextHopEntry 1 }

  mvpnMrouteNextHopGroupAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The IP multicast group address which, when combined with
          the corresponding value specified in
          mvpnMrouteNextHopGroupPrefixLength, identifies the groups
          for which this entry contains multicast forwarding
          information.

          This address object is only significant up to
          mvpnMrouteNextHopGroupPrefixLength bits.  The remaining
          address bits are set to zero.  This is especially important
          for this index field, which is part of the index of this
          entry.  Any non-zero bits would signify an entirely
          different entry.

          For addresses of type ipv4z or ipv6z, the appended zone
          index is significant even though it lies beyond the prefix
          length.  The use of these address types indicate that this
          forwarding state applies only within the given zone.  Zone
          index zero is not valid in this table.
         "
     ::= { mvpnMrouteNextHopEntry 2 }

  mvpnMrouteNextHopGroupPrefixLength OBJECT-TYPE
     SYNTAX     InetAddressPrefixLength
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "S-PMSI C-multicast group address prefix length."
         "The length in bits of the mask which, when combined with
          the corresponding value of mvpnMrouteGroup, identifies the
          groups for which this entry contains multicast routing
          information.

          The InetAddressType is given by
          mvpnMrouteNextHopGroupAddressType.  For values 'ipv4' and
          'ipv4z', this object must be in the range 4..32.  For values
          'ipv6' and 'ipv6z', this object must be in the range
          8..128.
         "
     ::= { mvpnSpmsiEntry mvpnMrouteNextHopEntry 3 }

  mvpnSpmsiCmcastSourceAddr

  mvpnMrouteNextHopSourceAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "A value indicating the address family of the address
          contained in mvpnMrouteNextHopSourceAddr.

          A value of unknown(0) indicates a non-source-specific entry,
          corresponding to all sources in the group.  Otherwise, the
          value MUST be the same as the value of
          mvpnMrouteNextHopGroupAddrType."
     ::= { mvpnMrouteNextHopEntry 4 }

  mvpnMrouteNextHopSourceAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "S-PMSI C-multicast source
         "The network address
          If it which, when combined with the
          corresponding value of the mask specified in
          mvpnMrouteNextHopSourcePrefixLength, identifies the
          sources for which this entry specifies a next-hop on an
          outgoing interface.

          This address object is 0 (or ::0), only significant up to
          mvpnMrouteNextHopSourcePrefixLength bits.  The remaining
          address bits are set to zero.  This is especially important
          for this index field, which is part of the index of this
          entry.  Any non-zero bits would signify an entirely
          different entry.

          For addresses of type ipv4z or ipv6z, the appended zone
          index is significant even though it lies beyond the prefix
          length.  The use of these address types indicate that this
          source address applies only within the given zone.  Zone
          index zero is not valid in this table.
         "
     ::= { mvpnMrouteNextHopEntry 5 }

  mvpnMrouteNextHopSourcePrefixLength OBJECT-TYPE
     SYNTAX     InetAddressPrefixLength
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The length in bits of the mask which, when combined with
          the corresponding value specified in
          mvpnMrouteNextHopSource, identifies the sources for which
          this entry specifies a wildcard source, next-hop on an outgoing interface.
          The InetAddressType is given by
          mvpnMrouteNextHopSourceAddressType.  For the value
          'unknown', this object must be zero.  For values 'ipv4' and mvpnSpmsiCmcastSourcePrefixLen
          'ipv4z', this object must be 32 (or 128). in the range 4..32.  For values
          'ipv6' and 'ipv6z', this object must be in the range
          8..128.
         "
     ::= { mvpnSpmsiEntry 4 mvpnMrouteNextHopEntry 6 }

  mvpnSpmsiCmcastSourcePrefixLen

  mvpnMrouteNextHopIfIndex OBJECT-TYPE
     SYNTAX        InetAddressPrefixLength     InterfaceIndex
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "S-PMSI C-multicast source address prefix length."
         "The ifIndex value of the interface for the outgoing
          interface for this next-hop.
         "
     ::= { mvpnSpmsiEntry 5 mvpnMrouteNextHopEntry 7 }

  mvpnSpmsiOrigAddrType

  mvpnMrouteNextHopAddrType OBJECT-TYPE
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The Internet
         "A value indicating the address type family of mvpnSpmsiOrigAddr." the address
          contained in mvpnMrouteNextHopAddr.
         "
     ::= { mvpnSpmsiEntry 6 mvpnMrouteNextHopEntry 8 }

  mvpnSpmsiOrigAddr

  mvpnMrouteNextHopAddr OBJECT-TYPE
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
         "The BGP address of the PE that originated the S-PMSI." next-hop specific to this entry.  For
          most interfaces, this is identical to
          mvpnMrouteNextHopGroup.  Non-Broadcast Multi-Access
          (NBMA) interfaces, however, may
          have multiple next-hop addresses out a single outgoing
          interface.
         "
     ::= { mvpnSpmsiEntry 7 mvpnMrouteNextHopEntry 9 }

  mvpnSpmsiTunnelAttribute

  mvpnMrouteNextHopState OBJECT-TYPE
     SYNTAX        RowPointer     INTEGER { pruned(1), forwarding(2) }
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "A row pointer
         "An indication of whether the outgoing interface and next-
          hop represented by this entry is currently being used to
          forward IP datagrams.  The value 'forwarding' indicates it
          is currently being used; the l2L3VpnMcastPmsiTunnelAttributeTable" value 'pruned' indicates it is
          not.
         "
     ::= { mvpnSpmsiEntry 8 mvpnMrouteNextHopEntry 10 }

  mvpnSpmsiUpTime

  mvpnMrouteNextHopTimeStamp OBJECT-TYPE
     SYNTAX        TimeInterval     TimeStamp
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The time since value of sysUpTime at which the multicast routing
          information represented by this S-PMSI entry was first advertised/received learned by the PE.
          router.

          If this information was present at the most recent re-
          initialization of the local management subsystem, then this
          object contains a zero value.
         "
     ::= { mvpnSpmsiEntry 9 mvpnMrouteNextHopEntry 11 }

  mvpnSpmsiExpTime

  mvpnMrouteNextHopExpiryTime OBJECT-TYPE
     SYNTAX        TimeInterval     TimeTicks
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "For UDP-based S-PMSI signaling for PIM-MVPN,
          the
         "The minimum amount of time remaining before this
          received S-PMSI Join Message expires,
          or the next S-PMSI Join Message refresh entry will
          be aged out.  If mvpnMrouteNextHopState is pruned(1), the
          remaining time until the prune expires and the state reverts
          to forwarding(2).  Otherwise, the remaining time until this
          entry is removed from the table.  The time remaining may be
          advertised again
          copied from mvpnMrouteExpiryTime if the PE.
          Otherwise, it is 0.
         "
     ::= { mvpnSpmsiEntry 10 }

  mvpnSpmsiRefCnt OBJECT-TYPE
     SYNTAX        Unsigned32
     MAX-ACCESS    read-only
     STATUS        current
     DESCRIPTION
         "The number of c-multicast routes that are mapped to
          this S-PMSI.
         "
     ::= { mvpnSpmsiEntry 11 }

  -- Table of multicast routes protocol in an MVPN

  mvpnMrouteTable OBJECT-TYPE
     SYNTAX        SEQUENCE OF MvpnMrouteEntry
     MAX-ACCESS    not-accessible
     STATUS        current
     DESCRIPTION
         "This table augments ipMcastRouteTable, use
          for this entry does not specify next-hop timers.  The value
          0 indicates that the entry is not subject to provide some MVPN
          specific information. aging.
         "
     ::= { mvpnStates 4 mvpnMrouteNextHopEntry 12 }

  mvpnMrouteEntry

  mvpnMrouteNextHopClosestMemberHops OBJECT-TYPE
     SYNTAX        MvpnMrouteEntry     Unsigned32 (0..256)
     MAX-ACCESS    not-accessible read-only
     STATUS     current
     DESCRIPTION
         "The mvpnMrouteEntry matches minimum number of hops between this router and augments any
          member of this IP multicast group reached via this next-hop
          on this outgoing interface.  Any IP multicast datagrams for
          the group that have a TTL (IPv4) or Hop Count (IPv6) less
          than this number of hops will not be forwarded to this
          next-hop.

          A value of 0 means all multicast datagrams are forwarded out
          the interface.  A value of 256 means that no multicast
          datagrams are forwarded out the interface.

          This is an ipMcastRouteEntry,
          with MVPN specific information, such as PMSI used. optimization applied by multicast routing
          protocols that explicitly track hop counts to downstream
          listeners.  Multicast protocols that are not aware of hop
          counts to downstream listeners set this object to 0.
         "
     AUGMENTS      { ipMcastRouteEntry }
        ::= { mvpnMrouteTable 1 }

  MvpnMrouteEntry
     ::= SEQUENCE {
     mvpnMroutePmsiPointer               RowPointer,
     mvpnMrouteNumberOfLocalReplication  Unsigned32,
     mvpnMrouteNumberOfRemoteReplication Unsigned32 mvpnMrouteNextHopEntry 13 }

  mvpnMroutePmsiPointer

  mvpnMrouteNextHopProtocol OBJECT-TYPE
     SYNTAX        RowPointer     IANAipMRouteProtocol
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "The I-PMSI or S-PMSI routing mechanism via which this C-multicast route is using.
          This is important because an implementation may not have an
          interface corresponding to a provider tunnel,
          that can be used in ipMcastRouteNextHopEntry.
         " next-hop was learned."
     ::= { mvpnMrouteEntry 1 mvpnMrouteNextHopEntry 14 }

  mvpnMrouteNumberOfLocalReplication

  mvpnMrouteNextHopOctets OBJECT-TYPE
     SYNTAX        Unsigned32     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "Number
         "The number of replications for local receivers.
          For example, if an ingress PE needs to send traffic out octets of
          N PE-CE interfaces, then mvpnMrouteNumberOfLocalReplication
          is N.
         " multicast packets that have been
          forwarded using this route.

          Discontinuities in this monotonically increasing value
          occur at re-initialization of the management system.
          Discontinuities can also occur as a result of routes being
          removed and replaced, which can be detected by observing
          the value of mvpnMrouteNextHopTimeStamp."
     ::= { mvpnMrouteEntry 2 mvpnMrouteNextHopEntry 15 }

  mvpnMrouteNumberOfRemoteReplication

  mvpnMrouteNextHopPkts OBJECT-TYPE
     SYNTAX        Unsigned32     Counter64
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
         "Number of local replications for remote PEs. For example,
          if the
         "The number of remote PEs that need to receive traffic is N,
          then mvpnMrouteNumberOfRemoteReplication is N in case of
          Ingress Replication, but may be less than N packets which have been forwarded using this
          route.

          Discontinuities in case this monotonically increasing value
          occur at re-initialization of RSVP-TE
          or mLDP P2MP tunnels, depending on the actual number management system.
          Discontinuities can also occur as a result of
          replications routes being
          removed and replaced, which can be detected by observing
          the PE needs do.
         " value of ipMcastRouteNextHopTimeStamp."
     ::= { mvpnMrouteEntry 3 mvpnMrouteNextHopEntry 16 }

  -- MVPN Notifications

  mvpnMvrfChange

  mvpnMvrfOperationChange NOTIFICATION-TYPE
     OBJECTS     {
                   mvpnGenMvrfStatusChange
                   mvpnGenMvrfLastOperation
                 }
     STATUS      current
     DESCRIPTION
         "A mvpnMvrfChange mvpnMvrfOperationChange notification signifies a change about
          a MVRF in the PE. The change event can be creation of
          the MVRF, deletion of the MVRF or an update on the I-PMSI
          or S-PMSI configuration information of the MVRF. The change event
          is indicated by mvpnGenMvrfStatusChange mvpnGenMvrfLastOperation embedded in
          the notification. The user can then query
          mvpnGeneralTable,
          mvpnGenericTable, mvpnPmsiTable, and/or mvpnSpmsiConfigTable mvpnSpmsiTable to
          get the details of the change as necessary.

          Note: Since the creation of a MVRF is often followed by
          configuration of I-PMSI and/or S-PMSIs for the MVRF,
          more than one (three at most) notifications for a MVRF may
          be generated serially, and it is really not necessary to
          generate all three of them. An agent may choose to generate a
          notification for the last event only, that is for S-PMSI
          configuration.

          Similarly, deletion of I-PMSI and S-PMSI configuration on a
          MVRF happens before a MVRF is deleted and it is recommended
          that the agent send the notification for MVRF deletion
          event only.
         "
     ::= { mvpnNotifications 1 }

  mvpnMvrfGroupJoined NOTIFICATION-TYPE
     OBJECTS     {
                   mvpnMrouteTimeStamp
                 }
     STATUS      current
     DESCRIPTION
         "A mvpnMvrfGroupJoined notification signifies that
          this PE has joined to a new multicast group
          serviced in a particular MVPN.
          The change event is indicated by mvpnMrouteTimeStamp
          embedded in the notification.
         "
     ::= { mvpnNotifications 2 }

   mvpnMvrfGroupLeft NOTIFICATION-TYPE
     OBJECTS     {
                   mvpnMrouteTimeStamp
                 }
     STATUS      current
     DESCRIPTION
         "A mvpnMvrfGroupJoined notification signifies that
          this PE has left from a  multicast group
          serviced in a particular MVPN.
          The change event is indicated by mvpnMrouteTimeStamp
          embedded in the notification.
         "
     ::= { mvpnNotifications 3 }

  -- MVPN MIB Conformance Information

  mvpnGroups      OBJECT IDENTIFIER ::= { mvpnConformance 1 }
  mvpnCompliances OBJECT IDENTIFIER ::= { mvpnConformance 2 }

  -- Compliance Statements

      mvpnModuleFullCompliance MODULE-COMPLIANCE
         STATUS  current
         DESCRIPTION
              "Compliance statement for agents that provide full support
               for the MCAST-VPN-MIB
              "
         MODULE  -- this module
         MANDATORY-GROUPS {
             mvpnScalarGroup,
             mvpnGeneralGroup,
             mvpnPmsiConfigGroup,
             mvpnSpmsiConfigGroup,
             mvpnGenericGroup,
             mvpnPmsiGroup,
             mvpnSpmsiGroup,
             mvpnSpmsiAdvtGroup,
             mvpnMrouteGroup,
             mvpnMrouteNextHopGroup,
             mvpnNotificationGroup
         }

         GROUP mvpnIpmsiGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  BGP signaling for I-PMSI.
                 "

         GROUP mvpnInterAsIpmsiGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  Inter-AS Segmented I-PMSI.
                 "

         GROUP mvpnBgpGeneralGroup mvpnBgpGenericGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  BGP-MVPN.
                 "

         GROUP mvpnOptionalGroup
             DESCRIPTION
                 "This group is optional.
                 "

         ::= { mvpnCompliances 1 }

      mvpnModuleReadOnlyCompliance MODULE-COMPLIANCE
         STATUS  current
         DESCRIPTION "Compliance requirement for implementations that
                      only provide read-only support for MCAST-VPN-MIB.
                      Such devices can then be monitored but cannot be
                      configured using this MIB module.

                     "
         MODULE  -- this module
         MANDATORY-GROUPS {
             mvpnScalarGroup,
             mvpnGeneralGroup,
             mvpnPmsiConfigGroup,
             mvpnSpmsiConfigGroup,
             mvpnGenericGroup,
             mvpnPmsiGroup,
             mvpnSpmsiGroup,
             mvpnSpmsiAdvtGroup,
             mvpnMrouteGroup,
             mvpnMrouteNextHopGroup,
             mvpnNotificationGroup
         }

         GROUP mvpnIpmsiGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  BGP signaling for I-PMSI.
                 "

         GROUP mvpnInterAsIpmsiGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  Inter-AS Segmented I-PMSI.
                 "

         GROUP mvpnBgpGeneralGroup mvpnBgpGenericGroup
             DESCRIPTION
                 "This group is mandatory for systems that support
                  BGP-MVPN.
                 "

         GROUP mvpnOptionalGroup
             DESCRIPTION
                 "This group is optional.
                 "

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

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

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

         OBJECT       mvpnGenInterAsPmsiConfig       mvpnGenInterAsPmsiInfo
         MIN-ACCESS   read-only
         DESCRIPTION "Write access is not required."
         OBJECT       mvpnGenUmhSelection
         MIN-ACCESS   read-only
         DESCRIPTION "Write access is not required."

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

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

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

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

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

         OBJECT       mvpnGenRowStatus
         SYNTAX       RowStatus { active(1) }       mvpnPmsiEncapsulationType
         MIN-ACCESS   read-only
         DESCRIPTION "Write access is not required."

         OBJECT       mvpnPmsiConfigRowStatus
         SYNTAX       RowStatus { active(1) }       mvpnSpmsiThreshold
         MIN-ACCESS   read-only
         DESCRIPTION "Write access is not required."

         OBJECT       mvpnSpmsiConfigRowStatus
         SYNTAX       RowStatus { active(1) }       mvpnSpmsiPmsiPointer
         MIN-ACCESS   read-only
         DESCRIPTION "Write access is not required."

         ::= { mvpnCompliances 2 }

  -- units of conformance

      mvpnScalarGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnMvrfs,
                    mvpnV4Mvrfs,
                    mvpnV6Mvrfs,
                    mvpnPimV4Mvrfs,
                    mvpnPimV6Mvrfs,
                    mvpnBgpV4Mvrfs,
                    mvpnBgpV6Mvrfs,
                    mvpnMldpMvrfs,
                    mvpnNotificationEnable
                    mvpnMldpMvrfs
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               global MVPN parameters.
              "
          ::= { mvpnGroups 1 }

      mvpnGeneralGroup

      mvpnGenericGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnGenMvrfStatusChange,
                    mvpnGenMvrfStatusChangeTime,
                    mvpnGenMvrfLastOperation,
                    mvpnGenMvrfLastOperationTime,
                    mvpnGenCmcastRouteProtocol,
                    mvpnGenIpmsiConfig,
                    mvpnGenInterAsPmsiConfig,
                    mvpnGenIpmsiInfo,
                    mvpnGenInterAsPmsiInfo,
                    mvpnGenUmhSelection,
                    mvpnGenSiteType,
                    mvpnGenSptnlLimit,
                    mvpnGenRowStatus
                    mvpnGenCustomerSiteType,
                    mvpnGenSPTunnelLimit
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               per-VRF MVPN parameters.
              "
          ::= { mvpnGroups 2 }

      mvpnPmsiConfigGroup

      mvpnPmsiGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnPmsiConfigEncapsType,
                    mvpnPmsiConfigRowStatus
                    mvpnPmsiEncapsulationType
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               PMSI tunnel configurations.
              "
          ::= { mvpnGroups 3 }

      mvpnSpmsiConfigGroup

      mvpnSpmsiGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnSpmsiConfigThreshold,
                    mvpnSpmsiConfigPmsiPointer,
                    mvpnSpmsiConfigRowStatus
                    mvpnSpmsiThreshold,
                    mvpnSpmsiPmsiPointer
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               S-PMSI configurations.
              "
          ::= { mvpnGroups 4 }

      mvpnIpmsiGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnIpmsiUpTime,
                    mvpnIpmsiAttribute
                    mvpnIpmsiAdvtTunnelAttribute,
                    mvpnIpmsiAdvtReceived,
                    mvpnIpmsiAdvtReceivedError,
                    mvpnIpmsiAdvtMalformedTunnelType,
                    mvpnIpmsiAdvtMalformedTunnelId,
                    mvpnIpmsiAdvtLastReceivedTime,
                    mvpnIpmsiAdvtCounterDiscontinuityTime

                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               Intra-AS I-PMSI attributes.
              "
          ::= { mvpnGroups 5 }

      mvpnInterAsIpmsiGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnInterAsIpmsiAttribute
                    mvpnInterAsIpmsiAdvtTunnelAttribute,
                    mvpnInterAsIpmsiAdvtReceived,
                    mvpnInterAsIpmsiAdvtReceivedError,
                    mvpnInterAsIpmsiAdvtMalformedTunnelType,
                    mvpnInterAsIpmsiAdvtMalformedTunnelId,
                    mvpnInterAsIpmsiAdvtLastReceivedTime,
                    mvpnInterAsIpmsiAdvtCounterDiscontinuityTime
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               Inter-AS I-PMSI attributes.
              "
          ::= { mvpnGroups 6 }

      mvpnSpmsiGroup

      mvpnSpmsiAdvtGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnSpmsiTunnelAttribute,
                    mvpnSpmsiUpTime,
                    mvpnSpmsiExpTime,
                    mvpnSpmsiRefCnt
                    mvpnSpmsiAdvtTunnelAttribute,
                    mvpnSpmsiAdvtExpTime,
                    mvpnSpmsiAdvtRefCnt,
                    mvpnSpmsiAdvtReceived,
                    mvpnSpmsiAdvtReceivedError,
                    mvpnSpmsiAdvtMalformedTunnelType,
                    mvpnSpmsiAdvtMalformedTunnelId,
                    mvpnSpmsiAdvtLastReceivedTime,
                    mvpnSpmsiAdvtCounterDiscontinuityTime
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               S-PMSI attributes.
              "
          ::= { mvpnGroups 7 }

      mvpnMrouteGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnMrouteUpstreamNeighborAddrType,
                    mvpnMrouteUpstreamNeighborAddr,
                    mvpnMrouteInIfIndex,
                    mvpnMrouteTimeStamp,
                    mvpnMrouteExpiryTime,
                    mvpnMrouteProtocol,
                    mvpnMrouteRtProtocol,
                    mvpnMrouteRtAddrType,
                    mvpnMrouteRtAddr,
                    mvpnMrouteRtPrefixLength,
                    mvpnMrouteRtType,
                    mvpnMrouteOctets,
                    mvpnMroutePkts,
                    mvpnMrouteTtlDropOctets,
                    mvpnMrouteTtlDropPackets,
                    mvpnMrouteDifferentInIfOctets,
                    mvpnMrouteDifferentInIfPackets,
                    mvpnMrouteBps,
                    mvpnMroutePmsiPointer,
                    mvpnMrouteNumberOfLocalReplication,
                    mvpnMrouteNumberOfRemoteReplication
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               VPN multicast forwarding states.
              "
          ::= { mvpnGroups 8 }

      mvpnBgpGeneralGroup

      mvpnMrouteNextHopGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnMrouteNextHopState,
                    mvpnMrouteNextHopTimeStamp,
                    mvpnMrouteNextHopExpiryTime,
                    mvpnMrouteNextHopClosestMemberHops,
                    mvpnMrouteNextHopProtocol,
                    mvpnMrouteNextHopOctets,
                    mvpnMrouteNextHopPkts
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage
               next hop information of VPN multicast.
              "
          ::= { mvpnGroups 9 }

      mvpnBgpGenericGroup    OBJECT-GROUP
          OBJECTS {
                    mvpnBgpGenMode,
                    mvpnBgpGenVrfRtImport,
                    mvpnBgpGenSrcAs
                    mvpnBgpGenVrfRouteImport,
                    mvpnBgpGenSrcAs,
                    mvpnBgpGenCmcastRouteWithdrawalTimer,
                    mvpnBgpGenSrcSharedTreeJoinTimer,
                    mvpnBgpGenMsgRateLimit,
                    mvpnBgpGenMaxSpmsiAdRoutes,
                    mvpnBgpGenMaxSpmsiAdRouteFreq,
                    mvpnBgpGenMaxSrcActiveAdRoutes,
                    mvpnBgpGenMaxSrcActiveAdRouteFreq
                  }
          STATUS      current
          DESCRIPTION
              "These objects are used to monitor/manage BGP-MVPN."
          ::= { mvpnGroups 9 10 }

      mvpnOptionalGroup OBJECT-GROUP
          OBJECTS {
                    mvpnMroutePmsiPointer
                  }
          STATUS      current
          DESCRIPTION
              "Support of these object is not required."
          ::= { mvpnGroups 10 11 }

      mvpnNotificationGroup NOTIFICATION-GROUP
       NOTIFICATIONS {
                       mvpnMvrfChange
                       mvpnMvrfOperationChange,
                       mvpnMvrfGroupJoined,
                       mvpnMvrfGroupLeft
                     }
      STATUS  current
      DESCRIPTION
             "Objects required for MVPN notifications."
          ::= { mvpnGroups 11 12 }

  END

4.  Security Considerations

   This MIB contains some read-only objects that may be deemed senstive
   by some though perhaps not all operators.  It also contains some
   read- write objects, whose setting will change the device's behavior
   related to MVPN.  Appropriate security procedures related to SNMP in
   general but not specific to this MIB need to be implemented by
   concerned operators.

   There are a number of management objects defined in this MIB module
   with a MAX-ACCESS clause of read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in some network
   environments.  The support for SET operations in a non-secure
   environment without proper protection opens devices to attack.  These
   are the tables and objects and their sensitivity/vulnerability:

   o  mvpnNotificationEnable,  mvpnGenCmcastRouteProtocol,
      mvpnGenIpmsiConfig, mvpnGenInterAsPmsiConfig, mvpnGenIpmsiInfo,
      mvpnGenInterAsPmsiInfo, mvpnGenUmhSelection,
      mvpnGenSiteType, mvpnGenSptnlLimit,
      mvpnGenCustomerSiteType, mvpnGenSPTunnelLimit, mvpnBgpGenMode,
      mvpnBgpGenVrfRtImport, mvpnPmsiConfigEncapsType,
      mvpnSpmsiConfigThreshold, mvpnSpmsiConfigPmsiPointer

   o  mvpnGenRowStatus, mvpnPmsiConfigRowStatus,
      mvpnSpmsiConfigRowStatus mvpnPmsiEncapsulationType,
      mvpnSpmsiThreshold, mvpnSpmsiPmsiPointer

   Some of the readable objects in this MIB module (i.e., objects with a
   MAX-ACCESS other than not-accessible) may be considered sensitive or
   vulnerable in some network environments.  It is thus important to
   control even GET and/or NOTIFY access to these objects and possibly
   to even encrypt the values of these objects when sending them over
   the network via SNMP.  These are the tables and objects and their
   sensitivity/vulnerability:

   o  [TBD]

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

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

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED.  Instead, it is RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/operator
   responsibility to ensure that the SNMP entity giving access to an
   instance of this MIB module is properly configured to give access to
   the objects only to those principals (users) that have legitimate
   rights to indeed GET or SET (change/create/delete) them.

5.  IANA Considerations

   IANA is requested to root MIB objects in the MIB module contained in
   this document under the mib-2 subtree.

6.  Acknowledgement

   This document borrowed some text from Cisco PIM-MVPN MIB
   [I-D.svaidya-mcast-vpn-mib].  We would like to thank Yakov Rekhter,
   Jeffrey Haas, Huajin Jeng, Durga Prasad Velamuri for their helpful
   comments.

7.  References

7.1.  Normative References

   [I-D.ietf-bess-l2l3-vpn-mcast-mib]
              Zhang, Z. and H. Tsunoda, "L2L3 VPN Multicast MIB", draft-
              ietf-bess-l2l3-vpn-mcast-mib-12 (work in progress),
              November 2017.

   [RFC2003]  Perkins, C., "IP Encapsulation within IP", RFC 2003, DOI
              10.17487/RFC2003, October 1996, <https://www.rfc-
              editor.org/info/rfc2003>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
              RFC2119, March 1997, <https://www.rfc-editor.org/info/
              rfc2119>.

   [RFC2578]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Structure of Management Information
              Version 2 (SMIv2)", STD 58, RFC 2578, DOI 10.17487/
              RFC2578, April 1999, <https://www.rfc-editor.org/info/
              rfc2578>.

   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD
              58, RFC 2579, DOI 10.17487/RFC2579, April 1999,
              <https://www.rfc-editor.org/info/rfc2579>.

   [RFC2580]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Conformance Statements for SMIv2",
              STD 58, RFC 2580, DOI 10.17487/RFC2580, April 1999,
              <https://www.rfc-editor.org/info/rfc2580>.

   [RFC2784]  Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
              Traina, "Generic Routing Encapsulation (GRE)", RFC 2784,
              DOI 10.17487/RFC2784, March 2000, <https://www.rfc-
              editor.org/info/rfc2784>.

   [RFC2863]  McCloghrie, K. and F. Kastenholz, "The Interfaces Group
              MIB", RFC 2863, DOI 10.17487/RFC2863, June 2000,
              <https://www.rfc-editor.org/info/rfc2863>.

   [RFC3032]  Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
              Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
              Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001,
              <https://www.rfc-editor.org/info/rfc3032>.

   [RFC3414]  Blumenthal, U. and B. Wijnen, "User-based Security Model
              (USM) for version 3 of the Simple Network Management
              Protocol (SNMPv3)", STD 62, RFC 3414, DOI 10.17487/
              RFC3414, December 2002, <https://www.rfc-editor.org/info/
              rfc3414>.

   [RFC3826]  Blumenthal, U., Maino, F., and K. McCloghrie, "The
              Advanced Encryption Standard (AES) Cipher Algorithm in the
              SNMP User-based Security Model", RFC 3826, DOI 10.17487/
              RFC3826, June 2004, <https://www.rfc-editor.org/info/
              rfc3826>.

   [RFC4382]  Nadeau, T., Ed. and H. van der Linde, Ed., "MPLS/BGP Layer
              3 Virtual Private Network (VPN) Management Information
              Base", RFC 4382, DOI 10.17487/RFC4382, February 2006,
              <https://www.rfc-editor.org/info/rfc4382>.

   [RFC5132]  McWalter, D., Thaler,

   [RFC4659]  De Clercq, J., Ooms, D., Carugi, M., and A. Kessler, "IP Multicast
              MIB", F. Le Faucheur,
              "BGP-MPLS IP Virtual Private Network (VPN) Extension for
              IPv6 VPN", RFC 5132, 4659, DOI 10.17487/RFC5132, December 2007,
              <https://www.rfc-editor.org/info/rfc5132>. 10.17487/RFC4659, September 2006,
              <https://www.rfc-editor.org/info/rfc4659>.

   [RFC5591]  Harrington, D. and W. Hardaker, "Transport Security Model
              for the Simple Network Management Protocol (SNMP)", STD
              78, RFC 5591, DOI 10.17487/RFC5591, June 2009,
              <https://www.rfc-editor.org/info/rfc5591>.

   [RFC5592]  Harrington, D., Salowey, J., and W. Hardaker, "Secure
              Shell Transport Model for the Simple Network Management
              Protocol (SNMP)", RFC 5592, DOI 10.17487/RFC5592, June
              2009, <https://www.rfc-editor.org/info/rfc5592>.

   [RFC6353]  Hardaker, W., "Transport Layer Security (TLS) Transport
              Model for the Simple Network Management Protocol (SNMP)",
              STD 78, RFC 6353, DOI 10.17487/RFC6353, July 2011,
              <https://www.rfc-editor.org/info/rfc6353>.

   [RFC6513]  Rosen, E., Ed. and R. Aggarwal, Ed., "Multicast in MPLS/
              BGP IP VPNs", RFC 6513, DOI 10.17487/RFC6513, February
              2012, <https://www.rfc-editor.org/info/rfc6513>.

   [RFC6514]  Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP
              Encodings and Procedures for Multicast in MPLS/BGP IP
              VPNs", RFC 6514, DOI 10.17487/RFC6514, February 2012,
              <https://www.rfc-editor.org/info/rfc6514>.

   [RFC6625]  Rosen, E., Ed., Rekhter, Y., Ed., Hendrickx, W., and R.
              Qiu, "Wildcards in Multicast VPN Auto-Discovery Routes",
              RFC 6625, DOI 10.17487/RFC6625, May 2012,
              <https://www.rfc-editor.org/info/rfc6625>.

   [RFC7761]  Fenner, B., Handley, M., Holbrook, H., Kouvelas, I.,
              Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent
              Multicast - Sparse Mode (PIM-SM): Protocol Specification
              (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March
              2016, <https://www.rfc-editor.org/info/rfc7761>.

   [RTPROTO]  IANA, "IP Route Protocol MIB", 2016,
              <http://www.iana.org/assignments/ianaiprouteprotocol-mib>.

7.2.  Informative References

   [I-D.svaidya-mcast-vpn-mib]
              Vaidya, S., "Multicast in BGP/MPLS IP VPNs Management
              Information Base", draft-svaidya-mcast-vpn-mib-02 (work in
              progress), March 2005.

   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410, DOI 10.17487/
              RFC3410, December 2002, <https://www.rfc-editor.org/info/
              rfc3410>.

Authors' Addresses

   Zhaohui (Jeffrey) Zhang (editor)
   Juniper Networks, Inc.
   10 Technology Park Drive
   Westford, MA  01886
   USA

   Email: zzhang@juniper.net
   Saud Asif
   AT&T
   C5-3D30 200 South Laurel Avenue
   Middletown, NJ 07748
   USA

   Email: sasif@att.com

   Andy Green
   BT Design 21CN Converged Core IP & Data
   01473 629360 Adastral Park, Martlesham Heath, Ipswich IP5 3RE
   UK

   Email: andy.da.green@bt.com

   Sameer Gulrajani
   Cisco Systems
   Tasman Drive San Jose, CA  95134
   USA

   Email: sameerg@cisco.com

   Pradeep G. Jain
   Alcatel-Lucent Inc
   701 E Middlefield road Mountain view, CA 94043
   USA

   Email: pradeep.jain@alcatel-lucent.com

   Hiroshi Tsunoda (editor)
   Tohoku Institute of Technology
   35-1, Yagiyama Kasumi-cho, Taihaku-ku
   Sendai  982-8577
   Japan

   Phone: +81-22-305-3411
   Email: tsuno@m.ieice.org