L2 VPN Working Group P. Jain
Internet-Draft K. Singh
Intended status: Best Current Practice R. Boovaraghavan
Expires: December 05, 2012 Alcatel-Lucent, Inc.
J. Zhang
Juniper Networks, Inc.
June 05, 2012

VPLS with Point-To-Multipoint LSPs Management Information Base
draft-jain-l2vpn-mcast-vpls-mib-00

Abstract

This memo defines an experimental portion of the Management Information Base for use with network management protocols in the Internet community.

In particular, it describes managed objects to configure and/or monitor multicast in VPLS using Point-to-Multipoint LSPs or VPLS-MCAST [I-D.ietf-l2vpn-vpls-mcast].

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 December 05, 2012.

Copyright Notice

Copyright (c) 2012 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

VPLS using Point-to-Multipoint LSPs or [VPLS-MCAST] describes procedures for VPLS multicast that utilize multicast trees in the sevice provider (SP) network. The multicase tree is typically formed using point-to-multipoint LSPs and is used to flood broadcast, multicast, and unknown unicast traffic across a VPLS core network to all the PE routers.

This memo describes managed objects to configure and/or monitor multicast in VPLS using Point-to-Multipoint LSPs or VPLS-MCAST [I-D.ietf-l2vpn-vpls-mcast].

In the current version of this memo does not address MIB Objects for Inter-AS VPLS Multicast. Objects related to this would be adressed in subscequent updates of this proposal.

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

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

4. Terminology

Terminology used in this document:

VPLS : Virtual Provider LAN Service.

P2MP : Point-to-Multipoint.

MLDP : Multicast Label Distribution Protocol.

SNMP : Simple Network Management Protocol.

MIB : Management Information Base.

PE Router: Provider Edge Router.

P Router : Provider Core Router.

I-PMSI : Inclusive-Provider Multicast Service Interface.

S-PMSI : Selective-Provider Multicast Service Interface.

MVPN : Multicast Virtual Private Networks.

5. Structure of the MIB Module

The MIB Structure for defining VPLS using Point-to-Multipoint LSPs or [VPLS-MCAST] would be based off the existing VPLS-MIB [I-D.ietf-l2vpn-vpls-mib] defination.

Following is the relation of the VPLS-MCAST MIB with existing VPLS-MIB

       
		         
		                +--------+   +-----------------+
                    PW Mapping  |        |   |                 |
                         -----> | PW-MIB |-->|PW-ENET/MPLS-MIB |
          __________    /       |        |   |                 |
         |          |  /        +--------+   +-----------------+
         | VPLS MIB | /                       +------------+
         |          |---------------------->  |            |
         +----------- MAC addr. mapping using | BRIDGE-MIB |
               |       [SNMP-CONTEXT-MAP-MIB] |            |
               |                              +------------+
               | 
         +-----------+
         |           |
         | VPLS-MCAST|
         |    MIB    |
         +-----------+
		 

       

5.1. Summary of MIB Module

The configuration and states specific to an VPLS-MCAST include the following:

- C-multicast routing exchange protocol BGP

- I-PMSI, S-PMSI and corresponding provider tunnels

- Mapping of c-multicast states to PMSI/tunnels

To represent them, the following tables defined.

       
					 
    VplsMcastGeneral ---->   VplsPmsiConfig        <----- VplsSpmsiConfig       
     

    VplsIpmsi        ----> VplsPmsiTunnelAttribute <----- VplsSpmsi       
                              |
                              +-VplsIpmsiBgpADAttribute       
                              +-VplsIpmsiBgpVplsAttribute       
                                              

	

- vplsMcastGeneralTable

An entry in this table contains general informaion about VPLS-PMSI created on the device.

- vplsPmsiConfigTable

An entry in this table is created for each PMSI configured on this router. It can be referred to by base VPLS configuration (in vplsConfigEntry) or S-PMSI configuration (in vplsSpmsiConfigEntry).

- vplsIpmsiBgpADTable

This table specifies all advertised and received I-PMSI advertisements. An entry is created in this table for each IPMSI attribute advertised/ received in BGP-AD

- vplsIpmsiBgpVplsTable

An entry is created in this table for each IPMSI attribute advertised/ received in BGP-VPLS

- vplsPmsiTunnelAttributeTable

This table is specified for advertised/received PMSI attributes to be referred to by I-PMSI or S-PMSI table entries.

- vplsSpmsiConfigTable

This table specifies S-PMSI configuration for each VPLS entry

- vplsSpmsiTable

This table contains information about the VPLS S-PMSIs advertised/ received for a given VPLS instance

6. Relationship to Other MIB Modules

This section provides an overview of the relationship between the VPLS-MCAST MIB module and other VPLS MIB modules.

The arrows in the following diagram show a 'depends on' relationship. A relationship "MIB module A depends on MIB module B" means that MIB module A uses an object, object identifier, or textual convention defined in MIB module B, or that MIB module A contains a pointer (index or RowPointer) to an object in MIB module B.

	
		
        VPLS-GENERIC-DRAFT-01-MIB    VPLS-BGP-DRAFT-01-MIB
                  |                          |
                  +--------------------------+
                               |
                               V							   
                         VPLS-MCAST-MIB
		
	    

7. Definitions


    VPLS-MCAST-MIB DEFINITIONS ::= BEGIN
      
    IMPORTS
	MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,  
	experimental, Unsigned32
	   FROM SNMPv2-SMI

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

	TruthValue, RowPointer, RowStatus, TimeStamp, TimeInterval  
	   FROM SNMPv2-TC  

	SnmpAdminString  
	   FROM SNMP-FRAMEWORK-MIB  

	InetAddress, InetAddressType  
	   FROM INET-ADDRESS-MIB  

	 MplsLabel
	   FROM MPLS-TC-STD-MIB

	vplsConfigIndex, 
	vplsBgpADConfigRouteDistinguisher,
	vplsBgpADConfigPrefix,
	vplsBgpADConfigVplsId
	   FROM VPLS-GENERIC-DRAFT-01-MIB

	vplsBgpVEName
	   FROM VPLS-BGP-DRAFT-01-MIB;

		   
    vplsMcastMIB MODULE-IDENTITY
	LAST-UPDATED "201203141200Z"  -- 14 March 2012 12:00:00 GMT
	ORGANIZATION "IETF Layer-2 Virtual Private
		      Networks Working Group."
	CONTACT-INFO

		 "
		 Comments and discussion to l2vpn@ietf.org
		 Pradeep Jain
		 Alcatel-Lucent, Inc.
		 701 E Middlefield Rd
		 Mountain View, CA  94040
		 USA
		 Email: pradeep.jain@alcatel-lucent.com

		 Kanwar Singh
		 Alcatel-Lucent, Inc.
		 701 E Middlefield Rd
		 Mountain View, CA  94040
		 USA
		 Email: kanwar.singh@alcatel-lucent.com

		 Ranganathan Boovaraghavan
		 Alcatel-Lucent, Inc.
		 701 E Middlefield Rd
		 Mountain View, CA  94040
		 USA
		 Email: ranganathan.boovaraghavan@alcatel-lucent.com

		 Jeffrey (Zhaohui) Zhang
                 Juniper Networks, Inc.
                 10 Technology Park Drive
                 Westford, MA 01886
                 USA
                 Email: zzhang@juniper.net
		 

	       "

	DESCRIPTION
		 "This MIB contains managed object definitions for
		  multicast in Layer 2 VPLS defined by [L2VPN]. 
		  Copyright (C) The Internet Society (2012)."

	-- Revision history.
	REVISION "201203141200Z"  -- 14 March 2012 12:00:00 GMT
	DESCRIPTION
	       "Initial version of the draft."
	::= { experimental 99 } -- number to be assigned


	-- Top level components of this MIB.
	-- Traps
	 vplsMcastNotifications OBJECT IDENTIFIER ::= { vplsMcastMIB 0 }
      
	-- tables, scalars
	 vplsMcastObjects       OBJECT IDENTIFIER ::= { vplsMcastMIB 1 }
      
	-- conformance
	 vplsMcastConformance   OBJECT IDENTIFIER ::= { vplsMcastMIB 2 }
      
	 vplsMcastScalars  OBJECT IDENTIFIER ::= { vplsMcastObjects 1 }
	 vplsMcastGeneral  OBJECT IDENTIFIER ::= { vplsMcastObjects 2 }
	 vplsMcastConfig   OBJECT IDENTIFIER ::= { vplsMcastObjects 3 }
	 vplsMcastStates   OBJECT IDENTIFIER ::= { vplsMcastObjects 4 }
      

      -- Scalar Objects
	 
    vplsMcastNotificationEnable 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 }
	::= { vplsMcastScalars 1 }

    vplsMcastGeneralTable  OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsMcastGeneralEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "This table specifies the general information about the VPLS-PMSI
	    present in this device."
       ::= { vplsMcastGeneral 1 }

    vplsMcastGeneralEntry OBJECT-TYPE
       SYNTAX        VplsMcastGeneralEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "An entry in this table is created for every VPLS Instance in the 
	    device." 
       INDEX       { vplsConfigIndex }
       ::= { vplsMcastGeneralTable 1 }

    VplsMcastGeneralEntry ::= SEQUENCE {
       vplsMcastGenOperStatusChange         INTEGER,
       vplsMcastGenOperChangeTime           TimeStamp,
       vplsMcastGenIpmsiConfig              RowPointer,
       vplsMcastGenInterasPmsiConfig        RowPointer,
       vplsMcastGenSiteType                 INTEGER,
       vplsMcastGenExcludeUnknownUnicast    TruthValue,             
       vplsMcastGenRowStatus                RowStatus
    }

    vplsMcastGenOperStatusChange OBJECT-TYPE
       SYNTAX      INTEGER { createdVplsPmsi(1),
			     deletedVplsPmsi(2),
			     modifiedVplsIpmsiConfig(3),
			     modifiedVplsSpmsiConfig(4)
			    }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
	   "This object describes the last operational change that 
	    happened for the given VPLS-PMSI. 

	    createdVplsPmsi - indicates that VPLS PMSI was created in the 
	    device.

	    deletedVplsPmsi - indicates that the VPLS PMSI was deleted from the 
	    device. A row in this table will never have 
	    vplsMcastGenOperStatusChange equal to deletedVplsPmsi(2),
	    because in that case the row itself will be deleted from the 
	    table. This value for vplsMcastGenOperStatusChange is defined 
	    mainly for use in vplsMcastPmsiChange notification.

	    modifiedVplsIpmsiConfig - indicates that the I-PMSI 
	    for the VPLS was configured, deleted or changed.

	    modifiedVplsSpmsiConfig - indicates that the S-PMSI 
	    for the VPLS was configured, deleted or changed."
       DEFVAL { createdVplsPmsi }
       ::= { vplsMcastGeneralEntry 1 }

    vplsMcastGenOperChangeTime OBJECT-TYPE
       SYNTAX        TimeStamp
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "The time at which the last operational change for the VPLS-PMSI in 
	    question took place. The last operational change is specified 
	    by vplsMcastGenOperStatusChange."
       ::= { vplsMcastGeneralEntry 2 }

    vplsMcastGenIpmsiConfig OBJECT-TYPE
       SYNTAX        RowPointer
       MAX-ACCESS    read-create
       STATUS        current
       DESCRIPTION
	   "This points to a row in vplsMcastPmsiConfigTable,
	    for I-PMSI configuration."
       ::= { vplsMcastGeneralEntry 3 }

    vplsMcastGenInterasPmsiConfig OBJECT-TYPE
       SYNTAX        RowPointer
       MAX-ACCESS    read-create
       STATUS        current
       DESCRIPTION
	   "This points to a row in vplsMcastPmsiConfigTable,
	    for inter-as I-PMSI configuration in case of segmented
	    inter-as provider tunnels."
       ::= { vplsMcastGeneralEntry 4 }

    vplsMcastGenSiteType OBJECT-TYPE
	 SYNTAX            INTEGER {
			      senderReceiver (1),
			      receiverOnly   (2),
			      senderOnly     (3)
			    }
	 MAX-ACCESS        read-write
	 STATUS            current
	 DESCRIPTION
	    "Whether this site is a receiver-only site or not.
	     sender-receiver (1):   both sender and receiver site.
	     receiver-only   (2):   receiver-only site.
	     sender-only     (3):   sender only site."
	 ::= { vplsMcastGeneralEntry 5 }

    vplsMcastGenExcludeUnknownUnicast OBJECT-TYPE
	SYNTAX        TruthValue
	MAX-ACCESS    read-write
	STATUS        current
	DESCRIPTION
	    "If this object is TRUE, then Unknown Unicast will not
	     be mapped to the provider tunnel.
	     If this object is FALSE, then Uknown Unicast will be 
	     mapped to the provider tunnel."
	DEFVAL { false }
	::= { vplsMcastGeneralEntry 6 }

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

    -- VPLS PMSI Configuration Table
	  
    vplsPmsiConfigTable  OBJECT-TYPE
	SYNTAX        SEQUENCE OF VplsPmsiConfigEntry
	MAX-ACCESS    not-accessible
	STATUS        current
	DESCRIPTION
	     "An entry in this table is created for each PMSI configured
	      on this router. It can be referred to by base VPLS 
	      configuration (in vplsConfigEntry) or S-PMSI configuration
	      (in vplsSpmsiConfigEntry)"
	::= { vplsMcastConfig 1 }
	     
    vplsPmsiConfigEntry OBJECT-TYPE
	SYNTAX        VplsPmsiConfigEntry
	MAX-ACCESS    not-accessible
	STATUS        current
	DESCRIPTION
	      "An entry in this table is created for each PMSI configured
	       on this router under VPLS Service"
	INDEX       { vplsConfigIndex }
	::= { vplsPmsiConfigTable 1 }
			    
    VplsPmsiConfigEntry ::= SEQUENCE {
	vplsPmsiCfgTunnelType                 INTEGER,
	vplsPmsiCfgTunnelAuxInfo              Unsigned32,
	vplsPmsiCfgTunnelOrTemplateName       SnmpAdminString,
	vplsPmsiCfgRowStatus                  RowStatus
    }
       
	 
    vplsPmsiCfgTunnelType OBJECT-TYPE
	SYNTAX        INTEGER { rsvpP2mp (1),
				ldpP2mp (2),
				ingressReplication (3)
			      }
	MAX-ACCESS    read-write
	STATUS        current
	DESCRIPTION
	     "Type of tunnel used to instantiate the PMSI."
	::= { vplsPmsiConfigEntry 1 }
       
    vplsPmsiCfgTunnelAuxInfo OBJECT-TYPE
	SYNTAX        Unsigned32
	MAX-ACCESS    read-write
	STATUS        current
	DESCRIPTION
	     "Additional tunnel information depending on the type.
		    rsvp-p2mp:   1 for statically specified rsvp-p2mp tunnel
				 2 for dynamically created rsvp-p2mp tunnel
		    ingress-replication:
				 1 for using any existing p2p/mp2p lsp
				 2 for dynamically creating new p2p lsp"
	 ::= { vplsPmsiConfigEntry 2 }
       
    vplsPmsiCfgTunnelOrTemplateName OBJECT-TYPE
	SYNTAX        SnmpAdminString
	MAX-ACCESS    read-write
	STATUS        current
	DESCRIPTION
	    "The tunnel name or template name used to create tunnels.
	     Depending on vplsPmsiCfgTunnelType and
	     vplsPmsiCfgTunnelAuxInfo:
       
	     dynamically created rsvp-p2mp tunnel:       template name
	     statically specified rsvp-p2mp tunnel:      tunnel name
	     ingress-replication using
	     dynamically created lsps:                 template name
	     other:                                      null"
	::= { vplsPmsiConfigEntry 3 }
       
    vplsPmsiCfgRowStatus OBJECT-TYPE
	SYNTAX        RowStatus
	MAX-ACCESS    read-create
	STATUS        current
	DESCRIPTION
	     "Used to create/modify/delete a row in this table."
	::= { vplsPmsiConfigEntry 4 }

    -- Table of IPMSI BGP-AD Advertised/Received.

    vplsPmsiBgpADTable  OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsPmsiBgpADEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "This table specifies all advertised and received IPmsi advertisements."
       ::= { vplsMcastStates 1 }

    vplsPmsiBgpADEntry OBJECT-TYPE
	 SYNTAX         VplsPmsiBgpADEntry
	  MAX-ACCESS    not-accessible
	  STATUS        current
	  DESCRIPTION
		"An entry is created in this table for each IPMSI attribute advertised/received in BGP-AD"
	  INDEX       { vplsConfigIndex,
		     vplsBgpADConfigRouteDistinguisher,
		     vplsBgpADConfigPrefix,
		     vplsBgpADConfigVplsId }
	::= { vplsPmsiBgpADTable 1 }
		    
    VplsPmsiBgpADEntry ::= SEQUENCE {
	 vplsPmsiBgpADAttribute                  RowPointer
    }

    vplsPmsiBgpADAttribute       OBJECT-TYPE 
       SYNTAX        RowPointer
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "Points to a row in the vplsIpmsiTunnelAttributeTable."
       ::= { vplsPmsiBgpADEntry 1 }   


    -- Table of IPMSI BGP-VPLS Advertised/Received.  
       
    vplsPmsiBgpVplsTable   OBJECT-TYPE
	SYNTAX          SEQUENCE OF VplsPmsiBgpVplsEntry
	MAX-ACCESS      not-accessible
	STATUS          current
	DESCRIPTION
	    "This table specifies the all advertised and received IPmsi advertisements."
	 ::= { vplsMcastStates 2 }

    vplsPmsiBgpVplsEntry OBJECT-TYPE
	SYNTAX        VplsPmsiBgpVplsEntry 
	MAX-ACCESS    not-accessible
	 STATUS       current
	 DESCRIPTION
	       "An entry is created in this table for each IPMSI attribute advertised/received in BGP-VPLS"
	 INDEX     { vplsConfigIndex,
		     vplsBgpVEName}
       ::= { vplsPmsiBgpVplsTable 1 }

    VplsPmsiBgpVplsEntry ::= SEQUENCE {
	vplsPmsiBgpVplsAttribute          RowPointer
    }

    vplsPmsiBgpVplsAttribute       OBJECT-TYPE 
	 SYNTAX        RowPointer
	 MAX-ACCESS    read-only
	 STATUS        current
	 DESCRIPTION
	  "Points to a row in the vplsPmsiTunnelAttributeTable."
	 ::= { vplsPmsiBgpVplsEntry 1 }
	

    -- Table of VPLS PMSI attributes

    vplsPmsiTunnelAttributeTable OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsPmsiTunnelAttributeEntry
       MAX-ACCESS    not-accessible  
       STATUS        current
       DESCRIPTION
	   "This table is for advertised/received PMSI attributes,
	    to be referred to by I-PMSI or S-PMSI table entries"
       ::= { vplsMcastStates 3 }

    vplsPmsiTunnelAttributeEntry OBJECT-TYPE
       SYNTAX        VplsPmsiTunnelAttributeEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "An entry in this table corresponds to an PMSI attribute
	    that is advertised/received on this router.
	    For BGP-based signaling (for I-PMSI via auto-discovery
	    procedure, or for S-PMSI via S-PMSI A-D routes),
	    they are just as signaled by BGP."
       INDEX {
	       vplsPmsiTunnelAttributeType,
	       vplsPmsiTunnelAttributeLabel,
	       vplsPmsiTunnelAttributeFlags,
	       vplsPmsiTunnelAttributeId
	      }
       ::= { vplsPmsiTunnelAttributeTable 1 }

    VplsPmsiTunnelAttributeEntry ::= SEQUENCE {
       vplsPmsiTunnelAttributeType      Unsigned32,
       vplsPmsiTunnelAttributeLabel     MplsLabel,
       vplsPmsiTunnelAttributeFlags     OCTET STRING,
       vplsPmsiTunnelAttributeId        OCTET STRING,
       vplsPmsiTunnelPointer            RowPointer,
       vplsPmsiTunnelIf                 RowPointer
       }

    vplsPmsiTunnelAttributeType OBJECT-TYPE
       SYNTAX        Unsigned32 
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "The tunnel type identifies the type of tunneling technology
	    used to establish the PMSI tunnel. This document discusses the
	    following tunnel types:
	      0 - No tunnel information present
	      1 - RSVP-TE P2MP LSP
	      2 - mLDP P2MP LSP
	    "
       ::= { vplsPmsiTunnelAttributeEntry 1 }

    vplsPmsiTunnelAttributeLabel OBJECT-TYPE
       SYNTAX        MplsLabel
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "If the MPLS Label field is non-zero, then it contains an MPLS
	    label encoded as 3 octets, where the high-order 20 bits contain the label
	    value. Absence of MPLS Label is indicated by setting the MPLS Label
	    field to zero."
       ::= { vplsPmsiTunnelAttributeEntry 2 }

    vplsPmsiTunnelAttributeFlags OBJECT-TYPE
       SYNTAX        OCTET STRING (SIZE (1))
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "The Flags field has the following format:
			  0 1 2 3 4 5 6 7
			 +-+-+-+-+-+-+-+-+
			 |  reserved   |L|
			 +-+-+-+-+-+-+-+-+
	    This document defines the following flags:
	      + Leaf Information Required (L)"
       ::= { vplsPmsiTunnelAttributeEntry 3 }

    vplsPmsiTunnelAttributeId OBJECT-TYPE
       SYNTAX        OCTET STRING ( SIZE (4|8|12) )
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "When the type is set to 'No tunnel information present', the PMSI
	    Tunnel attribute carries no tunnel information (no Tunnel
	    Identifier). This type is to be used only in the following case: to
	    enable explicit tracking for a particular customer multicast flow (by
	    setting the Leaf Information Required flag to 1), but without binding
	    this flow to a particular provider tunnel (by omitting any tunnel
	    information).

	    When the type is set to RSVP-TE P2MP LSP, the Tunnel Identifier is
	    (Extended Tunnel ID, Reserved, Tunnel ID, P2MP ID) as carried in the
	    RSVP-TE P2MP LSP SESSION Object [RFC4875].

	    When the type is set to mLDP P2MP LSP, the Tunnel Identifier is a
	    P2MP FEC Element [mLDP]."
       ::= { vplsPmsiTunnelAttributeEntry 4 }

    vplsPmsiTunnelPointer OBJECT-TYPE
       SYNTAX        RowPointer
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "If the tunnel exists in some MIB table, this is the row pointer
	    to it."
       ::= { vplsPmsiTunnelAttributeEntry 5 }

    vplsPmsiTunnelIf OBJECT-TYPE 
       SYNTAX        RowPointer
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "If the tunnel has a corresponding interface, this is the
	    row pointer to the ifName table."
       ::= { vplsPmsiTunnelAttributeEntry 6 }


    -- S-PMSI configuration table

    vplsSpmsiConfigTable  OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsSpmsiConfigEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "This table specifies S-PMSI configuration."
       ::= { vplsMcastConfig 2 }

    vplsSpmsiConfigEntry OBJECT-TYPE
       SYNTAX        VplsSpmsiConfigEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "An entry is created for each S-PMSI configuration."
       INDEX       {  vplsConfigIndex,
		      vplsSpmsiCfgCmcastAddressType,
		      vplsSpmsiCfgCmcastGroupAddress,
		      vplsSpmsiCfgCmcastGroupPrefixLen,
		      vplsSpmsiCfgCmcastSrcAddress,
		      vplsSpmsiCfgCmcastSrcPrefixLen }
       ::= { vplsSpmsiConfigTable 1 }

    VplsSpmsiConfigEntry ::= SEQUENCE {
       vplsSpmsiCfgCmcastAddressType     InetAddressType,
       vplsSpmsiCfgCmcastGroupAddress    InetAddress,
       vplsSpmsiCfgCmcastGroupPrefixLen  Unsigned32,
       vplsSpmsiCfgCmcastSrcAddress      InetAddress,
       vplsSpmsiCfgCmcastSrcPrefixLen    Unsigned32,
       vplsSpmsiCfgThreshold             Unsigned32,
       vplsSpmsiCfgPmsiPointer           RowPointer,
       vplsSpmsiCfgRowStatus             RowStatus
    }

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

    vplsSpmsiCfgCmcastGroupAddress OBJECT-TYPE
       SYNTAX        InetAddress
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "C-multicast group address"
       ::= { vplsSpmsiConfigEntry 2 }

    vplsSpmsiCfgCmcastGroupPrefixLen OBJECT-TYPE
       SYNTAX        Unsigned32
       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 indicates any group."
       ::= { vplsSpmsiConfigEntry 3 }

    vplsSpmsiCfgCmcastSrcAddress OBJECT-TYPE
       SYNTAX        InetAddress
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "C-multicast source address"
       ::= { vplsSpmsiConfigEntry 4 }

    vplsSpmsiCfgCmcastSrcPrefixLen OBJECT-TYPE
       SYNTAX        Unsigned32
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "C-multicast source address prefix length.
	    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."
       ::= { vplsSpmsiConfigEntry 5 }

    vplsSpmsiCfgThreshold OBJECT-TYPE
       SYNTAX        Unsigned32  (0..4294967295) 
       UNITS         "kilobits per second"
       MAX-ACCESS    read-create   
       STATUS        current
       DESCRIPTION
	   "The bandwidth threshold value which when exceeded for a 
	    multicast routing entry in the given VPLS, triggers usage 
	    of S-PMSI."
       ::= { vplsSpmsiConfigEntry 6 }

    vplsSpmsiCfgPmsiPointer OBJECT-TYPE
       SYNTAX        RowPointer
       MAX-ACCESS    read-create
       STATUS        current
       DESCRIPTION
	   "This points to a row in vplsPmsiConfigTable,
	    to specify tunnel attributes."
       ::= { vplsSpmsiConfigEntry 7 }

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



      -- Table of S-PMSIs advertised/received

    vplsSpmsiTable OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsSpmsiEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	      "This table has information about the S-PMSIs sent/received
	       by a device."
       ::= { vplsMcastStates 4 }

    vplsSpmsiEntry OBJECT-TYPE
       SYNTAX        VplsSpmsiEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "An entry in this table is created or updated for every S-PMSI
	    advertised/received in a particular VPLS."
       INDEX  { vplsConfigIndex,
		vplsSpmsiCmcastAddrType, 
		vplsSpmsiCmcastGroup,
		vplsSpmsiCmcastGroupPrefixLen,
		vplsSpmsiCmcastSource,
		vplsSpmsiCmcastSourcePrefixLen,
		vplsSpmsiOrigAddrType,
		vplsSpmsiOrigAddress}
       ::= { vplsSpmsiTable 1 }

    VplsSpmsiEntry ::= SEQUENCE {
       vplsSpmsiCmcastAddrType        InetAddressType,
       vplsSpmsiCmcastGroup           InetAddress,
       vplsSpmsiCmcastGroupPrefixLen  Unsigned32,
       vplsSpmsiCmcastSource          InetAddress,
       vplsSpmsiCmcastSourcePrefixLen InetAddress,
       vplsSpmsiOrigAddrType          InetAddressType,
       vplsSpmsiOrigAddress           InetAddress,
       vplsSpmsiTunnelAttribute       RowPointer,
       vplsSpmsiUpTime                TimeInterval,
       vplsSpmsiExpTime               TimeInterval,
       vplsSpmsiRefCnt                Unsigned32
       }

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

    vplsSpmsiCmcastGroup OBJECT-TYPE
       SYNTAX        InetAddress (SIZE (4|16|20))   
       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 vplsSpmsiCmcastGroupPrefixLen must be 32 (or 128)."
       ::= { vplsSpmsiEntry 2 }

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

    vplsSpmsiCmcastSource OBJECT-TYPE
       SYNTAX        InetAddress (SIZE (4|16|20))
       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 vplsSpmsiCmcastSourcePrefixLen must be 32 (or 128)."
       ::= { vplsSpmsiEntry 4 }

    vplsSpmsiCmcastSourcePrefixLen OBJECT-TYPE
       SYNTAX        InetAddress (SIZE (4|16|20))
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "S-PMSI C-multicast source address prefix length."
       ::= { vplsSpmsiEntry 5 }

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

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

    vplsSpmsiTunnelAttribute OBJECT-TYPE
       SYNTAX        RowPointer
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "A row pointer to the vplsPmsiTunnelAttributeTable"
       ::= { vplsSpmsiEntry 8 }

    vplsSpmsiUpTime OBJECT-TYPE
       SYNTAX        TimeInterval
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "The time since this S-PMSI
	    was first advertised/received by the device."
       ::= { vplsSpmsiEntry 9 }

    vplsSpmsiExpTime OBJECT-TYPE
       SYNTAX        TimeInterval
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	    "For UDP-based S-PMSI signaling for VPLS,
	    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 device."
       ::= { vplsSpmsiEntry 10 }

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


    -- Module compliance.
    vplsMcastCompliances 
       OBJECT IDENTIFIER ::= { vplsMcastConformance 1 }

    vplsMcastModuleFullCompliance MODULE-COMPLIANCE
	STATUS current
	DESCRIPTION
	       "Compliance requirement for implementations that
		provide full support for VPLS-LDP-DRAFT-01-MIB.
		Such devices can then be monitored and configured using
		this MIB module."

	MODULE -- this module

	MANDATORY-GROUPS {
	       vplsMcastGroup,
	       vplsMcastNotificationGroup
	}

	::= { vplsMcastCompliances 1 }


    -- Units of conformance.

    vplsMcastGroups 
	OBJECT IDENTIFIER ::= { vplsMcastConformance 2 }

    vplsMcastGroup OBJECT-GROUP
	OBJECTS {
	    vplsMcastGenOperStatusChange,
	    vplsMcastGenOperChangeTime, 
	    vplsMcastGenIpmsiConfig,
	    vplsMcastGenInterasPmsiConfig,
	    vplsMcastGenCfgSiteType,
	    vplsMcastGenCfgExcludeUnknownUnicast,
	    vplsMcastGenRowStatus,
	    vplsPmsiCfgTunnelType,
	    vplsPmsiCfgTunnelAuxInfo,
	    vplsPmsiCfgTunnelOrTemplateName,
	    vplsPmsiCfgRowStatus,
	    vplsPmsiBgpADAttribute,
	    vplsPmsiBgpVplsAttribute,
	    vplsPmsiTunnelPointer,
	    vplsPmsiTunnelIf,
	    vplsSpmsiCfgThreshold,
	    vplsSpmsiCfgPmsiPointer,
	    vplsSpmsiCfgRowStatus,
	    vplsSpmsiTunnelAttribute,
	    vplsSpmsiUpTime,
	    vplsSpmsiExpTime,
	    vplsSpmsiRefCnt
	}
	STATUS  current
	DESCRIPTION
	      "TODO"
	::= { vplsMcastGroups 1 }

    vplsMcastNotificationGroup OBJECT-GROUP
	OBJECTS { vplsMcastNotificationEnable
	}
	STATUS  current
	DESCRIPTION
	      "TODO"
	::= { vplsMcastGroups 2 }


    END
	
	

8. Security Considerations

TODO

9. IANA Considerations

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

.

10. Contributors

TODO.

11. Acknowledgements

[TODO].

12. References

12.1. Normative References

[RFC2629] Rose, M.T., "Writing I-Ds and RFCs using XML", RFC 2629, June 1999.
[RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000.
[RFC3418] Presuhn, R., "Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3418, December 2002.
[RFC4181] Heard, C., "Guidelines for Authors and Reviewers of MIB Documents", BCP 111, RFC 4181, September 2005.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[RFC2579] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
[RFC2580] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
[I-D.ietf-l2vpn-vpls-mcast] Aggarwal, R, Rekhter, Y, Kamite, Y and L Fang, "Multicast in VPLS", Internet-Draft draft-ietf-l2vpn-vpls-mcast-10, February 2012.
[I-D.ietf-l2vpn-vpls-mib] Koushik, K, Mediratta, R and T Nadeau, "Virtual Private Lan Services (VPLS) Management Information Base", Internet-Draft draft-ietf-l2vpn-vpls-mib-06, October 2011.

12.2. Informative References

[RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
[RFC4761] Kompella, K. and Y. Rekhter, "Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling", RFC 4761, January 2007.
[RFC4762] Lasserre, M. and V. Kompella, "Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling", RFC 4762, January 2007.
[RFC3468] Andersson, L. and G. Swallow, "The Multiprotocol Label Switching (MPLS) Working Group decision on MPLS signaling protocols", RFC 3468, February 2003.
[RFC4875] Aggarwal, R., Papadimitriou, D. and S. Yasukawa, "Extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE Label Switched Paths (LSPs)", RFC 4875, May 2007.

Authors' Addresses

Pradeep Jain Alcatel-Lucent, Inc. 701 E Middlefield Rd Mountain View, CA, 94040 USA EMail: pradeep.jain@alcatel-lucent.com
Kanwar Singh Alcatel-Lucent, Inc. 701 E Middlefield Rd Mountain View, CA, 94040 USA EMail: kanwar.singh@alcatel-lucent.com
Ranganathan Boovaraghavan Alcatel-Lucent, Inc. 701 E Middlefield Rd Mountain View, CA, 94040 USA EMail: ranganathan.boovaraghavan@alcatel-lucent.com
Jeffrey (Zhaohui) Zhang Juniper Networks, Inc. 10 Technology Park Drive Westford, MA, 01886 USA EMail: zzhang@juniper.net