RFC 4208

Generalized Multiprotocol Label Switching (GMPLS) User-Network Interface (UNI): Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Support for the Overlay Model

πŸ“… published October 2005, from ietf

RFC 4208: GMPLS UNI: RSVP-TE Support for the Overlay Model πŸ¦‹

okay bestie, this is the one where GMPLS gets its overlay-model glow-up πŸ’…βœ¨ it's from October 2005 and it's a Standards Track doc, so this is the real deal, not a vibe.

The authors are G. Swallow (Cisco Systems, Inc), J. Drake (Boeing), H. Ishimatsu (G1M Co., Ltd.), and Y. Rekhter (Juniper Networks, Inc). It lives in the Network Working Group 🌸. The title block doesn't list anything it obsoletes or updates, so it's standing on its own πŸ‘‘.


Status of This Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. πŸ“œ

Copyright (C) The Internet Society (2005). ©️

Abstract

Generalized Multiprotocol Label Switching (GMPLS) defines both routing and signaling protocols for the creation of Label Switched Paths (LSPs) in various switching technologies. These protocols can be used to support a number of deployment scenarios. This memo addresses the application of GMPLS to the overlay model. 🧚

Table of Contents

1. Introduction ....................................................2
   1.1. GMPLS User-Network Interface (GMPLS UNI) ...................4
2. Addressing ......................................................5
3. ERO Processing ..................................................6
   3.1. Path Message without ERO ...................................6
   3.2. Path Message with ERO ......................................6
   3.3. Explicit Label Control .....................................7
4. RRO Processing ..................................................7
5. Notification ....................................................7
6. Connection Deletion .............................................8
   6.1. Alarm-Free Connection Deletion .............................8
   6.2. Connection Deletion with PathErr ...........................8
7. VPN Connections .................................................9
8. Security Considerations ........................................10
9. Acknowledgments ................................................10
10. References ....................................................10
   10.1. Normative References .....................................10
   10.2. Informational References .................................10

1. Introduction ✨

okay so GMPLS is the thing that defines both routing and signaling protocols for setting up Label Switched Paths (LSPs) across all sorts of switching technologies πŸ”₯ these protocols can power a bunch of different deployment scenarios, and the way that's set up is the whole point here.

Picture a peer model first: edge-nodes run both a routing and a signaling protocol, and the interactions between an edge-node and a core-node are the exact same as between two core-nodes. Now the overlay model is where it gets spicy 🌈 the core-nodes act more like a closed system, and the edge-nodes don't join the routing protocol instance that runs among the core nodes. Basically, the edge-nodes are unaware of the core's topology, and that's the whole vibe. There may, however, be a routing protocol interaction between a core-node and an edge-node so they can swap reachability info about other edge-nodes πŸ¦‹

  Overlay                                                  Overlay
  Network       +----------------------------------+       Network
+---------+     |                                  |     +---------+
|  +----+ |     |  +-----+    +-----+    +-----+   |     | +----+  |
|  |    | |     |  |     |    |     |    |     |   |     | |    |  |
| -+ EN +-+-----+--+ CN  +----+ CN  +----+  CN +---+-----+-+ EN +- |
|  |    | |  +--+--|     |    |     |    |     |   |     | |    |  |
|  +----+ |  |  |  +--+--+    +--+--+    +--+--+   |     | +----+  |
|         |  |  |     |          |          |      |     |         |
+---------+  |  |     |          |          |      |     +---------+
             |  |     |          |          |      |
+---------+  |  |     |          |          |      |     +---------+
|         |  |  |  +--+--+       |       +--+--+   |     |         |
|  +----+ |  |  |  |     |       +-------+     |   |     | +----+  |
|  |    +-+--+  |  | CN  +---------------+ CN  |   |     | |    |  |
| -+ EN +-+-----+--+     |               |     +---+-----+-+ EN +- |
|  |    | |     |  +-----+               +-----+   |     | |    |  |
|  +----+ |     |                                  |     | +----+  |
|         |     +----------------------------------+     |         |
+---------+                Core Network                  +---------+
  Overlay                                                  Overlay
  Network                                                  Network

                     Legend:   EN  -  Edge Node
                               CN  -  Core Node

                 Figure 1:  Overlay Reference Model

Figure 1 is the reference network, and it's giving very organized πŸ“ the core network is the big box in the center with five core-nodes marked 'CN'. The four boxes around the edge are labeled "Overlay Network" and they're four islands of one overlay network. Only the nodes with TE links into the core are drawn, and those are the edge-nodes. Quick note: "edge" is measured against the core network, not the overlay network πŸ’œ each "Overlay Network" box could hold loads of other nodes, but they're not shown because they don't take part directly in the signaling in this document. Only the edge-nodes can signal to set up links across the core to other edge-nodes.

How a link between edge-nodes gets requested and triggered is out of scope here, and so is exactly how the Overlay Network uses that link πŸ™ˆ one option is that the edge-nodes tell the other overlay nodes that the link exists, maybe using a forwarding adjacency as described in [MPLS-HIER]. Lowkey different from a forwarding adjacency the core network provides as a link between core-nodes, so don't mix those up bestie!

In the overlay model, there may be restrictions on what may be signaled between an edge-node and a core-node. This memo covers how GMPLS applies to the overlay model, and specifically the RSVP-TE procedures between an edge-node and a core-node in that model. All signaling procedures are identical to the GMPLS extensions in [RFC3473], except where this document notes otherwise πŸ’…

This document mainly looks at the interaction between an edge-node and its adjacent core-node (adjacent at the data plane). Out-of-band and non-adjacent signaling capabilities may mean that signaling messages get delivered over a longer path, so keep that in mind 🌸 unless noted, "core-node" means the node right next to an edge-node across one specific data plane interface. The term "core-nodes" (plural) refers to all the nodes in the core.

Making a single UNI or multiple UNI instances is implementation dependent at both the CN and the EN, as long as it meets the functional requirements for robustness, security, and privacy in Section 7. Totally up to the builders, fr fr 🫢

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]. πŸ“–

Readers are assumed to be familiar with the terminology from [RFC3031], [GMPLS-ARCH], and [RFC3471]. Do your homework, babe 🧚

1.1. GMPLS User-Network Interface (GMPLS UNI)

You can apply the GMPLS Overlay model at the User-Network Interface (UNI) reference point defined in the Automatically Switched Optical Network (ASON) [G.8080]. Imagine the 'Core Network' in Figure 1 is a Service Provider network, and the Edge Nodes are 'user' devices πŸŽ€ the interface between an EN and a CN is the UNI reference point, and to support the ASON model, somebody has to define signaling across the UNI. That somebody is this doc, periodt πŸ‘‘

The extensions here give you mechanisms for UNI signaling that are compatible with GMPLS signaling [RFC3471, RFC3473]. Also, these UNI signaling mechanisms match the RSVP model: there's a single end-to-end RSVP session for the user connection. The first and last hops make up the UNI, and that RSVP session carries the user parameters end-to-end πŸ¦‹ this means there's no need to map (or carry) user parameters into the format the network-to-network interface (NNI) inside the Service Provider network expects. Which is a big deal, because it means the UNI and NNI can be independent of one another, and that's a requirement of the ASON architecture πŸ”₯

However, if the UNI and NNI are both GMPLS RSVP-based, this methodology lets a single RSVP session instantiate both UNI and NNI signaling, if you want that and if Service Provider policy allows it ✨ iykyk, policy always gets the final say.

2. Addressing ✨

Okay so, edge-nodes in the overlay model get their addresses from the SAME address space they use to address their adjacent core-nodes πŸ’… That could be the same space the core-nodes use to talk to each other, or a VPN space the core-nodes support as an overlay πŸ¦‹

Let's get specific 🫢 An edge-node and its attached core-node have to share the address space that GMPLS uses to signal between the edge-nodes across the core network. A set of <edge-node, core-node> tuples counts as sharing an address space if the edge-nodes in that set could set up LSPs (through the core-nodes) with each other without any address mapping or translation. The edge-nodes in the set can be a subset of all the edge-nodes, fyi πŸ™ˆ The address space the core-nodes use among themselves may, but need not, be shared with any of the <edge-node, core-node> tuples' address spaces. And this does not mean there's a mandatory 1:1 mapping between a set of LSPs and a given addressing space ✨

When one core network is carrying multiple overlay networks, you can use one or more address spaces depending on privacy needs πŸ” This can happen without changing the core-node addresses, because it's the <edge-node, core-node> tuple that defines address space membership, so it's giving clean separation 🌸

An edge-node is identified by either a single IP address that represents its Node-ID, or by one or more numbered TE links that connect it to the core-nodes πŸŽ€ Core-nodes are assumed to be clueless about any other addresses tied to an edge-node (aka addresses that aren't used when signaling connections through the GMPLS core) πŸ™ˆ

An edge-node only really needs to know its own address, the address of its adjacent core-node, and the address (or a way to resolve it) of any other edge-node it wants to connect to. Of course it also needs the addresses used in the overlay network island it's part of πŸ’–

A core-node only needs to know (and track) the addresses on the interfaces between itself and its attached edge-nodes, plus the Node IDs of those edge-nodes. On top of that, it needs the interface addresses and Node IDs of the other edge-nodes that an attached edge-node is allowed to connect to πŸ‘‘

When forming a SENDER_TEMPLATE, the ingress edge-node includes either its Node-ID or the address of one of its numbered TE links. In the latter case, the connection will only be made over that interface πŸ¦‹

When forming a SESSION_OBJECT, the ingress edge-node includes either the Node-ID of the egress edge-device or the address of one of the egress' numbered TE links. Again, in the latter case the connection will only be made over that interface. The Extended_Tunnel_ID of the SESSION Object is set to either zero or to an address of the ingress edge-device πŸ“

Links can be numbered or unnumbered. They can also be bundled or unbundled. Check out [GMPLS-ARCH], [RFC3471], [BUNDLE], and [RFC3477] for the details ✨


3. ERO Processing

An edge-node MAY include an ERO πŸŽ€ A core-node MAY reject a Path message that contains an ERO. That behavior is controlled by (hopefully consistent) configuration πŸ™ˆ If a core-node rejects a Path message because of an ERO, it SHOULD return a PathErr message with an error code of "Unknown object class" toward the sender, as described in [RFC3209]. This makes the path setup fail πŸ’€

Also, a core-node MAY accept EROs that only include the ingress edge-node, the ingress core-node, the egress core-node, and the egress edge-node. This is there to support explicit label control on the edge-node interface (more on that below) 🧚 If a core-node rejects a Path message because the ERO isn't in the permitted format, it SHOULD return a PathErr message with an error code of Bad Explicit Route Object, as defined in [RFC3209] πŸ₯€

3.1. Path Message without ERO

When a core-node gets a Path message from an edge-node that has no ERO, it MUST calculate a route to the destination and put that route in an ERO before forwarding the PATH message. The one exception is if the egress edge-node is also adjacent to this core-node 🌈 If no route can be found, the core-node SHOULD return a PathErr message with an error code and value of 24,5 - "No route available toward destination" 😭

3.2. Path Message with ERO

When a core-node gets a Path message from an edge-node that does contain an ERO, it SHOULD verify the route against its topology database before forwarding the PATH message. If the route isn't viable (based on topology, currently available resources, or local policy), then a PathErr message with an error code and value of 24,5 - "No route available toward destination" should be returned πŸ’…

3.3. Explicit Label Control

So, to support explicit label control and full identification of the egress link, an ingress edge-node can put this info in the ERO it passes to its neighboring core-node πŸ”₯ If no other ERO is supplied, this explicit control info is the only hop of the ERO. It's encoded by setting the first subobject of the ERO to the node-ID of the egress core-node with the L-bit set. After that come all the other subobjects needed to identify the link and labels, as they normally would πŸ¦‹

The same rules apply to explicit control subobjects as the last hop in the ERO, if the ingress edge-node gives its neighbor core-node a fuller ERO. In that case, though, the L-bit MAY be clear 🫢

This whole process is described in [RFC3473] and [EXPLICIT] πŸ“š

4. RRO Processing

An edge-node MAY include an RRO πŸ’– A core-node MAY remove the RRO from the Path message before forwarding it. The core-node may also remove the RRO from a Resv message before forwarding it to the edge-node. Again, that's controlled by (hopefully consistent) configuration πŸ™ˆ

Also, a core-node MAY edit the RRO in a Resv message so it only includes the subobjects from the egress core-node through the egress edge-node. This lets the ingress node know which link and labels were selected at the far end of the connection πŸ‘‘

5. Notification

An edge-node MAY include a NOTIFY_REQUEST object in both the Path and Resv messages it generates. Core-nodes may send Notify messages to edge-nodes that included the NOTIFY_REQUEST object πŸ””

A core-node MAY remove a NOTIFY_REQUEST object from a Path or Resv message received from an edge-node before forwarding it 🌸

If there's no NOTIFY_REQUEST object in the Path or Resv received from an edge-node, the core-node adjacent to that edge-node may include a NOTIFY_REQUEST object and set its value to its own address ✨

In either of the cases above, the core-node SHOULD NOT send Notify messages to the edge-node πŸ™…β€β™€οΈ

When a core-node receives a NOTIFY_REQUEST object from an edge-node, it MAY update the Notify Node Address with its own address before forwarding it. In this case, when Notify messages are received, they MAY be selectively forwarded to the edge-node (based on local policy) πŸŽ€

6. Connection Deletion

6.1. Alarm-Free Connection Deletion

RSVP-TE currently deletes connections using either a single-pass PathTear message, or a combo of ResvTear and PathTear messages. When a node gets a PathTear, it deletes the connection state and forwards the message 🧹 In optical networks, though, deleting a connection (like removing the cross-connect) in one node can make the connection look failed to downstream nodes (loss of frame, loss of light, etc.). That can trigger management alarms and maybe even restoration or protection for the connection 🚨

To fix this, the graceful connection deletion procedure SHOULD be followed 🫢 Under this procedure, an ADMIN_STATUS object MUST be sent in a Path or Resv message along the connection's path, so every node en route knows the deletion is coming before it actually happens. The procedure is described in [RFC3473] πŸ“š

If an ingress core-node receives a PathTear without having first seen an ADMIN_STATUS object saying the connection is about to be deleted, it MAY pause the PathTear. It can then send a Path message with an ADMIN_STATUS object to tell all downstream LSRs that the connection is about to be deleted. When the Resv comes back echoing the ADMIN_STATUS, or when the timer described in [RFC3473] runs out, the ingress core-node MUST forward the PathTear πŸ¦‹

6.2. Connection Deletion with PathErr

[RFC3473] introduces the Path_State_Removed flag in a PathErr message. It tells the sender that it has removed all state for the LSP and doesn't need to see a PathTear 🧼 A core-node next to an edge-node MAY map between teardown using ResvTear/PathTear and PathErr with Path_state_Removed πŸ’«

A core-node next to an edge-node that receives a ResvTear from its downstream neighbor MAY respond with a PathTear, and send a PathErr with Path_State_Removed further upstream 🌊

But, bestie, a core-node next to an edge-node that gets a PathErr with Path_State_Removed from its downstream neighbor MUST NOT retain Path state and send a ResvTear further upstream. Doing that would imply that Path state further downstream had also been retained 🚫

7. VPN Connections

As the addressing section above said, the extensions in this document are designed to work with VPNs ✨ Since the core network might be some technology other than GMPLS, no mandatory way of mapping core connections to access connections is specified. Still, when GMPLS is used for the core network, it is RECOMMENDED that the following procedure based on [MPLS-HIER] is followed πŸ’œ

The VPN connection is modeled as three hops: one for each access link, and one hop across the core network πŸ›€οΈ

The VPN connection is set up with a two-step procedure. When a Path message arrives at a core-node on an interface that's part of a VPN, that Path message is held until a core connection is established πŸŽ€

The core connection is set up as a separate signaling exchange between the core-nodes, using the address space of the core-nodes. While that exchange is happening, the original Path message stays on hold at the ingress core-node. Once the core connection exchange is complete, that connection is used in the VPN connection as if it were a single link. This gets signaled by including an IF_ID RSVP_HOP object (defined in [RFC3473]) using the procedures defined in [MPLS-HIER] 🧚

Then the original Path message is forwarded within the VPN addressing realm to the core-node attached to the destination edge-node. There are lots of ways to do this, including IP and GRE tunnels and BGP/MPLS VPNs. Specifying a particular means is beyond the scope of this document 🌈

8. Security Considerations

🚨 This one is serious, bestie: the trust model between the core and edge-nodes is DIFFERENT from the one described in [RFC3473] 🚨

The core is permitted to hide its topology from the edge-nodes. The core is also permitted to restrict the actions of edge-nodes by filtering out specific RSVP objects. So edge-nodes can't just assume they get the full picture or unlimited control, periodt πŸ™ˆπŸ’€

9. Acknowledgments 🫢

okay bestie, the authors wanna give a shoutout to Kireeti Kompella, Jonathan Lang, Dimitri Papadimitriou, Dimitrios Pendarakis, Bala Rajagopalan, and Adrian Farrel for their comments and input πŸ’– Huge thanks also to Loa Andersson and Dimitri Papadimitriou for the thorough final reviews ✨

Adrian Farrel edited the last two revisions of this document πŸ’… to fold in comments from the Working Group last call and from the AD review. Literally the glow-up era 🌸

10. References πŸ“š

10.1. Normative References

these are the ones you need to read to actually implement this stuff πŸ”₯

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC3471] Berger, L., "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description", RFC 3471, January 2003.
  • [RFC3473] Berger, L., "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Extensions", RFC 3473, January 2003.
  • [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.

10.2. Informational References

these are the bonus reads 🧚 good background, not strictly required 🌈

  • [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, January 2001.
  • [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links in Resource ReSerVation Protocol - Traffic Engineering (RSVP-TE)", RFC 3477, January 2003.
  • [BUNDLE] Kompella, K., Rekhter, Y., and Berger, L., "Link Bundling in MPLS Traffic Engineering (TE)", RFC 4201, October 2005.
  • [EXPLICIT] Berger, L., "GMPLS Signaling Procedure for Egress Control", RFC 4003, February 2005.
  • [GMPLS-ARCH] Mannie, E., "Generalized Multi-Protocol Label Switching (GMPLS) Architecture", RFC 3945, October 2004.
  • [MPLS-HIER] Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE)", RFC 4206, October 2005.
  • [G.8080] ITU-T Rec. G.8080/Y.1304, "Architecture for the Automatically Switched Optical Network (ASON)," November 2001 (and Revision, January 2003). For information on the availability of this document, please see http://www.itu.int.

Authors' Addresses πŸŽ€

meet the squad who wrote this πŸ‘‘

George Swallow Cisco Systems, Inc. 1414 Massachusetts Ave, Boxborough, MA 01719

Phone: +1 978 936 1398 EMail: swallow@cisco.com

John Drake Boeing Satellite Systems 2300 East Imperial Highway El Segundo, CA 90245

Phone: +1 412 370-3108 EMail: John.E.Drake2@boeing.com

Hirokazu Ishimatsu G1M Co., Ltd. Nishinippori Start up Office 214, 5-37-5 Nishinippori, Arakawaku, Tokyo 116-0013, Japan

Phone: +81 3 3891 8320 EMail: hirokazu.ishimatsu@g1m.jp

Yakov Rekhter Juniper Networks, Inc.

EMail: yakov@juniper.net


Copyright (C) The Internet Society (2005). πŸ’œ

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ¦‹

the IETF doesn't take a side on whether any IPR claims are valid, how wide they go, or whether licenses exist πŸ™ˆ it also doesn't promise it looked for any rights itself. More info on how rights work for RFCs is in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat, plus 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 these proprietary rights, can be found in the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites anyone interested to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org.

Acknowledgement 🌸

Funding for the RFC Editor function is currently provided by the Internet Society. 🧁✨

πŸ“¦ where this page comes from