RFC 3815
Definitions of Managed Objects for the Multiprotocol Label Switching (MPLS), Label Distribution Protocol (LDP)
RFC 3815: LDP MIB Definitions for MPLS bestie ๐ฆ
okay so this is a Standards Track doc, which means it's an actual Internet standard and not just a vibe ๐ Published June 2004 and it's giving main character for MPLS management. ๐ธ
Authors: J. Cucchiara (Marconi Communications, Inc.), H. Sjostrand (ipUnplugged), and J. Luciani (Marconi Communications, Inc.) โจ
Network Working Group ๐
Obsoletes: nothing listed in the header ๐ Updates: nothing listed in the header ๐
Title: Definitions of Managed Objects for the Multiprotocol Label Switching (MPLS), Label Distribution Protocol (LDP) ๐
Status of this Memo ๐
okay so this doc is an Internet standards track protocol for the Internet community, and it's basically asking everyone for discussion and suggestions for improvements ๐ If you want the current standardization state and status of this protocol, check the "Internet Official Protocol Standards" (STD 1) ๐ฅ And distribution of this memo is unlimited, so share it with everyone ๐ซถ
Copyright Notice ๐
Copyright (C) The Internet Society (2004). ๐ธ
Abstract โจ
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community ๐ง Specifically, it describes managed objects for the Multiprotocol Label Switching, Label Distribution Protocol (LDP) ๐ฆ
Table of Contents ๐
1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 2
2. The Internet-Standard Management Framework. . . . . . . . . . 3
3. Structure of the MIB Modules. . . . . . . . . . . . . . . . . 3
3.1. Overview. . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Future Considerations . . . . . . . . . . . . . . . . . 4
3.3. Interface Indexing. . . . . . . . . . . . . . . . . . . 4
3.4. Differences from the LDP Specification. . . . . . . . . 4
3.5. The MPLS-LDP-STD-MIB Module . . . . . . . . . . . . . . 5
3.5.1. LDP Scalar Objects. . . . . . . . . . . . . . . 5
3.5.2. The LDP Entity Table. . . . . . . . . . . . . . 6
3.5.2.1. Changing Values After Session
Establishment . . . . . . . . . . . . 6
3.5.3. The LDP Entity Statistics Table . . . . . . . . 7
3.5.4. The LDP Peer Table. . . . . . . . . . . . . . . 7
3.5.5. The LDP Session Table . . . . . . . . . . . . . 8
3.5.6. The LDP Session Statistics Table. . . . . . . . 8
3.5.7. The LDP Hello Adjacency Table . . . . . . . . . 8
3.5.8. The LDP LSP Tables. . . . . . . . . . . . . . . 8
3.5.9. The FEC Tables. . . . . . . . . . . . . . . . . 9
3.5.10. The LDP Session Peer Address Table. . . . . . . 9
3.6. LDP Notifications . . . . . . . . . . . . . . . . . . . 9
3.7. LDP Notification Frequency. . . . . . . . . . . . . . . 10
4. MPLS Label Distribution Protocol MIB Definitions. . . . . . . 10
4.1. The MPLS-LDP-ATM-STD-MIB Module . . . . . . . . . . . . 60
4.1.1. The LDP Entity ATM Table. . . . . . . . . . . . 61
4.1.2. The LDP Entity ATM Label Range Table. . . . . . 61
4.1.3. The LDP ATM Session Table . . . . . . . . . . . 61
4.2. The MPLS-LDP-FRAME-RELAY-STD-MIB Module . . . . . . . . 77
4.2.1. The LDP Entity Frame Relay Table. . . . . . . . 77
4.2.2. The LDP Entity Frame Relay Label Range Table. . 77
4.2.3. The LDP Frame Relay Session Table . . . . . . . 77
4.3. The MPLS-LDP-GENERIC-STD-MIB Module . . . . . . . . . . 91
5. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 98
6. References. . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.1. Normative References. . . . . . . . . . . . . . . . . . 98
6.2. Informative References. . . . . . . . . . . . . . . . .100
7. Security Considerations . . . . . . . . . . . . . . . . . . .100
7.1. Security Considerations for MPLS-LDP-STD-MIB. . . . . .100
7.2. Security Considerations for MPLS-LDP-ATM-STD-MIB. . . .101
7.3. Security Considerations for
MPLS-LDP-FRAME-RELAY-STD-MIB. . . . . . . . . . . . . .102
7.4. Security Considerations for MPLS-LDP-GENERIC-STD-MIB. .103
7.5. Additional Security Considerations. . . . . . . . . . .103
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . .104
8.1. IANA Considerations for MPLS-LDP-STD-MIB. . . . . . . .104
8.2. IANA Considerations for MPLS-LDP-ATM-STD-MIB. . . . . .104
8.3. IANA Considerations for MPLS-LDP-FRAME-RELAY-STD-MIB. .104
8.4. IANA Considerations for MPLS-LDP-GENERIC-STD-MIB. . . .104
9. Authors' Addresses. . . . . . . . . . . . . . . . . . . . . .105
10. Full Copyright Statement. . . . . . . . . . . . . . . . . . .106
1. Introduction โจ
okay so this doc defines 4 MIB Modules that together handle configuring and monitoring the Label Distribution Protocol (LDP) ๐ LDP [RFC3036] is one flavour of Multiprotocol Label Switching (MPLS) protocols, and you can read about those in [RFC3031] and [RFC3032] ๐ง With all 4 MIB Modules, an operator can configure LDP sessions over 3 different Layer 2 media: Ethernet, ATM and Frame Relay, as described in [RFC3036], [RFC3034] and [RFC3035] ๐
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] ๐ฅ These are the words that matter, so pay attention bestie ๐
For an intro to MPLS concepts, see [RFC3031] ๐ And if you want more on LDP, go check out [RFC3037] and [RFC3215] ๐ฆ
2. The Internet-Standard Management Framework ๐ธ
For a detailed overview of the documents that describe the current Internet-Standard Management Framework, check section 7 of RFC 3410 [RFC3410] ๐
Managed objects are accessed via a virtual information store, called 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 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] ๐
3. Structure of the MIB Modules ๐
This section describes the structure of the LDP MIB Modules ๐ฆ
3.1. Overview ๐
There are 4 MIB Modules in this document: the MPLS-LDP-STD-MIB, the MPLS-LDP-GENERIC-STD-MIB, the MPLS-LDP-ATM-STD-MIB and the MPLS-LDP-FRAME-RELAY-STD-MIB ๐ The MPLS-LDP-STD-MIB defines objects which are common to all LDP implementations ๐ฅ The MPLS-LDP-GENERIC-STD-MIB defines Layer 2 Per Platform Label Space objects for use with the MPLS-LDP-STD-MIB ๐ธ The MPLS-LDP-ATM-STD-MIB defines Layer 2 Asynchronous Transfer Mode (ATM) objects for use with the MPLS-LDP-STD-MIB ๐ง And the MPLS-LDP-FRAME-RELAY-STD-MIB defines Layer 2 FRAME-RELAY objects for use with the MPLS-LDP-STD-MIB ๐
ngl this part is the big rule-set so read closely ๐ The MPLS-LDP-STD-MIB Module MUST be implemented, and at least one of the Layer 2 MIB Modules MUST be implemented by an Agent developer on a Label Switching Router (LSR) or Label Edge Router (LER) ๐ฅ For example, if an LSR or LER implementation intends to support LDP over a Layer 2 of Ethernet, then the MPLS-LDP-STD-MIB and the MPLS-LDP-GENERIC-STD-MIB Modules MUST be implemented ๐ If an LSR/LER implementation intends to support LDP over a Layer 2 of ATM, then the MPLS-LDP-STD-MIB Module and the MPLS-LDP-ATM-MIB Module MUST be implemented ๐ญ If an LSR/LER implementation intends to support LDP over a Layer 2 of FRAME-RELAY, then the MPLS-LDP-STD-MIB Module and the MPLS-LDP-FRAME-RELAY-STD-MIB Module MUST be implemented ๐ And an LDP implementation that uses all three Layer 2 media (Ethernet, Frame-Relay, ATM) MUST support all 4 MIB Modules ๐ Each of the Modules gets discussed in detail in the following sections ๐ซถ
There are 2 compliance statements for each MIB Module ๐ One is for full compliance, which allows both configuration and monitoring via SNMP ๐ The other is for read-only compliance, which allows only monitoring via SNMP ๐ฆ
3.2. Future Considerations ๐ง
The LDP Specification [RFC3036] does not specify the use of VPNs or multicast for LDP, so objects related to these areas have not been included ๐
[RFC2684] does not describe VP merge capability, so this feature has not been included ๐
These areas need to be specified in the LDP Specification or other specifications before being added in this or any other MIB document ๐ธ
3.3. Interface Indexing ๐
Interface Indexes as specified in [RFC2863] are used in these MIB Modules ๐ The descriptions of the ifIndexes say which ifIndex is being used ๐ The use of ifIndex is for actual existing connections ๐ฆ
3.4. Differences from the LDP Specification โจ
Currently, there are 3 differences between this specification and the LDP Specification ๐ฅ As mentioned in the Introduction, this document is almost entirely based on the LDP specification, and the differences are documented here ๐ซถ
The first difference is that the LDP Entity Table contains some DEFVAL clauses which are not explicitly specified in the LDP Specification ๐ These values, even though they're not documented in the LDP Specification, are widely used by existing LDP MIB implementations, so they've been adopted within this MPLS-LDP-STD-MIB module ๐ธ Please note they can certainly be changed during row creation or a subsequent SET request ๐
The second difference is the mplsLdpEntityGenericLRTable in the MPLS-LDP-GENERIC-STD-MIB Module ๐ง This table lets you reserve a range of generic labels, but it does not exist in the LDP Specification ๐ญ It was added to the MIB because of a request from the working group, and because the table was considered useful for reserving a range of generic labels ๐
The third difference is documented by the TEXTUAL-CONVENTION MplsAtmVcIdentifier, which is in the MPLS-TC-STD-MIB [RFC3811] ๐ This TC was added to restrict vci values to be greater than 31, as described in RFC 3035 [RFC3035] ๐ฅ
3.5. The MPLS-LDP-STD-MIB Module ๐
This MIB Module contains objects which are common to all LDP implementations ๐ This MIB Module MUST always be implemented along with one or more of the Layer 2 MIB Modules ๐ It IMPORTS IndexInteger and IndexIntegerNextFree TEXTUAL-CONVENTIONs from [RFC3289], and IMPORTS InetAddressPrefixLength, InetAddressType, InetAddressInetPortNumber TEXTUAL-CONVENTIONs from [RFC3291] ๐ฆ
The mplsLdpEntityTable table lets a Label Edge Router (LER) or a Label Switching Router (LSR) initiate and/or receive requests to establish LDP sessions ๐ง Since the LDP protocol distributes labels and establishes sessions with Peers, most of the tables in this module are populated by the agent as instructed by the LDP protocol ๐ซถ The exception is the mplsFecTable and the mplsLdpLspFecTable, which can be configured by the operator to specify Forwarding Equivalence Class information for an LSP ๐ฅ
Some scalars and each table in the MPLS-LDP-STD-MIB Module are described in the following subsections ๐
okay that's part 1 of 18 bestie, so stay tuned for the next drop ๐ โจ
3.5.1. LDP Scalar Objects โจ
okay so the LDP MIB has a bunch of scalar objects ๐
first up is mplsLdpLsrId, a read-only one that reports the Label Switching Router's (LSR's) Identifier ๐ชช This MUST be a globally unique value, such as the 32-bit router ID assigned to the LSR. no cap, that's a hard rule ๐ฅ
mplsLdpLsrLoopDetectionCapable tells you whether the LSR can do loop detection and, if it can, which form ๐
then there are two LastChange scalars, mplsLdpEntityLastChange and mplsLdpPeerLastChange ๐ฐ๏ธ they give you a hint about whether the number of entries in a table changed, or whether any values in those tables changed. check each object's description for the deets ๐
mplsLdpEntityIndexNext gets its own section up next ๐ง
3.5.2. The LDP Entity Table ๐
The MPLS-LDP-STD-MIB gives you objects to configure and set up potential LDP sessions on a specific LSR/LER ๐ ๏ธ the mplsLdpEntityTable is where the info LDP uses to set up potential LDP Sessions lives ๐ฆ
each entry (row) in this table is one LDP Entity ๐ธ there's no maximum number of LDP Entities specified, but the command generator should retrieve mplsLdpEntityIndexNext before creating an LDP Entity ๐ if mplsLdpEntityIndexNext is zero, that means the LSR/LER can't make another LDP Entity right now ๐ญ
3.5.2.1. Changing Values After Session Establishment ๐
one way to tweak a session's params is with SNMP, by changing the MIB objects tied to that session ๐ but be extra careful if you're touching MIB objects used in MPLS LDP Session Initialization โ ๏ธ if you change any of those after session initialization has started, the whole session has to be halted, and anything that session learned must be discarded ๐๏ธ then you modify the objects and start session initialization again. assuming you configured everything right, a brand new session gets created โจ
for example ๐ say an operator wants to change the configuration of a Label Range used by a session that's already up. they should set mplsLdpEntityAdminStatus to "disable(2)". doing that tears the session down (it tells LDP to send tear down messages for that session) ๐ the Agent should also remove all info related to that session from this MIB, including the Peer info (the relevant row in the mplsPeerTable) and the Session stats (the relevant row in the mplsLdpSessionTable) ๐งน also, if the MPLS-LSR-STD-MIB module [RFC3813] is implemented and the optional Mapping Table objects are implemented, all info about the LSPs in that session should be removed from those MIB modules too. [For more information please see the section on "The Mapping Tables".] ๐บ๏ธ now the operator can change the Label Range ๐ last step: set mplsLdpEntityAdminStatus to "enable(1)". session initialization kicks off, so the LDP Entity can go through Session Initialization to tell the Peer about the new Label Ranges and set up new LSPs ๐
3.5.3. The LDP Entity Statistics Table ๐
The mplsLpdEntityStatsTable is a read-only table with stats about failed attempts to establish sessions ๐ค each row in this table AUGMENTS an mplsLdpEntityEntry. it can help you figure out how to reconfigure stuff so a session actually comes up โจ for instance, if the mplsLdpEntityStatsSessionRejectedLRErrors Counter object keeps going up, that means the Label Range (LR) may need adjusting ๐ง
3.5.4. The LDP Peer Table ๐ซถ
The mplsLdpPeerTable is read-only and holds info about LDP Peers known to LDP Entities ๐ฏ peer info is learned by LDP through initialization or discovery ๐ this table should be populated by the agent as directed by the LDP protocol.
A row here relates to one or more rows in the Hello Adjacency Table and to a single row in the Session Table ๐งฉ the Peer table values are specific to a Peer and might or might not match the values used in the session, because the Peer and Entity negotiate some values together ๐ค the Entity's values are configured in the mplsLdpEntityTable, and the Peer's values are learned and placed into the mplsLdpPeerTable. the mplsLdpSessionTable shows the values actually used to establish the session ๐
one example where they can differ is the Peer's Path Limit info ๐ฃ๏ธ that's learned during the session initialization phase, and the actual Path Vector Limit value is the Peer's, so it might not match what shows up in the session. if the Entity and Peer don't match on it, the session uses the Path Limit set by the Entity (not the Peer's) ๐
the Peer Table info got its own table, separate from the Session info, so the MIB model could be more comprehensive and coherent ๐ง
3.5.5. The LDP Session Table ๐ฌ
mplsLdpSessionTable is read-only ๐ each entry is a single session between an LDP Entity and a Peer. mplsLdpSessionEntry AUGMENTS the mplsLdpPeerEntry.
the info here is learned during session establishment ๐ฑ NOTE: rows in this table will show up during session initialization.
3.5.6. The LDP Session Statistics Table ๐
mplsLdpSessionStatsTable is read-only and has stats on sessions ๐ this table AUGMENTS the mplsLdpPeerTable.
3.5.7. The LDP Hello Adjacency Table ๐
This is a table of all adjacencies between all LDP Entities and all LDP Peers ๐ธ๏ธ a Session may have one or more adjacencies. a session should not have zero adjacencies, because that means it has lost contact with the Peer ๐ฑ a session with zero Hello Adjacencies should be removed ๐๏ธ
3.5.8. The LDP LSP Tables ๐ค๏ธ
The Label Information Base (LIB) holds info about labels the LSR learned ๐ท๏ธ the LIB for LDP, CR-LDP and MPLS-RSVP (aka all currently defined MPLS protocols) is represented in the LSR MIB [RFC3813]. The LIB is shown by the LSR MIB's mplsXCTable (mpls Cross Connect Table), mplsInSegmentTable (mpls In Segment Table) and mplsOutSegmentTable (mpls Out Segment Table). mplsXCTable models the cross-connection of an incoming label with a specific outgoing label. mplsInSegmentTable stores the incoming label's info, and mplsOutSegmentTable stores the outgoing label's info ๐ซ
The LDP Session that created the LSP, plus the LSP's (incoming label, outgoing label) pair and other info, lives in the MPLS-LSR-STD-MIB module's mplsXCTable, mplsInSegmentTable and mplsOutSegmentTable ๐๏ธ
To use those three tables for LDP LSPs, you need a way to link LDP sessions to the LDP LSPs made from them ๐ that's what mplsInSegmentLdpLspTable and mplsOutSegmentLdpLspTable in this MIB are for: they help you find the LDP LSP entries in mplsInSegmentTable, mplsOutSegmentTable and mplsXCTable ๐
those two tables are optional in the conformance section of the MIB ๐ they only need to be supported if the LSR MIB's mplsInSegmentTable, mplsOutSegmentTable and mplsXCTable are implemented ๐
Like in "Changing Values After Session Establishment", if a session is torn down, all the info related to it must be removed from the LDP MIB and, if implemented, from the LSR MIB ๐งผ
3.5.9. The FEC Tables ๐งพ
mplsLdpFecTable contains FEC (Forwarding Equivalence Class) info, and each entry (row) is a single FEC Element ๐ there's also an LDP LSP FEC Table, mplsLdpLspFecTable, which associates FECs with the LSPs ๐
3.5.10. The LDP Session Peer Address Table ๐ก
mplsLdpSessionPeerAddrTable extends the mplsLdpSessionTable โจ it's read-only and stores Addresses learned after session initialization via Address Message advertisement ๐ฌ
3.6. LDP Notifications ๐
ok so there are several notifications that are specific to LDP, and they're described in this section ๐ฃ there are no objects that enable or disable them. [RFC3413] contains MIB modules you can implement to turn these notifications on or off ๐๏ธ
The mplsLdpInitSessionThresholdExceeded notification tells the operator there may be a misconfigured mplsLdpEntityEntry ๐จ because the session for this Entity isn't getting established, and the Entity keeps trying ๐ฉ a side effect is that a row in the mplsLdpSessionTable may not reach the operational state shown by mplsLdpSessionState ๐ if mplsLdpEntityInitSessionThreshold is 0 (zero), that's the same as setting the threshold to infinity, so mplsLdpInitSessionThresholdExceeded will never be sent ๐
The mplsLdpPathVectorLimitMismatch notification is generated when the Path Vector Limits between the Entity and Peer don't match during session initialization โ๏ธ the session uses the value configured as the Entity's Path Vector Limit, but a notification should still be generated to say a mismatch happened ๐ฃ for further details, see Section 3.5.3 of the LDP Specification [RFC3036] ๐
The mplsLdpSessionUp and mplsLdpSessionDown notifications are generated when there's an appropriate change in the mplsLdpSessionState object, e.g., when sessions change state (Up to Down for the mplsLdpSessionDown notification, or Down to Up for the mplsLdpSessionUp notification) ๐ people talked about combining these two into one notification, but some NMS applications can use two different notifications instead of having to parse the varbind list of a single one ๐งฉ for example, some NMS apps match SessionDown to a SessionUp more easily than they can parse a Varbind list in a SessionChange type of notification ๐
3.7. LDP Notification Frequency ๐ข
LDP Notifications are expected to be few in number when LDP is ubiquitously deployed in a relatively stable network ๐ค๏ธ a notification receiver (e.g., an NMS) that gets these should not be overwhelmed by how often they show up ๐ช if this assertion turns out to be inaccurate, a throttling object to throttle these notifications may be added to future versions of the MPLS-LDP-STD-MIB ๐ฎ
4. MPLS Label Distribution Protocol MIB Definitions โจ
MPLS-LDP-STD-MIB DEFINITIONS ::= BEGIN
okay bestie, the MIB module is where it gets real ๐ all the actual object definitions live in here, so every detail matters ๐
IMPORTS
OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE,
Integer32, Counter32, Unsigned32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF -- [RFC2580]
RowStatus, TimeInterval, TruthValue,
TimeStamp, StorageType
FROM SNMPv2-TC -- [RFC2579]
InetAddressPrefixLength,
InetAddressType,
InetAddress,
InetPortNumber
FROM INET-ADDRESS-MIB -- [RFC3291]
IndexInteger,
IndexIntegerNextFree
FROM DIFFSERV-MIB -- [RFC3289]
mplsStdMIB,
MplsLabelDistributionMethod,
MplsLdpIdentifier,
MplsLdpLabelType,
MplsLspType,
MplsLsrIdentifier,
MplsRetentionMode
FROM MPLS-TC-STD-MIB -- [RFC3811]
MplsIndexType
FROM MPLS-LSR-STD-MIB; -- [RFC3813]
mplsLdpStdMIB MODULE-IDENTITY
LAST-UPDATED "200406030000Z" -- June 3, 2004
ORGANIZATION "Multiprotocol Label Switching (mpls)
Working Group"
CONTACT-INFO
"Joan Cucchiara (jcucchiara@mindspring.com)
Marconi Communications, Inc.
Hans Sjostrand (hans@ipunplugged.com)
ipUnplugged
James V. Luciani (james_luciani@mindspring.com)
Marconi Communications, Inc.
Working Group Chairs:
George Swallow, email: swallow@cisco.com
Loa Andersson, email: loa@pi.se
MPLS Working Group, email: mpls@uu.net"
DESCRIPTION
"Copyright (C) The Internet Society (2004). The
initial version of this MIB module was published
in RFC 3815. For full legal notices see the RFC
itself or see:
http://www.ietf.org/copyrights/ianamib.html
This MIB contains managed object definitions for the
'Multiprotocol Label Switching, Label Distribution
Protocol, LDP' document."
REVISION "200406030000Z" -- June 3, 2004
DESCRIPTION
"Initial version published as part of RFC 3815."
::= { mplsStdMIB 4 }
this bit is the module's ID card ๐ชช โจ it says who wrote it, when it was last updated (June 3, 2004 ๐ธ), and that the first version came out in RFC 3815 ๐
--****************************************************************
mplsLdpNotifications OBJECT IDENTIFIER ::= { mplsLdpStdMIB 0 }
mplsLdpObjects OBJECT IDENTIFIER ::= { mplsLdpStdMIB 1 }
mplsLdpConformance OBJECT IDENTIFIER ::= { mplsLdpStdMIB 2 }
--****************************************************************
-- MPLS LDP Objects
--****************************************************************
mplsLdpLsrObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 1 }
mplsLdpEntityObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 2 }
--
-- The MPLS Label Distribution Protocol's
-- Label Switching Router Objects
--
mplsLdpLsrId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Label Switching Router's Identifier."
::= { mplsLdpLsrObjects 1 }
mplsLdpLsrLoopDetectionCapable OBJECT-TYPE
SYNTAX INTEGER {
none(1),
other(2),
hopCount(3),
pathVector(4),
hopCountAndPathVector(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A indication of whether this
Label Switching Router supports
loop detection.
none(1) -- Loop Detection is not supported
on this LSR.
other(2) -- Loop Detection is supported but
by a method other than those
listed below.
hopCount(3) -- Loop Detection is supported by
Hop Count only.
pathVector(4) -- Loop Detection is supported by
Path Vector only.
hopCountAndPathVector(5) -- Loop Detection is
supported by both Hop Count
And Path Vector.
Since Loop Detection is determined during
Session Initialization, an individual session
may not be running with loop detection. This
object simply gives an indication of whether or not the
LSR has the ability to support Loop Detection and
which types."
::= { mplsLdpLsrObjects 2 }
ok so the LSR objects are the router-wide stuff ๐ ๐ฆ the loop detection one is lowkey my fave: it tells you what the router CAN do, but not what any single session is actually running, because that gets sorted out during session initialization ๐
--
-- The MPLS Label Distribution Protocol Entity Objects
--
mplsLdpEntityLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time of the most
recent addition or deletion of an entry
to/from the mplsLdpEntityTable/mplsLdpEntityStatsTable, or
the most recent change in value of any objects in the
mplsLdpEntityTable.
If no such changes have occurred since the last
re-initialization of the local management subsystem,
then this object contains a zero value."
::= { mplsLdpEntityObjects 1 }
mplsLdpEntityIndexNext OBJECT-TYPE
SYNTAX IndexIntegerNextFree
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object contains an appropriate value to
be used for mplsLdpEntityIndex when creating
entries in the mplsLdpEntityTable. The value
0 indicates that no unassigned entries are
available."
::= { mplsLdpEntityObjects 2 }
mplsLdpEntityTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains information about the
MPLS Label Distribution Protocol Entities which
exist on this Label Switching Router (LSR)
or Label Edge Router (LER)."
::= { mplsLdpEntityObjects 3 }
mplsLdpEntityEntry OBJECT-TYPE
SYNTAX MplsLdpEntityEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents an LDP entity.
An entry can be created by a network administrator
or by an SNMP agent as instructed by LDP."
INDEX { mplsLdpEntityLdpId, mplsLdpEntityIndex }
::= { mplsLdpEntityTable 1 }
MplsLdpEntityEntry ::= SEQUENCE {
mplsLdpEntityLdpId MplsLdpIdentifier,
mplsLdpEntityIndex IndexInteger,
mplsLdpEntityProtocolVersion Unsigned32,
mplsLdpEntityAdminStatus INTEGER,
mplsLdpEntityOperStatus INTEGER,
mplsLdpEntityTcpPort InetPortNumber,
mplsLdpEntityUdpDscPort InetPortNumber,
mplsLdpEntityMaxPduLength Unsigned32,
mplsLdpEntityKeepAliveHoldTimer Unsigned32,
mplsLdpEntityHelloHoldTimer Unsigned32,
mplsLdpEntityInitSessionThreshold Integer32,
mplsLdpEntityLabelDistMethod MplsLabelDistributionMethod,
mplsLdpEntityLabelRetentionMode MplsRetentionMode,
mplsLdpEntityPathVectorLimit Integer32,
mplsLdpEntityHopCountLimit Integer32,
mplsLdpEntityTransportAddrKind INTEGER,
mplsLdpEntityTargetPeer TruthValue,
mplsLdpEntityTargetPeerAddrType InetAddressType,
mplsLdpEntityTargetPeerAddr InetAddress,
mplsLdpEntityLabelType MplsLdpLabelType,
mplsLdpEntityDiscontinuityTime TimeStamp,
mplsLdpEntityStorageType StorageType,
mplsLdpEntityRowStatus RowStatus
}
mplsLdpEntityLdpId OBJECT-TYPE
SYNTAX MplsLdpIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The LDP identifier."
REFERENCE
"RFC3036, LDP Specification, Section on LDP Identifiers."
::= { mplsLdpEntityEntry 1 }
mplsLdpEntityIndex OBJECT-TYPE
SYNTAX IndexInteger
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This index is used as a secondary index to uniquely
identify this row. Before creating a row in this table,
the 'mplsLdpEntityIndexNext' object should be retrieved.
That value should be used for the value of this index
when creating a row in this table. NOTE: if a value
of zero (0) is retrieved, that indicates that no rows
can be created in this table at this time.
A secondary index (this object) is meaningful to some
but not all, LDP implementations. For example
an LDP implementation which uses PPP would
use this index to differentiate PPP sub-links.
Another way to use this index is to give this the
value of ifIndex. However, this is dependant
on the implementation."
::= { mplsLdpEntityEntry 2 }
mplsLdpEntityProtocolVersion OBJECT-TYPE
SYNTAX Unsigned32(1..65535)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The version number of the LDP protocol which will be
used in the session initialization message.
Section 3.5.3 in the LDP Specification specifies
that the version of the LDP protocol is negotiated during
session establishment. The value of this object
represents the value that is sent in the initialization
message."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3 Initialization
Message."
DEFVAL { 1 }
::= { mplsLdpEntityEntry 3 }
mplsLdpEntityAdminStatus OBJECT-TYPE
SYNTAX INTEGER {
enable(1),
disable(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The administrative status of this LDP Entity.
If this object is changed from 'enable' to 'disable'
and this entity has already attempted to establish
contact with a Peer, then all contact with that
Peer is lost and all information from that Peer
needs to be removed from the MIB. (This implies
that the network management subsystem should clean
up any related entry in the mplsLdpPeerTable. This
further implies that a 'tear-down' for that session
is issued and the session and all information related
to that session cease to exist).
At this point the operator is able to change values
which are related to this entity.
When the admin status is set back to 'enable', then
this Entity will attempt to establish a new session
with the Peer."
DEFVAL { enable }
::= { mplsLdpEntityEntry 4 }
the entity table is where the magic happens ๐ each row is an LDP entity, and the index is basically the row's address book entry ๐ heads up bestie ๐จ flipping AdminStatus from enable to disable doesn't just pause things, it tears down the session and wipes that peer's info from the MIB ๐ so be careful with that one ๐ซถ
Okay so this part is all about the MIB objects for each LDP Entity, and bestie, the way they're set up is lowkey iconic ๐ Here's the full definition block, copied exactly as written:
mplsLdpEntityOperStatus OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
enabled(2),
disabled(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The operational status of this LDP Entity.
The value of unknown(1) indicates that the
operational status cannot be determined at
this time. The value of unknown should be
a transient condition before changing
to enabled(2) or disabled(3)."
::= { mplsLdpEntityEntry 5 }
mplsLdpEntityTcpPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The TCP Port for
LDP. The default value is the well-known
value of this port."
REFERENCE
"RFC3036, LDP Specification, Section 3.10, Well-known
Numbers, and Section 3.10.1. UDP and TCP Ports."
DEFVAL { 646 }
::= { mplsLdpEntityEntry 6 }
mplsLdpEntityUdpDscPort OBJECT-TYPE
SYNTAX InetPortNumber
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The UDP Discovery Port for
LDP. The default value is the
well-known value for this port."
REFERENCE
"RFC3036, LDP Specification, Section 2.4.1,
Basic Discovery Mechanism, Section 2.4.2,
Extended Discovery Mechanism, Section
3.10, Well-known Numbers, and Section 3.10.1.
UDP and TCP Ports."
DEFVAL { 646 }
::= { mplsLdpEntityEntry 7 }
mplsLdpEntityMaxPduLength OBJECT-TYPE
SYNTAX Unsigned32 (256..65535)
UNITS "octets"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum PDU Length that is sent in
the Common Session Parameters of an Initialization
Message. According to the LDP Specification [RFC3036]
a value of 255 or less specifies the
default maximum length of 4096 octets, this is why
the value of this object starts at 256. The operator
should explicitly choose the default value (i.e., 4096),
or some other value.
The receiving LSR MUST calculate the maximum PDU
length for the session by using the smaller of its and
its peer's proposals for Max PDU Length."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3.
Initialization Message."
DEFVAL { 4096 }
::= { mplsLdpEntityEntry 8 }
mplsLdpEntityKeepAliveHoldTimer OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The 16-bit integer value which is the proposed keep
alive hold timer for this LDP Entity."
DEFVAL { 40 }
::= { mplsLdpEntityEntry 9 }
mplsLdpEntityHelloHoldTimer OBJECT-TYPE
SYNTAX Unsigned32 (0..65535)
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The 16-bit integer value which is the proposed Hello
hold timer for this LDP Entity. The Hello Hold time
in seconds.
An LSR maintains a record of Hellos received
from potential peers. This object represents
the Hold Time in the Common Hello Parameters TLV of
the Hello Message.
A value of 0 is a default value and should be
interpretted in conjunction with the
mplsLdpEntityTargetPeer object.
If the value of this object is 0: if the value of the
mplsLdpEntityTargetPeer object is false(2), then this
specifies that the Hold Time's actual default value is
15 seconds (i.e., the default Hold time for Link Hellos
is 15 seconds). Otherwise if the value of the
mplsLdpEntityTargetPeer object is true(1), then this
specifies that the Hold Time's actual default value is
45 seconds (i.e., the default Hold time for Targeted
Hellos is 45 seconds).
A value of 65535 means infinite (i.e., wait forever).
All other values represent the amount of time in
seconds to wait for a Hello Message. Setting the
hold time to a value smaller than 15 is not
recommended, although not forbidden according
to RFC3036."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.2.,
Hello Message."
DEFVAL { 0 }
::= { mplsLdpEntityEntry 10 }
mplsLdpEntityInitSessionThreshold OBJECT-TYPE
SYNTAX Integer32(0..100)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"When attempting to establish a session with
a given Peer, the given LDP Entity should
send out the SNMP notification,
'mplsLdpInitSessionThresholdExceeded', when
the number of Session Initialization messages
sent exceeds this threshold.
The notification is used to notify an
operator when this Entity and its Peer are
possibly engaged in an endless sequence
of messages as each NAKs the other's
Initialization messages with Error Notification
messages. Setting this threshold which triggers
the notification is one way to notify the
operator. The notification should be generated
each time this threshold is exceeded and
for every subsequent Initialization message
which is NAK'd with an Error Notification
message after this threshold is exceeded.
A value of 0 (zero) for this object
indicates that the threshold is infinity, thus
the SNMP notification will never be generated."
REFERENCE
"RFC3036, LDP Specification,
Section 2.5.3 Session Initialization."
DEFVAL { 8 }
::= { mplsLdpEntityEntry 11 }
mplsLdpEntityLabelDistMethod OBJECT-TYPE
SYNTAX MplsLabelDistributionMethod
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"For any given LDP session, the method of
label distribution must be specified."
::= { mplsLdpEntityEntry 12 }
mplsLdpEntityLabelRetentionMode OBJECT-TYPE
SYNTAX MplsRetentionMode
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The LDP Entity can be configured to use either
conservative or liberal label retention mode.
If the value of this object is conservative(1)
then advertized label mappings are retained
only if they will be used to forward packets,
i.e., if label came from a valid next hop.
If the value of this object is liberal(2)
then all advertized label mappings are retained
whether they are from a valid next hop or not."
::= { mplsLdpEntityEntry 13 }
mplsLdpEntityPathVectorLimit OBJECT-TYPE
SYNTAX Integer32 (0..255)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the value of this object is 0 (zero) then
Loop Detection for Path Vectors is disabled.
Otherwise, if this object has a value greater than
zero, then Loop Dection for Path Vectors is enabled,
and the Path Vector Limit is this value.
Also, the value of the object,
'mplsLdpLsrLoopDetectionCapable', must be set to
either 'pathVector(4)' or 'hopCountAndPathVector(5)',
if this object has a value greater than 0 (zero),
otherwise it is ignored."
REFERENCE
"RFC3036, LDP Specification, Section 2.8 Loop Dection,
Section 3.4.5 Path Vector TLV."
::= { mplsLdpEntityEntry 14 }
mplsLdpEntityHopCountLimit OBJECT-TYPE
SYNTAX Integer32 (0..255)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the value of this object is 0 (zero),
then Loop Detection using Hop Counters is
disabled.
If the value of this object is greater than
0 (zero) then Loop Detection using Hop
Counters is enabled, and this object
specifies this Entity's maximum allowable
value for the Hop Count.
Also, the value of the object
mplsLdpLsrLoopDetectionCapable must be set
to either 'hopCount(3)' or
'hopCountAndPathVector(5)' if this object
has a value greater than 0 (zero), otherwise
it is ignored."
DEFVAL { 0 }
::= { mplsLdpEntityEntry 15 }
mplsLdpEntityTransportAddrKind OBJECT-TYPE
SYNTAX INTEGER {
interface(1),
loopback(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This specifies whether the loopback or interface
address is to be used as the transport address
in the transport address TLV of the
hello message.
If the value is interface(1), then the IP
address of the interface from which hello
messages are sent is used as the transport
address in the hello message.
Otherwise, if the value is loopback(2), then the IP
address of the loopback interface is used as the
transport address in the hello message."
DEFVAL { loopback }
::= { mplsLdpEntityEntry 16 }
mplsLdpEntityTargetPeer OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If this LDP entity uses targeted peer then set
this to true."
DEFVAL { false }
::= { mplsLdpEntityEntry 17 }
mplsLdpEntityTargetPeerAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of the internetwork layer address used for
the Extended Discovery. This object indicates how
the value of mplsLdpEntityTargetPeerAddr is to
be interpreted."
::= { mplsLdpEntityEntry 18 }
mplsLdpEntityTargetPeerAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value of the internetwork layer address
used for the Extended Discovery. The value of
mplsLdpEntityTargetPeerAddrType specifies how
this address is to be interpreted."
::= { mplsLdpEntityEntry 19 }
mplsLdpEntityLabelType OBJECT-TYPE
SYNTAX MplsLdpLabelType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Specifies the optional parameters for the LDP
Initialization Message.
If the value is generic(1) then no
optional parameters will be sent in
the LDP Initialization message associated
with this Entity.
Let's go through these, bestie ๐ง
mplsLdpEntityOperStatus ๐ธ is the read-only status for an LDP Entity. It can be unknown(1), enabled(2), or disabled(3). Unknown is only supposed to be a temporary state before it flips to enabled or disabled, so don't panic if you spot it briefly ๐
mplsLdpEntityTcpPort ๐ and mplsLdpEntityUdpDscPort ๐ both default to 646, which is the well-known LDP port. Sooo iconic. The UDP one is the discovery port, and the paperwork points you to RFC3036 for the details, which is very on-brand for this whole doc ๐
mplsLdpEntityMaxPduLength ๐ฆ is the max PDU length that gets proposed in the Common Session Parameters of an Initialization Message. Here's the tea: a value of 255 or less means the default of 4096 octets, which is why this object starts at 256. The operator should explicitly pick either 4096 or something else. Also, the receiving LSR MUST work out the session's max PDU length by taking the smaller of its own proposal and its peer's proposal. Non-negotiable, periodt ๐
mplsLdpEntityKeepAliveHoldTimer ๐ is the proposed keep alive hold timer, in seconds, and it defaults to 40.
mplsLdpEntityHelloHoldTimer ๐ซถ is the proposed Hello hold timer for the Common Hello Parameters TLV. This one is a whole thing ๐ A value of 0 means "use the default," and which default depends on mplsLdpEntityTargetPeer. For link Hellos (false), it's 15 seconds. For targeted Hellos (true), it's 45 seconds. A value of 65535 means wait forever. Setting it below 15 isn't recommended, but RFC3036 doesn't forbid it, so the vibe is "be careful, not banned" ๐ญ
mplsLdpEntityInitSessionThreshold ๐ฅ sets when the mplsLdpInitSessionThresholdExceeded notification should go out while an Entity is trying to set up a session with a Peer. It's there to catch the endless-NAK loop, where two LSRs keep rejecting each other's Initialization messages with Error Notifications. The range is 0 to 100, the default is 8, and 0 means infinity, so you'll never get the notification at all ๐
mplsLdpEntityLabelDistMethod โจ says the label distribution method has to be specified for any given LDP session. Simple, but very important ๐
mplsLdpEntityLabelRetentionMode ๐ lets you pick conservative(1) or liberal(2). Conservative only keeps label mappings you'll actually use to forward packets, meaning they came from a valid next hop. Liberal keeps all of them, valid next hop or not. Pick your fighter ๐
mplsLdpEntityPathVectorLimit ๐ turns Path Vector loop detection on or off. Zero means off. Anything above zero turns it on and sets the limit. For that to work, mplsLdpLsrLoopDetectionCapable has to be pathVector(4) or hopCountAndPathVector(5), otherwise this object gets ignored ๐
mplsLdpEntityHopCountLimit ๐ง does the same job for Hop Count loop detection. Zero means disabled, and anything above zero sets the max Hop Count. That only counts if mplsLdpLsrLoopDetectionCapable is hopCount(3) or hopCountAndPathVector(5), otherwise it's ignored ๐
mplsLdpEntityTransportAddrKind ๐ chooses between interface(1) and loopback(2) for the transport address in the Hello message's transport address TLV. Interface uses the IP of the interface sending the Hellos, and loopback uses the loopback interface's IP. The default is loopback, which is giving stable identity ๐ฆ
mplsLdpEntityTargetPeer ๐ is a TruthValue that's false by default. Set it to true if this LDP entity uses a targeted peer, and that's it ๐ซถ
mplsLdpEntityTargetPeerAddrType ๐ and mplsLdpEntityTargetPeerAddr ๐ are the pair that handles Extended Discovery. The type tells you how to read the address, and the address is the internetwork layer address for the target peer ๐ธ
Last but not least, mplsLdpEntityLabelType ๐ is cut off at the end of this part. It specifies the optional parameters for the LDP Initialization Message, and when the value is generic(1), no optional parameters get sent in that Initialization message. More to come next part, bestie โจ
okay bestie, we're still in the stats table era ๐โจ The first bit picks up where the last part left off, so here's the rest of the entity config stuff, including the row lifecycle drama ๐
If the value is atmParameters(2) then
a row must be created in the
mplsLdpEntityAtmTable, which
corresponds to this entry.
If the value is frameRelayParameters(3) then
a row must be created in the
mplsLdpEntityFrameRelayTable, which
corresponds to this entry."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3.,
Initialization Message."
::= { mplsLdpEntityEntry 20 }
mplsLdpEntityDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion
at which any one or more of this entity's counters
suffered a discontinuity. The relevant counters
are the specific instances associated with this
entity of any Counter32 object contained
in the 'mplsLdpEntityStatsTable'. If no such
discontinuities have occurred since the last
re-initialization of the local management
subsystem, then this object contains a zero
value."
::= { mplsLdpEntityEntry 21 }
mplsLdpEntityStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL{ nonVolatile }
::= { mplsLdpEntityEntry 22 }
mplsLdpEntityRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any
time, however, as described in detail in
the section entitled, 'Changing Values After
Session Establishment', and again described
in the DESCRIPTION clause of the
mplsLdpEntityAdminStatus object, if a session
has been initiated with a Peer, changing objects
in this table will wreak havoc with the session
and interrupt traffic. To repeat again:
the recommended procedure is to
set the mplsLdpEntityAdminStatus to down, thereby
explicitly causing a session to be torn down. Then,
change objects in this entry, then set
the mplsLdpEntityAdminStatus to enable,
which enables a new session to be initiated."
::= { mplsLdpEntityEntry 23 }
--
-- The MPLS LDP Entity Statistics Table
--
mplsLdpEntityStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is a read-only table which augments
the mplsLdpEntityTable. The purpose of this
table is to keep statistical information about
the LDP Entities on the LSR."
::= { mplsLdpEntityObjects 4 }
mplsLdpEntityStatsEntry OBJECT-TYPE
SYNTAX MplsLdpEntityStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A row in this table contains statistical information
about an LDP Entity. Some counters contained in a
row are for fatal errors received during a former
LDP Session associated with this entry. For example,
an LDP PDU received on a TCP connection during an
LDP Session contains a fatal error. That
error is counted here, because the
session is terminated.
If the error is NOT fatal (i.e., the Session
remains), then the error is counted in the
mplsLdpSessionStatsEntry."
AUGMENTS { mplsLdpEntityEntry }
::= { mplsLdpEntityStatsTable 1 }
MplsLdpEntityStatsEntry ::= SEQUENCE {
mplsLdpEntityStatsSessionAttempts Counter32,
mplsLdpEntityStatsSessionRejectedNoHelloErrors Counter32,
mplsLdpEntityStatsSessionRejectedAdErrors Counter32,
mplsLdpEntityStatsSessionRejectedMaxPduErrors Counter32,
mplsLdpEntityStatsSessionRejectedLRErrors Counter32,
mplsLdpEntityStatsBadLdpIdentifierErrors Counter32,
mplsLdpEntityStatsBadPduLengthErrors Counter32,
mplsLdpEntityStatsBadMessageLengthErrors Counter32,
mplsLdpEntityStatsBadTlvLengthErrors Counter32,
mplsLdpEntityStatsMalformedTlvValueErrors Counter32,
mplsLdpEntityStatsKeepAliveTimerExpErrors Counter32,
mplsLdpEntityStatsShutdownReceivedNotifications Counter32,
mplsLdpEntityStatsShutdownSentNotifications Counter32
}
mplsLdpEntityStatsSessionAttempts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the Session Initialization messages
which were sent or received by this LDP Entity and
were NAK'd. In other words, this counter counts
the number of session initializations that failed.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 1 }
mplsLdpEntityStatsSessionRejectedNoHelloErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the Session Rejected/No Hello Error
Notification Messages sent or received by
this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 2 }
mplsLdpEntityStatsSessionRejectedAdErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the Session Rejected/Parameters
Advertisement Mode Error Notification Messages sent
or received by this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 3 }
mplsLdpEntityStatsSessionRejectedMaxPduErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the Session Rejected/Parameters
Max Pdu Length Error Notification Messages sent
or received by this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 4 }
mplsLdpEntityStatsSessionRejectedLRErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the Session Rejected/Parameters
Label Range Notification Messages sent
or received by this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 5 }
mplsLdpEntityStatsBadLdpIdentifierErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Bad LDP Identifier
Fatal Errors detected by the session(s)
(past and present) associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 6 }
mplsLdpEntityStatsBadPduLengthErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Bad PDU Length
Fatal Errors detected by the session(s)
(past and present) associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 7 }
mplsLdpEntityStatsBadMessageLengthErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Bad Message
Length Fatal Errors detected by the session(s)
(past and present) associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 8 }
mplsLdpEntityStatsBadTlvLengthErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Bad TLV
Length Fatal Errors detected by the session(s)
(past and present) associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 9 }
mplsLdpEntityStatsMalformedTlvValueErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Malformed TLV
Value Fatal Errors detected by the session(s)
(past and present) associated with this
LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 10 }
that's the end of this chunk, and the error counters are about to get even more iconic ๐ฆ๐
Okay bestie, the MIB is still going and it's giving whole-ass tables ๐ Here's the next batch of stats counters ๐
mplsLdpEntityStatsKeepAliveTimerExpErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Session Keep Alive
Timer Expired Errors detected by the session(s)
(past and present) associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.1.2."
::= { mplsLdpEntityStatsEntry 11 }
mplsLdpEntityStatsShutdownReceivedNotifications OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Shutdown Notifications
received related to session(s) (past and present)
associated with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 12 }
mplsLdpEntityStatsShutdownSentNotifications OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Shutdown Notfications
sent related to session(s) (past and present) associated
with this LDP Entity.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpEntityDiscontinuityTime."
::= { mplsLdpEntityStatsEntry 13 }
Lowkey the vibe here is "counting all the drama," bestie ๐ซถ Keep-alive timer expiries, shutdown notifications received, and shutdown notifications sent, all tracked per LDP Entity across past and present sessions. Discontinuities can happen on re-initialization, and the entity's discontinuity time tells you when ๐ฐ๏ธ
Now we get to the peer table ๐ It's the info about LDP peers that an Entity knows about, and it's built from what they swap during session initialization. It's a separate table from the session table on purpose, because some of these objects might not get used when a session is actually being set up ๐ธ
--
-- The MPLS LDP Peer Table
--
mplsLdpSessionObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 3 }
mplsLdpPeerLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time of the most
recent addition or deletion to/from the
mplsLdpPeerTable/mplsLdpSessionTable."
::= { mplsLdpSessionObjects 1 }
mplsLdpPeerTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpPeerEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about LDP peers known by Entities in
the mplsLdpEntityTable. The information in this table
is based on information from the Entity-Peer interaction
during session initialization but is not appropriate
for the mplsLdpSessionTable, because objects in this
table may or may not be used in session establishment."
::= { mplsLdpSessionObjects 2 }
mplsLdpPeerEntry OBJECT-TYPE
SYNTAX MplsLdpPeerEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about a single Peer which is related
to a Session. This table is augmented by
the mplsLdpSessionTable."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId }
::= { mplsLdpPeerTable 1 }
MplsLdpPeerEntry ::= SEQUENCE {
mplsLdpPeerLdpId MplsLdpIdentifier,
mplsLdpPeerLabelDistMethod MplsLabelDistributionMethod,
mplsLdpPeerPathVectorLimit Integer32,
mplsLdpPeerTransportAddrType InetAddressType,
mplsLdpPeerTransportAddr InetAddress
}
mplsLdpPeerLdpId OBJECT-TYPE
SYNTAX MplsLdpIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The LDP identifier of this LDP Peer."
::= { mplsLdpPeerEntry 1 }
mplsLdpPeerLabelDistMethod OBJECT-TYPE
SYNTAX MplsLabelDistributionMethod
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"For any given LDP session, the method of
label distribution must be specified."
::= { mplsLdpPeerEntry 2 }
mplsLdpPeerPathVectorLimit OBJECT-TYPE
SYNTAX Integer32 (0..255)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If the value of this object is 0 (zero) then
Loop Dection for Path Vectors for this Peer
is disabled.
Otherwise, if this object has a value greater than
zero, then Loop Dection for Path Vectors for this
Peer is enabled and the Path Vector Limit is this value."
REFERENCE
"RFC3036, LDP Specification, Section 2.8 Loop Dection,
Section 3.4.5 Path Vector TLV."
::= { mplsLdpPeerEntry 3 }
mplsLdpPeerTransportAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of the Internet address for the
mplsLdpPeerTransportAddr object. The LDP
specification describes this as being either
an IPv4 Transport Address or IPv6 Transport
Address which is used in opening the LDP session's
TCP connection, or if the optional TLV is not
present, then this is the IPv4/IPv6 source
address for the UPD packet carrying the Hellos.
This object specifies how the value of the
mplsLdpPeerTransportAddr object should be
interpreted."
REFERENCE
"RFC3036, LDP Specification, Section 2.5.2
Transport Connection Establishment and
Section 3.5.2.1 Hello Message Procedures."
::= { mplsLdpPeerEntry 4 }
mplsLdpPeerTransportAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Internet address advertised by the peer
in the Hello Message or the Hello source address.
The type of this address is specified by the
value of the mplsLdpPeerTransportAddrType
object."
REFERENCE
"RFC3036, LDP Specification, Section 2.5.2
Transport Connection Establishment and
Section 3.5.2.1 Hello Message Procedures."
::= { mplsLdpPeerEntry 5 }
Okay so the peer table is basically a little roster ๐ง Each peer gets an LDP identifier, a label distribution method (which has to be specified for any given session, no skipping ๐ โโ๏ธ), a path vector limit where 0 means loop detection is off and anything above 0 turns it on with that limit ๐, and a transport address with a type that tells you how to read it ๐ The transport address is either the one advertised in the Hello Message or the Hello source address, depending on the situation ๐
Next up is the sessions table ๐ฆ Each row is one session between an LDP Entity and an LDP Peer, and it augments the peer table. It's read-only, and the values can differ from what's configured if they got negotiated. If both sides already match, there's no negotiation, so the values stay the same ๐ค
--
-- The MPLS LDP Sessions Table
--
mplsLdpSessionTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpSessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of Sessions between the LDP Entities
and LDP Peers. This table AUGMENTS the
mplsLdpPeerTable. Each row in this table
represents a single session."
::= { mplsLdpSessionObjects 3 }
mplsLdpSessionEntry OBJECT-TYPE
SYNTAX MplsLdpSessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information on a
single session between an LDP Entity and LDP Peer.
The information contained in a row is read-only.
Please note: the Path Vector Limit for the
Session is the value which is configured in
the corresponding mplsLdpEntityEntry. The
Peer's Path Vector Limit is in the
mplsLdpPeerPathVectorLimit object in the
mplsLdpPeerTable.
Values which may differ from those configured are
noted in the objects of this table, the
mplsLdpAtmSessionTable and the
mplsLdpFrameRelaySessionTable. A value will
differ if it was negotiated between the
Entity and the Peer. Values may or may not
be negotiated. For example, if the values
are the same then no negotiation takes place.
If they are negotiated, then they may differ."
AUGMENTS { mplsLdpPeerEntry }
::= { mplsLdpSessionTable 1 }
MplsLdpSessionEntry ::= SEQUENCE {
mplsLdpSessionStateLastChange TimeStamp,
mplsLdpSessionState INTEGER,
mplsLdpSessionRole INTEGER,
mplsLdpSessionProtocolVersion Unsigned32,
mplsLdpSessionKeepAliveHoldTimeRem TimeInterval,
mplsLdpSessionKeepAliveTime Unsigned32,
mplsLdpSessionMaxPduLength Unsigned32,
mplsLdpSessionDiscontinuityTime TimeStamp
}
mplsLdpSessionStateLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time this
Session entered its current state as
denoted by the mplsLdpSessionState
object."
::= { mplsLdpSessionEntry 1 }
mplsLdpSessionState OBJECT-TYPE
SYNTAX INTEGER {
nonexistent(1),
initialized(2),
openrec(3),
opensent(4),
operational(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the session, all of the
states 1 to 5 are based on the state machine
for session negotiation behavior."
REFERENCE
"RFC3036, LDP Specification, Section 2.5.4,
Initialization State Machine."
::= { mplsLdpSessionEntry 2 }
mplsLdpSessionRole OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
active(2),
passive(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"During session establishment the LSR/LER takes either
the active role or the passive role based on address
comparisons. This object indicates whether this LSR/LER
was behaving in an active role or passive role during
this session's establishment.
The value of unknown(1), indicates that the role is not
able to be determined at the present time."
REFERENCE
"RFC3036, LDP Specification, Section 2.5.3.,
Session Initialization"
::= { mplsLdpSessionEntry 3 }
mplsLdpSessionProtocolVersion OBJECT-TYPE
SYNTAX Unsigned32(1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The version of the LDP Protocol which
this session is using. This is the version of
the LDP protocol which has been negotiated
during session initialization."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3,
Initialization Message."
::= { mplsLdpSessionEntry 4 }
mplsLdpSessionKeepAliveHoldTimeRem OBJECT-TYPE
SYNTAX TimeInterval
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The keep alive hold time remaining for
this session."
::= { mplsLdpSessionEntry 5 }
The session state is the star of this section โจ It goes nonexistent, initialized, openrec, opensent, and then operational, and each of those comes from the session negotiation state machine. The role is either active or passive, decided by address comparisons during setup, with unknown showing up if it can't be figured out yet ๐ And the protocol version is whatever got negotiated during initialization, so you know which LDP version you're actually talking ๐ซถ
Lowkey I'm obsessed with the keep alive hold time remaining, because it's literally the countdown on how long this session has left before things get dicey ๐
mplsLdpSessionKeepAliveTime OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The negotiated KeepAlive Time which
represents the amount of seconds between
keep alive messages. The
mplsLdpEntityKeepAliveHoldTimer
related to this Session is the
value that was proposed as the
KeepAlive Time for this session.
This value is negotiated during
session initialization between
the entity's proposed value
(i.e., the value configured in
mplsLdpEntityKeepAliveHoldTimer)
and the peer's proposed
KeepAlive Hold Timer value.
This value is the smaller
of the two proposed values."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3,
Initialization Message."
::= { mplsLdpSessionEntry 6 }
mplsLdpSessionMaxPduLength OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of maximum allowable length for LDP PDUs for
this session. This value may have been negotiated
during the Session Initialization. This object is
related to the mplsLdpEntityMaxPduLength object. The
mplsLdpEntityMaxPduLength object specifies the requested
LDP PDU length, and this object reflects the negotiated
LDP PDU length between the Entity and
the Peer."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3,
Initialization Message."
::= { mplsLdpSessionEntry 7 }
mplsLdpSessionDiscontinuityTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime on the most recent occasion
at which any one or more of this session's counters
suffered a discontinuity. The relevant counters are
the specific instances associated with this session
of any Counter32 object contained in the
mplsLdpSessionStatsTable.
The initial value of this object is the value of
sysUpTime when the entry was created in this table.
Also, a command generator can distinguish when a session
between a given Entity and Peer goes away and a new
session is established. This value would change and
thus indicate to the command generator that this is a
different session."
::= { mplsLdpSessionEntry 8 }
okay bestie, the session timers are giving main character energy ๐ Let's keep going!
--
-- The MPLS LDP Session Statistics Table
--
mplsLdpSessionStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpSessionStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of statistics for Sessions between
LDP Entities and LDP Peers. This table AUGMENTS
the mplsLdpPeerTable."
::= { mplsLdpSessionObjects 4 }
mplsLdpSessionStatsEntry OBJECT-TYPE
SYNTAX MplsLdpSessionStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents statistical
information on a single session between an LDP
Entity and LDP Peer."
AUGMENTS { mplsLdpPeerEntry }
::= { mplsLdpSessionStatsTable 1 }
MplsLdpSessionStatsEntry ::= SEQUENCE {
mplsLdpSessionStatsUnknownMesTypeErrors Counter32,
mplsLdpSessionStatsUnknownTlvErrors Counter32
}
mplsLdpSessionStatsUnknownMesTypeErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Unknown Message Type
Errors detected by this LSR/LER during this session.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpSessionDiscontinuityTime."
::= { mplsLdpSessionStatsEntry 1 }
mplsLdpSessionStatsUnknownTlvErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object counts the number of Unknown TLV Errors
detected by this LSR/LER during this session.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
mplsLdpSessionDiscontinuityTime."
::= { mplsLdpSessionStatsEntry 2 }
--
-- The MPLS LDP Hello Adjacency Table
--
mplsLdpHelloAdjacencyObjects OBJECT IDENTIFIER ::=
{ mplsLdpSessionObjects 5 }
mplsLdpHelloAdjacencyTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpHelloAdjacencyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of Hello Adjacencies for Sessions."
::= { mplsLdpHelloAdjacencyObjects 1 }
mplsLdpHelloAdjacencyEntry OBJECT-TYPE
SYNTAX MplsLdpHelloAdjacencyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each row represents a single LDP Hello Adjacency.
An LDP Session can have one or more Hello
Adjacencies."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsLdpHelloAdjacencyIndex }
::= { mplsLdpHelloAdjacencyTable 1 }
MplsLdpHelloAdjacencyEntry ::= SEQUENCE {
mplsLdpHelloAdjacencyIndex Unsigned32,
mplsLdpHelloAdjacencyHoldTimeRem TimeInterval,
mplsLdpHelloAdjacencyHoldTime Unsigned32,
mplsLdpHelloAdjacencyType INTEGER
}
mplsLdpHelloAdjacencyIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An identifier for this specific adjacency."
::= { mplsLdpHelloAdjacencyEntry 1 }
mplsLdpHelloAdjacencyHoldTimeRem OBJECT-TYPE
SYNTAX TimeInterval
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"If the value of this object is 65535,
this means that the hold time is infinite
(i.e., wait forever).
Otherwise, the time remaining for
this Hello Adjacency to receive its
next Hello Message.
This interval will change when the 'next'
Hello Message which corresponds to this
Hello Adjacency is received unless it
is infinite."
::= { mplsLdpHelloAdjacencyEntry 2 }
mplsLdpHelloAdjacencyHoldTime OBJECT-TYPE
SYNTAX Unsigned32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Hello hold time which is negotiated between
the Entity and the Peer. The entity associated
with this Hello Adjacency issues a proposed
Hello Hold Time value in the
mplsLdpEntityHelloHoldTimer object. The peer
also proposes a value and this object represents
the negotiated value.
A value of 0 means the default,
which is 15 seconds for Link Hellos
and 45 seconds for Targeted Hellos.
A value of 65535 indicates an
infinite hold time."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.2 Hello Message"
::= { mplsLdpHelloAdjacencyEntry 3 }
mplsLdpHelloAdjacencyType OBJECT-TYPE
SYNTAX INTEGER {
link(1),
targeted(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This adjacency is the result of a 'link'
hello if the value of this object is link(1).
Otherwise, it is a result of a 'targeted'
hello, targeted(2)."
::= { mplsLdpHelloAdjacencyEntry 4 }
--
-- Session Label (LSP) Mapping to LSR MIB's
-- In Segment LIB Information.
--
--
-- NOTE: the next 2 tables map to the
-- MPLS-LSR-STD-MIB's MplsInSegmentTable
-- and MplsOutSegmentTable. The
-- cross-connect (XC) information is not
-- represented here as it can be gleaned
-- from the MPLS-LSR-STD-MIB.
--
mplsInSegmentLdpLspTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsInSegmentLdpLspEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of LDP LSP's which
map to the mplsInSegmentTable in the
MPLS-LSR-STD-MIB module."
::= { mplsLdpSessionObjects 6 }
mplsInSegmentLdpLspEntry OBJECT-TYPE
SYNTAX MplsInSegmentLdpLspEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information
on a single LDP LSP which is represented by
a session's index triple (mplsLdpEntityLdpId,
mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the
index for the mplsInSegmentTable
(mplsInSegmentLdpLspLabelIndex) from the
MPLS-LSR-STD-MIB.
The information contained in a row is read-only."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsInSegmentLdpLspIndex
}
::= { mplsInSegmentLdpLspTable 1 }
MplsInSegmentLdpLspEntry ::= SEQUENCE {
mplsInSegmentLdpLspIndex MplsIndexType,
mplsInSegmentLdpLspLabelType MplsLdpLabelType,
mplsInSegmentLdpLspType MplsLspType
}
mplsInSegmentLdpLspIndex OBJECT-TYPE
SYNTAX MplsIndexType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This contains the same value as the
mplsInSegmentIndex in the
MPLS-LSR-STD-MIB's mplsInSegmentTable."
::= { mplsInSegmentLdpLspEntry 1 }
mplsInSegmentLdpLspLabelType OBJECT-TYPE
SYNTAX MplsLdpLabelType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Layer 2 Label Type."
::= { mplsInSegmentLdpLspEntry 2 }
mplsInSegmentLdpLspType OBJECT-TYPE
SYNTAX MplsLspType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of LSP connection."
::= { mplsInSegmentLdpLspEntry 3 }
--
-- Session Label (LSP) Mapping to LSR MIB's
-- Out Segment LIB Information.
--
okay bestie, the mplsOutSegmentLdpLspTable is where the LDP LSPs get lined up with the outsegment table from MPLS-LSR-STD-MIB ๐ โจ
mplsOutSegmentLdpLspTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsOutSegmentLdpLspEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of LDP LSP's which
map to the mplsOutSegmentTable in the
MPLS-LSR-STD-MIB."
::= { mplsLdpSessionObjects 7 }
mplsOutSegmentLdpLspEntry OBJECT-TYPE
SYNTAX MplsOutSegmentLdpLspEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information
on a single LDP LSP which is represented by
a session's index triple (mplsLdpEntityLdpId,
mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the
index (mplsOutSegmentLdpLspIndex)
for the mplsOutSegmentTable.
The information contained in a row is read-only."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsOutSegmentLdpLspIndex
}
::= { mplsOutSegmentLdpLspTable 1 }
MplsOutSegmentLdpLspEntry ::= SEQUENCE {
mplsOutSegmentLdpLspIndex MplsIndexType,
mplsOutSegmentLdpLspLabelType MplsLdpLabelType,
mplsOutSegmentLdpLspType MplsLspType
}
mplsOutSegmentLdpLspIndex OBJECT-TYPE
SYNTAX MplsIndexType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This contains the same value as the
mplsOutSegmentIndex in the
MPLS-LSR-STD-MIB's mplsOutSegmentTable."
::= { mplsOutSegmentLdpLspEntry 1 }
mplsOutSegmentLdpLspLabelType OBJECT-TYPE
SYNTAX MplsLdpLabelType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Layer 2 Label Type."
::= { mplsOutSegmentLdpLspEntry 2 }
mplsOutSegmentLdpLspType OBJECT-TYPE
SYNTAX MplsLspType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of LSP connection."
::= { mplsOutSegmentLdpLspEntry 3 }
--
-- Mpls FEC Table
--
mplsFecObjects OBJECT IDENTIFIER ::=
{ mplsLdpSessionObjects 8 }
mplsFecLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time of the most
recent addition/deletion of an entry
to/from the mplsLdpFectTable or
the most recent change in values to any objects
in the mplsLdpFecTable.
If no such changes have occurred since the last
re-initialization of the local management subsystem,
then this object contains a zero value."
::= { mplsFecObjects 1 }
mplsFecIndexNext OBJECT-TYPE
SYNTAX IndexIntegerNextFree
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object contains an appropriate value to
be used for mplsFecIndex when creating
entries in the mplsFecTable. The value
0 indicates that no unassigned entries are
available."
::= { mplsFecObjects 2 }
mplsFecTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFecEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table represents the FEC
(Forwarding Equivalence Class)
Information associated with an LSP."
::= { mplsFecObjects 3 }
mplsFecEntry OBJECT-TYPE
SYNTAX MplsFecEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each row represents a single FEC Element."
INDEX { mplsFecIndex }
::= { mplsFecTable 1 }
MplsFecEntry ::= SEQUENCE {
mplsFecIndex IndexInteger,
mplsFecType INTEGER,
mplsFecAddrType InetAddressType,
mplsFecAddr InetAddress,
mplsFecAddrPrefixLength InetAddressPrefixLength,
mplsFecStorageType StorageType,
mplsFecRowStatus RowStatus
}
mplsFecIndex OBJECT-TYPE
SYNTAX IndexInteger
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The index which uniquely identifies this entry."
::= { mplsFecEntry 1 }
mplsFecType OBJECT-TYPE
SYNTAX INTEGER {
prefix(1),
hostAddress(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The type of the FEC. If the value of this object
is 'prefix(1)' then the FEC type described by this
row is an address prefix.
If the value of this object is 'hostAddress(2)' then
the FEC type described by this row is a host address."
REFERENCE
"RFC3036, Section 3.4.1. FEC TLV."
::= { mplsFecEntry 2 }
mplsFecAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value of this object is the type of the
Internet address. The value of this object,
decides how the value of the mplsFecAddr object
is interpreted."
REFERENCE
"RFC3036, Section 3.4.1. FEC TLV."
::= { mplsFecEntry 4 }
mplsFecAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The value of this object is interpreted based
on the value of the 'mplsFecAddrType' object.
This address is then further interpretted as
an being used with the address prefix,
or as the host address. This further interpretation
is indicated by the 'mplsFecType' object.
In other words, the FEC element is populated
according to the Prefix FEC Element value encoding, or
the Host Address FEC Element encoding."
REFERENCE
"RFC3036, Section 3.4.1 FEC TLV."
::= { mplsFecEntry 5 }
mplsFecAddrPrefixLength OBJECT-TYPE
SYNTAX InetAddressPrefixLength
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the value of the 'mplsFecType' is 'hostAddress(2)'
then this object is undefined.
If the value of 'mplsFecType' is 'prefix(1)'
then the value of this object is the length in
bits of the address prefix represented by
'mplsFecAddr', or zero. If the value of this
object is zero, this indicates that the
prefix matches all addresses. In this case the
address prefix MUST also be zero (i.e., 'mplsFecAddr'
should have the value of zero.)"
REFERENCE
"RFC3036, Section 3.4.1. FEC TLV."
DEFVAL { 0 }
::= { mplsFecEntry 3 }
mplsFecStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsFecEntry 6 }
mplsFecRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. If the value of this
object is 'active(1)', then none of the writable objects
of this entry can be modified, except to set this object
to 'destroy(6)'.
NOTE: if this row is being referenced by any entry in
the mplsLdpLspFecTable, then a request to destroy
this row, will result in an inconsistentValue error."
::= { mplsFecEntry 7 }
--
-- LDP LSP FEC Table
--
mplsLdpLspFecLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time of the most
recent addition/deletion of an entry
to/from the mplsLdpLspFecTable or
the most recent change in values to any objects in the
mplsLdpLspFecTable.
If no such changes have occurred since the last
re-initialization of the local management subsystem,
then this object contains a zero value."
::= { mplsLdpSessionObjects 9 }
mplsLdpLspFecTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpLspFecEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table which shows the relationship between
LDP LSPs and FECs. Each row represents
a single LDP LSP to FEC association."
::= { mplsLdpSessionObjects 10 }
mplsLdpLspFecEntry OBJECT-TYPE
SYNTAX MplsLdpLspFecEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry represents a LDP LSP
to FEC association."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsLdpLspFecSegment,
mplsLdpLspFecSegmentIndex,
mplsLdpLspFecIndex
}
::= { mplsLdpLspFecTable 1 }
MplsLdpLspFecEntry ::= SEQUENCE {
mplsLdpLspFecSegment INTEGER,
mplsLdpLspFecSegmentIndex MplsIndexType,
mplsLdpLspFecIndex IndexInteger,
mplsLdpLspFecStorageType StorageType,
mplsLdpLspFecRowStatus RowStatus
}
mplsLdpLspFecSegment OBJECT-TYPE
SYNTAX INTEGER {
inSegment(1),
outSegment(2)
}
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"If the value is inSegment(1), then this
indicates that the following index,
mplsLdpLspFecSegmentIndex, contains the same
value as the mplsInSegmentLdpLspIndex.
Otherwise, if the value of this object is
outSegment(2), then this
indicates that following index,
mplsLdpLspFecSegmentIndex, contains the same
value as the mplsOutSegmentLdpLspIndex."
::= { mplsLdpLspFecEntry 1 }
mplsLdpLspFecSegmentIndex OBJECT-TYPE
SYNTAX MplsIndexType
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This index is interpretted by using the value
of the mplsLdpLspFecSegment.
If the mplsLdpLspFecSegment is inSegment(1),
then this index has the same value as
mplsInSegmentLdpLspIndex.
If the mplsLdpLspFecSegment is outSegment(2),
then this index has the same value as
mplsOutSegmentLdpLspIndex."
::= { mplsLdpLspFecEntry 2 }
that's the end of this chunk, and the FEC tables are looking so put-together ๐
Okay so bestie, the FEC row is basically the glue that links a session to its FEC ๐ Here's the index, storage type, and row status, plus the whole "how do I switch FECs without breaking things" dance ๐
mplsLdpLspFecIndex OBJECT-TYPE
SYNTAX IndexInteger
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This index identifies the FEC entry in the
mplsFecTable associated with this session.
In other words, the value of this index
is the same as the value of the mplsFecIndex
that denotes the FEC associated with this
Session."
::= { mplsLdpLspFecEntry 3 }
mplsLdpLspFecStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpLspFecEntry 4 }
mplsLdpLspFecRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. If the
value of this object is 'active(1)', then
none of the writable objects of this entry
can be modified.
The Agent should delete this row when
the session ceases to exist. If an
operator wants to associate the session with
a different FEC, the recommended
procedure is (as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the
mplsLdpEntityAdminStatus object)
is to set the mplsLdpEntityAdminStatus to
down, thereby explicitly causing a session
to be torn down. This will also
cause this entry to be deleted.
Then, set the mplsLdpEntityAdminStatus
to enable which enables a new session to be initiated.
Once the session is initiated, an entry may be
added to this table to associate the new session
with a FEC."
::= { mplsLdpLspFecEntry 5 }
Next up is the Session Peer Address table ๐ฆ It's basically the list of next-hop addresses that a peer told you about in its Address Messages, and it "sparse augments" the session table, which is a very fancy way of saying "it adds extra rows to the session info, only where needed" ๐ธ
--
-- Address Message/Address Withdraw Message Information
--
-- This information is associated with a specific Session
-- because Label Address Messages are sent after session
-- initialization has taken place.
--
mplsLdpSessionPeerAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpSessionPeerAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table 'extends' the mplsLdpSessionTable.
This table is used to store Label Address Information
from Label Address Messages received by this LSR from
Peers. This table is read-only and should be updated
when Label Withdraw Address Messages are received, i.e.,
Rows should be deleted as appropriate.
NOTE: since more than one address may be contained
in a Label Address Message, this table 'sparse augments',
the mplsLdpSessionTable's information."
::= { mplsLdpSessionObjects 11 }
mplsLdpSessionPeerAddrEntry OBJECT-TYPE
SYNTAX MplsLdpSessionPeerAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information on
a session's single next hop address which was
advertised in an Address Message from the LDP peer.
The information contained in a row is read-only."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsLdpSessionPeerAddrIndex
}
::= { mplsLdpSessionPeerAddrTable 1 }
MplsLdpSessionPeerAddrEntry ::= SEQUENCE {
mplsLdpSessionPeerAddrIndex Unsigned32,
mplsLdpSessionPeerNextHopAddrType InetAddressType,
mplsLdpSessionPeerNextHopAddr InetAddress
}
mplsLdpSessionPeerAddrIndex OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index which uniquely identifies this entry within
a given session."
::= { mplsLdpSessionPeerAddrEntry 1 }
mplsLdpSessionPeerNextHopAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The internetwork layer address type of this Next Hop
Address as specified in the Label Address Message
associated with this Session. The value of this
object indicates how to interpret the value of
mplsLdpSessionPeerNextHopAddr."
::= { mplsLdpSessionPeerAddrEntry 2 }
mplsLdpSessionPeerNextHopAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The next hop address. The type of this address
is specified by the value of the
mplsLdpSessionPeerNextHopAddrType."
REFERENCE
"RFC3036, Section 2.7. LDP Identifiers
and Next Hop Addresses"
::= { mplsLdpSessionPeerAddrEntry 3 }
Now the notifications, the little alarm bells of the MIB ๐ Each one is a heads-up for something happening with sessions or limits ๐
---
--- Notifications
---
mplsLdpInitSessionThresholdExceeded NOTIFICATION-TYPE
OBJECTS {
mplsLdpEntityInitSessionThreshold
}
STATUS current
DESCRIPTION
"This notification is generated when the value of
the 'mplsLdpEntityInitSessionThreshold' object
is not zero, and the number of Session
Initialization messages exceeds the value
of the 'mplsLdpEntityInitSessionThreshold' object."
::= { mplsLdpNotifications 1 }
mplsLdpPathVectorLimitMismatch NOTIFICATION-TYPE
OBJECTS {
mplsLdpEntityPathVectorLimit,
mplsLdpPeerPathVectorLimit
}
STATUS current
DESCRIPTION
"This notification is sent when the
'mplsLdpEntityPathVectorLimit' does NOT match
the value of the 'mplsLdpPeerPathVectorLimit' for
a specific Entity."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3."
::= { mplsLdpNotifications 2 }
mplsLdpSessionUp NOTIFICATION-TYPE
OBJECTS {
mplsLdpSessionState,
mplsLdpSessionDiscontinuityTime,
mplsLdpSessionStatsUnknownMesTypeErrors,
mplsLdpSessionStatsUnknownTlvErrors
}
STATUS current
DESCRIPTION
"If this notification is sent when the
value of 'mplsLdpSessionState' enters
the 'operational(5)' state."
::= { mplsLdpNotifications 3 }
mplsLdpSessionDown NOTIFICATION-TYPE
OBJECTS {
mplsLdpSessionState,
mplsLdpSessionDiscontinuityTime,
mplsLdpSessionStatsUnknownMesTypeErrors,
mplsLdpSessionStatsUnknownTlvErrors
}
STATUS current
DESCRIPTION
"This notification is sent when the
value of 'mplsLdpSessionState' leaves
the 'operational(5)' state."
::= { mplsLdpNotifications 4 }
Last bit for now: the conformance statements, which basically say which parts of the MIB you need to support, depending on whether you're doing read-write or read-only ๐ง Full compliance means you can monitor AND configure, and read-only means you just get to look ๐
--****************************************************************
-- Module Conformance Statement
--****************************************************************
mplsLdpGroups
OBJECT IDENTIFIER ::= { mplsLdpConformance 1 }
mplsLdpCompliances
OBJECT IDENTIFIER ::= { mplsLdpConformance 2 }
--
-- Full Compliance
--
mplsLdpModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support
for read-create and read-write. In other
words, both monitoring and configuration
are available when using this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS { mplsLdpGeneralGroup,
mplsLdpNotificationsGroup
}
GROUP mplsLdpLspGroup
DESCRIPTION
"This group must be supported if the LSR MIB is
implemented, specifically the mplsInSegmentTable,
the mplsOutSegmentTable or the mplsXCTable."
OBJECT mplsLdpEntityTargetPeerAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
DESCRIPTION
"An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsLdpEntityTargetPeerAddr
SYNTAX InetAddress (SIZE(0|4|16))
DESCRIPTION
"An implementation is only required to support IPv4 and
globally unique IPv6 addresses."
OBJECT mplsLdpEntityRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not
required."
OBJECT mplsFecAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
DESCRIPTION
"An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsFecAddr
SYNTAX InetAddress (SIZE(0|4|16))
DESCRIPTION
"An implementation is only required to support IPv4 and
globally unique IPv6 addresses."
OBJECT mplsFecRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not
required."
OBJECT mplsLdpLspFecRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not
required."
OBJECT mplsLdpSessionPeerNextHopAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
DESCRIPTION
"An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsLdpSessionPeerNextHopAddr
SYNTAX InetAddress (SIZE(0|4|16))
DESCRIPTION
"An implementation is only required to support IPv4
and globally unique IPv6 addresses."
::= { mplsLdpCompliances 1 }
--
-- Read-Only Compliance
--
mplsLdpModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support
for read-only. In other words, only monitoring
is available by implementing this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS { mplsLdpGeneralGroup,
mplsLdpNotificationsGroup
}
GROUP mplsLdpLspGroup
DESCRIPTION
"This group must be supported if the LSR MIB is
implemented, specifically the mplsInSegmentTable,
the mplsOutSegmentTable or the mplsXCTable."
OBJECT mplsLdpEntityProtocolVersion
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAdminStatus
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityTcpPort
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityUdpDscPort
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityMaxPduLength
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityKeepAliveHoldTimer
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityHelloHoldTimer
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityInitSessionThreshold
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityLabelDistMethod
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityLabelRetentionMode
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityPathVectorLimit
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityHopCountLimit
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityTransportAddrKind
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityTargetPeer
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityTargetPeerAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required.
An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsLdpEntityTargetPeerAddr
SYNTAX InetAddress (SIZE(0|4|16))
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required.
An implementation is only required to support IPv4 and
globally unique IPv6 addresses."
OBJECT mplsLdpEntityLabelType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
OBJECT mplsFecType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFecAddrPrefixLength
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFecAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required.
An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsFecAddr
SYNTAX InetAddress (SIZE(0|4|16))
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required.
An implementation is only required to support IPv4 and
globally unique IPv6 addresses."
OBJECT mplsFecStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFecRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
OBJECT mplsLdpLspFecStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpLspFecRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
OBJECT mplsLdpSessionPeerNextHopAddrType
SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) }
DESCRIPTION
"An implementation is only required to support
'unknown(0)', IPv4 and globally unique IPv6 addresses."
OBJECT mplsLdpSessionPeerNextHopAddr
SYNTAX InetAddress (SIZE(0|4|16))
DESCRIPTION
"An implementation is only required to support IPv4
and globally unique IPv6 addresses."
::= { mplsLdpCompliances 2 }
-- units of conformance
mplsLdpGeneralGroup OBJECT-GROUP
OBJECTS {
mplsLdpLsrId,
mplsLdpLsrLoopDetectionCapable,
mplsLdpEntityLastChange,
mplsLdpEntityIndexNext,
mplsLdpEntityProtocolVersion,
mplsLdpEntityAdminStatus,
mplsLdpEntityOperStatus,
mplsLdpEntityTcpPort,
mplsLdpEntityUdpDscPort,
mplsLdpEntityMaxPduLength,
mplsLdpEntityKeepAliveHoldTimer,
mplsLdpEntityHelloHoldTimer,
mplsLdpEntityInitSessionThreshold,
mplsLdpEntityLabelDistMethod,
mplsLdpEntityLabelRetentionMode,
mplsLdpEntityPathVectorLimit,
mplsLdpEntityHopCountLimit,
mplsLdpEntityTransportAddrKind,
mplsLdpEntityTargetPeer,
mplsLdpEntityTargetPeerAddrType,
mplsLdpEntityTargetPeerAddr,
mplsLdpEntityLabelType,
mplsLdpEntityDiscontinuityTime,
mplsLdpEntityStorageType,
mplsLdpEntityRowStatus,
mplsLdpEntityStatsSessionAttempts,
mplsLdpEntityStatsSessionRejectedNoHelloErrors,
mplsLdpEntityStatsSessionRejectedAdErrors,
mplsLdpEntityStatsSessionRejectedMaxPduErrors,
mplsLdpEntityStatsSessionRejectedLRErrors,
mplsLdpEntityStatsBadLdpIdentifierErrors,
mplsLdpEntityStatsBadPduLengthErrors,
mplsLdpEntityStatsBadMessageLengthErrors,
mplsLdpEntityStatsBadTlvLengthErrors,
mplsLdpEntityStatsMalformedTlvValueErrors,
mplsLdpEntityStatsKeepAliveTimerExpErrors,
mplsLdpEntityStatsShutdownReceivedNotifications,
mplsLdpEntityStatsShutdownSentNotifications,
mplsLdpPeerLastChange,
mplsLdpPeerLabelDistMethod,
mplsLdpPeerPathVectorLimit,
mplsLdpPeerTransportAddrType,
mplsLdpPeerTransportAddr,
mplsLdpHelloAdjacencyHoldTimeRem,
mplsLdpHelloAdjacencyHoldTime,
mplsLdpHelloAdjacencyType,
mplsLdpSessionStateLastChange,
mplsLdpSessionState,
mplsLdpSessionRole,
mplsLdpSessionProtocolVersion,
mplsLdpSessionKeepAliveHoldTimeRem,
mplsLdpSessionKeepAliveTime,
mplsLdpSessionMaxPduLength,
mplsLdpSessionDiscontinuityTime,
mplsLdpSessionStatsUnknownMesTypeErrors,
mplsLdpSessionStatsUnknownTlvErrors,
mplsLdpSessionPeerNextHopAddrType,
mplsLdpSessionPeerNextHopAddr,
mplsFecLastChange,
mplsFecIndexNext,
mplsFecType,
mplsFecAddrType,
mplsFecAddr,
mplsFecAddrPrefixLength,
mplsFecStorageType,
mplsFecRowStatus
}
STATUS current
DESCRIPTION
"Objects that apply to all MPLS LDP implementations."
::= { mplsLdpGroups 1 }
mplsLdpLspGroup OBJECT-GROUP
OBJECTS {
mplsInSegmentLdpLspLabelType,
mplsInSegmentLdpLspType,
mplsOutSegmentLdpLspLabelType,
mplsOutSegmentLdpLspType,
mplsLdpLspFecLastChange,
mplsLdpLspFecStorageType,
mplsLdpLspFecRowStatus
}
STATUS current
DESCRIPTION
"These objects are for LDP implementations
which interface to the Label Information Base (LIB)
in the MPLS-LSR-STD-MIB. The LIB is
represented in the mplsInSegmentTable,
mplsOutSegmentTable and mplsXCTable."
::= { mplsLdpGroups 2 }
mplsLdpNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS { mplsLdpInitSessionThresholdExceeded,
mplsLdpPathVectorLimitMismatch,
mplsLdpSessionUp,
mplsLdpSessionDown
}
STATUS current
DESCRIPTION
"The notification for an MPLS LDP implementation."
::= { mplsLdpGroups 3 }
END
4.1. The MPLS-LDP-ATM-STD-MIB Module โจ
Okay bestie, this part is all about ATM ๐ฆ This MIB Module MUST be supported if LDP uses ATM as the Layer 2 medium. ๐ There are three tables in this MIB Module. Two of them are for configuring LDP to use ATM: the mplsLdpEntityAtmTable and the mplsLdpEntityAtmLRTable. ๐ The third one is the mplsLdpAtmSessionTable, which is read-only. This MIB Module IMPORTS the AtmVpIdentifier TEXTUAL-CONVENTION from [RFC2514]. ๐
4.1.1. The LDP Entity ATM Table
The mplsLdpEntityAtmTable is where you set up info that would otherwise be carried in the "Optional Parameter" portion of an LDP PDU Initialization Message. ๐ธ
4.1.2. The LDP Entity ATM Label Range Table
The mplsLdpEntityAtmLRTable lets you configure the info that would be in the "ATM Label Range Components" portion of an LDP PDU Initialization Message, see [RFC3035] and [RFC3036]. ๐ง
4.1.3. The LDP ATM Session Table
The MPLS LDP ATM Session Table is read-only ๐ซถ and it holds session info that's specific to ATM. ๐
Here's the MIB module itself, no cap it's a lot ๐ญ
MPLS-LDP-ATM-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE, MODULE-IDENTITY,
Unsigned32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
RowStatus,
StorageType
FROM SNMPv2-TC -- [RFC2579]
InterfaceIndexOrZero
FROM IF-MIB -- [RFC2020]
AtmVpIdentifier
FROM ATM-TC-MIB -- [RFC2514]
mplsStdMIB,
MplsAtmVcIdentifier
FROM MPLS-TC-STD-MIB -- [RFC3811]
mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId
FROM MPLS-LDP-STD-MIB -- [RFC3813]
;
mplsLdpAtmStdMIB MODULE-IDENTITY
LAST-UPDATED "200406030000Z" -- June 3, 2004
ORGANIZATION "Multiprotocol Label Switching (mpls)
Working Group"
CONTACT-INFO
"Joan Cucchiara (jcucchiara@mindspring.com)
Marconi Communications, Inc.
Hans Sjostrand (hans@ipunplugged.com)
ipUnplugged
James V. Luciani (james_luciani@mindspring.com)
Marconi Communications, Inc.
Working Group Chairs:
George Swallow, email: swallow@cisco.com
Loa Andersson, email: loa@pi.se
Picking up right where the ATM tables are, all the MIB code stays word-for-word so nothing gets lost in translation ๐ โจ
MPLS Working Group, email: mpls@uu.net
"
DESCRIPTION
"Copyright (C) The Internet Society (2004). The
initial version of this MIB module was published
in RFC 3815. For full legal notices see the RFC
itself or see:
http://www.ietf.org/copyrights/ianamib.html
This MIB contains managed object definitions for
configuring and monitoring the Multiprotocol Label
Switching (MPLS), Label Distribution Protocol (LDP),
utilizing Asynchronous Transfer Mode (ATM) as the Layer 2
media."
REVISION "200406030000Z" -- June 3, 2004
DESCRIPTION
"Initial version published as part of RFC 3815."
::= { mplsStdMIB 5 }
--****************************************************************
mplsLdpAtmObjects OBJECT IDENTIFIER
::= { mplsLdpAtmStdMIB 1 }
mplsLdpAtmConformance OBJECT IDENTIFIER
::= { mplsLdpAtmStdMIB 2 }
--****************************************************************
-- MPLS LDP ATM Objects
--****************************************************************
--
-- Ldp Entity Objects for ATM
--
mplsLdpEntityAtmObjects OBJECT IDENTIFIER ::=
{ mplsLdpAtmObjects 1 }
mplsLdpEntityAtmTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityAtmEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains ATM specific information
which could be used in the
'Optional Parameters' and other ATM specific
information.
This table 'sparse augments' the mplsLdpEntityTable
when ATM is the Layer 2 medium."
::= { mplsLdpEntityAtmObjects 1 }
mplsLdpEntityAtmEntry OBJECT-TYPE
SYNTAX MplsLdpEntityAtmEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents the ATM parameters
and ATM information for this LDP entity."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex
}
::= { mplsLdpEntityAtmTable 1 }
MplsLdpEntityAtmEntry ::= SEQUENCE {
mplsLdpEntityAtmIfIndexOrZero InterfaceIndexOrZero,
mplsLdpEntityAtmMergeCap INTEGER,
mplsLdpEntityAtmLRComponents Unsigned32,
mplsLdpEntityAtmVcDirectionality INTEGER,
mplsLdpEntityAtmLsrConnectivity INTEGER,
mplsLdpEntityAtmDefaultControlVpi AtmVpIdentifier,
mplsLdpEntityAtmDefaultControlVci MplsAtmVcIdentifier,
mplsLdpEntityAtmUnlabTrafVpi AtmVpIdentifier,
mplsLdpEntityAtmUnlabTrafVci MplsAtmVcIdentifier,
mplsLdpEntityAtmStorageType StorageType,
mplsLdpEntityAtmRowStatus RowStatus
}
mplsLdpEntityAtmIfIndexOrZero OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This value represents either the InterfaceIndex
or 0 (zero). The value of zero means that the
InterfaceIndex is not known.
However, if the InterfaceIndex is known, then it must
be represented by this value.
If an InterfaceIndex becomes known, then the
network management entity (e.g., SNMP agent) responsible
for this object MUST change the value from 0 (zero) to the
value of the InterfaceIndex. If an ATM Label is
being used in forwarding data, then the value of this
object MUST be the InterfaceIndex."
::= { mplsLdpEntityAtmEntry 1 }
mplsLdpEntityAtmMergeCap OBJECT-TYPE
SYNTAX INTEGER {
notSupported(0),
vpMerge(1),
vcMerge(2),
vpAndVcMerge(3)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Denotes the Merge Capability of this Entity.
This is the EXACT value for the ATM Session
Parameter, field M (for ATM Merge Capabilities).
The ATM Session Parameter is an optional
parameter in the Initialization Message.
The description from rfc3036.txt is:
'M, ATM Merge Capabilities
Specifies the merge capabilities of an ATM switch. The
following values are supported in this version of the
specification:
Value Meaning
0 Merge not supported
1 VP Merge supported
2 VC Merge supported
3 VP & VC Merge supported
If the merge capabilities of the LSRs differ, then:
- Non-merge and VC-merge LSRs may freely interoperate.
- The interoperability of VP-merge-capable switches
with non-VP-merge-capable switches is a subject
for future study. When the LSRs differ on the
use of VP-merge, the session is established,
but VP merge is not used.'
Please refer to the following reference for a
complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityAtmEntry 2 }
mplsLdpEntityAtmLRComponents OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of Label Range Components in the Initialization
message. This also represents the number of entries
in the mplsLdpEntityAtmLRTable which correspond
to this entry.
This is the EXACT value for the ATM Session Parameter,
field N (for Number of label range components).
The ATM Session Parameter is an optional parameter
in the Initialization Message.
The description from rfc3036.txt is:
'N, Number of label range components
Specifies the number of ATM Label Range
Components included in the TLV.'
Please refer to the following reference for
a complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityAtmEntry 3 }
mplsLdpEntityAtmVcDirectionality OBJECT-TYPE
SYNTAX INTEGER {
bidirectional(0),
unidirectional(1)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the value of this object is 'bidirectional(0)',
a given VCI, within a given VPI, is used as a
label for both directions independently.
If the value of this object is 'unidirectional(1)',
a given VCI within a VPI designates one direction.
This is the EXACT value for the ATM Session Parameter,
field D (for VC Directionality). The ATM Session
Parameter is an optional parameter in the
Initialization Message.
The description from rfc3036.txt is:
'D, VC Directionality
A value of 0 specifies bidirectional VC capability,
meaning the LSR can (within a given VPI) support
the use of a given VCI as a label for both link
directions independently. A value of 1
specifies unidirectional VC capability, meaning
(within a given VPI) a given VCI may appear in
a label mapping for one direction on the link
only. When either or both of the peers
specifies unidirectional VC capability, both
LSRs use unidirectional VC label assignment for
the link as follows. The LSRs compare their
LDP Identifiers as unsigned integers. The LSR
with the larger LDP Identifier may assign
only odd-numbered VCIs in the VPI/VCI
range as labels. The system with the smaller
LDP Identifier may assign only even-numbered
VCIs in the VPI/VCI range as labels.'
Please refer to the following reference
for a complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityAtmEntry 4 }
mplsLdpEntityAtmLsrConnectivity OBJECT-TYPE
SYNTAX INTEGER {
direct(1),
indirect(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The peer LSR may be connected indirectly by means
of an ATM VP so that the VPI values may be different
on either endpoint so the label MUST be encoded
entirely within the VCI field."
DEFVAL { direct }
::= { mplsLdpEntityAtmEntry 5 }
mplsLdpEntityAtmDefaultControlVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The default VPI value for the non-MPLS connection. The
default value of this is 0 (zero) but other values may
be configured. This object allows a different value
to be configured."
DEFVAL { 0 }
::= { mplsLdpEntityAtmEntry 6 }
mplsLdpEntityAtmDefaultControlVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Default VCI value for a non-MPLS connection. The
default value of this is 32 but other values may be
configured. This object allows a different value to
be configured."
DEFVAL { 32 }
::= { mplsLdpEntityAtmEntry 7 }
mplsLdpEntityAtmUnlabTrafVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"VPI value of the VCC supporting unlabeled traffic. This
non-MPLS connection is used to carry unlabeled (IP)
packets. The default value is the same as the default
value of the 'mplsLdpEntityAtmDefaultControlVpi', however
another value may be configured."
DEFVAL { 0 }
::= { mplsLdpEntityAtmEntry 8 }
mplsLdpEntityAtmUnlabTrafVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"VCI value of the VCC supporting unlabeled traffic.
This non-MPLS connection is used to carry unlabeled (IP)
packets. The default value is the same as the default
value of the 'mplsLdpEntityAtmDefaultControlVci', however
another value may be configured."
DEFVAL { 32 }
::= { mplsLdpEntityAtmEntry 9 }
mplsLdpEntityAtmStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpEntityAtmEntry 10 }
okay so the row status object is still doing the most, bestie ๐ Here's the rest of it, straight from the source:
mplsLdpEntityAtmRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any time,
however, as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the mplsLdpEntityAdminStatus
object, if a session has been initiated with a Peer,
changing objects in this table will wreak havoc
with the session and interrupt traffic. To repeat again:
the recommended procedure is to set the
mplsLdpEntityAdminStatus to down, thereby explicitly
causing a session to be torn down. Then,
change objects in this entry, then set the
mplsLdpEntityAdminStatus to enable
which enables a new session to be initiated."
::= { mplsLdpEntityAtmEntry 11 }
the vibe is serious, the warning is serious, and the ask is simple ๐ซถ always set mplsLdpEntityAdminStatus to down first, edit, then flip it back to enable. no skipping the step!! ๐
--
-- The MPLS LDP Entity ATM Label Range Table
--
mplsLdpEntityAtmLRTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityAtmLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The MPLS LDP Entity ATM Label Range (LR) Table.
The purpose of this table is to provide a mechanism
for configuring a contiguous range of vpi's
with a contiguous range of vci's, or a 'label range'
for LDP Entities.
LDP Entities which use ATM must have at least one
entry in this table.
There must exist at least one entry in this
table for every LDP Entity that has
'mplsLdpEntityOptionalParameters' object with
a value of 'atmSessionParameters'."
::= { mplsLdpEntityAtmObjects 2 }
mplsLdpEntityAtmLREntry OBJECT-TYPE
SYNTAX MplsLdpEntityAtmLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A row in the LDP Entity ATM Label
Range Table. One entry in this table contains
information on a single range of labels
represented by the configured Upper and Lower
Bounds VPI/VCI pairs. These are the same
data used in the Initialization Message.
NOTE: The ranges for a specific LDP Entity
are UNIQUE and non-overlapping. For example,
for a specific LDP Entity index, there could
be one entry having LowerBound vpi/vci == 0/32, and
UpperBound vpi/vci == 0/100, and a second entry
for this same interface with LowerBound
vpi/vci == 0/101 and UpperBound vpi/vci == 0/200.
However, there could not be a third entry with
LowerBound vpi/vci == 0/200 and
UpperBound vpi/vci == 0/300 because this label
range overlaps with the second entry (i.e., both
entries now have 0/200).
A row will not become active unless a unique and
non-overlapping range is specified.
At least one label range entry for a
specific LDP Entity MUST
include the default VPI/VCI values denoted
in the LDP Entity Table.
A request to create a row with an overlapping
range should result in an inconsistentValue
error."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpEntityAtmLRMinVpi,
mplsLdpEntityAtmLRMinVci
}
::= { mplsLdpEntityAtmLRTable 1 }
MplsLdpEntityAtmLREntry ::= SEQUENCE {
mplsLdpEntityAtmLRMinVpi AtmVpIdentifier,
mplsLdpEntityAtmLRMinVci MplsAtmVcIdentifier,
mplsLdpEntityAtmLRMaxVpi AtmVpIdentifier,
mplsLdpEntityAtmLRMaxVci MplsAtmVcIdentifier,
mplsLdpEntityAtmLRStorageType StorageType,
mplsLdpEntityAtmLRRowStatus RowStatus
}
mplsLdpEntityAtmLRMinVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The minimum VPI number configured for this range.
The value of zero is a valid value for the VPI portion
of the label."
::= { mplsLdpEntityAtmLREntry 1 }
mplsLdpEntityAtmLRMinVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The minimum VCI number configured for this range."
::= { mplsLdpEntityAtmLREntry 2 }
mplsLdpEntityAtmLRMaxVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum VPI number configured for this range."
::= { mplsLdpEntityAtmLREntry 3 }
mplsLdpEntityAtmLRMaxVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum VCI number configured for this range."
::= { mplsLdpEntityAtmLREntry 4 }
mplsLdpEntityAtmLRStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpEntityAtmLREntry 5 }
mplsLdpEntityAtmLRRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any time,
however, as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the
mplsLdpEntityAdminStatus object,
if a session has been initiated with a Peer,
changing objects in this table will
wreak havoc with the session and interrupt traffic.
To repeat again: the recommended procedure
is to set the mplsLdpEntityAdminStatus to
down, thereby explicitly causing a session
to be torn down. Then, change objects in this
entry, then set the mplsLdpEntityAdminStatus
to enable which enables a new session
to be initiated."
::= { mplsLdpEntityAtmLREntry 6 }
the label range table is where the vpi/vci bounds live, and the rules are strict: no overlaps, and one entry has to cover the default VPI/VCI values ๐งโจ
--
-- MPLS LDP ATM Session Information
--
mplsLdpAtmSessionObjects OBJECT IDENTIFIER ::=
{ mplsLdpAtmObjects 2 }
mplsLdpAtmSessionTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpAtmSessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table which relates sessions in the
'mplsLdpSessionTable' and their label
range intersections. There could be one
or more label range intersections between an
LDP Entity and LDP Peer using ATM as the
underlying media. Each row represents
a single label range intersection.
This table cannot use the 'AUGMENTS'
clause because there is not necessarily
a one-to-one mapping between this table
and the mplsLdpSessionTable."
::= { mplsLdpAtmSessionObjects 1 }
mplsLdpAtmSessionEntry OBJECT-TYPE
SYNTAX MplsLdpAtmSessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information on a
single label range intersection between an LDP Entity
and LDP Peer.
The information contained in a row is read-only."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsLdpSessionAtmLRLowerBoundVpi,
mplsLdpSessionAtmLRLowerBoundVci
}
::= { mplsLdpAtmSessionTable 1 }
MplsLdpAtmSessionEntry ::= SEQUENCE {
mplsLdpSessionAtmLRLowerBoundVpi AtmVpIdentifier,
mplsLdpSessionAtmLRLowerBoundVci MplsAtmVcIdentifier,
mplsLdpSessionAtmLRUpperBoundVpi AtmVpIdentifier,
mplsLdpSessionAtmLRUpperBoundVci MplsAtmVcIdentifier
}
mplsLdpSessionAtmLRLowerBoundVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The minimum VPI number for this range."
::= { mplsLdpAtmSessionEntry 1 }
mplsLdpSessionAtmLRLowerBoundVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The minimum VCI number for this range."
::= { mplsLdpAtmSessionEntry 2 }
mplsLdpSessionAtmLRUpperBoundVpi OBJECT-TYPE
SYNTAX AtmVpIdentifier
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum VPI number for this range."
::= { mplsLdpAtmSessionEntry 3 }
mplsLdpSessionAtmLRUpperBoundVci OBJECT-TYPE
SYNTAX MplsAtmVcIdentifier
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum VCI number for this range."
::= { mplsLdpAtmSessionEntry 4 }
the session table is read-only, so you can look but you can't touch ๐
--**************************************************************
-- Module Conformance Statement
--**************************************************************
mplsLdpAtmGroups
OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 1 }
mplsLdpAtmCompliances
OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 2 }
--
-- Full Compliance
--
mplsLdpAtmModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-create and read-write. In other words,
both monitoring and configuration
are available when using this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpAtmGroup
}
OBJECT mplsLdpEntityAtmRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
OBJECT mplsLdpEntityAtmLRRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
::= { mplsLdpAtmCompliances 1 }
--
-- Read-Only Compliance
--
mplsLdpAtmModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-only. In other words, only monitoring
is available by implementing this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpAtmGroup
}
OBJECT mplsLdpEntityAtmIfIndexOrZero
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmMergeCap
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmVcDirectionality
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmLsrConnectivity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
the compliance bit is where the full-access and read-only flavours get split up ๐ more of the MIB is coming, so hold tight ๐ธโจ
OBJECT mplsLdpEntityAtmDefaultControlVpi
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmDefaultControlVci
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmUnlabTrafVpi
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmUnlabTrafVci
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
OBJECT mplsLdpEntityAtmLRMaxVpi
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmLRMaxVci
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmLRStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityAtmLRRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
::= { mplsLdpAtmCompliances 2 }
--
-- units of conformance
--
mplsLdpAtmGroup OBJECT-GROUP
OBJECTS {
mplsLdpEntityAtmIfIndexOrZero,
mplsLdpEntityAtmMergeCap,
mplsLdpEntityAtmLRComponents,
mplsLdpEntityAtmVcDirectionality,
mplsLdpEntityAtmLsrConnectivity,
mplsLdpEntityAtmDefaultControlVpi,
mplsLdpEntityAtmDefaultControlVci,
mplsLdpEntityAtmUnlabTrafVpi,
mplsLdpEntityAtmUnlabTrafVci,
mplsLdpEntityAtmStorageType,
mplsLdpEntityAtmRowStatus,
mplsLdpEntityAtmLRMaxVpi,
mplsLdpEntityAtmLRMaxVci,
mplsLdpEntityAtmLRStorageType,
mplsLdpEntityAtmLRRowStatus,
mplsLdpSessionAtmLRUpperBoundVpi,
mplsLdpSessionAtmLRUpperBoundVci
}
STATUS current
DESCRIPTION
"Objects that apply to all MPLS LDP implementations
using ATM as the Layer 2."
::= { mplsLdpAtmGroups 1 }
END
4.2. The MPLS-LDP-FRAME-RELAY-STD-MIB Module ๐ฆ
okay bestie, this MIB Module MUST be supported if LDP uses Frame Relay as the Layer 2 medium ๐
that's the whole vibe. There are three tables in here. Two of them are for setting LDP up for Frame Relay (mplsLdpEntityFrameRelayTable and mplsLdpEntityFrameRelayLRTable), and the third one, mplsLdpFrameRelaySessionTable, is read-only, so you can look but you can't touch ๐ This MIB Module IMPORTS the DLCI TEXTUAL-CONVENTION from [RFC2115] โจ
4.2.1. The LDP Entity Frame Relay Table ๐
the mplsLdpEntityFrameRelayTable is where you configure the stuff that would normally live in the "Optional Parameter" part of an LDP PDU Initialization Message ๐ธ
4.2.2. The LDP Entity Frame Relay Label Range Table ๐
the mplsLdpEntityFrameRelayLRTable lets you configure the info that would sit in the "Frame Relay Label Range Components" portion of an LDP PDU Initialization Message, see [RFC3034] and [RFC3036] ๐ง
4.2.3. The LDP Frame Relay Session Table ๐
the mplsLdpFrameRelaySessionTable is the table holding session info that's specific to Frame Relay, so this is where the Frame Relay session details live ๐ซถ
MPLS-LDP-FRAME-RELAY-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE,
MODULE-IDENTITY,
Unsigned32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE,
OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
RowStatus,
StorageType
FROM SNMPv2-TC -- [RFC2579]
DLCI
FROM FRAME-RELAY-DTE-MIB -- [RFC2115]
InterfaceIndexOrZero
FROM IF-MIB -- [RFC2020]
mplsStdMIB
FROM MPLS-TC-STD-MIB -- [RFC3811]
mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId
FROM MPLS-LDP-STD-MIB -- [RFC3813]
;
mplsLdpFrameRelayStdMIB MODULE-IDENTITY
LAST-UPDATED "200406030000Z" -- June 3, 2004
ORGANIZATION "Multiprotocol Label Switching (mpls)
Working Group"
CONTACT-INFO
"Joan Cucchiara (jcucchiara@mindspring.com)
Marconi Communications, Inc.
Hans Sjostrand (hans@ipunplugged.com)
ipUnplugged
James V. Luciani (james_luciani@mindspring.com)
Marconi Communications, Inc.
Working Group Chairs:
George Swallow, email: swallow@cisco.com
Loa Andersson, email: loa@pi.se
MPLS Working Group, email: mpls@uu.net
"
DESCRIPTION
"Copyright (C) The Internet Society (year). The
initial version of this MIB module was published
in RFC 3815. For full legal notices see the RFC
itself or see:
http://www.ietf.org/copyrights/ianamib.html
This MIB contains managed object definitions for
configuring and monitoring the Multiprotocol Label
Switching (MPLS), Label Distribution Protocol (LDP),
utilizing Frame Relay as the Layer 2 media."
REVISION "200406030000Z" -- June 6, 2004
DESCRIPTION
"Initial version published as part of RFC 3815."
::= { mplsStdMIB 6 }
--****************************************************************
mplsLdpFrameRelayObjects OBJECT IDENTIFIER
::= { mplsLdpFrameRelayStdMIB 1 }
mplsLdpFrameRelayConformance OBJECT IDENTIFIER
::= { mplsLdpFrameRelayStdMIB 2 }
--****************************************************************
-- MPLS LDP Frame Relay Objects
--****************************************************************
--
-- Ldp Entity Objects for Frame Relay
--
mplsLdpEntityFrameRelayObjects OBJECT IDENTIFIER ::=
{ mplsLdpFrameRelayObjects 1 }
mplsLdpEntityFrameRelayTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains Frame Relay specific
information which could be used in the
'Optional Parameters' and other Frame Relay
specific information.
This table 'sparse augments' the mplsLdpEntityTable
when Frame Relay is the Layer 2 medium."
::= { mplsLdpEntityFrameRelayObjects 1 }
mplsLdpEntityFrameRelayEntry OBJECT-TYPE
SYNTAX MplsLdpEntityFrameRelayEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents the Frame Relay
optional parameters associated with the LDP entity."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex
}
::= { mplsLdpEntityFrameRelayTable 1 }
MplsLdpEntityFrameRelayEntry ::= SEQUENCE {
mplsLdpEntityFrameRelayIfIndexOrZero InterfaceIndexOrZero,
mplsLdpEntityFrameRelayMergeCap INTEGER,
mplsLdpEntityFrameRelayLRComponents Unsigned32,
mplsLdpEntityFrameRelayVcDirectionality INTEGER,
mplsLdpEntityFrameRelayStorageType StorageType,
mplsLdpEntityFrameRelayRowStatus RowStatus
}
mplsLdpEntityFrameRelayIfIndexOrZero OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This value represents either the InterfaceIndex of
the 'ifLayer' where the Frame Relay Labels 'owned' by this
entry were created, or 0 (zero). The value of zero
means that the InterfaceIndex is not known. For example,
if the InterfaceIndex is created subsequent to the
Frame Relay Label's creation, then it would not be known.
However, if the InterfaceIndex is known, then it must
be represented by this value.
If an InterfaceIndex becomes known, then the
network management entity (e.g., SNMP agent) responsible
for this object MUST change the value from 0 (zero) to the
value of the InterfaceIndex. If an Frame Relay Label is
being used in forwarding data, then the value of this
object MUST be the InterfaceIndex."
::= { mplsLdpEntityFrameRelayEntry 1 }
mplsLdpEntityFrameRelayMergeCap OBJECT-TYPE
SYNTAX INTEGER {
notSupported(0),
supported(1)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This represents whether or not the Frame Relay merge
capability is supported. This is the EXACT value for the
Frame Relay Session Parameter, field M (for Frame Relay
Merge Capabilities). The Frame Relay Session Parameter
is an optional parameter in the Initialization Message.
The description from rfc3036.txt is:
'M, Frame Relay Merge Capabilities
Specifies the merge capabilities of a Frame
Relay switch. The following values are
supported in this version of the
specification:
Value Meaning
0 Merge not supported
1 Merge supported
Non-merge and merge Frame Relay LSRs may
freely interoperate.'
Please refer to the following reference for a
complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityFrameRelayEntry 2 }
mplsLdpEntityFrameRelayLRComponents OBJECT-TYPE
SYNTAX Unsigned32 (1..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of Label Range Components in the Initialization
message. This also represents the number of entries
in the mplsLdpEntityFrameRelayLRTable which correspond
to this entry.
This is the EXACT value for the Frame Relay Session
Parameter, field N (for Number of label range
components). The Frame Relay Session Parameter
is an optional parameter in the Initialization
Message.
The description from rfc3036.txt is:
'N, Number of label range components
Specifies the number of Frame Relay Label
Range Components included in the TLV.'
Please refer to the following reference for a
complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityFrameRelayEntry 3 }
mplsLdpEntityFrameRelayVcDirectionality OBJECT-TYPE
SYNTAX INTEGER {
bidirectional(0),
unidirection(1)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"If the value of this object is 'bidirectional(0)', then
the LSR supports the use of a given DLCI as a label for
both directions independently. If the value of
this object is 'unidirectional(1)', then the LSR
uses the given DLCI as a label in only one direction.
This is the EXACT value for the Frame Relay Session
Parameter, field D (for VC Directionality). The
Frame Relay Session Parameter is an optional
parameter in the Initialization Message.
The description from rfc3036.txt is:
'D, VC Directionality
A value of 0 specifies bidirectional VC capability,
meaning the LSR can support the use of a given
DLCI as a label for both link directions
independently. A value of 1 specifies
unidirectional VC capability, meaning a given
DLCI may appear in a label mapping for one
direction on the link only. When either or both
of the peers specifies unidirectional VC
capability, both LSRs use unidirectional VC
label assignment for the link as follows. The
LSRs compare their LDP Identifiers as unsigned
integers. The LSR with the larger LDP
Identifier may assign only odd-numbered DLCIs
in the range as labels. The system with the
smaller LDP Identifier may assign only
even-numbered DLCIs in the range as labels.'
Please refer to the following reference for a
complete description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityFrameRelayEntry 4 }
mplsLdpEntityFrameRelayStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpEntityFrameRelayEntry 5 }
mplsLdpEntityFrameRelayRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any time,
however, as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the
mplsLdpEntityAdminStatus object,
if a session has been initiated with a Peer,
changing objects in this table will
wreak havoc with the session and interrupt
traffic. To repeat again:
the recommended procedure is to set the
mplsLdpEntityAdminStatus to
down, thereby explicitly causing a
session to be torn down. Then,
change objects in this entry, then set
the mplsLdpEntityAdminStatus
to enable which enables a new session
to be initiated."
::= { mplsLdpEntityFrameRelayEntry 6 }
--
-- Frame Relay Label Range Components
--
mplsLdpEntityFrameRelayLRTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains information about the
Optional Parameters for the Frame Relay Session
in the LDP Initialization Message, specifically
it contains information about the Frame Relay
Label Range Components.
If the value of the object
'mplsLdpEntityOptionalParameters' contains the
value of 'frameRelaySessionParameters(3)' then
there must be at least one corresponding entry
in this table."
::= { mplsLdpEntityFrameRelayObjects 2 }
mplsLdpEntityFrameRelayLREntry OBJECT-TYPE
SYNTAX MplsLdpEntityFrameRelayLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents the Frame Relay
Label Range Component associated with the LDP entity."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpEntityFrameRelayLRMinDlci
}
::= { mplsLdpEntityFrameRelayLRTable 1 }
MplsLdpEntityFrameRelayLREntry ::= SEQUENCE {
mplsLdpEntityFrameRelayLRMinDlci DLCI,
mplsLdpEntityFrameRelayLRMaxDlci DLCI,
mplsLdpEntityFrameRelayLRLen INTEGER,
mplsLdpEntityFrameRelayLRStorageType StorageType,
mplsLdpEntityFrameRelayLRRowStatus RowStatus
}
mplsLdpEntityFrameRelayLRMinDlci OBJECT-TYPE
SYNTAX DLCI
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The lower bound which is supported. This value
should be the same as that in the Frame Relay Label
Range Component's Minimum DLCI field. The value
of zero is valid for the minimum DLCI field of
the label."
REFERENCE
"RFC3034, Use of Label Switching on Frame Relay
Networks Specification."
::= { mplsLdpEntityFrameRelayLREntry 1 }
mplsLdpEntityFrameRelayLRMaxDlci OBJECT-TYPE
SYNTAX DLCI
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The upper bound which is supported. This value
should be the same as that in the Frame Relay Label
Range Component's Maximum DLCI field."
::= { mplsLdpEntityFrameRelayLREntry 2 }
mplsLdpEntityFrameRelayLRLen OBJECT-TYPE
SYNTAX INTEGER {
tenDlciBits(0),
twentyThreeDlciBits(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies the length of the DLCI bits.
This is the EXACT value for the Len field of the
Frame Relay Label Range Component.
The description from rfc3036.txt is:
'Len
This field specifies the number of bits of the DLCI.
The following values are supported:
Len DLCI bits
0 10
2 23
Len values 1 and 3 are reserved.'
Please refer to the following reference for a complete
description of this feature."
REFERENCE
"RFC3036, LDP Specification, Section 3.5.3
Initialization Message."
::= { mplsLdpEntityFrameRelayLREntry 3 }
mplsLdpEntityFrameRelayLRStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpEntityFrameRelayLREntry 4 }
mplsLdpEntityFrameRelayLRRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any time,
however, as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the
mplsLdpEntityAdminStatus object,
if a session has been initiated with a Peer,
changing objects in this table will
wreak havoc with the session and interrupt
traffic. To repeat again:
the recommended procedure is to set the
mplsLdpEntityAdminStatus to down, thereby
explicitly causing a session to be torn down. Then,
change objects in this entry, then set the
mplsLdpEntityAdminStatus to enable which enables
a new session to be initiated."
::= { mplsLdpEntityFrameRelayLREntry 5 }
--
-- MPLS LDP Frame Relay Session Information
--
mplsLdpFrameRelaySessionObjects OBJECT IDENTIFIER ::=
{ mplsLdpFrameRelayObjects 2 }
mplsLdpFrameRelaySessionTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpFrameRelaySessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of Frame Relay label range intersections
between the LDP Entities and LDP Peers.
Each row represents a single label range intersection.
NOTE: this table cannot use the 'AUGMENTS'
clause because there is not necessarily a one-to-one
mapping between this table and the
mplsLdpSessionTable."
::= { mplsLdpFrameRelaySessionObjects 1 }
mplsLdpFrameRelaySessionEntry OBJECT-TYPE
SYNTAX MplsLdpFrameRelaySessionEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents information on a
single label range intersection between an
LDP Entity and LDP Peer.
The information contained in a row is read-only."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpPeerLdpId,
mplsLdpFrameRelaySessionMinDlci
}
::= { mplsLdpFrameRelaySessionTable 1 }
MplsLdpFrameRelaySessionEntry ::= SEQUENCE {
mplsLdpFrameRelaySessionMinDlci DLCI,
mplsLdpFrameRelaySessionMaxDlci DLCI,
mplsLdpFrameRelaySessionLen INTEGER
}
mplsLdpFrameRelaySessionMinDlci OBJECT-TYPE
SYNTAX DLCI
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The lower bound of DLCIs which are supported.
The value of zero is a valid value for the
minimum DLCI field of the label."
REFERENCE
"RFC3034, Use of Label Switching on Frame Relay
Networks Specification."
::= { mplsLdpFrameRelaySessionEntry 1 }
mplsLdpFrameRelaySessionMaxDlci OBJECT-TYPE
SYNTAX DLCI
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The upper bound of DLCIs which are supported."
::= { mplsLdpFrameRelaySessionEntry 2 }
mplsLdpFrameRelaySessionLen OBJECT-TYPE
SYNTAX INTEGER {
tenDlciBits(0),
twentyThreeDlciBits(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object specifies the DLCI bits."
::= { mplsLdpFrameRelaySessionEntry 3 }
--****************************************************************
-- Module Conformance Statement
--****************************************************************
mplsLdpFrameRelayGroups
OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 1 }
mplsLdpFrameRelayCompliances
OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 2 }
--
-- Full Compliance
--
okay bestie, the VC directionality knob is giving main character energy ๐ฆ๐ the odd/even DLCI split is so iconic โจ
and the Len field? literally just 10 or 23 bits, no cap, that's the whole vibe ๐๐ธ
okay so this bit is where the MIB module wraps up, bestie ๐ we get two MODULE-COMPLIANCE statements (one for full read-create/read-write support and one for read-only) plus the group that holds all the Frame Relay objects ๐ฆ
first up, the full compliance statement ๐ it says the module supports read-create and read-write, so monitoring and configuration are both on the table โจ
mplsLdpFrameRelayModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-create and read-write. In other words,
both monitoring and configuration
are available when using this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpFrameRelayGroup
}
OBJECT mplsLdpEntityFrameRelayRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
OBJECT mplsLdpEntityFrameRelayLRRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
::= { mplsLdpFrameRelayCompliances 1 }
--
-- Read-Only Compliance
--
mplsLdpFrameRelayModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-only. In other words, only monitoring
is available by implementing this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpFrameRelayGroup
}
OBJECT mplsLdpEntityFrameRelayIfIndexOrZero
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayMergeCap
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayVcDirectionality
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
OBJECT mplsLdpEntityFrameRelayLRMaxDlci
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayLRLen
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayLRStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityFrameRelayLRRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
::= { mplsLdpFrameRelayCompliances 2 }
the read-only one is the chill version ๐ง it's just monitoring, no writing, and most of the objects get the same "write access is not required" note ๐ซถ the row status objects only need active to be supported โจ
--
-- units of conformance
--
mplsLdpFrameRelayGroup OBJECT-GROUP
OBJECTS {
mplsLdpEntityFrameRelayIfIndexOrZero,
mplsLdpEntityFrameRelayMergeCap,
mplsLdpEntityFrameRelayLRComponents,
mplsLdpEntityFrameRelayVcDirectionality,
mplsLdpEntityFrameRelayStorageType,
mplsLdpEntityFrameRelayRowStatus,
mplsLdpEntityFrameRelayLRMaxDlci,
mplsLdpEntityFrameRelayLRLen,
mplsLdpEntityFrameRelayLRStorageType,
mplsLdpEntityFrameRelayLRRowStatus,
mplsLdpFrameRelaySessionMaxDlci,
mplsLdpFrameRelaySessionLen
}
STATUS current
DESCRIPTION
"Objects that apply to all MPLS LDP implementations
using Frame Relay as the Layer 2."
::= { mplsLdpFrameRelayGroups 1 }
END
and that's the group, the one both compliance statements list as mandatory ๐ธ it's the bundle of every Frame Relay object, so it applies to all MPLS LDP implementations running Frame Relay as Layer 2 ๐ bestie, that's the whole module!! ๐๐
4.3. The MPLS-LDP-GENERIC-STD-MIB Module ๐
okay bestie, this is the generic labels MIB ๐ง It MUST be supported if LDP uses a Per Platform Label Space, so if that's your setup, it's not optional ๐ The big table is mplsLdpEntityGenericLRTable, which is a Label Range (LR) table for configuring MPLS Generic Label Ranges ๐ ngl the LDP spec doesn't give you a way to configure label ranges for generic labels at all, but the working group thought reserving a range of generic labels would be useful, so this MIB gives you a way to do exactly that ๐ฆ main character energy
MPLS-LDP-GENERIC-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE,
MODULE-IDENTITY,
Unsigned32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE,
OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
RowStatus,
StorageType
FROM SNMPv2-TC -- [RFC2579]
InterfaceIndexOrZero
FROM IF-MIB -- [RFC2020]
mplsStdMIB
FROM MPLS-TC-STD-MIB -- [RFC3811]
mplsLdpEntityLdpId,
mplsLdpEntityIndex
FROM MPLS-LDP-STD-MIB -- [RFC3813]
;
mplsLdpGenericStdMIB MODULE-IDENTITY
LAST-UPDATED "200406030000Z" -- June 6, 2004
ORGANIZATION "Multiprotocol Label Switching (mpls)
Working Group"
CONTACT-INFO
"Joan Cucchiara (jcucchiara@mindspring.com)
Marconi Communications, Inc.
Hans Sjostrand (hans@ipunplugged.com)
ipUnplugged
James V. Luciani (james_luciani@mindspring.com)
Marconi Communications, Inc.
Working Group Chairs:
George Swallow, email: swallow@cisco.com
Loa Andersson, email: loa@pi.se
MPLS Working Group, email: mpls@uu.net
"
DESCRIPTION
"Copyright (C) The Internet Society (year). The
initial version of this MIB module was published
in RFC 3815. For full legal notices see the RFC
itself or see:
http://www.ietf.org/copyrights/ianamib.html
This MIB contains managed object definitions for
configuring and monitoring the Multiprotocol Label
Switching (MPLS), Label Distribution Protocol (LDP),
utilizing ethernet as the Layer 2 media."
REVISION "200406030000Z" -- June 6, 2004
DESCRIPTION
"Initial version published as part of RFC 3815."
::= { mplsStdMIB 7 }
--****************************************************************
mplsLdpGenericObjects
OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 1 }
mplsLdpGenericConformance
OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 2 }
--****************************************************************
-- MPLS LDP GENERIC Objects
--****************************************************************
--
-- Ldp Entity Objects for Generic Labels
--
mplsLdpEntityGenericObjects OBJECT IDENTIFIER ::=
{ mplsLdpGenericObjects 1 }
--
-- The MPLS LDP Entity Generic Label Range Table
--
mplsLdpEntityGenericLRTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsLdpEntityGenericLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The MPLS LDP Entity Generic Label Range (LR)
Table.
The purpose of this table is to provide a mechanism
for configurating a contiguous range of generic labels,
or a 'label range' for LDP Entities.
LDP Entities which use Generic Labels must have at least
one entry in this table. In other words, this table
'extends' the mpldLdpEntityTable for Generic Labels."
::= { mplsLdpEntityGenericObjects 1 }
mplsLdpEntityGenericLREntry OBJECT-TYPE
SYNTAX MplsLdpEntityGenericLREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A row in the LDP Entity Generic Label
Range (LR) Table. One entry in this table contains
information on a single range of labels
represented by the configured Upper and Lower
Bounds pairs. NOTE: there is NO corresponding
LDP message which relates to the information
in this table, however, this table does provide
a way for a user to 'reserve' a generic label
range.
NOTE: The ranges for a specific LDP Entity
are UNIQUE and non-overlapping.
A row will not be created unless a unique and
non-overlapping range is specified."
INDEX { mplsLdpEntityLdpId,
mplsLdpEntityIndex,
mplsLdpEntityGenericLRMin,
mplsLdpEntityGenericLRMax
}
::= { mplsLdpEntityGenericLRTable 1 }
MplsLdpEntityGenericLREntry ::= SEQUENCE {
mplsLdpEntityGenericLRMin Unsigned32,
mplsLdpEntityGenericLRMax Unsigned32,
mplsLdpEntityGenericLabelSpace INTEGER,
mplsLdpEntityGenericIfIndexOrZero InterfaceIndexOrZero,
mplsLdpEntityGenericLRStorageType StorageType,
mplsLdpEntityGenericLRRowStatus RowStatus
}
mplsLdpEntityGenericLRMin OBJECT-TYPE
SYNTAX Unsigned32(0..1048575)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The minimum label configured for this range."
::= { mplsLdpEntityGenericLREntry 1 }
mplsLdpEntityGenericLRMax OBJECT-TYPE
SYNTAX Unsigned32(0..1048575)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The maximum label configured for this range."
::= { mplsLdpEntityGenericLREntry 2 }
mplsLdpEntityGenericLabelSpace OBJECT-TYPE
SYNTAX INTEGER {
perPlatform(1),
perInterface(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This value of this object is perPlatform(1), then
this means that the label space type is
per platform.
If this object is perInterface(2), then this
means that the label space type is per Interface."
REFERENCE
"RFC3036, LDP Specification, Section 2.2.1,
Label Spaces."
DEFVAL { perPlatform }
::= { mplsLdpEntityGenericLREntry 3 }
mplsLdpEntityGenericIfIndexOrZero OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This value represents either the InterfaceIndex of
the 'ifLayer' where these Generic Label would be created,
or 0 (zero). The value of zero means that the
InterfaceIndex is not known.
However, if the InterfaceIndex is known,
then it must be represented by this value.
If an InterfaceIndex becomes known, then the
network management entity (e.g., SNMP agent) responsible
for this object MUST change the value from 0 (zero) to the
value of the InterfaceIndex."
::= { mplsLdpEntityGenericLREntry 4 }
mplsLdpEntityGenericLRStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row.
Conceptual rows having the value 'permanent(4)'
need not allow write-access to any columnar
objects in the row."
DEFVAL { nonVolatile }
::= { mplsLdpEntityGenericLREntry 5 }
mplsLdpEntityGenericLRRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row. All writable
objects in this row may be modified at any time,
however, as described in detail in the section
entitled, 'Changing Values After Session
Establishment', and again described in the
DESCRIPTION clause of the mplsLdpEntityAdminStatus object,
if a session has been initiated with a Peer,
changing objects in this table will
wreak havoc with the session and interrupt traffic.
To repeat again: the recommended procedure is
to set the mplsLdpEntityAdminStatus to
down, thereby explicitly causing a
session to be torn down. Then, change objects
in this entry, then set the mplsLdpEntityAdminStatus
to enable which enables a new session to be initiated.
There must exist at least one entry in this
table for every LDP Entity that has a
generic label configured."
::= { mplsLdpEntityGenericLREntry 6 }
--****************************************************************
-- Module Conformance Statement
--****************************************************************
mplsLdpGenericGroups
OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 1 }
mplsLdpGenericCompliances
OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 2 }
--
-- Full Compliance
--
mplsLdpGenericModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-create and read-write. In other words,
both monitoring and configuration
are available when using this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpGenericGroup
}
OBJECT mplsLdpEntityGenericLRRowStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
::= { mplsLdpGenericCompliances 1 }
--
-- Read-Only Compliance
--
mplsLdpGenericModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The Module is implemented with support for
read-only. In other words, only monitoring
is available by implementing this MODULE-COMPLIANCE."
MODULE -- this module
MANDATORY-GROUPS {
mplsLdpGenericGroup
}
OBJECT mplsLdpEntityGenericLabelSpace
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityGenericIfIndexOrZero
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityGenericLRStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsLdpEntityGenericLRRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the
only status that needs to be supported."
::= { mplsLdpGenericCompliances 2 }
--
-- units of conformance
--
mplsLdpGenericGroup OBJECT-GROUP
OBJECTS {
mplsLdpEntityGenericLabelSpace,
mplsLdpEntityGenericIfIndexOrZero,
mplsLdpEntityGenericLRStorageType,
mplsLdpEntityGenericLRRowStatus
}
STATUS current
DESCRIPTION
"Objects that apply to all MPLS LDP implementations
using Generic Labels as the Layer 2."
::= { mplsLdpGenericGroups 1 }
END
5. Acknowledgments ๐
okay bestie, time for the thank-yous ๐ซถ This doc is a product of the MPLS Working Group, and the authors want to give a huge shout-out to Mike MacFadden and Adrian Farrel for their super helpful comments across several reviews ๐ They also gave a special acknowledgement to Bert Wijnen for his many detailed reviews. Bert's help and guidance is genuinely appreciated ๐๐
We also want to thank Cheenu Srinivasan, Arun Viswanathan and Thomas D. Nadeau, the authors of the MPLS-LSR-STD-MIB [RFC3813], for their assistance ๐ฆ
There were also other working group members who were so helpful ๐ธ Alan Kullberg from NetPlane Systems gave input on earlier versions of this doc, and more recently Riza Cetin of Alcatel and Neil Jerram of Data Connection both provided MIB objects ๐ง
Early versions were also reviewed by colleagues at Nortel Networks and Ericsson ๐ The authors want to thank Leigh McLellan, Geetha Brown, Geping Chen and Charlan Zhou from Nortel Networks, and Zoltan Takacs and Bo Augustsson from Ericsson ๐
6. References ๐
6.1. Normative References
- [RFC2115] Brown, C. and F. Baker, "Management Information Base for Frame Relay DTEs Using SMIv2", RFC 2115, September 1997.
- [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.
- [RFC2514] Noto, M., Spiegel, E., and K. Tesink, editors, "Definition of Textual Conventions and OBJECT-IDENTITIES for ATM Management", RFC 2514, February 1999.
- [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.
- [RFC3031] Rosen, E., Viswananthan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, January 2001.
- [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, January 2001.
- [RFC3034] Conta, A., Doolan, P., and A. Malis, "Use of Label Switching on Frame Relay Networks Specification", RFC 3034, January 2001.
- [RFC3035] Davie, B., Lawrence, J., McCloghrie, K., Rosen, E., Swallow, G., Rekhter, Y., and P. Doolan, "MPLS using LDP and ATM VC Switching", RFC 3035, January 2001.
- [RFC3036] Andersson, L., Doolan, P., Feldman, N., Fredette, A., and B. Thomas, "LDP Specification", RFC 3036, January 2001.
- [RFC3037] Thomas, B. and E. Gray, "LDP Applicability", RFC 3037, January 2001.
- [RFC3215] Boscher, C., Cheval, P., Wu, L., and E. Gray, "LDP State Machine", RFC 3215, January 2002.
- [RFC3289] Baker, F., Chan, K., and A. Smith, "Management Information Base for the Differentiated Services Architecture", RFC 3289, May 2002.
- [RFC3291] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Coventions for Internet Network Addresses", RFC 3291, May 2002.
- [RFC3413] Levi, D., Meyers, P. and B. Stewart, "Simple Network Management Protocol (SNMP) Applications", STD 62, RFC 3413, December 2002.
- [RFC3811] Nadeau, T. and J. Cucchiara, Editors "Definitions of Textual Conventions (TCs) for Multiprotocol Label Switching (MPLS) Management", RFC 3811, June 2004.
- [RFC3813] Srinivansan, C., Viswanathan, A., and T. Nadeau, "Multiprotocol Label Switching (MPLS) Label Switching Router (LSR) Management Information Base (MIB)", RFC 3813, June 2004
6.2. Informative References
- [MPLSMGMT] Nadeau, T., Srinivasan, C., and A. Farrel, "Multiprotocol Label Switching (MPLS) Management Overview", Work in Progress, September 2003.
- [RFC2684] Grossman, D. and J. Heinanen, "Multiprotocol Encapsulation over ATM Adaptation Layer 5", RFC 2684, September 1999.
- [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
7. Security Considerations ๐
This Security Considerations section has 4 subsections, one for each of the MIB Modules in this document. Buckle up, this part is serious ๐ญ
7.1. Security Considerations for MPLS-LDP-STD-MIB
There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. These objects may be considered sensitive or vulnerable in some network environments. Supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityTablecontains objects to provision potential LDP sessions on the Label Switching Router (LSR) or Label Edge Router (LER). ThemplsLdpLspFecTablecontains objects which associate an LSP with a FEC. Unauthorized access to objects in these tables could result in disruption of traffic on the network. This is especially true if an LDP session has been established. The use of stronger mechanisms such as SNMPv3 security should be considered where possible. Specifically, SNMPv3 VACM and USM MUST be used with any v3 agent which implements this MIB. Administrators should consider whether read access to these objects should be allowed, since read access may be undesirable under certain circumstances.
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 therefore important to control even GET and/or NOTIFY access to these objects, and possibly even to encrypt the values of these objects when sending them over the network via SNMP. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityTable,mplsLdpPeerTable,mplsLdpSessionTableandmplsLdpSessionStatsTablecollectively show the LDP LSP network topology. If an Administrator does not want to reveal the LDP LSP topology of the network, then these tables should be considered sensitive/vulnerable.
7.2. Security Considerations for MPLS-LDP-ATM-STD-MIB
There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. These objects may be considered sensitive or vulnerable in some network environments. Supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityAtmTableandmplsLdpEntityAtmLRTablecontain objects to provision potential LDP sessions on the Label Switching Router (LSR) or Label Edge Router (LER) over Layer 2 of ATM. These tables extend themplsLdpEntityTablein the MPLS-LDP-MIB. Unauthorized access to objects in these tables could result in disruption of traffic on the network. This is especially true if an LDP session has been established. The use of stronger mechanisms such as SNMPv3 security should be considered where possible. Specifically, SNMPv3 VACM and USM MUST be used with any v3 agent which implements this MIB. Administrators should consider whether read access to these objects should be allowed, since read access may be undesirable under certain circumstances.
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 therefore important to control even GET and/or NOTIFY access to these objects, and possibly even to encrypt the values of these objects when sending them over the network via SNMP. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityAtmTableandmplsLdpEntityAtmLRTableshow the Label Ranges for ATM. If an Administrator does not want to reveal this information, then these tables should be considered sensitive/vulnerable and treated accordingly.
7.3. Security Considerations for MPLS-LDP-FRAME-RELAY-STD-MIB
There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. These objects may be considered sensitive or vulnerable in some network environments. Supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityFrameRelayTableandmplsLdpEntityFrameRelayLRTablecontain objects to provision potential LDP sessions on the Label Switching Router (LSR) or Label Edge Router (LER) over Layer 2 of Frame Relay. These tables extend themplsLdpEntityTablein the MPLS-LDP-MIB. Unauthorized access to objects in these tables could result in disruption of traffic on the network. This is especially true if an LDP session has been established. The use of stronger mechanisms such as SNMPv3 security should be considered where possible. Specifically, SNMPv3 VACM and USM MUST be used with any v3 agent which implements this MIB. Administrators should consider whether read access to these objects should be allowed, since read access may be undesirable under certain circumstances.
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 therefore important to control even GET and/or NOTIFY access to these objects, and possibly even to encrypt the values of these objects when sending them over the network via SNMP. Here are the tables and objects and how sensitive or vulnerable they are:
- The
mplsLdpEntityFrameRelayTableandmplsLdpEntityFrameRelayLRTableshow the Label Ranges for Frame Relay. If an Administrator does not want to reveal this information, then these tables should be considered sensitive/vulnerable and treated accordingly.
7.4. Security Considerations for MPLS-LDP-GENERIC-STD-MIB ๐
okay so this MIB has a bunch of management objects with a MAX-ACCESS of read-write and/or read-create, and those can be kinda sensitive or vulnerable depending on the network ๐. letting SET operations happen without proper protection can seriously mess with network operations ๐. here are the tables and objects, and why they're sensitive:
mplsLdpEntityGenericLRTableholds objects for provisioning potential LDP sessions on an LSR or LER over Layer 2 of Ethernet ๐ง. it extendsmplsLdpEntityTableinMPLS-LDP-MIB. if someone unauthorized gets in, traffic on the network could get disrupted ๐ฑ, especially if an LDP session is already up. using stronger stuff like SNMPv3 security should be considered where possible, and SNMPv3 VACM and USM MUST be used with any v3 agent that implements this MIB ๐. admins should also think about whether read access to these objects should be allowed at all, since read access can be undesirable in some situations ๐
some of the readable objects in this MIB (the ones with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable in some network environments ๐ซฃ. so it's important to control even GET and/or NOTIFY access to them, and maybe even encrypt their values when they're sent over the network via SNMP ๐. here's the tea:
mplsLdpEntityGenericLRTableshows the Label Ranges for ethernet ๐. if an admin doesn't want to reveal that info, these tables should be treated as sensitive/vulnerable and handled accordingly.
7.5. Additional Security Considerations
these paragraphs cover extra security stuff that applies to all 4 MIB Modules in this document ๐.
SNMP versions before SNMPv3 didn't include adequate security ๐ฌ. even if the network itself is secure (like, by using IPSec), there's still no control over who on that secure network can access and GET/SET (read/change/create/delete) the objects in this MIB module. main character villain energy ๐.
it is RECOMMENDED that implementers consider the security features in the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) ๐ฆ.
deploying SNMP versions before SNMPv3 is NOT RECOMMENDED ๐ โโ๏ธ. instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security ๐. after that, it's a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is configured so the objects are only accessible to principals (users) who actually have legitimate rights to GET or SET (change/create/delete) them ๐.
8. IANA Considerations ๐งพ
as described in [MPLSMGMT] and as requested in the MPLS-TC-STD-MIB [MPLSTCMIB], MPLS related standards track MIB modules should be rooted under the mplsStdMIB subtree ๐ณ. there are 4 MPLS MIB Modules in this document, and each of the following "IANA Considerations" subsections lists the new IANA assignments under the mplsStdMIB subtree. new assignments can only be made via a Standards Action, as specified in [RFC2434] โจ.
8.1. IANA Considerations for MPLS-LDP-STD-MIB
the IANA has assigned { mplsStdMIB 4 } to the MPLS-LDP-STD-MIB module specified in this document ๐.
8.2. IANA Considerations for MPLS-LDP-ATM-STD-MIB
the IANA has assigned { mplsStdMIB 5 } to the MPLS-LDP-ATM-STD-MIB module specified in this document ๐ฉต.
8.3. IANA Considerations for MPLS-LDP-FRAME-RELAY-STD-MIB
the IANA has assigned { mplsStdMIB 6 } to the MPLS-LDP-FRAME-RELAY-STD-MIB module specified in this document ๐ธ.
8.4. IANA Considerations for MPLS-LDP-GENERIC-STD-MIB
the IANA has assigned { mplsStdMIB 7 } to the MPLS-LDP-GENERIC-STD-MIB module specified in this document ๐.
9. Authors' Addresses ๐
the authors, with the info they shared, are below ๐ซถ.
James V. Luciani
Marconi Communications, Inc.
900 Chelmsford Street
Lowell, MA 01851
EMail: james_luciani@mindspring.com
Hans Sjostrand
ipUnplugged
P.O. Box 101 60
S-121 28 Stockholm, Sweden
Phone: +46 8 725 5900
EMail: hans@ipunplugged.com
Joan E. Cucchiara
Marconi Communications, Inc.
900 Chelmsford Street
Lowell, MA 01851
Phone: +1 978 275 7400
EMail: jcucchiara@mindspring.com
10. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2004). 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 in it 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 on 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 on the extent to which any license under such rights might or might not be available. it also doesn't say it has made any independent effort to identify any such rights ๐คทโโ๏ธ. info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79 ๐.
copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, and the result of any attempt to get a general license or permission for implementers or users to use these proprietary rights 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 required to implement this standard. send that info to the IETF at ietf-ipr@ietf.org ๐ฉ.
Acknowledgement ๐
funding for the RFC Editor function is currently provided by the Internet Society ๐ โจ.
๐ฆ where this page comes from
- ietf: rfc3815 2004-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms