<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY rfc2863 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2863.xml">
<!ENTITY rfc3418 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3418.xml">
<!ENTITY rfc4181 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4181.xml">
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2578 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2578.xml">
<!ENTITY rfc2579 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2579.xml">
<!ENTITY rfc2580 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2580.xml">
<!ENTITY rfc3410 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3410.xml">
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc strict="no"?>
<?rfc rfcedstyle="yes"?>

<rfc category="bcp" docName="draft-mcast-vpls-mib-00"
     ipr="trust200902">
  <front>
    <title abbrev="VPLS-MCAST MIB">VPLS with Point-To-Multipoint 
	LSPs Management Information Base</title>

    <author fullname="Pradeep Jain" initials="P." surname="Jain">
      <organization>Alcatel-Lucent, Inc.</organization>

      <address>
        <postal>
          <street>701 E Middlefield Rd</street>

          <city>Mountain View, CA</city>

          <code>94040</code>

          <country>USA</country>
        </postal>

        <email>pradeep.jain@alcatel-lucent.com</email>
      </address>
    </author>

    <author fullname="Kanwar Singh" initials="K." surname="Singh">
      <organization>Alcatel-Lucent, Inc.</organization>

      <address>
        <postal>
          <street>701 E Middlefield Rd</street>

          <city>Mountain View, CA</city>

          <code>94040</code>

          <country>USA</country>
        </postal>

        <email>kanwar.singh@alcatel-lucent.com</email>
      </address>
    </author>

    <author fullname="Ranganathan Boovaraghavan" initials="R." 
	        surname="Boovaraghavan">
      <organization>Alcatel-Lucent, Inc.</organization>

      <address>
        <postal>
          <street>701 E Middlefield Rd</street>

          <city>Mountain View, CA</city>

          <code>94040</code>

          <country>USA</country>
        </postal>

        <email>ranganathan.boovaraghavan@alcatel-lucent.com</email>
      </address>
    </author>

    <date day="26" month="March" year="2012" />

    <area>Operations &amp; Management Area</area>

    <workgroup>L2 VPN Working Group</workgroup>

    <keyword>Network Management</keyword>

    <keyword>Management Information base</keyword>

    <keyword>MIB</keyword>

    <keyword>SMIv2</keyword>

	<keyword>MCAST-VPLS</keyword>
    
    <abstract>
    <t>This memo defines an experimental portion of the Management
    Information Base for use with network management protocols in the
    Internet community.
    </t>
	<t> 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].
	</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">

    <t>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.</t>
	<t> 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].
	</t>
	<t>
	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.
	</t>
    </section>

    <section title="The Internet-Standard Management Framework">
      <t>For a detailed overview of the documents that describe the current
	  Internet-Standard Management Framework, please refer to section 
	  7 of RFC 3410 <xref target="RFC3410"></xref>.</t>

      <t>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 <xref
      target="RFC2578"></xref>, STD 58, RFC 2579 <xref
      target="RFC2579"></xref> and STD 58, RFC 2580 <xref
      target="RFC2580"></xref>.</t>
    </section>

    <section title="Conventions">
      <t>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 
	  <xref target="RFC2119"></xref>.</t>
    </section>

    <!-- ********************************************* -->

    <section title="Terminology">
      <t>Terminology used in this document:</t>

      <t>VPLS     : Virtual Provider LAN Service.</t>
      <t>P2MP     : Point-to-Multipoint.</t>
	  <t>MLDP     : Multicast Label Distribution Protocol.</t>
	  <t>SNMP     : Simple Network Management Protocol. </t>
	  <t>MIB      :  Management Information Base. </t>
	  <t>PE Router:   Provider Edge Router.</t>
	  <t>P Router :    Provider Core Router.</t>
      <t>I-PMSI   : Inclusive-Provider Multicast Service Interface.</t>
	  <t>S-PMSI   : Selective-Provider Multicast Service Interface.</t>
	  <t>MVPN     : Multicast Virtual Private Networks.</t>
      <t />
    </section>
	
    <section title="Structure of the MIB Module">
      <t> 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.</t>
	  
	  <t> Following is the relation of the VPLS-MCAST MIB with existing
	  VPLS-MIB</t>

     <figure>
        <artwork>       
		         
		                +--------+   +-----------------+
                    PW Mapping  |        |   |                 |
                         -----> | PW-MIB |-->|PW-ENET/MPLS-MIB |
          __________    /       |        |   |                 |
         |          |  /        +--------+   +-----------------+
         | VPLS MIB | /                       +------------+
         |          |---------------------->  |            |
         +----------- MAC addr. mapping using | BRIDGE-MIB |
               |       [SNMP-CONTEXT-MAP-MIB] |            |
               |                              +------------+
               | 
         +-----------+
         |           |
         | VPLS-MCAST|
         |    MIB    |
         +-----------+
		 

       </artwork>
      </figure>

	  
    <section title="Summary of MIB Module">
	<t> The configuration and states specific to an VPLS-MCAST include the
		following:
	</t>
	<t>- C-multicast routing exchange protocol BGP </t>
	<t>- I-PMSI, S-PMSI and corresponding provider tunnels </t>
	<t>- Mapping of c-multicast states to PMSI/tunnels </t>
	<t>To represent them, the following tables defined. </t>
	<figure>
	<artwork>       
					 
    VplsMcastGeneral ----&gt;   VplsPmsiConfig        &lt;----- VplsSpmsiConfig       
     

    VplsIpmsi        ----&gt; VplsPmsiTunnelAttribute &lt;----- VplsSpmsi       
                              |
                              +-VplsIpmsiBgpADAttribute       
                              +-VplsIpmsiBgpVplsAttribute       
                                              

	</artwork>
	</figure>		
	<t> - vplsMcastGeneralTable </t>
    <t>An entry in this table contains general informaion about 
	   VPLS-PMSI created on the device.
	</t>

    <t> - vplsPmsiConfigTable </t>
	<t>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).
	</t>

	<t> - vplsIpmsiBgpADTable </t>
	<t>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
	</t>
			
	<t> - vplsIpmsiBgpVplsTable </t>
	<t>An entry is created in this table for each IPMSI attribute advertised/
	   received in BGP-VPLS
	</t>
	
	<t> - vplsPmsiTunnelAttributeTable</t>
	<t>This table is specified for advertised/received PMSI attributes
	   to be referred to by I-PMSI or S-PMSI table entries.</t>
	   
	   
	<t> - vplsSpmsiConfigTable </t>
	<t> This table specifies S-PMSI configuration for each VPLS entry</t>

	<t> - vplsSpmsiTable</t>
	<t> This table contains information about the VPLS S-PMSIs advertised/
	 received for a given VPLS instance</t>
	
    </section>
    </section>

    <section title="Relationship to Other MIB Modules">
      <t>This section provides an overview of the relationship between the
         VPLS-MCAST MIB module and other VPLS MIB modules.</t>

	  <t>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.
	   </t>

      <t>
	  
	    <figure>
        <artwork>	
		
        VPLS-GENERIC-DRAFT-01-MIB    VPLS-BGP-DRAFT-01-MIB
                  |                          |
                  +--------------------------+
                               |
                               V							   
                         VPLS-MCAST-MIB
		
	    </artwork>
      </figure>
	  </t>

    <t> </t>  

      </section>
    
    <section title="Definitions">
      <t> </t>

    <figure>
    <artwork>

    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

		 "

		 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

	       "

	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 MVRF in the 
	    device." 
       INDEX       { vplsConfigIndex }
       ::= { vplsMcastGeneralTable 1 }

    VplsMcastGeneralEntry ::= SEQUENCE {
       vplsMcastGenOperStatusChange         INTEGER,
       vplsMcastGenOperChangeTime           TimeStamp,
       vplsMcastGenIpmsiConfig              RowPointer,
       vplsMcastGenInterasPmsiConfig        RowPointer,
       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 }

    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 5 }

    -- 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,
	vplsPmsiCfgEncapsType                 INTEGER,
	vplsPmsiCfgSiteType                   INTEGER,
	vplsPmsiCfgExcludeUnknownUnicast      TruthValue,             
	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 }
       
    vplsPmsiCfgEncapsType OBJECT-TYPE
	SYNTAX        INTEGER { greIp (1),
				ipIp  (2),
				 mpls  (3)
			       }
	MAX-ACCESS    read-create
	STATUS        current
	DESCRIPTION
	    "The encapsulation type to be used, in case of 
	     ingress-replication."
	::= { vplsPmsiConfigEntry 4 }
       
    vplsPmsiCfgSiteType 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."
	 ::= { vplsPmsiConfigEntry 5 }

    vplsPmsiCfgExcludeUnknownUnicast 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 }
	::= { vplsPmsiConfigEntry 6 }
	    
    vplsPmsiCfgRowStatus OBJECT-TYPE
	SYNTAX        RowStatus
	MAX-ACCESS    read-create
	STATUS        current
	DESCRIPTION
	     "Used to create/modify/delete a row in this table."
	::= { vplsPmsiConfigEntry 7 }

    -- Table of IPMSI BGP-AD Advertised/Received.

    vplsIpmsiBgpADTable  OBJECT-TYPE
       SYNTAX        SEQUENCE OF VplsIpmsiBgpADEntry
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
	   "This table specifies all advertised and received IPmsi advertisements."
       ::= { vplsMcastStates 1 }

    vplsIpmsiBgpADEntry OBJECT-TYPE
	 SYNTAX         VplsIpmsiBgpADEntry
	  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 }
	::= { vplsIpmsiBgpADTable 1 }
		    
    VplsIpmsiBgpADEntry ::= SEQUENCE {
	 vplsIpmsiBgpADAttribute                  RowPointer
    }

    vplsIpmsiBgpADAttribute       OBJECT-TYPE 
       SYNTAX        RowPointer
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
	   "Points to a row in the vplsIpmsiTunnelAttributeTable."
       ::= { vplsIpmsiBgpADEntry 1 }   


    -- Table of IPMSI BGP-VPLS Advertised/Received.  
       
    vplsIpmsiBgpVplsTable   OBJECT-TYPE
	SYNTAX          SEQUENCE OF VplsIpmsiBgpVplsEntry
	MAX-ACCESS      not-accessible
	STATUS          current
	DESCRIPTION
	    "This table specifies the all advertised and received IPmsi advertisements."
	 ::= { vplsMcastStates 2 }

    vplsIpmsiBgpVplsEntry OBJECT-TYPE
	SYNTAX        VplsIpmsiBgpVplsEntry 
	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}
       ::= { vplsIpmsiBgpVplsTable 1 }

    VplsIpmsiBgpVplsEntry ::= SEQUENCE {
	vplsIpmsiBgpVplsAttribute          RowPointer
    }

    vplsIpmsiBgpVplsAttribute       OBJECT-TYPE 
	 SYNTAX        RowPointer
	 MAX-ACCESS    read-only
	 STATUS        current
	 DESCRIPTION
	  "Points to a row in the vplsIpmsiTunnelAttributeTable."
	 ::= { vplsIpmsiBgpVplsEntry 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,
	    vplsMcastGenRowStatus,
	    vplsPmsiCfgTunnelType,
	    vplsPmsiCfgTunnelAuxInfo,
	    vplsPmsiCfgTunnelOrTemplateName,
	    vplsPmsiCfgEncapsType,
	    vplsPmsiCfgSiteType,
	    vplsPmsiCfgExcludeUnknownUnicast,
	    vplsPmsiCfgRowStatus,
	    vplsIpmsiBgpADAttribute,
	    vplsIpmsiBgpVplsAttribute,
	    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



		
	</artwork>
    </figure>
    </section>

    <section title="Security Considerations">
      <t>TODO</t>
    </section>

    <section title="IANA Considerations">
      <t> IANA is requested to root MIB objects in the MIB module
	  contained in this document under the transmission subtree.</t>
      <t>.</t>
    </section>

    <section title="Contributors">
      <t>TODO.</t>
    </section>

    <section title="Acknowledgements">
      <t>[TODO].</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &rfc2629;

      &rfc2863;

      &rfc3418;

      &rfc4181;

      &rfc2119;

      &rfc2578;

      &rfc2579;

      &rfc2580;

      <?rfc include='reference.I-D.draft-ietf-l2vpn-vpls-mcast-10'?>
	  
	  <?rfc include='reference.I-D.draft-ietf-l2vpn-vpls-mib-06'?>
    </references>

    <references title="Informative References">
      &rfc3410;

	  <?rfc include='reference.RFC.4761'?>

      <?rfc include='reference.RFC.4762'?>

      <?rfc include='reference.RFC.3468'?>

      <?rfc include='reference.RFC.4875'?>

    </references>
  </back>
</rfc>
