Network Working Group                               Cheenu Srinivasan
Internet Draft                                  Parama Networks, Inc.
Expires: April December 2003
                                                     Arun Viswanathan
                                               Force10 Networks, Inc.

                                                     Thomas D. Nadeau
                                                  Cisco Systems, Inc.

                                                         October 2002

                                                            June 2003

       Multiprotocol Label Switching (MPLS) Label Switching
             Router (LSR) Management Information Base

                   draft-ietf-mpls-lsr-mib-09.txt

                   draft-ietf-mpls-lsr-mib-10.txt

Status of this Memo

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

   Internet-Drafts are working documents of the In ternet 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.

Abstract

   This memo defines a an 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 to configure and/or monitor a Multiprotocol Multi-Protocol Label
   Switching (MPLS) Label Switching Router (LSR).

Table of Contents

       Abstract .................................................1
  1.   Introduction                                                    2 .............................................2
  2.   Terminology                                                     3 ..............................................2
  3.   The SNMP Management Framework                                   3 ............................3
  4. Feature Checklist                                               4
5.   Outline                                                         5
 5.1. ..................................................3
  4.1  Summary of LSR MIB                                          5
6. Module ................................3
  5.   Brief Description of MIB Module Objects                                5
 6.1. mplsInterfaceConfTable                                      6
 6.2. ..................4
  5.1. mplsInterfaceTable .......................................4
  5.2. mplsInterfacePerfTable                                      6
 6.3. ...................................4
  5.3. mplsInSegmentTable                                          6
 6.4. .......................................4
  5.4. mplsInSegmentPerfTable                                      6
 6.5. ...................................5
  5.5. mplsOutSegmentTable                                         6
 6.6. ......................................5
  5.6. mplsOutSegmentPerfTable                                     6
 6.7. ..................................5
  5.7. mplsXCTable                                                 6
 6.8. ..............................................5
  5.8. mplsLabelStackTable                                         7
 6.9. mplsTrafficParamTable                                       7
7. ......................................5
  6.   Use of 32-bit and 64-bit Counters                               7
8. ........................6
  7.   Example of LSP Setup                                            7
9. .....................................6
  8.   Application of the Interface Group to MPLS                      9
 9.1. ...............8
  8.1. Support of the MPLS Layer by ifTable                        9
10. .....................8
  9.   The Use of RowPointer                                         10
11. ....................................10
  10. MPLS Label Switching Router MIB Module Definitions                  11
12. ........10
  11. Security Considerations                                       41
13. ...................................49
  12. Acknowledgments                                               42
14. ...........................................50
  13. References                                                    42
15. ................................................51
  13.1. Normative References  ...................................51
  13.2. Informative References  .................................52
  14. Authors' Addresses                                            44
16. ........................................52
  15. Full Copyright Statement                                      44 ..................................53
  16. Intellectual Property Notice ..............................53

1. Introduction

   This memo defines a an 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 a Multi-Protocol Label Switching (MPLS)
   [RFC3031] Label Switching Router (LSR).

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

   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, reference [RFC2119].

2. Terminology

   This document uses terminology from the document describing the
   MPLS architecture [RFC3031].  A label switched path (LSP) is
   modeled as a connection consisting of one or more incoming
   segments (in-segments) and/or one or more outgoing segments (out-
   segments) at a Label Switching Router  (LSR). LSR.  The association or interconnection
   of the in-segments and out-segments is accomplished by
   using a cross-connect.  We use the terminology
   "connection" and "LSP" interchangeably where the meaning is clear
   from the context.

   in-segment	  This is analagous to an MPLS label.
   out-segment    This is analagous to an MPLS label.
   cross-connect  This describes the conceptual connection
                  between a set of in-segments and out-segments.
                  Note that either set may be 0; that is, a
                  cross-connect may connect only out-segments
                  together with no in-segments in the case
                  where an LSP is originating on an LSR.

3. The SNMP Management Framework

   The SNMP

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework presently consists Framework, please refer to section 7 of five major
   components:

   -  An overall architecture, described in
   RFC 2571 [RFC2571].

   -  Mechanisms for describing and naming 3410 [RFC3410].

   Managed objects and events for 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
      purpose of management.  The first version of this
   Structure of Management Information (SMI) (SMI).  This memo specifies a MIB
   module that is called SMIv1 and described in
      STD 16, RFC 1155 [RFC1155], STD 16, RFC 1212 [RFC1212] and STD
      16, RFC 1215 [RFC1215].  The second version, called compliant to the SMIv2, which is described in STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580
   [RFC2580].

   -  Message protocols for transferring management information.  The
      first version of the SNMP message protocol is called SNMPv1
      and described in STD 15, RFC 1157 [RFC1157].  A second version
      of the SNMP message protocol, which is not an Internet
      standards track protocol, is called SNMPv2c and described in
      RFC 1901 [RFC1901] and RFC 1906 [RFC1906].  The third version
      of the message protocol is called SNMPv3 and described in RFC
      1906 [RFC1906], RFC 2572 [RFC2572] and RFC 2574 [RFC2574].

   -  Protocol operations for accessing management information.  The
      first set of protocol operations and associated PDU formats is
      described in STD 15, RFC 1157 [RFC1157].  A second set of
      protocol operations and associated PDU formats is described in
      RFC 1905 [RFC1905].

   -  A set of fundamental applications described in RFC 2573
      [RFC2573] and the view-based access control mechanism
      described in RFC 2575 [RFC2575].

   A more detailed introduction to the current SNMP Management
   Framework can be found in RFC 2570 [RFC2570].

   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. Feature Checklist

   The MPLS Label Switching Router  MIB (LSR MIB) is designed to
   satisfy the following requirements and constraints:

   - The MIB supports LSP establishment via an MPLS signaling
      protocol wherein the LSP parameters are specified using this
      MIB at the head end of the LSP and end-to-end LSP
      establishment is accomplished via signaling. The MIB also
      supports manually configured LSPs, i.e. those for which label
      associations at each hop of the LSP are provisioned by the
      administrator via this MIB.

   - The MIB supports the enabling and disabling of MPLS capability
      on MPLS capable interfaces of an LSR.

   -  The MIB allows resource sharing between two or more LSPs, i.e.
      it allows specification of sharing of bandwidth and other LSR
      resources between different LSPs.

   -  Both per-platform and per-interface label spaces are supported.

   -  MPLS packets can be forwarded solely based on an incoming top
      label [RFC3031, RFC3032].

   -  Support is provided for next-hop resolution when the outgoing
      interface is a shared media interface.  In the point-to-
      multipoint case, each outgoing segment can reside on a
      different shared media interface.

   -  The MIB supports point-to-point, point-to-multipoint and
      multipoint-to-point connections at an LSR.

   -  For multipoint-to-point connections all outgoing packets can
      have the same top label.

   -  For multipoint-to-point connections, the outgoing resources of
      the merged connections can be shared.

   -  For multipoint-to-point connections, packets from different
      incoming connections can have distinct outgoing label stacks
      beneath the (identical) top label.

   -  In the point-to-multipoint case each outgoing connection can
      have a distinct label stack including the top label.

   -  All the members of a point-to-multipoint connection can share
      the resources allocated for the ingress segments.

   -  The MIB provides cross-connect capability to "pop" an incoming
      label and forward the packet with the remainder of the label
      stack unchanged and without pushing any labels ("pop-and-go")
      [RFC3032].

   -  The MIB supports persistent as well as non-persistent LSPs.

   -  Performance counters are provided for in-segments and out-
      segments as well as for measuring MPLS performance on a per-
      interface basis.

5. Outline

   Configuring LSPs through an LSR involves

4. Outline

   Configuring LSPs through an LSR involves the following steps:

   -  Enabling MPLS on MPLS capable interfaces.

   -  Configuring in-segments and out-segments.

   -  Setting up the cross-connect table to associate segments and/or
      to indicate connection origination and termination.

   -  Optionally specifying label stack actions.

   -  Optionally specifying segment traffic parameters.

5.1.

4.1.  Summary of LSR MIB Module

   The MIB objects for performing these actions consist of the
   following tables:

   -  The interface configuration table (mplsInterfaceConfTable), (mplsInterfaceTable),
      which is used for enabling revealing the MPLS protocol on
      MPLS-capable interfaces.

   -  The in-segment (mplsInSegmentTable) and out-segment
      (mplsOutSegmentTable) tables, which are used for configuring
      LSP segments at an LSR.

   -  The cross-connect table (mplsXCTable), which is used to
      associate in and out segments together, in order to form a
      cross-connect.

   -  The label stack table (mplsLabelStackTable), which is used for
      specifying label stack operations.

   -  The Traffic Parameter table (mplsTrafficParamTable), which is
      used for specifying LSP-related traffic parameters.

   Further, the MPLS in-segment and out-segment performance tables,
   mplsInSegmentPerfTable and mplsOutSegmentPerfTable, contain the
   objects necessary to measure the performance of LSPs, and
   mplsInterfacePerfTable has objects to measure MPLS performance on
   a per-interface basis.

   These tables are described in the subsequent sections.

6.

5. Brief Description of MIB Module Objects

   Sections 6.1-6.2 5.1-5.2 describe objects pertaining to MPLS-capable
   interfaces of an LSR.  The objects described in Sections 6.3-6.8, 5.3-5.8,
   were derived from the Incoming Label Map (ILM) and Next Hop Label
   Forwarding Entry (NHLFE) as specified in the MPLS architecture
   document [RFC3031]. Section 6.9 describes objects for specifying
   traffic parameters for in and out segments. It is appropriate to note that the in-segment,
   out-segment, and cross-connect tables were modeled after similar
   tables found in [RFC2515].

6.1.   mplsInterfaceConfTable

5.1.   mplsInterfaceTable

   This table represents the interfaces that are MPLS capable.  An
   LSR creates an entry in this table for every MPLS capable
   interface on that LSR.

6.2.

5.2.  mplsInterfacePerfTable

   This table contains objects to measure the MPLS performance of
   MPLS capable interfaces and is an AUGMENT to
   mplsInterfaceConfTable.

6.3.
   mplsInterfaceTable.

5.3.  mplsInSegmentTable

   This table contains a description of the incoming MPLS segments
   to an LSR and their associated parameters.

6.4. This index for this
   table is mplsInSegmentIndex. The index structure of this
   table is specifically designed to handle many different
   MPLS implementations that manage their labels both in a
   distributed and centralized manner.

   The table is designed to handle existing MPLS labels as
   well as future label strategies that may require labels
   longer than the ones defined in RFC3031.  In these cases,
   the object mplsInSegmentLabelPtr may be used indicate
   the first accessible object in a separate table that can be
   used to represent the label because it is too long to
   be represented in a single 32-bit value (mplsInSegmentLabel).

5.4.  mplsInSegmentPerfTable

   The MPLS In-Segment in-Segment Performance Table has objects to help measure
   the performance of an incoming segment configured on an LSR.  It
   is an AUGMENT to mplsInSegmentTable.  High capacity counters are
   provided for objects that are likely to wrap around quickly on
   high-speed interfaces.

6.5.

5.5.  mplsOutSegmentTable

   The Out-Segment out-Segment Table contains a description of the outgoing MPLS
   segments at an LSR and their associated parameters.

6.6.

5.6.  mplsOutSegmentPerfTable

   The MPLS Out-Segment out-Segment Table contains objects to help measure the
   performance of an outgoing segment configured on an LSR.  It is
   an AUGMENT to mplsOutSegmentTable.  High capacity counters are
   provided for objects that are likely to wrap around quickly on
   high-speed interfaces.

6.7.

5.7.  mplsXCTable

   The mplsXCTable specifies information for associating segments
   together in order to instruct the LSR to switch between the
   specified segments.  It supports point-to-point, point-to-multi-
   point and multi-point-to-point connections.

   The operational status object indicates the packet forwarding
   state of a cross-connect entry. For example, when the operational
   status objects is 'down' it indicates that the specified cross-
   connect entry will not forward packets.  Likewise, when it is set
   to 'up' it indicates that packets will be forwarded.

   The administrative status object indicates the forwarding state
   desired by the operator.

6.8.

5.8.  mplsLabelStackTable
   The mplsLabelStackTable specifies the label stack to be pushed
   onto a packet, beneath the top label.  Entries to this table are
   referred to from mplsXCTable.

6.9.  mplsTrafficParamTable

   The mplsTrafficParamTable contains objects for specifying the
   traffic parameters of in-segments and out-segments.  Entries in
   this table are referred to from mplsInSegmentTable and
   mplsOutSegmentTable.

7.
   referred to from mplsXCTable.

6. Use of 32-bit and 64-bit Counters

   64-bit counters are provided in this MIB module for high speed
   interfaces where the use of 32-bit counters might be impractical.
   The requirements on the use of 32-bit and 64-bit counters (copied
   verbatim from [RFC2863]) are as follows.

   For interfaces that operate at 20,000,000 (20 million) bits per
   second or less, 32-bit byte and packet counters MUST be supported.
   For interfaces that operate faster than 20,000,000 bits/second,
   and slower than 650,000,000 bits/second, 32-bit packet counters
   MUST be supported and 64-bit octet counters MUST be supported.
   For interfaces that operate at 650,000,000 bits/second or faster,
   64-bit packet counters AND 64-bit octet counters MUST be
   supported.

8.

7. Example of LSP Setup

   In this section we provide a brief example of setting up an LSP
   using the this MIB objects described in section 11. module's objects.  While this example
   is not meant to illustrate every nuance of the MIB, MIB module, it
   is intended as an aid to understanding some of the key concepts.
   It is meant to be read after going through the MIB module itself.

   Suppose that one would like to manually create a best-effort,
   unidirectional LSP.  Assume that the LSP enters the LSR via MPLS
   interface A with ifIndex 12 and exits the LSR via MPLS interface B
   with ifIndex 13.  Let us assume that we do not wish to have a impose any
   additional label stack beneath the top label on the outgoing
   labeled packets. The following example illustrates which rows and
   corresponding objects might be created to accomplish this. Those
   objects relevant to illustrating the relationships amongst
   different tables are shown here. Other objects may be needed
   before conceptual row activation can happen.

   The RowStatus values shown in this section are those to be used in
   the set request, typically createAndGo(4) which is used to create
   the conceptual row and have its status immediately set to active.
   Note that the proper use of createAndGo(4) requires that all
   columns that do not have a DEFVAL to be specified in order for
   the SET to succeed. In the example below we have not specify all
   such columns for the sake of keeping the example short. Please
   keep in mind that all such fields must be send during a real SET
   operation.  A subsequent retrieval operation on the conceptual
   row will return a different value, such as active(1). Please see
   [RFC2579] for a detailed discussion on the use of RowStatus.

   First,

   We first create a cross-connect entry that associates the traffic parameter entries must be set-up for both
   segments.
   desired segments together.

   In mplsTrafficParamTable for the incoming direction: mplsXCTable:
   {
      mplsTrafficParamIndex
      mplsXCIndex                = 5
      mplsTrafficParamMaxRate 0x02,
      mplsXcInSegmentIndex       = 100000,
      mplsTrafficParamMeanRate 0x00000015,
      mplsXcOutSegmentIndex      = 100000,
      mplsTrafficParamMaxBurstSize 0x01,

      mplsXCLspId                = 2000,
      mplsTrafficParamRowStatus 'c021041502'H, -- 192.33.4.21.2
      mplsXcLabelStackIndex      = createAndGo(4)
   }

   In mplsTrafficParamTable for the 0x00, -- only a single
                                         -- outgoing direction:
   {
      mplsTrafficParamIndex           = 6
      mplsTrafficParamMaxRate         = 100000,
      mplsTrafficParamMeanRate        = 100000,
      mplsTrafficParamMaxBurstSize    = 2000,
      mplsTrafficParamRowStatus label
      mplsXCRowStatus            = createAndGo(4)
   }

   Note that if

   Next, we were setting up a bi-directional LSP, the segments
   in the reverse direction can share the traffic parameter entries
   (and hence resources) with the segments in the forward direction.

   We must next create the appropriate in-segment and out-segment
   entries with suitable traffic parameters by pointing to based on the
   appropriate traffic parameter entries cross-connect. Note that we have just created. some agents
   may wish to automatically create the in and out-segments
   based on the cross-connect creation.

   In mplsInSegmentTable:
   {
      mplsInSegmentIfIndex
      mplsInSegmentIndex              = 12, -- incoming interface 0x00000015

      mplsInSegmentLabel              = 21, -- incoming label
      mplsInSegmentNPop               = 1,
      mplsInSegmentInterface          = 12, -- incoming interface

      -- RowPointer MUST point to the first accesible column.
      mplsInSegmentLabelPtr           = 0.0,
      mplsInSegmentTrafficParamPtr    = mplsTrafficParamMaxRate.5, 0.0,

      mplsInSegmentRowStatus          = createAndGo(4)
   }

   In mplsOutSegmentTable:
   {
      mplsOutSegmentIndex             = 1,
      mplsOutSegmentIfIndex 0x01,
      mplsOutSegmentInterface         = 13, -- outgoing interface
      mplsOutSegmentPushTopLabel      = true(1),
      mplsOutSegmentTopLabel          = 22, -- outgoing label

      -- RowPointer MUST point to the first accesible column.
      mplsOutSegmentTrafficParamPtr   = mplsTrafficParamMaxRate.6,
      -- Other mandatory parameters needed to activate the row go
      here.
      mplsOutSegmentRowStatus         = createAndGo(4)
   }
   Next, a cross-connect entry is created thereby associating the
   newly created segments together.

   In mplsXCTable:
   {
      mplsXCIndex             = 2,
      mplsXCLspId             = 'c021041502'H, -- 192.33.4.21.2
      mplsInSegmentIfIndex    = 12,
      mplsInSegmentLabel      = 21,
      mplsOutSegmentIndex     = 1,
      mplsXCIsPersistent      = false (1),
      mplsLabelStackIndex     = 0, -- only a single
                                   -- outgoing label
      -- Other mandatory parameters for activating the row go here.
      mplsXCRowStatus first accesible column.
      mplsOutSegmentTrafficParamPtr   = 0.0,
      mplsOutSegmentLabelPtr          = 0.0,

      mplsOutSegmentRowStatus         = createAndGo(4)
   }
   Note that the mplsInSegmentXCIndex and mplsOutSegmentXCIndex
   objects will automatically be populated with the value 2 string 0x02
   when these segments are referred to from the corresponding
   cross- connect entry.

9.

8. Application of the Interface Group to MPLS

   The Interfaces Group of MIB II

   RFC2863 defines generic managed objects for managing
   interfaces.  This memo contains the media-specific
   extensions to the Interfaces Group for managing MPLS interfaces.

   This memo assumes the interpretation of the Interfaces Group to be
   in accordance with [RFC2863] which states that the interfaces
   table (ifTable) contains information on the managed resource's
   interfaces and that each sub-layer below the internetwork layer of
   a network interface is considered an interface.  Thus, the MPLS
   interface is represented as an entry in the ifTable.  The inter-
   relation of entries in the ifTable is defined by Interfaces Stack
   Group defined in [RFC2863].

   When using MPLS interfaces, the interface stack table might appear
   as follows:

      +----------------------------------------+
      |   MPLS interface; ifType = mpls(166)   +
      +----------------------------------------+
      |            Underlying Layer            +
      +----------------------------------------+

   In the above diagram, "Underlying Layer" refers to the ifIndex of
   any interface type for which MPLS interworking has been defined.
   Examples include ATM, Frame Relay, Ethernet, etc.

9.1.

8.1.  Support of the MPLS Layer by ifTable

   Some specific interpretations of ifTable for the MPLS layer
   follow.

   Object        Use for the MPLS layer

   ifIndex       Each MPLS interface is represented by an ifEntry.

   ifDescr       Description of the MPLS interface.

   ifType        The value that is allocated for MPLS is 166.

   ifSpeed       The total bandwidth in bits per second for use by
                 the MPLS layer.

   ifPhysAddress Unused.

   ifAdminStatus This variable indicates the administrator's intent
                 as to whether MPLS should be enabled, disabled, or
                 running in some diagnostic testing mode on this
                 interface.  Also see [RFC2863].

   ifOperStatus  This value reflects the actual operational status
                 of MPLS on this interface.

   ifLastChange  See [RFC2863].

   ifInOctets    The number of received octets over the interface,
                 i.e., the number of received, octets received as
                 labeled packets.

   ifOutOctets   The number of transmitted octets over the
                 interface, i.e., the number of octets transmitted
                 as labeled packets.

   ifInErrors    The number of labeled packets dropped due to
                 uncorrectable errors.

   ifInUnknownProtos
                 The number of received packets discarded during
                 packet header validation, including packets with
                 unrecognized label values.

   ifOutErrors   See [RFC2863].

   ifName        Textual name (unique on this system) of the
                 interface or an octet string of zero length.

   ifLinkUpDownTrapEnable
                 Default is disabled (2).

   ifConnectorPresent
                 Set to false (2).

   ifHighSpeed   See [RFC2863].

   ifHCInOctets  The 64-bit version of ifInOctets; supported if
                 required by the compliance statements in [RFC2863].

   ifHCOutOctets The 64-bit version of ifOutOctets; supported if
                 required by the compliance statements in [RFC2863].

   ifAlias       The non-volatile 'alias' name for the interface as
                 specified by a network manager.

   ifCounterDiscontinuityTime
                 See [RFC2863].

10.

9.   The Use of RowPointer

   RowPointer is a textual convention used to identify a conceptual
   row in an SNMP a MIB Table by pointing to one of its objects. the first accessible object
   in that row. In this
   MIB, it is used in MIB module, the trafficParamPtr object from
   either the mplsInSegmentTable and or mplsOutSegmentTable for SHOULD
   indicate the first accessible column in an entry in the
   MplsTunnelResourceEntry in the MPLS-TE-STD-MIB [TEMIB]
   to indicate the following purposes. First, it indicates a particular traffic parameter table. An example of such a table is
   mplsTrafficParamTable. Second, settings for this
   segment, if it is represents an LSP used to indicate a specific
   instance of for a TE tunnel.

   The trafficParamPtr object may optionally point at an
   externally defined traffic parameter entry that is associated with a
   given in-segment or out-segment entry. In the in-segment and out-
   segment tables, mplsTrafficParamPtr MUST point to the first
   column specification
   table. A value of zeroDotZero indicates best-effort
   treatment. By having the appropriate conceptual row [].

11. same value of this object,
   two or more segments can indicate resource sharing
   of such things as LSP queue space, etc.

10.   MPLS Label Switching Router MIB Module Definitions

MPLS-LSR-MIB

MPLS-LSR-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
   MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
   Integer32, Counter32, Unsigned32, Counter64, Gauge32,
   zeroDotZero
      FROM SNMPv2-SMI
   MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
      FROM SNMPv2-CONF
   TruthValue, RowStatus, StorageType, RowPointer,
   TimeStamp
   TimeStamp, TEXTUAL-CONVENTION
      FROM SNMPv2-TC
   InterfaceIndex,
   InterfaceIndexOrZero
      FROM IF-MIB
   mplsMIB,
   mplsStdMIB, MplsLSPID, MplsLabel, MplsBitRate, MplsBurstSize,
   MplsOwner
      FROM MPLS-TC-MIB MPLS-TC-STD-MIB
   AddressFamilyNumbers
      FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB
   InetAddress, InetAddressType
      FROM INET-ADDRESS-MIB
   ;

mplsLsrMIB

mplsLsrStdMIB MODULE-IDENTITY
   LAST-UPDATED "200210051200Z" "200306061200Z"  -- 5 October 2002 6 June 2003 12:00:00 GMT
   ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group"
   CONTACT-INFO
       "
                Cheenu Srinivasan
        Postal:
                Parama Networks, Inc.
                1030 Broad Street
                Shrewsbury, NJ 07702
        Tel:    +1-732-544-9120 x731
        Email:  cheenu@paramanet.com

                Arun Viswanathan
        Postal:
                Force10 Networks, Inc.
                1440 McCarthy Blvd
                Milpitas, CA 95035
        Tel:    +1-408-571-3516
        Email:  arun@force10networks.com

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

        Comments about this document should be emailed
        directly to the MPLS working group mailing list at
        mpls@uu.net.
       "
        mpls@uu.net."

   DESCRIPTION
       "This MIB module contains managed object definitions for
        the Multiprotocol Label Switching (MPLS) Router as
        defined in: Rosen, E., Viswanathan, A., and R.
        Callon, Multiprotocol Label Switching Architecture,
        RFC 3031, January 2001." 2001.

        Copyright (C) The Internet Society (2003).  This
        version of this MIB module is part of RFCXXX; see
        the RFC itself for full legal notices."

   -- Revision history.
   REVISION
       "200210051200Z"
       "200306061200Z"  -- 5 October 2002 6 June 2003 12:00:00 GMT
   DESCRIPTION
       "Initial revision, published as part of RFC XXXX."
   ::= { mplsMIB 2 }

-- Top level components of this MIB.

-- Notifications
mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrMIB 0 }
-- Tables, Scalars
mplsLsrObjects       OBJECT IDENTIFIER ::= { mplsLsrMIB 1 }
-- Conformance
mplsLsrConformance   OBJECT IDENTIFIER revision, published as part of RFC XXXX."
   ::= { mplsLsrMIB mplsStdMIB 2 }

-- MPLS Interface Configuration Table.

mplsInterfaceConfTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInterfaceConfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies per-interface MPLS capability
        and associated information." Textual Conventions

MplsIndexType ::= { mplsLsrObjects 1 }

mplsInterfaceConfEntry OBJECT-TYPE
   SYNTAX        MplsInterfaceConfEntry
   MAX-ACCESS    not-accessible TEXTUAL-CONVENTION
   STATUS              current
   DESCRIPTION
       "A conceptual row in this table
       "This is created
        automatically by an LSR for every interface capable
        of supporting MPLS and is enabled to do so. A
        conceptual row in this table will exist iff octet string that can be used as a
        corresponding entry in ifTable exists with ifType =
        mpls(166). If this associated entry table
        index in ifTable cases where a large addressable space is
        operationally disabled (thus disabling MPLS
        required such as on an LSR where many applications
        may be provisioning labels.

        Note that
        interface), the corresponding entry in this table
        MUST be deleted shortly thereafter. An conceptual
        row with index 0 is created if string containing the LSR supports per-
        platform labels. This conceptual row represents single octet with
        the
        per-platform label space and contains parameters
        that apply value 0x00 is a reserved value used to all interfaces that participate in the
        per-platform label space. Other conceptual rows in
        this table represent MPLS interfaces that may
        participate in either
        special cases. When this textual convention is used
        as the per-platform or per-
        interface label spaces, or both. Further information
        about label space participation SYNTAX of an interface is
        provided in object, the DESCRIPTION DESCRITPION clause of
        mplsInterfaceLabelParticipationType."
   INDEX { mplsInterfaceConfIndex }
   ::= { mplsInterfaceConfTable 1 }

MplsInterfaceConfEntry ::= SEQUENCE {
  mplsInterfaceConfIndex              InterfaceIndexOrZero,
  mplsInterfaceLabelMinIn             MplsLabel,
  mplsInterfaceLabelMaxIn             MplsLabel,
  mplsInterfaceLabelMinOut            MplsLabel,
  mplsInterfaceLabelMaxOut            MplsLabel,
  mplsInterfaceTotalBandwidth         MplsBitRate,
  mplsInterfaceAvailableBandwidth     MplsBitRate,
  mplsInterfaceLabelParticipationType BITS
}

mplsInterfaceConfIndex OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This
        MUST specify if this special value is valid and if so
        what the special meaning of is.

        When a unique index MIB module is used for configuration, an entry in the
        MplsInterfaceConfTable.  A non-zero index object with
        this SYNTAX always contains a legal value (if a non-zero-length
        string) for an
        entry indicates index that is not currently used in the ifIndex for relevant
        table. The Command Generator (Network Management Application)
        reads this variable and uses the corresponding
        interface entry in of (non-zero-length string)
        value read when creating a new row with an SNMP SET.

        When the MPLS-layer in SET is performed, the ifTable.
        Note that Command Responder (agent) must
        determine whether the per-platform label space value is indeed still unused; Two Network
        Management Applications may apply attempt to
        several interfaces, create a row
        (configuration entry) simultaneously and therefore the configuration
        of the per-platform label space interface parameters
        will apply to all of use the interfaces that are
        participating in same value. If
        it is currently unused, the per-platform label space."
   REFERENCE
       "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., SET succeeds and F. Kastenholtz, June 2000"
   ::= { mplsInterfaceConfEntry 1 }

mplsInterfaceLabelMinIn OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is the minimum Command
        Responder (agent) changes the value of an MPLS label that this
        LSR is willing object, according to receive on this interface."
   ::= { mplsInterfaceConfEntry 2 }

mplsInterfaceLabelMaxIn OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is
        an implementation-specific algorithm.  If the maximum value of an MPLS label that this
        LSR is willing to receive on in use,
        however, the SET fails.  The Network Management Application must
        then re-read this interface."
   ::= { mplsInterfaceConfEntry 3 }

mplsInterfaceLabelMinOut variable to obtain a new usable value.

        An OBJECT-TYPE definition using this SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is MUST specify the minimum value of an MPLS label that this
        LSR
        relevant table for which the object is willing to send on providing this interface."
        functionality."
   SYNTAX              OCTET STRING (SIZE(1..24))

-- Top level components of this MIB module.

-- Notifications
mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrStdMIB 0 }

-- Tables, Scalars
mplsLsrObjects       OBJECT IDENTIFIER ::= { mplsInterfaceConfEntry 4 mplsLsrStdMIB 1 }

mplsInterfaceLabelMaxOut

-- Conformance
mplsLsrConformance   OBJECT IDENTIFIER ::= { mplsLsrStdMIB 2 }

-- MPLS Interface Table.
mplsInterfaceTable  OBJECT-TYPE
   SYNTAX        MplsLabel        SEQUENCE OF MplsInterfaceEntry
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "This is the maximum value of an table specifies per-interface MPLS label that this
        LSR is willing to send on this interface." capability
        and associated information."
   ::= { mplsInterfaceConfEntry 5 mplsLsrObjects 1 }

mplsInterfaceTotalBandwidth

mplsInterfaceEntry OBJECT-TYPE
   SYNTAX        MplsBitRate        MplsInterfaceEntry
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "This value indicates the total amount of usable
        bandwidth on
       "A conceptual row in this table is created
        automatically by an LSR for every interface capable
        of supporting MPLS and which is specified configured to do so.
        A conceptual row in
        kilobits per second (Kbps).  This variable this table will exist iff a
        corresponding entry in ifTable exists with ifType =
        mpls(166). If this associated entry in ifTable is not
        applicable when applied to
        operationally disabled (thus removing MPLS
        capabilities on that interface), the interface with index
        0. When corresponding
        entry in this value cannot table MUST be measured, this value
        should contain deleted shortly thereafter.
        An conceptual row with index 0 is created if the nominal bandwidth."
::= { mplsInterfaceConfEntry 6 }

mplsInterfaceAvailableBandwidth OBJECT-TYPE
   SYNTAX        MplsBitRate
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This value indicates LSR
        supports per-platform labels. This conceptual row
        represents the total amount of available
        bandwidth available on this interface per-platform label space and is
        specified contains
        parameters that apply to all interfaces that participate
        in kilobits per second (Kbps).  This value
        is calculated as the difference between per-platform label space. Other conceptual rows
        in this table represent MPLS interfaces that may
        participate in either the per-platform or per-
        interface label spaces, or both.  Implementations
        that either only support per-platform labels,
        or have only them configured, may choose to return
        just the amount mplsInterfaceEntry of bandwidth currently in use 0 and that specified in
        mplsInterfaceTotalBandwidth.  This variable is not
        applicable when applied to return
        the other rows. This will greatly reduce the numebr
        of objects returned. Further information about label
        space participation of an interface with index
        0. When this value cannot be measured, this value
        should contain is provided in
        the nominal bandwidth." DESCRIPTION clause of
        mplsInterfaceLabelParticipationType."
   INDEX { mplsInterfaceIndex }
   ::= { mplsInterfaceConfEntry 7 mplsInterfaceTable 1 }

MplsInterfaceEntry ::= SEQUENCE {
  mplsInterfaceIndex                  InterfaceIndexOrZero,
  mplsInterfaceLabelMinIn             MplsLabel,
  mplsInterfaceLabelMaxIn             MplsLabel,
  mplsInterfaceLabelMinOut            MplsLabel,
  mplsInterfaceLabelMaxOut            MplsLabel,
  mplsInterfaceTotalBandwidth         MplsBitRate,
  mplsInterfaceAvailableBandwidth     MplsBitRate,
  mplsInterfaceLabelParticipationType OBJECT-TYPE
   SYNTAX BITS {
                  perPlatform (0),
                  perInterface (1)
}

mplsInterfaceIndex OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "Either the perPlatform(0) or perInterface(1) bit
        MUST be set. Note however that
       "This is a unique index for an interface could
        participate in both label spaces entry in which case both
        bits would be set. If the value of the
        mplsInterfaceConfIndex
        MplsInterfaceTable.  A non-zero index for this an
        entry is zero, then
        only the perPlatform(0) bit MUST be set and the
        perInterface(1) bit is meaningless. If the
        perInterface(1) bit is set then indicates the value of
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut ifIndex for this entry reflect the
        label ranges for this interface.  If only corresponding
        interface entry of the
        perPlatform(0) bit is set, then MPLS-layer in the value of
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut for this ifTable.
        The entry must be
        identical to the instance of these objects with index 0."
   REFERENCE
       "Rosen, E., Viswanathan, A., 0 represents the per-platform
        label space and R. Callon,
        Multiprotocol Label Switching Architecture, RFC
        3031, January 2001."
::= { mplsInterfaceConfEntry 8 }

-- End of mplsInterfaceConfTable

-- MPLS Interface Performance Table.

mplsInterfacePerfTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInterfacePerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This contains parameters that apply to all
        interfaces that participate in the per-platform label
        space. Other entries defined in this table provides represent
        additional MPLS performance information on
        a interfaces that may participate in either
        the per-platform or per-interface basis." label spaces, or both."
   REFERENCE
       "RFC 2863 - The Interfaces Group MIB, McCloghrie, K.,
        and F. Kastenholtz, June 2000"
   ::= { mplsLsrObjects 2 mplsInterfaceEntry 1 }

mplsInterfacePerfEntry

mplsInterfaceLabelMinIn OBJECT-TYPE
   SYNTAX        MplsInterfacePerfEntry        MplsLabel
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "An entry in this table
       "This is created by the LSR for
        every interface capable minimum value of supporting MPLS.  Its is an extension MPLS label that this
        LSR is willing to the mplsInterfaceConfEntry table."
   AUGMENTS      { mplsInterfaceConfEntry }
      ::= { mplsInterfacePerfTable 1 }

MplsInterfacePerfEntry receive on this interface."
   ::= SEQUENCE {
      -- incoming direction
      mplsInterfaceInLabelsUsed          Gauge32,
      mplsInterfaceLabelLookupFailures      Counter32,

      -- outgoing direction
      mplsInterfaceOutLabelsUsed         Gauge32,
      mplsInterfaceOutFragments          Counter32 mplsInterfaceEntry 2 }

mplsInterfaceInLabelsUsed

mplsInterfaceLabelMaxIn OBJECT-TYPE
   SYNTAX        Gauge32        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object counts the number of labels that are in
        use at this point in time on this interface in the
        incoming direction. If the interface participates in
        the per-platform label space only, then the value of
        this instance of this object MUST be identical with is the maximum value of the instance with index 0. If the
        interface participates in the per-interface an MPLS label
        space, then this instance of this object MUST
        represent the number of of per-interface labels that
        are in use at this point in time
        LSR is willing to receive on this interface."
   ::= { mplsInterfacePerfEntry 1 mplsInterfaceEntry 3 }

mplsInterfaceLabelLookupFailures

mplsInterfaceLabelMinOut OBJECT-TYPE
   SYNTAX        Counter32        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object counts is the number minimum value of labeled packets an MPLS label that have been received on this interface and were
        discarded because there was no matching cross-
        connect entry. This object MUST count
        LSR is willing to send on a per-
        interface basis regardless of which label space the
        interface participates in." this interface."
   ::= { mplsInterfacePerfEntry 2 mplsInterfaceEntry 4 }

mplsInterfaceOutLabelsUsed

mplsInterfaceLabelMaxOut OBJECT-TYPE
   SYNTAX        Gauge32        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object counts is the number maximum value of top-most labels in
        the outgoing an MPLS label stacks that are in use at this
        point in time
        LSR is willing to send on this interface. This object MUST
        count on a per-interface basis regardless of which
        label space the interface participates in." interface."
   ::= { mplsInterfacePerfEntry 3 mplsInterfaceEntry 5 }

mplsInterfaceOutFragments

mplsInterfaceTotalBandwidth OBJECT-TYPE
   SYNTAX        Counter32        MplsBitRate
   UNITS         "kilobits per second"
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object counts value indicates the number total amount of outgoing MPLS
        packets that required fragmentation before
        transmission usable
        bandwidth on this interface. interface and is specified in
        kilobits per second (Kbps).  This object MUST
        count on a per-interface basis regardless of which
        label space variable is not
        applicable when applied to the interface participates in." with index
        0. When this value cannot be measured, this value
        should contain the nominal bandwidth."
::= { mplsInterfacePerfEntry 4 mplsInterfaceEntry 6 }

-- In-segment table.

mplsInSegmentTable

mplsInterfaceAvailableBandwidth OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInSegmentEntry        MplsBitRate
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "This table contains value indicates the collection total amount of incoming
        segments available
        bandwidth available on this interface and is
        specified in kilobits per second (Kbps).  This value
        is calculated as the difference between the amount
        of bandwidth currently in use and that specified in
        mplsInterfaceTotalBandwidth.  This variable is not
        applicable when applied to an LSR." the interface with index
        0. When this value cannot be measured, this value
        should contain the nominal bandwidth."
::= { mplsLsrObjects 3 mplsInterfaceEntry 7 }

mplsInSegmentEntry

mplsInterfaceLabelParticipationType OBJECT-TYPE
   SYNTAX        MplsInSegmentEntry  BITS {
                  perPlatform (0),
                  perInterface (1)
              }
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "An entry in this table represents one incoming
        segment.  An entry can be created by a network
        administrator or an SNMP agent, or an MPLS signaling
        protocol.  The creator
       "If the value of the mplsInterfaceIndex for this
        entry is denoted by
        mplsInSegmentOwner.  An zero, then this entry in corresponds to the
        per-platform label space for all interfaces configured
        to use that label space. In this table is
        indexed by case the ifIndex of perPlatform(0)
        bit MUST be set; the incoming interface perInterface(1) bit is meaningless
        and
        the (top) label. MUST be ignored.

        The value remainder of mplsInSegmentRowStatus
        cannot be active(1)unless the ifTable entry
        corresponding to mplsInSegmentIfIndex exists. An
        entry in this table must match any incoming packets
        for further processing. A match indicates an
        instance description applies to entries
        with a non-zero value of mplsXCEntry based on which
        forwarding/switching actions are taken."
   INDEX { mplsInSegmentIfIndex, mplsInSegmentLabel }
   ::= { mplsInSegmentTable 1 }

MplsInSegmentEntry ::= SEQUENCE {
  mplsInSegmentIfIndex              InterfaceIndexOrZero,
  mplsInSegmentLabel                MplsLabel,
  mplsInSegmentNPop                 Integer32,
  mplsInSegmentAddrFamily           AddressFamilyNumbers,
  mplsInSegmentXCIndex              Unsigned32,
  mplsInSegmentOwner                MplsOwner ,
  mplsInSegmentTrafficParamPtr      RowPointer,
  mplsInSegmentRowStatus            RowStatus,
  mplsInSegmentStorageType          StorageType
}

mplsInSegmentIfIndex OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This mplsInterfaceIndex.

        If the perInterface(1) bit is a unique index for an entry in set then the
        MplsInSegmentTable.  This value represents the
        interface index of
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut for this entry reflect the incoming MPLS
        label ranges for this interface.  A

        If only the perPlatform(0) bit is set, then the value of zero represents an incoming label
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut for this entry MUST be
        identical to the instance of these objects with
        index 0.  These objects may only vary from the
        per-platform label space. entry
        with index 0 if both the perPlatform(0) and perInterface(1)
        bits are set.

        In this case, all cases, at a minimum one of the
        mplsInSegmentLabel is interpreted to perPlatform(0) or
        perInterface(1) bits MUST be set to indicate that
        at least one label space is in use by this interface. In
        all cases, agents MUST ensure that label ranges are
        specified consistently and MUST return an MPLS-type
        label."
        inconsistentValue error when they do not."
   REFERENCE
       "Rosen, E., Viswanathan, A., and R. Callon,
        Multiprotocol Label Switching Architecture, RFC
        3031, January 2001."
::= { mplsInSegmentEntry 1 mplsInterfaceEntry 8 }

mplsInSegmentLabel

-- End of mplsInterfaceTable

-- MPLS Interface Performance Table.

mplsInterfacePerfTable  OBJECT-TYPE
   SYNTAX        MplsLabel        SEQUENCE OF MplsInterfacePerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "The incoming label for this segment."
       "This table provides MPLS performance information on
        a per-interface basis."
   ::= { mplsInSegmentEntry mplsLsrObjects 2 }

mplsInSegmentNPop

mplsInterfacePerfEntry OBJECT-TYPE
   SYNTAX        Integer32 (1..2147483647)        MplsInterfacePerfEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "The number of labels to pop from the incoming
        packet.  Normally only the top label
       "An entry in this table is popped from created by the packet and used for all switching decisions LSR for
        that packet.  Note that technologies which do not
        support label popping should set this value to its
        default value of 1. This object cannot be modified
        if mplsInSegmentRowStatus is active(1)."
   DEFVAL        { 1 }
   ::= { mplsInSegmentEntry 3 }

mplsInSegmentAddrFamily OBJECT-TYPE
   SYNTAX        AddressFamilyNumbers
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The IANA address family [IANAFamily]
        every interface capable of the incoming
        packet which supporting MPLS.  Its is used at
        an egress LSR to deliver
        packets extension to the appropriate layer 3 entity.  A value
        of other(0) indicates mplsInterfaceEntry table.
        Note that the family type is either
        unknown or undefined; discontinuity behavior of entries in
        this is not a legal value at
        an egress LSR. This object cannot table MUST be modified if
        mplsInSegmentRowStatus is active(1)." based on the corresponding
        ifEntry's ifDiscontinuityTime."
   AUGMENTS      { mplsInterfaceEntry }
      ::= { mplsInSegmentEntry 4 mplsInterfacePerfTable 1 }

mplsInSegmentXCIndex

MplsInterfacePerfEntry ::= SEQUENCE {
      -- incoming direction
      mplsInterfacePerfInLabelsInUse         Gauge32,
      mplsInterfacePerfInLabelLookupFailures Counter32,

      -- outgoing direction
      mplsInterfacePerfOutLabelsInUse      Gauge32,
      mplsInterfacePerfOutFragmentedPkts   Counter32
   }

mplsInterfacePerfInLabelsInUse OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        Gauge32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Index into mplsXCTable which identifies which cross-
        connect entry this segment is part of.  A value        current
   DESCRIPTION
       "This object counts the number of
        zero indicates labels that are in
        use at this entry is not referred to by
        any cross-connect entry.  When a cross-connect entry
        is created which point in time on this in-segment is a part of, interface in the
        incoming direction. If the interface participates in
        only the per-platform label space, then the value of
        the instance of this object is automatically updated MUST be identical to reflect
        the value of mplsXCIndex the instance with index 0. If the
        interface participates in the per-interface label
        space, then the instance of this object MUST
        represent the number of of per-interface labels that cross-connect entry."
        are in use on this interface."
   ::= { mplsInSegmentEntry 5 mplsInterfacePerfEntry 1 }

mplsInSegmentOwner

mplsInterfacePerfInLabelLookupFailures  OBJECT-TYPE
   SYNTAX        MplsOwner        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Denotes
       "This object counts the entity number of labeled packets
        that created and is responsible
        for managing have been received on this segment." interface and which
        were discarded because there was no matching cross-
        connect entry. This object MUST count on a per-
        interface basis regardless of which label space the
        interface participates in."
   ::= { mplsInSegmentEntry 6 mplsInterfacePerfEntry 2 }

mplsInSegmentTrafficParamPtr

mplsInterfacePerfOutLabelsInUse OBJECT-TYPE
   SYNTAX            RowPointer        Gauge32
   MAX-ACCESS        read-create    read-only
   STATUS        current
   DESCRIPTION
       "This variable represents a pointer to object counts the traffic
     parameter specification for number of top-most labels in
        the outgoing label stacks that are in use at this in-segment.  This
     value may
        point at an entry in the
     mplsTrafficParamTable to indicate which
     mplsTrafficParamEntry is to be assigned to time on this
     segment. interface. This value may optionally point at an
     externally defined traffic parameter specification
     table.  A value object MUST
        count on a per-interface basis regardless of zeroDotZero indicates best-effort
     treatment.  By having which
        label space the interface participates in."
   ::= { mplsInterfacePerfEntry 3 }

mplsInterfacePerfOutFragmentedPkts OBJECT-TYPE
   SYNTAX        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object counts the same value number of outgoing MPLS
        packets that required fragmentation before
        transmission on this object,
     two or more segments can indicate resource sharing. interface. This object cannot be modified if
     mplsInSegmentRowStatus is active(1)."
   DEFVAL { zeroDotZero } MUST
        count on a per-interface basis regardless of which
        label space the interface participates in."
::= { mplsInSegmentEntry 7 mplsInterfacePerfEntry 4 }

mplsInSegmentRowStatus

-- mplsInterfacePerf Table end.

mplsInSegmentIndexNext OBJECT-TYPE
   SYNTAX        RowStatus        MplsIndexType
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "This variable is used object contains the next available value to create, modify, and/or
        delete
        be used for mplsInSegmentIndex when creating entries
        in the mplsInSegmentTable. The special value of a row
        a string containing the single octet 0x00 indicates
        indicates that no new entries can be created in this table."
        table. Agents not allowing managers to create entries
        in this table MUST set this object to this special
        value."
   ::= { mplsInSegmentEntry 8 mplsLsrObjects 3 }

mplsInSegmentStorageType

-- in-segment table.
mplsInSegmentTable  OBJECT-TYPE
   SYNTAX        StorageType        SEQUENCE OF MplsInSegmentEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "This variable indicates table contains a description of the storage type incoming MPLS
        segments (labels) to an LSR and their associated parameters.
        The index for this
        object. This object table is mplsInSegmentIndex.
        The index structure of this table is specifically designed
        to handle many different MPLS implementations that manage
        their labels both in a distributed and centralized manner.
        The table is also designed to handle existing MPLS labels
        as defined in RFC3031 as well as longer ones that may
        be necessary in the future.

        In cases where the label cannot fit into the
        mplsInSegmentLabel object, the mplsInSegmentLabelPtr
        will indicate this by being set to the first accessible
        colum in the appropriate extension table's row.
        In this case an additional table MUST
        be modified if
        mplsInSegmentRowStatus is active(1). If provided and MUST be indexed by at least the indexes
        used by this
        variable table. In all other cases when the label is
        represented within the mlsinSegmentLabel object, the
        mplsInSegmentLabelPtr must be set to readOnly(5), and 0.0. Due to the
        corresponding LFIB entry
        fact that MPLS labels may not exceed 24 bits, the
        mplsInSegmentLabelPtr object is removed, then only a provision for
        future-proofing the agent
        must remove this row shortly thereafter [RFC2579]."
   ::= { mplsInSegmentEntry 9 }

-- End MIB module. Thus, the definition
        of mplsInSegmentTable

-- In-segment performance table.

mplsInSegmentPerfTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInSegmentPerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains statistical information for
        incoming MPLS segments to an LSR." any extension tables is beyond the scope of this
        MIB module."
   ::= { mplsLsrObjects 4 }

mplsInSegmentPerfEntry

mplsInSegmentEntry  OBJECT-TYPE
   SYNTAX        MplsInSegmentPerfEntry        MplsInSegmentEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table contains statistical
        information about represents one incoming
        segment which was
        configured in the mplsInSegmentTable. The counters as is represented in this an LSR's LFIB.
        An entry should behave in can be created by a manner similar to
        that network
        administrator or an SNMP agent, or an MPLS signaling
        protocol.  The creator of the interface.
        mplsInSegmentPerfDiscontinuityTime indicates the
        time entry is denoted by
        mplsInSegmentOwner.

        The value of mplsInSegmentRowStatus cannot be active(1)
        unless the last discontinuity ifTable entry corresponding to
        mplsInSegmentInterface exists.  An entry in these objects."
   AUGMENTS this table
        must match any incoming packets, and indicates an
        instance of mplsXCEntry based on which forwarding
        and/or switching actions are taken."
   INDEX { mplsInSegmentEntry mplsInSegmentIndex }
   ::= { mplsInSegmentPerfTable mplsInSegmentTable 1 }

MplsInSegmentPerfEntry

MplsInSegmentEntry ::= SEQUENCE {
    mplsInSegmentOctets                 Counter32,
    mplsInSegmentPackets                Counter32,
    mplsInSegmentErrors                 Counter32,
    mplsInSegmentDiscards               Counter32,

    -- high capacity counter
    mplsInSegmentHCOctets               Counter64,

    mplsInSegmentPerfDiscontinuityTime  TimeStamp
   }

mplsInSegmentOctets OBJECT-TYPE
   SYNTAX        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This value represents the total number of octets
        received by this segment. It MUST be equal to the
        least significant 32 bits of mplsInSegmentHCOctets."
   ::= { mplsInSegmentPerfEntry 1 }

mplsInSegmentPackets OBJECT-TYPE
   SYNTAX        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Total number of packets received by this segment."
   ::= { mplsInSegmentPerfEntry 2
  mplsInSegmentIndex                MplsIndexType,
  mplsInSegmentInterface            InterfaceIndexOrZero,
  mplsInSegmentLabel                MplsLabel,
  mplsInSegmentLabelPtr             RowPointer,
  mplsInSegmentNPop                 Integer32,
  mplsInSegmentAddrFamily           AddressFamilyNumbers,
  mplsInSegmentXCIndex              MplsIndexType,
  mplsInSegmentOwner                MplsOwner ,
  mplsInSegmentTrafficParamPtr      RowPointer,
  mplsInSegmentRowStatus            RowStatus,
  mplsInSegmentStorageType          StorageType
}

mplsInSegmentErrors

mplsInSegmentIndex OBJECT-TYPE
   SYNTAX        Counter32        MplsIndexType
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "The number of errored packets received on index for for this
        segment." in-segment. The
        string containing the single octet 0x00
        MUST not be used as an index."
   ::= { mplsInSegmentPerfEntry 3 mplsInSegmentEntry 1 }

mplsInSegmentDiscards

mplsInSegmentInterface OBJECT-TYPE
   SYNTAX        Counter32        InterfaceIndexOrZero
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "The number
       "This object represents the
        interface index for the incoming MPLS interface.  A
        value of labeled packets received on this in-
        segment, which were chosen to zero represents all interfaces participating in
        the per-platform label space.  This may only be discarded even
        though no errors had been detected to prevent their
        being transmitted.  One possible reason for
        discarding such used
        in cases where the incoming interface and label
        are associated with the same mplsXCEntry. Specifically,
        given a labeled packet could label and any incoming interface pair from the
        per-platform label space, the outgoing label/interface
        mapping remains the same. If this is not the case,
        then individual entries MUST exist that
        can then be mapped to free up
        buffer space." unique mplsXCEntries."
   ::= { mplsInSegmentPerfEntry 4 mplsInSegmentEntry 2 }

mplsInSegmentHCOctets

mplsInSegmentLabel OBJECT-TYPE
   SYNTAX        Counter64        MplsLabel
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "The total number
     "If the corresponding instance of octets received.  This mplsInSegmentLabelPtr is
      zeroDotZero then this object MUST contain the 64
        bit version of mplsInSegmentOctets." incoming label
      associated with this in-segment. If not this object SHOULD
      be zero and MUST be ignored."
   ::= { mplsInSegmentPerfEntry 5 mplsInSegmentEntry 3 }

mplsInSegmentPerfDiscontinuityTime

mplsInSegmentLabelPtr OBJECT-TYPE
   SYNTAX              TimeStamp        RowPointer
   MAX-ACCESS  read-only    read-create
   STATUS        current
   DESCRIPTION
       "The value of sysUpTime on
       "If the most recent occasion
        at which any one or more of label for this segment's Counter32
        or Counter64 suffered a discontinuity. If no such
        discontinuities have occurred since segment cannot be represented
        fully within the mplsInSegmentLabel object,
        this object MUST point to the last re-
        initialization first accessible
        column of a conceptual row in an external table containing
        the local management subsystem,
        then label.  In this case, the mplsInSegmentTopLabel
        object contains a zero value." SHOULD be set to 0 and ignored. This object MUST
        be set to zeroDotZero otherwise."
   DEFVAL { zeroDotZero }
   ::= { mplsInSegmentPerfEntry 6 mplsInSegmentEntry 4 }

-- End of mplsInSegmentPerfTable.

-- Out-segment table.

mplsOutSegmentIndexNext

mplsInSegmentNPop OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        Integer32 (1..2147483647)
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "This object contains the next appropriate value
       "The number of labels to
        be used for mplsOutSegmentIndex when creating
        entries in pop from the mplsOutSegmentTable.  If incoming
        packet.  Normally only the number
        of unassigned entries top label is exhausted, this object will
        take on the value of 0.  To obtain popped from
        the
        mplsOutSegmentIndex value packet and used for a new entry, the
        manager must first issue a management protocol
        retrieval operation all switching decisions for
        that packet.  This is indicated by setting this
        object to obtain the current default value of 1. If an LSR supports
        popping of more than one label, this object.  The agent should modify the value object MUST
        be set to
        reflect the next unassigned index after each
        retrieval operation.  After a manager retrieves a
        value the agent will determine through its local
        policy when this index value will that number. This object cannot be made available
        for reuse." modified
        if mplsInSegmentRowStatus is active(1)."
   DEFVAL        { 1 }
   ::= { mplsLsrObjects mplsInSegmentEntry 5 }

mplsOutSegmentTable

mplsInSegmentAddrFamily OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsOutSegmentEntry        AddressFamilyNumbers
   MAX-ACCESS    not-accessible    read-create
   STATUS        current
   DESCRIPTION
       "This table contains a representation
       "The IANA address family of packets
        received on this segment, which is used at an egress
        LSR to deliver them to the appropriate layer 3 entity.
        A value of other(0) indicates that the outgoing
        segments from family type is
        either unknown or undefined; this SHOULD NOT be used
        at an LSR." egress LSR. This object cannot be
        modified if mplsInSegmentRowStatus is active(1)."
   REFERENCE
       "See Internet Assigned Numbers Authority (IANA),
        ADDRESS FAMILY NUMBERS."
   DEFVAL        { other }
   ::= { mplsLsrObjects mplsInSegmentEntry 6 }

mplsOutSegmentEntry

mplsInSegmentXCIndex OBJECT-TYPE
   SYNTAX        MplsOutSegmentEntry        MplsIndexType
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "An
       "Index into mplsXCTable which identifies which cross-
        connect entry in this table represents one outgoing
        segment.  An segment is part of.  The string
        containing the single octet 0x00 indicates that this
        entry can be created is not referred to by any cross-connect entry.
        When a network
        administrator or an SNMP agent, or an MPLS signaling
        protocol.  The cross-connect entry is created which this
        in-segment is a part of, this object mplsOutSegmentOwner indicates is automatically
        updated to reflect the creator of this entry. The value of
        mplsOutSegmentRowStatus cannot be active(1)unless
        the ifTable entry corresponding to
        mplsOutSegmentIfIndex exists."
   INDEX { mplsOutSegmentIndex } mplsXCIndex of that
        cross-connect entry."
   ::= { mplsOutSegmentTable 1 mplsInSegmentEntry 7 }

MplsOutSegmentEntry

mplsInSegmentOwner OBJECT-TYPE
   SYNTAX        MplsOwner
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Denotes the entity that created and is responsible
        for managing this segment."
   ::= SEQUENCE {
  mplsOutSegmentIndex                Unsigned32,
  mplsOutSegmentIfIndex              InterfaceIndexOrZero,
  mplsOutSegmentPushTopLabel         TruthValue,
  mplsOutSegmentTopLabel             MplsLabel,
  mplsOutSegmentNextHopIpAddrType    InetAddressType,
  mplsOutSegmentNextHopIpAddr        InetAddress,
  mplsOutSegmentXCIndex              Unsigned32,
  mplsOutSegmentOwner                MplsOwner ,
  mplsOutSegmentTrafficParamPtr      RowPointer,
  mplsOutSegmentRowStatus            RowStatus,
  mplsOutSegmentStorageType          StorageType mplsInSegmentEntry 8 }

mplsOutSegmentIndex

mplsInSegmentTrafficParamPtr OBJECT-TYPE
   SYNTAX        Unsigned32(0..2147483647)            RowPointer
   MAX-ACCESS    not-accessible        read-create
   STATUS            current
   DESCRIPTION
     "This value contains variable represents a unique index pointer to the traffic
      parameter specification for this row.
        While out-segment.  This
      value may point at an entry in the
      mplsTunnelResourceTable in the MPLS-TE-STD-MIB (RFCnnnn)

      RFC Editor: Please fill in RFC number.

      to indicate which traffic parameter settings for this
      segment if it represents an LSP used for a TE tunnel.

      This value may optionally point at an
      externally defined traffic parameter specification
      table.  A value of zeroDotZero indicates best-effort
      treatment.  By having the same value of 0 is not valid this object,
      two or more segments can indicate resource sharing
      of such things as an index for this
        row it can LSP queue space, etc.

      This object cannot be supplied as modified if mplsInSegmentRowStatus
      is active(1).  For entries in this table that
      are preserved after a valid value to index
        mplsXCTable re-boot, the agent MUST ensure
      that their integrity be preserved, or this object should
      be set to access entries for which no out-
        segment has been configured." 0.0 if it cannot."
   DEFVAL { zeroDotZero }
   ::= { mplsOutSegmentEntry 1 mplsInSegmentEntry 9 }

mplsOutSegmentIfIndex

mplsInSegmentRowStatus OBJECT-TYPE
   SYNTAX        InterfaceIndex        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This value must contain the interface index of the
        outgoing interface. This object cannot be modified
        if mplsOutSegmentRowStatus variable is active(1). The
        mplsOutSegmentRowStatus cannot be set used to active(1)
        until create, modify, and/or
        delete a row in this object is set to table. When a value corresponding to row in this
        table has a valid ifEntry." row in the active(1) state, no
        objects in this row can be modified except the
        mplsInSegmentRowStatus and mplsInSegmentStorageType."
   ::= { mplsOutSegmentEntry 2 mplsInSegmentEntry 10 }

mplsOutSegmentPushTopLabel

mplsInSegmentStorageType OBJECT-TYPE
   SYNTAX        TruthValue        StorageType
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "This value variable indicates whether or not a top label
        should be pushed onto the outgoing packet's label
        stack.  The value of storage type for this variable MUST be set to
        true if the outgoing interface does not support pop-
        and-go (for example an ATM interface) or if it is a
        tunnel origination.  Note that it is considered an
        error in the case that mplsOutSegmentPushTopLabel
        object. If this object is set to false, but readOnly(5), and the cross-connect
        corresponding LFIB entry which
        refers to is removed, then the agent
        MUST remove this out-segment has a non-zero
        mplsLabelStackIndex. row shortly thereafter.
        The LSR agent MUST ensure that this
        situation does not happen. This object cannot be
        modified if mplsOutSegmentRowStatus object's value
        remains consistent with the associated mplsXCEntry.
        Conceptual rows having the value 'permanent'
        need not allow write-access to any columnar
        objects in the row.
        The default value is active(1)." volatile(2)."
   REFERENCE
        "See RFC2579."
   DEFVAL { true volatile }
   ::= { mplsOutSegmentEntry 3 mplsInSegmentEntry 11 }

mplsOutSegmentTopLabel

-- End of mplsInSegmentTable

-- in-segment performance table.

mplsInSegmentPerfTable  OBJECT-TYPE
   SYNTAX        MplsLabel        SEQUENCE OF MplsInSegmentPerfEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "If mplsOutSegmentPushTopLabel is true then
       "This table contains statistical information for
        incoming MPLS segments to an LSR."
   ::= { mplsLsrObjects 5 }

mplsInSegmentPerfEntry  OBJECT-TYPE
   SYNTAX        MplsInSegmentPerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this
        represents table contains statistical
        information about one incoming segment which is
        configured in the label that mplsInSegmentTable. The counters
        in this entry should be pushed onto the
        top behave in a manner similar to
        that of the outgoing packet's label stack. Otherwise
        this value SHOULD be set to 0 by interface.
        mplsInSegmentPerfDiscontinuityTime indicates the management
        station and MUST be ignored by
        time of the agent. This
        object cannot be modified if mplsOutSegmentRowStatus
        is active(1)."
   DEFVAL last discontinuity in all of these
        objects."
   AUGMENTS  { 0 mplsInSegmentEntry }
   ::= { mplsOutSegmentEntry 4 mplsInSegmentPerfTable 1 }

MplsInSegmentPerfEntry ::= SEQUENCE {
    mplsInSegmentPerfOctets             Counter32,
    mplsInSegmentPerfPackets            Counter32,
    mplsInSegmentPerfErrors             Counter32,
    mplsInSegmentPerfDiscards           Counter32,

    -- high capacity counter
    mplsInSegmentPerfHCOctets           Counter64,

    mplsInSegmentPerfDiscontinuityTime  TimeStamp
   }

mplsOutSegmentNextHopIpAddrType

mplsInSegmentPerfOctets OBJECT-TYPE
   SYNTAX        InetAddressType        Counter32
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "Indicates that the next hop address type is IPv4
        when set to ipv4 (1) or IPv6 when set to ipv6 (2).
        A
       "This value of unknown (0) is allowed only when represents the
        outgoing interface is total number of type point-to-point. If any
        other values are attempted in a set operation the
        agent octets
        received by this segment. It MUST return an inconsistentValue error. This
        object cannot be modified equal to the
        least significant 32 bits of
        mplsInSegmentPerfHCOctets
        if mplsOutSegmentRowStatus mplsInSegmentPerfHCOctets is active(1)." supported according to
        the rules spelled out in RFC2863."
   ::= { mplsInSegmentPerfEntry 1 }

mplsInSegmentPerfPackets OBJECT-TYPE
   SYNTAX        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Total number of packets received by this segment."
   ::= { mplsOutSegmentEntry 5 mplsInSegmentPerfEntry 2 }

mplsOutSegmentNextHopIpAddr

mplsInSegmentPerfErrors OBJECT-TYPE
   SYNTAX        InetAddress        Counter32
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "The IPv4 or IPv6 address number of the next hop.  Its value
        is significant only when
        mplsOutSegmentNextHopIpAddrType is ipv4 (1) or ipv6
        (2). Otherwise a management entity SHOULD set errored packets received on this
        to 0 and an agent MUST ignore it. Likewise an agent
        MUST return a value
        segment."
   ::= { mplsInSegmentPerfEntry 3 }

mplsInSegmentPerfDiscards OBJECT-TYPE
   SYNTAX        Counter32
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The number of 0 labeled packets received on this in-
        segment, which were chosen to be discarded even
        though no errors had been detected to prevent their
        being transmitted.  One possible reason for
        discarding such a retrieval operation.
        This object cannot labeled packet could be modified if
        mplsOutSegmentRowStatus is active(1)." to free up
        buffer space."
   ::= { mplsOutSegmentEntry 6 mplsInSegmentPerfEntry 4 }

mplsOutSegmentXCIndex

mplsInSegmentPerfHCOctets OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        Counter64
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Index into mplsXCTable which identifies which cross-
        connect entry this segment is part of.  A value
       "The total number of
        zero indicates that this entry is not referred to by
        any cross-connect entry.  When a cross-connect entry
        is created which this out-segment is a part of, this
        object octets received.  This is MUST be updated by the agent 64
        bit version of mplsInSegmentPerfOctets,
        if mplsInSegmentPerfHCOctets is supported according to reflect
        the value of mplsXCIndex of that cross-connect
        entry." rules spelled out in RFC2863."
   ::= { mplsOutSegmentEntry 7 mplsInSegmentPerfEntry 5 }

mplsOutSegmentOwner

mplsInSegmentPerfDiscontinuityTime OBJECT-TYPE
   SYNTAX        MplsOwner      TimeStamp
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
       "Denotes
       "The value of sysUpTime on the entity most recent occasion
        at which created and is responsible
        for managing any one or more of this segment." 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."
   ::= { mplsOutSegmentEntry 8 mplsInSegmentPerfEntry 6 }

mplsOutSegmentTrafficParamPtr

-- End of mplsInSegmentPerfTable.

-- out-segment table.

mplsOutSegmentIndexNext OBJECT-TYPE
   SYNTAX        RowPointer        MplsIndexType
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "This variable represents a pointer to object contains the traffic
      parameter specification for this out-segment.  This next available value may point at an entry in the
      mplsTrafficParamTable to indicate which
      mplsTrafficParamEntry is to
        be assigned to this
      segment.  This value may optionally point at an
      externally defined traffic parameter specification
      table.  A value of zeroDotZero indicates best-effort
      treatment.  By having used for mplsOutSegmentIndex when creating entries
        in the same mplsOutSegmentTable. The special value of this object,
      two or more segments a
        a string containing the single octet 0x00 indicates
        indicates that no new entries can indicate resource sharing.
      This object cannot be modified if
      mplsOutSegmentRowStatus is active(1)."
   DEFVAL { zeroDotZero } created in this
        table. Agents not allowing managers to create entries
        in this table MUST set this object to this special
        value."
   ::= { mplsOutSegmentEntry 9 mplsLsrObjects 6 }

mplsOutSegmentRowStatus

mplsOutSegmentTable  OBJECT-TYPE
   SYNTAX        RowStatus        SEQUENCE OF MplsOutSegmentEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row."
       "This table contains a representation of the outgoing
        segments from an LSR."
   ::= { mplsOutSegmentEntry 10 mplsLsrObjects 7 }

mplsOutSegmentStorageType

mplsOutSegmentEntry  OBJECT-TYPE
   SYNTAX        StorageType        MplsOutSegmentEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "This variable
       "An entry in this table represents one outgoing
        segment.  An entry can be created by a network
        administrator, an SNMP agent, or an MPLS signaling
        protocol.  The object mplsOutSegmentOwner indicates
        the storage type for creator of this
        object. This object entry. The value of
        mplsOutSegmentRowStatus cannot be modified if
        mplsOutSegmentRowStatus is active(1). If active(1) unless
        the ifTable entry corresponding to
        mplsOutSegmentInterface exists.

        Note that the indexing of this
        variable table uses a single,
        arbitrary index (mplsOutSegmentIndex) to indicate
        which out-segment (i.e.: label) is being switched to
        from which in-segment (i.e: label) or in-segments.
        This is necessary because it is set possible to have an
        equal-cost multi-path situation where two identical
        out-going labels are assigned to readOnly(5), and the
        corresponding LFIB entry is removed, then same
        cross-connect (i.e.: they go to two different neighboring
        LSRs); thus, requiring two out-segments. In order to
        preserve the agent uniqueness of the references
        by the mplsXCEntry, an arbitrary integer must remove be used as
        the index for this row shortly thereafter."
   ::= table."
   INDEX { mplsOutSegmentEntry 11 mplsOutSegmentIndex }

-- End of
   ::= { mplsOutSegmentTable

-- Out-segment performance table.

mplsOutSegmentPerfTable 1 }

MplsOutSegmentEntry ::= SEQUENCE {
  mplsOutSegmentIndex                MplsIndexType,
  mplsOutSegmentInterface            InterfaceIndexOrZero,
  mplsOutSegmentPushTopLabel         TruthValue,
  mplsOutSegmentTopLabel             MplsLabel,
  mplsOutSegmentTopLabelPtr          RowPointer,
  mplsOutSegmentNextHopAddrType    InetAddressType,
  mplsOutSegmentNextHopAddr        InetAddress,
  mplsOutSegmentXCIndex              MplsIndexType,
  mplsOutSegmentOwner                MplsOwner,
  mplsOutSegmentTrafficParamPtr      RowPointer,
  mplsOutSegmentRowStatus            RowStatus,
  mplsOutSegmentStorageType          StorageType
}

mplsOutSegmentIndex OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsOutSegmentPerfEntry        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table value contains statistical information about
        outgoing segments from an LSR. The counters in a unique index for this
        entry should behave in row.
        While a manner similar to that value of a string containing the interface."
   ::= { mplsLsrObjects 7 }

mplsOutSegmentPerfEntry  OBJECT-TYPE
   SYNTAX        MplsOutSegmentPerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry single
        octet 0x00 is not valid as an index for entries
        in this table contains statistical
        information about one outgoing segment configured in
        mplsOutSegmentTable.
        mplsOutSegmentPerfDiscontinuityTime indicates the
        time of table, it can be supplied as a valid value
        to index the last discontinuity in these objects. "
   AUGMENTS      { mplsOutSegmentEntry } mplsXCTable to represent entries for
        which no out-segment has been configured or
        exists."
   ::= { mplsOutSegmentPerfTable mplsOutSegmentEntry 1 }

MplsOutSegmentPerfEntry ::= SEQUENCE {
      mplsOutSegmentOctets                Counter32,
      mplsOutSegmentPackets               Counter32,
      mplsOutSegmentErrors                Counter32,
      mplsOutSegmentDiscards              Counter32,

      -- HC counter
      mplsOutSegmentHCOctets              Counter64,

      mplsOutSegmentPerfDiscontinuityTime  TimeStamp
   }

mplsOutSegmentOctets

mplsOutSegmentInterface OBJECT-TYPE
   SYNTAX        Counter32        InterfaceIndexOrZero
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "This value contains must contain the total number interface index of octets sent
        on this segment. It MUST the
        outgoing interface. This object cannot be equal modified
        if mplsOutSegmentRowStatus is active(1). The
        mplsOutSegmentRowStatus cannot be set to active(1)
        until this object is set to the least
        significant 32 bits of mplsOutSegmentHCOctets." a value corresponding to
        a valid ifEntry."
   ::= { mplsOutSegmentPerfEntry 1 mplsOutSegmentEntry 2 }

mplsOutSegmentPackets

mplsOutSegmentPushTopLabel OBJECT-TYPE
   SYNTAX        Counter32        TruthValue
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "This value contains indicates whether or not a top label
        should be pushed onto the total number outgoing packet's label
        stack.  The value of packets sent this variable MUST be set to
        true(1) if the outgoing interface does not support
        pop-and-go (and no label stack remains). For example,
        on ATM interface, or if the segment represents a
        tunnel origination.  Note that it is considered
        an error in the case that mplsOutSegmentPushTopLabel
        is set to false, but the cross-connect entry which
        refers to this segment." out-segment has a non-zero
        mplsLabelStackIndex.  The LSR MUST ensure that this
        situation does not happen. This object cannot be
        modified if mplsOutSegmentRowStatus is active(1)."
   DEFVAL { true }
   ::= { mplsOutSegmentPerfEntry 2 mplsOutSegmentEntry 3 }

mplsOutSegmentErrors

mplsOutSegmentTopLabel OBJECT-TYPE
   SYNTAX        Counter32        MplsLabel
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "Number of packets
       "If mplsOutSegmentPushTopLabel is true then this
        represents the label that could not should be sent due to
        errors on pushed onto the
        top of the outgoing packet's label stack. Otherwise
        this segment." value SHOULD be set to 0 by the management
        station and MUST be ignored by the agent. This
        object cannot be modified if mplsOutSegmentRowStatus
        is active(1)."
   DEFVAL { 0 }
   ::= { mplsOutSegmentPerfEntry 3 mplsOutSegmentEntry 4 }

mplsOutSegmentDiscards

mplsOutSegmentTopLabelPtr OBJECT-TYPE
   SYNTAX        Counter32        RowPointer
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "The number of labeled packets received on
       "If the label for this out-
        segment, which were chosen to segment cannot be discarded even
        though no errors had been detected represented
        fully within the mplsOutSegmentLabel object,
        this object MUST point to the first accessible
        column of a conceptual row in an external table containing
        the label.  In this case, the mplsOutSegmentTopLabel
        object SHOULD be set to prevent their
        being transmitted.  One possible reason for
        discarding such a labeled packet could 0 and ignored. This object
        MUST be set to free up
        buffer space." zeroDotZero otherwise."
   DEFVAL { zeroDotZero }
   ::= { mplsOutSegmentPerfEntry 4 mplsOutSegmentEntry 5 }

mplsOutSegmentHCOctets

mplsOutSegmentNextHopAddrType OBJECT-TYPE
   SYNTAX        Counter64        InetAddressType
   MAX-ACCESS    read-only    read-create
   STATUS        current
   DESCRIPTION
       "Total number
       "Indicates the next hop Internet address type.
        Only values unknown(0), ipv4(1) or ipv6(2)
        have to be supported.

        A value of octets sent.  This unknown(0) is allowed only when
        the 64 bit
        version outgoing interface is of mplsOutSegmentOctets." type point-to-point.
        If any other unsupported values are attempted in a set
        operation, the agent MUST return an inconsistentValue
        error."
   REFERENCE
       "See RFC3291."
   ::= { mplsOutSegmentPerfEntry 5 mplsOutSegmentEntry 6 }

mplsOutSegmentPerfDiscontinuityTime

mplsOutSegmentNextHopAddr OBJECT-TYPE
   SYNTAX      TimeStamp        InetAddress
   MAX-ACCESS  read-only    read-create
   STATUS        current
   DESCRIPTION
       "The value internet address of sysUpTime on the most recent occasion
        at which any one or more next hop. The type of
        this segment's Counter32
        or Counter64 suffered a discontinuity. If no such
        discontinuities have occurred since address is determined by the last re-
        initialization value of the local management subsystem,
        then this
        mplslOutSegmentNextHopAddrType object.

        This object contains a zero value." cannot be modified if
        mplsOutSegmentRowStatus is active(1)."
   ::= { mplsOutSegmentPerfEntry 6 mplsOutSegmentEntry 7 }

-- End of mplsOutSegmentPerfTable.

-- Cross-connect table.

mplsXCIndexNext

mplsOutSegmentXCIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        MplsIndexType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains an appropriate
       "Index into mplsXCTable which identifies which cross-
        connect entry this segment is part of.  A value to be used
        for mplsXCIndex when creating entries in of
        the
        mplsXCTable.  The value 0 string containing the single octet 0x00
        indicates that no
        unassigned entries are available.  To obtain the
        value of mplsXCIndex for a new this entry in the
        mplsXCTable, the manager issues a management
        protocol retrieval operation is not referred
        to obtain the current
        value of mplsXCIndex.  After each retrieval
        operation, by any cross-connect entry.  When a cross-connect
        entry is created which this out-segment is a part of,
        this object MUST be updated by 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." of mplsXCIndex of that cross-connect
        entry."
   ::= { mplsLsrObjects mplsOutSegmentEntry 8 }

mplsXCTable

mplsOutSegmentOwner OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsXCEntry        MplsOwner
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "This table specifies information for switching
        between LSP segments.  It supports point-to-point,
        point-to-multipoint and multipoint-to-point
        connections.  mplsLabelStackTable specifies
       "Denotes the
        label stack information for a cross-connect LSR entity which created and is referred to from mplsXCTable." responsible
        for managing this segment."
   ::= { mplsLsrObjects mplsOutSegmentEntry 9 }

mplsXCEntry

mplsOutSegmentTrafficParamPtr OBJECT-TYPE
   SYNTAX        MplsXCEntry        RowPointer
   MAX-ACCESS    not-accessible    read-create
   STATUS        current
   DESCRIPTION
       "A row in this table
     "This variable represents one cross-connect
        entry.  It is indexed by the following objects:

        - cross-connect index mplsXCIndex that uniquely
          identifies a group of cross-connect entries
        - interface index of pointer to the in-segment,
        mplsXCInSegmentIfIndex
        - incoming label(s), mplsXCInSegmentLabel
        - out-segment index, mplsXCOutSegmentIndex

       LSPs originating at traffic
      parameter specification for this LSR:
        These are represented by using out-segment.  This
      value may point at an entry in the special
        combination of values mplsXCInSegmentIfIndex=0 and
        mplsXCInSegmentLabel=0 as indexes.  In this case
      MplsTunnelResourceEntry in the mplsXCOutSegmentIndex MUST be non-zero.

       LSPs terminating at MPLS-TE-STD-MIB (RFCnnnn)

      RFC Editor: Please fill in RFC number.

      to indicate which traffic parameter settings for this LSR:
       These are represented by using the special
      segment if it represents an LSP used for a TE tunnel.

      This value
        mplsXCOutSegmentIndex=0 as index.

       Special labels:
        Entries indexed by reserved MPLS label values 0
        through 15 imply LSPs terminating may optionally point at this LSR and
        MUST have mplsXCOutSegmentIfIndex = 0.  Note that
        situations where LSPs are terminated with incoming
        label equal to 0, should have
        mplsXCInSegmentIfIndex = 0 as well, but an
      externally defined traffic parameter specification
      table.  A value of zeroDotZero indicates best-effort
      treatment.  By having the same value of this object,
      two or more segments can indicate resource sharing
      of such things as LSP queue space, etc.

      This object cannot be
        distinguished from LSPs originating at modified if
      mplsOutSegmentRowStatus is active(1).
      For entries in this LSR
        because table that
      are preserved after a re-boot, the mplsXCOutSegmentIfIndex = 0.  The
        mplsXCOutSegmentIfIndex agent MUST only ensure
      that their integrity be preserved, or this object should
      be set to 0 0.0 if it cannot."
   DEFVAL { zeroDotZero }
   ::= { mplsOutSegmentEntry 10 }

mplsOutSegmentRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row.
        When a row in this table has a row in the case of LSPs terminating at active(1)
        state, no objects in this LSR.

        An entry row can be created by a network administrator modified
        except the mplsOutSegmentRowStatus or by an SNMP agent as instructed by an MPLS
        signaling protocol."
   INDEX
        mplsOutSegmentStorageType."
   ::= {
      mplsXCIndex,
      mplsXCInSegmentIfIndex,
      mplsXCInSegmentLabel,
      mplsXCOutSegmentIndex mplsOutSegmentEntry 11 }
   ::=

mplsOutSegmentStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This variable indicates the storage type for this
        object. If this object is set to readOnly(5), and the
        corresponding LFIB entry is removed, then the agent
        MUST remove this row shortly thereafter RFC2579.
        The agent MUST ensure that this object's value
        remains consistent with the associated mplsXCEntry.
        Conceptual rows having the value 'permanent'
        need not allow write-access to any columnar
        objects in the row.
        The default value is volatile(2)."
   DEFVAL { mplsXCTable 1 volatile }

MplsXCEntry
   ::= SEQUENCE {
      mplsXCIndex                 Unsigned32,
      mplsXCInSegmentIfIndex      InterfaceIndexOrZero,
      mplsXCInSegmentLabel        MplsLabel,
      mplsXCOutSegmentIndex       Unsigned32,
      mplsXCLspId                 MplsLSPID,
      mplsXCLabelStackIndex       Unsigned32,
      mplsXCIsPersistent          TruthValue,
      mplsXCOwner                 MplsOwner ,
      mplsXCRowStatus             RowStatus,
      mplsXCStorageType           StorageType,
      mplsXCAdminStatus           INTEGER,
      mplsXCOperStatus            INTEGER mplsOutSegmentEntry 12 }

mplsXCIndex

-- End of mplsOutSegmentTable

-- out-segment performance table.

mplsOutSegmentPerfTable  OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)        SEQUENCE OF MplsOutSegmentPerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Primary index for the conceptual row identifying
       "This table contains statistical information about
        outgoing segments from an LSR. The counters in this
        entry should behave in a
        group manner similar to that of cross-connect segments."
        the interface."
   ::= { mplsXCEntry 1 mplsLsrObjects 8 }

mplsXCInSegmentIfIndex

mplsOutSegmentPerfEntry  OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero        MplsOutSegmentPerfEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Interface index
       "An entry in this table contains statistical
        information about one outgoing segment configured in
        mplsOutSegmentTable.
        mplsOutSegmentPerfDiscontinuityTime indicates the
        time of the in-segment for LSPs not
        originating at this LSR. Zero (along with
        mplsXCInSegmentLabel) otherwise." last discontinuity in these objects. "
   AUGMENTS      { mplsOutSegmentEntry }
      ::= { mplsXCEntry 2 mplsOutSegmentPerfTable 1 }

MplsOutSegmentPerfEntry ::= SEQUENCE {
      mplsOutSegmentPerfOctets             Counter32,
      mplsOutSegmentPerfPackets            Counter32,
      mplsOutSegmentPerfErrors             Counter32,
      mplsOutSegmentPerfDiscards           Counter32,

      -- HC counter
      mplsOutSegmentPerfHCOctets           Counter64,

      mplsOutSegmentPerfDiscontinuityTime  TimeStamp
   }

mplsXCInSegmentLabel

mplsOutSegmentPerfOctets OBJECT-TYPE
   SYNTAX        MplsLabel        Counter32
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "Incoming label."
       "This value contains the total number of octets sent
        on this segment. It MUST be equal to the least
        significant 32 bits of mplsOutSegmentPerfHCOctets
        if mplsOutSegmentPerfHCOctets is supported according to
        the rules spelled out in RFC2863."
   ::= { mplsXCEntry 3 mplsOutSegmentPerfEntry 1 }

mplsXCOutSegmentIndex

mplsOutSegmentPerfPackets OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)        Counter32
   MAX-ACCESS    not-accessible    read-only
   STATUS        current
   DESCRIPTION
       "Index
       "This value contains the total number of out-segment for LSPs not terminating packets sent
        on this LSR; zero otherwise." segment."
   ::= { mplsXCEntry 4 mplsOutSegmentPerfEntry 2 }

mplsXCLspId

mplsOutSegmentPerfErrors OBJECT-TYPE
   SYNTAX        MplsLSPID        Counter32
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "This value identifies the label switched path
       "Number of packets that
        this cross-connect entry belongs to. This object
        cannot could not be modified if mplsXCRowStatus is active(1)." sent due to
        errors on this segment."
   ::= { mplsXCEntry 5 mplsOutSegmentPerfEntry 3 }

mplsXCLabelStackIndex

mplsOutSegmentPerfDiscards OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        Counter32
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "Primary index into mplsLabelStackTable identifying a
        stack
       "The number of labels labeled packets attempted to be pushed beneath the top label.
        Note that the top label identified by the out-
        segment ensures that all the components of a
        multipoint-to-point connection have the same
        outgoing label.  A value of 0 indicates that no
        labels are be transmitted
        on this out-segment, which were chosen to be stacked beneath the top label. This
        object cannot discarded
        even though no errors had been detected to prevent their
        being transmitted. One possible reason for
        discarding such a labeled packet could be modified if mplsXCRowStatus is
        active(1)." to free up
        buffer space."
   ::= { mplsXCEntry 6 mplsOutSegmentPerfEntry 4 }

mplsXCIsPersistent

mplsOutSegmentPerfHCOctets OBJECT-TYPE
   SYNTAX        TruthValue        Counter64
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "Denotes whether or not this cross-connect entry and
        associated in- and out-segments should be restored
        automatically after failures.  This value MUST be
        set to false in cases where this cross-connect entry
        was created by a signaling protocol.
       "Total number of octets sent.  This object
        cannot be modified is the 64 bit
        version of mplsOutSegmentPerfOctets,
        if mplsXCRowStatus mplsOutSegmentPerfHCOctets is active(1)."
   DEFVAL        { false } supported according to
        the rules spelled out in RFC2863."
   ::= { mplsXCEntry 7 mplsOutSegmentPerfEntry 5 }

mplsXCOwner

mplsOutSegmentPerfDiscontinuityTime OBJECT-TYPE
   SYNTAX    MplsOwner      TimeStamp
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
       "Denotes
       "The value of sysUpTime on the entity that created and is responsible
        for managing 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 cross-connect. This object cannot
        be modified if mplsXCRowStatus is active(1)." contains a zero value."
   ::= { mplsXCEntry 8 mplsOutSegmentPerfEntry 6 }

mplsXCRowStatus

-- End of mplsOutSegmentPerfTable.

-- Cross-connect table.

mplsXCIndexNext OBJECT-TYPE
   SYNTAX        RowStatus        MplsIndexType
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting
       "This object contains the next available value to
        be used for mplsXCIndex when creating entries in
        the mplsXCTable. A special value of the zero length
        string indicates that no more new entries can be created
        in the relevant table.  Agents not allowing managers
        to create entries in this table MUST set this row." value
        to the zero length string."
   ::= { mplsXCEntry mplsLsrObjects 9 }

mplsXCStorageType

mplsXCTable  OBJECT-TYPE
   SYNTAX        StorageType        SEQUENCE OF MplsXCEntry
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "Defines the storage type support provided
       "This table specifies information for this
        object by the agent. If this variable is set to
        readOnly(5), switching
        between LSP segments.  It supports point-to-point,
        point-to-multipoint and multipoint-to-point
        connections.  mplsLabelStackTable specifies the corresponding LFIB entry
        label stack information for a cross-connect LSR and
        is
        removed, then the agent must remove this row shortly
        thereafter." referred to from mplsXCTable."
   ::= { mplsXCEntry mplsLsrObjects 10 }

mplsXCAdminStatus

mplsXCEntry  OBJECT-TYPE
   SYNTAX   INTEGER {
         up(1),     -- ready to pass packets
         down(2),
         testing(3) -- in some test mode
      }        MplsXCEntry
   MAX-ACCESS    read-create    not-accessible
   STATUS        current
   DESCRIPTION
       "The desired operational status
       "A row in this table represents one cross-connect
        entry.  It is indexed by the following objects:

        - cross-connect index mplsXCIndex that uniquely
          identifies a group of cross-connect entries

        - in-segment index, mplsXCInSegmentIndex

        - out-segment index, mplsXCOutSegmentIndex
       LSPs originating at this segment."
   ::= { mplsXCEntry 11 }

mplsXCOperStatus OBJECT-TYPE
   SYNTAX   INTEGER {
         up(1),            -- ready LSR:
        These are represented by using the special
        of value of mplsXCInSegmentIndex set to pass packets
         down(2),
         testing(3),       -- in some test mode
         unknown(4),       -- status cannot the
        string containing a single octet 0x00. In
        this case the mplsXCOutSegmentIndex
        MUST not be determined
                           -- for some reason.
         dormant(5),
         notPresent(6),    -- some component is missing
         lowerLayerDown(7) -- down due the string containing a single
        octet 0x00.

       LSPs terminating at this LSR:
        These are represented by using the special value
        mplsXCOutSegmentIndex set to the string containing
        a single octet 0x00.

       Special labels:
        Entries indexed by the strings containing the
        reserved MPLS label values as a single octet 0x00
        through 0x0f (inclusive) imply LSPs terminating at
        this LSR.  Note that situations where LSPs are
        terminated with incoming label equal to the state of
                           -- lower layer interfaces
      }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The actual operational status of string
        containing a single octet 0x00 can be distinguished
        from LSPs originating at this cross-
        connect."
   ::= LSR because the
        mplsXCOutSegmentIndex equals the string containing the
        single octet 0x00.

        An entry can be created by a network administrator
        or by an SNMP agent as instructed by an MPLS
        signaling protocol."
   INDEX { mplsXCEntry 12 mplsXCIndex, mplsXCInSegmentIndex,
           mplsXCOutSegmentIndex }

-- End of
   ::= { mplsXCTable

-- Label stack table.

mplsMaxLabelStackDepth  OBJECT-TYPE
   SYNTAX        Integer32 (1..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The maximum stack depth supported by this LSR." 1 }

MplsXCEntry ::= SEQUENCE { mplsLsrObjects 10
      mplsXCIndex                  MplsIndexType,
      mplsXCInSegmentIndex         MplsIndexType,
      mplsXCOutSegmentIndex        MplsIndexType,
      mplsXCLspId                  MplsLSPID,
      mplsXCLabelStackIndex        MplsIndexType,
      mplsXCOwner                  MplsOwner ,
      mplsXCRowStatus              RowStatus,
      mplsXCStorageType            StorageType,
      mplsXCAdminStatus            INTEGER,
      mplsXCOperStatus             INTEGER
   }

mplsLabelStackIndexNext

mplsXCIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)        MplsIndexType
   MAX-ACCESS    read-only    not-accessible
   STATUS        current
   DESCRIPTION
       "This object contains an appropriate value to be used
        for mplsLabelStackIndex when creating entries in the
        mplsLabelStackTable.  The value 0 indicates that no
        unassigned entries are available.  To obtain an
        mplsLabelStackIndex value
       "Primary index for a new entry, the
        manager issues conceptual row identifying a management protocol retrieval
        operation to obtain the current value
        group of this
        object.  After each retrieval operation, the agent
        should modify the value to reflect the next
        unassigned index.  After a manager retrieves cross-connect segments. The string
        containing a value
        the agent will determine through its local policy
        when this index value will be made available for
        reuse." single octet 0x00 is an invalid index."
   ::= { mplsLsrObjects 11 mplsXCEntry 1 }

mplsLabelStackTable

mplsXCInSegmentIndex OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsLabelStackEntry        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the
       "Incoming label stack index.
	If this object is set to be pushed
        onto the string containing
        a packet, beneath single octet 0x00, this indicates a special
        case outlined in the top label.  Entries into table's description above.
        In this table are referred to from mplsXCTable." case no corresponding mplsInSegmentEntry
        shall exist."
   ::= { mplsLsrObjects 12 mplsXCEntry 2 }

mplsLabelStackEntry

mplsXCOutSegmentIndex OBJECT-TYPE
   SYNTAX        MplsLabelStackEntry        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in
       "Index of out-segment for LSPs not terminating on
        this table represents one label which is LSR if not set to be pushed onto an outgoing packet, beneath the
        top label.  An string containing the
        single octet 0x00. If the segment identified by this
        entry can is terminating, then this object MUST be created by set to
        the string containing a network
        administrator or by an SNMP agent as instructed by
        an MPLS signaling protocol."
   INDEX { mplsLabelStackIndex, mplsLabelStackLabelIndex } single octet 0x00 to indicate
        that no corresponding mplsOutSegmentEntry shall
        exist."
   ::= { mplsLabelStackTable 1 mplsXCEntry 3 }

MplsLabelStackEntry

mplsXCLspId OBJECT-TYPE
   SYNTAX        MplsLSPID
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This value identifies the label switched path that
        this cross-connect entry belongs to. This object
        cannot be modified if mplsXCRowStatus is active(1)
        except for this object."
   ::= SEQUENCE {
      mplsLabelStackIndex             Unsigned32,
      mplsLabelStackLabelIndex        Unsigned32,
      mplsLabelStackLabel             MplsLabel,
      mplsLabelStackRowStatus         RowStatus,
      mplsLabelStackStorageType       StorageType mplsXCEntry 4 }

mplsLabelStackIndex

mplsXCLabelStackIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)        MplsIndexType
   MAX-ACCESS    not-accessible    read-create
   STATUS        current
   DESCRIPTION
       "Primary index for this row into mplsLabelStackTable identifying a
        stack of labels to be pushed on an outgoing packet, beneath the top label."
   ::= { mplsLabelStackEntry 1 }

mplsLabelStackLabelIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Secondary index for this row identifying one label
        of the stack. label.

        Note that an entry with a smaller
        mplsLabelStackLabelIndex would refer to a label
        higher up the top label stack and would be popped at a
        downstream LSR before a label represented identified by the out-
        segment ensures that all the components of a
        higher mplsLabelStackLabelIndex at a downstream
        LSR."
        multipoint-to-point connection have the same
        outgoing label. A value of the string containing the
        single octet 0x00 indicates that no labels are to
        be stacked beneath the top label.
        This object cannot be modified if mplsXCRowStatus is
        active(1)."
   ::= { mplsLabelStackEntry 2 mplsXCEntry 5 }

mplsLabelStackLabel

mplsXCOwner OBJECT-TYPE
   SYNTAX        MplsLabel    MplsOwner
   MAX-ACCESS    read-create    read-only
   STATUS        current
   DESCRIPTION
       "The label to pushed."
       "Denotes the entity that created and is responsible
        for managing this cross-connect."
   ::= { mplsLabelStackEntry 3 mplsXCEntry 6 }

mplsLabelStackRowStatus

mplsXCRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row." row.
        When a row in this table has a row in the active(1)
        state, no objects in this row except this object
        and the mplsXCStorageType can be modified.
        Modification of mplsXCStorateType MUST be done
        as specified in the description of that object."
   ::= { mplsLabelStackEntry 4 mplsXCEntry 7 }

mplsLabelStackStorageType

mplsXCStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       " Defines
       "This variable indicates the storage type support provided for this
        object by the agent.
        object. If this variable is set to readOnly(5), and
        the corresponding LFIB entry is removed, then the
        agent must MUST remove this row shortly
        thereafter." thereafter.

        The agent MUST ensure that the associated in and out
        segments also have the same StorageType value and are
        restored consistently upon system restart. This value
        SHOULD be set to permanent(4) if created as a
        result of a static LSP configuration.

        Conceptual rows having the value 'permanent'
        need not allow write-access to any columnar
        objects in the row."
   DEFVAL { volatile }
   ::= { mplsXCEntry 8 }

mplsXCAdminStatus 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 segment."
   DEFVAL { up }
   ::= { mplsXCEntry 9 }

mplsXCOperStatus OBJECT-TYPE
   SYNTAX   INTEGER {
             up(1),            -- ready to pass packets
             down(2),
             testing(3),       -- in some test mode
             unknown(4),       -- status cannot be determined
                               -- for some reason.
             dormant(5),
             notPresent(6),    -- some component is missing
             lowerLayerDown(7) -- down due to the state of
                               -- lower layer interfaces
      }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The actual operational status of this cross-
        connect."
   ::= { mplsLabelStackEntry 5 mplsXCEntry 10 }

-- End of mplsLabelStackTable mplsXCTable

-- Traffic Parameter Label stack table.

mplsTrafficParamIndexNext

mplsMaxLabelStackDepth  OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295) (1..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The maximum stack depth supported by this LSR."
::= { mplsLsrObjects 11 }

mplsLabelStackIndexNext  OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains an appropriate the next available value which will to
        be used for mplsTrafficParamIndex mplsLabelStackIndex when creating entries
        in the mplsTrafficParamTable. mplsLabelStackTable. The value 0 special string
        containing the single octet 0x00
        indicates that no unassigned entries are available.
        To obtain the mplsTrafficParamIndex value for a more new
        entry, entries can be created
        in the manager issues a management protocol
        retrieval operation relevant table.  Agents not allowing managers
        to obtain the current value of create entries in this table MUST set this object.  After each retrieval operation, the
        agent should modify the value
        to reflect the next
        unassigned index.  After a manager retrieves a value string containing the agent will determine through its local policy
        when this index value will be made available for
        reuse." single octet 0x00."
::= { mplsLsrObjects 13 12 }

mplsTrafficParamTable

mplsLabelStackTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsTrafficParamEntry MplsLabelStackEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the Traffic Parameter objects
        for in and out-segments." label stack to be pushed
        onto a packet, beneath the top label.  Entries into
        this table are referred to from mplsXCTable."
   ::= { mplsLsrObjects 14 13 }

mplsTrafficParamEntry

mplsLabelStackEntry OBJECT-TYPE
   SYNTAX        MplsTrafficParamEntry        MplsLabelStackEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the TrafficParam
        objects for one or more in or out segments.  A
        single label which is
        to be pushed onto an outgoing packet, beneath the
        top label.  An entry can be pointed to created by multiple segments
        indicating resource sharing." a network
        administrator or by an SNMP agent as instructed by
        an MPLS signaling protocol."
   INDEX { mplsTrafficParamIndex mplsLabelStackIndex, mplsLabelStackLabelIndex }
   ::= { mplsLabelStackTable 1 }

MplsLabelStackEntry ::= SEQUENCE {
      mplsLabelStackIndex             MplsIndexType,
      mplsLabelStackLabelIndex        Unsigned32,
      mplsLabelStackLabel             MplsLabel,
      mplsLabelStackLabelPtr          RowPointer,
      mplsLabelStackRowStatus         RowStatus,
      mplsLabelStackStorageType       StorageType
   }

mplsLabelStackIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Primary index for this row identifying a stack of
        labels to be pushed on an outgoing packet, beneath
        the top label. An index containing the string with
        a single octet 0x00 MUST not be used."
   ::= { mplsTrafficParamTable mplsLabelStackEntry 1 }

MplsTrafficParamEntry ::= SEQUENCE {
      mplsTrafficParamIndex           Unsigned32,
      mplsTrafficParamMaxRate         MplsBitRate,
      mplsTrafficParamMeanRate        MplsBitRate,
      mplsTrafficParamMaxBurstSize    MplsBurstSize,
      mplsTrafficParamRowStatus       RowStatus,
      mplsTrafficParamStorageType     StorageType
   }

mplsTrafficParamIndex

mplsLabelStackLabelIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Uniquely identifies
       "Secondary index for this row identifying one label
        of the table. stack.  Note that zero represents an invalid index."
   ::= { mplsTrafficParamEntry 1 }

mplsTrafficParamMaxRate OBJECT-TYPE
   SYNTAX        MplsBitRate
   UNITS         "kilobits per second"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Maximum rate in kilobits/second." entry with a smaller
        mplsLabelStackLabelIndex would refer to a label
        higher up the label stack and would be popped at a
        downstream LSR before a label represented by a
        higher mplsLabelStackLabelIndex at a downstream
        LSR."
   ::= { mplsTrafficParamEntry mplsLabelStackEntry 2 }

mplsTrafficParamMeanRate

mplsLabelStackLabel OBJECT-TYPE
   SYNTAX        MplsBitRate
   UNITS         "kilobits per second"        MplsLabel
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Mean rate in kilobits/second."
       "The label to pushed."
   ::= { mplsTrafficParamEntry mplsLabelStackEntry 3 }

mplsTrafficParamMaxBurstSize

mplsLabelStackLabelPtr OBJECT-TYPE
   SYNTAX        MplsBurstSize
   UNITS         "bytes"        RowPointer
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Maximum burst size
       "If the label for this segment cannot be represented
        fully within the mplsLabelStackLabel object,
        this object MUST point to the first accessible
        column of a conceptual row in bytes." an external table containing
        the label.  In this case, the mplsLabelStackLabel
        object SHOULD be set to 0 and ignored. This object
        MUST be set to zeroDotZero otherwise."
   DEFVAL { zeroDotZero }
   ::= { mplsTrafficParamEntry mplsLabelStackEntry 4 }

mplsTrafficParamRowStatus

mplsLabelStackRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row." row.

        When a row in this table has a row in the active(1)
        state, no objects in this row except this object
        and the mplsLabelStackStorageType can be modified."
   ::= { mplsTrafficParamEntry mplsLabelStackEntry 5 }

mplsTrafficParamStorageType

mplsLabelStackStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       " Defines
       "This variable indicates the storage type support provided for this
        object. This object by the agent. cannot be modified if
        mplsLabelStackRowStatus is active(1). If this
        variable is set to readOnly(5), and the
        corresponding LFIB entry is removed, then the agent must
        MUST remove this row shortly
        thereafter." thereafter RFC2579.
        No objects are required to be writable for
        rows in this table with this object set to
        permanent(4).  The default value is volatile(2).
        The agent MUST ensure that all related entries
        in this table retain the same value for this
        object.  Agents MUST ensure that the storage type
        for all entries related to a particular mplsXCEntry
        retain the same value for this object as the
        mplsXCEntry's StorageType."
   DEFVAL { volatile }
   ::= { mplsTrafficParamEntry mplsLabelStackEntry 6 }

-- End of mplsTrafficParamTable mplsLabelStackTable

-- Notification Configuration

mplsXCNotificationsEnable OBJECT-TYPE
   SYNTAX        TruthValue
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION
       "If this object is set to true(1), then it enables
        the emission of mplsXCUp and mplsXCDown
        notifications; otherwise these notifications are not
        emitted."
   REFERENCE
       "See also RFC3413 for explanation that
        notifications are under the ultimate control of the
        MIB modules in this document."
   DEFVAL { false }
   ::= { mplsLsrObjects 15 14 }

-- Cross-connect.

mplsXCUp NOTIFICATION-TYPE
   OBJECTS     { mplsXCOperStatus,  -- start of range
                 mplsXCOperStatus   -- end of range
   }
   STATUS      current
   DESCRIPTION
       "This notification is generated when the
        mplsXCOperStatus object for one or more contiguous
        entries in mplsXCTable are about to enter the up(1)
        state from some other. other state. The included values of
        mplsXCOperStatus MUST both be set equal to this
        other state.
        new state (i.e: up(1)).  The two instances of
        mplsXCOperStatus in this notification indicate the range
        of indexes that are affected.  Note that all the indexes
        of the two ends of the range can be derived from the
        instance identifiers of these two objects.  For
        cases where a contiguous range of cross-connects
        have transitioned into the up(1) state at roughly
        the same time, the device SHOULD issue a single
        notification for each range of contiguous indexes in
        an effort to minimize the emission of a large number
        of notifications.  If a notification has to be
        issued for just a single cross-connect entry, then
        the instance identifier (and values) of the two
        mplsXCOperStatus objects MUST be the identical."
   ::= { mplsLsrNotifications 1 }

mplsXCDown NOTIFICATION-TYPE
   OBJECTS     {
      mplsXCOperStatus,  -- start of range
      mplsXCOperStatus   -- end of range
   }
   STATUS      current
   DESCRIPTION
       " This
       "This notification is generated when the
        mplsXCOperStatus object for one or more contiguous
        entries in mplsXCTable are about to enter the
        down(2) state from some other. other state. The included values
        of mplsXCOperStatus MUST both be set equal to this
        other
        down(2) state.  The two instances of mplsXCOperStatus
        in this notification indicate the range of indexes
        that are affected.  Note that all the indexes of the
        two ends of the range can be derived from the
        instance identifiers of these two objects.  For
        cases where a contiguous range of cross-connects
        have transitioned into the down(2) state at roughly
        the same time, the device SHOULD issue a single
        notification for each range of contiguous indexes in
        an effort to minimize the emission of a large number
        of notifications.  If a notification has to be
        issued for just a single cross-connect entry, then
        the instance identifier (and values) of the two
        mplsXCOperStatus objects MUST be the identical."
   ::= { mplsLsrNotifications 2 }

-- End of notifications.

-- Module compliance.

mplsLsrGroups
   OBJECT IDENTIFIER ::= { mplsLsrConformance 1 }

mplsLsrCompliances
   OBJECT IDENTIFIER ::= { mplsLsrConformance 2 }

mplsLsrModuleCompliance

-- Compliance requirement for fully compliant implementations.
mplsLsrModuleFullCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
       "Compliance statement for agents that provide full
        support the
        MPLS-LSR-MIB." for MPLS-LSR-STD-MIB."

   MODULE -- this module IF-MIB -- The mandatory groups have to be implemented Interfaces Group MIB, RFC 2863.
   MANDATORY-GROUPS {
      ifGeneralInformationGroup,
      ifCounterDiscontinuityGroup
   }

   MODULE -- by all LSRs.  However, they may all be supported This module.
   MANDATORY-GROUPS {
         mplsInterfaceGroup,
         mplsInSegmentGroup,
         mplsOutSegmentGroup,
         mplsXCGroup,
         mplsPerfGroup,
         mplsLsrNotificationGroup
   }

   ::= { mplsLsrCompliances 1 }

-- as Compliance requirement for read-only objects in the case where manual implementations.
mplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
       "Compliance requirement for implementations that only
        provide read-only support for MPLS-LSR-STD-MIB. Such
        devices can then be monitored but cannot be configured
        using this MIB modules."

   MODULE IF-MIB -- configuration is unsupported. The interfaces Group MIB, RFC 2863
   MANDATORY-GROUPS {
      ifGeneralInformationGroup,
      ifCounterDiscontinuityGroup
   }

   MODULE -- This module
   MANDATORY-GROUPS {
         mplsInterfaceGroup,
         mplsInSegmentGroup,
         mplsOutSegmentGroup,
         mplsXCGroup,
         mplsPerfGroup,
         mplsSegmentDiscontinuityGroup
         mplsPerfGroup
     }

      GROUP mplsLabelStackGroup
      DESCRIPTION
          "This group is only mandatory for LSRs
           that wish to support the modification
           of LSP label stacks."

      GROUP mplsHCInSegmentPerfGroup
      DESCRIPTION
          "This group is mandatory for those in-segment
           entries for which the object
           mplsInSegmentOutOctets wraps around too
           quickly."
           quickly based on the criteria specified in
           RFC2863 for high-capacity counters."

      GROUP mplsHCOutSegmentPerfGroup
      DESCRIPTION
          "This group is mandatory for those out-segment
           entries for which the object
           mplsOutSegmentOctets
           mplsOutSegmentPerfOctets wraps around too quickly."

      GROUP mplsTrafficParamGroup
      DESCRIPTION
          "This group is mandatory for those LSRs that
           support QoS resource reservation."

      -- Depending quickly
           based on whether the device implements
      -- persistent cross-connects or not one of the
      -- following two groups is mandatory.

      GROUP mplsXCIsPersistentGroup
      DESCRIPTION
          "This group is mandatory criteria specified in RFC2863
           for devices which
           support persistent cross-connects.  The
           following constraints apply: mplsXCIsPersistent
           must at least be high-capacity counters."

      -- mplsInSegmentTable
      OBJECT mplsInSegmentLabel
      MIN-ACCESS read-only returning true(2)."

      GROUP mplsXCIsNotPersistentGroup
      DESCRIPTION
          "This group
         "Write access is mandatory for devices which
           support non-persistent cross-connects.  The
           following constraints apply: mplsXCIsPersistent
           must at least be read-only returning false(1)."

      -- mplsInSegmentTable not required."

      OBJECT     mplsInSegmentXCIndex mplsInSegmentLabelPtr
      MIN-ACCESS read-only
      DESCRIPTION
         "Write access is not required."
      OBJECT      mplsInSegmentNPop
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required.  This object
           should
           SHOULD be set to 1 if it is read-only."

      OBJECT      mplsInSegmentAddrFamily
      DESCRIPTION
          "Write access is not required.  A value of
           other(0) should be supported because there may
           be cases where the agent may not know about or
           support any address types."

      OBJECT      mplsInSegmentStorageType       mplsInSegmentRowStatus
      SYNTAX      INTEGER       RowStatus { active(1), notInService(2) }
      WRITE-SYNTAX RowStatus { other(1) notInService(2), createAndGo(4),
                               destroy(6)  }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required."

      OBJECT      mplsInSegmentStorageType
      MIN-ACCESS read-only
      DESCRIPTION
          "Only other(1) readOnly(5) needs to be supported."

      -- mplsOutSegmentTable
      OBJECT      mplsOutSegmentIfIndex      mplsOutSegmentInterface
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required."

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

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

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

      OBJECT      mplsOutSegmentNextHopAddrType
      SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "An implementation
          "Write access is only required to support
           ipv4(1) not required. Only
           IPv4(1), IPv6(2) and ipv6(2)." unknown(3) sizes
           are required."

      OBJECT      mplsOutSegmentNextHopIpAddr      mplsOutSegmentNextHopAddr
      SYNTAX      InetAddress (SIZE(0|4|16))
      MIN-ACCESS read-only
      DESCRIPTION
        "An implementation is only required to support
           IPv4 unknown(0),
         IPv4(1) and globally unique IPv6 IPv6(2) addresses. Write access is not
         required."

      OBJECT      mplsOutSegmentRowStatus
      SYNTAX      INTEGER       RowStatus { active(1), notInService(2) }
      WRITE-SYNTAX RowStatus { notInService(2), createAndGo(4),
                               destroy(6) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
           not be supported."
          "Read only support is required."

      OBJECT      mplsOutSegmentStorageType
      SYNTAX      INTEGER { other(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1) readOnly(5) needs to be supported."

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

      OBJECT      mplsXCIsPersistent      mplsXCAdminStatus
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access
          "Read only support is not required."

      OBJECT      mplsXCAdminStatus      mplsXCOperStatus
      MIN-ACCESS  read-only
      DESCRIPTION
          "Read only support is required."

      OBJECT      mplsXCRowStatus
      SYNTAX      INTEGER       RowStatus { up(1), down(2) active(1), notInService(2) }
      WRITE-SYNTAX RowStatus { notInService(2), createAndGo(4),
                               destroy(6) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "A value of testing(3) need
          "Read only support required."
      OBJECT      mplsXCStorageType
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not be supported." required."

      OBJECT      mplsXCOperStatus
      SYNTAX      INTEGER { up(1), down(2) }      mplsLabelStackLabel
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only up(1) and down(2) need to be supported."
          "Write access is not required."

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

      OBJECT       mplsLabelStackRowStatus
      SYNTAX      INTEGER       RowStatus { active(1), notInService(2) }
      WRITE-SYNTAX RowStatus { notInService(2), createAndGo(4),
                               destroy(6) }
      MIN-ACCESS   read-only
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
          "Write access is not be supported." required."

      OBJECT      mplsXCStorageType
      SYNTAX      INTEGER { other(1) }      mplsLabelStackStorageType
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1) needs to be supported."
          "Write access is not required."

   ::= { mplsLsrCompliances 1 2 }

-- Units of conformance.

mplsInterfaceGroup OBJECT-GROUP
   OBJECTS {
      mplsInterfaceLabelMinIn,
      mplsInterfaceLabelMaxIn,
      mplsInterfaceLabelMinOut,
      mplsInterfaceLabelMaxOut,
      mplsInterfaceTotalBandwidth,
      mplsInterfaceAvailableBandwidth,
      mplsInterfaceLabelParticipationType
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed for MPLS interface
           configuration
           and interface performance information."
   ::= { mplsLsrGroups 1 }

mplsInSegmentGroup  OBJECT-GROUP
   OBJECTS {
      mplsInSegmentIndexNext,
      mplsInSegmentInterface,
      mplsInSegmentLabel,
      mplsInSegmentLabelPtr,
      mplsInSegmentNPop,
      mplsInSegmentAddrFamily,
      mplsInSegmentXCIndex,
      mplsInSegmentOctets,
      mplsInSegmentDiscards,
      mplsInSegmentOwner,
      mplsInSegmentRowStatus,
      mplsInSegmentStorageType,
      mplsInSegmentTrafficParamPtr
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed to implement an in-
           segment."
   ::= { mplsLsrGroups 2 }

mplsOutSegmentGroup  OBJECT-GROUP
   OBJECTS {
      mplsOutSegmentIndexNext,
      mplsOutSegmentIfIndex,
      mplsOutSegmentInterface,
      mplsOutSegmentPushTopLabel,
      mplsOutSegmentTopLabel,
      mplsOutSegmentNextHopIpAddrType,
      mplsOutSegmentNextHopIpAddr,
      mplsOutSegmentTopLabelPtr,
      mplsOutSegmentNextHopAddrType,
      mplsOutSegmentNextHopAddr,
      mplsOutSegmentXCIndex,
      mplsOutSegmentOwner,
      mplsOutSegmentOctets,
      mplsOutSegmentDiscards,
      mplsOutSegmentErrors,
      mplsOutSegmentPerfOctets,
      mplsOutSegmentPerfDiscards,
      mplsOutSegmentPerfErrors,
      mplsOutSegmentRowStatus,
      mplsOutSegmentStorageType,
      mplsOutSegmentTrafficParamPtr
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed to implement an out-
           segment."
   ::= { mplsLsrGroups 3 }

mplsXCGroup  OBJECT-GROUP
   OBJECTS {
      mplsXCIndexNext,
      mplsXCLspId,
      mplsXCLabelStackIndex,
      mplsXCOwner,
      mplsXCStorageType,
      mplsXCAdminStatus,
      mplsXCOperStatus,
      mplsXCRowStatus,
      mplsXCNotificationsEnable,
      mplsXCStorageType
      mplsXCNotificationsEnable
   }
   STATUS  current
   DESCRIPTION
          "Collection of objects needed to implement a
           cross-connect entry."
   ::= { mplsLsrGroups 4 }

mplsXCOptionalGroup  OBJECT-GROUP
   OBJECTS { mplsXCLspId }
   STATUS  current
   DESCRIPTION
          "Collection of optional objects for implementing
           a cross-connect entry."
   ::= { mplsLsrGroups 5 }

mplsPerfGroup OBJECT-GROUP
   OBJECTS {
      mplsInSegmentOctets,
      mplsInSegmentPackets,
      mplsInSegmentErrors,
      mplsInSegmentDiscards,
      mplsOutSegmentOctets,
      mplsOutSegmentPackets,
      mplsOutSegmentDiscards,
      mplsInterfaceInLabelsUsed,
      mplsInterfaceLabelLookupFailures ,
      mplsInterfaceOutFragments,
      mplsInterfaceOutLabelsUsed
      mplsInSegmentPerfOctets,
      mplsInSegmentPerfPackets,
      mplsInSegmentPerfErrors,
      mplsInSegmentPerfDiscards,
      mplsInSegmentPerfDiscontinuityTime,
      mplsOutSegmentPerfOctets,
      mplsOutSegmentPerfPackets,
      mplsOutSegmentPerfDiscards,
      mplsOutSegmentPerfDiscontinuityTime,
      mplsInterfacePerfInLabelsInUse,
      mplsInterfacePerfInLabelLookupFailures,
      mplsInterfacePerfOutFragmentedPkts,
      mplsInterfacePerfOutLabelsInUse
   }

   STATUS  current
   DESCRIPTION
          "Collection of objects providing performance
           information
        about an LSR."
   ::= { mplsLsrGroups 6 5 }

mplsHCInSegmentPerfGroup OBJECT-GROUP
   OBJECTS { mplsInSegmentHCOctets mplsInSegmentPerfHCOctets }
   STATUS  current
   DESCRIPTION
          "Object(s) providing performance information
           specific to out-segments for which the object
           mplsInterfaceInOctets wraps around too quickly."
   ::= { mplsLsrGroups 7 6 }

mplsHCOutSegmentPerfGroup OBJECT-GROUP
   OBJECTS { mplsOutSegmentHCOctets mplsOutSegmentPerfHCOctets }
   STATUS  current
   DESCRIPTION
          "Object(s) providing performance information
           specific to out-segments for which the object
           mplsInterfaceOutOctets wraps around too
           quickly."
   ::= { mplsLsrGroups 8 }

mplsTrafficParamGroup OBJECT-GROUP
   OBJECTS {
      mplsTrafficParamIndexNext,
      mplsTrafficParamMaxRate,
      mplsTrafficParamMeanRate,
      mplsTrafficParamMaxBurstSize,
      mplsTrafficParamRowStatus,
      mplsTrafficParamStorageType
   }
   STATUS  current
   DESCRIPTION
          "Object(s) required for supporting QoS resource
           reservation."
   ::= { mplsLsrGroups 9 }

mplsXCIsPersistentGroup OBJECT-GROUP
   OBJECTS { mplsXCIsPersistent }
   STATUS  current
   DESCRIPTION
          "Objects needed to support persistent cross-
           connects."
   ::= { mplsLsrGroups 10 }

mplsXCIsNotPersistentGroup OBJECT-GROUP
   OBJECTS { mplsXCIsPersistent }
   STATUS  current
   DESCRIPTION
          "Objects needed to support non-persistent cross-
           connects." which the object
           mplsInterfaceOutOctets wraps around too
           quickly."
   ::= { mplsLsrGroups 11 7 }

mplsLabelStackGroup OBJECT-GROUP
   OBJECTS {
      mplsLabelStackLabel,
      mplsLabelStackLabelPtr,
      mplsLabelStackRowStatus,
      mplsLabelStackStorageType,
      mplsMaxLabelStackDepth,
      mplsLabelStackIndexNext
   }
   STATUS current
   DESCRIPTION
          "Objects needed to support label stacking which
           is an optional feature for an LSR."
      ::= { mplsLsrGroups 12 }

mplsSegmentDiscontinuityGroup OBJECT-GROUP
   OBJECTS {
      mplsInSegmentPerfDiscontinuityTime,
      mplsOutSegmentPerfDiscontinuityTime
   }
   STATUS  current
   DESCRIPTION
       " A collection of objects providing information
        specific to segment discontinuities.."
   ::= { mplsLsrGroups 13 8 }

mplsLsrNotificationGroup NOTIFICATION-GROUP
   NOTIFICATIONS {
      mplsXCUp,
      mplsXCDown
   }
   STATUS  current
   DESCRIPTION
          "Set of notifications implemented in this module.
           None is mandatory."
   ::= { mplsLsrGroups 14 9 }
END

12.

11.   Security Considerations

   It is clear that this MIB module is potentially useful for
   monitoring of MPLS LSRs.  This MIB can also be used for
   configuration of certain objects, and anything that can be
   configured can be incorrectly configured, with potentially
   disastrous results.

   At this writing, no security holes have been identified beyond
   those that SNMP Security [RFC2571] is itself intended to address.
   These relate to primarily controlled access to sensitive
   information and the ability to configure a device - or which might
   result from operator error, which is beyond the scope of any
   security architecture.

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

   o    the mplsLsrInSegmentTable, mplsLsrOutSegmentTable,
        mplsXCTable, mplsOutSegmentPerfTable, mplsInterfacePerfTable,
        and mplsInSegmentPerfTable collectively contain objects to
        provision MPLS interfaces, LSPs and their associated parameters
        on an Label Switching Router (LSR).  Unauthorized access to
        objects in these tables, could result in disruption of traffic
        on the network.  This is especially true if an LSP has been
        established.  The use of stronger mechanisms such as SNMPv3
        security should be considered where possible.  Specifically,
        SNMPv3 VACM and USM MUST be used with any v3 agent which
        implements this MIB module.  Administrators should consider
        whether read access to these objects should be allowed,
        since read access may be undesirable under certain circumstances.

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

   o    the mplsLsrInSegmentTable, mplsLsrOutSegmentTable,
        mplsXCTable, mplsOutSegmentPerfTable, mplsInterfacePerfTable,
        and mplsInSegmentPerfTable collectively show the LSP network
        topology and its performance characteristics.
        If an Administrator does not want to reveal this
        information, then these tables should be
        considered sensitive/vulnerable.

   SNMP Version 3 is recommended
   over versions prior versions, for configuration control, as its security
   model is improved.

   SNMPv1 or SNMPv2 are by themselves to SNMPv3 did not a secure environment. include adequate security.
   Even if the network itself is secure (for "for example by using IPSec
   [RFC2401]), IPSec",
   even then, there is no control as to who on the secure network is
   allowed to access and GET/SET (read/change/create/delete) "read/change/create/delete" the objects
   in this MIB. MIB module.

   It is recommended RECOMMENDED that the implementers consider the security features as
   provided by the SNMPv3
   framework.  Specifically, the use of framework "see [RFC3410], section 8",
   including full support for the User-based Security Model
   [RFC2574] SNMPv3 cryptographic mechanisms "for
   authentication and the View-based Access Control [RFC2575] privacy".

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED. Instead, it is
   recommended. RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/user 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) "users" that have legitimate rights to indeed GET or
   SET (change/create/delete) them.

   There are a number of managed objects in this MIB that may contain
   information that may be sensitive from a business perspective, in
   that they represent a customer's interface to the MPLS network.
   Allowing uncontrolled access to these objects could result in
   malicious and unwanted disruptions of network traffic or incorrect
   configurations for these customers.  There are no objects that are
   particularly sensitive in their own right, such as passwords or
   monetary amounts.

13.   Acknowledgments

   We wish to thank Ron Bonica, Adrian Farrel, Eric Gray, Tim
   Mancour, Keith McCloghrie, Bala Rajagopalan, Dan Tappan, Vasanthi
   Thirumalai, Joseph Benoit and Joan Cucchiara.

14.   References

   [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/iana.mib/ianaaddressfamilynum
                 bers.mib

   [TCMIB]       Nadeau, T., Cucchiara, J., Srinivasan, C,
                 Viswanathan, A. and H. Sjostrand, "Definition of
                 Textual Conventions and OBJECT-IDENTITIES for Multi-
                 Protocol Label Switching (MPLS) Management",
                 Internet Draft <draft-ietf-mpls-tc-mib-03.txt>,
                 January 2002.

   [RFC1155]     Rose, M., and K. McCloghrie, "Structure and
                 Identification of Management Information for TCP/IP-
                 based Internets", RFC 1155, May 1990.

   [RFC1157]     Case, J., Fedor, M., Schoffstall, M., and J. Davin,
                 "Simple Network Management Protocol", RFC 1157, May
                 1990.

   [RFC1215]     M. Rose, "A Convention for Defining Traps for use
                 with the SNMP", RFC 1215, March 1991.

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

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

   [RFC1906]     Case, J.,

12.   Acknowledgments

   We wish to thank Ron Bonica, Adrian Farrel, Eric Gray, Tim
   Mancour, Keith McCloghrie, K., Rose, M., Bala Rajagopalan, Dan Tappan, Vasanthi
   Thirumalai, Joseph Benoit, Mike Piecuch, Joan Cucchiara.
   A special thanks to Bert Wijnen and S.
                 Waldbusser, "Transport Mappings Mike MacFaden for Version 2 of really
   getting the Simple Network Management Protocol (SNMPv2)",
                 RFC 1906, January 1996. MIB module into shape.

13.   References

13.1. Normative References

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

   [RFC2863]     McCloghrie, K., and F. Kastenholtz, "The Interfaces
                 Group MIB using SMIv2", RFC 2863, June 2000

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

   [RFC2515]     Tesink, K., et al., "Definitions of Managed Objects
                 for ATM Management", RFC 2515, Feb. 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.

   [RFC2571]     Harrington, D., Presuhn, R., and B. Wijnen, "An
                 Architecture for Describing SNMP Management
                 Frameworks", RFC 2571, April 1999.

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

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

   [RFC2574]     Blumenthal, U., and B. Wijnen, "User-based Security
                 Model (USM) for version 3 of the Simple Network
                 Management Protocol (SNMPv3)", RFC 2574, 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 February 1999.

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

   [RFC2579]     McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
                 J., Rose, M., and S. Waldbusser, "Textual Conventions
                 for SMIv2", STD 58, RFC 2579, April 1999.

   [RFC2702]     Awduche,

   [RFC2580]     McCloghrie, K., Perkins, D., Malcolm, Schoenwaelder, J., Agogbua, Case,
                 J., O'Dell, Rose, M., and S. Waldbusser, "Conformance
                 Statements for SMIv2", STD 58, RFC 2580, April 1999.

   [RFC2863]     McCloghrie, K. and F. Kastenholz, "The Interfaces
                 Group MIB", RFC 2863, June 2000.

   [RFC3031]     Rosen, E., Viswanathan, A., and R. Callon,
                 "Multiprotocol Label Switching Architecture", RFC
                 3031, January 2001.

   [RFC3291]     Daniele, M., Haberman, B., Routhier., S.,
                 Schoenwaelder., J., "Textual Conventions
                 for Internet Network Addresses", RFC3291,
                 May 2002.

   [RFC3411]     Harrington, D., Presuhn, R., and B. Wijnen, "An
                 Architecture for Describing Simple Network Management
                 Protocol (SNMP) Management Frameworks", RFC 3411,
                 December 2002.

   [TEMIB]       Srinivasan, C., Viswanathan, A. and J. McManus, "Requirements for Nadeau, T., "MPLS
                 Traffic Engineering Over MPLS", RFC 2702, September 1999.

   [RFC2580]     McCloghrie, K., Perkins, D., Schoenwaelder, J.,
                 Case, Management Information Base ",
                 Internet Draft <draft-ietf-mpls-te-mib-09.txt>,
                 November 2002.

   [TCMIB]       Nadeau, T., Cucchiara, J., Rose, M., and S. Waldbusser, "Conformance
                 Statements for SMIv2", STD 58, RFC 2580, April
                 1999.

   [RFC3031]     Rosen, E., Srinivasan, C.,
                 Viswanathan, A., Sjostrand, H. and R. Callon,
                 "Multiprotocol K. Kompella,
                 "Definition of Textual Conventions and OBJECT-
                 IDENTITIES for Multi-Protocol Label Switching Architecture", (MPLS)
                 Management", Internet Draft <draft-ietf-mpls-tc-mib-
                 06.txt>, April 2003.

   [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/iana.mib/ianaaddressfamilynum
                 bers.mib

13.2. Informative References

   [RFC2026]     S. Bradner, "The Internet Standards Process --
                 Revision 3", RFC
                 3031, January 2001.

   [RFC3032]     Rosen, E., Rekhter, Y., Tappan, D., Farinacci, 2026, October 1996.

   [RFC3413]     Levi, D.,
                 Federokow, G., Li, T., Meyer, P., Stewart, B.,
                 "SNMP Applications", RFC 3413, December 2002.

   [RFC3410]     Case, J., Mundy, R., Partain, D. and A. Conta, "MPLS Label
                 Stack Encoding", B. Stewart,
                 "Introduction and Applicability Statements for
                 Internet-Standard Management Framework", RFC 3032, January 2001.

15. 3410,
                 December 2002.

14.   Authors' Addresses

  Cheenu Srinivasan
  Parama Networks, Inc.
  1030 Broad Street
  Shrewsbury, NJ 07702
  Phone: +1-732-544-9120 x731
  Email: cheenu@paramanet.com

  Arun Viswanathan
  Force10 Networks, Inc.
  1440 McCarthy Blvd
  Milpitas, CA 95035
  Phone: +1-408-571-3516
  Email: arun@force10networks.com

  Thomas D. Nadeau
  Cisco Systems, Inc.
  250 Apollo Drive
  Chelmsford,

  300 Beaver Brook Road
  Boxboro, MA 01824
  Phone: +1-978-244-3051 01719
   +1-978-936-1470
  Email:  tnadeau@cisco.com

16.

15.   Full Copyright Statement

   Copyright (C) The Internet Society (2001). (2003).  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.

16.  Intellectual Property Notice

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; neither does it represent that it
   has made any effort to identify any such rights.  Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11 [RFC2028].
   Copies of claims of rights made available for publication and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementors or users of this
   specification can be obtained from the IETF Secretariat.
   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.