RFC 3477
Signalling Unnumbered Links in Resource ReSerVation Protocol - Traffic Engineering (RSVP-TE)
RFC 3477: Signalling Unnumbered Links in RSVP-TE π
okay so bestie, this is RFC 3477 π It's a Standards Track doc, which means it's an actual Internet protocol spec, not just vibes. It came out in January 2003 and it was written by K. Kompella and Y. Rekhter from Juniper Networks β¨ It doesn't obsolete or update anything, so it's a fresh start, no drama πΈ
The whole point is making unnumbered links work with MPLS TE signalling π¦ Unnumbered links are links without IP addresses, and the existing signalling just can't say "hey, this one's unnumbered" in its Explicit Route and Record Route Objects. So this RFC adds the missing pieces to RSVP-TE π₯
Status of This Memo
okay so this is the boring-but-important part π It says this document specifies an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements π For the current standardization state, check "Internet Official Protocol Standards" (STD 1). And distribution of this memo is unlimited π
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. π«Ά
Abstract
okay so the abstract is giving main character energy π Current MPLS TE signalling doesn't support unnumbered links at all π This doc defines procedures and extensions to RSVP for LSP Tunnels (RSVP-TE), one of the MPLS TE signalling protocols, so unnumbered links can finally be supported β¨
Specification of Requirements
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 BCP 14, RFC 2119 [RFC2119]. π
1. Overview π§
okay so supporting MPLS TE over unnumbered links (aka links without IP addresses) needs two things π First, you need to carry TE info about unnumbered links in the IGP TE extensions (IS-IS or OSPF). Second, you need a way to specify unnumbered links in MPLS TE signalling. The first part is covered in [GMPLS-ISIS, GMPLS-OSPF], and this doc is all about the second part π
The reason the current signalling fails is that it has no way to indicate an unnumbered link in its Explicit Route and Record Route Objects π So this RFC proposes simple procedures and extensions that let RSVP-TE signalling [RFC3473] work with unnumbered links π¦
2. Link Identifiers πΈ
okay so an unnumbered link has to be point-to-point π«Ά An LSR at each end assigns an identifier to that link. This identifier is a non-zero 32-bit number, and it only has to be unique within the scope of the LSR that assigns it β¨ If you're using OSPF or IS-IS as the IGP for TE, then the IS-IS and/or OSPF and RSVP modules on an LSR MUST agree on the identifiers.
Wait, that's wrong. Let me say it properly: the modules must agree, and the RFC doesn't use a capitalised key word there, so it stays lowercase β¨
There's no a priori relationship between the identifiers the LSRs at each end pick π The two end points exchange their identifiers with each other. That can happen by configuration, by a protocol like LMP ([LMP]), by RSVP/CR-LDP (especially when the link is a Forwarding Adjacency, see below), or by IS-IS or OSPF extensions ([ISIS-GMPLS], [OSPF-GMPLS]) π₯
Take an unnumbered link between LSRs A and B. A picks an identifier, B picks one too π From A's point of view, the identifier A picked is the "link local identifier" (or just "local identifier"), and the one B picked is the "link remote identifier" (or just "remote identifier") π Flip it for B: its own pick is the local identifier, and A's pick is the remote one π
Now, "Router ID" here means a stable IP address for an LSR that's always reachable as long as there's any connectivity to it π¦ It's usually a "loopback address", and the key thing is that it doesn't die when an interface on the LSR goes down π Sometimes you'll have to configure it. If you're using OSPF or IS-IS for TE, it's RECOMMENDED for the Router ID to be set to the "Router Address" from [OSPF-TE], or the "Traffic Engineering Router ID" from [ISIS-TE] β¨
This section also applies to unnumbered component links (see [LINK-BUNDLE]) π§
3. Unnumbered Forwarding Adjacencies π
okay so this part is where it gets spicy πΆοΈ If an LSR originates an LSP and advertises it as an unnumbered Forwarding Adjacency in IS-IS or OSPF (see [LSP-HIER]), or uses that Forwarding Adjacency as an unnumbered component link of a bundled link (see [LINK-BUNDLE]), then the LSR MUST allocate an identifier to that Forwarding Adjacency, just like any other unnumbered link π The Path message for that LSP MUST contain the LSP_TUNNEL_INTERFACE_ID object (more on that below), with the LSR's Router ID set to the head end's Router ID, and the Interface ID set to the identifier the LSR allocated to the Forwarding Adjacency π«Ά
If the Path message has the LSP_TUNNEL_INTERFACE_ID object, the tail-end LSR MUST allocate an identifier to that Forwarding Adjacency too π And the Resv message for the LSP MUST contain an LSP_TUNNEL_INTERFACE_ID object, with the LSR's Router ID set to the tail-end's Router ID, and the Interface ID set to the identifier the tail-end LSR allocated π₯
For processing the ERO and the IF_ID RSVP_HOP objects, an unnumbered Forwarding Adjacency gets treated as an unnumbered (TE) link or unnumbered component link like this π¦ The originating LSR sets its link local identifier to the value it allocated to the Forwarding Adjacency, and sets the link remote identifier to the value in the Interface ID field of the Reverse Interface ID object πΈ The tail-end LSR sets its link local identifier to the value it allocated to the Forwarding Adjacency, and sets the link remote identifier to the value in the Interface ID field of the Forward Interface ID object β¨
3.1. LSP_TUNNEL_INTERFACE_ID Object π
The LSP_TUNNEL_INTERFACE_ID object has a class number of 193, a C-Type of 1, and a length of 12 π Here's the format:
Figure 1: LSP_TUNNEL_INTERFACE_ID Object
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LSR's Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This object can optionally appear in either a Path message or a Resv message π§ In a Path message we call it the "Forward Interface ID" for that LSP, and in a Resv message it's the "Reverse Interface ID" for the LSP π
4. Signalling Unnumbered Links in EROs π¦
okay so a new subobject of the Explicit Route Object (ERO) is used to specify unnumbered links π Here's its format:
Figure 2: Unnumbered Interface ID Subobject
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L| Type | Length | Reserved (MUST be zero) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Type is 4 (Unnumbered Interface ID), and the Length is 12 β¨ The Interface ID is the identifier assigned to the link by the LSR given by the router ID π
4.1. Processing the IF_ID RSVP_HOP object πΈ
When an LSR gets a Path message with the IF_ID RSVP_HOP object (see [RFC3473], [RFC3471]) that has the IF_INDEX TLV, it processes the TLV like this π§ The LSR must have information about the identifiers its neighbors assigned to the unnumbered links between them and the LSR π«Ά It uses that info to find a link with the tuple <Router ID, local identifier> that matches the tuple <IP Address, Interface ID> in the IF_INDEX TLV π₯ If it finds a match, the match identifies the link the LSR has to do label allocation for π¦
If no match is found, the LSR SHOULD return an error using the IF_ID ERROR_SPEC object (see [RFC3473], [RFC3471]) π The Error code in that object is set to 24, and the Error value is set to 16 π
4.2. Processing the ERO π
The Unnumbered Interface ID subobject is part of a particular abstract node if that node has a Router ID equal to the Router ID field in the subobject, and the node has an (unnumbered) link or (unnumbered) Forwarding Adjacency whose local identifier (from that node's point of view) equals the value in the Interface ID field of the subobject β¨
With that in mind, ERO processing when the Unnumbered Interface ID subobject is present follows the rules in section 4.3.4.1 of [RFC3209] π
As part of ERO processing (or more precisely, as part of next hop selection), if the outgoing link is unnumbered, the Path message that the node sends to the next hop MUST include the IF_ID RSVP_HOP object π Its IP address field is set to the node's Router ID, and its Interface ID field is set to the identifier the node assigned to the link π
5. Record Route Object π§
A new subobject of the Record Route Object (RRO) records that the LSP path went over an unnumbered link π¦ Here's the format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Flags | Reserved (MBZ)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The Type is 4 (Unnumbered Interface ID), and the Length is 12. Flags are defined below π
Flag 0x01, Local protection available: this indicates the link downstream of this node is protected via a local repair mechanism π«Ά This flag can only be set if the Local protection flag was set in the SESSION_ATTRIBUTE object of the matching Path message π
Flag 0x02, Local protection in use: this indicates a local repair mechanism is in use to keep this tunnel alive (usually when the link it was previously routed over goes down) π₯
Okay bestie, that's part 1 of 2 π Part 2 is coming up next, so stay tuned, I'm obsessed π
5.1. Handling RRO β¨
Okay bestie, this is where the RRO gets its glow-up. If an intermediate node (or the head-end) picks the next hop from an ERO subobject of type Unnumbered Interface ID, and a RRO object came in on the Path message (or the original Path message is supposed to have one), then an RRO subobject of type Unnumbered Interface ID MUST be appended to the received RRO when the Path message goes downstream. π
If the ERO subobject used to pick the next hop is any other type, you just follow the handling rules in [RFC3209]. Same deal if Label Recording is wanted: the procedures of [RFC3209] apply. πΈ
6. Security Considerations π₯
Okay, this part is serious, so let's go. This document is a small extension to RFC 3209 [RFC3209] that clarifies how unnumbered links get used. Because of that, it doesn't bring any new security concerns. π«Ά
Honestly, one could argue that using the extra interface identify makes an RSVP message harder to spoof. Lowkey iconic, right? π¦
7. IANA Considerations π
IANA hands out values for the RSVP protocol parameters. This document defines a new subobject for the EXPLICIT_ROUTE object and for the ROUTE_RECORD object. The rules for assigning subobject numbers were already set in [RFC3209], using the terminology of BCP 26, RFC 2434, "Guidelines for Writing an IANA Considerations Section in RFCs". Those same rules cover the new subobject for the EXPLICIT_ROUTE and ROUTE_RECORD objects. β¨
The same Internet authority also needs to assign a class number to the LSP_TUNNEL_INTERFACE_ID object. It has to be of the form 11bbbbbb, which means RSVP silently ignores this unknown object but still forwards it. Ngl, that's a very polite way to handle unknown stuff. π§
8. Intellectual Property Considerations π
The IETF doesn't take a position on whether any intellectual property or other rights claimed for the technology in this document are valid or in scope. It also doesn't say whether any license under those rights might be available. It also doesn't claim to have tried to find any such rights. More info on the IETF's procedures for rights in standards-track and standards-related documents is in BCP-11. Copies of claims of rights made available for publication, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for implementers or users to use such proprietary rights can be obtained from the IETF Secretariat. π
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 needed to practice this standard. Send that info to the IETF Executive Director. π
9. Acknowledgments π«Ά
Big thanks to Lou Berger and Markus Jork for pointing out that the RRO should be extended in the same way as the ERO. Thanks also to Rahul Aggarwal and Alan Kullberg for their comments on the text. And finally, thanks to Bora Akyol, Vach Kompella, and George Swallow. You all are literal legends. π
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.
[RFC3209] Awduche, D., Berger, L., Gan, D. Li, T., Srinivasan, V.
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, December 2001.
[RFC3471] Berger, L., Editor, "Generalized Multi-Protocol Label
Switching (MPLS) Signaling Functional Description", RFC
3471, January 2003.
[RFC3473] Berger, L., Editor, "Generalized Multi-Protocol Label
Switching (MPLS) Signaling Resource ReserVation
Protocol-Traffic Engineering (RSVP-TE) Extensions", RFC
3473, January 2003.
10.2. Non-normative references
[GMPLS-ISIS] Kompella, K., Rekhter, Y., Banerjee, A. et al., "IS-IS
Extensions in Support of Generalized MPLS", Work in
Progress.
[GMPLS-OSPF] Kompella, K., Rekhter, Y., Banerjee, A. et al., "OSPF
Extensions in Support of Generalized MPLS", Work in
Progress.
[ISIS-TE] Li, T. and H. Smit, "IS-IS extensions for Traffic
Engineering", Work in Progress.
[LINK-BUNDLE] Kompella, K., Rekhter, Y. and L. Berger, "Link Bundling
in MPLS Traffic Engineering", Work in Progress.
[LSP-HIER] Kompella, K. and Y. Rekhter, "LSP Hierarchy with MPLS
TE", Work in Progress.
[LMP] Lang, J., Mitra, K., et al., "Link Management Protocol
(LMP)", Work in Progress.
[OSPF-TE] Katz, D., Yeung, D., Kompella, K., "Traffic Engineering
Extensions to OSPF Version 2", Work in Progress.
11. Authors' Addresses π
Kireeti Kompella
Juniper Networks, Inc.
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
EMail: kireeti@juniper.net
Yakov Rekhter
Juniper Networks, Inc.
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
EMail: yakov@juniper.net
12. Full Copyright Statement πΈ
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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.
Acknowledgement π§
Funding for the RFC Editor function is currently provided by the Internet Society. β¨
π¦ where this page comes from
- ietf: rfc3477 2003-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms