RFC 6445
Multiprotocol Label Switching (MPLS) Traffic Engineering Management Information Base for Fast Reroute
RFC 6445 π Part 1 of 8
Multiprotocol Label Switching (MPLS) Traffic Engineering Management Information Base for Fast Reroute π¦
Authors: T. Nadeau, Ed. (CA Technologies), K. Koushik, Ed. (Cisco Systems, Inc.), R. Cetin, Ed. (Alcatel)
Category: Standards Track β¨
ISSN: 2070-1721 π
Date: November 2011 πΈ
Abstract π
Okay so this memo defines a chunk of the Management Information Base (MIB) that network management protocols in the Internet community use. It's giving managed objects for two fast reroute (FRR) methods in MPLS-based traffic engineering (TE): the one-to-one backup method and the facility backup method. π
Status of This Memo π
This is an Internet Standards Track document. π₯
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). For more on Internet Standards, check out Section 2 of RFC 5741. π§
Info about the current status of this document, any errata, and how to give feedback can be found at http://www.rfc-editor.org/info/rfc6445. π
Copyright Notice Β©οΈ
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. π
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the date this document is published. Please read these carefully, bestie, because they spell out your rights and restrictions for this document. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes. π«Ά
This document may contain material from IETF Documents or IETF Contributions that were published or made publicly available before November 10, 2008. The people controlling the copyright in some of that material may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. So unless you get a proper license from whoever controls that copyright, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process. The exceptions are formatting it for publication as an RFC or translating it into languages other than English. π
Table of Contents ποΈ
1. Introduction ....................................................4
1.1. Conventions Used in This Document ..........................4
2. Terminology .....................................................4
3. The Internet-Standard Management Framework ......................4
4. Overview of the MIB Modules .....................................4
4.1. MPLS-FRR-GENERAL-STD-MIB ...................................5
4.1.1. mplsFrrConstraintsTable .............................5
4.1.2. mplsFrrTunnelARHopTable .............................5
4.1.3. Example of Relationship between Various Tables of
MPLS-FRR-GENERAL-STD-MIB ............................6
4.2. MPLS-FRR-ONE2ONE-STD-MIB ...................................6
4.2.1. mplsFrrOne2OnePlrTable ..............................7
4.2.2. mplsFrrOne2OneDetourTable ...........................7
4.2.3. Example of Relationship between
mplsFrrOne2OnePlrTable, mplsFrrOne2OneDetourTable,
and mplsTunnelTable..................................8
4.3. MPLS-FRR-FACILITY-STD-MIB .................................11
4.3.1. mplsFrrFacilityDBTable .............................11
4.3.2. Example of Relationship between Various Tables of
MPLS-FRR-FACILITY-STD-MIB ..........................12
5. Handling IPv6 Tunnels ..........................................14
6. MIB Module Definitions .........................................15
6.1. MPLS-FRR-GENERAL-STD-MIB Module Definitions ...............15
6.2. MPLS-FRR-ONE2ONE-STD-MIB Module Definitions ...............28
6.3. MPLS-FRR-FACILITY-STD-MIB Module Definitions ..............38
7. Security Considerations ........................................49
8. IANA Considerations ............................................50
8.1. IANA Considerations for MPLS-FRR-GENERAL-STD-MIB ..........51
8.2. IANA Considerations for MPLS-FRR-ONE2ONE-STD-MIB ..........51
8.3. IANA Considerations for MPLS-FRR-FACILITY-STD-MIB .........51
9. Acknowledgments ................................................51
10. References ....................................................51
10.1. Normative References .....................................51
10.2. Informative References ...................................52
11. Contributors ..................................................52
1. Introduction π¦
Bestie, this memo defines a portion of the Management Information Base (MIB) that holds the objects used to manage the MPLS-based fast rerouting features on MPLS Label Switching Routers (LSRs), as defined in [RFC4090]. The MIB modules in this document should be used together with [RFC3811], [RFC3812], and [RFC3813]. β¨
1.1. Conventions Used in This Document π
Here's the deal with the key words: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in RFC 2119 [RFC2119] wherever they show up in this document. π
2. Terminology π§
This document uses terminology from "Multiprotocol Label Switching Architecture" [RFC3031] and from "Fast Reroute Extensions to RSVP-TE for LSP Tunnels" [RFC4090]. π
3. The Internet-Standard Management Framework πΈ
If you want the full tea on the documents that describe the current Internet-Standard Management Framework, go check out section 7 of [RFC3410]. π«Ά
Managed objects are accessed through a virtual information store called the Management Information Base, or MIB. MIB module 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 MIB modules that comply with the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580]. π₯
4. Overview of the MIB Modules πΊοΈ
[RFC4090] lays out two different approaches to implementing MPLS TE fast reroute: one-to-one backup and facility backup. π
We define three MIB modules to represent those components: general, one-to-one backup, and facility backup. Here they are:
- MPLS-FRR-GENERAL-STD-MIB: holds objects that apply to any MPLS LSR implementing MPLS TE fast-reroute functionality. π
- MPLS-FRR-ONE2ONE-STD-MIB: holds objects that apply to the one-to-one backup method. π¦
- MPLS-FRR-FACILITY-STD-MIB: holds objects that apply to the facility backup method. β¨
Okay so [RFC4090] says a node can support both fast-reroute methods at the same time, but common practice has shown that operators pick either the one-to-one backup method or the facility backup method at any given time. So by splitting the MIB modules into three, developers get to pick the modules they want to implement, based on the method supported on that node. It's giving choice! π
4.1. MPLS-FRR-GENERAL-STD-MIB π
This MIB module MUST be implemented if either of the fast-reroute methods is implemented. π₯
4.1.1. mplsFrrConstraintsTable πΈ
This table holds objects that apply to all LSRs implementing MPLS TE fast-reroute functions. Specifically, it defines fast-reroute constraints, such as bandwidth, for a tunnel instance that gets protected by backup Label Switched Paths (LSPs), which are detour LSPs or bypass tunnels. π
This table MUST be implemented at the ingress node of the protected TE tunnel instance, so it can configure the backup LSP setup constraints. π«Ά
4.1.2. mplsFrrTunnelARHopTable π§
This table extends mplsTunnelARHopTable (defined in the MPLS-TE-STD-MIB [RFC3812]) with fast-reroute objects. Those objects specify the local protection type or types that are available, plus which type or types are actually in use for each tunnel hop traversed by a protected TE tunnel. π
4.1.3. Example of Relationship between Various Tables of MPLS-FRR-GENERAL-STD-MIB πΊοΈ
Let's picture this topology, bestie:
(R1)----(R2)----(R3)----(R4)---(R5)
\ \ \ /
(R6)---(R7)------(R8)
Protected LSP: [R1->R2->R3->R4->R5]
R1's Backup: [R1->R6->R7->R8->R3]
In that topology, the various tables on R1 get populated like this π¦:
mplsFrrGeneralConstraintsTable
{
mplsFrrGeneralConstraintsIfIndexOrZero = 10,-- interface to protect
mplsFrrGeneralConstraintsTunnelIndex = 1, -- protecting tunnel
mplsFrrGeneralConstraintsTunnelInstance = 0, -- use any instance
mplsFrrGeneralConstraintsProtectionType = 1, -- linkProtection
mplsFrrGeneralConstraintsSetupPrio = 0,
mplsFrrGeneralConstraintsHoldingPrio = 0,
mplsFrrGeneralConstraintsInclAnyAffinity = 0,
mplsFrrGeneralConstraintsInclAllAffinity = 0,
mplsFrrGeneralConstraintsExclAnyAffinity = 0,
mplsFrrGeneralConstraintsHopLimit = 0,
mplsFrrGeneralConstraintsBandwidth = 0, -- best effort
mplsFrrGeneralConstraintsStorageType = 2, -- volatile
mplsFrrGeneralConstraintsRowStatus = 1, -- active
};
mplsFrrGeneralTunnelARHopEntry
{
mplsFrrGeneralTunnelARHopSessionAttributeFlags = 5,
-- sestyleDesired | localProtectionDesired
mplsFrrGeneralTunnelARHopRROSubObjectFlags = 2
-- localProtectionInUse
};
4.2. MPLS-FRR-ONE2ONE-STD-MIB π
This MIB module MUST be implemented if the one-to-one backup fast-reroute method is implemented. π
4.2.1. mplsFrrOne2OnePlrTable π
The mplsFrrOne2OnePlrTable holds information about Points of Local Repair (PLRs) that started detour LSPs to protect tunnel instances. This table MUST be supported for LSRs implementing the one-to-one backup method. In these cases, the detour LSPs are reflected in the mplsFrrOne2OneDetourTable. π§
To be continued in Part 2 π«Άβ¨
4.2.2. mplsFrrOne2OneDetourTable β¨
okay so the mplsFrrOne2OneDetourTable is where we track the detour LSPs on every node (ingress, transit, and egress nodes) π€οΈ each entry in this table is one detour LSP, and it's giving organized π
Each detour gets identified by these indexes:
- mplsTunnelIndex [RFC3812]: set to the Tunnel ID of an LSP protected by a detour.
- mplsTunnelInstance [RFC3812]: this one has two parts π§©
- the higher 16 bits: protected TE tunnel instance, which uniquely identifies a protected LSP within a tunnel.
- the lower 16 bits: detour instance, which uniquely identifies a detour LSP of a protected TE tunnel instance. Multiple detours of the same protected LSP may go through the same node. In this case, the higher 16 bits of the tunnel instance object is used as a detour instance.
- ingress node's LSR ID (mplsFrrOne2OnePlrTunnelIngressLSRId): set to the ingress node of an LSP protected by a detour.
- egress node's LSR ID (mplsFrrOne2OnePlrTunnelEgressLSRId): set to the egress node of an LSP protected by a detour.
A detour LSP also counts as an instance of a protected TE tunnel, so it's lowkey a whole main character π¦ That means each detour LSP SHOULD have an entry in the mplsTunnelTable (defined in the MPLS-TE-STD-MIB [RFC3812]) π
The mplsTunnelTable entries are indexed using mplsTunnelIndex, mplsTunnelInstance, mplsTunnelIngressLSRId, and mplsTunnelEgressLSRId π
Entries where the higher 16 bits of mplsTunnelInstance are set to zero represent detour TE tunnel instances. All other values of the higher 16 bits represent protected tunnel instances πΈ
This table MUST be supported if the one-to-one backup method is used. No cap, this one is a must-have π
4.2.3. Example of Relationship between mplsFrrOne2OnePlrTable, mplsFrrOne2OneDetourTable, and mplsTunnelTable π§
okay this section is the example that shows how mplsFrrOne2OnePlrTable, mplsFrrOne2OneDetourTable, and mplsTunnelTable all link up with each other. It's so satisfying to watch them click together π
(R1)----(R2)----(R3)----(R4)---(R5)
\ \ \ /
(R6)---(R7)------(R8)
Protected LSP: [R1->R2->R3->R4->R5]
R1's Backup: [R1->R6->R7->R8->R3]
So in that topology, the tables get filled in like this π
In mplsFrrOne2OnePlrTable:
{
mplsFrrOne2OnePlrTunnelIndex = 1,
mplsFrrOne2OnePlrTunnelDetourInstance = 6553601,
--
-- (100 << 16 | 1) = 6553601
-- 100 is the tunnel instance of the protected tunnel.
--
mplsFrrOne2OnePlrTunnelIngressLSRId = 192.0.2.1, -- R1
mplsFrrOne2OnePlrTunnelEgressLSRId = 192.0.2.5, -- R5
mplsFrrOne2OnePlrId = 192.0.2.1,
-- R1 is PLR
mplsFrrOne2OnePlrSenderAddrType = ipv4(1),
mplsFrrOne2OnePlrSenderAddr = "192.0.2.1", -- R1
mplsFrrOne2OnePlrAvoidNodeAddrType = ipv4(1),
mplsFrrOne2OnePlrAvoidNodeAddr = "192.0.2.2",
-- R1-R2 (Avoid)
}
In mplsFrrOne2OneDetourTable:
{
mplsFrrOne2OnePlrTunnelIndex = 1,
mplsFrrOne2OnePlrTunnelDetourInstance = 6553601,
--
-- (100 << 16 | 1) == 6553601
--
-- 1 is mplsTunnelInstance for the detour LSP
-- from mplsTunnelTable. Marked by AAA below.
-- Shift 16 to put this into the high-order bits
--
-- 100 is mplsTunnelInstance for the protected tunnel
-- from the mplsTunnelTable. Marked by BBB below.
-- Need to OR the index value into low-order bits)
-- To get all detour LSPs of a protected tunnel (of instance 100)
-- we could do an snmpwalk of the mplsFrrOne2OneDetourEntry
-- where mplsFrrOne2OnePlrTunnelIndex == 1
-- mplsFrrOne2OnePlrTunnelDetourInstance == 6553600
-- The first value would be:
-- mplsFrrOne2OneDetourActive.1.6553601
mplsFrrOne2OnePlrTunnelIngressLSRId = 192.0.2.1, -- R1
mplsFrrOne2OnePlrTunnelEgressLSRId = 192.0.2.3, -- R3
mplsFrrOne2OneDetourActive = false(2),
mplsFrrOne2OneDetourMergedStatus = notMerged(1),
mplsFrrOne2OneDetourMergedDetourInst = 0,
}
In mplsTunnelTable (protected tunnel entry):
{
mplsTunnelIndex = 1,
mplsTunnelInstance = 100,-- Indicating protected tunnel
-- AAA
mplsTunnelIngressLSRId = 192.0.2.1,
mplsTunnelEgressLSRId = 192.0.2.5,
mplsTunnelName = "R1-R5",
mplsTunnelDescr = "R1-R5",
mplsTunnelIsIf = true(1),
mplsTunnelXCPointer = 0.0,
mplsTunnelSignallingProto = none(1),
mplsTunnelSetupPrio = 0,
mplsTunnelHoldingPrio = 0,
mplsTunnelSessionAttributes = 0,
mplsTunnelLocalProtectInUse = true(1),
mplsTunnelResourcePointer = mplsTunnelResourceMaxRate.5,
mplsTunnelInstancePriority = 1,
mplsTunnelHopTableIndex = 1,
mplsTunnelIncludeAnyAffinity = 0,
mplsTunnelIncludeAllAffinity = 0,
mplsTunnelExcludeAnyAffinity = 0,
mplsTunnelPathInUse = 1,
mplsTunnelRole = head(1),
}
In mplsTunnelTable (detour LSP entry):
{
mplsTunnelIndex = 1,
mplsTunnelInstance = 1,
-- Indicating detour LSP (higher 16 bits)
-- BBB
mplsTunnelIngressLSRId = 192.0.2.1,
mplsTunnelEgressLSRId = 192.0.2.3,
mplsTunnelName = "R1-R3",
mplsTunnelDescr = "R1-R3",
mplsTunnelIsIf = true(1),
mplsTunnelXCPointer = 0.0,
mplsTunnelSignallingProto = none(1),
mplsTunnelSetupPrio = 0,
mplsTunnelHoldingPrio = 0,
mplsTunnelSessionAttributes = 0,
mplsTunnelLocalProtectInUse = false(0),
mplsTunnelResourcePointer = mplsTunnelResourceMaxRate.6,
mplsTunnelInstancePriority = 1,
mplsTunnelHopTableIndex = 1,
mplsTunnelIncludeAnyAffinity = 0,
mplsTunnelIncludeAllAffinity = 0,
mplsTunnelExcludeAnyAffinity = 0,
mplsTunnelPathInUse = 1,
mplsTunnelRole = head(1),
}
4.3. MPLS-FRR-FACILITY-STD-MIB π
this MIB module MUST be implemented if the facility backup fast-reroute method is implemented. It's a must-do if you're going facility π«Ά
4.3.1. mplsFrrFacilityDBTable
The mplsFrrFacilityDBTable provides information about the fast-reroute database for facility-based fast reroute π
An entry is created in this table for each tunnel being protected by a backup tunnel. Backup tunnels are defined to protect the tunnels traversing an interface π
The protecting tunnel will exist on the PLR as per [RFC4090]. Protected tunnels are the LSPs that traverse the protected link π
4.3.2. Example of Relationship between Various Tables of MPLS-FRR-FACILITY-STD-MIB
[R1]---[R2]----[R3]-----[R4]---[R5]
\ /
[R6]===[R7]
Protected LSP 1 : [R1->R2->R3->R4->R5]
Protecting Tunnel 999: [R2->R6->R7->R4]
Facility Backup Technique
-------------------------
In the above topology, the following tables are populated at R2 π¦
mplsFrrFacilityDBEntry:
{
mplsFrrFacilityProtectedIfIndex = 10,
mplsFrrFacilityProtectingTunnelIndex = 999,
mplsFrrFacilityBackupTunnelIndex = 1,
mplsFrrFacilityBackupTunnelInstance = 0,
mplsFrrFacilityBackupTunnelIngressLSRId = 192.0.2.1
-- 192.0.2.1/24
mplsFrrFacilityBackupTunnelEgressLSRId = 192.0.2.2
-- 192.0.2.2/24
mplsFrrFacilityDBNumProtectingTunnelOnIf = 1,
mplsFrrFacilityDBNumProtectedLspOnIf = 1,
mplsFrrFacilityDBNumProtectedTunnels = 1,
mplsFrrFacilityDBProtectingTunnelStatus = 1, -- active
mplsFrrFacilityDBProtectingTunnelResvBw = 0,
};
In mplsTunnelTable (protecting tunnel entry):
{
mplsTunnelIndex = 999, -- protecting tunnel index
mplsTunnelInstance = 0, -- head
mplsTunnelIngressLSRId = 192.0.2.2,
mplsTunnelEgressLSRId = 192.0.2.4,
mplsTunnelName = "R2-R4",
mplsTunnelDescr = "R2-R4",
mplsTunnelIsIf = true(1),
mplsTunnelXCPointer = 0.0,
mplsTunnelSignallingProto = none(1),
mplsTunnelSetupPrio = 0,
mplsTunnelHoldingPrio = 0,
mplsTunnelSessionAttributes = 0,
mplsTunnelLocalProtectInUse = false(1),
mplsTunnelResourcePointer = mplsTunnelResourceMaxRate.5,
mplsTunnelInstancePriority = 1,
mplsTunnelHopTableIndex = 1,
mplsTunnelIncludeAnyAffinity = 0,
mplsTunnelIncludeAllAffinity = 0,
mplsTunnelExcludeAnyAffinity = 0,
mplsTunnelPathInUse = 1,
mplsTunnelRole = head(1),
}
In mplsTunnelTable (protected LSP):
{
mplsTunnelIndex = 1,
-- protected LSP tunnel index
mplsTunnelInstance = 100,
-- specific instance protected
mplsTunnelIngressLSRId = 192.0.2.1,
mplsTunnelEgressLSRId = 192.0.2.5,
mplsTunnelName = "R1-R5",
mplsTunnelDescr = "R1-R5",
mplsTunnelIsIf = false(2),
mplsTunnelXCPointer = 0.0,
mplsTunnelSignallingProto = none(1),
mplsTunnelSetupPrio = 0,
mplsTunnelHoldingPrio = 0,
mplsTunnelSessionAttributes = 0,
mplsTunnelLocalProtectInUse = true(1),
mplsTunnelResourcePointer = mplsTunnelResourceMaxRate.6,
mplsTunnelInstancePriority = 1,
mplsTunnelHopTableIndex = 1,
mplsTunnelIncludeAnyAffinity = 0,
mplsTunnelIncludeAllAffinity = 0,
mplsTunnelExcludeAnyAffinity = 0,
mplsTunnelPathInUse = 1,
mplsTunnelRole = transit(2),
}
5. Handling IPv6 Tunnels π·
As described in [RFC4990], in order to support IPv6 MPLS tunnels in the mplsTunnelTable [RFC3812], all LSRs in the network MUST have a 32-bit LSR ID that can be used to identify the LSR with the existing mplsTunnelIngressLSRId and mplsTunnelEgressLSRId objects, which are 32 bits long. So every LSR needs that 32-bit ID, no exceptions π
In this MIB, the following objects, which refer to ingress/egress LSRs, will therefore have the 32-bit LSR ID to support IPv6 tunnels π§
- mplsFrrOne2OnePlrTunnelIngressLSRId and mplsFrrOne2OnePlrTunnelEgressLSRId objects of the mplsFrrOne2OnePlrTable
- mplsFrrOne2OnePlrTunnelIngressLSRId and mplsFrrOne2OnePlrTunnelEgressLSRId objects of the mplsFrrOne2OneDetourTable
- mplsFrrFacilityBackupTunnelIngressLSRId and mplsFrrFacilityBackupTunnelEgressLSRId objects of the mplsFrrFacilityDBTable
6. MIB Module Definitions π
6.1. MPLS-FRR-GENERAL-STD-MIB Module Definitions β¨
okay so this is the MIB drop π§ the general FRR module, and it's giving tables, scalars, and the whole vibe. it's the shared stuff both FRR methods use, so every LSR doing FRR should have these π
-- Start of MPLS-FRR-GENERAL-STD-MIB
MPLS-FRR-GENERAL-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, mib-2,
Unsigned32,
Counter32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
RowStatus, StorageType
FROM SNMPv2-TC -- [RFC2579]
InterfaceIndexOrZero,
ifGeneralInformationGroup,
ifCounterDiscontinuityGroup
FROM IF-MIB -- [RFC2863]
MplsTunnelIndex, MplsTunnelInstanceIndex,
MplsBitRate,
MplsTunnelAffinity
FROM MPLS-TC-STD-MIB -- [RFC3811]
mplsTunnelGroup, mplsTunnelScalarGroup,
mplsTunnelARHopListIndex, mplsTunnelARHopIndex
FROM MPLS-TE-STD-MIB -- [RFC3812]
;
mplsFrrGeneralMIB MODULE-IDENTITY
LAST-UPDATED
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
ORGANIZATION
"Multiprotocol Label Switching (MPLS) Working Group"
CONTACT-INFO
"
Riza Cetin
Email: riza.cetin@alcatel.be
Thomas D. Nadeau
Email: thomas.nadeau@ca.com
A S Kiran Koushik
Email: kkoushik@cisco.com
Stefaan De Cnodder
Email: Stefaan.de_cnodder@alcatel.be
Der-Hwa Gan
Email: dhg@juniper.net
"
DESCRIPTION
"Copyright (c) 2011 IETF Trust and the persons
identified as authors of the code. All rights
reserved.
Redistribution and use in source and binary forms,
with or without modification, is permitted pursuant
to, and subject to the license terms contained in,
the Simplified BSD License set forth in Section 4.c
of the IETF Trust's Legal Provisions Relating to
IETF Documents
(http://trustee.ietf.org/license-info).
This MIB module contains generic object definitions for
MPLS Traffic Engineering Fast Reroute as defined in
RFC 4090."
-- Revision history.
REVISION
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
DESCRIPTION
"Initial version. Published as RFC 6445."
::= { mib-2 202 }
-- Top-level components of this MIB module
mplsFrrGeneralObjects
OBJECT IDENTIFIER ::= { mplsFrrGeneralMIB 1 }
mplsFrrGeneralConformance
OBJECT IDENTIFIER ::= { mplsFrrGeneralMIB 2 }
-- MPLS Fast-Reroute generic scalars
mplsFrrGeneralProtectionMethod OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
oneToOneBackup(2),
facilityBackup(3)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates which protection method is to be used for fast
reroute on this device. Some devices may require a reboot
if this variable is to take effect after being modified."
::= { mplsFrrGeneralObjects 1 }
mplsFrrGeneralIngressTunnelInstances OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of tunnel instances for either detour LSPs or
bypass tunnels for which this LSR is the ingress."
::= { mplsFrrGeneralObjects 2 }
--
-- General FRR Table section
--
-- These tables apply to both types of FRR
-- and should be implemented by all LSRs supporting
-- FRR.
--
-- MPLS Fast-Reroute Constraints table
mplsFrrGeneralConstraintsTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFrrGeneralConstraintsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table shows detour LSP or bypass tunnel setup
constraints."
::= { mplsFrrGeneralObjects 3 }
mplsFrrGeneralConstraintsEntry OBJECT-TYPE
SYNTAX MplsFrrGeneralConstraintsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents detour LSP or bypass
tunnel setup constraints for an interface or link to be
protected by detour LSPs or a bypass tunnel.
Once the LSP or tunnel instance to be protected is identified
in the mplsTunnelTable, the corresponding mplsTunnelIfIndex
value of that tunnel can be used to get the ifIndex of
the underlying physical interface using the ifStackTable.
That ifIndex of the underlying physical interface will
be used as mplsFrrGeneralConstraintsIfIndexOrZero in this
table to protect the LSPs or tunnel instances determined
earlier.
It is recommended that ifIndex persistence be enabled
across re-initializations. If persistence is not
implemented, then the value of
mplsFrrGeneralConstraintsIfIndexOrZero in this
table cannot be guaranteed across restarts and all entries
in this table MUST NOT be persistent, or the values of
mplsFrrGeneralConstraintsIfIndexOrZero MUST be reconstructed
on restart.
SNMP engines must only allow entries in this table
to be created for tunnel instances that require fast reroute
as indicated by the presence of the FAST_REROUTE object
in the signaling for the LSP in question.
An entry in this table can be created only if a
corresponding entry in mplsTunnelTable exists with the
same mplsTunnelIndex as mplsFrrGeneralConstraintsTunnelIndex.
Entries in this table are deleted when the corresponding
entries in mplsTunnelTable are deleted.
It is recommended that entries in this table be persistent
across reboots.
Entries indexed with mplsFrrGeneralConstraintsIfIndexOrZero
and set to 0 apply to all interfaces on this device for
which the FRR feature can operate.
If the mplsTunnelInstance object is set to a value of 0,
it indicates that the mplsTunnelEntry contains a tunnel
ingress. This is typically how configuration of this
feature is performed on devices where the actual
protection LSP used is left up to the protecting tunnel.
However, in cases where static configuration is
possible, any valid tunnel instance is possible;
however, it is strongly RECOMMENDED that the instance
index SHOULD use the following convention to identify
backup LSPs:
- lower 16 bits : protected tunnel instance
- higher 16 bits: must be all zeros"
REFERENCE
"Section 4.1 of RFC 4090 and Section 6.1 of RFC 3812."
INDEX { mplsFrrGeneralConstraintsIfIndexOrZero,
mplsFrrGeneralConstraintsTunnelIndex,
mplsFrrGeneralConstraintsTunnelInstance
}
::= { mplsFrrGeneralConstraintsTable 1 }
MplsFrrGeneralConstraintsEntry ::= SEQUENCE {
mplsFrrGeneralConstraintsIfIndexOrZero InterfaceIndexOrZero,
mplsFrrGeneralConstraintsTunnelIndex MplsTunnelIndex,
mplsFrrGeneralConstraintsTunnelInstance MplsTunnelInstanceIndex,
mplsFrrGeneralConstraintsProtectionType INTEGER,
mplsFrrGeneralConstraintsSetupPrio Unsigned32,
mplsFrrGeneralConstraintsHoldingPrio Unsigned32,
mplsFrrGeneralConstraintsInclAnyAffinity MplsTunnelAffinity,
mplsFrrGeneralConstraintsInclAllAffinity MplsTunnelAffinity,
mplsFrrGeneralConstraintsExclAnyAffinity MplsTunnelAffinity,
mplsFrrGeneralConstraintsHopLimit Unsigned32,
mplsFrrGeneralConstraintsBandwidth MplsBitRate,
mplsFrrGeneralConstraintsStorageType StorageType,
mplsFrrGeneralConstraintsRowStatus RowStatus
}
mplsFrrGeneralConstraintsIfIndexOrZero OBJECT-TYPE
SYNTAX InterfaceIndexOrZero
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies an interface that a fast-reroute
protection tunnel is configured to potentially protect
in the event of a fault. Entries with this index set to
0 indicate that the configured protection tunnel protects
all interfaces on this device (i.e., node protection)."
::= { mplsFrrGeneralConstraintsEntry 1 }
mplsFrrGeneralConstraintsTunnelIndex OBJECT-TYPE
SYNTAX MplsTunnelIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies a tunnel in the mplsTunnelTable that
is configured to possibly protect the interface(s) specified
by mplsFrrGeneralConstraintsIfIndexOrZero in the event of a
fault."
REFERENCE
"mplsTunnelTable from RFC 3812."
::= { mplsFrrGeneralConstraintsEntry 2 }
mplsFrrGeneralConstraintsTunnelInstance OBJECT-TYPE
SYNTAX MplsTunnelInstanceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies an existing instance of this tunnel
for which fast reroute is requested. Note that a value of
0 indicates that the configuration points at a tunnel
head (as specified in RFC 3812). This is typically how
configuration of this feature is performed on devices
where the actual protection LSP used is left up to the
protecting tunnel. However, in cases where static
configuration is possible, any valid tunnel instance is
permissible. In these cases, it is recommended that the
instance index follow the following convention so as
to make identification of backup LSPs easier:
- lower 16 bits : protected tunnel instance
- higher 16 bits: must be all zeros"
::= { mplsFrrGeneralConstraintsEntry 3 }
mplsFrrGeneralConstraintsProtectionType OBJECT-TYPE
SYNTAX INTEGER { linkProtection(1),
nodeProtection(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates type of the resource protection:
linkProtection(1) indicates that this tunnel is
set up to protect a particular link's resources.
nodeProtection(2) indicates that this tunnel is
set up to protect an entire node from failure."
REFERENCE
"Section 3 of RFC 4090."
DEFVAL { nodeProtection }
::= { mplsFrrGeneralConstraintsEntry 4 }
mplsFrrGeneralConstraintsSetupPrio OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the setup priority of the detour LSP
or bypass tunnel."
REFERENCE
"Section 4.7 of RFC 3209."
DEFVAL { 7 }
::= { mplsFrrGeneralConstraintsEntry 5 }
mplsFrrGeneralConstraintsHoldingPrio OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the holding priority for the detour LSP
or bypass tunnel."
REFERENCE
"Section 4.7 of RFC 3209."
DEFVAL { 0 }
::= { mplsFrrGeneralConstraintsEntry 6 }
okay so the constraints are where it gets spicy π₯ Every one of these is a read-create column, and the defaults are right there in DEFVAL. π
mplsFrrGeneralConstraintsInclAnyAffinity OBJECT-TYPE
SYNTAX MplsTunnelAffinity
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the include-any link constraint for the
detour LSP or bypass tunnel. A link satisfies the
include-any constraint if and only if the constraint
is zero, or the link and the constraint have a
resource class in common."
REFERENCE
"Section 4.7 of RFC 3209."
DEFVAL { 0 }
::= { mplsFrrGeneralConstraintsEntry 7 }
mplsFrrGeneralConstraintsInclAllAffinity OBJECT-TYPE
SYNTAX MplsTunnelAffinity
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the include-all link constraint for the
detour LSP or bypass tunnel. A link satisfies the
include-all constraint if and only if the link contains
all of the administrative groups specified in the
constraint."
REFERENCE
"Section 4.7 of RFC 3209."
DEFVAL { 0 }
::= { mplsFrrGeneralConstraintsEntry 8 }
mplsFrrGeneralConstraintsExclAnyAffinity OBJECT-TYPE
SYNTAX MplsTunnelAffinity
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Indicates the exclude-any link constraint for the
detour LSP or bypass tunnel. A link satisfies the
exclude-any constraint if and only if the link contains
none of the administrative groups specified in the
constraint."
REFERENCE
"Section 4.7 of RFC 3209."
DEFVAL { 0 }
::= { mplsFrrGeneralConstraintsEntry 9 }
mplsFrrGeneralConstraintsHopLimit OBJECT-TYPE
SYNTAX Unsigned32(0..255)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of hops that the detour LSP or
bypass tunnel may traverse."
REFERENCE
"Section 4.1 of RFC 4090."
DEFVAL { 32 }
::= { mplsFrrGeneralConstraintsEntry 10 }
mplsFrrGeneralConstraintsBandwidth OBJECT-TYPE
SYNTAX MplsBitRate
UNITS "kilobits per second"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum bandwidth specifically reserved for a detour
LSP or bypass tunnel, in units of thousands of bits
per second (kbps). Note that setting this value to 0
indicates best-effort treatment."
DEFVAL { 0 }
::= { mplsFrrGeneralConstraintsEntry 11 }
mplsFrrGeneralConstraintsStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this configuration entry.
Conceptual rows having the value 'permanent'
need not allow write access to any columnar
objects in the row."
DEFVAL { volatile }
::= { mplsFrrGeneralConstraintsEntry 12 }
mplsFrrGeneralConstraintsRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object is used to create, modify, and/or delete a row
in this table. When a row in this table is in active(1)
state, no objects in that row can be modified
except mplsFrrGeneralConstraintsRowStatus and
mplsFrrGeneralConstraintsStorageType."
::= { mplsFrrGeneralConstraintsEntry 13 }
-- MPLS Fast-Reroute Tunnel Actual Route Hop table
mplsFrrGeneralTunnelARHopTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFrrGeneralTunnelARHopEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table sparsely extends mplsTunnelARHopTable defined
in the MPLS-TE-STD-MIB module with fast-reroute objects.
These objects specify the status of local protection,
including availability and active use, on a per-hop basis,
of hops traversed by a protected tunnel."
::= { mplsFrrGeneralObjects 4 }
mplsFrrGeneralTunnelARHopEntry OBJECT-TYPE
SYNTAX MplsFrrGeneralTunnelARHopEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This entry contains fast-reroute protection status of a
single protected tunnel hop."
INDEX {
mplsTunnelARHopListIndex,
mplsTunnelARHopIndex
}
::= { mplsFrrGeneralTunnelARHopTable 1 }
MplsFrrGeneralTunnelARHopEntry ::= SEQUENCE {
mplsFrrGeneralTunnelARHopSessionAttributeFlags BITS,
mplsFrrGeneralTunnelARHopRROSubObjectFlags BITS
}
mplsFrrGeneralTunnelARHopSessionAttributeFlags OBJECT-TYPE
SYNTAX BITS { arHopSessionAttrFlagsUnsupported(0),
localProtectionDesired(1),
labelRecordingDesired(2),
sestyleDesired(3),
bandwidthProtectionDesired(4),
nodeProtectionDesired(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object indicates the desired values for the
associated SESSION_ATTRIBUTE flags. Note that since
this object is a BITS type, the bits may be set to
indicate various desired combinations of the
SESSION_ATTRIBUTE flags.
If SESSION_ATTRIBUTE flags are not supported, then this
object contains the value of
arHopSessionAttrFlagsUnsupported(0)."
REFERENCE
"See Section 4.3 of RFC 4090 for SESSION_ATTRIBUTE flags."
::= { mplsFrrGeneralTunnelARHopEntry 1 }
mplsFrrGeneralTunnelARHopRROSubObjectFlags OBJECT-TYPE
SYNTAX BITS { arHopRROSubObjectFlagsUnsupported(0),
localProtectionAvailable(1),
localProtectionInUse(2),
bandwidthProtection(3),
nodeProtection(4)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object indicates the flags that are currently
in use by the associated Record Route Object (RRO)
sub-object.
Note that since this object is a BITS type,
the bits may be set to indicate various combinations of
the flags.
If the RRO sub-object is not supported, then this object
contains the value of arHopRROSubObjectFlagsUnsupported(0)."
REFERENCE
"Section 4.4 of RFC 4090."
::= { mplsFrrGeneralTunnelARHopEntry 2 }
-- Notifications
-- Module Conformance Statement
mplsFrrGeneralCompliances
OBJECT IDENTIFIER ::= {mplsFrrGeneralConformance 1 }
mplsFrrGeneralGroups
OBJECT IDENTIFIER ::= {mplsFrrGeneralConformance 2 }
mplsFrrGeneralModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-GENERAL-STD-MIB module."
MODULE IF-MIB -- The Interfaces Group MIB module, RFC 2863.
MANDATORY-GROUPS {
ifGeneralInformationGroup,
ifCounterDiscontinuityGroup
}
MODULE MPLS-TE-STD-MIB -- The MPLS Traffic Engineering
-- MIB module, RFC 3812
MANDATORY-GROUPS {
mplsTunnelGroup,
mplsTunnelScalarGroup
}
MODULE -- this module
MANDATORY-GROUPS {
mplsFrrGeneralScalarGroup,
mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
}
OBJECT mplsFrrGeneralConstraintsRowStatus
SYNTAX RowStatus { active(1), notInService(2) }
WRITE-SYNTAX RowStatus { active(1), notInService(2),
createAndGo(4), destroy(6)
}
DESCRIPTION
"Support for createAndWait and notReady is not required."
::= { mplsFrrGeneralCompliances 1 }
mplsFrrGeneralModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-GENERAL-STD-MIB module."
MODULE
MANDATORY-GROUPS {
mplsFrrGeneralScalarGroup,
mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
}
-- Scalars
OBJECT mplsFrrGeneralProtectionMethod
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
-- mplsFrrGeneralConstraintsTable
OBJECT mplsFrrGeneralConstraintsSetupPrio
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsHoldingPrio
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsInclAnyAffinity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsInclAllAffinity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsExclAnyAffinity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsBandwidth
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsProtectionType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsHopLimit
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsStorageType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrGeneralConstraintsRowStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { mplsFrrGeneralCompliances 2 }
-- Units of conformance
mplsFrrGeneralScalarGroup OBJECT-GROUP
OBJECTS {
mplsFrrGeneralIngressTunnelInstances,
mplsFrrGeneralProtectionMethod
}
STATUS current
DESCRIPTION
"Objects that are required to display general fast-reroute
information."
::= { mplsFrrGeneralGroups 1 }
mplsFrrGeneralConstraintsGroup OBJECT-GROUP
OBJECTS {
mplsFrrGeneralConstraintsProtectionType,
mplsFrrGeneralConstraintsSetupPrio,
mplsFrrGeneralConstraintsHoldingPrio,
mplsFrrGeneralConstraintsInclAnyAffinity,
mplsFrrGeneralConstraintsInclAllAffinity,
mplsFrrGeneralConstraintsExclAnyAffinity,
mplsFrrGeneralConstraintsHopLimit,
mplsFrrGeneralConstraintsBandwidth,
mplsFrrGeneralConstraintsStorageType,
mplsFrrGeneralConstraintsRowStatus
}
STATUS current
DESCRIPTION
"Objects that are required to configure fast-reroute
constraints at the ingress LSR of the tunnel that
requires fast-reroute service."
::= { mplsFrrGeneralGroups 2 }
ahh that's the whole MIB chunk, it's giving everything π¦β¨
okay the General MIB is wrapping up here π β¨ the last object group is basically the per-hop protection status bundle, and it's giving tidy.
mplsFrrGeneralTunnelARHopGroup OBJECT-GROUP
OBJECTS {
mplsFrrGeneralTunnelARHopSessionAttributeFlags,
mplsFrrGeneralTunnelARHopRROSubObjectFlags
}
STATUS current
DESCRIPTION
"Objects that are required to present per-hop fast-reroute
protection status."
::= { mplsFrrGeneralGroups 3}
END
-- End of MPLS-FRR-GENERAL-STD-MIB
6.2. MPLS-FRR-ONE2ONE-STD-MIB Module Definitions π¦
bestie, this is the one-to-one FRR MIB π it's the module that handles the one-to-one backup method for Fast Reroute from RFC 4090, and it imports stuff from a bunch of other MIBs, so it's very much a team effort π«Ά
-- Start of MPLS-FRR-ONE2ONE-STD-MIB
MPLS-FRR-ONE2ONE-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, mib-2,
Integer32, Gauge32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF -- [RFC2580]
TruthValue
FROM SNMPv2-TC -- [RFC2579]
MplsTunnelIndex, MplsTunnelInstanceIndex,
MplsLsrIdentifier
FROM MPLS-TC-STD-MIB -- [RFC3811]
InetAddressType, InetAddress
FROM INET-ADDRESS-MIB -- [RFC4001]
mplsFrrGeneralScalarGroup, mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
FROM MPLS-FRR-GENERAL-STD-MIB
;
mplsFrrOne2OneMIB MODULE-IDENTITY
LAST-UPDATED
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
ORGANIZATION
"Multiprotocol Label Switching (MPLS) Working Group"
CONTACT-INFO
"
Riza Cetin
Email: riza.cetin@alcatel.be
Thomas D. Nadeau
Email: thomas.nadeau@ca.com
A S Kiran Koushik
Email: kkoushik@cisco.com
Stefaan De Cnodder
Email: Stefaan.de_cnodder@alcatel.be
Der-Hwa Gan
Email: dhg@juniper.net
"
DESCRIPTION
"Copyright (c) 2011 IETF Trust and the persons
identified as authors of the code. All rights
reserved.
Redistribution and use in source and binary forms,
with or without modification, is permitted pursuant
to, and subject to the license terms contained in,
the Simplified BSD License set forth in Section 4.c
of the IETF Trust's Legal Provisions Relating to
IETF Documents
(http://trustee.ietf.org/license-info).
This MIB module contains object definitions for the
MPLS Traffic Engineering one-to-one backup method for
Fast Reroute as defined in RFC 4090."
-- Revision history.
REVISION
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
DESCRIPTION
"Initial version. Published as RFC 6445."
::= { mib-2 203 }
-- Top-level components of this MIB module
mplsFrrOne2OneObjects OBJECT IDENTIFIER
::= { mplsFrrOne2OneMIB 1 }
mplsFrrOne2OneConformance OBJECT IDENTIFIER
::= { mplsFrrOne2OneMIB 2 }
-- Scalar objects defined for the one-to-one style of FRR
mplsFrrIncomingDetourLSPs OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of detour LSPs entering the device."
::= { mplsFrrOne2OneObjects 1 }
mplsFrrOutgoingDetourLSPs OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of detour LSPs leaving the device."
::= { mplsFrrOne2OneObjects 2 }
mplsFrrOne2OneDetourOriginating OBJECT-TYPE
SYNTAX Integer32(0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of detour LSPs originating at this PLR."
::= { mplsFrrOne2OneObjects 3 }
mplsFrrActiveProtectedLSPs OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of LSPs currently protected by
the FRR feature where this device acts as the PLR
for those LSPs."
::= { mplsFrrOne2OneObjects 4 }
--
-- One-to-One specific tables
--
-- Tables in this section pertain only to the one-to-one
-- style of FRR.
--
-- MPLS Fast-Reroute Point of Local Repair table
mplsFrrOne2OnePlrTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFrrOne2OnePlrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table shows a list of protected TE tunnels with
the corresponding protecting tunnel, as well as the PLR
where the protecting tunnel that initiated the detour
LSPs traverses this node."
::= { mplsFrrOne2OneObjects 5 }
mplsFrrOne2OnePlrEntry OBJECT-TYPE
SYNTAX MplsFrrOne2OnePlrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents a protected tunnel LSP
together with its detour tunnel instance. An entry in
this table is only created by an SNMP engine as instructed
by an MPLS signaling protocol.
The entries of this table are present in all LSRs on the
path of the detour LSP.
The objects mplsFrrOne2OnePlrSenderAddrType and
mplsFrrOne2OnePlrSenderAddr can be modified after the row
is created.
The objects mplsFrrOne2OnePlrTunnelIndex,
mplsFrrOne2OnePlrTunnelDetourInstance,
mplsFrrOne2OnePlrTunnelIngressLSRId,
and mplsFrrOne2OnePlrTunnelEgressLSRId have the same
values as the objects mplsTunnelIndex, mplsTunnelInstance,
mplsTunnelIngressLSRId, and mplsTunnelEgressLSRId of the
detour tunnel instance created in the mplsTunnelTable
(MPLS-TE-STD-MIB).
The entries in this table will be deleted when the
corresponding entries in the mplsTunnelTable are deleted."
INDEX { mplsFrrOne2OnePlrTunnelIndex, -- from MPLS-TE-STD-MIB
mplsFrrOne2OnePlrTunnelDetourInstance,-- mplsTunnelTable
mplsFrrOne2OnePlrTunnelIngressLSRId,-- Tunnels must exist
mplsFrrOne2OnePlrTunnelEgressLSRId, -- a priori
mplsFrrOne2OnePlrId }
::= { mplsFrrOne2OnePlrTable 1 }
MplsFrrOne2OnePlrEntry ::= SEQUENCE {
mplsFrrOne2OnePlrTunnelIndex MplsTunnelIndex,
mplsFrrOne2OnePlrTunnelDetourInstance MplsTunnelInstanceIndex,
mplsFrrOne2OnePlrTunnelIngressLSRId MplsLsrIdentifier,
mplsFrrOne2OnePlrTunnelEgressLSRId MplsLsrIdentifier,
mplsFrrOne2OnePlrId MplsLsrIdentifier,
mplsFrrOne2OnePlrSenderAddrType InetAddressType,
mplsFrrOne2OnePlrSenderAddr InetAddress,
mplsFrrOne2OnePlrAvoidNodeAddrType InetAddressType,
mplsFrrOne2OnePlrAvoidNodeAddr InetAddress
}
mplsFrrOne2OnePlrTunnelIndex OBJECT-TYPE
SYNTAX MplsTunnelIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies a tunnel between a pair of LSRs
from the mplsTunnelEntry."
::= { mplsFrrOne2OnePlrEntry 1 }
mplsFrrOne2OnePlrTunnelDetourInstance OBJECT-TYPE
SYNTAX MplsTunnelInstanceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies a detour instance of a tunnel from
the mplsTunnelEntry.
- lower 16 bits : protected tunnel instance
- higher 16 bits: detour instance"
::= { mplsFrrOne2OnePlrEntry 2 }
mplsFrrOne2OnePlrTunnelIngressLSRId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The purpose of this object is to uniquely identify a
tunnel within a network. When the MPLS signaling
protocol is rsvp(2), this object SHOULD contain the
same value as the Extended Tunnel ID field in the
SESSION object. When the MPLS signaling protocol
is crldp(3), this object SHOULD contain the same
value as the Ingress LSR Router ID field in the
LSPID TLV object.
This value represents the head-end of the protected
tunnel instance."
REFERENCE
"Section 4.7 of RFC 3209."
::= { mplsFrrOne2OnePlrEntry 3 }
mplsFrrOne2OnePlrTunnelEgressLSRId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the egress LSR ID of the protected tunnel instance."
::= { mplsFrrOne2OnePlrEntry 4 }
mplsFrrOne2OnePlrId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This value represents the PLR that has initiated a detour LSP
to protect a tunnel instance.
This value is signaled via the DETOUR object defined in
MPLS RSVP."
REFERENCE
"Section 4.2 of RFC 4090."
::= { mplsFrrOne2OnePlrEntry 5 }
mplsFrrOne2OnePlrSenderAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Denotes the address type of this detour instance's sender
address."
DEFVAL { ipv4 }
::= { mplsFrrOne2OnePlrEntry 6 }
mplsFrrOne2OnePlrSenderAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The IP address of the PLR that has initiated the detour LSP.
The type of this address is determined by the value of the
mplsFrrOne2OnePlrSenderAddrType object."
::= { mplsFrrOne2OnePlrEntry 7 }
mplsFrrOne2OnePlrAvoidNodeAddrType OBJECT-TYPE
SYNTAX InetAddressType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Denotes the address type of the node that this PLR tries to
avoid."
DEFVAL { ipv4 }
::= { mplsFrrOne2OnePlrEntry 8 }
mplsFrrOne2OnePlrAvoidNodeAddr OBJECT-TYPE
SYNTAX InetAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The IP address of the node that this PLR tries to avoid.
The type of this address is determined by the value of the
mplsFrrOne2OnePlrAvoidNodeAddrType object.
This value is signaled via the DETOUR object defined in
MPLS RSVP."
REFERENCE
"Section 4.2 of RFC 4090."
::= { mplsFrrOne2OnePlrEntry 9 }
-- MPLS One-to-One Fast-Reroute Detour table
mplsFrrOne2OneDetourTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFrrOne2OneDetourEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table shows detour LSPs."
::= { mplsFrrOne2OneObjects 6 }
that's the end of this chunk, the detour table entry definitions are coming up next πΈπ§
Okay so we're picking up right in the middle of the detour table, bestie π Here's the rest of the One-to-One detour entry, plus the whole conformance section at the end of that MIB π
mplsFrrOne2OneDetourEntry OBJECT-TYPE
SYNTAX MplsFrrOne2OneDetourEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table represents a detour. An entry in this
table is only created by an SNMP engine as instructed by an
MPLS signaling protocol."
INDEX {
mplsFrrOne2OnePlrTunnelIndex, -- from MPLS-TE-STD-MIB
mplsFrrOne2OnePlrTunnelDetourInstance, -- mplsTunnelTable
mplsFrrOne2OnePlrTunnelIngressLSRId,-- Tunnels must exist
mplsFrrOne2OnePlrTunnelEgressLSRId -- a priori
}
::= { mplsFrrOne2OneDetourTable 1 }
MplsFrrOne2OneDetourEntry ::= SEQUENCE {
mplsFrrOne2OneDetourActive TruthValue,
mplsFrrOne2OneDetourMergedStatus INTEGER,
mplsFrrOne2OneDetourMergedDetourInst MplsTunnelInstanceIndex
}
mplsFrrOne2OneDetourActive OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether or not the main LSP has switched over to
this detour LSP.
If the value of this object is 'true', then it means that
the main LSP has switched over to this detour LSP. Otherwise,
it contains a value of 'false'.
This is only relevant for detours originated by this node."
::= { mplsFrrOne2OneDetourEntry 1 }
mplsFrrOne2OneDetourMergedStatus OBJECT-TYPE
SYNTAX INTEGER { notMerged(1),
mergedWithProtectedTunnel(2),
mergedWithDetour(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value represents whether or not this detour is merged.
This value is set to notMerged(1) if this detour is not
merged.
This value is set to mergedWithProtectedTunnel(2) if
this detour is merged with the protected tunnel. This value
is mergedWithDetour(3) if this detour is merged
with another detour protecting the same tunnel."
::= { mplsFrrOne2OneDetourEntry 2 }
mplsFrrOne2OneDetourMergedDetourInst OBJECT-TYPE
SYNTAX MplsTunnelInstanceIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value represents the mplsTunnelInstance of the detour
with which this detour is merged. This object is only valid
when mplsFrrOne2OneDetourMergedStatus is set to
mergedWithDetour(3).
- lower 16 bits : protected tunnel instance
- higher 16 bits: detour instance"
::= { mplsFrrOne2OneDetourEntry 3 }
-- Module Conformance Statement
mplsFrrOne2OneCompliances
OBJECT IDENTIFIER ::= {mplsFrrOne2OneConformance 1 }
mplsFrrOne2OneGroups
OBJECT IDENTIFIER ::= {mplsFrrOne2OneConformance 2 }
mplsFrrOne2OneModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-ONE2ONE-STD-MIB module."
MODULE MPLS-FRR-GENERAL-STD-MIB -- MPLS FRR Generic MIB
MANDATORY-GROUPS {
mplsFrrGeneralScalarGroup,
mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
}
MODULE -- this module
MANDATORY-GROUPS {
mplsFrrOne2OneScalarsGroup,
mplsFrrOne2OnePLRDetourGroup,
mplsFrrOne2OnePlrGroup
}
::= { mplsFrrOne2OneCompliances 1 }
mplsFrrOne2OneModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-ONE2ONE-STD-MIB module."
MODULE
MANDATORY-GROUPS {
mplsFrrOne2OneScalarsGroup,
mplsFrrOne2OnePLRDetourGroup,
mplsFrrOne2OnePlrGroup
}
-- mplsFrrOne2OnePlrTable
OBJECT mplsFrrOne2OnePlrSenderAddrType
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT mplsFrrOne2OnePlrSenderAddr
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { mplsFrrOne2OneCompliances 2 }
-- Units of conformance
mplsFrrOne2OneScalarsGroup OBJECT-GROUP
OBJECTS {
mplsFrrIncomingDetourLSPs,
mplsFrrOutgoingDetourLSPs,
mplsFrrOne2OneDetourOriginating,
mplsFrrActiveProtectedLSPs
}
STATUS current
DESCRIPTION
"Objects that are required for general One-to-One PLR
information."
::= { mplsFrrOne2OneGroups 1 }
mplsFrrOne2OnePLRDetourGroup OBJECT-GROUP
OBJECTS {
mplsFrrOne2OneDetourActive,
mplsFrrOne2OneDetourMergedStatus,
mplsFrrOne2OneDetourMergedDetourInst
}
STATUS current
DESCRIPTION
"Objects that are required to present the detour LSP
information at the detour ingress, transit, and egress
LSRs."
::= { mplsFrrOne2OneGroups 2 }
mplsFrrOne2OnePlrGroup OBJECT-GROUP
OBJECTS {
mplsFrrOne2OnePlrSenderAddrType,
mplsFrrOne2OnePlrSenderAddr,
mplsFrrOne2OnePlrAvoidNodeAddrType,
mplsFrrOne2OnePlrAvoidNodeAddr
}
STATUS current
DESCRIPTION
"Objects that are required to represent the FRR
One-to-One PLR information."
::= { mplsFrrOne2OneGroups 3 }
END
-- End of MPLS-FRR-ONE2ONE-STD-MIB
6.3. MPLS-FRR-FACILITY-STD-MIB Module Definitions β¨
Okay the facility MIB is next and it's giving main character energy π This one is for the facility backup method of Fast Reroute from RFC 4090, and it pulls in a bunch of stuff from other modules up top, so the imports list is kinda long π§
-- Start of MPLS-FRR-FACILITY-STD-MIB
MPLS-FRR-FACILITY-STD-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, mib-2,
Integer32,
NOTIFICATION-TYPE, Gauge32
FROM SNMPv2-SMI -- [RFC2578]
MODULE-COMPLIANCE, OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF -- [RFC2580]
TruthValue
FROM SNMPv2-TC -- [RFC2579]
InterfaceIndex
FROM IF-MIB -- [RFC2863]
MplsTunnelIndex, MplsTunnelInstanceIndex,
MplsLsrIdentifier, MplsBitRate
FROM MPLS-TC-STD-MIB -- [RFC3811]
mplsFrrGeneralScalarGroup, mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
FROM MPLS-FRR-GENERAL-STD-MIB
;
mplsFrrFacilityMIB MODULE-IDENTITY
LAST-UPDATED
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
ORGANIZATION
"Multiprotocol Label Switching (MPLS) Working Group"
CONTACT-INFO
"
Riza Cetin
Email: riza.cetin@alcatel.be
Thomas D. Nadeau
Email: thomas.nadeau@ca.com
A S Kiran Koushik
Email: kkoushik@cisco.com
Stefaan De Cnodder
Email: Stefaan.de_cnodder@alcatel.be
Der-Hwa Gan
Email: dhg@juniper.net
"
DESCRIPTION
"Copyright (c) 2011 IETF Trust and the persons
identified as authors of the code. All rights
reserved.
Redistribution and use in source and binary forms,
with or without modification, is permitted pursuant
to, and subject to the license terms contained in,
the Simplified BSD License set forth in Section 4.c
of the IETF Trust's Legal Provisions Relating to
IETF Documents
(http://trustee.ietf.org/license-info).
This MIB module contains object definitions for the
MPLS Traffic Engineering facility backup method for
Fast Reroute as defined in RFC 4090."
-- Revision history.
REVISION
"201111030000Z" -- 03 Nov 2011 00:00:00 GMT
DESCRIPTION
"Initial version. Published as RFC 6445."
::= { mib-2 204 }
-- Top-level components of this MIB module
mplsFrrFacilityNotifications OBJECT IDENTIFIER
::= { mplsFrrFacilityMIB 0 }
mplsFrrFacilityObjects OBJECT IDENTIFIER
::= { mplsFrrFacilityMIB 1 }
mplsFrrFacilityConformance OBJECT IDENTIFIER
::= { mplsFrrFacilityMIB 2 }
-- Scalar objects defined for the facility backup style of FRR
mplsFrrConfiguredInterfaces OBJECT-TYPE
SYNTAX Integer32(0..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of MPLS interfaces configured for
protection."
DEFVAL { 0 }
::= { mplsFrrFacilityObjects 1 }
mplsFrrActiveInterfaces OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of interfaces currently being
protected. This value MUST be less than or equal
to mplsFrrConfiguredInterfaces."
DEFVAL { 0 }
::= { mplsFrrFacilityObjects 2 }
mplsFrrConfiguredBypassTunnels OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of bypass tunnels configured to
protect TE tunnels on this LSR."
DEFVAL { 0 }
::= { mplsFrrFacilityObjects 3 }
mplsFrrActiveBypassTunnels OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of bypass tunnels indicated in
mplsFrrConfiguredBypassTunnels whose operStatus
is up(1), indicating that they are currently protecting
TE tunnels on this LSR."
DEFVAL { 0 }
::= { mplsFrrFacilityObjects 4 }
mplsFrrFacilityNotificationsEnabled OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Enables or disables FRR notifications defined in this
MIB module. Notifications are disabled by default.
This object is needed to control the notifications
emitted by this implementation."
DEFVAL { false }
::= { mplsFrrFacilityObjects 5 }
mplsFrrFacilityNotificationsMaxRate OBJECT-TYPE
SYNTAX Gauge32
UNITS "Notifications per Second"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates the maximum number of
notifications issued per second. If events occur
more rapidly, the implementation may simply fail to
emit these notifications during that period, or may
queue them until an appropriate time. In case the
implementation chooses to drop the events during
throttling instead of queuing them to be sent at a later
time, it is assumed that there will be no indication
that events are being thrown away.
A value of 0 means no throttling is applied and
events may be generated at the rate at which they occur."
DEFVAL { 0 }
::= { mplsFrrFacilityObjects 6 }
--
-- Facility-based FRR-specific tables
--
-- Tables in this section pertain only to the facility-based
-- style of FRR.
--
Next up are the facility-based FRR tables, and they're the whole point of this MIB π¦
Okay bestie, we're deep in the facility database now π β¨ Here's the table, the entry, and its columns, copied exactly as the spec wrote them π
mplsFrrFacilityDBTable OBJECT-TYPE
SYNTAX SEQUENCE OF MplsFrrFacilityDBEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The mplsFrrFacilityDBTable provides information about the
fast-reroute database. Each entry belongs to a protected
interface, protecting backup tunnel, and protected tunnel.
MPLS interfaces defined on this node are protected by
backup tunnels and are indicated by the index
mplsFrrFacilityProtectedIfIndex. If the interface index is
set to 0, this indicates that the remaining indexes apply
to all configured protected interfaces.
Note that all objects in this table are read-only, and
if new objects are added to this table, they should also
be read-only.
It is recommended that ifIndex persistence be enabled
across re-initializations.
If persistence is not implemented, then the value of
mplsFrrFacilityProtectedIfIndex in this
table cannot be guaranteed across restarts and all entries
in this table MUST NOT be persistent, or the values of
mplsFrrFacilityProtectedIfIndex MUST be reconstructed
on restart.
It is recommended that entries in this table be persistent
across reboots.
The protecting tunnel is indicated by the
index mplsFrrFacilityProtectingTunnelIndex and
represents a valid mplsTunnelEntry. Note that the tunnel
instance index of the protecting tunnel may be set to 0,
which indicates the tunnel head interface for the
protecting tunnel, as per RFC 3812, but it may also be
defined using the following semantics:
- lower 16 bits : protected tunnel instance
- higher 16 bits: must be all zeros"
::= { mplsFrrFacilityObjects 7 }
mplsFrrFacilityDBEntry OBJECT-TYPE
SYNTAX MplsFrrFacilityDBEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the mplsFrrFacilityDBTable represents a single
protected LSP, protected by a backup tunnel on a
specific protected interface, or if the interface
index is set to 0, on all interfaces. Note that for
brevity, managers should consult the mplsTunnelTable
present in the MPLS-TE-STD-MIB module for
additional information about the protecting and protected
tunnels, and the ifEntry in the IF-MIB module
for the protected interface."
INDEX {
mplsFrrFacilityProtectedIfIndex, -- protected ifIndex
mplsFrrFacilityProtectingTunnelIndex,-- protecting TE tun
mplsFrrFacilityBackupTunnelIndex, -- protected TE tun
mplsFrrFacilityBackupTunnelInstance, -- LSP
mplsFrrFacilityBackupTunnelIngressLSRId,
mplsFrrFacilityBackupTunnelEgressLSRId }
::= { mplsFrrFacilityDBTable 1 }
MplsFrrFacilityDBEntry ::= SEQUENCE {
mplsFrrFacilityProtectedIfIndex InterfaceIndex,
mplsFrrFacilityProtectingTunnelIndex MplsTunnelIndex,
mplsFrrFacilityBackupTunnelIndex MplsTunnelIndex,
mplsFrrFacilityBackupTunnelInstance MplsTunnelInstanceIndex,
mplsFrrFacilityBackupTunnelIngressLSRId MplsLsrIdentifier,
mplsFrrFacilityBackupTunnelEgressLSRId MplsLsrIdentifier,
mplsFrrFacilityDBNumProtectingTunnelOnIf Gauge32,
mplsFrrFacilityDBNumProtectedLspOnIf Gauge32,
mplsFrrFacilityDBNumProtectedTunnels Gauge32,
mplsFrrFacilityDBProtectingTunnelStatus INTEGER,
mplsFrrFacilityDBProtectingTunnelResvBw MplsBitRate
}
mplsFrrFacilityProtectedIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the interface configured for FRR
protection. If this object is set to 0, this indicates
that the remaining indexing combinations for this row
apply to all interfaces on this device for which
the FRR feature can operate."
::= { mplsFrrFacilityDBEntry 1 }
mplsFrrFacilityProtectingTunnelIndex OBJECT-TYPE
SYNTAX MplsTunnelIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the mplsTunnelEntry primary index for
the tunnel head interface designated to protect the
interface as specified in the mplsFrrFacilityProtectedIfIndex
(and all of the tunnels using this interface). Note
that the corresponding mplsTunnelInstance MUST BE
0 as per the indexing convention stipulated."
REFERENCE
"Section 6.1 of RFC 3812."
::= { mplsFrrFacilityDBEntry 2 }
mplsFrrFacilityBackupTunnelIndex OBJECT-TYPE
SYNTAX MplsTunnelIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the mplsTunnelEntry primary index for
the TE tunnel LSP being protected on the
interface as specified by mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 3 }
mplsFrrFacilityBackupTunnelInstance OBJECT-TYPE
SYNTAX MplsTunnelInstanceIndex
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the mplsTunnelEntry secondary index
for the TE tunnel LSP being protected on the
interface as specified by mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 4 }
mplsFrrFacilityBackupTunnelIngressLSRId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the mplsTunnelEntry third index
for the TE tunnel LSP being protected on the
interface as specified by mplsFrrFacilityProtectedIfIndex."
REFERENCE
"Section 6.1 of RFC 3812."
::= { mplsFrrFacilityDBEntry 5 }
mplsFrrFacilityBackupTunnelEgressLSRId OBJECT-TYPE
SYNTAX MplsLsrIdentifier
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Uniquely identifies the mplsTunnelEntry fourth index
for the TE tunnel LSP being protected on the
interface as specified by mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 6 }
mplsFrrFacilityDBNumProtectingTunnelOnIf OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of backup tunnels protecting the
interface specified by mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 7 }
mplsFrrFacilityDBNumProtectedLspOnIf OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of LSPs currently being protected on
the interface specified by
mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 8 }
mplsFrrFacilityDBNumProtectedTunnels OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of tunnels protected on the interface
specified by mplsFrrFacilityProtectedIfIndex."
::= { mplsFrrFacilityDBEntry 9 }
mplsFrrFacilityDBProtectingTunnelStatus OBJECT-TYPE
SYNTAX INTEGER {
active(1),
ready(2),
partial(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the state of the protecting tunnel as
specified by mplsFrrFacilityProtectingTunnelIndex.
active - This tunnel's label has been placed in the
LFIB and is ready to be applied to incoming
packets.
ready - This tunnel's label entry has been created but
is not yet in the LFIB.
partial - This tunnel's label entry has not been fully
created."
::= { mplsFrrFacilityDBEntry 10 }
mplsFrrFacilityDBProtectingTunnelResvBw OBJECT-TYPE
SYNTAX MplsBitRate
UNITS "kilobits per second"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the amount of bandwidth in units
of '1,000 bits per second', actually reserved by
the protecting tunnel for facility backup purposes.
This value is repeated here from the MPLS-TE-STD-MIB
module because the tunnel entry will reveal the
bandwidth reserved by the signaling protocol, which is
typically 0 for backup tunnels so as to not over-book
bandwidth. However, internal reservations are
typically made on the PLR; thus, this value should be
revealed here, as it is often different from
mplsTunnelResourceMeanRate found in the MPLS-TE-STD-MIB
module."
::= { mplsFrrFacilityDBEntry 11 }
-- Notifications
mplsFrrFacilityInitialBackupTunnelInvoked NOTIFICATION-TYPE
OBJECTS { mplsFrrFacilityDBNumProtectingTunnelOnIf,
mplsFrrFacilityDBNumProtectedLspOnIf,
mplsFrrFacilityDBNumProtectedTunnels,
mplsFrrFacilityDBProtectingTunnelStatus,
mplsFrrFacilityDBProtectingTunnelResvBw
}
STATUS current
DESCRIPTION
"This notification is generated when a tunnel running over an
interface as specified in the mplsFrrConstraintsTable is
initially protected by the backup tunnel also specified in the
mplsFrrConstraintsTable. In some implementations, there may
be a difference between when the control plane triggers
this notification and when the hardware is programmed to
utilize the protection path. Due to the urgency of this
operation, it is acceptable for the control plane to
issue this notification either before or after it programs
the hardware. In cases where it is the latter approach,
the notification MUST be sent immediately after the
data plane has been altered.
This notification should not be generated for each subsequent
tunnel that is backed up by the FRR feature on this LSR, as
this may result in potential scaling issues with regard to
LSR performance and network load. Note also that
notifications MUST be generated in accordance with the
mplsFrrNotificationsMaxRate."
::= { mplsFrrFacilityNotifications 1 }
mplsFrrFacilityFinalTunnelRestored NOTIFICATION-TYPE
OBJECTS { mplsFrrFacilityDBNumProtectingTunnelOnIf,
mplsFrrFacilityDBNumProtectedLspOnIf,
mplsFrrFacilityDBNumProtectedTunnels,
mplsFrrFacilityDBProtectingTunnelStatus,
mplsFrrFacilityDBProtectingTunnelResvBw
}
STATUS current
DESCRIPTION
"This notification is generated when the final tunnel that is
being protected by a backup tunnel as specified in the
mplsFrrConstraintsTable is restored to normal operation. This
notification should not be generated for each restored tunnel,
as this may result in potential scaling issues with regard to
LSR performance and network load. Note also that
notifications MUST be generated in accordance with the
mplsFrrNotificationsMaxRate."
::= { mplsFrrFacilityNotifications 2 }
-- Module Conformance Statement
mplsFrrFacilityCompliances
OBJECT IDENTIFIER ::= {mplsFrrFacilityConformance 1 }
mplsFrrFacilityGroups
OBJECT IDENTIFIER ::= {mplsFrrFacilityConformance 2 }
mplsFrrFacilityModuleFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-FACILITY-STD-MIB module."
MODULE MPLS-FRR-GENERAL-STD-MIB -- MPLS FRR Generic MIB
MANDATORY-GROUPS {
mplsFrrGeneralScalarGroup,
mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
}
MODULE -- this module
MANDATORY-GROUPS {
mplsFrrFacilityScalarGroup,
mplsFrrFacilityDBGroup,
mplsFrrFacilityNotificationsGroup
}
::= { mplsFrrFacilityCompliances 1 }
mplsFrrFacilityModuleReadOnlyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statements for SNMP engines that support the
MPLS-FRR-FACILITY-STD-MIB module."
MODULE MPLS-FRR-GENERAL-STD-MIB -- MPLS FRR Generic MIB
MANDATORY-GROUPS {
mplsFrrGeneralScalarGroup,
mplsFrrGeneralTunnelARHopGroup,
mplsFrrGeneralConstraintsGroup
}
MODULE -- this module
MANDATORY-GROUPS {
mplsFrrFacilityScalarGroup,
mplsFrrFacilityDBGroup,
mplsFrrFacilityNotificationsGroup
}
::= { mplsFrrFacilityCompliances 2 }
-- Units of conformance
mplsFrrFacilityScalarGroup OBJECT-GROUP
OBJECTS { mplsFrrConfiguredInterfaces,
mplsFrrActiveInterfaces,
mplsFrrConfiguredBypassTunnels,
mplsFrrActiveBypassTunnels,
mplsFrrFacilityNotificationsEnabled,
mplsFrrFacilityNotificationsMaxRate
}
STATUS current
DESCRIPTION
"Objects that are required to represent the FRR
Facility Route Database information."
::= { mplsFrrFacilityGroups 1 }
mplsFrrFacilityDBGroup OBJECT-GROUP
OBJECTS { mplsFrrFacilityDBNumProtectingTunnelOnIf,
mplsFrrFacilityDBNumProtectedLspOnIf,
mplsFrrFacilityDBNumProtectedTunnels,
mplsFrrFacilityDBProtectingTunnelStatus,
mplsFrrFacilityDBProtectingTunnelResvBw
}
STATUS current
DESCRIPTION
"Objects that are required to represent the FRR
Facility Route Database information."
::= { mplsFrrFacilityGroups 2 }
mplsFrrFacilityNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS { mplsFrrFacilityInitialBackupTunnelInvoked,
mplsFrrFacilityFinalTunnelRestored
}
STATUS current
DESCRIPTION
"Objects that are required to represent FRR notifications."
::= { mplsFrrFacilityGroups 3 }
END
-- End of MPLS-FRR-FACILITY-STD-MIB
7. Security Considerations β¨
Okay bestie, security time π and this is kind of a big deal. These MIB modules are super useful for monitoring MPLS LSRs that support fast reroute π but they can also be used to configure some objects, and anything that can be configured can be configured wrong π with potentially disastrous results π.
There are a bunch of management objects in these modules with a MAX-ACCESS of read-write and/or read-create. Those objects can be sensitive or vulnerable depending on the network. Doing SET operations in a non-secure environment without proper protection can seriously mess with network operations π. Here's the list of tables and objects and why they're sensitive:
- The
mplsFrrGeneralConstraintsTable(mplsFrrGeneralConstraintsProtectionType,mplsFrrGeneralConstraintsSetupPrio, etc.), plus some objects in themplsFrrScalarGroup(mplsFrrGeneralProtectionMethod,mplsFrrFacilityNotificationsEnabled, etc.), contain objects that can be used to provision MPLS fast-reroute features. Unauthorized access to these could disrupt traffic on the network π±.
Some of the readable objects here (the ones with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable, so it's important to control even GET and/or NOTIFY access to them. You might even want to encrypt their values when they're sent over the network via SNMP π. Here's the breakdown:
- The
mplsFrrOne2OnePlrTable(mplsFrrOne2OnePlrSenderAddr,mplsFrrOne2OnePlrAvoidNodeAddr, etc.),mplsFrrOne2OneDetourTable(mplsFrrOne2OneDetourActive,mplsFrrOne2OneDetourMergedDetourInst, etc.), andmplsFrrGeneralTunnelARHopTable(mplsFrrGeneralTunnelARHopSessionAttributeFlags,mplsFrrGeneralTunnelARHopRROSubObjectFlags, etc.), along with some objects in themplsFrrScalarGroup(mplsFrrGeneralProtectionMethod,mplsFrrActiveInterfaces, etc.), show together the MPLS fast-reroute interfaces, tunnels, and other fast-reroute feature configs. They also reveal how everything links to other MPLS config and/or performance stats π. If admins don't want that info out there, they should treat these objects as sensitive and take precautions so they stay hidden π«£.
SNMP versions before SNMPv3 did not have adequate security π. Even if the network itself is secure (for example, by using IPsec), there's still no control over who on that secure network can GET or SET (read, change, create, delete) the objects in these MIB modules.
It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8) π«Ά, including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) πβ¨.
Also, deploying SNMP versions before SNMPv3 is NOT RECOMMENDED π ββοΈ. Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security. It's then a customer or operator responsibility to make sure the SNMP entity giving access to these MIB modules is set up so only the principals (users) with legitimate rights can GET or SET (change, create, delete) the objects π.
8. IANA Considerations β¨
The MIB modules in this document use the IANA-assigned OBJECT IDENTIFIER values recorded in the SMI Numbers registry π.
8.1. IANA Considerations for MPLS-FRR-GENERAL-STD-MIB
IANA has assigned { mib-2 202 } to the MPLS-FRR-GENERAL-STD-MIB module specified in this document π¦.
8.2. IANA Considerations for MPLS-FRR-ONE2ONE-STD-MIB
IANA has assigned { mib-2 203 } to the MPLS-FRR-ONE2ONE-STD-MIB module specified in this document πΈ.
8.3. IANA Considerations for MPLS-FRR-FACILITY-STD-MIB
IANA has assigned { mib-2 204 } to the MPLS-FRR-FACILITY-STD-MIB module specified in this document π
.
9. Acknowledgments π«Ά
This doc came out of the MPLS Working Group, and we're literally so grateful to Alia Atlas, Yeong Tai, Walter Vanhimbeeck, Mike Piecuch, Adrien Grise, Joan Cucchiara, and Adrian Farrel π. Their discussions were helpful and colorful π, and they gave editorial comments and contributions that made this doc way better π.
10. References π
10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[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., Viswanathan, A., and R. Callon, "Multiprotocol
Label Switching Architecture", RFC 3031, January 2001.
[RFC3811] Nadeau, T., Ed., and J. Cucchiara, Ed., "Definitions of
Textual Conventions (TCs) for Multiprotocol Label
Switching (MPLS) Management", RFC 3811, June 2004.
[RFC3812] Srinivasan, C., Viswanathan, A., and T. Nadeau,
"Multiprotocol Label Switching (MPLS) Traffic Engineering
(TE) Management Information Base (MIB)", RFC 3812,
June 2004.
[RFC3813] Srinivasan, C., Viswanathan, A., and T. Nadeau,
"Multiprotocol Label Switching (MPLS) Label Switching
Router (LSR) Management Information Base (MIB)",
RFC 3813, June 2004.
[RFC4001] Daniele, M., Haberman, B., Routhier, S., and J.
Schoenwaelder, "Textual Conventions for Internet Network
Addresses", RFC 4001, February 2005.
[RFC4090] Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast
Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090,
May 2005.
10.2. Informative References
[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart,
"Introduction and Applicability Statements for Internet-
Standard Management Framework", RFC 3410, December 2002.
[RFC4990] Shiomoto, K., Papneja, R., and R. Rabbat, "Use of
Addresses in Generalized Multiprotocol Label Switching
(GMPLS) Networks", RFC 4990, September 2007.
11. Contributors π
Stefaan De Cnodder
Alcatel
Francis Wellesplein 1
B-2018 Antwerp, Belgium
EMail: stefaan.de_cnodder@alcatel.be
Der-Hwa Gan
Juniper Networks, Inc.
1194 N. Mathilda Avenue
Sunnyvale, CA 94089
EMail: derhwagan@yahoo.com
Editors' Addresses π
Thomas D. Nadeau
CA Technologies, Inc.
273 Corporate Drive
Portsmouth, NH 03801
EMail: thomas.nadeau@ca.com
A S Kiran Koushik
Cisco Systems, Inc.
12515 Research Blvd., Bldg. 4
Austin, TX 78664
Phone: +1-512-378-1482
EMail: kkoushik@cisco.com
Riza Cetin
Alcatel
Francis Wellesplein 1
B-2018 Antwerp, Belgium
EMail: riza.cetin@alcatel.be
That's the whole doc, bestie πβ¨ you did it π
π¦ where this page comes from
- ietf: rfc6445 2011-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms