RFC4220

From RFC-Wiki

Network Working Group M. Dubuc Request for Comments: 4220 Consultant Category: Standards Track T. Nadeau

                                                       Cisco Systems
                                                             J. Lang
                                                         Sonos, Inc.
                                                       November 2005
      Traffic Engineering Link Management Information Base

Status of This Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright (C) The Internet Society (2005).

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 (TE) document.

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.

Introduction

OSPF RFC3630, Generalized MPLS (GMPLS) RFC3471, and the Link Management Protocol (LMP) RFC4204 use the concept of traffic engineering (TE) links to abstract link properties. The effect of this approach is a reduction in the amount of routing information exchanged in the network, which improves routing scalability. In addition, the use of TE links allows the implementation of new capabilities such as link protection.

In this document, we present a MIB module that can be used to manage TE links and their extension, the bundled link. This MIB module enables both the configuration and the performance monitoring of TE links and the 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 RFC2119.

Terminology

This document uses terminology from the documents describing link bundling RFC4201 and GMPLS RFC3945.

The link bundling feature is designed to aggregate one or more similar entities between a node pair into a bundled link RFC4201. In RFC 4201, those entities are referred to as TE links. A TE link is a subinterface capable of carrying MPLS traffic engineered traffic. A TE Link may be comprised of only one underlying component link. In cases where more than one component links are to be combined, multiple component links should be created with differing priorities to indicate hot-standby or parallel utilization.

A bundled link is another kind of Traffic Engineering (TE) link (see RFC4203). A link bundle is a subinterface that binds 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. Furthermore, if there are more than one TE links 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 that it binds together.

Feature Checklist

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

- The MIB module supports the management of TE links, including

  bundled links.

- Support is provided for configuration of traffic engineering

  parameters associated with TE links.

- The MIB module is used to monitor the priority-based component

  link and TE link bandwidth values.

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.

Brief Description of MIB Objects

Sections 6.1 - 6.4 describe objects pertaining to TE links while Sections 6.5 - 6.7 describe objects pertaining to component links. The MIB objects were derived from the link bundling document RFC4201.

teLinkTable

This table represents the TE links, including bundled links, and their generic traffic engineering parameters.

teLinkDescriptorTable

This table represents the TE link interface switching capability descriptors.

teLinkSrlgTable

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

teLinkBandwidthTable

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

componentLinkTable

This table enumerates the component links and their generic traffic engineering parameters.

componentLinkDescriptorTable

This table enumerates the interface switching capability descriptors that each component link supports.

componentLinkBandwidthTable

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

Component links that belong to the same TE link must be compatible. 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 engineering parameters (resource class, link metric, and protection type).

The link descriptors of the teLinkDescriptorTable can be derived from the link descriptors of the componentLinkDescrTable.

Some of the bandwidth parameters of the teLinkTable, teLinkDescriptorTable, teLinkBandwidthTable are derived from the bandwidth parameters of the componentLinkTable, componentLinkDescriptorTable, and componentLinkBandwidthTable (maximum reservable bandwidth, minimum LSP bandwidth, maximum LSP bandwidth at specified priority, and unreserved bandwidth).

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

8.2 provides more details on the use of the ifStackTable to establish relationships between bundled links, TE links, and component links.

Suppose that one would like to manually create a bundled link out of two 1:1 TE links, as depicted in the figure in Section 8.2. 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                        = 2,
     teLinkAddressType              = unknown(0),
     teLinkLocalIpAddr              = H,
     teLinkRemoteIpAddr             = H,
     teLinkMetric                   = 5,
     teLinkProtectionType           = dedicated1For1(4),
     teLinkWorkingPriority          = 7,
     teLinkResourceClass            = 3,
     teLinkIncomingIfId             = 0,
     teLinkOutgoingIfId             = 2,
     teLinkRowStatus                = createAndGo(4),
     teLinkStorageType              = nonVolatile(3)
  }
  In ifStackTable:
  {
     ifStackHigherLayer             = 0,
     ifStackLowerLayer              = 2,
     ifStackStatus                  = createAndGo(4)
  }

Next, the two TE links are created.

  In teLinkTable:
  {
     ifIndex                        = 3,
     teLinkAddressType              = unknown(0),
     teLinkLocalIpAddr              = H,
     teLinkRemoteIpAddr             = H,
     teLinkMetric                   = 5,
     teLinkProtectionType           = unprotected(2),
     teLinkWorkingPriority          = 7,
     teLinkResourceClass            = 3,
     teLinkIncomingIfId             = 0,
     teLinkOutgoingIfId             = 3,
     teLinkRowStatus                = createAndGo(4),
     teLinkStorageType              = nonVolatile(3)
  }
  In ifStackTable:
  {
     ifStackHigherLayer             = 2,
     ifStackLowerLayer              = 3,
     ifStackStatus                  = createAndGo(4)
  }
  In teLinkTable:
  {
     ifIndex                        = 4,
     teLinkAddressType              = unknown(0),
     teLinkLocalIpAddr              = H,
     teLinkRemoteIpAddr             = H,
     teLinkMetric                   = 5,
     teLinkProtectionType           = unprotected(2),
     teLinkWorkingPriority          = 7,
     teLinkResourceClass            = 3,
     teLinkIncomingIfId             = 0,
     teLinkOutgoingIfId             = 4,
     teLinkRowStatus                = createAndGo(4),
     teLinkStorageType              = nonVolatile(3)
  }
  In ifStackTable:
  {
     ifStackHigherLayer             = 2,
     ifStackLowerLayer              = 4,
     ifStackStatus                  = createAndGo(4)
  }

We assign SRLGs to the TE links.

  In the teLinkSrlgTable:
  {
     ifIndex                        = 3,
     teLinkSrlg                     = 10,
     teLinkSrlgRowStatus            = createAndGo(4),
     teLinkSrlgStorageType          = nonVolatile(3)
  }
  In the teLinkSrlgTable:
  {
     ifIndex                        = 4,
     teLinkSrlg                     = 50,
     teLinkSrlgRowStatus            = createAndGo(4),
     teLinkSrlgStorageType          = nonVolatile(3)
  }

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

Next, for each unbundled TE link, a component link is created. An ifEntry with the same ifIndex needs to be created beforehand.

  In componentLinkTable:
  {
     ifIndex                          = 5,
     componentLinkPreferredProtection = primary(1),
     componentLinkRowStatus           = createAndGo(4),
     componentLinkStorageType         = nonVolatile(3)
  }
  In ifStackTable:
  {
     ifStackHigherLayer             = 3,
     ifStackLowerLayer              = 5,
     ifStackStatus                  = createAndGo(4)
  }
  In componentLinkTable:
  {
     ifIndex                          = 6,
     componentLinkPreferredProtection = secondary(2),
     componentLinkRowStatus           = createAndGo(4)
     componentLinkStorageType         = nonVolatile(3)
  }
  In ifStackTable:
  {
     ifStackHigherLayer             = 4,
     ifStackLowerLayer              = 6,
     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.

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 interrelation of entries in the ifTable is defined by Interfaces Stack Group, as 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.

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

             [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

             the 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 the encoding type is clear. For other encoding types, traffic counters on a TE link are cumulative for all subinterfaces that it binds together.

Using ifStackTable

This section describes, by example, how to use the 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. The examples given below are for illustration purposes only.

  Example: MPLS is being carried on a bundled TE link.  The bundled
           TE link 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 bundled link.

+-------------------------------------------------------------------+ | MPLS interface ifType = mpls(166) | | ifIndex = 1 | +-------------------------------------------------------------------+ | TE link (bundled link) ifType = teLink(200) | | ifIndex = 2 | +--------------------------------+-+--------------------------------+ | TE link ifType = teLink(200) | | TE link ifType = teLink(200) | | ifIndex = 3 | | ifIndex = 4 | +--------------------------------+ +--------------------------------+ | Component link | | Component link | | ifType = opticalTransport(196) | | ifType = opticalTransport(196) | | ifIndex = 5 | | ifIndex = 6 | +--------------------------------+ +--------------------------------+

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)

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
        4             6
        5             0
        6             0

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

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

The assignment of the index values could for example be:

        ifIndex  Description
        1        mpls             (type 166)
        2        teLink           (type 200)
        3        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
        3             0

Applicability of ifRcvAddressTable

TE link interfaces are logical interfaces with no media-level addresses. As such, the ifRcvAddressTable is not applicable to these interfaces.

TE Link MIB Module Definitions

TE-LINK-STD-MIB DEFINITIONS ::= BEGIN

IMPORTS

  MODULE-IDENTITY, OBJECT-TYPE, transmission, Integer32, Unsigned32
     FROM SNMPv2-SMI
  MODULE-COMPLIANCE, OBJECT-GROUP
     FROM SNMPv2-CONF
  TEXTUAL-CONVENTION, RowStatus, StorageType
     FROM SNMPv2-TC
  InterfaceIndexOrZero, ifIndex
     FROM IF-MIB
  InetAddressType, InetAddress
     FROM INET-ADDRESS-MIB;

teLinkStdMIB MODULE-IDENTITY

  LAST-UPDATED "200510110000Z"  -- 11 October 2005
  ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group"
  CONTACT-INFO
      "        Martin Dubuc
       Email:  [email protected]
               Thomas D. Nadeau
       Email:  [email protected]
               Jonathan P. Lang
       Email:  [email protected]
       Comments about this document should be emailed directly to
       the MPLS working group mailing list at [email protected]."
  DESCRIPTION
      "Copyright (C) 2005 The Internet Society.  This version of
       this MIB module is part of RFC 4220; see the RFC
       itself for full legal notices.
       This MIB module contains managed object definitions for
       MPLS traffic engineering links as defined in
       'Link Bundling in MPLS Traffic Engineering (TE)'."
  -- Revision history.
  REVISION
      "200510110000Z"  -- 11 October 2005
  DESCRIPTION
      "Initial version published as RFC 4220."
  ::= { transmission 200 }

-- Textual Conventions

TeLinkBandwidth ::= TEXTUAL-CONVENTION

  STATUS       current
  DESCRIPTION
      "This type is used to represent link bandwidth in bps.  This
       value is represented using a 4 octet IEEE floating point
       format [IEEE].  The floating point representation is not
       used to represent fractional value but rather to allow
       specification of large numbers that cannot be expressed
       with 32-bit integers."
  REFERENCE
      "IEEE Standard for Binary Floating-Point Arithmetic,
       Standard 754-1985"
  SYNTAX       OCTET STRING (SIZE(4))

TeLinkPriority ::= 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)

TeLinkProtection ::= TEXTUAL-CONVENTION

  STATUS       current
  DESCRIPTION
      "Link protection."
  SYNTAX       INTEGER {
                   primary(1),
                   secondary(2)
               }

TeLinkSwitchingCapability ::= TEXTUAL-CONVENTION

  STATUS       current
  DESCRIPTION
      "Switching capability as specified in the 'OSPF Extensions in
       Support of Generalized Multi-Protocol Label Switching
       (GMPLS)' 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)
               }

TeLinkEncodingType ::= TEXTUAL-CONVENTION

  STATUS       current
  DESCRIPTION
      "Link encoding type as specified in 'Generalized
       Multi-Protocol Label Switching (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)
               }

TeLinkSonetSdhIndication ::= TEXTUAL-CONVENTION

  STATUS       current
  DESCRIPTION
      "This convention is used to indicate whether the interface
       supports Standard or Arbitrary SONET/SDH.  To simplify the
       mapping process, the values used in this textual convention
       match the values specified in the interface switching
       capability specific information field, i.e., 0 for Standard
       SONET/SDH and 1 for Arbitrary SONET/SDH."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  SYNTAX       INTEGER {
                   standard(0),
                   arbitrary(1)
               }

-- Top level components of this MIB module

-- Notifications teLinkNotifications OBJECT IDENTIFIER ::= { teLinkStdMIB 0 } -- Tables, Scalars teLinkObjects OBJECT IDENTIFIER ::= { teLinkStdMIB 1 } -- Conformance teLinkConformance OBJECT IDENTIFIER ::= { teLinkStdMIB 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 the 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(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."
  INDEX         { ifIndex }
  ::= { teLinkTable 1 }

TeLinkEntry ::= SEQUENCE {

 teLinkAddressType                 InetAddressType,
 teLinkLocalIpAddr                 InetAddress,
 teLinkRemoteIpAddr                InetAddress,
 teLinkMetric                      Unsigned32,
 teLinkMaximumReservableBandwidth  TeLinkBandwidth,
 teLinkProtectionType              INTEGER,
 teLinkWorkingPriority             TeLinkPriority,
 teLinkResourceClass               Unsigned32,
 teLinkIncomingIfId                Integer32,
 teLinkOutgoingIfId                InterfaceIndexOrZero,
 teLinkRowStatus                   RowStatus,
 teLinkStorageType                 StorageType

}

teLinkAddressType OBJECT-TYPE

  SYNTAX        InetAddressType
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "The type of Internet address for the TE link."
  ::= { teLinkEntry 1 }

teLinkLocalIpAddr OBJECT-TYPE

  SYNTAX        InetAddress
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "The local Internet address for numbered links.  The type of
       this address is determined by the value of the
       teLinkAddressType object.
       For IPv4 and IPv6 numbered links, this object represents the
       local IP address associated with the TE link.  For an
       unnumbered link, the local address is of type unknown, this
       object is set to the zero length string, and the
       teLinkOutgoingIfId object then identifies the unnumbered
       address.
       If the TE link is a Forwarding Adjacency (FA), the local
       IP address is set to the head-end address of the FA-LSP.
       If ipAddrTable is implemented, this object must have the
       same value as the ipAdEntAddr object that belongs to the
       row in ipAddrTable where ipAdEntIfIndex is equal to
       ifIndex."
  ::= { teLinkEntry 2 }

teLinkRemoteIpAddr OBJECT-TYPE

  SYNTAX        InetAddress
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "The remote Internet address for numbered links.  The type of
       this address is determined by the value of the
       teLinkAddressType object.
       The remote IP address associated with the TE link (IPv4 and
       IPv6 numbered links).  For an unnumbered link, the remote
       address is of type unknown, this object is set to the
       zero length string, and the teLinkIncomingIfId object then
       identifies the unnumbered address.
       If the TE link is a Forwarding Adjacency, the remote IP
       address is set to the tail-end address of the FA-LSP."
  ::= { 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
      "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201"
  ::= { teLinkEntry 4 }

teLinkMaximumReservableBandwidth OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-only
  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."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { 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 the link protection type of the
       TE link.  Descriptions of the different protection types can
       be found in the 'Routing Extensions in Support of
       Generalized Multi-Protocol Label Switching (GMPLS)'
       document."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203 and
       Routing Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4202"
  ::= { teLinkEntry 6 }

teLinkWorkingPriority OBJECT-TYPE

  SYNTAX        TeLinkPriority
  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
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { 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.  Encoding of the resource class is
       described in the 'Traffic Engineering (TE) Extensions to
       OSPF Version 2' document."
  REFERENCE
      "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201
       and Traffic Engineering (TE) Extensions to OSPF Version 2,
       RFC 3630"
  ::= { teLinkEntry 8 }

teLinkIncomingIfId OBJECT-TYPE

  SYNTAX        Integer32 (0..2147483647)
  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.  If the
       link is numbered, the value of this object is 0 and the
       address is stored in the teLinkRemoteIpAddr instead."
  REFERENCE
      "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201"
  ::= { 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.  If the link is numbered, the
       value of this object is 0 and the address is stored in the
       teLinkLocalIpAddr instead."
  REFERENCE
      "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201"
  ::= { 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.  None of the writable objects in
       a row can be changed if status is active(1)."
  ::= { 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 interface switching capability
       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 interface
       switching capability 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 of the entries in the teLinkDescriptorTable that use the
       ifIndex of this TE link."
  INDEX         { ifIndex, teLinkDescriptorId }
  ::= { teLinkDescriptorTable 1 }

TeLinkDescriptorEntry ::= SEQUENCE {

 teLinkDescriptorId               Unsigned32,
 teLinkDescrSwitchingCapability   TeLinkSwitchingCapability,
 teLinkDescrEncodingType          TeLinkEncodingType,
 teLinkDescrMinLspBandwidth       TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio0  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio1  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio2  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio3  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio4  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio5  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio6  TeLinkBandwidth,
 teLinkDescrMaxLspBandwidthPrio7  TeLinkBandwidth,
 teLinkDescrInterfaceMtu          Unsigned32,
 teLinkDescrIndication            TeLinkSonetSdhIndication,
 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 }

teLinkDescrSwitchingCapability OBJECT-TYPE

  SYNTAX        TeLinkSwitchingCapability
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies interface switching capability of
       the TE link, which is derived from its component links."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 2 }

teLinkDescrEncodingType OBJECT-TYPE

  SYNTAX        TeLinkEncodingType
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the TE link encoding type."
  REFERENCE
      "Generalized Multi-Protocol Label Switching (GMPLS)
       Signaling Functional Description, RFC 3471"
  ::= { teLinkDescriptorEntry 3 }

teLinkDescrMinLspBandwidth OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the minimum LSP bandwidth on
       the TE link.  This is derived from the union of the
       minimum LSP bandwidth of all the component links
       associated with the TE link that can be used to carry
       live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 4 }

teLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 0 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 0 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 5 }

teLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 1 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 1 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 6 }

teLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 2 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 2 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 7 }

teLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 3 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 3 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 8 }

teLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 4 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 4 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 9 }

teLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 5 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 5 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 10 }

teLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 6 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 6 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 11 }

teLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 7 on the TE link.  This is the union of the maximum
       LSP bandwidth at priority 7 of all the component links within
       the TE link that can be used to carry live traffic."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 12 }

teLinkDescrInterfaceMtu OBJECT-TYPE

  SYNTAX        Unsigned32 (1..65535)
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the interface MTU for the TE
       link descriptor."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 13 }

teLinkDescrIndication OBJECT-TYPE

  SYNTAX        TeLinkSonetSdhIndication
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies whether this interface supports
       Standard or Arbitrary SONET/SDH."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkDescriptorEntry 14 }

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.  No read-create object
       can be changed if teLinkDescrRowStatus is in the active(1)
       state."
  ::= { teLinkDescriptorEntry 15 }

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 16 }

-- 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 an
       SRLG associated with a TE link.
       An ifEntry in the ifTable must exist before a
       teLinkSrlgEntry using the same ifIndex is created.
       The ifType of ifEntry must be teLink(200).
       If a TE link entry in the ifTable is destroyed, then so
       are all of the entries in the teLinkSrlgTable that use the
       ifIndex of this TE link."
  INDEX         { ifIndex, teLinkSrlg }
  ::= { teLinkSrlgTable 1 }

TeLinkSrlgEntry ::= SEQUENCE {

 teLinkSrlg            Unsigned32,
 teLinkSrlgRowStatus   RowStatus,
 teLinkSrlgStorageType StorageType

}

teLinkSrlg OBJECT-TYPE

  SYNTAX        Unsigned32 (0..4294967295)
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION
      "This identifies an SRLG supported by the TE link.  An SRLG is
       identified with a 32-bit number that is unique within an IGP
       domain.  Zero is a valid SRLG number."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { teLinkSrlgEntry 1 }

teLinkSrlgRowStatus 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.  No read-create object can
       be modified if teLinkSrlgRowStatus is active(1)."
  ::= { teLinkSrlgEntry 2 }

teLinkSrlgStorageType 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.  The ifType of ifEntry must be
       teLink(200).  If a TE link entry in the ifTable is destroyed,
       then so are all of the entries in the teLinkBandwidthTable
       that use the ifIndex of this TE link."
  INDEX         { ifIndex, teLinkBandwidthPriority }
  ::= { teLinkBandwidthTable 1 }

TeLinkBandwidthEntry ::= SEQUENCE {

 teLinkBandwidthPriority    TeLinkPriority,
 teLinkBandwidthUnreserved  TeLinkBandwidth,
 teLinkBandwidthRowStatus   RowStatus,
 teLinkBandwidthStorageType StorageType

}

teLinkBandwidthPriority OBJECT-TYPE

  SYNTAX        TeLinkPriority
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION
      "This attribute specifies the priority.  A value of 0 is valid
       as specified in the 'Traffic Engineering (TE) Extensions to
       OSPF Version 2' document."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203 and
       Traffic Engineering (TE) Extensions to OSPF Version 2,
       RFC 3630"
  ::= { teLinkBandwidthEntry 1 }

teLinkBandwidthUnreserved OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "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 (excluding all links that are strictly
       used as protecting links)."
  REFERENCE
      "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201"
  ::= { teLinkBandwidthEntry 2 }

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.  No read-create object
       can be modified when teLinkBandwidthRowStatus is active(1)."
  ::= { teLinkBandwidthEntry 3 }

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 4 }

-- 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 that 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 {

 componentLinkMaxResBandwidth     TeLinkBandwidth,
 componentLinkPreferredProtection TeLinkProtection,
 componentLinkCurrentProtection   TeLinkProtection,
 componentLinkRowStatus           RowStatus,
 componentLinkStorageType         StorageType

}

componentLinkMaxResBandwidth OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum reservable bandwidth on
       the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkEntry 1 }

componentLinkPreferredProtection OBJECT-TYPE

  SYNTAX        TeLinkProtection
  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        TeLinkProtection
  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.  No read-create object
       can be modified when componentLinkRowStatus is 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 interface switching capability
       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 that
       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,
 componentLinkDescrSwitchingCapability   TeLinkSwitchingCapability,
 componentLinkDescrEncodingType          TeLinkEncodingType,
 componentLinkDescrMinLspBandwidth       TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio0  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio1  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio2  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio3  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio4  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio5  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio6  TeLinkBandwidth,
 componentLinkDescrMaxLspBandwidthPrio7  TeLinkBandwidth,
 componentLinkDescrInterfaceMtu          Unsigned32,
 componentLinkDescrIndication            TeLinkSonetSdhIndication,
 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 }

componentLinkDescrSwitchingCapability OBJECT-TYPE

  SYNTAX        TeLinkSwitchingCapability
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies link multiplexing capabilities of
       the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 2 }

componentLinkDescrEncodingType OBJECT-TYPE

  SYNTAX        TeLinkEncodingType
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the component link encoding type."
  REFERENCE
      "Generalized Multi-Protocol Label Switching (GMPLS) Signaling
       Functional Description, RFC 3471"
  ::= { componentLinkDescriptorEntry 3 }

componentLinkDescrMinLspBandwidth OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the minimum LSP bandwidth on
       the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 4 }

componentLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 0 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 5 }

componentLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 1 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 6 }

componentLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 2 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 7 }

componentLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 3 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 8 }

componentLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 4 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 9 }

componentLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "thousand bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 5 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 10 }

componentLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 6 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 11 }

componentLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the maximum LSP bandwidth at
       priority 7 on the component link."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 12 }

componentLinkDescrInterfaceMtu OBJECT-TYPE

  SYNTAX        Unsigned32 (1..65535)
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies the interface MTU for the component
       link descriptor."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 13 }

componentLinkDescrIndication OBJECT-TYPE

  SYNTAX        TeLinkSonetSdhIndication
  MAX-ACCESS    read-create
  STATUS        current
  DESCRIPTION
      "This attribute specifies whether this interface supports
       Standard or Arbitrary SONET/SDH."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkDescriptorEntry 14 }

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.  No read-create object
       can be modified when componentLinkDescrRowStatus
       is active(1)."
  ::= { componentLinkDescriptorEntry 15 }

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 16 }

-- 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 that
       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, componentLinkBandwidthPriority }
  ::= { componentLinkBandwidthTable 1 }

ComponentLinkBandwidthEntry ::= SEQUENCE {

 componentLinkBandwidthPriority    TeLinkPriority,
 componentLinkBandwidthUnreserved  TeLinkBandwidth,
 componentLinkBandwidthRowStatus   RowStatus,
 componentLinkBandwidthStorageType StorageType

}

componentLinkBandwidthPriority OBJECT-TYPE

  SYNTAX        TeLinkPriority
  MAX-ACCESS    not-accessible
  STATUS        current
  DESCRIPTION
      "This attribute specifies the priority.  A value of 0 is valid
       as specified in the 'Traffic Engineering (TE) Extensions to
        OSPF Version 2' document."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203 and
       Traffic Engineering (TE) Extensions to OSPF Version 2,
       RFC 3630"
  ::= { componentLinkBandwidthEntry 1 }

componentLinkBandwidthUnreserved OBJECT-TYPE

  SYNTAX        TeLinkBandwidth
  UNITS         "bps"
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION
      "This attribute specifies the component link unreserved
       bandwidth at priority p."
  REFERENCE
      "OSPF Extensions in Support of Generalized Multi-Protocol
       Label Switching (GMPLS), RFC 4203"
  ::= { componentLinkBandwidthEntry 2 }

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.  No read-create object can
       be modified when componentLinkBandwidthRowStatus is
       active(1)."
  ::= { componentLinkBandwidthEntry 3 }

componentLinkBandwidthStorageType 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 4 }

-- End of componentLinkBandwidthTable

-- Module compliance

teLinkCompliances

  OBJECT IDENTIFIER ::= { teLinkConformance 1 }

teLinkGroups

  OBJECT IDENTIFIER ::= { teLinkConformance 2 }

teLinkModuleFullCompliance MODULE-COMPLIANCE

  STATUS current
  DESCRIPTION
      "Compliance statement for agents that support read-create
       so that both configuration and monitoring of TE links can
       be accomplished via this MIB module."
  MODULE -- this module
     MANDATORY-GROUPS    { teLinkGroup,
                           teLinkBandwidthGroup,
                           componentLinkBandwidthGroup }
     GROUP teLinkSrlgGroup
     DESCRIPTION
         "This group is mandatory for GMPLS enabled devices."
     GROUP teLinkPscGroup
     DESCRIPTION
         "This group is mandatory for devices that support the
          packet switching capability."
     GROUP teLinkTdmGroup
     DESCRIPTION
         "This group is mandatory for devices that support the TDM
          switching capability."
     -- teLinkTable
     OBJECT      teLinkAddressType
     SYNTAX      INTEGER { unknown(0), ipv4(1), ipv6(2) }
     DESCRIPTION
         "Only ipv4(1) and ipv6(2) address types need to be
          supported for numbered links.  For unnumbered links, the
          unknown(0) address type needs to be supported."
     OBJECT      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 the link is unnumbered,
          four if the link IP address is IPv4, and sixteen if the
          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 the link is unnumbered,
          four if the link IP address is IPv4, and sixteen if the
          link IP address is IPv6."
     OBJECT      teLinkRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- teLinkDescriptorTable
     OBJECT      teLinkDescrRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- teLinkSrlgTable
     OBJECT      teLinkSrlgRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- teLinkBandwidthTable
     OBJECT      teLinkBandwidthRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- componentLinkTable
     OBJECT      componentLinkRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- componentLinkDescriptorTable
     OBJECT      componentLinkDescrRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
     -- componentLinkBandwidthTable
     OBJECT      componentLinkBandwidthRowStatus
     SYNTAX      RowStatus { active(1), notInService(2) }
     WRITE-SYNTAX RowStatus { active(1), notInService(2),
                              createAndGo(4), destroy(6) }
     DESCRIPTION
         "Support for notReady(3) and createAndWait(5) is
          not required."
  ::= { teLinkCompliances 1 }

teLinkModuleReadOnlyCompliance MODULE-COMPLIANCE

  STATUS current
  DESCRIPTION
      "Compliance statement for agents that support the
       monitoring of the TE link MIB module."
  MODULE -- this module
     MANDATORY-GROUPS    { teLinkGroup,
                           teLinkBandwidthGroup,
                           componentLinkBandwidthGroup }
     GROUP teLinkSrlgGroup
     DESCRIPTION
         "This group is mandatory for GMPLS enabled devices."
     GROUP teLinkPscGroup
     DESCRIPTION
         "This group is mandatory for devices that support the
          packet switching capability."
     GROUP teLinkTdmGroup
     DESCRIPTION
         "This group is mandatory for devices that support the TDM
          switching capability."
     -- teLinkTable
     OBJECT      teLinkAddressType
     SYNTAX      INTEGER { unknown(0), ipv4(1), ipv6(2) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Only ipv4(1) and ipv6(2) address types need to be
          supported for numbered links.  For unnumbered links, the
          unknown(0) address type needs to be supported."
     OBJECT      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 the link is unnumbered,
          four if the link IP address is IPv4, and sixteen if the
          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 the link is unnumbered,
          four if the link IP address is IPv4, and sixteen if the
          link IP address is IPv6."
     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      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      teLinkStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     -- teLinkDescriptorTable
     OBJECT      teLinkDescrSwitchingCapability
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrEncodingType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMinLspBandwidth
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio0
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio1
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio2
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio3
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio4
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio5
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio6
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrMaxLspBandwidthPrio7
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      teLinkDescrRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      teLinkDescrStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     -- teLinkSrlgTable
     OBJECT      teLinkSrlgRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      teLinkSrlgStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     -- teLinkBandwidthTable
     OBJECT      teLinkBandwidthRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      teLinkBandwidthStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     -- componentLinkTable
     OBJECT      componentLinkMaxResBandwidth
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkPreferredProtection
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      componentLinkStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     -- componentLinkDescriptorTable
     OBJECT      componentLinkDescrSwitchingCapability
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrEncodingType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMinLspBandwidth
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio0
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio1
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio2
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio3
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio4
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio5
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio6
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrMaxLspBandwidthPrio7
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrInterfaceMtu
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrIndication
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
     OBJECT      componentLinkDescrRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "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      componentLinkBandwidthRowStatus
     SYNTAX      RowStatus { active(1) }
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required and active(1) is the
          only status that needs to be supported."
     OBJECT      componentLinkBandwidthStorageType
     MIN-ACCESS  read-only
     DESCRIPTION
         "Write access is not required."
  ::= { teLinkCompliances 2 }

-- Units of conformance

teLinkGroup OBJECT-GROUP

  OBJECTS { teLinkAddressType,
            teLinkLocalIpAddr,
            teLinkRemoteIpAddr,
            teLinkMetric,
            teLinkProtectionType,
            teLinkWorkingPriority,
            teLinkResourceClass,
            teLinkIncomingIfId,
            teLinkOutgoingIfId,
            teLinkRowStatus,
            teLinkStorageType,
            teLinkDescrSwitchingCapability,
            teLinkDescrEncodingType,
            teLinkDescrRowStatus,
            teLinkDescrStorageType,
            componentLinkPreferredProtection,
            componentLinkCurrentProtection,
            componentLinkRowStatus,
            componentLinkStorageType,
            componentLinkDescrSwitchingCapability,
            componentLinkDescrEncodingType,
            componentLinkDescrRowStatus,
            componentLinkDescrStorageType
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for the management of
          resources associated with TE links."
  ::= { teLinkGroups 1 }

teLinkSrlgGroup OBJECT-GROUP

  OBJECTS { teLinkSrlgRowStatus,
            teLinkSrlgStorageType
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for the management of
          SRLG resources associated with TE links."
  ::= { teLinkGroups 2 }

teLinkBandwidthGroup OBJECT-GROUP

  OBJECTS { teLinkMaximumReservableBandwidth,
            teLinkDescrMaxLspBandwidthPrio0,
            teLinkDescrMaxLspBandwidthPrio1,
            teLinkDescrMaxLspBandwidthPrio2,
            teLinkDescrMaxLspBandwidthPrio3,
            teLinkDescrMaxLspBandwidthPrio4,
            teLinkDescrMaxLspBandwidthPrio5,
            teLinkDescrMaxLspBandwidthPrio6,
            teLinkDescrMaxLspBandwidthPrio7,
            teLinkBandwidthUnreserved,
            teLinkBandwidthRowStatus,
            teLinkBandwidthStorageType
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for the management of
          the bandwidth resources associated with TE links and
          component links."
  ::= { teLinkGroups 3 }

componentLinkBandwidthGroup OBJECT-GROUP

  OBJECTS { componentLinkMaxResBandwidth,
            componentLinkDescrMaxLspBandwidthPrio0,
            componentLinkDescrMaxLspBandwidthPrio1,
            componentLinkDescrMaxLspBandwidthPrio2,
            componentLinkDescrMaxLspBandwidthPrio3,
            componentLinkDescrMaxLspBandwidthPrio4,
            componentLinkDescrMaxLspBandwidthPrio5,
            componentLinkDescrMaxLspBandwidthPrio6,
            componentLinkDescrMaxLspBandwidthPrio7,
            componentLinkBandwidthUnreserved,
            componentLinkBandwidthRowStatus,
            componentLinkBandwidthStorageType
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for the management of the
          bandwidth parameters associated with component links."
  ::= { teLinkGroups 4 }

teLinkPscGroup OBJECT-GROUP

  OBJECTS { teLinkDescrMinLspBandwidth,
            teLinkDescrInterfaceMtu,
            componentLinkDescrMinLspBandwidth,
            componentLinkDescrInterfaceMtu
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for devices that are
          packet switch capable."
  ::= { teLinkGroups 5 }

teLinkTdmGroup OBJECT-GROUP

  OBJECTS { teLinkDescrMinLspBandwidth,
            teLinkDescrIndication,
            componentLinkDescrMinLspBandwidth,
            componentLinkDescrIndication
          }
  STATUS  current
  DESCRIPTION
         "Collection of objects needed for devices that are
          TDM switching capable."
  ::= { teLinkGroups 6 }

-- End of TE-LINK-STD-MIB END

10. Security Considerations

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

- All the tables in this MIB module have routing information in

  them, so they all have the same security attributes.  Unauthorized
  changes to attributes of 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 thus important to control even GET and/or NOTIFY access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP. These are the tables and objects and their sensitivity/vulnerability:

- IP address entries in the teLinkTable (teLinkLocalIpAddr and

  teLinkRemoteIpAddr) may reveal the internals of a 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), 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 module.

It is RECOMMENDED that implementers consider the security features as provided by the SNMPv3 framework (see RFC3410, section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy).

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

11. Contributors

Sudheer Dharanikota EMail: [email protected]

12. Acknowledgements

The authors would like to acknowledge the contribution of Dmitry Ryumkin.

13. IANA Considerations

The following "IANA Considerations" subsection requests IANA for a new assignment. New assignments can only be made via Standards Action as specified in RFC2434.

13.1. IANA Considerations for the TE-LINK-STD-MIB

The TE-LINK-STD-MIB should be rooted under the transmission subtree. The IANA has assigned { transmission 200 } to the TE-LINK-STD-MIB module specified in this document.

14. References

14.1. Normative References

[IANAifType] "IANAifType MIB Module",

            http://www.iana.org/assignments/ianaiftype-mib.

[IEEE] IEEE, "IEEE Standard for Binary Floating-Point

            Arithmetic", Standard 754-1985, 1985 (ISBN 1-5593-7653-
            8).

RFC2119 Bradner, S., "Key words for use in RFCs to Indicate

            Requirement Levels", BCP 14, RFC 2119, March 1997.

RFC2434 Narten, T. and H. Alvestrand, "Guidelines for Writing an

            IANA Considerations Section in RFCs", BCP 26, RFC 2434,
            October 1998.

RFC2578 McCloghrie, K., Perkins, D. and J. Schoenwaelder,

            "Structure of Management Information Version 2 (SMIv2)",
            STD 58, RFC 2578, April 1999.

RFC2579 McCloghrie, K., Perkins, D. and J. Schoenwaelder,

            "Textual Conventions for SMIv2", STD 58, RFC 2579, April
            1999.

RFC2580 McCloghrie, K., Perkins, D. and J. Schoenwaelder,

            "Conformance Statements for SMIv2", STD 58, RFC 2580,
            April 1999.

RFC2863 McCloghrie, K. and F. Kastenholz, "The Interfaces Group

            MIB", RFC 2863, June 2000.

RFC3471 Berger, L., "Generalized Multi-Protocol Label Switching

            (GMPLS) Signaling Functional Description", RFC 3471,
            January 2003.

RFC3630 Katz, D., Kompella, K. and D. Yeung, "Traffic

            Engineering (TE) Extensions to OSPF Version 2", RFC
            3630, September 2003.

RFC4201 Kompella, K., Rekhter, Y. and L. Berger, "Link Bundling

            in MPLS Traffic Engineering (TE)", RFC 4201, October
            2005.

RFC4202 Kompella, K., Ed. and Y. Rekhter, Ed., "Routing

            Extensions in Support of Generalized Multi-Protocol
            Label Switching (GMPLS)", RFC 4202, October 2005.

RFC4203 Kompella, K., Ed. and Y. Rekhter, Ed., "OSPF Extensions

            in Support of Generalized Multi-Protocol Label Switching
            (GMPLS)", RFC 4203, October 2005.

RFC4206 Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP)

            Hierarchy with Generalized Multi-Protocol Label
            Switching (GMPLS) Traffic Engineering (TE)", RFC 4206,
            October 2005.

RFC4204 Lang, J., Ed., "Link Management Protocol (LMP)", RFC

            4204, October 2005.

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

RFC3945 Mannie, E., "Generalized Multi-Protocol Label Switching

            (GMPLS) Architecture", RFC 3945, October 2004.

Authors' Addresses

Martin Dubuc

EMail: [email protected]

Thomas D. Nadeau Cisco Systems 1414 Massachusetts Ave. Boxborough, MA 01719

Phone: +1-978-244-3051 EMail: [email protected]

Jonathan P. Lang Sonos, Inc. 223 E. De La Guerra St. Santa Barbara, CA 93101

EMail: [email protected]

Full Copyright Statement

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat 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 on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf- [email protected].

Acknowledgement

Funding for the RFC Editor function is currently provided by the Internet Society.