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
