Internet Engineering Task Force                 Kingston Smiler Selvaraj
Internet-Draft                                                IpInfusion
Intended status: Standards Track                            M.Venkatesan
Expires: August 06, 2015 February 04, 2016                                     Dell Inc.
                                                               V. Manral
                                                    Hewlett-Packard Corp
                                                             Ionos Corp.
                                                             Daniel King
                                                      Old Dog Consulting
                                                              Sam Aldrin
                                                     Huawei Technologies
                                                       February 02,
                                                            Google, Inc.
                                                         August 03, 2015

              MPLS Transport Profile Linear Protection MIB
              draft-ietf-mpls-tp-linear-protection-mib-04
              draft-ietf-mpls-tp-linear-protection-mib-05

Abstract

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols. In particular it defines
   objects for managing MPLS Transport Profile (MPLS-TP) Linear
   Protection.

Status of This Memo

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

   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.

   This Internet-Draft will expire on August 06, 2015. February 04, 2016.

Copyright and License Notice

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

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

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  The Internet-Standard Management Framework . . . . . . . . . .  3
   3.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   4.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  3
   5.  Structure of the MIB Module  . . . . . . . . . . . . . . . . .  4
     5.1.  Textual Conventions  . . . . . . . . . . . . . . . . . . .  4
     5.2. The MPLS TP Linear Protection Subtree . . . . . . . . . . .  4
     5.3. The Notifications Subtree . . . . . . . . . . . . . . . . .  4
     5.4.  The Table Structures . . . . . . . . . . . . . . . . . . .  4
   6.  Relationship to Other MIB Modules  . . . . . . . . . . . . . .  5
     6.1. Relationship to the MPLS OAM maintenance identifiers MIB
          module  . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   7. Example of Protection switching configuration for MPLS-TP TE
      tunnel  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   8.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . .  7
   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 27 26
   10.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 27
   11.  References  . . . . . . . . . . . . . . . . . . . . . . . . . 28
     11.1.  Normative References  . . . . . . . . . . . . . . . . . . 28
     11.2.  Informative References  . . . . . . . . . . . . . . . . . 29
   12. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 30
   13. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 30

1.  Introduction

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols. In particular it defines
   objects for managing MPLS Transport Profile (MPLS-TP) Linear
   Protection.

   This MIB module should be used for configuring and managing the MPLS
   TP linear protection for MPLS TP LSPs.

   At the time of writing, SNMP SET is no longer recommended as a way to
   configure MPLS networks as was described in [RFC3812].  However,
   since the MIB modules specified in this document are intended to work
   in parallel with the MIB modules for MPLS specified in [RFC3812],
   certain objects defined here are specified with MAX-ACCESS of read-
   write or read-create so that specifications of the base tables in
   [RFC3812] and the new MIB modules in this document are consistent.
   Although the examples described in Section 7 specify means to
   configure OAM identifiers for MPLS-TP tunnels, this should be seen as
   indicating how the MIB values would be returned in the specified
   circumstances having been configured by alternative means.

2.  The Internet-Standard Management Framework

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

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

3.  Conventions

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

4.  Overview

    [RFC6378] defines the protocol to provide a linear protection
    switching mechanism for MPLS transport profile with protection
    domain as point-to-point LSP. The detailed protocol specification of
    MPLS transport profile linear protection is described in [RFC6378].
    This document specifies a MIB module for the LER that supports MPLS
    TP Linear protection (which includes 1:n protection architecture) and a MIB module that defines textual
    conventions.

5.  Structure of the MIB Module

5.1.  Textual Conventions

    The following new textual conventions are defined in a separate MIB
    module in this document

       MplsLpsReq
       MplsLpsFpathPath
       MplsLpsCommand

5.2. The MPLS TP Linear Protection Subtree

   MPLS-LPS-MIB is the MIB module defined in this document, and it is
   put under mplsStdMIB.

5.3. The Notifications Subtree

   Notifications are defined to inform the management station about
   switchover and mode mismatch of linear protection switching group.
   Two notifications are defined for this purpose.  The notification,
   mplsLpsEventSwitchover is to inform the management station about the
   switchover of the active path and the notification
   mplsLpsEventModeMismatch is to inform the management station about
   the mismatch in the revertive mode across the end point of the
   protection domain.

5.4.  The Table Structures

   The MPLS TP Linear protection MIB module has four tables.  The tables
   are as follows

   o mplsLpsConfigTable

      This table is used to configure MPLS TP Linear protection
      switching Group. The protection switching group is identified by
      mplsLpsConfigGroupName. The other attributes in this table can be
      used to configure properties that are specific to the protection
      switching group.

   o mplsLpsStatusTable
      This table provides the current status information of mpls linear
      protection groups that have been configured on the system. When a
      protection group is configured or deleted in the
      mplsLpsConfigTable, then the corresponding row of that session in
      the mplsLpsStatusTable is, respectively, automatically created or
      deleted.

   o mplsLpsMeConfigTable

      This table is used to associate the Maintenance Entities (MEs) to
      the protection switching group. The ME is identified by
      mplsOamIdMegIndex, mplsOamIdMeIndex and mplsOamIdMeMpIndex.

   o mplsLpsMeStatusTable

      This table provides the current information about the protection
      state of MEs that have been configured on the system. When a
      ME configured or deleted in the mplsLpsMeConfigTable, then the
      corresponding row of that session in the mplsLpsMeStatusTable
      is, respectively, automatically created or deleted.

6.  Relationship to Other MIB Modules

6.1. Relationship to the MPLS OAM maintenance identifiers MIB module

   The mplsLpsMeConfigTable entry is extended by entry in the
   mplsOamIdMeTable [MPLS-OAM-ID-STD-MIB] defined in draft-ietf-mpls-tp-
   oam-id-mib. Note that the nature of the 'extends' relationship is a
   sparse augmentation so that the entry in the mplsLpsMeConfigTable has
   the same index values as the entry in the mplsOamIdMeTable. Each time
   that an entry is created in the mplsOamIdMeTable for which the LER
   supports MPLS TP Linear protection a row is created automatically in
   the mplsLpsMeConfigTable.

7. Example of Protection switching configuration for MPLS-TP TE tunnel

      This example considers the protection group configuration on a
      head-end LSR to provide protection for a co-routed bidirectional
      MPLS tunnel.
      Only relevant objects which are applicable for protection group
      identifiers of co-routed MPLS tunnel are illustrated here.

         In mplsOamIdMegTable:
         {
          -- MEG index (Index to the table)
            mplsOamIdMegIndex                 = 1,
            mplsOamIdMegName                  = "MEG1",
            mplsOamIdMegOperatorType          = ipCompatible (1),
            mplsOamIdMegServiceType           = lsp (1),
            mplsOamIdMegMpLocation            = perNode(1),
          -- Mandatory parameters needed to activate the row go here
            mplsOamIdMegRowStatus             = createAndGo (4)
         }

      This will create an entry in the mplsOamIdMegTable to protect
      the MPLS tunnel.

      The following ME table is used to associate the path information
      to a MEG.

         In mplsOamIdMeTable:
         {
            -- ME index (Index to the table)
             mplsOamIdMeIndex                  = 1,
            -- MP index (Index to the table)
             mplsOamIdMeMpIndex                = 1,
             mplsOamIdMeName                   = "ME1",
             mplsOamIdMeMpIfIndex              = 0,
             -- Source MEP id is derived from the IP compatible MPLS
             -- tunnel
             mplsOamIdMeSourceMepIndex         = 0,
             -- Source MEP id is derived from the IP compatible MPLS
             -- tunnel
             mplsOamIdMeSinkMepIndex           = 0,
             mplsOamIdMeMpType                 = mep (1),
             mplsOamIdMeMepDirection           = down (2),
             mplsOamIdMeProactiveOamPhbTCValue = 0,
             mplsOamIdMeOnDemandOamPhbTCValue  = 0,
            --  RowPointer MUST point to the first accessible column
            -- of an MPLS tunnel
             mplsOamIdMeServicePointer         = mplsTunnelName.1.1.1.2,
            -- Mandatory parameters needed to activate the row go here
             mplsOamIdMeRowStatus              = createAndGo (4)
         }

       The below table associates the MEs with protection switching
       groups.
         In mplsLpsConfigTable:
         mplsLpsConfigEntry ::= SEQUENCE {
           -- Group index
           mplsLpsConfigGroupIndex  = 1,
           mplsLpsConfigGroupName   = "PGGroup1",
           mplsLpsConfigMode        = onePlusOne (1),
           -- Mandatory parameters needed to activate the row go here
           mplsLpsConfigRowStatus   = createAndGo (4)
           }
         In mplsLpsMeConfigTable:
         MplsLpsMeConfigEntry ::= SEQUENCE {
           -- MEG index (Index to the table)
           mplsOamIdMegIndex                 = 1,
           -- ME index
           mplsOamIdMeIndex                  = 1,
           -- MP index (Index to the table)
           mplsOamIdMeMpIndex                = 1,
           -- Group index
           mplsLpsMeConfigGroupIndex         = 1,
           -- Configuration state
           mplsLpsMeConfigState              = primary(1)
         }

8.  Definitions
   MPLS-LPS-MIB DEFINITIONS ::= BEGIN

   IMPORTS
           MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE,
           Gauge32, Counter32, Integer32, Unsigned32
                   FROM SNMPv2-SMI
           MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                   FROM SNMPv2-CONF          -- [RFC2580]
           TEXTUAL-CONVENTION, RowStatus,
           TimeStamp, StorageType
                   FROM SNMPv2-TC
           SnmpAdminString

                FROM SNMP-FRAMEWORK-MIB
        mplsStdMIB
            FROM MPLS-TC-STD-MIB          -- [RFC3811]
        mplsOamIdMegIndex, mplsOamIdMeIndex, mplsOamIdMeMpIndex
            FROM MPLS-OAM-ID-STD-MIB;

mplsLpsMIB MODULE-IDENTITY
    LAST-UPDATED  "201301210000Z"  "201508030000Z"  -- January 21, 2013 August 03, 2015
    ORGANIZATION  "Multiprotocol Label Switching (MPLS) Working Group"
    CONTACT-INFO

        "
        Kingston Smiler Selvaraj
               Ipinfusion
               Email:kingstons@ipinfusion.com
        IP Infusion
        RMZ Centennial
        Mahadevapura Post
        Bangalore - 560048 India
        EMail: kingstonsmiler@gmail.com
        Venkatesan Mahalingam
        Dell Inc.
               350 Holger way, San Jose, CA,
        5450 Great America Parkway,
        Santa Clara,  CA 95054, USA
        Email: venkat.mahalingams@gmail.com

        Vishwas Manral
               Hewlet-Packard, Inc.
               19111 Pruneridge Ave., Cupertino, CA, 95014
               Phone: 408-447-1497
        Ionos Corp,
        4100 Moorpark Ave,
        San Jose, CA
        Email: vishwas.manral@hp.com vishwas@ionosnetworks.com

        Daniel King
        Old Dog Consulting
        UK
        Email:daniel@olddog.co.uk

        Sam Aldrin
               Huawei Technologies, co.
               2330 Central Express Way,
               Santa Clara,
        Google, Inc.
        1600 Amphitheatre Parkway
        Mountain View, CA 95051,
        USA
        Email:  aldrin.ietf@gmail.com"
DESCRIPTION
    "This management information module supports the
     configuration and management of MPLS TP linear
     protection groups. "
REVISION
        "201301210000Z"
        "201508030000Z"  -- January 21, 2013 August 03, 2015
     DESCRIPTION
          "MPLS Protection Switching Group objects for LSP
           MEPs"

         ::= { mplsStdMIB xxx } -- xxx to be replaced with
                               -- correct value

      -- Top level components of this MIB module.
      -- Notifications
      mplsLpsNotifications
                   OBJECT IDENTIFIER ::= { mplsLpsMIB 0 }
      -- tables, scalars
      mplsLpsObjects
                   OBJECT IDENTIFIER ::= { mplsLpsMIB 1 }
      -- conformance

      mplsLpsConformance
                   OBJECT IDENTIFIER ::= { mplsLpsMIB 2 }

MplsLpsReq ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "This Textual Convention describes an object that stores
         the PSC Request field of the PSC control packet. The values
         are as follows

         1110  Lockout of Protection
         1100  Forced Switch
         1010  Signal Fail (SF)
         0111  Signal Degrade (SD)
         0101  Manual Switch
         0100  Wait-to-Restore
         0001  Do Not Revert
         0000  No Request"
    REFERENCE
        "Section 4.2.2 of RFC6378"
    SYNTAX      OCTET STRING (SIZE (2))

MplsLpsFpathPath ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "This Textual Convention describes an object that stores
         the Fault Path (FPath) field and Data Path (Path) field of
         the PSC control packet.

         FPath is located in the first octet and Path is
         located in the second octet. Bits are numbered from left to
         right.

         The value and the interpretation of FPath field is as follows

         2-255  for future extensions
         1      the anomaly condition is on the working path
         0      the anomaly condition is on the protection path

         The value and the interpretation of Path field is as follows

         2-255  for future extensions
         1      protection path is transporting user data traffic
         0      protection path is not transporting user data traffic
         "
    REFERENCE
        "Section 4.2.5 and 4.2.6 of RFC6378"
    SYNTAX      OCTET STRING (SIZE (2))

MplsLpsCommand ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "This command allows a user to perform any action over ME.
         If the protection command cannot be executed because an
         equal or higher priority request is in effect, an
         inconsistentValue error is returned.

         The command values are:

         noCmd

         This value should be returned by a read request when no command
         has been written to the object in question since
         initialization. This value may not be used in a write
         operation.  If noCmd is used in a write operation a wrongValue
         error is returned.

         clear

         Clears all of the commands listed below for the specified ME.

         lockoutOfProtection

         Prevents any of the working ME from switching to the protection
         ME. The specified ME should be the protection ME, otherwise an
         inconsistentValue error is returned.

         forcedSwitchWorkToProtect

         Switches the specified working ME to the protection path.
         If the protection ME is specified an inconsistentValue
         error is returned.

         manualSwitchWorkToProtect

         Switches the specified working ME to the protection ME.
         If the protection ME is specified an inconsistentValue
         error is returned."

    SYNTAX       INTEGER {
                     noCmd(1),
                     clear(2),
                     lockoutOfProtection(3),
                     forcedSwitchWorkToProtect(4),
                     manualSwitchWorkToProtect(5)
                 }

-- Start of MPLS Transport Profile Protection Switching
-- Table
-- MPLS TP Protection Switching Configuration Table
-- This table supports the addition, configuration and deletion
-- of MPLS TP Protection Switching groups.

mplsLpsConfigGroups OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The object hold the count of MPLS Protection Switching
         groups. This count includes all rows in mplsLpsConfigTable,
         regardless of the value of mplsLpsConfigRowStatus."
    ::= { mplsLpsObjects 1 }

mplsLpsConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLpsConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists the mpls linear protection groups that
         have been configured on the system."
    ::= { mplsLpsObjects 2 }

mplsLpsConfigEntry OBJECT-TYPE
    SYNTAX      MplsLpsConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the mplsLpsConfigTable."
    INDEX { mplsLpsConfigGroupIndex }
    ::= { mplsLpsConfigTable  1 }

MplsLpsConfigEntry ::= SEQUENCE {
    mplsLpsConfigGroupIndex          Unsigned32,
    mplsLpsConfigGroupName           SnmpAdminString,
    mplsLpsConfigMode                INTEGER,
    mplsLpsConfigRevertive           INTEGER,
    mplsLpsConfigProtectionScheme    INTEGER,
    mplsLpsConfigSdThreshold         Integer32,
    mplsLpsConfigWaitToRestore       Integer32,
    mplsLpsConfigContinualTxInterval Integer32,
    mplsLpsConfigRapidTxInterval     Integer32,
    mplsLpsConfigCreationTime        TimeStamp,
    mplsLpsConfigRowStatus           RowStatus,
    mplsLpsConfigStorageType         StorageType

}

mplsLpsConfigGroupIndex  OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Index for the conceptual row identifying a protection group."
    ::= { mplsLpsConfigEntry 1 }

mplsLpsConfigGroupName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Textual name represents the mpls tp protection group.
         Each Protection Group is identified by a unique
         protection group name. "
    ::= { mplsLpsConfigEntry 2 }

mplsLpsConfigMode OBJECT-TYPE
    SYNTAX INTEGER {
                   onePlusOne(1),
                   oneColonOne(2),
                   oneColonN(3)
                   oneColonOne(2)
                   }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The architectural mode of the Protection group. This can
        either be 1+1, 1:1, 1:n. 1:1.

        1+1

        In the 1+1 protection scheme, a fully dedicated
        protection entity is allocated. Data traffic is copied
        and fed at the source to both the working and the
        protection entities.  The traffic on the working and the
        protection entities is transmitted simultaneously to
        the sink of the protection domain, where selection
        between the working and protection entities is performed

        1:1

        In the 1:1 scheme, a protection path is allocated to
        protect against a defect, failure, or a degradation in a
        working path. In normal conditions, data traffic is
        transmitted over the working entity, while the
        protection entity functions in the idle state. If there
        is a defect on the working entity or a specific
        administrative request, traffic is switched to the
        protection entity.

        1:n

        In case of 1:n linear protection, one protection entity
        is allocated to protect n working entities. The protection
        entity might not have sufficient resources to protect all the
        working entities that may be affected by fault conditions at a
        specific time. In this case, in order to guaranteed
        protection, the protection entity should support enough
        capacity and bandwidth to protect any of the n working
        entities." entity."

    DEFVAL {onePlusOne}
    ::= { mplsLpsConfigEntry 3 }

mplsLpsConfigRevertive OBJECT-TYPE
    SYNTAX      INTEGER { nonrevertive(1), revertive(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This object represents the reversion mode of the Linear
        Protection Switching group. The reversion mode of
        protection mechanism may be either revertive or
        non-revertive.

        nonrevertive

        In non-revertive mode, after a service has been
        recovered, traffic will be forwarded on the recovery

        path
        path.

        revertive

        In revertive mode, after a service has been
        recovered, traffic will be redirected back onto the
        original working path."

    DEFVAL { nonrevertive }
    ::= { mplsLpsConfigEntry 4 }

mplsLpsConfigProtectionScheme OBJECT-TYPE
    SYNTAX      INTEGER { bidirectional(1), unidirectional(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The object represents the operational scheme of
        protection switching group. The protection scheme may
        either be unidirectional or bidirectional.

        bidirectional

        In bidirectional protection scheme, both the directions
        will be switched simultaneously even if the fault
        applies to only one direction of the path.

        unidirectional
        In unidirectional protection scheme protection switching
        will be performed independently for each direction of a
        bidirectional transport path

        This object may not be modified if the associated
        mplsLpsConfigRowStatus object is equal to active(1). "

    DEFVAL {bidirectional}
    ::= { mplsLpsConfigEntry 5 }

mplsLpsConfigSdThreshold OBJECT-TYPE
    SYNTAX      Integer32 (1..9)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object holds the threshold value of the Signal
         Degrade.

         When the MPLS DM OAM reaches this threshold value, the
         Signal Degrade event will be given to this
         protection domain.

         This object may be modified if the associated
         mplsLpsConfigRowStatus object is equal to active(1)."
    ::= { mplsLpsConfigEntry 6 }

mplsLpsConfigWaitToRestore OBJECT-TYPE
    SYNTAX      Integer32 (0..720)
    UNITS       "seconds"
    MAX-ACCESS  read-create

    STATUS      current
    DESCRIPTION
        "This object hold the Wait To Restore timer value in
         seconds.
         The WTR timer is used to delay reversion of PSC state
         to Normal state when recovering from a failure
         condition on the working path when the protection
         domain is configured for revertive behavior

         This object may not be modified if the associated
         mplsLpsConfigRowStatus object is equal to active(1)."
    DEFVAL { 300 }
    ::= { mplsLpsConfigEntry 7 }

    mplsLpsConfigContinualTxInterval OBJECT-TYPE
        SYNTAX      Integer32 (1..20)
        UNITS       "seconds"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The Continual Tx Time in Seconds. Represents the time
             interval to send the continual LPS packet to the other
             end based on the current state."
        DEFVAL { 5 }
        ::= { mplsLpsConfigEntry 8 }

    mplsLpsConfigRapidTxInterval OBJECT-TYPE
        SYNTAX      Integer32 (1000..20000)
        UNITS       "micro-seconds"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The Rapid Tx interval in micro-Seconds. Represents the time
             interval to send the LPS packet to the other end, when
             there is a change in state of Linear Protection domain due
             to local input. The default value is 3.3 milli-seconds
             which is 3300 micro-seconds"
        DEFVAL { 3300 }
        ::= { mplsLpsConfigEntry 9 }

    mplsLpsConfigCreationTime OBJECT-TYPE
        SYNTAX      TimeStamp
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The value of sysUpTime at the time the row was
             created"
             created."
        ::= { mplsLpsConfigEntry 10 }

    mplsLpsConfigRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This represents the status of the MPLS TP Linear
             Protection group Entry. This variable is used to
             create, modify, and/or delete a row in this table.
             An entry may not exist in the active state unless all
             objects in the entry have an appropriate value."
        ::= { mplsLpsConfigEntry 11 }

    mplsLpsConfigStorageType OBJECT-TYPE
        SYNTAX      StorageType
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The storage type for this conceptual row.
             Conceptual rows having the value 'permanent' need not
             allow write-access to any columnar objects in the row."
        DEFVAL      { nonVolatile }
        ::= { mplsLpsConfigEntry 12 }

--
-- MPLS TP Linear Protection Switching Status Table
--
-- This table provides Protection Switching group statistics.
--

mplsLpsStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLpsStatusEntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides status information about mpls
         linear protection groups that have been configured
         on the system."
    ::= { mplsLpsObjects 3 }

mplsLpsStatusEntry OBJECT-TYPE
    SYNTAX      MplsLpsStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the mplsLpsStatusTable."
    AUGMENTS { mplsLpsConfigEntry }
    ::= { mplsLpsStatusTable  1 }

MplsLpsStatusEntry ::= SEQUENCE {
    mplsLpsStatusReqRcv                MplsLpsReq,
    mplsLpsStatusReqSent               MplsLpsReq,
    mplsLpsStatusFpathPathRcv          MplsLpsFpathPath,
    mplsLpsStatusFpathPathSent         MplsLpsFpathPath,
    mplsLpsStatusModeMismatches        Counter32
}

mplsLpsStatusReqRcv OBJECT-TYPE
    SYNTAX      MplsLpsReq
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the PSC Request field received on
         more recent PSC packet" packet."
    ::= { mplsLpsStatusEntry 1 }

mplsLpsStatusReqSent OBJECT-TYPE
    SYNTAX      MplsLpsReq
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the PSC Request field sent on the
         more recent PSC packet" packet."
    ::= { mplsLpsStatusEntry 2 }

mplsLpsStatusFpathPathRcv OBJECT-TYPE
    SYNTAX      MplsLpsFpathPath
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the FPath and Path fields received
         on more recent PSC packet" packet."
    ::= { mplsLpsStatusEntry 3 }

mplsLpsStatusFpathPathSent OBJECT-TYPE
    SYNTAX      MplsLpsFpathPath
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the FPath and Path fields sent
         on more recent PSC packet" packet."
    ::= { mplsLpsStatusEntry 4 }

mplsLpsStatusModeMismatches OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object holds number of occurrences of mismatch in
         revertive mode across the protection domain end points."
    ::= { mplsLpsStatusEntry 5 }

-- MPLS Linear Protection ME Association Configuration Table
-- This table supports the addition, configuration and deletion
-- of MPLS Linear Protection Maintenance Entities in Protection
-- Switching groups.

mplsLpsMeConfigTable OBJECT-TYPE

    SYNTAX      SEQUENCE OF MplsLpsMeConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists Maintenance Association that have been
         configured in Protection groups."
    ::= { mplsLpsObjects 4 }

mplsLpsMeConfigEntry OBJECT-TYPE
    SYNTAX      MplsLpsMeConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the mplsLpsMeConfigTable."
    INDEX {mplsOamIdMegIndex, mplsOamIdMeIndex, mplsOamIdMeMpIndex}
    ::= { mplsLpsMeConfigTable  1 }

MplsLpsMeConfigEntry ::= SEQUENCE {
    mplsLpsMeConfigGroupIndex            Unsigned32,
    mplsLpsMeConfigState                 INTEGER,
    mplsLpsMeConfigCommand               MplsLpsCommand,
    mplsLpsMeConfigHoldOff               Integer32
}

mplsLpsMeConfigGroupIndex  OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This object holds the Protection group index wherein
         this ME included in. If this ME is not part of any protection
         group then this object contains value 0. "
    DEFVAL { 0 }
    ::= { mplsLpsMeConfigEntry 1 }

mplsLpsMeConfigState OBJECT-TYPE
    SYNTAX      INTEGER { primary(1), backup(2) }

    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This object represents the operational state of the ME
        as either primary or backup"
    ::= { mplsLpsMeConfigEntry 2 }

mplsLpsMeConfigCommand OBJECT-TYPE
    SYNTAX      MplsLpsCommand
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION

        "Allows the initiation of an MPLS Linear protection command on
         the protection group and the ME specified by the index values.
         When read this object returns the last command written
         or noCmd if no command has been written to this ME
         since initialization. The return of the last command
         written does not imply that this command is currently in
         effect.  This request may have been preempted by a higher
         priority local or remote request.

         The value lockoutOfProtection should only be applied to the
         protection path / ME since that switch command prevents any
         of the working path / ME from switching to the protection path.
         Following the same logic, forcedSwitchWorkToProtect and
         manualSwitchWorkToProtect should only be applied to a working
         ME."
         ::= { mplsLpsMeConfigEntry 3 }

mplsLpsMeConfigHoldOff   OBJECT-TYPE
    SYNTAX     Integer32 (0..10000)
    UNITS       "milli-seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The hold-off time in milliseconds. Represents the time

         between SF/SD condition detection and declaration of
         an SF/SD request to the protection switching logic.
         It is intended to avoid unnecessary switching when a lower-
         layer protection mechanism is in place.
         Can be configured in steps of 100"
    DEFVAL { 0 }
    ::= { mplsLpsMeConfigEntry 4 }

-- MPLS Linear Protection ME Status Table
-- This table provides Protection Switching ME statistics.

mplsLpsMeStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLpsMeStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains status information of all the ME
         that are included in MPLS Protection groups."
    ::= { mplsLpsObjects 5 }

mplsLpsMeStatusEntry OBJECT-TYPE
    SYNTAX      MplsLpsMeStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the mplsLpsMeStatusTable."
    AUGMENTS { mplsLpsMeConfigEntry }
    ::= { mplsLpsMeStatusTable  1 }

MplsLpsMeStatusEntry ::= SEQUENCE {
    mplsLpsMeStatusCurrent               BITS,
    mplsLpsMeStatusSignalDegrades        Counter32,
    mplsLpsMeStatusSignalFailures        Counter32,
    mplsLpsMeStatusSwitchovers           Counter32,
    mplsLpsMeStatusLastSwitchover        TimeStamp,
    mplsLpsMeStatusSwitchoverSeconds     Counter32
}

mplsLpsMeStatusCurrent OBJECT-TYPE
    SYNTAX     BITS {
               localLockedOut(0),
               localSd(1),
               localSf(2),
               localSwitched(3),
               localWtr(4),
               remoteLockedout(5)
               remoteLockedout(5),
               remoteSd(6),
               remoteSf(7),
               remoteSwitched(8),
               remoteWtr(9)
            }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the current state of the MA.

         localLockedOut

         This bit, when it is set on a working ME or working path
         indicates that the working path is prevented from
         switching to the protection path because of local request.
         When it is set on protection / backup path, this bit
         indicates that none of the working path (in case of
         1:n) can switch
         to the protection path.

         localSd

         This bit implies that local signal degrade condition is
         in effect on this ME / path.

         localSf

         This bit implies that local signal failure condition is
         in effect on this ME / path.

         localSwitched

         This bit is only applicable to the working ME / path.
         It implies that the working path is currently switched
         to the protection path because of local request.

         local wtr

         This bit implies that local Wait-to-Restore state is
         in effect." effect.

         remoteLockedOut

         This bit, when it is set on a working ME or working path
         indicates that the working path is prevented from
         switching to the protection path because of remote request.
         When it is set on protection / backup path, this bit
         indicates that none of the working path (in case of
         1:n) can switch
         to the protection path.

         remoteSd

         This bit implies that remote signal degrade condition is
         in effect on this ME / path.

         remoteSf

         This bit implies that remote signal failure condition is
         in effect on this ME / path.

         remoteSwitched

         This bit is only applicable to the working ME / path.
         It implies that the working path is currently switched
         to the protection path because of remote request.

         remoteWtr

         This bit implies that remote Wait-to-Restore state is
         in effect."
    ::= { mplsLpsMeStatusEntry 1 }

mplsLpsMeStatusSignalDegrades OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Represents the count of Signal Degrade conditions.
         This condition occurs when the DM exceeds the
         currently configured value of the relevant instance of
         mplsLpsConfigSdThreshold."
    ::= { mplsLpsMeStatusEntry 2 }

mplsLpsMeStatusSignalFailures OBJECT-TYPE

    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Represents the count of Signal failure conditions.
         This condition occurs when the OAM running on this MA
         detects the Signal Fail event."
    ::= { mplsLpsMeStatusEntry 3 }

mplsLpsMeStatusSwitchovers OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Represents the count of SwitchOvers happened in this
         MA.

         When the mplsLpsMeConfigState is primary, this
         object will return the number of times this path
         has switched to the protection path.

         When the mplsLpsMeConfigState is backup, this object
         will return the number of times that any working paths
         has been switched back to the working path from this
         protection path."
    ::= { mplsLpsMeStatusEntry 4 }

mplsLpsMeStatusLastSwitchover OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object holds the value of sysUpTime wherein the
         last switchover happened.

         When the mplsLpsMeConfigState is primary, this object
         will return the value of sysUpTime when this path last
         completed a switchover. If this path has never switched
         to the protection line, the value 0 will be returned.

         When the mplsLpsMeConfigState is backup, this object
         will return the value of sysUpTime the last time that
         a working path was switched back to the working path
         from this protection path. If no working path has ever
         switched back to the working path from this protection
         path, the value 0 will be returned."

    ::= { mplsLpsMeStatusEntry 5 }

mplsLpsMeStatusSwitchoverSeconds OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The cumulative Protection Switching Duration (PSD) time
         in seconds.

         ForM a working path, this is the cumulative number of
         seconds that traffic was carried on the protection
         path.

         For the protection path, this is the cumulative number
         of seconds that the protection path has been used to
         carry any working path traffic."

    ::= { mplsLpsMeStatusEntry 6 }

mplsLpsNotificationEnable OBJECT-TYPE
    SYNTAX     BITS {
               switchover(0),
               modeMismatch(1)
            }
    MAX-ACCESS read-write
    STATUS     current

    DESCRIPTION
        "Provides the ability to enable and disable notifications
         defined in this MIB.

         switchover

         Indicates mplsLpsEventSwitchover notifications
         should be generated.

         modeMismatch

         Indicates mplsLpsEventModeMismatch notifications
         should be generated."

    DEFVAL { { } }
    ::= { mplsLpsObjects 6 }

    -- MPLS Linear Protection EVENTS

mplsLpsEventSwitchover NOTIFICATION-TYPE
    OBJECTS { mplsLpsMeStatusSwitchovers, mplsLpsMeStatusCurrent }
    STATUS  current
    DESCRIPTION
        "An mplsLpsEventSwitchover notification is sent when the
        value of an instance of mplsLpsMeStatusSwitchovers increments."
    ::= { mplsLpsNotifications 1 }

mplsLpsEventModeMismatch NOTIFICATION-TYPE
    OBJECTS { mplsLpsStatusModeMismatches }
    STATUS  current
    DESCRIPTION
        "An mplsLpsEventModeMismatch notification is sent when the
        value of an instance of mplsLpsStatusModeMismatches increments."

    ::= { mplsLpsNotifications 2 }

-- End of Notifications.

-- Module Compliance.

mplsLpsCompliances
   OBJECT IDENTIFIER ::= { mplsLpsConformance 1 }

mplsLpsGroups
   OBJECT IDENTIFIER ::= { mplsLpsConformance 2 }

-- Compliance requirement for fully compliant implementations.

mplsLpsModuleFullCompliance MODULE-COMPLIANCE

   STATUS       current
   DESCRIPTION "Compliance statement for agents that provide full
                support for MPLS-LPS-MIB. Such devices can
                provide linear protection and also be configured using
                this MIB module."

   MODULE -- This module.
   MANDATORY-GROUPS {
         mplsLpsScalarGroup,
         mplsLpsConfigTableGroup,
         mplsLpsMeTableGroup
   }

   GROUP        mplsLpsNotificationGroup
   DESCRIPTION "This group is only mandatory for those
                implementations which can efficiently implement
                the notifications contained in this group."

   ::= { mplsLpsCompliances 1 }

   -- Units of conformance.

mplsLpsScalarGroup OBJECT-GROUP
   OBJECTS {
      mplsLpsConfigGroups,
      mplsLpsNotificationEnable
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed for MPLS Linear Protection."
   ::= { mplsLpsGroups 1 }

mplsLpsConfigTableGroup OBJECT-GROUP
   OBJECTS {
    mplsLpsConfigGroupName,
    mplsLpsConfigRowStatus,
    mplsLpsConfigMode,
    mplsLpsConfigRevertive,
    mplsLpsConfigProtectionScheme,
    mplsLpsConfigSdThreshold,
    mplsLpsConfigWaitToRestore,
    mplsLpsConfigHoldOff,
    mplsLpsConfigContinualTxInterval,
    mplsLpsConfigRapidTxInterval,
    mplsLpsConfigCreationTime,
    mplsLpsConfigStorageType,
    mplsLpsStatusReqRcv,
    mplsLpsStatusReqSent,

    mplsLpsStatusFpathPathRcv,
    mplsLpsStatusFpathPathSent,
    mplsLpsStatusModeMismatches
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed for MPLS Linear Protection
           configuration and statistics."
   ::= { mplsLpsGroups 2 }

mplsLpsMeTableGroup OBJECT-GROUP
   OBJECTS {
    mplsLpsMeConfigState,
    mplsLpsMeConfigCommand,
    mplsLpsMeConfigHoldOff,
    mplsLpsMeStatusCurrent,
    mplsLpsMeStatusSignalDegrades,
    mplsLpsMeStatusSignalFailures,
    mplsLpsMeStatusSwitchovers,
    mplsLpsMeStatusLastSwitchover,
    mplsLpsMeStatusSwitchoverSeconds
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed for MPLS Linear Protection
           ME configuration and statistics."
   ::= { mplsLpsGroups 3 }

mplsLpsNotificationGroup NOTIFICATION-GROUP
   NOTIFICATIONS {
      mplsLpsEventSwitchover,

      mplsLpsEventModeMismatch
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed to implement notifications."
   ::= { mplsLpsGroups 4 }

-- MPLS-LPS-MIB module ends
END

9.  Security Considerations

   There are a number of management objects defined in this MIB module
   with a MAX-ACCESS clause of read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in some networks in
   a non-secure environment without proper protection can have a
   negative effect on network operations.  These are the tables and
   objects and their sensitivity/vulnerability:

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

   - mplsLpsConfigTable, mplsLpsStatusTable, mplsLpsMeConfigTable and
   mplsLpsMeStatusTable collectively show the MPLS Linear Protection
   characteristics. If an Administrator does not want to reveal this
   information, then these tables should be considered
   sensitive/vulnerable.

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

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

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

10.  IANA Considerations

   IANA is requested to assign an OID for the MIB module from the "MIB
   Transmission Group - MPLS STD" sub-registry of the "Internet-standard
   MIB - Transmission Group" registry for the MPLS Linear Protection MIB
   module specified in this document.

11.  References

11.1.  Normative References

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

   [RFC2578]       McCloghrie, K., Ed., Perkins, D., Ed., and J.
                   Schoenwaelder, Ed., "Structure of Management
                   Information Version 2 (SMIv2)", STD 58, RFC 2578,
                   April 1999.

   [RFC2579]       McCloghrie, K., Ed., Perkins, D., Ed., and J.
                   Schoenwaelder, Ed., "Textual Conventions for SMIv2",
                   STD 58, RFC 2579, April 1999.

   [RFC2580]       McCloghrie, K., Perkins, D., and J. Schoenwaelder,
                   "Conformance Statements for SMIv2", STD 58, RFC 2580,
                   April 1999.

11.2.  Informative References

   [RFC3410] J. Case, R. Mundy, D. pertain, B.Stewart, "Introduction and
             Applicability Statement for Internet Standard Management
             Framework", RFC 3410, December 2002.

   [RFC3414] Blumenthal, U. and B. Wijnen, "User-based Security
             Model(USM) for version 3 of the Simple Network Management
             Protocol (SNMPv3)", STD 62, RFC 3414, December 2002.

   [RFC3811] Nadeau, T., Ed., and J. Cucchiara, Ed., "Definitions of
             Textual Conventions (TCs) for Multiprotocol Label Switching
             (MPLS) Management", RFC 3811, June 2004.

   [RFC3812] Srinivasan, C., Viswanathan, A., and T. Nadeau,
             "Multiprotocol Label Switching (MPLS) Traffic Engineering
             (TE) Management Information Base (MIB)", RFC 3812, June
             2004.

   [RFC3826] Blumenthal, U., F. Maino and K. McCloghrie, "The Advanced
             Encryption Standard (AES) Cipher Algorithm in the SNMP
             User-based Security Model", RFC 3826, June 2004.

   [RFC5591] Harrington, D. and W. Hardaker, "Transport Security Model
             for the Simple Network Management Protocol(SNMP)",RFC 5591,
             June 2009.

   [RFC5592] Harrington, D., Salowey, J., and W. Hardaker, "Secure Shell
             Transport Model for the Simple Network Management Protocol
             (SNMP)", RFC 5592, June 2009.

   [RFC6353] Hardaker, W., "Transport Layer Security (TLS) Transport
             Model for the Simple Network Management Protocol (SNMP)",
             STD 78, RFC 6353, July 2011.

   [RFC6378] Weingarten, Y., Osborne, E., Sprecher, N., Fulignoli,
             A., Ed., and Y. Weingarten, Ed., "MPLS-TP Linear
             Protection", October 2011.

   [MPLS-OAM-ID-STD-MIB] Sam Aldrin, M.Venkatesan, Kannan KV Sampath,
                        Thomas D. Nadeau, Sami Boutros, Ping Pan,
                        "MPLS-TP Operations, Administration, and
                        Management (OAM) Identifiers Management
                        Information Base (MIB)", ID
                        draft-ietf-mpls-tp-oam-id-mib-07,
                        draft-ietf-mpls-tp-oam-id-mib-08, February 2015.

12. Acknowledgments

   The authors wish to thank Joan Cucchiara for her review as MIB
   Doctor, Joan's detailed comments were of great help for improving the
   quality of this document.

13. Author's Address

    Kingston Smiler Selvaraj
   IpInfusion
    IP Infusion
    RMZ Centennial
    Mahadevapura Post
    Bangalore - 560048 India
   Email: kingstons@ipinfusion.com
    EMail: kingstonsmiler@gmail.com

    Venkatesan Mahalingam
    Dell Inc.
   350 Holger way, San Jose, CA,
    5450 Great America Parkway,
    Santa Clara,  CA 95054, USA
    Email: venkat.mahalingams@gmail.com

    Vishwas Manral
   Hewlet-Packard, Inc.
   19111 Pruneridge Ave., Cupertino, CA, 95014
   Phone: 408-447-1497
    Ionos Corp,
    4100 Moorpark Ave,
    San Jose, CA
    Email: vishwas.manral@hp.com vishwas@ionosnetworks.com

    Daniel King
    Old Dog Consulting
    UK
    Email:daniel@olddog.co.uk

    Sam Aldrin
   Huawei Technologies, co.
   2330 Central Express Way,
   Santa Clara,
    Google, Inc.
    1600 Amphitheatre Parkway
    Mountain View, CA 95051,
    USA
    Email:  aldrin.ietf@gmail.com  aldrin.ietf@gmail.com"