Network Working Group                                       Martin Dubuc
Internet Draft
Category: Standards Track                            Sudheer Dharanikota
Expires: October 2003                                      Avici Systems

                                                        Thomas D. Nadeau
                                                           Cisco Systems

                                                        Jonathan P. Lang
                                                         Rincon Networks

                                                              April 2003

          Traffic Engineering Link Management Information Base

                   draft-ietf-mpls-telink-mib-00.txt

                   draft-ietf-mpls-telink-mib-01.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 Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet- Drafts. Internet-Drafts.

   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 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 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 TE links as
   described in the Link Bundling in MPLS Traffic Engineering Internet
   Draft. document.

Table of Contents

1. The Internet-Standard Management Framework  . . . . . . . . . . .   2
2. Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .   3 .   2
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . .   3
4.   The SNMP Management Framework . . . . . . . . . . . . . . . . .   3
5.
4. Feature Checklist . . . . . . . . . . . . . . . . . . . . . . .   5
6.   Outline . . . . . . . . . . . . . . . . . . .   3
5. Outline . . . . . . . . .   5
6.1. Summary of TE Link MIB . . . . . . . . . . . . . . . . . . . .   5
7.   4
6. Brief Description of MIB Objects  . . . . . . . . . . . . . . .   6
7.1. .   4
6.1. teLinkTable . . . . . . . . . . . . . . . . . . . . . . . . . .   6
7.2.   4
6.2. teLinkDescriptorTable . . . . . . . . . . . . . . . . . . . . .   6
7.3.   4
6.3. teLinkSrlgTable . . . . . . . . . . . . . . . . . . . . . . . .   6
7.4.   4
6.4. teLinkBandwidthTable  . . . . . . . . . . . . . . . . . . . . .   6
7.5.   4
6.5. componentLinkTable  . . . . . . . . . . . . . . . . . . . . . .   6
7.6.   5
6.6. componentLinkDescriptorTable  . . . . . . . . . . . . . . . . .   7
7.7.   5
6.7. componentLinkBandwidthTable . . . . . . . . . . . . . . . . . .   7
8.   5
7. Example of Bundled Link Setup . . . . . . . . . . . . . . . . .   7
9. .   5
8. Application of the Interfaces Group to TE Links . . . . . . . .  10
9.1 .   9
8.1 Support of the TE Link Layer by ifTable  . . . . . . . . . . . .  11
9.2   9
8.2 Using ifStackTable . . . . . . . . . . . . . . . . . . . . . .  12
10. .  11
9. TE Link MIB Module Definitions  . . . . . . . . . . . . . . . . . . . .  14
11.  12
10. Intellectual Property Considerations . . . . . . . . . . . . .  44
12. .  43
11. Security Considerations  . . . . . . . . . . . . . . . . . . . .  45
13.  43
12. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . .  46
14.  44
13. References . . . . . . . . . . . . . . . . . . . . . . . . . .  46
14.1 .  44
13.1 Normative References  . . . . . . . . . . . . . . . . . . . . .  46
14.2  44
13.2 Informative References  . . . . . . . . . . . . . . . . . . . .  47
15.  45
14. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . .  49
16. .  46
15. Full Copyright Statement . . . . . . . . . . . . . . . . . . .  49 .  46

1.  The Internet-Standard Management Framework

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

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

2.  Introduction

   OSPF [OSPF], Generalized MPLS (GMPLS) [RFC3471] and the Link Manage-
   ment Protocol (LMP) [LMP] use the concept of traffic engineering (TE)
   links to abstract link properties. The effect of this approach is the
   reduction of the amount of routing information exchanged in the net-
   work,
   network, which improves routing scalability. In addition, the use of
   TE link allows the implementation of new capabilities such as link pro-
   tection.
   protection.

   We present in this document a MIB module that can be used to manage
   TE links and their extension, the bundled link. This MIB enable module
   enables both the con-
   figuration configuration and the performance monitoring of TE
   links and bundled link.

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

3.  Terminology

   This document uses terminology from the documents describing link
   bundling [BUNDLING] and G-MPLS [GMPLS-ARCH].

   The link bundling feature is designed to aggregate one or more simi-
   lar entities between a node pair into a bundled link [BUNDLING]. In
   the document, those entities are referred to as TE links. A TE link
   is a subinterface capable of carrying MPLS traffic engineered traf-
   fic.  A TE Link may be comprised of only one underlying component
   links.
   link.  In cases where more than one component link is links are to be com-
   bined, multiple component links should be created with differing pri-
   orities to indicate hot-standby or parallel utilization.

   A bundled link is just another kind of Traffic Engineering (TE) link
   (see [GMPLS-OSPF]). A link bundle is a subinterface which bounds the
   traffic of a group of one or more TE links. There should be more than
   one TE Link in a link bundle, but this is not a requirement.  Fur-
   thermore, if there are more than one TE link in a link bundle at some
   time, and at some point later, all but one of the links are deleted,
   the agent may choose to either delete the link bundle, or it may
   choose to leave it intact. Traffic counters on a link bundle are
   cumulative for all subinterfaces which it binds together.

4.  Feature Checklist

   The SNMP Management Framework TE Link MIB module (TE-LINK-MIB) is designed to satisfy the fol-
   lowing requirements and constraints:

   -  The SNMP Management Framework presently consists MIB module supports the management of five major compo-
   nents: TE links, including
      bundled links.

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

      Mechanisms for describing and naming objects and events  Support is provided for the
      purpose of management.  The first version of this Structure configuration of
      Management Information (SMI) is called SMIv1 and described in
      STD 16, RFC 1155 [RFC1155], STD 16, RFC 1212 [RFC1212] and RFC
      1215 [RFC1215].  The second version, called SMIv2, is described
      in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and
      STD 58, RFC 2580 [RFC2580]. traffic engineering
      parameters associated with TE links.

   -  Message protocols for transferring management information.  The
      first version of the SNMP message protocol MIB module 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.

5.  Feature Checklist

   The TE Link MIB (TE-LINK-MIB) is designed to satisfy the following
   requirements and constraints:

   -  The MIB supports the management of TE links, including bundled
      links.

   -  Support is provided for configuration of traffic engineering
      parameters associated with TE links.

   -  The MIB is used to monitor the priority-based component link used to monitor the priority-based component
      link and TE link bandwidth values.

6.

5.  Outline

   Configuring bundled links involves the following steps:

   -  Creating a bundled link.

   -  Creating TE links.

   -  Optionally specifying the shared risk link groups associated with
      the TE links.

   -  Configuring the component links including the bandwidth
      parameters and associating the component links with the
      appropriate TE link.

   -  Associating the TE links with the appropriate bundled link.

6.1.  Summary of TE Link MIB

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

   -  The TE link table (teLinkTable), which is used to
      specify TE links, including bundled links, and their generic
      traffic engineering parameters.

   -  The TE link descriptor table (teLinkDescriptorTable), which is
      used to enumerate the TE link descriptors.

   -  The shared risk link group (SRLG) table (teLinkSrlgTable),
      which is used to specify the SRLGs associated with TE links.

   -  The TE link bandwidth table (teLinkBandwidthTable),
      which is used for reporting priority-based bandwidth values
      associated with TE links.

   -  The component link table (componentLinkTable), which is
      used to identify the component links that are associated
      with the TE links and specify the component link generic
      traffic engineering parameters.

   -  The component link descriptor table
      (componentLinkDescriptorTable), which is used to enumerate
      the component link descriptors.

   -  The component link bandwidth table
      (componentLinkBandwidthTable), which is used to report
      priority-based bandwidth values associated with component links.

   These tables are described in the subsequent sections.

7.

6.  Brief Description of MIB Objects

   Sections 7.1-7.5 6.1-6.5 describe objects pertaining to TE links.  The MIB
   objects were derived from the link bundling document [BUNDLING].

7.1.

6.1.  teLinkTable

   This table represents the TE links, including bundled links.

7.2. links, and
   their generic traffic engineering parameters.

6.2.  teLinkDescriptorTable

   This table represents the TE link descriptors.

7.3.

6.3.  teLinkSrlgTable

   This table represents the shared risk link groups (SRLGs) associated
   with TE links.

7.4.

6.4.  teLinkBandwidthTable

   This table specifies the priority-based bandwidth traffic engineering
   parameters associated with TE links.

7.5.

6.5.  componentLinkTable

   This table enumerates the component links and their association generic traffic
   engineering parameters.  with TE link.

7.6.

6.6.  componentLinkDescriptorTable

   This table enumerates the link descriptors that each component link
   supports.

7.7.

6.7.  componentLinkBandwidthTable

   The component link bandwidth table specifies the priority-based band-
   width values associated with the component links.

8.

   Component links that belong to the same TE link must be compatible.
   They must support the same switching capability and the same set of
   link descriptors. Consequently, the link descriptors of the teLinkDe-
   scriptorTable can be derived from the link descriptors of the compo-
   nentLinkDescrTable. If these two tables are managed independently,
   mechanisms should be put in place to ensure consistency between the
   two tables.

   TE links that form a bundled link must have compatible traffic engi-
   neering parameters (switching capability, link descriptors, resource
   class, link metric and protection type).

   Some of the bandwidth parameters of the teLinkBandwidthTable are
   derived from the bandwidth parameters of the componentLinkBand-
   widthTable (maximum/minimum reservable bandwidth and unreserved band-
   width).

7.  Example of Bundled Link Setup

   In this section we provide a brief example of using the MIB
   objects described in section 10 to set up a bundled link.
   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 bundled link
   out of two 1:1 TE links. Assume that the bundled link is associated
   with SRLGs 10 and 50. Finally, let the component links be port
   entity interfaces (lambdas). The following example illustrates which
   rows and corresponding objects might be created to accomplish this.

   First, a bundled link entry is created. An ifEntry with the same
   ifIndex and with ifType teLink needs to be created beforehand.

   In teLinkTable:
   {
      ifIndex                        = 25,
      teLinkIpAddrType
      teLinkAddressType              = unknown(0),
      teLinkRowStatus                = createAndGo(4)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 0,
      ifStackLowerLayer              = 25,
      ifStackStatus                  = createAndGo(4)
   }

   Next, the two TE links are created.

   In teLinkTable:
   {
      ifIndex                        = 20,
      teLinkIpAddrType
      teLinkAddressType              = unknown(0),
      teLinkMetric                   = 5,
      teLinkResourceClass            = 3,
      teLinkRowStatus                = createAndWait(5)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 25,
      ifStackLowerLayer              = 20,
      ifStackStatus                  = createAndGo(4)
   }

   In teLinkTable:
   {
      ifIndex                        = 21,
      teLinkIpAddrType
      teLinkAddressType              = unknown(0),
      teLinkMetric                   = 5,
      teLinkResourceClass            = 3,
      teLinkRowStatus                = createAndWait(5)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 25,
      ifStackLowerLayer              = 21,
      ifStackStatus                  = createAndGo(4)
   }

   We assign SRLGs to the TE links.

   In the teLinkSrlgTable:

   {
      ifIndex                        = 20,
      srlg                           = 10,
      srlgRowStatus                  = createAndGo(4)
   }

   In the teLinkSrlgTable:
   {
      ifIndex                        = 21,
      srlg                           = 50,
      srlgRowStatus                  = createAndGo(4)
   }

   The bundled link inherits the SRLG properties from the
   associated TE links.

   Next, for each TE link, two component links are created.
   An ifEntry with the same ifIndex needs to be created beforehand.

   In componentLinkTable:
   {
      ifIndex                          = 40,
      componentLinkPreferredProtection = primary(1),
      componentLinkRowStatus           = createAndGo(4)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 20,
      ifStackLowerLayer              = 40,
      ifStackStatus                  = createAndGo(4)
   }

   In componentLinkTable:
   {
      ifIndex                          = 43,
      componentLinkPreferredProtection = secondary(2),
      componentLinkRowStatus           = createAndGo(4)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 20,
      ifStackLowerLayer              = 43,
      ifStackStatus                  = createAndGo(4)
   }

   In componentLinkTable:

   {
      ifIndex                          = 44,
      componentLinkPreferredProtection = primary(1),
      componentLinkRowStatus           = createAndGo(4)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 21,
      ifStackLowerLayer              = 44,
      ifStackStatus                  = createAndGo(4)
   }

   In componentLinkTable:
   {
      ifIndex                          = 48,
      componentLinkPreferredProtection = secondary(2),
      componentLinkRowStatus           = createAndGo(4)
   }

   In ifStackTable:
   {
      ifStackHigherLayer             = 21,
      ifStackLowerLayer              = 48,
      ifStackStatus                  = createAndGo(4)
   }

   In this example, once a component link is added to the
   componentLinkTable, the associated link descriptors are
   implicitly added to the componentLinkDescriptorTable.

   TE link link descriptors are derived from their component link
   descriptors.

   Note that the bandwidth attributes in teLinkDescriptorTable,
   componentLinkDescriptorTable, teLinkBandwidthTable
   and componentLinkBandwidthTable are maintained by the
   device according to LSP creation/deletion at different priorities.
   The values in the teLinkBandwidthTable are an aggregation
   of the values for the component links of the TE links and
   the TE links of the bundled link.

9.

8.  Application of the Interfaces Group to TE Links

   The Interfaces Group [RFC2863] defines generic managed objects for
   managing interfaces.  This memo contains the media-specific
   extensions to the Interfaces Group for managing TE Link interfaces
   as logical 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 TE Link
   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 TE Link interfaces, the interface stack table might appear
   as follows:

   +----------------------------------------+
   | TE link-interface ifType = teLink(200) +
   +----------------------------------------+
   | Underlying Layer...                    +
   +----------------------------------------+

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

9.1.

8.1.  Support of the TE Link Layer by ifTable

   Some specific interpretations of ifTable for the TE Link layer
   follow.

   Object        Use for the TE Link layer

   ifIndex       Each TE Link interface is represented by an ifEntry.

   ifDescr       Description of the TE Link interface.

   ifType        The value that is allocated for TE Link is 200
                 [IANAFamily].
                 [IANAifType].

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

   ifPhysAddress Unused.

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

   ifOperStatus  This value reflects the actual or operational
                 status of TE Link on this interface.

   ifLastChange  See [RFC2863].

   ifInOctets    The number of received octets over the interface,
                 i.e., the number of received octets in all component
                 links associated with the interface.

   ifOutOctets   The number of transmitted octets over the
                 interface, i.e., the number of octets transmitted
                 over all component links associated with the
                 interface.

   ifInErrors    The number of packets dropped due to
                 uncorrectable errors.

   ifInUnknownProtos
                 The number of received packets discarded during
                 packet header validation.

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

   Support for ifInOctets, ifOutOctets, ifInErrors, ifInUnknownProtos,
   ifOutErrors, ifHCInOctets and ifHCOutOctets objects is not required
   if encoding type is clear. For other encoding types, traffic
   counters on a TE link are cumulative for all subinterfaces which it
   binds together.

9.2.

8.2.  Using ifStackTable

   This section describes by example how to use ifStackTable to
   represent the relationship of TE links with underlying TE-enabled
   interfaces. Implementors of the stack table for TE link interfaces
   should look at the appropriate RFC for the service being stacked
   on TE links. Examples given below are for illustration purposes
   only.

   Example: MPLS is being carried on 2 a bundled TE links.
            Each
            The bundled TE link runs over represents a 1:1 optical
            transport interface.

   In this example, the component link is a TE link. The two component
   links/TE links are grouped in a 1:1 optical
            transport interface.

           +---------------------------------+ bundled link.

   +-------------------------------------------------------------------+
   | mpls MPLS interface ifType = mpls(166)                                 |
           +---------------------------------+
   +-------------------------------------------------------------------+
   | TE link (bundled link) ifType = teLink(200)                       |
           +---------------------------------+
   +--------------------------------+-+--------------------------------+
   | teLink (Link Bundle) TE link ifType = teLink(200)   |
           +---------------------------------+ | TE link ifType = teLink(200)   |
           +---------------+ +---------------+
   +--------------------------------+ +--------------------------------+
   | teLink Component link                 | | teLink Component link                 |
           +---------------+ +---------------+
   | ifType = opticalTransport(196) | | ifType = opticalTransport(196) |
           +------+ +------+ +------+ +------+
           |oTrans| |oTrans| |oTrans| |oTrans|
           +------+ +------+ +------+ +------+
   +--------------------------------+ +--------------------------------+

   The assignment of the index values could for example be:

           ifIndex  Description
           1        mpls             (type 166)
           2        teLink           (type 200)
           3        teLink           (type 200)
           4        teLink           (type 200)
           5        opticalTransport (type 196)
           6        opticalTransport (type 196)
           7        opticalTransport (type 196)
           8        opticalTransport (type 196)

   The ifStackTable is then used to show the relationships between the
   various interfaces.

           ifStackTable Entries

           HigherLayer   LowerLayer
           0             1
           1             2
           2             3
           2             4
           3             5
           3             6
           4             7
           4             8             6
           5             0
           6             0
           7             0
           8             0

   In the case where MPLS is using a single TE link, then
   the upper TE link layer (link bundle) is not required.

           +---------------+

   +-----------------------------------+
   | mpls MPLS interface ifType = mpls(166) |
           +---------------+
   +-----------------------------------+
   |
           +---------------+ TE link ifType = teLink(200)      | teLink
   +-----------------------------------+
   | Component link                    |
           +---------------+
   | ifType = opticalTransport(196)    |
           +------+ +------+
           |oTrans| |oTrans|
           +------+ +------+
   +-----------------------------------+

   The assignment of the index values could for example be:

           ifIndex  Description
           1        mpls             (type 166)
           2        teLink           (type 200)
           3        opticalTransport (type 196)
           4        opticalTransport (type 196)

   The ifStackTable is then used to show the relationships between the
   various interfaces.

           ifStackTable Entries

           HigherLayer   LowerLayer
           0             1
           1             2
           2             3
           2             4
           3             0
           4             0

10.

9.  TE Link MIB Module Definitions

TE-LINK-MIB DEFINITIONS ::= BEGIN

IMPORTS
   MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
   mib-2, Unsigned32
      FROM SNMPv2-SMI

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

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

   InterfaceIndexOrZero, ifIndex
      FROM IF-MIB

   InetAddressType, InetAddress
      FROM INET-ADDRESS-MIB;

teLinkMIB MODULE-IDENTITY
   LAST-UPDATED "200304181200Z" "200304291200Z"  -- 18 29 April 2003 12:00:00 EST
   ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group"
   CONTACT-INFO
       "        Martin Dubuc
        Email:  dubuc.consulting@rogers.com

                Sudheer Dharanikota
        Email:  sudheer@avici.com

                Thomas D. Nadeau
        Email:  tnadeau@cisco.com

                Jonathan P. Lang
        Email:  jplang@ieee.org"  jplang@ieee.org

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

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

        This MIB module contains managed object definitions for
        MPLS traffic engineering links as defined in:
        Kompella, K., Rekhter, Y., Berger, L.,
        Link in
        'Link Bundling in MPLS Traffic Engineering
        Internet Draft <draft-ietf-mpls-bundling-04.txt>,
        July 2002." Engineering'."

   -- Revision history.
   REVISION
       "200304181200Z"
       "200304291200Z"  -- 18 29 April 2003 12:00:00 EST
   DESCRIPTION
       "Initial version published as RFC xxxx (to be assigned by RFC Editor)"
   ::= { mib-2 xxx mib-2 xxx } -- To be assigned by IANA (experimental 114 can be used
                     -- in the interim)

-- Textual Conventions

Priority ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "d"
   STATUS       current
   DESCRIPTION
       "This type is used to represent a priority. Each connection is
        assigned a priority. This priority is used when accounting for
        bandwidth on TE links or component links, for resource allocation
        and for rerouting purposes. Value 0 is the highest priority.
        Value 7 is the lowest priority."
   SYNTAX       Unsigned32 (0..7)

LinkProtection ::= TEXTUAL-CONVENTION
   STATUS       current
   DESCRIPTION
       "Link protection."
   SYNTAX       INTEGER {
                    primary(1),
                    secondary(2)
                }

SwitchingCapability ::= TEXTUAL-CONVENTION
   STATUS       current
   DESCRIPTION
       "Switching capability as specified in the 'OSPF Extensions in
        Support of Generalized MPLS' document. The values specified in
        this document are not contiguous."
   SYNTAX       INTEGER {
                    packetSwitch1(1),
                    packetSwitch2(2),
                    packetSwitch3(3),
                    packetSwitch4(4),
                    layer2Switch(51),
                    tdm(100),
                    lambdaSwitch(150),
                    fiberSwitch(200)
                }

LinkEncodingType ::= TEXTUAL-CONVENTION
   STATUS       current
   DESCRIPTION
       "Link encoding type as specified in 'GMPLS Signaling Functional
        Description' document. The values specified in this document are
        not contiguous."
   SYNTAX       INTEGER {
                    packet(1),
                    ethernet(2),
                    ansiEtsiPdh(3),
                    sdhItuSonetAnsi(5),
                    digitalWrapper(7),
                    lambda(8),
                    fiber(9),
                    fiberChannel(11)
                }

-- To be assigned by IANA (experimental 114 can be used
                     -- in the interim)

-- Textual Conventions

-- Top level components of this MIB module

-- Notifications
teLinkNotifications OBJECT IDENTIFIER ::= { teLinkMIB 0 }
-- Tables, Scalars
teLinkObjects       OBJECT IDENTIFIER ::= { teLinkMIB 1 }
-- Conformance
teLinkConformance   OBJECT IDENTIFIER ::= { teLinkMIB 2 }

-- TE Link Table

teLinkTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF TeLinkEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the grouping of component links into
        TE links and grouping of TE links into bundled links."
   ::= { teLinkObjects 1 }

teLinkEntry OBJECT-TYPE
   SYNTAX        TeLinkEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table exists for each ifEntry with an
        ifType of teLink(TBD), teLink(200), i.e. for every TE link. An ifEntry
        in the ifTable must exist before a teLinkEntry is created with
        the corresponding ifIndex. If a TE link entry in the ifTable is
        destroyed, then so is the corresponding entry in the
        teLinkTable. The administrative and operational status values
        are controlled from the ifEntry. If the link is unnumbered,
        ifIndex is also used as the outgoing interface identifier." ifEntry."
   INDEX         { ifIndex }
   ::= { teLinkTable 1 }

TeLinkEntry ::= SEQUENCE {
  teLinkIpAddrType
  teLinkAddressType            InetAddressType,
  teLinkIpAddr
  teLinkLocalIpAddr            InetAddress,
  teLinkRemoteIpAddr           InetAddress,
  teLinkMetric                 Unsigned32,
  teLinkMuxCapability          INTEGER,          SwitchingCapability,
  teLinkProtectionType         INTEGER,
  teLinkWorkingPriority        Unsigned32,        Priority,
  teLinkResourceClass          Unsigned32,
  teLinkIncomingIfId           InterfaceIndexOrZero,
  teLinkOutgoingIfId           InterfaceIndexOrZero,
  teLinkRowStatus              RowStatus,
  teLinkStorageType            StorageType
}

teLinkIpAddrType

teLinkAddressType OBJECT-TYPE
   SYNTAX        InetAddressType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For IPv4 and IPv6 numbered links, this object represents the
        IP address
       "The type associated with of Internet address for the TE link. For Only IPv4,
        IPv6 and unknown (for unnumbered links, a value of unknown(0) must links) need to be used." supported."
   ::= { teLinkEntry 1 }

teLinkIpAddr

teLinkLocalIpAddr OBJECT-TYPE
   SYNTAX        InetAddress
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For IPv4 and IPv6 numbered links, this object represents the
        local IP address associated with the TE link." link. For unnumbered
        link, the local address is not stored in this object, but
        rather in the teLinkOutgoingIfId object."
   ::= { teLinkEntry 2 }

teLinkRemoteIpAddr OBJECT-TYPE
   SYNTAX        InetAddress
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The remote IP address associated with the TE link (IPv4 and
        IPv6 numbered links)." links). For unnumbered links, the remote address
        is not stored in this object, but rather in the
        teLinkIncomingIfId object."
   ::= { teLinkEntry 3 }

teLinkMetric OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The traffic engineering metric for the TE link is
        derived from its component links. All component links
        within the TE link must have the same traffic
        engineering metric."
   REFERENCE
       "[BUNDLING]"
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING]
   ::= { teLinkEntry 4 }

teLinkMuxCapability OBJECT-TYPE
   SYNTAX        INTEGER {
                     packetSwitch1(1),
                     packetSwitch2(2),
                     packetSwitch3(3),
                     packetSwitch4(4),
                     layer2Switch(51),
                     tdm(100),
                     lambdaSwitch(150),
                     fiberSwitch(200)
                 }        SwitchingCapability
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies link multiplex capability of the
        TE link, which is derived from its component links. All
        component links within the same TE link must have the
        same link multiplex capability."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkEntry 5 }

teLinkProtectionType OBJECT-TYPE
   SYNTAX        INTEGER {
                     extraTraffic(1),
                     unprotected(2),
                     shared(3),
                     dedicated1For1(4),
                     dedicated1Plus1(5),
                     enhanced(6)
                 }
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies link protection type of the
        TE link." link. Description of the different protection types can be
        found in the 'Routing Extensions in Support of Generalized
        MPLS' document."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx and
        Routing Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF] and [ROUTING]
   ::= { teLinkEntry 6 }

teLinkWorkingPriority OBJECT-TYPE
   SYNTAX        Unsigned32 (0..7)        Priority
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This object represents a priority value such that a new
        connection with a higher priority, i.e. numerically lower than
        this value, is guaranteed to be setup on a primary link and
        not on a secondary link."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkEntry 7 }

teLinkResourceClass OBJECT-TYPE
   SYNTAX        Unsigned32
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the TE link resource class.
        The resource class is a 32 bit bitfield. The resource class for
        a link bundle is derived from the resource class of its
        TE links. All TE links within a link bundle must have the
        same resource class." class. Encoding of the resource class is described
        in the 'Traffic Engineering Extensions to OSPF Version 2'
        document."
   REFERENCE
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx and
        Traffic Engineering Extensions to OSPF Version 2, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING] and [OSPF]
   ::= { teLinkEntry 8 }

teLinkIncomingIfId OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For unnumbered links, the incoming interface is set to the
        outgoing interface identifier chosen by the neighboring LSR
        for the reverse link corresponding to this TE link." link. For
        numbered links, the address is stored in the teLinkRemoteIpAddr
        instead."
   REFERENCE
       "[BUNDLING]"
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING]
   ::= { teLinkEntry 9 }

teLinkOutgoingIfId OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "If the link is unnumbered, the outgoing interface identifier is
        set to the outgoing interface identifier chosen for the TE link
        by the advertising LSR." LSR. For numbered links, the address is
        stored in the teLinkLocalIpAddr instead."
   REFERENCE
       "[BUNDLING]"
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING]
   ::= { teLinkEntry 10 }

teLinkRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All read-create objects
        can only be changed when teLinkRowStatus is active." notInService(2)
        or notReady(3)."
   ::= { teLinkEntry 11 }

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

-- End of teLinkTable

-- TE Link Descriptor Table

teLinkDescriptorTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF TeLinkDescriptorEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the link descriptors associated with the
        TE links."
   ::= { teLinkObjects 2 }

teLinkDescriptorEntry OBJECT-TYPE
   SYNTAX        TeLinkDescriptorEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table is created for every TE link descriptor.
        An ifEntry in the ifTable must exist before a
        teLinkDescriptorEntry using the same ifIndex is created.
        ifType of ifEntry must be teLink(200).
        If a TE link entry in the ifTable is destroyed, then so are all
        entries in the teLinkDescriptorTable that use the ifIndex of
        this TE link."
   INDEX         { ifIndex, teLinkDescriptorId }
   ::= { teLinkDescriptorTable 1 }

TeLinkDescriptorEntry ::= SEQUENCE {
  teLinkDescriptorId           Unsigned32,
  teLinkEncodingType           INTEGER,
  teLinkDescrEncodingType      LinkEncodingType,
  teLinkDescrPriority          Priority,
  teLinkDescrMinResBandwidth   Unsigned32,
  teLinkMinReservableBandwidth Unsigned32,
  teLinkMaxReservableBandwidth
  teLinkDescrMaxResBandwidth   Unsigned32,
  teLinkDescrRowStatus         RowStatus,
  teLinkDescrStorageType       StorageType
}

teLinkDescriptorId OBJECT-TYPE
   SYNTAX        Unsigned32 (1..4294967295)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This object specifies the link descriptor identifier."
   ::= { teLinkDescriptorEntry 1 }

teLinkEncodingType

teLinkDescrEncodingType OBJECT-TYPE
   SYNTAX        INTEGER {
                     packet(1),
                     ethernet(2),
                     ansiEtsiPdh(3),
                     sdhItuSonetAnsi(5),
                     digitalWrapper(7),
                     lambda(8),
                     fiber(9),
                     fiberChannel(11)
                 }        LinkEncodingType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the TE link encoding type."
   REFERENCE
       "[RFC3471]"
       "Generalized MPLS Signaling Functional Description, RFC 3471"
   ::= { teLinkDescriptorEntry 2 }

teLinkDescrPriority OBJECT-TYPE
   SYNTAX        Unsigned32 (0..7)        Priority
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This object specifies the lowest priority at which that link
        encoding type is available."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkDescriptorEntry 3 }

teLinkMinReservableBandwidth

teLinkDescrMinResBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the minimum reservable bandwidth on
        the TE link. This is derived from the union of the
        minimum reservable bandwidth of all the component links
        associated with the TE link that can be used to carry
        live traffic. This value is an estimate in units of 1,000 bits
        per second."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkDescriptorEntry 4 }

teLinkMaxReservableBandwidth

teLinkDescrMaxResBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the maximum reservable bandwidth on
        the TE link. This is the union of the maximum reservable
        bandwidth of all the component links within the
        TE link that can be used to carry live traffic. This value
        is an estimate in units of 1,000 bits per second."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkDescriptorEntry 5 }

teLinkDescrRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object
        can only be changed when if teLinkDescrRowStatus is active." in active(1) state."
   ::= { teLinkDescriptorEntry 6 }

teLinkDescrStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        teLinkDescriptorTable. Conceptual rows having the value
        'permanent' need not allow write-access to any
        columnar object in the row."
   ::= { teLinkDescriptorEntry 7 }

-- End of teLinkDescriptorTable

-- TE Link Shared Risk Link Group Table

teLinkSrlgTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF TeLinkSrlgEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the SRLGs associated with TE links."
   ::= { teLinkObjects 3 }

teLinkSrlgEntry OBJECT-TYPE
   SYNTAX        TeLinkSrlgEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table contains information about a
        SRLG associated with a TE link.
        An ifEntry in the ifTable must exist before a
        teLinkSrlgEntry using the same ifIndex is created.
        ifType of ifEntry must be teLink(200).
        If a TE link entry in the ifTable is destroyed, then so are all
        entries in the teLinkSrlgTable that use the ifIndex of
        this TE link."
   INDEX         { ifIndex, srlg }
   ::= { teLinkSrlgTable 1 }

TeLinkSrlgEntry ::= SEQUENCE {
  srlg            Unsigned32,
  srlgRowStatus   RowStatus,
  srlgStorageType StorageType
}

srlg OBJECT-TYPE
   SYNTAX        Unsigned32 (0..4294967295)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This identifies a SRLG supported by the TE link." link. An SRLG is
        identified with a 32 bit number that is unique within an IGP
        domain. Zero is a valid SRLG number."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { teLinkSrlgEntry 1 }

srlgRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object can only
        be changed when modified if srlgRowStatus is active." active(1)."
   ::= { teLinkSrlgEntry 2 }

srlgStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        teLinkSrlgTable. Conceptual rows having the value
        'permanent' need not allow write-access to any
        columnar object in the row."
   ::= { teLinkSrlgEntry 3 }

-- End of teLinkSrlgTable

-- TE Link Bandwidth Table

teLinkBandwidthTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF TeLinkBandwidthEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the priority-based bandwidth table
        for TE links."
   ::= { teLinkObjects 4 }

teLinkBandwidthEntry OBJECT-TYPE
   SYNTAX        TeLinkBandwidthEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table contains information about
        the priority-based bandwidth of TE links. An ifEntry in the
        ifTable must exist before a teLinkBandwidthEntry using the
        same ifIndex is created. ifType of ifEntry must be teLink(200).
        If a TE link entry in the ifTable is destroyed, then so are
        all entries in the teLinkBandwidthTable that use the ifIndex of
        this TE link."
   INDEX         { ifIndex, teLinkPriority }
   ::= { teLinkBandwidthTable 1 }

TeLinkBandwidthEntry ::= SEQUENCE {
  teLinkPriority             Unsigned32,             Priority,
  teLinkUnreservedBandwidth  Unsigned32,
  teLinkMaximumLspBandwidth  Unsigned32,
  teLinkBandwidthRowStatus   RowStatus,
  teLinkBandwidthStorageType StorageType
}

teLinkPriority OBJECT-TYPE
   SYNTAX        Unsigned32 (1..8)        Priority
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This attribute specifies the priority. It should be mapped A value of 0 is valid
        as specified in the 'Traffic Engineering Extensions to OSPF
        Version 2' document."
   REFERENCE
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx and
        Traffic Engineering Extensions to a OSPF Version 2, RFC xxxx"
       -- RFC Editor to fill in RFC number between 0 that will be assigned to
       -- [GMPLS-OSPF] and 7"
   REFERENCE
       "[GMPLS-OSPF]" [OSPF]
   ::= { teLinkBandwidthEntry 1 }

teLinkUnreservedBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This attribute specifies the TE link unreserved
        bandwidth at priority p. It is the sum of the unreserved
        bandwidths at priority p of all component links associated
        with the TE link (excludes all links that are strictly
        used as protecting links). This value is an estimate in units
        of 1,000 bits per second."
   REFERENCE
       "[BUNDLING]"
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING]
   ::= { teLinkBandwidthEntry 2 }

teLinkMaximumLspBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the TE link maximum
        LSP bandwidth at priority p. It is the maximum of all
        maximum LSP bandwidth at priority p of the component links
        associated with the TE link (excludes all links that are
        strictly used as protecting links). This value is an estimate
        in units of 1,000 bits per second."
   REFERENCE
       "[BUNDLING]"
       "Link Bundling in MPLS Traffic Engineering, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [BUNDLING]
   ::= { teLinkBandwidthEntry 3 }

teLinkBandwidthRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object
        can only be changed modified when teLinkBandwidthRowStatus is active." active(1)."
   ::= { teLinkBandwidthEntry 4 }

teLinkBandwidthStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        teLinkBandwidthTable. Conceptual rows having the value
        'permanent' need not allow write-access to any
        columnar object in the row."
   ::= { teLinkBandwidthEntry 5 }

-- End of teLinkBandwidthTable

-- Component Link Table

componentLinkTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF ComponentLinkEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the component link parameters."
   ::= { teLinkObjects 5 }

componentLinkEntry  OBJECT-TYPE
   SYNTAX        ComponentLinkEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table exists for each ifEntry that represents
        a component link. An ifEntry must exist in the ifTable
        before a componentLinkEntry is created with the
        corresponding ifIndex. ifEntry's ifType can be
        of any interface type which has been defined for TE Link
        interworking. Examples include ATM, Frame Relay, Ethernet, etc.
        If an entry representing a component link is destroyed in the
        ifTable, then so is the corresponding entry in the
        componentLinkTable. The administrative and operational status
        values are controlled from the ifEntry."
   INDEX         { ifIndex }
   ::= { componentLinkTable 1 }

ComponentLinkEntry ::= SEQUENCE {
  componentLinkMuxCapability       INTEGER,       SwitchingCapability,
  componentLinkPreferredProtection INTEGER, LinkProtection,
  componentLinkCurrentProtection   INTEGER,   LinkProtection,
  componentLinkRowStatus           RowStatus,
  componentLinkStorageType         StorageType
}

componentLinkMuxCapability OBJECT-TYPE
   SYNTAX        INTEGER {
                     packetSwitch1(1),
                     packetSwitch2(2),
                     packetSwitch3(3),
                     packetSwitch4(4),
                     layer2Switch(51),
                     tdm(100),
                     lambdaSwitch(150),
                     fiberSwitch(200)
                 }        SwitchingCapability
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies link multiplexing capabilities of the
        component link."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkEntry 1 }

componentLinkPreferredProtection OBJECT-TYPE
   SYNTAX        INTEGER {
                     primary(1),
                     secondary(2)
                 }        LinkProtection
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies whether this component link is
        a primary or secondary entity."
   ::= { componentLinkEntry 2 }

componentLinkCurrentProtection OBJECT-TYPE
   SYNTAX        INTEGER {
                     primary(1),
                     secondary(2)
                 }        LinkProtection
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This attribute specifies whether this component link is
        currently used as primary or secondary link."
   ::= { componentLinkEntry 3 }

componentLinkRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object
        can only be changed modified when componentLinkRowStatus is active." active(1)."
   ::= { componentLinkEntry 4 }

componentLinkStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        componentLinkTable. Conceptual rows having the value
        'permanent' need not allow write-access to any
        columnar object in the row."
   ::= { componentLinkEntry 5 }

-- End of componentLinkTable

-- Component Link Descriptor Table

componentLinkDescriptorTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF ComponentLinkDescriptorEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the link descriptors associated with the
        component links."
   ::= { teLinkObjects 6 }

componentLinkDescriptorEntry OBJECT-TYPE
   SYNTAX        ComponentLinkDescriptorEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table is created for every component link
        descriptor. An ifEntry in the ifTable must exist before a
        componentLinkDescriptorEntry using the same ifIndex is created.
        ifEntry's ifType can be of any interface type which has been
        defined for TE Link interworking. Examples include ATM, Frame
        Relay, Ethernet, etc. If a component link entry in the ifTable
        is destroyed, then so are all entries in the
        componentLinkDescriptorTable that use the ifIndex of this
        component link."
   INDEX         { ifIndex, componentLinkDescrId }
   ::= { componentLinkDescriptorTable 1 }

ComponentLinkDescriptorEntry ::= SEQUENCE {
  componentLinkDescrId            Unsigned32,
  componentLinkEncodingType        INTEGER,
  componentLinkDescrEncodingType  LinkEncodingType,
  componentLinkDescrPriority      Priority,
  componentLinkDescrMinBandwidth  Unsigned32,
  componentLinkMinReservBandwidth  Unsigned32,
  componentLinkMaxReservBandwidth
  componentLinkDescrMaxBandwidth  Unsigned32,
  componentLinkDescrRowStatus     RowStatus,
  componentLinkDescrStorageType   StorageType
}

componentLinkDescrId OBJECT-TYPE
   SYNTAX        Unsigned32 (1..4294967295)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This object specifies the link descriptor identifier."
   ::= { componentLinkDescriptorEntry 1 }

componentLinkEncodingType

componentLinkDescrEncodingType OBJECT-TYPE
   SYNTAX        INTEGER {
                     packet(1),
                     ethernet(2),
                     ansiEtsiPdh(3),
                     sdhItuSonetAnsi(5),
                     digitalWrapper(7),
                     lambda(8),
                     fiber(9),
                     fiberChannel(11)
                 }        LinkEncodingType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the component link encoding type."
   REFERENCE
       "[RFC3471]"
       "Generalized MPLS Signaling Functional Description, RFC 3471"
   ::= { componentLinkDescriptorEntry 2 }

componentLinkDescrPriority OBJECT-TYPE
   SYNTAX        Unsigned32 (0..7)        Priority
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This object specifies the lowest priority at which that link
        encoding type is available for the component link."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkDescriptorEntry 3 }

componentLinkMinReservBandwidth

componentLinkDescrMinBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the minimum reservable bandwidth on
        the component link. This value is an estimate
        in units of 1,000 bits per second."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkDescriptorEntry 4 }

componentLinkMaxReservBandwidth

componentLinkDescrMaxBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the maximum reservable bandwidth on
        the component link. This value is an estimate
        in units of 1,000 bits per second."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkDescriptorEntry 5 }

componentLinkDescrRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object
        can only be changed modified when componentLinkDescrRowStatus
        is active." active(1)."
   ::= { componentLinkDescriptorEntry 6 }

componentLinkDescrStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        componentLinkDescriptorTable. Conceptual rows
        having the value 'permanent' need not allow write-access
        to any columnar object in the row."
   ::= { componentLinkDescriptorEntry 7 }

-- End of componentLinkDescriptorTable

-- Component Link Bandwidth Table

componentLinkBandwidthTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF ComponentLinkBandwidthEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the priority-based bandwidth
        for component links."
   ::= { teLinkObjects 7 }

componentLinkBandwidthEntry OBJECT-TYPE
   SYNTAX        ComponentLinkBandwidthEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table contains information about
        the priority-based bandwidth on component links.
        An ifEntry in the ifTable must exist before a
        componentLinkBandwidthEntry using the same ifIndex is
        created. ifEntry's ifType can be of any interface type which
        has been defined for TE Link interworking. Examples include
        ATM, Frame Relay, Ethernet, etc. If a component link entry in
        the ifTable is destroyed, then so are all entries in the
        componentLinkBandwidthTable that use the ifIndex of
        this component link."
   INDEX         { ifIndex, componentLinkPriority }
   ::= { componentLinkBandwidthTable 1 }

ComponentLinkBandwidthEntry ::= SEQUENCE {
  componentLinkPriority            Unsigned32,            Priority,
  componentLinkUnreservedBandwidth Unsigned32,
  componentLinkMaximumLspBandwidth Unsigned32,
  componentLinkBandwidthRowStatus  RowStatus,
  componentLinkBwStorageType       StorageType
}

componentLinkPriority OBJECT-TYPE
   SYNTAX        Unsigned32 (1..8)        Priority
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This attribute specifies the priority. It should be mapped A value of 0 is valid
        as specified in the 'Traffic Engineering Extensions to a OSPF
        Version 2' document."
   REFERENCE
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx and
        Traffic Engineering Extensions to OSPF Version 2, RFC xxxx"
       -- RFC Editor to fill in RFC number between 0 that will be assigned to
       -- [GMPLS-OSPF] and 7."
   REFERENCE
       "[GMPLS-OSPF]" [OSPF]
   ::= { componentLinkBandwidthEntry 1 }

componentLinkUnreservedBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This attribute specifies the component link unreserved
        bandwidth at priority p. This value is an estimate
        in units of 1,000 bits per second."
   REFERENCE
       "[GMPLS-OPSF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkBandwidthEntry 2 }

componentLinkMaximumLspBandwidth OBJECT-TYPE
   SYNTAX        Unsigned32
   UNITS         "thousand bps"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This attribute specifies the component link maximum
        LSP bandwidth at priority p. This value is an estimate
        in units of 1,000 bits per second."
   REFERENCE
       "[GMPLS-OSPF]"
       "OSPF Extensions in Support of Generalized MPLS, RFC xxxx"
       -- RFC Editor to fill in RFC number that will be assigned to
       -- [GMPLS-OSPF]
   ::= { componentLinkBandwidthEntry 3 }

componentLinkBandwidthRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable is used to create, modify, and/or
        delete a row in this table. All No read-create objects object can only
        be changed modified when componentLinkBandwidthRowStatus is active."
        active(1)."
   ::= { componentLinkBandwidthEntry 4 }

componentLinkBwStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this conceptual row in the
        componentLinkBandwidthTable. Conceptual rows
        having the value 'permanent' need not allow write-access
        to any columnar object in the row."
   ::= { componentLinkBandwidthEntry 5 }

-- End of componentLinkBandwidthTable

-- Notification Configuration

teLinkNotifEnable

teLinkNotificationsEnabled OBJECT-TYPE
   SYNTAX        TruthValue
   MAX-ACCESS    read-write
   STATUS        current
   DESCRIPTION
       "If this object is true, then it enables the
        generation of the TE link notifications,
        otherwise these notifications are not emitted."
   DEFVAL        { false }
   ::= { teLinkObjects 8 }

-- Notifications

-- TE Link Notifications

linkBundleMismatch NOTIFICATION-TYPE
   OBJECTS       { teLinkIpAddrType, teLinkIpAddr, teLinkRemoteIpAddr teLinkAddressType,
                   teLinkLocalIpAddr, teLinkRemoteIpAddr,
                   teLinkIncomingIfId, teLinkOutgoingIfId }
   STATUS        current
   DESCRIPTION
       "This notification is generated when a mismatch is found on a
        bundled link. Such mismatch can be detected for instance if one
        of the traffic engineering parameters is not consistent across
        all TE links within a bundled link (resource class, etc.)."
   ::= { teLinkNotifications 1 }

-- End of notifications

-- Module compliance

teLinkGroups
   OBJECT IDENTIFIER ::= { teLinkConformance 1 }

teLinkCompliances
   OBJECT IDENTIFIER ::= { teLinkConformance 2 }

teLinkFullModuleCompliance

teLinkModuleFullCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
       "Compliance statement for agents that support the
        configuration and monitoring of TE Link MIB." MIB module."
   MODULE -- this module

      -- The mandatory groups have to be implemented
      -- by all devices supporting TE links. However, they may all
      -- be supported as read-only objects in the case where automatic
      -- configuration is supported.

      MANDATORY-GROUPS    { teLinkGroup,
                            teLinkBandwidthGroup,
                            componentLinkBandwidthGroup }
      GROUP teLinkSrlgGroup
      DESCRIPTION
          "This group is mandatory for G-MPLS enabled devices."

      GROUP teLinkNotificationGroup
      DESCRIPTION
          "This group is mandatory for equipment that support
           TE link notifications."

      -- teLinkTable

      OBJECT      teLinkIpAddrType      teLinkAddressType
      SYNTAX      INTEGER { unknown(0), ipv4(1), ipv6(2) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "The dns(16) address type need not be supported.
           The
          "Only ipv4(1) and ipv6(2) address types need not to be
           supported if for numbered links are not supported. The links. For unnumbered links, the
           unknown(0) address type need not needs to be supported if
           unnumbered links are not supported."

      OBJECT      teLinkIpAddr      teLinkLocalIpAddr
      SYNTAX      InetAddress (SIZE(0|4|16))
      DESCRIPTION
          "Size of TE link IP address depends on type of TE link.
           TE link IP address size is zero if link is unnumbered,
           four if link IP address is IPv4 and sixteen if link IP
           address is IPv6."

      OBJECT      teLinkRemoteIpAddr
      SYNTAX      InetAddress (SIZE(0|4|16))
      DESCRIPTION
          "Size of TE link IP address depends on type of TE link.
           TE link IP address size is zero if link is unnumbered,
           four if link IP address is IPv4 and sixteen if link IP
           address is IPv6."

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

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

      OBJECT      teLinkRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) state need not be supported."

      OBJECT      teLinkStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

      -- teLinkDescriptorTable

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

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

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

      OBJECT      teLinkMaxReservableBandwidth
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access IPv4 and sixteen if link IP
           address is not required." IPv6."

      OBJECT      teLinkDescrRowStatus      teLinkRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) state and createAndWait(5) states need
           not be supported."

      OBJECT      teLinkDescrStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

      -- teLinkSrlgTable teLinkDescriptorTable

      OBJECT      srlgRowStatus      teLinkDescrRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
           not be supported."

      OBJECT      srlgStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

      -- teLinkBandwidthTable

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

      -- teLinkSrlgTable

      OBJECT      teLinkBandwidthRowStatus      srlgRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
           not be supported."

      -- teLinkBandwidthTable

      OBJECT      teLinkBandwidthStorageType      teLinkBandwidthRowStatus
      SYNTAX      INTEGER { other(1) active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "Only other(1) needs to
          "The notReady(3) and createAndWait(5) states need
           not be supported."

      -- componentLinkTable

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

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

      OBJECT      componentLinkRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
           not be supported."

      OBJECT      componentLinkStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

      -- componentLinkDescriptorTable

      OBJECT      componentLinkDescrRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) state and createAndWait(5) states need
           not be supported."

      OBJECT      componentLinkDescrStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

      -- componentLinkBandwidthTable

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

      OBJECT      componentLinkBandwidthRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }
      DESCRIPTION
          "The notReady(3) and createAndWait(5) states need
           not be supported."

      OBJECT      componentLinkBwStorageType
      SYNTAX      INTEGER { other(1) }
      DESCRIPTION
          "Only other(1) needs to be supported."

   ::= { teLinkCompliances 1 }

teLinkMonModuleCompliance

teLinkModuleReadOnlyCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
       "Compliance statement for agents that support the
        monitoring of TE link MIB." MIB module."
   MODULE -- this module

      -- The mandatory groups have to be implemented
      -- by all devices supporting TE links. However, they may all
      -- be supported as read-only objects in the case where manual
      -- configuration is unsupported.

      MANDATORY-GROUPS    { teLinkGroup,
                            teLinkBandwidthGroup,
                            componentLinkBandwidthGroup }

      GROUP teLinkSrlgGroup
      DESCRIPTION
          "This group is mandatory for G-MPLS enabled devices."

      GROUP teLinkNotificationGroup
      DESCRIPTION
          "This group is optional."

      -- teLinkTable

      OBJECT      teLinkIpAddrType      teLinkAddressType
      SYNTAX      INTEGER { unknown(0), ipv4(1), ipv6(2) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "The dns(16) address type need not be supported.
           The
          "Only ipv4(1) and ipv6(2) address types need not to be
           supported if for numbered links are not supported. The links. For unnumbered links, the
           unknown(0) address type need not needs to be supported if
           unnumbered links are not supported."

      OBJECT      teLinkIpAddr      teLinkLocalIpAddr
      SYNTAX      InetAddress (SIZE(0|4|16))
      MIN-ACCESS  read-only
      DESCRIPTION
          "Size of TE link IP address depends on type of TE link.
           TE link IP address size is zero if link is unnumbered,
           four if link IP address is IPv4 and sixteen if link IP
           address is IPv6."
      OBJECT      teLinkRemoteIpAddr
      SYNTAX      InetAddress (SIZE(0|4|16))
      MIN-ACCESS  read-only
      DESCRIPTION
          "Size of TE link IP address depends on type of TE link.
           TE link IP address size is zero if link is unnumbered,
           four if link IP address is IPv4 and sixteen if link IP
           address is IPv6."

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

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

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

      OBJECT      teLinkRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) active(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "The notReady(3) state need
          "Write access is not required and active(1) is the
           only status that needs to be supported."

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

      -- teLinkDescriptorTable

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

      OBJECT      teLinkDescrPriority
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required."
      OBJECT      teLinkMinReservableBandwidth      teLinkDescrMinResBandwidth
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required."

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

      OBJECT      teLinkDescrRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) active(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "The notReady(3) state need
          "Write access is not be supported."

      OBJECT      teLinkDescrStorageType
      SYNTAX      INTEGER { other(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1) required and active(1) is the
           only status that needs to be supported."

      -- teLinkSrlgTable

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

      -- teLinkSrlgTable

      OBJECT      srlgStorageType      srlgRowStatus
      SYNTAX      INTEGER { other(1) active(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1)
          "Write access is not required and active(1) is the
           only status that needs to be supported."

      -- teLinkBandwidthTable

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

      -- teLinkBandwidthTable

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

      OBJECT      teLinkBandwidthStorageType      teLinkBandwidthRowStatus
      SYNTAX      INTEGER { other(1) active(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1)
          "Write access is not required and active(1) is the
           only status that needs to be supported."

      -- componentLinkTable

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

      -- componentLinkTable

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

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

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

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

      -- componentLinkDescriptorTable

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

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

      OBJECT      componentLinkMinReservBandwidth      componentLinkDescrMinBandwidth
      MIN-ACCESS  read-only
      DESCRIPTION
          "Write access is not required."
      OBJECT      componentLinkDescrRowStatus
      SYNTAX      INTEGER { active(1), notInService(2),
                            createAndGo(4), destroy(6) }      componentLinkDescrMaxBandwidth
      MIN-ACCESS  read-only
      DESCRIPTION
          "The notReady(3) state need
          "Write access is not be supported." required."

      OBJECT      componentLinkDescrStorageType      componentLinkDescrRowStatus
      SYNTAX      INTEGER { other(1) active(1) }
      MIN-ACCESS  read-only
      DESCRIPTION
          "Only other(1)
          "Write access is not required and active(1) is the
           only status that needs to be supported."

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

      -- componentLinkBandwidthTable

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

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

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

   ::= { teLinkCompliances 2 }

-- Units of conformance

teLinkGroup OBJECT-GROUP
   OBJECTS { teLinkIpAddrType,
             teLinkIpAddr, teLinkAddressType,
             teLinkLocalIpAddr,
             teLinkRemoteIpAddr,
             teLinkMetric,
             teLinkMuxCapability,
             teLinkProtectionType,
             teLinkWorkingPriority,
             teLinkResourceClass,
             teLinkIncomingIfId,
             teLinkOutgoingIfId,
             teLinkRowStatus,
             teLinkStorageType,
             teLinkEncodingType,
             teLinkDescrEncodingType,
             teLinkDescrPriority,
             teLinkMinReservableBandwidth,
             teLinkMaxReservableBandwidth,
             teLinkDescrMinResBandwidth,
             teLinkDescrMaxResBandwidth,
             teLinkDescrRowStatus,
             teLinkDescrStorageType,
             componentLinkMuxCapability,
             componentLinkPreferredProtection,
             componentLinkCurrentProtection,
             componentLinkRowStatus,
             componentLinkStorageType,
             teLinkNotifEnable
             teLinkNotificationsEnabled
           }

   STATUS  current
   DESCRIPTION
          "Collection of objects needed for the monitoring of
           resources associated with TE links."
   ::= { teLinkGroups 1 }

teLinkSrlgGroup OBJECT-GROUP
   OBJECTS { srlgRowStatus,
             srlgStorageType
           }

   STATUS  current
   DESCRIPTION
          "Collection of objects needed for the monitoring of
           SRLG resources associated with TE links."
   ::= { teLinkGroups 2 }

teLinkBandwidthGroup OBJECT-GROUP
   OBJECTS { teLinkUnreservedBandwidth,
             teLinkMaximumLspBandwidth,
             teLinkBandwidthRowStatus,
             teLinkBandwidthStorageType
           }

   STATUS  current
   DESCRIPTION
          "Collection of objects needed for the monitoring of
           the priority-based bandwidth resources associated with
           TE links and component links."
   ::= { teLinkGroups 3 }

componentLinkBandwidthGroup OBJECT-GROUP
   OBJECTS { componentLinkEncodingType, componentLinkDescrEncodingType,
             componentLinkDescrPriority,
             componentLinkMinReservBandwidth,
             componentLinkMaxReservBandwidth,
             componentLinkDescrMinBandwidth,
             componentLinkDescrMaxBandwidth,
             componentLinkDescrRowStatus,
             componentLinkDescrStorageType,
             componentLinkUnreservedBandwidth,
             componentLinkMaximumLspBandwidth,
             componentLinkBandwidthRowStatus,
             componentLinkBwStorageType
           }

   STATUS  current
   DESCRIPTION
          "Collection of objects needed for the monitoring of
           bandwidth parameters associated with component links."
   ::= { teLinkGroups 4 }

teLinkNotificationGroup NOTIFICATION-GROUP
   NOTIFICATIONS { linkBundleMismatch }
   STATUS  current
   DESCRIPTION
          "Set of notifications implemented in this module.
           None is mandatory."
   ::= { teLinkGroups 5 }

-- End of TE-LINK-MIB
END

11.

10.  Intellectual Property Considerations

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to per-
   tain 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.  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 implementers 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 which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.

12.  Security Considerations

   It is clear that this MIB is potentially useful for monitoring of
   link bundling enabled devices. This MIB can also be used for configu-
   ration 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 to practice
   this standard.  Please address the ability information to configure a device - or which might result from opera-
   tor error, which is beyond the scope of any security architecture. IETF Executive
   Director.

11.  Security Considerations

   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 environ-
   ment without proper protection can have a negative effect on network
   operations. The use These are the tables and objects and their sensitiv-
   ity/vulnerability:

   -  Tables in this MIB module are used for routing purposes.
      Unauthorized changes to attributes of SNMP Version 3 these tables can disrupt
      resource allocation in the network.

   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 recommended thus important to con-
   trol even GET and/or NOTIFY access to these objects and possibly to
   even encrypt the values of these objects when sending them over prior ver-
   sions, for configuration control, as its security model is improved.

   SNMPv1 or SNMPv2 the
   network via SNMP. These are by themselves not the tables and objects and their sensi-
   tivity/vulnerability:

   -  IP address entries in the teLinkTable (teLinkLocalIpAddr and
      teLinkRemoteIpAddr) may reveal the internals of a secure environment. network provider
      IP address space.

   SNMP versions prior to SNMPv3 did not include adequate security.
   Even if the network itself is secure (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) 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), includ-
   ing full support for the User-based Security Model [RFC2574] SNMPv3 cryptographic mechanisms (for authen-
   tication and the View-based Access
   Control [RFC2575] privacy).

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

   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 can be used to derive the network topology, e.g. list of
   nodes and their IP address (teLinkTable), list of component links
   (componentLinkTable) in addition to usage of network resources
   (teLinkBandwidthTable and componentLinkBandwidthTable).  Allowing
   uncontrolled access to these objects could result in malicious and
   unwanted disruptions of network traffic, incorrect network configura-
   tion or theft of competitive business information.  There are no to the objects only
   to those principals (users) that are particularly sensitive in their own right, such as
   passwords have legitimate rights to indeed GET
   or monetary amounts.

13. SET (change/create/delete) them.

12.  Acknowledgments

   The general structure of this draft has been modeled around draft-
   ietf-mpls-lsr-mib-06.txt. The authors would like to acknowlegde acknowledge the contribution of Dmitry
   Ryumkin.

14.

13.  References

14.1.

13.1.  Normative References

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

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

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

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

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

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

   [RFC3471]     Ashwood-Smith, P., Banarjee, A., Berger, L.,
                 Bernstein, G., Drake, J., Fan, Y., Kompella, K.,
                 Mannie, E., Lang, J., Rajagopalan, B., Rekhter, Y.,
                 Saha, D., Sharma, V., Swallow, G., and Tang, Z.,
                 "Generalized MPLS Signaling Functional Description",
                 RFC 3471, January 2003.

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

   [BUNDLING]    Kompella, K., Rekhter, Y., and Berger, L.,
                 "Link Bundling in MPLS Traffic Engineering",
                 Internet Draft <draft-ietf-mpls-bundle-04.txt>,
                 July 2002.

   [GMPLS-OSPF]  Kompella, K., Rekhter, Y., Banerjee, A. et al, "OSPF
                 Extensions in Support of Generalized MPLS", Internet
                 Draft <draft-ietf-ccamp-ospf-gmpls-extensions-09.txt>,
                 December 2002.

   [IANAFamily]  Internet Assigned Numbers Authority (IANA), ADDRESS
                 FAMILY NUMBERS, (http://www.isi.edu/in-
                 notes/iana/assignements/address-family-numbers),
                 for

   [IANAifType]  "IANAifType MIB see:
                 ftp://ftp.isi.edu/mib/ianaaddressfamilynumbers.mib Module",
                 http://www.iana.org/assignments/ianatype-mib.

   [LMP]         Lang, J., Mitra, K., Drake, J., Kompella, K.,
                 Rekhter, Y., Berger, L., Rajagopalan, B.,
                 Basak, D., Sandick, H., Zinin, A.,
                 Rajagopalan, B., and Ramamoorthi, S.,
                 "Link Management Protocol",
                 Internet Draft <draft-ccamp-lmp-08.txt>,
                 March 2003.

   [OSPF]        Katz, D., Yeung, D., and Kompella, K., "Traffic
                 Engineering Extensions to OSPF", Internet Draft
                 <draft-katz-yeung-ospf-traffic-09.txt>, October 2002.

14.2.  Informative References

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

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

[RFC1212]     Rose, M., and K. McCloghrie, "Concise MIB Definitions",
              STD 16, RFC 1212, March 1991.

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

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

[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 Rekhter, Y., "Routing Extensions in
                 Support 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 1999. Generalized MPLS", Internet Draft
                 <draft-ietf-ccamp-gmpls-routing-05.txt>, August 2002.

13.2.  Informative References

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

[GMPLS-ARCH]  Mannie, E., Ashwood-Smith, P., Awduche, D.,
              Banarjee, A., Basak, D., Berger, L., Bernstein, G.,
              Dharanikota, S., Drake, J., Fan, Y., Fedyk, D.,
              Grammel, G., Guo, D., Kompella, K., Kullberg, A.,
              Lang, J., Liaw, F., Nadeau, T., Ong, L.,
              Papadimitriou, D., Pendarakis, D., Rajagopalan, B.,
              Rekhter, Y., Saha, D., Sandick, H., Sharma, V.,
              Swallow, G., Tang, Z., Yates, J., Young, G., Yu, J.,
              Zinin, A., "Generalized Multi-Protocol Label Switching
              (GMPLS) Architecture", Internet Draft
              <draft-ietf-ccamp-gmpls-architecture-05.txt>,
              March 2003.

15.

14.  Authors' Addresses

Martin Dubuc                         Thomas D. Nadeau
Email: dubuc.consulting@rogers.com   Cisco Systems, Inc.
                                     300 Apollo Drive
                                     Chelmsford, MA 01824
                                     Phone: +1-978-244-3051
                                     Email: tnadeau@cisco.com

Sudheer Dharanikota                  Jonathan P. Lang
Avici Systems, Inc.                  Rincon Networks, Inc.
101 Billerica Avenue                 110 El Paseo
N Billerica, MA 08162                Santa Barbara, CA 93101
Email: sudheer@avici.com             Email: jplang@ieee.org

16.

15.  Full Copyright Statement

   Copyright (C) The Internet Society (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 docu-
   ment 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 develop-
   ing 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.