MPLS-TC-STD-MIB DEFINITIONS ::= BEGIN

    IMPORTS

       MODULE-IDENTITY,
       Unsigned32, Integer32,
       transmission           FROM SNMPv2-SMI            -- [RFC2578]

       TEXTUAL-CONVENTION
          FROM SNMPv2-TC;                                -- [RFC2579]

    mplsTCStdMIB MODULE-IDENTITY
       LAST-UPDATED "200406030000Z" -- June 3, 2004
       ORGANIZATION
          "IETF Multiprotocol Label Switching (MPLS) Working
           Group."
       CONTACT-INFO
            "        Thomas D. Nadeau

                     Cisco Systems, Inc.
                     tnadeau@cisco.com

                     Joan Cucchiara
                     Marconi Communications, Inc.
                     jcucchiara@mindspring.com

                     Cheenu Srinivasan
                     Bloomberg L.P.
                     cheenu@bloomberg.net

                     Arun Viswanathan
                     Force10 Networks, Inc.
                     arunv@force10networks.com

                     Hans Sjostrand
                     ipUnplugged
                     hans@ipunplugged.com

                     Kireeti Kompella
                     Juniper Networks
                     kireeti@juniper.net

          Email comments to the MPLS WG Mailing List at
          mpls@uu.net."
       DESCRIPTION
           "Copyright (C) The Internet Society (2004). The
           initial version of this MIB module was published
           in RFC 3811. For full legal notices see the RFC
           itself or see:
           http://www.ietf.org/copyrights/ianamib.html

           This MIB module defines TEXTUAL-CONVENTIONs
           for concepts used in Multiprotocol Label
           Switching (MPLS) networks."

       REVISION "200406030000Z" -- June 3, 2004
       DESCRIPTION
          "Initial version published as part of RFC 3811."
        ::= { mplsStdMIB 1 }

    mplsStdMIB OBJECT IDENTIFIER
    ::= { transmission 166 }

    MplsAtmVcIdentifier ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS  current
       DESCRIPTION
          "A Label Switching Router (LSR) that
           creates LDP sessions on ATM interfaces
           uses the VCI or VPI/VCI field to hold the
           LDP Label.

           VCI values MUST NOT be in the 0-31 range.
           The values 0 to 31 are reserved for other uses
           by the ITU and ATM Forum.  The value
           of 32 can only be used for the Control VC,
           although values greater than 32 could be
           configured for the Control VC.

           If a value from 0 to 31 is used for a VCI
           the management entity controlling the LDP
           subsystem should reject this with an
           inconsistentValue error.  Also, if
           the value of 32 is used for a VC which is
           NOT the Control VC, this should
           result in an inconsistentValue error."
       REFERENCE
          "MPLS using LDP and ATM VC Switching, RFC3035."
       SYNTAX  Integer32 (32..65535)

    MplsBitRate ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS      current
       DESCRIPTION
          "If the value of this object is greater than zero,
           then this represents the bandwidth of this MPLS
           interface (or Label Switched Path) in units of
           '1,000 bits per second'.

           The value, when greater than zero, represents the
           bandwidth of this MPLS interface (rounded to the
           nearest 1,000) in units of 1,000 bits per second.
           If the bandwidth of the MPLS interface is between
           ((n * 1000) - 500) and ((n * 1000) + 499), the value
           of this object is n, such that n > 0.

           If the value of this object is 0 (zero), this
           means that the traffic over this MPLS interface is
           considered to be best effort."
       SYNTAX  Unsigned32 (0|1..4294967295)

    MplsBurstSize ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS      current
       DESCRIPTION
          "The number of octets of MPLS data that the stream
           may send back-to-back without concern for policing.
           The value of zero indicates that an implementation
           does not support Burst Size."
       SYNTAX  Unsigned32 (0..4294967295)

    MplsExtendedTunnelId ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "A unique identifier for an MPLS Tunnel.  This may
           represent an IPv4 address of the ingress or egress
           LSR for the tunnel.  This value is derived from the
           Extended Tunnel Id in RSVP or the Ingress Router ID
           for CR-LDP."
       REFERENCE
          "RSVP-TE: Extensions to RSVP for LSP Tunnels,
           [RFC3209].

           Constraint-Based LSP Setup using LDP, [RFC3212]."
       SYNTAX  Unsigned32(0..4294967295)

    MplsLabel ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "This value represents an MPLS label as defined in
           [RFC3031],  [RFC3032], [RFC3034], [RFC3035] and
           [RFC3471].

           The label contents are specific to the label being
           represented, such as:

           * The label carried in an MPLS shim header
             (for LDP this is the Generic Label) is a 20-bit
             number represented by 4 octets.  Bits 0-19 contain
             a label or a reserved label value.  Bits 20-31
             MUST be zero.

             The following is quoted directly from [RFC3032].
             There are several reserved label values:

                i. A value of 0 represents the
                   'IPv4 Explicit NULL Label'.  This label
                   value is only legal at the bottom of the
                   label stack.  It indicates that the label
                   stack must be popped, and the forwarding
                   of the packet must then be based on the

                   IPv4 header.

               ii. A value of 1 represents the
                   'Router Alert Label'.  This label value is
                   legal anywhere in the label stack except at
                   the bottom.  When a received packet
                   contains this label value at the top of
                   the label stack, it is delivered to a
                   local software module for processing.
                   The actual forwarding of the packet
                   is determined by the label beneath it
                   in the stack.  However, if the packet is
                   forwarded further, the Router Alert Label
                   should be pushed back onto the label stack
                   before forwarding.  The use of this label
                   is analogous to the use of the
                   'Router Alert Option' in IP packets
                   [RFC2113].  Since this label
                   cannot occur at the bottom of the stack,
                   it is not associated with a
                   particular network layer protocol.

              iii. A value of 2 represents the
                   'IPv6 Explicit NULL Label'.  This label
                   value is only legal at the bottom of the
                   label stack.  It indicates that the label
                   stack must be popped, and the forwarding
                   of the packet must then be based on the
                   IPv6 header.

               iv. A value of 3 represents the
                   'Implicit NULL Label'.
                   This is a label that an LSR may assign and
                   distribute, but which never actually
                   appears in the encapsulation.  When an
                   LSR would otherwise replace the label
                   at the top of the stack with a new label,
                   but the new label is 'Implicit NULL',
                   the LSR will pop the stack instead of
                   doing the replacement.  Although
                   this value may never appear in the
                   encapsulation, it needs to be specified in
                   the Label Distribution Protocol, so a value
                   is reserved.

                v. Values 4-15 are reserved.

           * The frame relay label can be either 10-bits or

             23-bits depending on the DLCI field size and the
             upper 22-bits or upper 9-bits must be zero,
             respectively.

           * For an ATM label the lower 16-bits represents the
             VCI, the next 12-bits represents the VPI and the
             remaining bits MUST be zero.

           * The Generalized-MPLS (GMPLS) label contains a
             value greater than 2^24-1 and used in GMPLS
             as defined in [RFC3471]."
       REFERENCE
          "Multiprotocol Label Switching Architecture,
           RFC3031.

           MPLS Label Stack Encoding, [RFC3032].

           Use of Label Switching on Frame Relay Networks,
           RFC3034.

           MPLS using LDP and ATM VC Switching, RFC3035.
           Generalized Multiprotocol Label Switching
           (GMPLS) Architecture, [RFC3471]."
       SYNTAX  Unsigned32 (0..4294967295)

    MplsLabelDistributionMethod ::= TEXTUAL-CONVENTION
       STATUS  current
       DESCRIPTION
          "The label distribution method which is also called
           the label advertisement mode [RFC3036].
           Each interface on an LSR is configured to operate
           in either Downstream Unsolicited or Downstream
           on Demand."
       REFERENCE
          "Multiprotocol Label Switching Architecture,
           RFC3031.

           LDP Specification, RFC3036, Section 2.6.3."
       SYNTAX INTEGER {
                  downstreamOnDemand(1),
                  downstreamUnsolicited(2)
              }

    MplsLdpIdentifier ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "1d.1d.1d.1d:2d"
       STATUS      current
       DESCRIPTION
          "The LDP identifier is a six octet

           quantity which is used to identify a
           Label Switching Router (LSR) label space.

           The first four octets identify the LSR and
           must be a globally unique value, such as a
           32-bit router ID assigned to the LSR, and the
           last two octets identify a specific label
           space within the LSR."
       SYNTAX  OCTET STRING (SIZE (6))

    MplsLsrIdentifier ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
          "The Label Switching Router (LSR) identifier is the
           first 4 bytes of the Label Distribution Protocol
           (LDP) identifier."
       SYNTAX  OCTET STRING (SIZE (4))
    MplsLdpLabelType ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
          "The Layer 2 label types which are defined for MPLS
           LDP and/or CR-LDP are generic(1), atm(2), or
           frameRelay(3)."
       SYNTAX  INTEGER {
                 generic(1),
                 atm(2),
                 frameRelay(3)
             }

    MplsLSPID ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "A unique identifier within an MPLS network that is
           assigned to each LSP.  This is assigned at the head
           end of the LSP and can be used by all LSRs
           to identify this LSP.  This value is piggybacked by
           the signaling protocol when this LSP is signaled
           within the network.  This identifier can then be
           used at each LSR to identify which labels are
           being swapped to other labels for this LSP.  This
           object  can also be used to disambiguate LSPs that
           share the same RSVP sessions between the same
           source and destination.

           For LSPs established using CR-LDP, the LSPID is
           composed of the ingress LSR Router ID (or any of
           its own IPv4 addresses) and a locally unique
           CR-LSP ID to that LSR.  The first two bytes carry

           the CR-LSPID, and the remaining 4 bytes carry
           the Router ID.  The LSPID is useful in network
           management, in CR-LSP repair, and in using
           an already established CR-LSP as a hop in
           an ER-TLV.

           For LSPs signaled using RSVP-TE, the LSP ID is
           defined as a 16-bit (2 byte) identifier used
           in the SENDER_TEMPLATE and the FILTER_SPEC
           that can be changed to allow a sender to
           share resources with itself.  The length of this
           object should only be 2 or 6 bytes.  If the length
           of this octet string is 2 bytes, then it must
           identify an RSVP-TE LSPID, or it is 6 bytes,
           it must contain a CR-LDP LSPID."
       REFERENCE
          "RSVP-TE:  Extensions to RSVP for LSP Tunnels,
           [RFC3209].

           Constraint-Based LSP Setup using LDP,
           [RFC3212]."
       SYNTAX  OCTET STRING (SIZE (2|6))

    MplsLspType ::= TEXTUAL-CONVENTION
       STATUS  current
       DESCRIPTION
          "Types of Label Switch Paths (LSPs)
           on a Label Switching Router (LSR) or a
           Label Edge Router (LER) are:

              unknown(1)         -- if the LSP is not known
                                    to be one of the following.

              terminatingLsp(2)  -- if the LSP terminates
                                    on the LSR/LER, then this
                                    is an egressing LSP
                                    which ends on the LSR/LER,
              originatingLsp(3)  -- if the LSP originates
                                    from this LSR/LER, then
                                    this is an ingressing LSP
                                    which is the head-end of
                                    the LSP,
           crossConnectingLsp(4) -- if the LSP ingresses
                                    and egresses on the LSR,
                                    then it is
                                    cross-connecting on that

                                    LSR."
       SYNTAX INTEGER {
                  unknown(1),
                  terminatingLsp(2),
                  originatingLsp(3),
                  crossConnectingLsp(4)
              }

    MplsOwner ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
          "This object indicates the local network
           management subsystem that originally created
           the object(s) in question.  The values of
           this enumeration are defined as follows:

           unknown(1) - the local network management
           subsystem cannot discern which
           component created the object.

           other(2) - the local network management
           subsystem is able to discern which component
           created the object, but the component is not
           listed within the following choices,
           e.g., command line interface (cli).

           snmp(3) - The Simple Network Management Protocol
           was used to configure this object initially.

           ldp(4) - The Label Distribution Protocol was
           used to configure this object initially.

           crldp(5) - The Constraint-Based Label Distribution
           Protocol was used to configure this object
           initially.

           rsvpTe(6) - The Resource Reservation Protocol was
           used to configure this object initially.

           policyAgent(7) - A policy agent (perhaps in
           combination with one of the above protocols) was
           used to configure this object initially.

           An object created by any of the above choices
           MAY be modified or destroyed by the same or a
           different choice."
       SYNTAX  INTEGER {
                 unknown(1),
                 other(2),
                 snmp(3),
                 ldp(4),
                 crldp(5),
                 rsvpTe(6),
                 policyAgent(7)
             }

    MplsPathIndexOrZero ::= TEXTUAL-CONVENTION
       STATUS current
       DESCRIPTION
          "A unique identifier used to identify a specific
           path used by a tunnel.  A value of 0 (zero) means
           that no path is in use."
       SYNTAX  Unsigned32(0..4294967295)

    MplsPathIndex ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "A unique value to index (by Path number) an
           entry in a table."
       SYNTAX  Unsigned32(1..4294967295)

    MplsRetentionMode ::= TEXTUAL-CONVENTION
       STATUS  current
       DESCRIPTION
          "The label retention mode which specifies whether
           an LSR maintains a label binding for a FEC
           learned from a neighbor that is not its next hop
           for the FEC.

           If the value is conservative(1) then advertised
           label mappings are retained only if they will be
           used to forward packets, i.e., if label came from
           a valid next hop.

           If the value is liberal(2) then all advertised
           label mappings are retained whether they are from
           a valid next hop or not."
       REFERENCE
          "Multiprotocol Label Switching Architecture,
           RFC3031.

           LDP Specification, RFC3036, Section 2.6.2."
       SYNTAX INTEGER {
                  conservative(1),
                  liberal(2)
              }

    MplsTunnelAffinity ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "Describes the configured 32-bit Include-any,
           include-all, or exclude-all constraint for
           constraint-based link selection."
       REFERENCE
          "RSVP-TE:  Extensions to RSVP for LSP Tunnels,
           RFC3209, Section 4.7.4."
       SYNTAX  Unsigned32(0..4294967295)

    MplsTunnelIndex ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "A unique index into mplsTunnelTable.
           For tunnels signaled using RSVP, this value
           should correspond to the RSVP Tunnel ID
           used for the RSVP-TE session."
       SYNTAX  Unsigned32 (0..65535)

    MplsTunnelInstanceIndex ::= TEXTUAL-CONVENTION
       STATUS        current
       DESCRIPTION
          "The tunnel entry with instance index 0
           should refer to the configured tunnel
           interface (if one exists).

           Values greater than 0, but less than or
           equal to 65535, should be used to indicate
           signaled (or backup) tunnel LSP instances.
           For tunnel LSPs signaled using RSVP,
           this value should correspond to the
           RSVP LSP ID used for the RSVP-TE
           LSP.

           Values greater than 65535 apply to FRR
           detour instances."
       SYNTAX  Unsigned32(0|1..65535|65536..4294967295)

    TeHopAddressType ::= TEXTUAL-CONVENTION
       STATUS     current
       DESCRIPTION
          "A value that represents a type of address for a
           Traffic Engineered (TE) Tunnel hop.

           unknown(0)   An unknown address type.  This value
                        MUST be used if the value of the
                        corresponding TeHopAddress object is a

                        zero-length string.  It may also be
                        used to indicate a TeHopAddress which
                        is not in one of the formats defined
                        below.

           ipv4(1)      An IPv4 network address as defined by
                        the InetAddressIPv4 TEXTUAL-CONVENTION
                        [RFC3291].

           ipv6(2)      A global IPv6 address as defined by
                        the InetAddressIPv6 TEXTUAL-CONVENTION
                        [RFC3291].

           asnumber(3)  An Autonomous System (AS) number as
                        defined by the TeHopAddressAS
                        TEXTUAL-CONVENTION.

           unnum(4)     An unnumbered interface index as
                        defined by the TeHopAddressUnnum
                        TEXTUAL-CONVENTION.

           lspid(5)     An LSP ID for TE Tunnels
                        (RFC3212) as defined by the
                        MplsLSPID TEXTUAL-CONVENTION.

           Each definition of a concrete TeHopAddressType
           value must be accompanied by a definition
           of a TEXTUAL-CONVENTION for use with that
           TeHopAddress.

           To support future extensions, the TeHopAddressType
           TEXTUAL-CONVENTION SHOULD NOT be sub-typed in
           object type definitions.  It MAY be sub-typed in
           compliance statements in order to require only a
           subset of these address types for a compliant
           implementation.

           Implementations must ensure that TeHopAddressType
           objects and any dependent objects
           (e.g., TeHopAddress objects) are consistent.
           An inconsistentValue error must be generated
           if an attempt to change a TeHopAddressType
           object would, for example, lead to an
           undefined TeHopAddress value that is
           not defined herein.  In particular,
           TeHopAddressType/TeHopAddress pairs
           must be changed together if the address
           type changes (e.g., from ipv6(2) to ipv4(1))."
       REFERENCE
          "TEXTUAL-CONVENTIONs for Internet Network
           Addresses, RFC3291.

           Constraint-Based LSP Setup using LDP,
           [RFC3212]"
       SYNTAX     INTEGER {
                     unknown(0),
                     ipv4(1),
                     ipv6(2),
                     asnumber(3),
                     unnum(4),
                     lspid(5)
                  }

    TeHopAddress ::= TEXTUAL-CONVENTION
       STATUS     current
       DESCRIPTION
          "Denotes a generic Tunnel hop address,
           that is, the address of a node which
           an LSP traverses, including the source
           and destination nodes.  An address may be
           very concrete, for example, an IPv4 host
           address (i.e., with prefix length 32);
           if this IPv4 address is an interface
           address, then that particular interface
           must be traversed.  An address may also
           specify an 'abstract node', for example,
           an IPv4 address with prefix length
           less than 32, in which case, the LSP
           can traverse any node whose address
           falls in that range.  An address may
           also specify an Autonomous System (AS),
           in which  case the LSP can traverse any
           node that falls within that AS.

           A TeHopAddress value is always interpreted within
           the context of an TeHopAddressType value.  Every
           usage of the TeHopAddress TEXTUAL-CONVENTION
           is required to specify the TeHopAddressType object
           which provides the context.  It is suggested that
           the TeHopAddressType object is logically registered
           before the object(s) which use the TeHopAddress
           TEXTUAL-CONVENTION if they appear in the
           same logical row.

           The value of a TeHopAddress object must always be

           consistent with the value of the associated
           TeHopAddressType object.  Attempts to set a
           TeHopAddress object to a value which is
           inconsistent with the associated TeHopAddressType
           must fail with an inconsistentValue error."
       SYNTAX     OCTET STRING (SIZE (0..32))

    TeHopAddressAS ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
          "Represents a two or four octet AS number.
           The AS number is represented in network byte
           order (MSB first).  A two-octet AS number has
           the two MSB octets set to zero."
       REFERENCE
          "Textual Conventions for Internet Network
           Addresses, [RFC3291].  The
           InetAutonomousSystemsNumber TEXTUAL-CONVENTION
           has a SYNTAX of Unsigned32, whereas this TC
           has a SYNTAX of OCTET STRING (SIZE (4)).
           Both TCs represent an autonomous system number
           but use different syntaxes to do so."
       SYNTAX      OCTET STRING (SIZE (4))

    TeHopAddressUnnum ::= TEXTUAL-CONVENTION
       STATUS      current
       DESCRIPTION
          "Represents an unnumbered interface:

           octets   contents               encoding
            1-4     unnumbered interface   network-byte order

           The corresponding TeHopAddressType value is
           unnum(5)."
       SYNTAX      OCTET STRING(SIZE(4))

END
