Network Working Group                                 Dave Danenberg
   Internet Draft                                         Scott C. Park
   Expires: Aug 2001                    Litchfield Communications, Inc.

                                                       Thomas D. Nadeau
                                                    Cisco Systems, Inc.

                                                        Andrew G. Malis
                                                  Vivace Networks, Inc.

                                                       February 22 2001

     SONET/SDH Circuit Emulation Service Over MPLS (CEM) Management
                      Information Base Using SMIv2

                 draft-danenberg-sonet-ces-mpls-mib-00.txt

Status of this Memo

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

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

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

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

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

1  Abstract

   This memo defines an experimental portion of the Management
   Information Base (MIB) for use with network management protocols in
   the Internet community.  In particular, it describes managed objects
   for modeling an adaptation of SONET/SDH circuits over a Multi-
   Protocol Label Switching (MPLS) [MPLSArch, MPLSFW] Label Switch
   Router (LSR).









   Danenberg et al                                                   1

   Internet Draft            MPLS CEM MIB                February 2001


Table of Contents

     1  Abstract.....................................................1
     2  Introduction.................................................2
     3  Terminology..................................................3
     4  The SNMP Management Framework................................4
     4.1 Object Definitions..........................................5
     5  Feature Checklist............................................5
     6  CEM MIB usage................................................5
     6.1 How Tunnels and Segments work with CEM......................6
     6.2 Summary of CEM MIB..........................................6
     6.3 CEM configuration Step by Step..............................7
     7  Example of CEM Setup.........................................8
     7.1 Backup Tunnels.............................................10
     7.2 Adjacent LSRs..............................................12
     8  CEM MIB Definitions.........................................12
     9  References..................................................38
     10  Author's Addresses.........................................41
     11  Full Copyright Statement...................................42

2  Introduction

   This document describes a model for managing encapsulated time
   division multiplexed (TDM) digital signals for transmission over a
   packet-oriented MPLS network.

   This document is closely related to [CEM], which describes a circuit
   emulation header used to encapsulate TDM signals and provide the
   Circuit Emulation Service over MPLS (CEM). This document is also
   related to [TRANS and ENCAP], describing the transport and
   encapsulation of Layer 2 circuits over MPLS, respectively.

   The model for CEM management is a MIB. The CEM MIB described in this
   document works closely with the MIBs described in [TEMIB and LSRMIB].

   Together, [TEMIB and LSRMIB], describe the modeling of an MPLS
   Tunnel, and a Tunnel's underlying cross-connects. In the spirit of
   the [IFMIB], a CEM connection will be a virtual connection (VC), and
   will therefore not be represented in the ifTable.

   There are functionalities introduced here that are not discussed in
   [CEM, ENCAP, or TRANS]. So consider them as points of discussion for
   now. For example, introduced here is the concept of switching CEM VCs

   between Primary and Backup MPLS Tunnels. Considering the speeds of
   CEM VCs, there is likely a requirement for automatic protection
   switching (APS) for tunnels carrying CEM traffic. CEM defects will be

   used as input to CEM APS decisions. It is for further study to use
   other mechanisms for CEM APS (see draft-chang-mpls-path-protection-
   02.txt for other work in this area).



   Danenberg et al       Expires August 2001                        2

   Internet Draft            MPLS CEM MIB                February 2001

   CEM dynamic bandwidth allocation (DBA) is also introduced in this
   MIB. CEM DBA will send packets with only a CEM Header (i.e., no
   payload) that will signal local conditions (such as AIS and un-
   equipped) when user traffic is not present. The remote CEM will play
   out "canned" SONET payloads when DBA is signaled.

   CEM is currently designed to carry SONET paths as a "structured"
   adaptation (see Terminology). "Unstructured" CEM is for future
   consideration. The CEM MIB will reference SONET paths as modeled
   within [SONETMIB].

   Comments should be made directly to the MPLS mailing list at
   mpls@uu.net.

   This memo does not, in its draft form, specify a standard for the
   Internet community.

   Conventions used in this document

   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
   [BCP14].

3  Terminology

   This document uses terminology from the document describing the
   MPLS architecture [MPLSArch]. A Label Switched Path (LSP) is modeled
   as described in [LSRMIB and TEMIB] via a series of cross-connects
   through 1 or more Label switch routers (LSR).

   CEM terminology comes from the CEM draft that describes a mechanism
   for transporting time division multiplexed (TDM) digital signals
   over a packet-oriented MPLS network. The mechanism outlined in the
   CEM draft terminates the SONET section and line overhead and then
   breaks the SONET path's Synchronous Payload Envelope (SPE) into
   fragments for transmission over a packet-based network. A 32-bit TDM
   header is appended at the beginning of each fragment to provide
   information regarding where the SPE begins within the packet stream,
   a sequence number, and pointer adjustment information.

   "Adaptation" refers to the method of adapting a "foreign"
   communications protocol such that it can be carried by a "native"
   protocol. In this case, the foreign protocol is SONET/SDH and the
   native protocol is MPLS.

   "Outbound" references the traffic direction where a SONET path's
   payload (SPE) is received, adapted to MPLS, assigned a VC label, and
   sent into the MPLS network.

   Conversely, "inbound" is the direction where packets are received
   from the MPLS network, packet payloads are reassembled back into an
   SPE, and inserted as a SONET path into the SONET section and line.


   Danenberg et al       Expires August 2001                        3

   Internet Draft            MPLS CEM MIB                February 2001


   Since A SONET path is bi-directional and symmetrical, it uses the
   same SONET time-slot, SONET width, MPLS packet size, and VC Label for

   outbound and inbound traffic.

   CEM will normally transmit into an originating "head" end of a Tunnel

   LSP, and receive from a terminating "tail" end a Tunnel LSP. A CEM
   connection typically uses a VC (virtual connection) Label within a
   Tunnel Label [TRANS]. Multiple CEM VCs each with a unique MPLS VC
   Label and similar traffic engineering requirements can share the same

   MPLS Tunnel. For Layer 2 transport over MPLS, the Tunnel Label is
   known as the "outer" Label, while the VC Label is known as the
   "inner" Label. An exception to this is with adjacent LSRs. In this
   case, there is an option for CEM VCs to connect directly without an
   outer Label.

   VCs can be configured to switch to a "Backup Tunnel". The active
   Tunnel may be referred to as "In-service", while inactive Tunnels are

   "Standby".

4  The SNMP Management Framework

   The SNMP Management Framework presently consists of five major
   components:

   -  An overall architecture, described in RFC 2271 [SNMPArch].

   -  Mechanisms for describing and naming objects and events for the
   purpose of management.  The first version of this Structure of
   Management Information (SMI) is called SMIv1 and described in RFC
   1155 [SMIv1], RFC 1212 [SNMPv1MIBDef] and RFC 1215 [SNMPv1Traps].
   The second version, called SMIv2, is described in RFC 1902 [SMIv2],
   RFC 1903 [SNMPv2TC] and RFC 1904 [SNMPv2Conf].

   -  Message protocols for transferring management information.  The
   first version of the SNMP message protocol is called SNMPv1 and
   described in RFC 1157 [SNMPv1].  A second version of the SNMP message

   protocol, which is not an Internet standards track protocol, is
   called SNMPv2c and described in RFC 1901 [SNMPv2c] and RFC 1906
   [SNMPv2TM].  The third version of the message protocol is called
   SNMPv3 and described in RFC 1906 [SNMPv2TM], RFC 2272 [SNMPv3MP] and
   RFC 2574 [SNMPv3USM].

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

   -  A set of fundamental applications described in RFC 2273
   [SNMPv3App] and the view-based access control mechanism described in
   RFC 2575 [SNMPv3VACM].




   Danenberg et al       Expires August 2001                        4

   Internet Draft            MPLS CEM MIB                February 2001

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Objects in the MIB are
   defined using the mechanisms defined in the SMI. This memo specifies
   a MIB module that is compliant to the SMIv2. A MIB conforming to the
   SMIv1 can be produced through the appropriate translations. The
   resulting translated MIB must be semantically equivalent, except
   where objects or events are omitted because no translation is
   possible (use of Counter64).  Some machine-readable information in
   SMIv2 will be converted into textual descriptions in SMIv1 during the

   translation process.  However, this loss of machine-readable
   information is not considered to change the semantics of the MIB.

4.1  Object Definitions

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  Objects in the MIB are
   defined using the subset of Abstract Syntax Notation One (ASN.1)
   defined in the SMI. In particular, each object type is named by an
   OBJECT IDENTIFIER, an administratively assigned name. The object type

   together with an object instance serves to uniquely identify a
   specific instantiation of the object.  For human convenience, we
   often use a textual string, termed the descriptor, to also refer to
   the object type.

5  Feature Checklist

   The Circuit Emulation over MPLS MIB (CEM-MIB) is designed to satisfy
   the following requirements and constraints:

   - The MIB supports manually configured CEM VCs. Although, the VC ID
   parameters needed for LDP are contained within this MIB. Adaptation
   circuits (like CEM VCs) configured via any MPLS signaling protocol
   are for future study.

   - The MIB supports point-to-point CEM connections. Point-to-
   multipoint connections are for future study.

   - The MIB establishes the adaptation connection by referencing the
   SONET path (within the ifTable [IFMIB]) to be adapted, the VC (inner)

   Label, and the two Tunnels [TEMIB] that carry the bi-directional
   SONET path.

   - The MIB configures the Tunnel and VCs: for Tunnel APS.

   - The MIB configures the connection: name, packet length, error
   actions, etc.

   - The MIB reports: operational state, packet counts, error counts,
   etc.


6  CEM MIB usage


   Danenberg et al       Expires August 2001                        5

   Internet Draft            MPLS CEM MIB                February 2001

6.1  How Tunnels and Segments work with CEM

   The following sections do not cover setting up a full connection
   across an MPLS network. They cover the configuration of the edge LSR
   - that is to say, the LSR providing the CEM function. Since Tunnels
   are uni-directional, a pair of Tunnels must be configured (one for
   inbound, one for outbound). The following graphic depicts a CEM VC
   that originates and terminates at LSR-M. It uses LSPs A and B formed
   by Tunnels Ax and Bx continuing through LSR-N to LSR-P. The
   concatenations of Tunnels create the LSPs. Note: since the CEM cross-
   connects terminate and originate at LSR-M, the in and out segments
   are not in tandem pairs (as they are in the transit LSR-N), this is
   per [LSRMIB]. Note: 'X' denotes a Tunnel's cross-connect.

                                   LSP-A
           <- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

       +---- (edge) LSR-M ---+    +--------- LSR-N ---------+    + LSR-P

       |                     |    |                         |    |
       |        Tunnel       |    |         Tunnel          |    |
       +---+  A1 (M<-N) +----+    +----+   A2 (M<-P)   +----+    +----+
       |   |     <------|    |    |    |<--------------|    |    |    |
   <-->|CEM|      inSeg |MPLS|    |MPLS| outSeg  inSeg |MPLS|    |MPLS|
   S P |   | <---X<-----| IF |    | IF |<------X<------| IF |    | IF |
   O a |   |            |    |<-->|    |               |    |<-->|    |
   N t |   | --->X----->|    |    |    |------>X------>|    |    |    |
   E h |   |     outSeg |    |    |    | inSeg  outSeg |    |    |    |
   T   |   |     ------>|    |    |    |-------------->|    |    |    |
       +---+   Tunnel   +----+    +----+    Tunnel     +----+    +----+
       |      B1 (M->N)      |    |        B2 (M->P)        |    |
       |                     |    |                         |    |
       +---------------------+    +-------------------------+    +-----

           - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->
                                   LSP-B

6.2  Summary of CEM MIB

   - The CEM SONET extension (mplsCemSonetPathExtTable) is used to
   indicate the time slot of the SONET path to be adapted.

   - The CEM VC Table (mplsCemVcTable) is used for associating a SONET
   path with a pair of MPLS Tunnels (inbound and outbound). Its many
   objects are used to control VCs.

   - The CEM Performance Table (mplsCemVcPerfTable) is an augmentation
   of the mplsCemVcTable and contains many objects for monitoring VCs.

   - The CEM Mapping Table (mplsCemMappingTable) is used to map the
   inbound Tunnel and VC Label to the Circuit ID. The Circuit ID is the
   index to an entry in the mplsCemVcTable.

   - The Tunnel Extension Table (mplsCemTunnelExtTable) is used to
   configure any Tunnel switchover parameters.

   Danenberg et al       Expires August 2001                        6

   Internet Draft            MPLS CEM MIB                February 2001


   - The Tunnel Extension Performance Table (mplsCemTunnelExtPerfTable)
   is used to monitor indications not available in the
   mplsTunnelPerfTable.

6.3  CEM configuration Step by Step

   Configuring a CEM VC and a pair of Tunnels (at LSR-M) involves the
   following steps.

   First configure the Tunnels and their cross-connects:

   - Follow steps as defined in [TEMIB] to configure a Tunnel.

   - Follow steps as defined in [LSRMIB] to set up the outbound cross-
   connect for that Tunnel. As this is the Tunnel origination (head-
   end), the cross-connect will not reference an InSegment and the
   ingress LSR ID will be set to that of the local (edge) LSR.

   - Set up the inbound cross-connect per [LSRMIB]. As this is the
   Tunnel termination (tail-end), the cross-connect will not reference
   an OutSegment and the egress LSR ID will be set to that of the local
   (edge) LSR.


   Configure the SONET parameters:

   - Set the SONET path width in the sonetPathCurrentTable [SONETMIB].

   - Set the SONET path starting time slot in the
   mplsCemSonetPathExtTable.


   Configure the CEM VC:

   - Create an entry in the mplsCemVcTable. The first index is obtained
   from the agent, the second is the VC instance. (Note: there may be
   multiple instances of an mplsCemVcTable entry for use with Backup
   Tunnels.) Now bind this entry to the SONET ifIndex [SONETMIB], the VC

   Label, and the inbound and outbound tunnels [TEMIB] by setting those
   objects.

   - Set other parameters in the mplsCemVcTable (packet length, etc.).

   - Although MPLS signaling of CEM is outside the scope of this
   document, LDP parameters are defined in the mplsCemVcTable: VC ID
   length, VC group ID, and optional VC parameters (the VC Circuit ID
   can be the mplsCemVcTable index, the VC Type for CEM is specified in
   [TRANS]).

   - Use the VC Label to create an entry in the mplsCemMappingTable.
   This table is indexed by the inbound Tunnel's indexes plus the VC
   Label. It associates the inbound Tunnel and VC Label to the
   mplsCemVcTable entry.

   Danenberg et al       Expires August 2001                        7

   Internet Draft            MPLS CEM MIB                February 2001


   - Once a CEM VC is operational, the mplsCemVcPerfTable is used to
   monitor the various counts, indicators, and conditions of the VC.


   Advanced CEM configuration (mplsCemVcTable and
   mplsCemTunnelExtTable):

   - VC backup. In the mplsCemVcTable, as part of CEM APS, set the
   criteria for switching this VC to the Backup Tunnel.

   - Tunnel Table. In the mplsCemTunnelExtTable, an entry is created
   here for each entry in the mplsCemMappingTable. This
   mplsCemTunnelExtTable table is indexed with the same indexes as the
   inbound Tunnel [TEMIB].

   - Tunnel Backup. As with VC backup, there are objects for setting
   Tunnel Backup switchover criteria. For Tunnels, they are in the
   mplsCemTunnelExtTable. An entry is created in this table by the agent

   for every entry in the mplsCemMappingTable, and is indexed as the
   inbound Tunnel is indexed [TEMIB]. Backup Tunnel switchovers will
   switch all VCs in bulk. It is for this reason that care must be taken

   if Tunnel Backup and VC Backup mechanisms are both configured.

   Note: CEM VCs are always configured with a pair of Tunnels (inbound
   and outbound). When a second set of CEM VC and Backup Tunnel is
   configured, then there will be a total of 4 Tunnels involved. To
   reduce complexities, it is recommended to design the agent's APS
   mechanism to switch completely from one CEM VC/Tunnel set to another.

   For example, do not use an inbound Primary Tunnel with an outbound
   Backup Tunnel. To mix Primary and Backup Tunnels is for future study.


7  Example of CEM Setup

   In this section we provide an example of using the MIB objects
   described in section 8 to set up a CEM VC. While this example is not
   meant to illustrate every permutation of the MIB, it is intended as
   an aid to understanding some of the key concepts. It is meant to be
   read after going through the MIB itself. See [LSRMIB] and [TEMIB] for

   an example of setting up Tunnels, their segments and cross-connects.

   First configure the SONET path width, starting time-slot, and
   associated CEM VC. In this case, an STS-3c starts at SONET time slot
   1 (and is evenly distributed within the SONET frame). The ifIndex for

   both the sonetPathCurrentEntry and mplsCemSonetPathExtTable is 23.

   In sonetPathCurrentEntry:
   {
      sonetPathCurrentWidth           = 3,
      sonetPathCurrentStatus
      ...
      ...
   }


   Danenberg et al       Expires August 2001                        8

   Internet Draft            MPLS CEM MIB                February 2001


   In mplsCemSonetPathExtTable:
   {
      mplsCemSonetPathExtVcIndex      = 1
      mplsCemSonetPathExtTimeSlot     = 1
   }

   Then create a CEM configuration entry in mplsCemVcTable. The indexes
   are Index and Instance. Set PathIfIndex and VcLabel. The tunnel
   pointers [TEMIB] contain LSR IDs (normally IP addresses) as indexes.


   In mplsCemVcTable:
   {
      mplsCemVcIndex               = 1
      mplsCemVcInstance            = 1
      mplsCemVcSonetPathIfIndex    = 23
      mplsCemVcVcLabel             = 55
      mplsCemVcPriority            = 1
      mplsCemVcName                = "My Tunnel",
      mplsCemVcDescr               = "Here to there"
      mplsCemVcCreateTime          = Feb 7 2001
      mplsCemVcInTunnelIndex       = 1
      mplsCemVcInTunnelInstance    = 1
      mplsCemVcInTunnelIngLSR      = 123.123.125.1
      mplsCemVcInTunnelLclLSR      = 123.123.126.1
      mplsCemVcOutTunnelIndex      = 2
      mplsCemVcOutTunnelInstance   = 1
      mplsCemVcOutTunnelLclLSR     = 123.123.126.1
      mplsCemVcOutTunnelEgrLSR     = 123.123.125.1
      mplsCemVcPktLength           = 500 -- payload bytes
      mplsCemVcExpBits             = 0
      mplsCemVcPktResequence       = 0
      mplsCemVcEnableDBA           = 0
      mplsCemVcJtrBfrDepth         = 50 -- packets
      mplsCemVcErrorAction         = playAllOnes
      mplsCemVcDownAction          = playAllOnes
      mplsCemVcIntegrateToDown1    =  1000 -- microseconds
      mplsCemVcIntegrateToDown2    =   500
      mplsCemVcIntegrateToUp1      = 10000
      mplsCemVcIntegrateToUp2      = 0
      mplsCemVcApsEnable           = false
      mplsCemVcApsCriteria         = 0
      mplsCemVcApsHoldOffTimer     = 0
      mplsCemVcApsRevertTimer      = 0
      mplsCemVcLdpVcIdLength       = 0
      mplsCemVcLdpGroupId          = 0
      mplsCemVcLdpOptParam1        = 0
      mplsCemVcLdpOptParam2        = 0
      mplsCemVcTrapEnable          = true
      mplsCemVcAdminStatus         = up
      mplsCemVcRowStatus           = createAndGo
   }



   Danenberg et al       Expires August 2001                        9

   Internet Draft            MPLS CEM MIB                February 2001

   Now make the association of the inbound Tunnel and VC Label to the
   mplsCemVcTable entry. The Tunnel Index, Instance, Ingress & Local LSR

   IDs, and VC Label are the 5 indexes for this table. Since the inbound

   Tunnel terminates here, its egress LSR ID should be that of the local

   (edge) LSR. Creating an entry in this table causes a corresponding
   entry to be made in the mplsCemTunnelExt and mplsCemTunnelExtPerf
   tables.

   In mplsCemMappingTable:
   {
      mplsCemMappingInTunnelIndex      = 1
      mplsCemMappingInTunnelInstance   = 1
      mplsCemMappingInTunnelIngressLSR = 123.123.125.1
      mplsCemMappingInTunnelLocalLSR   = 123.123.126.1
      mplsCemMappingVcLabel            = 55
      mplsCemMappingVcIndex            = 1
      mplsCemMappingVcInstance         = 1
      mplsCemMappingRowStatus          = createAndGo
   }

   Now configure the Tunnel extension table. It has the same indexes as
   the mplsTunnelTable entry for the inbound Tunnel. An entry in this
   table was created automatically when the mplsCemMapping table entry
   was created.

   In MplsCemTunnelExtTable:
   {
      mplsCemTunnelExtApsEnable           = false
      mplsCemTunnelExtApsCriteria         = 0
      mplsCemTunnelExtApsHoldoffTimer     = 0
      mplsCemTunnelExtApsRevertTimer      = 0
      mplsCemTunnelExtApsViaCemVcIndex    = 0
      mplsCemTunnelExtApsViaCemVcInstance = 0
   }

7.1  Backup Tunnels

   At this time, the type of APS supported by Backup Tunnels is for uni-
   directional protection switching. The approach used here supports 1+1

   switching where APS decisions are made on the inbound ("sink") side
   based on CEM errors. Since CEM packets are emitted at regular
   intervals and contain sequence numbers, failures can be detected
   quickly and reliably.

   An area for further study is 1:1 switching - normally this requires a

   backward defect indication. However, this may be accomplished by
   forcing an upstream error, when downstream errors occur. In other
   words, when the sink side sees CEM errors and switches to standby, it

   could turn off its outbound packet stream, thereby forcing remote CEM

   errors, and causing the remote to also switch to standby. Also for
   further study is obtaining failure indications from other than CEM
   errors (e.g., OAM).



   Danenberg et al       Expires August 2001                       10

   Internet Draft            MPLS CEM MIB                February 2001

   If Backup Tunnels are desired, they should be configured in the
   mplsTunnelTable [TEMIB]. They MUST be configured in this table as
   entries using the same mplsTunnelIndex primary index, but with
   unique mplsTunnelInstances as secondary indexes. This will result in
   the tunnel instances being configured in a group. It is also
   important to note that these secondary entries may contain different
   LSR IDs, as well as different corresponding tunnelHopTable,
   tunnelARHopTable, and tunnelCHop entries. For example, if it were
   desired to create a tunnel with one back up path, the
   mplsTunnelTable would contain two entries with a primary index of 2.
   Their two entries would have secondary indexes (mplsTunnelInstance)
   of 5 and 8. Hence, there would be two entries: (2,5) and (2,8). The
   secondary tunnel (2,8) should have a different cross-connect
   (mplsTunnelXCPointer) as it should take a different path (i.e.: to
   protect nodes or links) through the network to circumvent a network
   failure. It should also be the case that the Tunnel Label differs
   between both instances of the tunnel.

   For a CEM VC to utilize a Backup Tunnel, there will be another
   instance of the CEM VC within the mplsCemVcTable (forming a CEM VC
   group). Each group member will have the same Index, PathIfIndex, and
   VcLabel, but with a unique mplsCemVcInstance. Each CEM VC instance
   will reference a different Tunnel (within a group of Tunnels). As
   with the Tunnels, a primary CEM VC may be instance-1 while a backup
   VC may be instance-2.

   The switchover criteria in the mplsCemVc and mplsCemTunnelExt tables
   control the switchover when groups of CEM VCs and Tunnels have been
   configured. If the switchover is tunnel-based (that is, bulk VC
   switchover is being employed), then the mplsCemVc switchover criteria

   should be none (and vice-versa).

   Whether Tunnel Backup decisions are VC-based or tunnel-based, it is
   the APS criterion that initiates switchover processing. The system
   may then look for other Tunnels (within the group) that have no
   failures (according to criteria). If a switchover is to occur and
   there is more than one "good" Tunnel to switch to, then the Tunnel
   and CEM VC instances are used to decide (lower instances have higher
   priority). Things causing a bad tunnel are: administrative settings
   (CEM VC or Tunnel admin down), CEM jitter buffer errors, CEM missing
   packets, and CEM header errors (other criteria are for future study).

   The "revertive" setting can also initiate a switch. This parameter is

   useful for non-primary Tunnels where you may want to switch back to a

   Primary Tunnel even if the Backup Tunnel is OK. Finally there is
   "hunt" mode for initiating switches in situations where the active
   Tunnel is bad, but there are no defect indications available from the

   standby Tunnels.

   APS timers: There is a timer for use with "revertive" to delay
   switching back a Primary Tunnel once that Tunnel looks good. There is

   also a hold-off timer to delay switching from an active Tunnel once
   it looks bad.



   Danenberg et al       Expires August 2001                       11

   Internet Draft            MPLS CEM MIB                February 2001

   It is possible that the bandwidth for a Backup Tunnel may be less
   than that of the Primary Tunnel. In this case, when VCs are switched
   over to the Backup, lower priority VCs may have to be dropped (set
   dormant). The mplsCemVcPriority object is provided for this purpose.
   Sorting and dropping is normally the responsibility the CAC
   (connection admission control) function within an LSR.

7.2  Adjacent LSRs

   This section explains the how to configure CEM VCs that are connected

   via adjacent LSRs.

   As [TRANS] points out, a VC label within a Tunnel label may not be
   necessary in the Adjacent LSR case. To configure such a connection,
   all the steps described above would be the same except when
   configuring the OutSegment [LSRMIB]. In this case, PushTopLabel in
   the [LSRMIB] object would be set false.

8  CEM MIB Definitions

   MPLS-CEM-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
      experimental, Integer32, Counter32, Unsigned32,
      Counter64, Gauge32
         FROM SNMPv2-SMI

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

      TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType,
      TimeStamp, DisplayString
         FROM SNMPv2-TC

      InterfaceIndex, InterfaceIndexOrZero
         FROM IF-MIB

      MplsLSPID, MplsLabel
         FROM MPLS-LSR-MIB

      MplsLsrId, MplsTunnelIndex, MplsTunnelInstanceIndex
         FROM MPLS-TE-MIB;

   mplsCemMIB MODULE-IDENTITY
      LAST-UPDATED "200102211200Z"  -- 21 Feb 2001 12:00:00 EST
      ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group"
      CONTACT-INFO
          "        Dave Danenberg
           Postal: Litchfield Communications, Inc.
                   76 Westbury Park Rd
                   Princeton Building East
                   Watertown, CT 06795
           Tel:    +1-860-945-1573 x3180

   Danenberg et al       Expires August 2001                       12

   Internet Draft            MPLS CEM MIB                February 2001

           Email:  dave_danenberg@litchfieldcomm.com

                   Thomas D. Nadeau
           Postal: Cisco Systems, Inc.
                   250 Apollo Drive
                   Chelmsford, MA 01824
           Tel:    +1-978-244-3051
           Email:  tnadeau@cisco.com

                   Andrew G. Malis
           Postal: Vivace Networks, Inc.
                   2730 Orchard Parkway
                   San Jose, CA 95134
           Email:  Andy.Malis@vivacenetworks.com

                   Scott Park
           Postal: Litchfield Communications, Inc.
                   76 Westbury Park Rd
                   Princeton Building East
                   Watertown, CT 06795
           Tel:    +1-860-945-1573 x3185
           Email:  scott_park@litchfieldcomm.com

           The MPLS Working Group (email distribution mpls@uu.net)"

      DESCRIPTION
          "This MIB contains managed object definitions for Circuit
           Emulation over MPLS as in: Malis, A., Vogelsang, S., and

           Martini, L. 'SONET/SDH Circuit Emulation Service Over MPLS
           (CEM) encapsulation', Internet Draft <draft-malis-sonet-
           ces-mpls-02.txt>, February 2001. This MIB is dependant on
           the MIBs as defined by T. Nadeau, C. Srinivasan, and A.
           Viswanathan <draft-ietf-mpls-lsr-mib-07.txt> and
           <draft-ietf-mpls-te-mib-05.txt>"

      -- Revision history.
      REVISION
          "200102141200Z "  -- 14 Feb 2001 12:00:00 EST
      DESCRIPTION
         "Initial version for closed review."
      REVISION
          "200102221200Z "  -- 22 Feb 2001 12:00:00 EST
      DESCRIPTION
         "Updates, cleanup, and clarifications after review amongst
          authors."
      ::= { experimental 9999 }

   -- Top level components of this MIB.

   -- Traps
   mplsCemNotifications OBJECT IDENTIFIER ::= { mplsCemMIB 0 }
   mplsCemNotifyPrefix  OBJECT IDENTIFIER ::= { mplsCemNotifications 0
   }


   Danenberg et al       Expires August 2001                       13

   Internet Draft            MPLS CEM MIB                February 2001

   -- Tables, Scalars
   mplsCemObjects       OBJECT IDENTIFIER ::= { mplsCemMIB 1 }

   -- Conformance
   -- mplsCemConformance   OBJECT IDENTIFIER ::= { mplsCemMIB 2 }


   -- MPLS CEM Virtual Connection (VC) Table.

   mplsCemVcIndexNext OBJECT-TYPE
      SYNTAX            Unsigned32
      MAX-ACCESS        read-only
      STATUS            current
      DESCRIPTION
          "This object contains an appropriate value to be used
           for mplsCemVcIndex when creating entries in the
           mplsCemVcTable. The value 0 indicates that no
           unassigned entries are available.  To obtain the
           value of mplsCemVcIndex for a new entry in the
           mplsCemVcTable, the manager issues a management
           protocol retrieval operation to obtain the current
           value of mplsCemVcIndex.  After each retrieval
           operation, the agent should modify the value to
           reflect the next unassigned index.  After a manager
           retrieves a value the agent will determine through
           its local policy when this index value will be made
           available for reuse."
      ::= { mplsCemObjects 1 }

   mplsCemVcTable   OBJECT-TYPE
      SYNTAX        SEQUENCE OF MplsCemVcEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
          "This table specifies information for connecting
           SONET paths and MPLS Tunnels."
      ::= { mplsCemObjects 2 }

   mplsCemVcEntry   OBJECT-TYPE
      SYNTAX        MplsCemVcEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
           "A row in this table represents a connection for CEM. It
            is indexed by :

             - The mplsCemVcIndex. Uniquely identifying a singular
               CEM connection or a group. If a group, individual CEM
               connections are identified by the Instance.

             - The mplsCemVcInstance."

      INDEX  { mplsCemVcIndex, mplsCemVcInstance }


   Danenberg et al       Expires August 2001                       14

   Internet Draft            MPLS CEM MIB                February 2001

         ::= { mplsCemVcTable 1 }

   MplsCemVcEntry ::= SEQUENCE {
         mplsCemVcIndex              Unsigned32,
         mplsCemVcInstance           Unsigned32,
         mplsCemVcSonetPathIfIndex   InterfaceIndexOrZero,
         mplsCemVcLabel              MplsLabel,
         mplsCemVcPriority           Unsigned32,
         mplsCemVcName               DisplayString,
         mplsCemVcDescr              DisplayString,
         mplsCemVcCreateTime         TimeStamp,
         mplsCemVcUpTime             TimeTicks,

         mplsCemVcInTunnelIndex      MplsTunnelIndex,
         mplsCemVcInTunnelInstance   MplsTunnelInstanceIndex,
         mplsCemVcInTunnelIngLSR     MplsLsrId,
         mplsCemVcInTunnelLclLSR     MplsLsrId,

         mplsCemVcOutTunnelIndex     MplsTunnelIndex,
         mplsCemVcOutTunnelInstance  MplsTunnelInstanceIndex,
         mplsCemVcOutTunnelLclLSR    MplsLsrId,
         mplsCemVcOutTunnelEgrLSR    MplsLsrId,

         mplsCemVcPktLength          Unsigned32,
         mplsCemVcExpBits            Unsigned32,
         mplsCemVcPktResequence      TruthValue,
         mplsCemVcEnableDBA          BITS,
         mplsCemVcJtrBfrDepth        Unsigned32,
         mplsCemVcErrorAction        INTEGER,
         mplsCemVcDownAction         INTEGER,
         mplsCemVcIntegrateToDown1   Unsigned32,
         mplsCemVcIntegrateToDown2   Unsigned32,
         mplsCemVcIntegrateToUp1     Unsigned32,
         mplsCemVcIntegrateToUp2     Unsigned32,
         mplsCemVcApsEnable          TruthValue,
         mplsCemVcApsCriteria        BITS,
         mplsCemVcDefects            BITS,
         mplsCemVcApsHoldoffTimer    Unsigned32,
         mplsCemVcApsRevertTimer     Unsigned32,
         mplsCemVcApsStatus          INTEGER,
         mplsCemVcLdpVcIdLength      Unsigned32,
         mplsCemVcLdpGroupId         Unsigned32,
         mplsCemVcLdpOptParam1       Unsigned32,
         mplsCemVcLdpOptParam2       Unsigned32,
         mplsCemVcTrapEnable         TruthValue,
         mplsCemVcAdminStatus        INTEGER,
         mplsCemVcOperStatus         INTEGER,
         mplsCemVcRowStatus          RowStatus,
         mplsCemVcStorageType        StorageType
      }

   mplsCemVcIndex OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    accessible-for-notify

   Danenberg et al       Expires August 2001                       15

   Internet Draft            MPLS CEM MIB                February 2001

      STATUS        current
      DESCRIPTION
          "Primary index for the conceptual row identifying
           a group of CEM VCs."
      ::= { mplsCemVcEntry 1 }

   mplsCemVcInstance OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Uniquely identifies an instance of a CEM VC. It is
           useful to identify multiple instances for the purpose of
           backup VCs."
      ::= { mplsCemVcEntry 2 }

   mplsCemVcSonetPathIfIndex OBJECT-TYPE
      SYNTAX        InterfaceIndexOrZero
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "This is a unique index within the ifTable. It represents
           the interface index for the SONET path. A value of zero
           indicates an ifIndex that has yet to be configured or
           has since disappeared."
      ::= { mplsCemVcEntry 3 }

   mplsCemVcLabel   OBJECT-TYPE
      SYNTAX        MplsLabel
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "The incoming and outgoing label for this VC. This
           value is placed in the Label field of the outgoing MPLS
           shim header."
      ::= { mplsCemVcEntry 4 }

   mplsCemVcPriority OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Used when resources on a tunnel or backup tunnel are
           overbooked. The agent (connection admission control) can
           sort CEM VC entries that share an overbooked tunnel.
           Lower mplsCemVcPriority values have higher priority.
           VCs dropped will be set 'dormant' (as indicated in
           mplsCemVcOperStatus)."
      ::= { mplsCemVcEntry 5 }

   mplsCemVcName  OBJECT-TYPE
      SYNTAX        DisplayString
      MAX-ACCESS    read-create
      STATUS        current

   Danenberg et al       Expires August 2001                       16

   Internet Draft            MPLS CEM MIB                February 2001

      DESCRIPTION
          "The canonical name assigned to the CEM VC. This
           name can be used to refer to the CEM VC on the
           LSRs console port."
      ::= { mplsCemVcEntry 6 }

   mplsCemVcDescr OBJECT-TYPE
      SYNTAX        DisplayString
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "A textual string containing information about the
           CEM VC.  If there is no description this object
           contains a zero length string."
      ::= { mplsCemVcEntry 7 }

   mplsCemVcCreateTime OBJECT-TYPE
      SYNTAX        TimeStamp
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "System time when theis CEM VC was created."
      ::= { mplsCemVcEntry 8 }

   mplsCemVcUpTime  OBJECT-TYPE
      SYNTAX        TimeTicks
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of consecutive ticks this CEM VC has been 'up'
           as observed in mplsCemVcOperStatus."
      ::= { mplsCemVcEntry 9 }

   -- The following 8 objects represent the indexes for the
   -- inbound and outbound tunnels for this CEM VC.
   mplsCemVcInTunnelIndex OBJECT-TYPE
      SYNTAX        MplsTunnelIndex
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for inbound tunnel"
      REFERENCE
          "Srinivasan, C., Viswanathan, A., and T. Nadeau,
           MPLS Traffic Engineering Management Information
           Base Using SMIv2 <draft-ietf-mpls-te-mib-05.txt>,
           November 2000."
      ::= { mplsCemVcEntry 10 }
   mplsCemVcInTunnelInstance OBJECT-TYPE
      SYNTAX        MplsTunnelInstanceIndex
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for inbound tunnel"
      ::= { mplsCemVcEntry 11 }
   mplsCemVcInTunnelIngLSR OBJECT-TYPE
      SYNTAX        MplsLsrId

   Danenberg et al       Expires August 2001                       17

   Internet Draft            MPLS CEM MIB                February 2001

      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for inbound tunnel"
      ::= { mplsCemVcEntry 12 }
   mplsCemVcInTunnelLclLSR OBJECT-TYPE
      SYNTAX        MplsLsrId
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for inbound tunnel"
      ::= { mplsCemVcEntry 13 }
   mplsCemVcOutTunnelIndex OBJECT-TYPE
      SYNTAX        MplsTunnelIndex
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for outbound tunnel"
      ::= { mplsCemVcEntry 14 }
   mplsCemVcOutTunnelInstance OBJECT-TYPE
      SYNTAX        MplsTunnelInstanceIndex
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for outbound tunnel"
      ::= { mplsCemVcEntry 15 }
   mplsCemVcOutTunnelLclLSR OBJECT-TYPE
      SYNTAX        MplsLsrId
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for outbound tunnel"
      ::= { mplsCemVcEntry 16 }
   mplsCemVcOutTunnelEgrLSR OBJECT-TYPE
      SYNTAX        MplsLsrId
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION "Part of set of indexes for outbound tunnel"
      ::= { mplsCemVcEntry 17 }


   mplsCemVcPktLength OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This is the packet or payload length for this CEM
           VC. It is fixed and applies to inbound and
           outbound packets carrying user payload. Note: DBA
           packets have their own length and are not effected
           by this."
      ::= { mplsCemVcEntry 18 }

   mplsCemVcExpBits OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This value is placed in the EXP bit field of the

   Danenberg et al       Expires August 2001                       18

   Internet Draft            MPLS CEM MIB                February 2001

           outbound MPLS shim header (with the VC Label). These
           EXP bits convey to the LSR the PHB to be applied to
           these packets."
      REFERENCE
           "Faucher, F, et al, MPLS Support of Differentiated
           Services <draft-ietf-mpls-diff-ext-08.txt> Feb 2001."
      ::= { mplsCemVcEntry 19 }

   mplsCemVcPktResequence OBJECT-TYPE
      SYNTAX        TruthValue
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Reports if implementation provides packet re-sequencing.
           With this, as inbound packets are queued in the jitter
           buffer, out of order packets are re-sequenced. The
           maximum sequence number differential (order correction
           can occur within) is dependant on the depth of the
           jitter buffer. See mplsCemVcJtrBfrDepth."
      ::= { mplsCemVcEntry 20 }

   mplsCemVcEnableDBA OBJECT-TYPE
      SYNTAX BITS {
            allOnesOnAis(0),
            allZerosOnUnequipped(1)
      }
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Any bits set here MUST enable the DBA (dynamic bandwidth
           allocation) feature for the specified condition. Setting
           allOnesOnAis will cause CEM packet payload suppression
           when AIS is detected on the associated SONET path.
           Similarly, allZerosOnUnequipped will cause payload
           suppression when the SONET path is un-equipped. During
           these conditions, CEM packets will continue to be sent,
           but with indicators set in the CEM header instructing the
           remote to play all ones or zeros onto its SONET path.
           Note: some implementations may not support this feature."
      ::= { mplsCemVcEntry 21 }

   mplsCemVcJtrBfrDepth OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This setting configures the number of packet buffers
           reserved for this CEM VC. (This object would not apply
           in implementations that support CEM VC groups, but
           cannot process inbound packets on CEM VCs that are
           currently in standby.) This object essentially sets
           the maximum amount of time allowed between CEM packets
           before the jitter buffer empties. This variable should
           be set based on the SONET path width (speed) and the

   Danenberg et al       Expires August 2001                       19

   Internet Draft            MPLS CEM MIB                February 2001

           amount of delay variation expected to be introduced by
           the network. Like bandwidth, jitter buffers are likely
           to be a limited resource to be managed."
      ::= { mplsCemVcEntry 22 }

   mplsCemVcErrorAction OBJECT-TYPE
      SYNTAX INTEGER {
            playAllOnes(1),
            playAllZeros(2),
            playPseudoRandom(3)
      }
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "These are the actions to take when inbound packets are
           missing due to gap in sequence numbers (uncorrectable via
           available re-sequencing), jitter buffer underruns, or
           packets with bad CEM headers. These patterns are sent
           (played) on the SONET path. These settings are used for
           immediate errors and (unless the mplsCemVcDownAction is
           'none') are not in effect once the CEM VC is 'down'."
      ::= { mplsCemVcEntry 23 }

   mplsCemVcDownAction OBJECT-TYPE
      SYNTAX        INTEGER {
            errorAction(1),
            playAllOnes(2),
            playAllZeros(3),
            playPseudoRandom(4)
      }
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "These are the actions to take once the CEM VC has been
           declared 'down' (as observed in mplsCemVcOperStatus).
           These patterns are sent (played) on the SONET path.
           See Integration Timers for events causing CEM VC 'down'.
           If 'errorAction' is selected, then the mplsCemVcErrorAction
           settings stay in effect even after the CEM VC is 'down'."
      ::= { mplsCemVcEntry 24 }

   --
   -- The following 4 timers work together to integrate (filter)
   -- errors and the lack of errors on the CEM VC. Errors are:
   -- missing packet, packet out of sequence, CEM header error,
   -- jitter buffer error. Example of usage :
   --
   -- When an error occurs, Down1 and Down2 start counting, if
   -- no errors occur within Down2, Down1 is cancelled. If errors
   -- do occur within Down2, the Down2 timer is restarted. The CEM
   -- VC is 'down' if Down1 expires - then Up1 starts counting.
   -- If an error occurs within Up1, Up1 is restarted. The CEM VC
   -- is 'up' if Up1 expires. Based on this, Down2 must be less
   -- than Down1. Up2 timer usage is for further study.

   Danenberg et al       Expires August 2001                       20

   Internet Draft            MPLS CEM MIB                February 2001

   --
   -- Other usage of these integration objects is for further study.
   -- For example, these objects may be moved to their own new table
   -- where rows in the new table would be referenced in the CEM VC
   -- table to support separate integration of the various CEM errors
   -- (buffer errors, missing packets, CEM header errors).
   --
   mplsCemVcIntegrateToDown1 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION   "See comment above - units are microseconds."
      ::= { mplsCemVcEntry 25 }

   mplsCemVcIntegrateToDown2 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION   "See comment above - units are microseconds."
      ::= { mplsCemVcEntry 26 }

   mplsCemVcIntegrateToUp1 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION   "See comment above - units are microseconds."
      ::= { mplsCemVcEntry 27 }

   mplsCemVcIntegrateToUp2 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION   "See comment above - units are microseconds."
      ::= { mplsCemVcEntry 28 }

   mplsCemVcApsEnable OBJECT-TYPE
      SYNTAX        TruthValue
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Enables this CEM VC (as part of a group) to be used for
           APS. A CEM VC group is created when a unique CEM VC index
           (in mplsCemVcTable) has multiple instances. Setting
           mplsCemVcApsEnable to 'false' may be useful when a CEM VC
           is suspect, being debugged, or not fully configured.
           Note: some implementations may not support APS."
      ::= { mplsCemVcEntry 29 }

   mplsCemVcApsCriteria OBJECT-TYPE
      SYNTAX BITS {
            cemError(0),
            cemErrorStbyOK(256),
            revertive(512),
            hunt(1024)

   Danenberg et al       Expires August 2001                       21

   Internet Draft            MPLS CEM MIB                February 2001

      }
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Bits set here represent defects and modes for switching
           the SONET path from the active CEM VC to another within
           this VC's  group. Defects include: CEM errors (jitter
           buffer errors, missing packets, bad CEM headers).
           Separating these CEM defects into individually selectable
           bits, or adding other types of defect indications (e.g.
           OAM status) is for future study.

           Modes:
           The 'cemErrorStbyOK' mode setting is useful in APS network
           configurations where CEM traffic is not present on standby
           inbound VCs. Therefore they are expected to have CEM
           errors, but are still to be considered as viable switch-
           over candidates. cemErrorStbyOK essentially masks CEM
           errors when this CEM VC is in standby.

           'revertive' mode is useful for non-preferred CEM VCs where
           you may want to switch back to a preferred VC that has no
           defects while the currently active VC also has no defects
           (see mplsCemVcApsRevertTimer). 'revertive' should NOT be
           used when standby VCs have no defect indications available.
           If 'revertive' is not set, then manual reversion is possible

           by simply setting the active CEM VC's admin status 'down',
           then 'up'. Preferred should NOT have 'revertive' set.

           'hunt' mode is useful when standby VCs offer no defect
           indications (see mplsCemVcApsHoldOffTimer). 'hunt' should
           not be used when standby VCs have available defect
           indications. Hunting assumes standby VCs are good, if not
           the down timers will determine it's bad, and hunting
           continues.

           'hunt' and 'revertive' are mutually exclusive."
      ::= { mplsCemVcEntry 30 }

   mplsCemVcDefects OBJECT-TYPE
      SYNTAX BITS {
            cemError(0)
      }
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Current state of these CEM VC defects. The cemError
           indicator is a summary of any error associated with
           processing inbound CEM packets. Separately displaying
           CEM errors types (buffer errors, missing packets, and
           header errors) are for future study. Also other bits
           here may be defined here to show results of error trend
           analysis. These bits MUST be aligned with
           mplsCemVcApsCriteria bits so mplsCemVcApsCriteria can

   Danenberg et al       Expires August 2001                       22

   Internet Draft            MPLS CEM MIB                February 2001

           be used as a mask.
           Note: other defect indications (e.g. from OAM) are for
           future study."
      ::= { mplsCemVcEntry 31 }

   mplsCemVcApsHoldoffTimer OBJECT-TYPE -- units are in seconds
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Used to hold-off an APS switch after the CEM VC has been
           determined 'down'. The purpose is to allow potential
           recovery schemes within lower communications layers a
           chance to recover.

           Also useful in 'hunt' mode to hold off switching to the
           next CEM VC (slows oscillation when all VCs are down)."
      ::= { mplsCemVcEntry 32 }

   mplsCemVcApsRevertTimer OBJECT-TYPE -- units are in seconds
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "If this CEM VC is active and 'up', then this timer is
           used in conjunction with 'revertive' (if set above).
           The reversion would be delayed for this time."
      ::= { mplsCemVcEntry 33 }

   mplsCemVcApsStatus OBJECT-TYPE
      SYNTAX INTEGER {
           active(1),
           standby(2)
      }
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
           "If part of a CEM VC group, this indicates if the
            CEM VC has been selected (via APS algorithm/protocol)
            to connect the associated Tunnel to the SONET path.
            If not part of a group, then always 'active'."
      ::= { mplsCemVcEntry 34 }

   mplsCemVcLdpVcIdLength OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "For use by LDP signaling"
      ::= { mplsCemVcEntry 35 }

   mplsCemVcLdpGroupId OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create

   Danenberg et al       Expires August 2001                       23

   Internet Draft            MPLS CEM MIB                February 2001

      STATUS        current
      DESCRIPTION
          "For use by LDP signaling"
      ::= { mplsCemVcEntry 36 }

   mplsCemVcLdpOptParam1 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "For use by LDP signaling"
      ::= { mplsCemVcEntry 37 }

   mplsCemVcLdpOptParam2 OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "For use by LDP signaling"
      ::= { mplsCemVcEntry 38 }

   mplsCemVcTrapEnable OBJECT-TYPE
      SYNTAX        TruthValue
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "If this object is true, generation of mplsCemVcUp
           and mplsCemVcDown traps aare enabled for this CEM VC,
           otherwise these traps are not emitted."
      DEFVAL { false }
      ::= { mplsCemVcEntry 39}

   mplsCemVcAdminStatus OBJECT-TYPE
      SYNTAX   INTEGER {
                   up(1),     -- ready to pass packets
                   down(2),
                   testing(3) -- in some test mode
      }
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "The desired operational status of this CEM VC."
      ::= { mplsCemVcEntry 40 }

   mplsCemVcOperStatus OBJECT-TYPE
      SYNTAX INTEGER {
           up(1),            -- ready to pass packets
           down(2),
           testing(3),       -- in some test mode
           unknown(4),       -- status cannot be determined
           dormant(5),
           notPresent(6),    -- some component is missing
           lowerLayerDown(7) -- down due to the state of
                             -- lower layer interfaces

   Danenberg et al       Expires August 2001                       24

   Internet Draft            MPLS CEM MIB                February 2001

      }
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
           "Indicates the actual operational status of this CEM VC."
      ::= { mplsCemVcEntry 41 }

   mplsCemVcRowStatus OBJECT-TYPE
      SYNTAX        RowStatus
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "For creating, modifying, and deleting this row."
      ::= { mplsCemVcEntry 42 }

   mplsCemVcStorageType OBJECT-TYPE
      SYNTAX        StorageType
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This variable indicates the storage type for this
           object."
      ::= { mplsCemVcEntry 43 }

   -- End of MPLS CEM Virtual Connection (VC) Table


   -- MPLS CEM VC Performance Table.

   mplsCemVcPerfTable OBJECT-TYPE
      SYNTAX        SEQUENCE OF MplsCemVcPerfEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
          "This table provides per CEM VC performance information.
           Note: outbound errors are not being considered. It is
           assumed (at this time) that CEM packets will be forwarded
           as they are generated. i.e., it is assumed that there
           are no local outbound packet congestion issues. HC (high
           capacity) counters are needed for packet counts due to
           the high speeds expected with CEM. A SONET path of width
           48 can rollover a non-HC counter in a few minutes."
      ::= { mplsCemObjects 3 }

   mplsCemVcPerfEntry OBJECT-TYPE
      SYNTAX        MplsCemVcPerfEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
          "An entry in this table is created by the agent for every
           mplsCemVcEntry. It is an extension to mplsCemVcEntry."

      AUGMENTS { mplsCemVcEntry }


   Danenberg et al       Expires August 2001                       25

   Internet Draft            MPLS CEM MIB                February 2001

      ::= { mplsCemVcPerfTable 1 }

   MplsCemVcPerfEntry ::= SEQUENCE {
         mplsCemVcPerfTotalInPacketsHC  Counter64,
         mplsCemVcPerfTotalOutPacketsHC Counter64,
         mplsCemVcPerfDbaInPacketsHC    Counter64,
         mplsCemVcPerfDbaOutPacketsHC   Counter64,
         mplsCemVcPerfInNegPtrAdjustHC  Counter64,
         mplsCemVcPerfInPosPtrAdjustHC  Counter64,
         mplsCemVcPerfOutNegPtrAdjustHC Counter64,
         mplsCemVcPerfOutPosPtrAdjustHC Counter64,
         mplsCemVcPerfCrctHdrErrors     Counter32,
         mplsCemVcPerfUncrctHdrErrors   Counter32,
         mplsCemVcPerfMissingPkts       Counter32,
         mplsCemVcPerfPktsOoseq         Counter32,
         mplsCemVcPerfJtrBfrUnderruns   Counter32,
         mplsCemVcPerfJtrBfrOverruns    Counter32,
         mplsCemVcPerfDiscontinuityTime TimeStamp
      }

   mplsCemVcPerfTotalInPacketsHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of inbound packets received."
      ::= { mplsCemVcPerfEntry 1 }

   mplsCemVcPerfTotalOutPacketsHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of outbound packets sent."
      ::= { mplsCemVcPerfEntry 2 }

   mplsCemVcPerfDbaInPacketsHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of DBA packets received."
      ::= { mplsCemVcPerfEntry 3 }

   mplsCemVcPerfDbaOutPacketsHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of DBA packets sent."
      ::= { mplsCemVcPerfEntry 4 }

   mplsCemVcPerfInNegPtrAdjustHC OBJECT-TYPE
      SYNTAX        Counter64

   Danenberg et al       Expires August 2001                       26

   Internet Draft            MPLS CEM MIB                February 2001

      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of negative pointer adjustments made on the
           SONET path based on CEM pointer adjustments received."
      ::= { mplsCemVcPerfEntry 5 }

   mplsCemVcPerfInPosPtrAdjustHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of postive pointer adjustments made on the
           SONET path based on CEM pointer adjustments received."
      ::= { mplsCemVcPerfEntry 6 }

   mplsCemVcPerfOutNegPtrAdjustHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of negative pointer adjustments seen on the
           SONET path and encoded onto sent CEM packets."
      ::= { mplsCemVcPerfEntry 7 }

   mplsCemVcPerfOutPosPtrAdjustHC OBJECT-TYPE
      SYNTAX        Counter64
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of positive pointer adjustments seen on the
           SONET path and encoded onto sent CEM packets."
      ::= { mplsCemVcPerfEntry 8 }

   mplsCemVcPerfCrctHdrErrors OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of correctable CEM header errors detected on
           inbound CEM packets."
      ::= { mplsCemVcPerfEntry 9 }

   mplsCemVcPerfUncrctHdrErrors OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of uncorrectable CEM header errors detected on
           inbound CEM packets."
      ::= { mplsCemVcPerfEntry 10 }

   mplsCemVcPerfMissingPkts OBJECT-TYPE
      SYNTAX        Counter32

   Danenberg et al       Expires August 2001                       27

   Internet Draft            MPLS CEM MIB                February 2001

      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of missing packets (as detected via CEM header
           sequence number gaps)."
      ::= { mplsCemVcPerfEntry 11 }

   mplsCemVcPerfPktsOoseq OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of packets detected out of sequence (via CEM
           header sequence numbers), but were able to be re-sequenced.
           That is, the differential in sequence numbers was less
           than the jitter buffer depth. Note: some implementations
           may not support this feature (see mplsCemVcPktResequence).
           Any packets so far out of sequence that a re-sequencer
           can not correct for would be counted as missing packet."
      ::= { mplsCemVcPerfEntry 12 }

   mplsCemVcPerfJtrBfrUnderruns OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of times the jitter buffer transitioned to empty."
      ::= { mplsCemVcPerfEntry 13 }

   mplsCemVcPerfJtrBfrOverruns OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of packets received while jitter buffer is full."
      ::= { mplsCemVcPerfEntry 14 }

   mplsCemVcPerfDiscontinuityTime 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 segment's Counter32 or
            Counter64 suffered a discontinuity. If no such
            discontinuities have occurred since the last re-
            initialization of the local management subsystem, then
            this object contains a zero value."
       ::= { mplsCemVcPerfEntry 15 }

   -- End MPLS CEM VC Performance Table


   -- MPLS CEM Mapping Table.

   Danenberg et al       Expires August 2001                       28

   Internet Draft            MPLS CEM MIB                February 2001


   mplsCemMappingTable OBJECT-TYPE
      SYNTAX           SEQUENCE OF MplsCemMappingEntry
      MAX-ACCESS       not-accessible
      STATUS           current
      DESCRIPTION
          "This table maps an inbound Tunnel/VcLabel to a CEM VC."
      ::= { mplsCemObjects 4 }

   mplsCemMappingEntry OBJECT-TYPE
      SYNTAX           MplsCemMappingEntry
      MAX-ACCESS       not-accessible
      STATUS           current
      DESCRIPTION
           "A row in this table represents the inbound connection
            between a Tunnel/VcLabel and CEM VC/instance. It is
            indexed by the same 4 indexes that index the inbound
            Tunnel, then adds the VC Label as a 5th index. The Tunnel
            referenced here is in the mplsTunnelTable.

             - The mplsCemMappingInTunnelIndex uniquely identifies a
               singular Tunnel or a group. If a group, individual
               Tunnels are identified by the Instance.

             - The mplsCemMappingInTunnelInstance.

             - ID (normally an IP address) for the ingress LSR,
               mplsCemMappingInTunnelIngressLSR.

             - ID (normally an IP address) of the Local (egress) LSR,
                mplsCemMappingInTunnelLocalLSR,

             - and the VC Label, mplsCemMappingVcLabel."

      INDEX  { mplsCemMappingInTunnelIndex,
               mplsCemMappingInTunnelInstance,
               mplsCemMappingInTunnelIngressLSR,
               mplsCemMappingInTunnelLocalLSR,
               mplsCemMappingVcLabel }

         ::= { mplsCemMappingTable 1 }

   MplsCemMappingEntry ::= SEQUENCE {
         mplsCemMappingInTunnelIndex       MplsTunnelIndex,
         mplsCemMappingInTunnelInstance    MplsTunnelInstanceIndex,
         mplsCemMappingInTunnelIngressLSR  MplsLsrId,
         mplsCemMappingInTunnelLocalLSR    MplsLsrId,
         mplsCemMappingVcLabel             MplsLabel,
         mplsCemMappingVcIndex             Integer32,
         mplsCemMappingVcInstance          Integer32,
         mplsCemMappingRowStatus           RowStatus,
         mplsCemMappingStorageType         StorageType
      }


   Danenberg et al       Expires August 2001                       29

   Internet Draft            MPLS CEM MIB                February 2001

   mplsCemMappingInTunnelIndex OBJECT-TYPE
      SYNTAX        MplsTunnelIndex
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Primary index for the conceptual row identifying
           a group of Tunnel/VcLabel to CEM VC mappings."
      ::= { mplsCemMappingEntry 1 }

   mplsCemMappingInTunnelInstance OBJECT-TYPE
      SYNTAX        MplsTunnelInstanceIndex
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Uniquely identifies an instance of a mapping"
      ::= { mplsCemMappingEntry 2 }

   mplsCemMappingInTunnelIngressLSR  OBJECT-TYPE
      SYNTAX        MplsLsrId
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Uniquely identifies an ingress LSR"
      ::= { mplsCemMappingEntry 3 }

   mplsCemMappingInTunnelLocalLSR  OBJECT-TYPE
      SYNTAX        MplsLsrId
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Uniquely identifies the local LSR"
      ::= { mplsCemMappingEntry 4 }

   mplsCemMappingVcLabel OBJECT-TYPE
      SYNTAX        MplsLabel
      MAX-ACCESS    accessible-for-notify
      STATUS        current
      DESCRIPTION
          "Identifies a unique label on this tunnel"
      ::= { mplsCemMappingEntry 5 }

   mplsCemMappingVcIndex  OBJECT-TYPE
      SYNTAX        Integer32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Index for entry (or group of entries, in the case of backup
           VCs) in the mplsCemVcTable. This value can also be thought
           of as the Circuit ID."
      ::= { mplsCemMappingEntry 6 }

   mplsCemMappingVcInstance  OBJECT-TYPE
      SYNTAX        Integer32
      MAX-ACCESS    read-create

   Danenberg et al       Expires August 2001                       30

   Internet Draft            MPLS CEM MIB                February 2001

      STATUS        current
      DESCRIPTION
          "Identifies a unique member within a CEM VC group.
           (This could of course be a group of one.)"
      ::= { mplsCemMappingEntry 7 }

   mplsCemMappingRowStatus OBJECT-TYPE
      SYNTAX        RowStatus
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "For creating, modifying, and deleting this row."
      ::= { mplsCemMappingEntry 8 }

   mplsCemMappingStorageType OBJECT-TYPE
      SYNTAX        StorageType
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This variable indicates the storage type for this
           object."
      ::= { mplsCemMappingEntry 9 }

   -- End of MPLS CEM Mapping Table


   -- MPLS Tunnel Extension Table

   mplsCemTunnelExtTable OBJECT-TYPE
      SYNTAX             SEQUENCE OF MplsCemTunnelExtEntry
      MAX-ACCESS         not-accessible
      STATUS             current
      DESCRIPTION
          "This table is an extension to the mplsTunnelTable. This
           table exists to configure parameters useful for CEM APS."
      ::= { mplsCemObjects 5 }

   mplsCemTunnelExtEntry OBJECT-TYPE
      SYNTAX             MplsCemTunnelExtEntry
      MAX-ACCESS         not-accessible
      STATUS             current
      DESCRIPTION
           "A row in this table represents a Tunnel used for CEM VCs.
            The Tunnel referenced here is in the mplsTunnelTable.
            It is indexed by the same 4 indexes of the inbound Tunnel:

             - The mplsCemTunnelExtIndex uniquely identifies a
               singular Tunnel or a group. If a group, individual
               Tunnels are identified by the Instance.

             - The mplsCemTunnelExtInstance.

             - ID (normally an IP address) for the ingress LSR,
               mplsCemTunnelExtIngressLSR.

   Danenberg et al       Expires August 2001                       31

   Internet Draft            MPLS CEM MIB                February 2001


             - ID (normally an IP address) of the Local (egress) LSR,
                mplsCemTunnelExtLocalLSR. In the mplsTunnelTable, this
                index would be referred to as the Egress LSR ID. Since
                CEM is always at a tunnel termination, the egress LSR
                is always the local (edge) LSR.

            The local agent creates an entry here for every entry
            created in the mplsCemMappingTable."

      INDEX  { mplsCemTunnelExtIndex,
               mplsCemTunnelExtInstance,
               mplsCemTunnelExtIngressLSR,
               mplsCemTunnelExtLocalLSR }

         ::= { mplsCemTunnelExtTable 1 }

   MplsCemTunnelExtEntry::= SEQUENCE {
         mplsCemTunnelExtApsEnable           TruthValue,
         mplsCemTunnelExtApsCriteria         BITS,
         mplsCemTunnelExtDefects             BITS,
         mplsCemTunnelExtApsHoldoffTimer     Unsigned32,
         mplsCemTunnelExtApsRevertTimer      Unsigned32,
         mplsCemTunnelExtApsViaCemVcIndex    Unsigned32,
         mplsCemTunnelExtApsViaCemVcInstance Unsigned32,
         mplsCemTunnelExtStorageType         StorageType
      }

   mplsCemTunnelExtApsEnable OBJECT-TYPE
      SYNTAX        TruthValue
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "Enables this Tunnel (as part of a group) to be used for
           APS. Remember a Tunnel group is created when a unique
           Tunnel index (in mplsTunnelTable) has multiple instances.
           Tunnel disabling may be useful when a Tunnel is suspect,
           being debugged, or not fully configured.
           Note: some implementations may not support APS."
      ::= { mplsCemTunnelExtEntry 1 }

   mplsCemTunnelExtApsCriteria OBJECT-TYPE
      SYNTAX BITS {
            cemVcCriteria(0),
            revertive(512),
            hunt(1024)
      }
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "Bits set here represent defects and modes for switching
           all VCs within this Tunnel to another Tunnel that has no
           APS defects. Currently, only CEM defects are available.
           Separating and individually selecting CEM defects (buffer

   Danenberg et al       Expires August 2001                       32

   Internet Draft            MPLS CEM MIB                February 2001

           errors, header errors, etc.) is for future study. Also,
           for future study: determining a Tunnel's state of
           usefulness via other indications (such as OAM).

           If 'cemVcCriteria' is set, mplsCemTunnelExtApsViaCemVc
           is used to index the CEM VC for which defects are
           included. The purpose of this is in situations when
           CEM VCs can generate better defects than Tunnels (for
           example: buffer errors).

           Revertive and Hunt modes:
           'revertive' is useful for non-primary Tunnels where you
           may want to switch back to a primary Tunnel that has no
           defects while the currently active also has no defects
           (see mplsCemTunnelExtApsRevertTimer). 'revertive' should
           NOT be used when standby Tunnels have no available defect
           indications. If 'revertive' is not set, then manual
           reversion is possible by simply setting the active
           Tunnel's admin status 'down', then 'up'.

           'hunt' is useful when standby Tunnels offer no defect
           indications (see mplsCemTunnelExtApsHoldOffTimer).
           'hunt' should not be used when standby Tunnels have
           available defect indications. Hunting assumes standby
           Tunnels are good, if not the down timers will determine
           it's bad, and hunting continues.


           'hunt' and 'revertive' are mutually exclusive.

           Note: criteria defect bits here MUST align with
           mplsCemTunnelExtDefects so it can be used as a mask."
      ::= { mplsCemTunnelExtEntry 6 }

   mplsCemTunnelExtDefects OBJECT-TYPE
      SYNTAX BITS {
            cemVcCriteria(0)
      }
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Current state of Tunnel defect indications. Other bits
           here may be defined here to show results of error trend
           analysis. Note: These bits MUST be aligned with
           mplsCemTunnelExtApsCriteria bits so
           mplsCemTunnelExtApsCriteria can be used as a mask.
           Note: other defect indications (e.g. from OAM) are for
           future study."
      ::= { mplsCemTunnelExtEntry 7 }

   mplsCemTunnelExtApsHoldoffTimer OBJECT-TYPE -- units are in seconds
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current

   Danenberg et al       Expires August 2001                       33

   Internet Draft            MPLS CEM MIB                February 2001

      DESCRIPTION
          "Primarily used to hold-off an APS switch after the Tunnel
           has been determined 'down'. The purpose is to allow
           potential recovery schemes within lower communications
           layers a chance to recover.

           Also useful in 'hunt' mode to hold off switching to the
           next Tunnel (slows oscillation when all Tunnels are down)."
      ::= { mplsCemTunnelExtEntry 8 }

   mplsCemTunnelExtApsRevertTimer OBJECT-TYPE -- units are in seconds
      SYNTAX        Unsigned32
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "If this Tunnel is active and 'up', then this timer
           is used in conjunction with 'revertive' (if set above).
           The reversion would be delayed for this time."
      ::= { mplsCemTunnelExtEntry 9 }

   mplsCemTunnelExtApsViaCemVcIndex OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "Index of the CEM VC from which APS defect criteria are
           included with this Tunnel's APS criteria."
      ::= { mplsCemTunnelExtEntry 10 }

   mplsCemTunnelExtApsViaCemVcInstance OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "Instance of the CEM VC from which APS defect criteria
           are included with this Tunnel's APS criteria."
      ::= { mplsCemTunnelExtEntry 11 }

   mplsCemTunnelExtStorageType OBJECT-TYPE
      SYNTAX        StorageType
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "This variable indicates the storage type for this object."
      ::= { mplsCemTunnelExtEntry 12 }

   -- End of MPLS Tunnel Extension Table


   -- MPLS CEM Tunnel Extension Performance Table

   mplsCemTunnelExtPerfTable OBJECT-TYPE
      SYNTAX        SEQUENCE OF MplsCemTunnelExtPerfEntry
      MAX-ACCESS    not-accessible

   Danenberg et al       Expires August 2001                       34

   Internet Draft            MPLS CEM MIB                February 2001

      STATUS        current
      DESCRIPTION
          "This table is an extension to the mplsTunnelTable. It
           provides per Tunnel performance information."
      ::= { mplsCemObjects 6 }

   mplsCemTunnelExtPerfEntry OBJECT-TYPE
      SYNTAX        MplsCemTunnelExtPerfEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
          "An entry in this table is created by the agent for every
           mplsCemTunnelExtEntry. It is an extension to
           mplsCemTunnelExtEntry."

      AUGMENTS { mplsCemTunnelExtEntry }

      ::= { mplsCemTunnelExtPerfTable 1 }

   MplsCemTunnelExtPerfEntry ::= SEQUENCE {
         mplsCemTunnelExtPerfFailedLabelLookups  Counter32,
         mplsCemTunnelExtPerfLastFailedLookup    MplsLabel
      }

   mplsCemTunnelExtPerfFailedLabelLookups OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Number of packets with unexpected labels received. This
           count is based on inbound VC labels seen that are not
           configured for this Tunnel."
      ::= { mplsCemTunnelExtPerfEntry 1 }

   mplsCemTunnelExtPerfLastFailedLookup OBJECT-TYPE
      SYNTAX        MplsLabel
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "Contains label from the packet that last failed a label
          lookup on this Tunnel."
      ::= { mplsCemTunnelExtPerfEntry 2 }

   -- End of MPLS Tunnel Extension Performance Table


   -- MPLS CEM SONET Path Extension Table.

   mplsCemSonetPathExtTable OBJECT-TYPE
      SYNTAX           SEQUENCE OF MplsCemSonetPathExtEntry
      MAX-ACCESS       not-accessible
      STATUS           current
      DESCRIPTION
          "This table associates a SONET path with a CEM VC

   Danenberg et al       Expires August 2001                       35

   Internet Draft            MPLS CEM MIB                February 2001

           (or CEM VC group) and provides the starting time-slot
           of the SONET path. It as assumed that the transmit
           and receive sides of the SONET path have the same
           starting time-slots. It is also assumed that STSn
           paths have contiguous time-slots."
      ::= { mplsCemObjects 7 }

   mplsCemSonetPathExtEntry OBJECT-TYPE
      SYNTAX           MplsCemSonetPathExtEntry
      MAX-ACCESS       not-accessible
      STATUS           current
      DESCRIPTION
           "This table is indexed by the SONET path ifIndex. An
            entry to this table is created by the agent when an
            entry is created in the mplsCemVcTable."

      INDEX  { mplsCemSonetPathExtSonetIfIndex }

         ::= { mplsCemSonetPathExtTable 1 }

   MplsCemSonetPathExtEntry ::= SEQUENCE {
         mplsCemSonetPathExtVcIndex        Unsigned32,
         mplsCemSonetPathExtTimeSlot       Unsigned32,
         mplsCemSonetPathExtStorageType    StorageType
      }

   mplsCemSonetPathExtVcIndex OBJECT-TYPE
      SYNTAX        Unsigned32
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "Index to entry in the mplsCemVcTable."
      ::= { mplsCemSonetPathExtEntry 1 }

   mplsCemSonetPathExtTimeSlot OBJECT-TYPE
      SYNTAX        Unsigned32 (1..192)
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "Starting time-slot for this SONET path within the
           SONET line and section. For OC-48, this value could
           range from 1 to 48. The SONET path width must be taken
           into consideration here, for example, in an OC-48 an
           STS-3c could not start at time-slot 47."
      ::= { mplsCemSonetPathExtEntry 2 }

   mplsCemSonetPathExtStorageType OBJECT-TYPE
      SYNTAX        StorageType
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
          "This variable indicates the storage type for this
           object."
      ::= { mplsCemSonetPathExtEntry 3 }

   Danenberg et al       Expires August 2001                       36

   Internet Draft            MPLS CEM MIB                February 2001


   -- End of MPLS CEM SONET Path Extension Table.


   -- Notifications - CEM VC

   mplsCemTrapEnable OBJECT-TYPE
      SYNTAX        TruthValue
      MAX-ACCESS    read-write
      STATUS        current
      DESCRIPTION
             "If this object is true, then it enables the
              generation of mplsCemVcUp and mplsCemVcDown
              traps, otherwise these traps are not emitted.
              These traps are also individually enabled
              for each CEM VC."
      DEFVAL { false }
      ::= { mplsCemObjects 8 }

   mplsCemVcUp NOTIFICATION-TYPE
      OBJECTS   { mplsCemVcIndex,
                  mplsCemVcInstance,
                  mplsCemVcOperStatus,
                  mplsCemVcAdminStatus,
                  mplsCemVcSonetPathIfIndex }
      STATUS      current
      DESCRIPTION
          "This notification is generated when a
           mplsCemVcOperStatus object for one of the configured
           CEM VC entries is about to leave the down state and
           transition into some other state (but not into the
           notPresent state).  This other state is indicated by
           the included value of mplsCemVcOperStatus."
      ::= { mplsCemNotifyPrefix 1 }

   mplsCemVcDown NOTIFICATION-TYPE
      OBJECTS   { mplsCemVcIndex,
                  mplsCemVcInstance,
                  mplsCemVcOperStatus,
                  mplsCemVcAdminStatus,
                  mplsCemVcSonetPathIfIndex }
      STATUS      current
      DESCRIPTION
          "This notification is generated when a
           mplsCemVcOperStatus object for one of the configured
           CEM VC entries is about to enter the down state and
           transition into some other state (but not from the
           notPresent state).  This other state is indicated by
           the included value of mplsCemVcOperStatus."
      ::= { mplsCemNotifyPrefix 2 }

   mplsCemVcApsFrom NOTIFICATION-TYPE
      OBJECTS   { mplsCemVcIndex,
                  mplsCemVcInstance,

   Danenberg et al       Expires August 2001                       37

   Internet Draft            MPLS CEM MIB                February 2001

                  mplsCemVcOperStatus,
                  mplsCemVcAdminStatus,
                  mplsCemVcSonetPathIfIndex }
      STATUS      current
      DESCRIPTION
          "This notification is generated when the CEM VC APS
           mechanism has initiated a switch from the specified
           Index/Instance to find a 'good' CEM VC within the same
           group. To reduce the number of Traps, it is recommended
           to only generate mplsCemVcApsFrom when first initiating
           attempt to find a good CEM VC instance. That is, do not
           generate Traps if the APS mechanism is continuing to
           switch looking for an CEM VC group member that is good."
      ::= { mplsCemNotifyPrefix 3 }

   mplsCemVcApsTo NOTIFICATION-TYPE
      OBJECTS   { mplsCemVcIndex,
                  mplsCemVcInstance,
                  mplsCemVcOperStatus,
                  mplsCemVcAdminStatus,
                  mplsCemVcSonetPathIfIndex }
      STATUS      current
      DESCRIPTION
          "This notification is generated when the CEM VC APS
           mechanism has switched to and settled on a CEM VC Index
           and Instance that is 'good' (whether from a bad VC or
           when reverting)."
      ::= { mplsCemNotifyPrefix 4 }

   -- Note: generating Traps for Tunnel (bulk VC) APS switching is
   -- for further study.

   -- End of notifications.

END


9  References

      [MPLSArch]    Rosen, E., Viswanathan, A., and R. Callon,
                    "Multiprotocol Label Switching Architecture",
                    Internet Draft <draft-ietf-mpls-arch-06.txt>,
                    August 1999.

      [MPLSFW]      Callon, R., Doolan, P., Feldman, N., Fredette, A.,
                    Swallow, G., and A. Viswanathan, "A Framework for
                    Multiprotocol Label Switching", Internet Draft
                    <draft-ietf-mpls-framework-05.txt>, September 1999.

      [CEM]         Malis, A., Vogelsang, S., and Martini, L. "SONET/SDH

                    Circuit Emulation Service Over MPLS (CEM)

                    encapsulation", Internet Draft <draft-malis-sonet-

                    ces-mpls-02.txt>, February 2001.


   Danenberg et al       Expires August 2001                       38

   Internet Draft            MPLS CEM MIB                February 2001

      [TRANS]       Martini et al, "Transport of Layer 2 Frames Over
                    MPLS"  <draft-martini-l2circuit-trans-mpls-05.txt>,

                    November 2000.

      [ENCAP]       Martini et al, "Encapsulation Methods for Transport

                    of Layer 2 Frames Over MPLS", <draft-martini-
                    l2circuit-encap-mpls-01.txt>, November 2000.

      [LSRMIB]      Srinivasan, C., Viswanathan, A., and Nadeau, T.
                    "MPLS Label Switch Router Management Information
                    Base Using SMIv2", draft-ietf-mpls-lsr-mib-07.txt,
                    January 2001.

      [TEMIB]       Srinivasan, C., Viswanathan, A., and Nadeau, T.
                    "MPLS Traffic Engineering Management Information
                    Base Using SMIv2", <draft-ietf-mpls-te-mib-05.txt>,

                    November 2000.

      [SONETMIB]    Brown, T. and Tesink, K. "Definitions of Managed
                    Objects for the SONET/SDH Interface Type", RFC 1595.


      [LblStk]      Rosen, E., Rekhter, Y., Tappan, D., Farinacci, D.,
                    Federokow, G., Li, T., and A. Conta, "MPLS Label
                    Stack Encoding", Internet Draft <draft-ietf-mpls-
                    Label-encaps-07.txt>, September 1999.

      [Assigned]    Reynolds, J., and J. Postel, "Assigned Numbers",
                    RFC 1700, October 1994. See also:
                    http://www.isi.edu/in-notes/iana/assignments/smi-
                    numbers

      [IANAFamily]  Internet Assigned Numbers Authority (IANA), ADDRESS
                    FAMILY NUMBERS,(http://www.isi.edu/in-
                    notes/iana/assignements/address-family-numbers),
                    for MIB see:
                    ftp://ftp.isi.edu/mib/ianaaddressfamilynumbers.mib
      [SNMPArch]    Harrington, D., Presuhn, R., and B. Wijnen, "An
                    Architecture for Describing SNMP Management
                    Frameworks", RFC 2271, January 1998.

      [SMIv1]       Rose, M., and K. McCloghrie, "Structure and
                    Identification of Management Information for TCP/IP-

                    based Internets", RFC 1155, May 1990.

      [SNMPv1MIBDef]Rose, M., and K. McCloghrie, "Concise MIB
                    Definitions", RFC 1212, March 1991.
      [SNMPv1Traps] M. Rose, "A Convention for Defining Traps for use
                    with the SNMP", RFC 1215, March 1991.
      [RFC2572]     Case, J., Harrington D., Presuhn R., and B. Wijnen,
                    "Message Processing and Dispatching for the Simple
                    Network Management Protocol (SNMP)", RFC 2572,
                    April 1999.

      [RFC2574]     Blumenthal, U., and B. Wijnen, "User-based Security

   Danenberg et al       Expires August 2001                       39

   Internet Draft            MPLS CEM MIB                February 2001

                    Model (USM) for version 3 of the Simple Network
                    Management Protocol (SNMPv3)", RFC 2574, April
                    1999.

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

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

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

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

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

      [SNMPv2TC]    Case, J., McCloghrie, K., Rose, M., and S.
                    Waldbusser, "Textual Conventions for Version 2 of
                    the Simple Network Management Protocol (SNMPv2)",
                    RFC 1903, SNMP Research, Inc., Cisco Systems, Inc.,
                    January 1996.

      [SNMPv2Conf]  Case, J., McCloghrie, K., Rose, M., and S.
                    Waldbusser, "Conformance Statements for Version 2
                    of the Simple Network Management Protocol
                    (SNMPv2)", RFC 1904, January 1996.
      [SNMPv1]      Case, J., Fedor, M., Schoffstall, M., and J. Davin,
                    "Simple Network Management Protocol", RFC 1157, May
                    1990.

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

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

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


   Danenberg et al       Expires August 2001                       40

   Internet Draft            MPLS CEM MIB                February 2001

                    January 1998.

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

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

      [SNMPv3App]   Levi, D., Meyer, P., and B. Stewart, "SNMPv3
                    Applications", RFC 2273, January 1998.

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

      [IPSEC]       Kent, S., and Atkinson, R., "Security Architecture
                    for the Internet Protocol", RFC 2401, November
                    1998.

      [IFMIB]       McCloghrie, K., and F. Kastenholtz, "The Interfaces
                    Group MIB using SMIv2", RFC 2233, Nov. 1997

      [ATOMMIB]     Tesink, K., "Definitions of Managed Objects for ATM
                    Management", RFC 2515, Feb. 1999

      [BCP14]       Bradner, S., "Key words for use in RFCs to Indicate
                    Requirement Levels", BCP 14, RFC 2119, March 1997.



10 Author's Addresses

   Dave Danenberg
   Litchfield Communications, Inc.
   76 Westbury Park Rd
   Princeton Building East
   Watertown, CT 06795
   Email: dave_danenberg@litchfieldcomm.com

   Thomas D. Nadeau
   Cisco Systems, Inc.
   250 Apollo Drive
   Chelmsford, MA 01824
   Email: tnadeau@cisco.com

   Andrew G. Malis
   Vivace Networks, Inc.
   2730 Orchard Parkway
   San Jose, CA 95134

   Danenberg et al       Expires August 2001                       41

   Internet Draft            MPLS CEM MIB                February 2001

   Email: Andy.Malis@vivacenetworks.com

   Scott C. Park
   Litchfield Communications, Inc.
   76 Westbury Park Rd
   Princeton Building East
   Watertown, CT 06795
   Email: scott_park@litchfieldcomm.com

11 Full Copyright Statement

   "Copyright (C) The Internet Society (2001). All Rights Reserved. This

   document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are

   included on all such copies and derivative works. However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

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

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

   Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.















   Danenberg et al       Expires August 2001                       42