RFC 5918
Label Distribution Protocol (LDP) 'Typed Wildcard' Forward Equivalence Class (FEC)
Label Distribution Protocol (LDP) 'Typed Wildcard' Forward Equivalence Class (FEC) π
Okay bestie, this is RFC 5918 and it's giving main character Standards Track energy β¨ It came out of the IETF in August 2010 (ISSN 2070-1721). The authors are R. Asati (Cisco Systems), I. Minei (Juniper Networks), and B. Thomas. The category is Standards Track, and the title block doesn't list anything it obsoletes or updates π¦
Abstract πΈ
Okay so the Label Distribution Protocol (LDP) spec for the Wildcard Forward Equivalence Class (FEC) element has a few limitations, and kinda ngl they're annoying π This doc fixes that by defining a Typed Wildcard FEC Element plus the procedures for using it. It also adds a new LDP capability so older routers stay compatible π«Ά
Status of This Memo π
This is an Internet Standards Track document π₯
It's a product of the IETF, so 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). If you want more on Internet Standards, check out Section 2 of RFC 5741 π
Info about the current status, any errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc5918 π
Copyright Notice π
Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved π
So 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 publication date. Please read those carefully, because they spell out your rights and restrictions for this doc π Any Code Components pulled out of this document have to include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Simplified BSD License describes β¨
Also, this document may include material from IETF Documents or IETF Contributions published or made public before November 10, 2008. The people who control the copyright in some of that material might not have given the IETF Trust permission to allow modifications outside the IETF Standards Process π¬ So unless you get a proper license from those copyright holders, this doc can't be modified outside the IETF Standards Process, and derivative works can't be made outside it either. The one exceptions are formatting it for publication as an RFC or translating it into languages other than English π«Ά
Table of Contents π§
1. Introduction ....................................................3
2. Specification Language ..........................................4
3. The Typed Wildcard FEC Element ..................................4
4. Procedures for the Typed Wildcard FEC Element ...................5
5. Typed Wildcard FEC Capability ...................................6
6. Typed Wildcard FEC Element for Prefix FEC Element ...............7
7. Typed Wildcard FEC Element for Host and Wildcard FEC Elements ...8
8. IANA Considerations .............................................8
9. Security Considerations .........................................8
10. Acknowledgments ................................................9
11. References .....................................................9
11.1. Normative References ......................................9
11.2. Informative References ....................................9
1. Introduction β¨
Okay so LDP [RFC5036] hands out labels for Forwarding Equivalence Classes (FECs) π¦ LDP uses FEC TLVs in its messages to specify FECs, and each FEC TLV holds one or more FEC elements. A FEC element has a FEC type and an optional type-dependent value π
RFC 5036 defines two FEC types (Prefix and Wildcard), and other documents add more, like [RFC4447] and [MLDP] πΈ
So here's the tea. As RFC 5036 explains, the Wildcard FEC Element refers to all FECs relative to an optional constraint. The only constraint RFC 5036 defines is the one that limits the Wildcard to "all FECs bound to a given label" π
The RFC 5036 version of the Wildcard FEC Element has these deficiencies, which make it less useful than it could be π
- The Wildcard FEC Element is untyped. Sometimes you'd want to point at all FECs of one given type, as a constraint π
- The Wildcard FEC Element only works in Label Withdraw and Label Release messages. Sometimes it'd be super useful to have a typed Wildcard FEC Element in Label Request messages too π
This document:
- addresses the limitations above by defining a Typed Wildcard FEC Element and the procedures for using it π
- specifies use of the LDP capability mechanism [RFC5561] at session establishment time, so a peer can be told that an LDP speaker can handle the Typed Wildcard FEC π«Ά
- specifies use of the Typed Wildcard FEC Element in a Label Request message π₯
- specifies the Typed Wildcard FEC Element for the Prefix FEC Element that RFC 5036 defines π
Also, this document does not change the procedures RFC 5036 specifies for the LDP Wildcard FEC Element. Hands off, RFC 5036 π
2. Specification Language π
Here's the official key-word part, copied exactly as it's written:
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 [RFC2119].
And the abbreviations you'll see:
LDP- Label Distribution Protocol πFEC- Forwarding Equivalence Class β¨TLV- Type Length Value πLSR- Label Switching Router π§
3. The Typed Wildcard FEC Element π¦
Okay this is the star of the show π The Typed Wildcard FEC Element refers to all FECs of the specified type that meet the constraint. It specifies a 'FEC Element Type' and an optional constraint, which gives extra info π
Here's what the format looks like:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Typed (0x05) | FEC Element | Len FEC Type | |
| Wildcard | Type | Info | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
~ Additional FEC Type-specific Information ~
| (Optional) |
| +-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Typed Wildcard FEC Element
Here's what each piece means π
- Typed Wildcard: One-octet FEC Element Type (0x05).
- FEC Element Type: One-octet FEC Element Type that says which FEC Element Type gets wildcarded. Please see Section 3.4.1 of RFC 5036 π§
- Any (future) document that specifies a new FEC Element Type (not defined in RFC 5036) should say whether typed wildcarding is needed for that FEC Element Type β¨
- Len FEC Type Info: One octet giving the length in octets of the FEC Type Specific information field. It MUST be set to 0 if there is no Additional FEC Type-specific Information π
- Additional FEC Type-specific Information (Optional): Extra info that's specific to the FEC Element Type and that's needed to fully specify the Typed Wildcard. If this field is absent, then all FECs of the specified FEC Type would be matched πΈ
- Any (future) document that specifies Typed wildcarding for any FEC Element Type should also specify the length and format of the Additional FEC Type Specific Information, if it's included π
This document specifies one FEC Element Type instance (e.g., Prefix FEC) for the 'Typed Wildcard FEC Element' in Section 6 π¦
4. Procedures for the Typed Wildcard FEC Element π
Alright, the rules π₯ When a FEC TLV contains a Typed Wildcard FEC Element, the Typed Wildcard FEC Element MUST be the only FEC Element in the TLV. If an LDP speaker gets a FEC TLV with a Typed Wildcard FEC Element and any other FEC elements, then the LDP speaker should ignore the other FEC elements and keep processing as if the message only has the Typed Wildcard FEC Element π«Ά
An LDP implementation that supports the Typed Wildcard FEC Element MUST support its use in Label Request, Label Withdraw, and Label Release messages π
An LDP implementation that supports the Typed Wildcard FEC Element MUST support it for every FEC Element Type defined in [RFC5036] π
Getting a Label Request message with a FEC TLV that contains a Typed Wildcard FEC Element is read as a request to send one or more Label Mappings for all FECs of the type named in the FEC Element Type field of that encoding π
An LDP implementation that supports the Typed Wildcard FEC Element MUST support the following constraints whenever a Typed Wildcard FEC appears in a Label Withdraw or Label Release message π
- If the message carries an optional Label TLV, the Typed Wildcard FEC Element refers to all FECs of the specified FEC type bound to the specified label.
- If the message has no Label TLV, the Typed Wildcard FEC Element refers to all FECs of the specified FEC type.
Backwards compatibility with a router that doesn't support the Typed Wildcard FEC element is handled by the FEC procedures in RFC 5036. Here's the quote from RFC 5036 π
If it [an LSR] encounters a FEC Element type it cannot decode, it SHOULD stop decoding the FEC TLV, abort processing the message containing the TLV, and send an "Unknown FEC" Notification message to its LDP peer signaling an error.
So a router that gets a FEC TLV with a Typed Wildcard FEC element, either for a FEC Element Type it doesn't support or for one that doesn't support wildcarding, MUST stop decoding the FEC TLV, abort processing the message containing the TLV, and send an "Unknown FEC" Notification message to its LDP peer to signal an error π
And last but not least, a router that gets a FEC TLV containing a Typed Wildcard FEC element MAY also use the mechanisms defined in [RFC5919] (say, if it had zero label bindings for the requested FEC type, etc.) π§
5. Typed Wildcard FEC Capability β¨
okay so you know how RFC 5036 FEC procedures are backward compatible with an LSR that doesn't support the Typed Wildcard FEC Element? π That's great, but there's a catch. They don't give an LSR any way to find out whether its peer supports the element. The only option is to send a message that uses the FEC Element and then wait and see how the peer responds. Not very iconic π
So the fix is a capability announcement. π«Ά
An LDP speaker that supports the Typed Wildcard FEC Element MUST tell its peers about that support by including a Typed Wildcard FEC Element Capability Parameter [RFC5561] in its Initialization messages only. Initialization messages only, bestie, so don't go sprinkling it everywhere π
The Capability Parameter for the Typed Wildcard FEC capability is a TLV, and it looks like this:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F|Typed WCard FEC Cap(0x050B)| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S| Reserved |
+-+-+-+-+-+-+-+-+
Figure 2: Typed Wildcard FEC Capability Format
Here's what each piece needs to be π
- U and F bits: MUST be 1 and 0, respectively, as per Section 3 of LDP Capabilities [RFC5561]. Yes, the U bit gets a 1 and the F bit gets a 0, no swapping allowed π
- Typed WCard FEC Cap:
0x050B - Length: Two octets. It MUST be set to
0x0001. - S-bit: MUST be 1 (indicates that capability is being advertised). The bit is literally saying "hey, I'm advertising this!" π£
6. Typed Wildcard FEC Element for Prefix FEC Element π¦
RFC 5036 defines the Prefix FEC Element, but it never specifies a Typed Wildcard for it. Plot twist, right? π This section fills that gap by specifying the Typed Wildcard FEC Element for Prefix FEC Elements.
The format of the Prefix FEC Typed Wildcard FEC Element (which we'll call "Prefix FEC Wildcard" for short) is based on Figure 1, and it looks like this:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Typed Wcard | Type = Prefix | Len = 2 | Address... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ...Family |
+-+-+-+-+-+-+-+-+
Figure 3: Format of Prefix FEC Element Using Typed Wildcard
Where:
- FEC Element Type: "Prefix" FEC Element (
0x02, per RFC 5036). - Len FEC Type Info: Two octets. It MUST be set to
0x0002. - Address Family: Two-octet quantity containing a value from the "ADDRESS FAMILY NUMBERS" registry on http://www.iana.org.
The procedures described in Section 4 apply to the Prefix FEC Wildcard processing. So the Section 4 rules are the ones you're using here, no new magic needed β¨
7. Typed Wildcard FEC Element for Host and Wildcard FEC Elements πΈ
Good news: there's no need to specify Typed Wildcard FEC Elements for the Host FEC Element specified by [RFC3036], and none for the Wildcard FEC Element specified by RFC 5036 either. Why? Because the [RFC3036] Host FEC Element has been removed from RFC 5036, and the Wildcard FEC Element is untyped by definition. So there's nothing to type π§
In other words, the 'FEC Element Type' field in 'Typed Wildcard FEC Element' MUST NOT be either 0x01 or 0x03. Those codes are off the table, babe π
ββοΈ
8. IANA Considerations π
This document introduces a new LDP FEC Element Type and a new LDP Capability, and IANA has assigned both π
IANA has assigned a 'Typed Wildcard FEC Element' code point (0x05) from the LDP FEC Type Name Space. [RFC5036] splits the FEC Type Name Space into 3 regions: IETF Consensus region, First Come First Served region, and Private Use region. The code point 0x05 sits in the IETF Consensus range.
IANA has assigned a 'Typed Wildcard FEC Capability' code point (0x050B) from the TLV Type name space. [RFC5036] splits the TLV TYPE name space into 3 regions: IETF Consensus region, Vendor Private Use region, and Experimental Use region. The code point 0x050B is in the IETF Consensus range.
9. Security Considerations π
Okay, this section is serious, so buckle up π₯
No security considerations beyond those that apply to the base LDP specification [RFC5036], and that are further described in [RFC5920], apply to use of the Typed Wildcard FEC Elements as described in this document. So the base LDP security stuff and the MPLS/GMPLS framework guidance still cover you.
Now for the fun part. One could deduce that the security exposure is reduced by this document. Why? An LDP speaker using the Typed Wildcard FEC Element can use a single message to request, withdraw, or release all the label mappings of a particular type (a particular Address Family Identifier (AFI), for example). Meanwhile, an LDP speaker using the Wildcard FEC Element, as defined in the base LDP specification [RFC5036], can use a single message to request, withdraw, or release all the label mappings of all types (all AFIs, for example). Narrower scope, smaller blast radius π§
10. Acknowledgments π«Ά
The authors would like to thank Yakov Rekhter for suggesting that the limitations of the Wildcard FEC be addressed. Also, thanks to Adrian Farrel, Kamran Raza, and Richard L. Barnes for their extensive review of this document. The whole squad showed up π
11. References π
11.1. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., "LDP Specification", RFC 5036, October 2007.
- [RFC5561] Thomas, B., Raza, K., Aggarwal, S., Aggarwal, R., and JL. Le Roux, "LDP Capabilities", RFC 5561, July 2009.
11.2. Informative References
- [RFC3036] Andersson, L., Doolan, P., Feldman, N., Fredette, A., and B. Thomas, "LDP Specification", RFC 3036, January 2001.
- [RFC4447] Martini, L., Ed., Rosen, E., El-Aawar, N., Smith, T., and G. Heron, "Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP)", RFC 4447, April 2006.
- [RFC5919] Asati, R., Mohapatra, P., Minei, I., and B. Thomas, "Signaling LDP Label Advertisement Completion", RFC 5919, August 2010.
- [RFC5920] Fang, L., Ed., "Security Framework for MPLS and GMPLS Networks", RFC 5920, July 2010.
- [MLDP] Minei, I., Ed., Kompella, K., Wijnands, I., Ed., and B. Thomas, "Label Distribution Protocol Extensions for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths", Work in Progress, July 2010.
Authors' Addresses π¦
Rajiv Asati
Cisco Systems
7025-6 Kit Creek Rd.
Research Triangle Park, NC 27709-4987
EMail: rajiva@cisco.com
Ina Minei
Juniper Networks
1194 North Mathilda Ave.
Sunnyvale, CA 94089
EMail: ina@juniper.net
Bob Thomas
EMail: bobthomas@alum.mit.edu
That's the whole thing, bestie! ππ You now know the capability advertisement, the Prefix FEC Wildcard, and why the security exposure actually goes down. Iconic work, we ate this RFC ππ
π¦ where this page comes from
- ietf: rfc5918 2010-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms