Callon, Multiprotocol Label Switching Architecture,
RFC 3031, January 2001.
Copyright (C) The Internet Society (2004). The
initial version of this MIB module was published
in RFC 3812. For full legal notices see the RFC
itself or see:
http://www.ietf.org/copyrights/ianamib.html"
-- Revision history.
REVISION
"200406030000Z" -- June 3, 2004
DESCRIPTION
"Initial revision, published as part of RFC 3813."
::= { mplsStdMIB 2 }
-- TEXTUAL-CONVENTIONs
MplsIndexType ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"This is an octet string that can be used as a table
index in cases where a large addressable space is
required such as on an LSR where many applications
may be provisioning labels.
Note that the string containing the single octet with
the value 0x00 is a reserved value used to represent
special cases. When this TEXTUAL-CONVENTION is used
as the SYNTAX of an object, the DESCRIPTION clause
MUST specify if this special value is valid and if so
what the special meaning is.
In systems that provide write access to the MPLS-LSR-STD
MIB, mplsIndexType SHOULD be used as a simple multi-digit
integer encoded as an octet string.
No further overloading of the meaning of an index SHOULD
be made.
In systems that do not offer write access to the MPLS-LSR-STD
MIB, the mplsIndexType may contain implicit formatting that is
specific to the implementation to convey additional
information such as interface index, physical card or
device, or application id. The interpretation of this
additional formatting is implementation dependent and
not covered in this document. Such formatting MUST
NOT impact the basic functionality of read-only access
to the MPLS-LSR-STD MIB by management applications that are
not aware of the formatting rules."
SYNTAX OCTET STRING (SIZE(1..24))
MplsIndexNextType ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"When a MIB module is used for configuration, an object with
this SYNTAX always contains a legal value (a non-zero-length
string) for an index that is not currently used in the relevant
table. The Command Generator (Network Management Application)
reads this variable and uses the (non-zero-length string)
value read when creating a new row with an SNMP SET.
When the SET is performed, the Command Responder (agent) must
determine whether the value is indeed still unused; Two Network
Management Applications may attempt to create a row
(configuration entry) simultaneously and use the same value. If
it is currently unused, the SET succeeds and the Command
Responder (agent) changes the value of this object, according
to an implementation-specific algorithm. If the value is in
use, however, the SET fails. The Network Management
Application must then re-read this variable to obtain a new
usable value.
Note that the string containing the single octet with
the value 0x00 is a reserved value used to represent
the special case where no additional indexes can be
provisioned, or in systems that do not offer
write access, objects defined using this TEXTUAL-CONVENTION
MUST return the string containing the single
octet with the value 0x00."
SYNTAX OCTET STRING (SIZE(1..24))
-- Top level components of this MIB module.
-- Notifications
mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrStdMIB 0 }
-- Tables, Scalars
mplsLsrObjects OBJECT IDENTIFIER ::= { mplsLsrStdMIB 1 }
-- Conformance
mplsLsrConformance OBJECT IDENTIFIER ::= { mplsLsrStdMIB 2 }
-- MPLS Interface Table.
mplsInterfaceTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsInterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table specifies per-interface MPLS capability
and associated information."
::= { mplsLsrObjects 1 }
mplsInterfaceEntry OBJECT-TYPE
SYNTAX MplsInterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in this table is created
automatically by an LSR for every interface capable
of supporting MPLS and which is configured to do so.
A conceptual row in this table will exist if and only if
a corresponding entry in ifTable exists with ifType =
mpls(166). If this associated entry in ifTable is
operationally disabled (thus removing MPLS
capabilities on that interface), the corresponding
entry in this table MUST be deleted shortly thereafter.
An conceptual row with index 0 is created if the LSR
supports per-platform labels. This conceptual row
represents the per-platform label space and contains
parameters that apply to all interfaces that participate
in the per-platform label space. Other conceptual rows
in this table represent MPLS interfaces that may
participate in either the per-platform or per-
interface label spaces, or both. Implementations
that either only support per-platform labels,
or have only them configured, may choose to return
just the mplsInterfaceEntry of 0 and not return
the other rows. This will greatly reduce the number
of objects returned. Further information about label
space participation of an interface is provided in
the DESCRIPTION clause of
mplsInterfaceLabelParticipationType."
INDEX { mplsInterfaceIndex }
::= { mplsInterfaceTable 1 }
MplsInterfaceEntry ::= SEQUENCE {
mplsInterfaceIndex InterfaceIndexOrZero,
mplsInterfaceLabelMinIn MplsLabel,
mplsInterfaceLabelMaxIn MplsLabel,
mplsInterfaceLabelMinOut MplsLabel,
mplsInterfaceLabelMaxOut MplsLabel,
mplsInterfaceTotalBandwidth MplsBitRate,
mplsInterfaceAvailableBandwidth MplsBitRate,
mplsInterfaceLabelParticipationType BITS
}
mplsInterfaceIndex OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This is a unique index for an entry in the
MplsInterfaceTable. A non-zero index for an
entry indicates the ifIndex for the corresponding
interface entry of the MPLS-layer in the ifTable.
The entry with index 0 represents the per-platform
label space and contains parameters that apply to all
interfaces that participate in the per-platform label
space. Other entries defined in this table represent
additional MPLS interfaces that may participate in either
the per-platform or per-interface label spaces, or both."
REFERENCE
"RFC 2863 - The Interfaces Group MIB, McCloghrie, K.,
and F. Kastenholtz, June 2000"
::= { mplsInterfaceEntry 1 }
mplsInterfaceLabelMinIn OBJECT-TYPE
SYNTAX MplsLabel
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is the minimum value of an MPLS label that this
LSR is willing to receive on this interface."
::= { mplsInterfaceEntry 2 }
mplsInterfaceLabelMaxIn OBJECT-TYPE
SYNTAX MplsLabel
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is the maximum value of an MPLS label that this
LSR is willing to receive on this interface."
::= { mplsInterfaceEntry 3 }
mplsInterfaceLabelMinOut OBJECT-TYPE
SYNTAX MplsLabel
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is the minimum value of an MPLS label that this
LSR is willing to send on this interface."
::= { mplsInterfaceEntry 4 }
mplsInterfaceLabelMaxOut OBJECT-TYPE
SYNTAX MplsLabel
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is the maximum value of an MPLS label that this
LSR is willing to send on this interface."
::= { mplsInterfaceEntry 5 }
mplsInterfaceTotalBandwidth OBJECT-TYPE
SYNTAX MplsBitRate
UNITS "kilobits per second"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value indicates the total amount of usable
bandwidth on this interface and is specified in
kilobits per second (Kbps). This variable is not
applicable when applied to the interface with index
0. When this value cannot be measured, this value
should contain the nominal bandwidth."
::= { mplsInterfaceEntry 6 }
mplsInterfaceAvailableBandwidth OBJECT-TYPE
SYNTAX MplsBitRate
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value indicates the total amount of available
bandwidth available on this interface and is
specified in kilobits per second (Kbps). This value
is calculated as the difference between the amount
of bandwidth currently in use and that specified in
mplsInterfaceTotalBandwidth. This variable is not
applicable when applied to the interface with index
0. When this value cannot be measured, this value
should contain the nominal bandwidth."
::= { mplsInterfaceEntry 7 }
mplsInterfaceLabelParticipationType OBJECT-TYPE
SYNTAX BITS {
perPlatform (0),
perInterface (1)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If the value of the mplsInterfaceIndex for this
entry is zero, then this entry corresponds to the
per-platform label space for all interfaces configured
to use that label space. In this case the perPlatform(0)
bit MUST be set; the perInterface(1) bit is meaningless
and MUST be ignored.
The remainder of this description applies to entries
with a non-zero value of mplsInterfaceIndex.
If the perInterface(1) bit is set then the value of
mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
mplsInterfaceLabelMinOut, and
mplsInterfaceLabelMaxOut for this entry reflect the
label ranges for this interface.
If only the perPlatform(0) bit is set, then the value of
mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
mplsInterfaceLabelMinOut, and
mplsInterfaceLabelMaxOut for this entry MUST be
identical to the instance of these objects with
index 0. These objects may only vary from the entry
with index 0 if both the perPlatform(0) and perInterface(1)
bits are set.
In all cases, at a minimum one of the perPlatform(0) or
perInterface(1) bits MUST be set to indicate that
at least one label space is in use by this interface. In
all cases, agents MUST ensure that label ranges are
specified consistently and MUST return an
inconsistentValue error when they do not."
REFERENCE
"Rosen, E., Viswanathan, A., and R. Callon,
Multiprotocol Label Switching Architecture, RFC
3031, January 2001."
::= { mplsInterfaceEntry 8 }
-- End of mplsInterfaceTable
-- MPLS Interface Performance Table.
mplsInterfacePerfTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsInterfacePerfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table provides MPLS performance information on
a per-interface basis."
::= { mplsLsrObjects 2 }
mplsInterfacePerfEntry OBJECT-TYPE
SYNTAX MplsInterfacePerfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table is created by the LSR for
every interface capable of supporting MPLS. Its is
an extension to the mplsInterfaceEntry table.
Note that the discontinuity behavior of entries in
this table MUST be based on the corresponding
ifEntry’s ifDiscontinuityTime."
AUGMENTS { mplsInterfaceEntry }
::= { mplsInterfacePerfTable 1 }
MplsInterfacePerfEntry ::= SEQUENCE {
-- incoming direction
mplsInterfacePerfInLabelsInUse Gauge32,
mplsInterfacePerfInLabelLookupFailures Counter32,
-- outgoing direction
mplsInterfacePerfOutLabelsInUse Gauge32,
mplsInterfacePerfOutFragmentedPkts Counter32
}
mplsInterfacePerfInLabelsInUse OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of labels that are in
use at this point in time on this interface in the
incoming direction. If the interface participates in
only the per-platform label space, then the value of
the instance of this object MUST be identical to
the value of the instance with index 0. If the
interface participates in the per-interface label
space, then the instance of this object MUST
represent the number of per-interface labels that
are in use on this interface."
::= { mplsInterfacePerfEntry 1 }
mplsInterfacePerfInLabelLookupFailures OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of labeled packets
that have been received on this interface and which
were discarded because there was no matching cross-
connect entry. This object MUST count on a per-
interface basis regardless of which label space the
interface participates in."
::= { mplsInterfacePerfEntry 2 }
mplsInterfacePerfOutLabelsInUse OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of top-most labels in
the outgoing label stacks that are in use at this
point in time on this interface. This object MUST
count on a per-interface basis regardless of which
label space the interface participates in."
::= { mplsInterfacePerfEntry 3 }
mplsInterfacePerfOutFragmentedPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of outgoing MPLS
packets that required fragmentation before
transmission on this interface. This object MUST
count on a per-interface basis regardless of which
label space the interface participates in."
::= { mplsInterfacePerfEntry 4 }
-- mplsInterfacePerf Table end.
mplsInSegmentIndexNext OBJECT-TYPE
SYNTAX MplsIndexNextType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object contains the next available value to
be used for mplsInSegmentIndex when creating entries
in the mplsInSegmentTable. The special value of a
string containing the single octet 0x00 indicates
that no new entries can be created in this table.
Agents not allowing managers to create entries
in this table MUST set this object to this special
value."
::= { mplsLsrObjects 3 }
-- in-segment table.
mplsInSegmentTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsInSegmentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains a description of the incoming MPLS
segments (labels) to an LSR and their associated parameters.
The index for this table is mplsInSegmentIndex.
The index structure of this table is specifically designed
to handle many different MPLS implementations that manage
their labels both in a distributed and centralized manner.
The table is also designed to handle existing MPLS labels
as defined in RFC3031 as well as longer ones that may
be necessary in the future.
In cases where the label cannot fit into the
mplsInSegmentLabel object, the mplsInSegmentLabelPtr
will indicate this by being set to the first accessible
column in the appropriate extension table’s row.
In this case an additional table MUST
be provided and MUST be indexed by at least the indexes
used by this table. In all other cases when the label is
represented within the mplsInSegmentLabel object, the
mplsInSegmentLabelPtr MUST be set to 0.0. Due to the
fact that MPLS labels may not exceed 24 bits, the
mplsInSegmentLabelPtr object is only a provision for
future-proofing the MIB module. Thus, the definition
of any extension tables is beyond the scope of this
MIB module."
::= { mplsLsrObjects 4 }
mplsInSegmentEntry OBJECT-TYPE
SYNTAX MplsInSegmentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents one incoming
segment as is represented in an LSR’s LFIB.
An entry can be created by a network
administrator or an SNMP agent, or an MPLS signaling
protocol. The creator of the entry is denoted by
mplsInSegmentOwner.
The value of mplsInSegmentRowStatus cannot be active(1)
unless the ifTable entry corresponding to
mplsInSegmentInterface exists. An entry in this table
must match any incoming packets, and indicates an
instance of mplsXCEntry based on which forwarding
and/or switching actions are taken."
INDEX { mplsInSegmentIndex }
::= { mplsInSegmentTable 1 }
MplsInSegmentEntry ::= SEQUENCE {
mplsInSegmentIndex MplsIndexType,
mplsInSegmentInterface InterfaceIndexOrZero,
mplsInSegmentLabel MplsLabel,
mplsInSegmentLabelPtr RowPointer,
mplsInSegmentNPop Integer32,
mplsInSegmentAddrFamily AddressFamilyNumbers,
mplsInSegmentXCIndex MplsIndexType,
mplsInSegmentOwner MplsOwner ,
mplsInSegmentTrafficParamPtr RowPointer,
mplsInSegmentRowStatus RowStatus,
mplsInSegmentStorageType StorageType
}
mplsInSegmentIndex OBJECT-TYPE
SYNTAX MplsIndexType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index for this in-segment. The
string containing the single octet 0x00
MUST not be used as an index."
::= { mplsInSegmentEntry 1 }
mplsInSegmentInterface OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object represents the
interface index for the incoming MPLS interface. A
value of zero represents all interfaces participating in
the per-platform label space. This may only be used
in cases where the incoming interface and label
are associated with the same mplsXCEntry. Specifically,
given a label and any incoming interface pair from the
per-platform label space, the outgoing label/interface
mapping remains the same. If this is not the case,
then individual entries MUST exist that
can then be mapped to unique mplsXCEntries."
::= { mplsInSegmentEntry 2 }
mplsInSegmentLabel OBJECT-TYPE
SYNTAX MplsLabel
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the corresponding instance of mplsInSegmentLabelPtr is
zeroDotZero then this object MUST contain the incoming label
associated with this in-segment. If not this object SHOULD
be zero and MUST be ignored."
::= { mplsInSegmentEntry 3 }
mplsInSegmentLabelPtr OBJECT-TYPE
SYNTAX RowPointer
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the label for this segment cannot be represented
fully within the mplsInSegmentLabel object,
this object MUST point to the first accessible
column of a conceptual row in an external table containing
the label. In this case, the mplsInSegmentTopLabel
object SHOULD be set to 0 and ignored. This object MUST
be set to zeroDotZero otherwise."
DEFVAL { zeroDotZero }
::= { mplsInSegmentEntry 4 }
mplsInSegmentNPop OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The number of labels to pop from the incoming
packet. Normally only the top label is popped from
the packet and used for all switching decisions for
that packet. This is indicated by setting this
object to the default value of 1. If an LSR supports
popping of more than one label, this object MUST
be set to that number. This object cannot be modified
if mplsInSegmentRowStatus is active(1)."
DEFVAL { 1 }
::= { mplsInSegmentEntry 5 }
mplsInSegmentAddrFamily OBJECT-TYPE
SYNTAX AddressFamilyNumbers
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The IANA address family [IANAFamily] of packets
received on this segment, which is used at an egress
LSR to deliver them to the appropriate layer 3 entity.
A value of other(0) indicates that the family type is
either unknown or undefined; this SHOULD NOT be used
at an egress LSR. This object cannot be
modified if mplsInSegmentRowStatus is active(1)."