RFC 2380

RSVP over ATM Implementation Requirements

πŸ“… published August 1998, from ietf

RFC 2380: RSVP over ATM Implementation Requirements ✨

Network Working Group πŸŽ€ Author: L. Berger, FORE Systems πŸ’œ Category: Standards Track πŸ¦‹ Date: August 1998 🌸 Obsoletes / Updates: none listed in the title block 🫢

Okay bestie, this is RFC 2380, and it's giving "how to actually get RSVP running over ATM without everything exploding" πŸ’… It's a standards track doc, so the rules here are the real deal, not vibes. πŸ”₯

Status of this Memo ✨

So this doc is an Internet standards track protocol for the whole Internet community 🌈 It also wants people to discuss it and send suggestions for making it better πŸ’¬ If you want to know where this protocol stands officially, check the current "Internet Official Protocol Standards" (STD 1) πŸ“œ And the memo can be distributed with no limits πŸ¦‹

Copyright (C) The Internet Society (1998). All Rights Reserved.

Abstract 🧚

Okay so this memo is all about the specific implementation requirements for running RSVP over ATM switched virtual circuits (SVCs) πŸ’… The whole point is interoperability: lots of different implementations need to play nicely together, and they all need to conform to the RSVP and Integrated Services specs 🫢 There's a separate doc [5] with specific guidelines for running over today's ATM networks πŸ“š The general problem gets talked about in [9] 🌸 Integrated Services to ATM service mappings are covered in [6] ✨ Put it all together and you've got the background and info you need to implement Integrated Services and RSVP over ATM πŸ‘‘

Table of Contents πŸŽ€

   1. Introduction .................................................  2
      1.1 Terms ....................................................  2
      1.2 Assumptions ..............................................  3
   2. General RSVP Session Support .................................  4
      2.1 RSVP Message VC Usage ....................................  4
      2.2 VC Initiation ............................................  4
      2.3 VC Teardown ..............................................  5
      2.4 Dynamic QoS ..............................................  6
      2.5 Encapsulation ............................................  6
   3. Multicast RSVP Session Support ...............................  7
      3.1 Data VC Management for Heterogeneous Sessions ............  7
      3.2 Multicast End-Point Identification .......................  8
      3.3 Multicast Data Distribution ..............................  9
      3.4 Receiver Transitions ..................................... 11

   4. Security Considerations ...................................... 11
   5. Acknowledgments .............................................. 11
   6. Author's Address ............................................. 12
   REFERENCES ...................................................... 13
   FULL COPYRIGHT STATEMENT ........................................ 14

1. Introduction πŸ¦‹

Okay so this memo is about running IP over ATM in an environment where SVCs carry QoS flows and RSVP is the internet level QoS signaling protocol πŸ’œ It applies when you're using CLIP/ION, LANE2.0 and MPOA [4] to support IP over ATM 🌈 The general stuff about running RSVP [8] over ATM has already been covered in a bunch of papers, including [9] and some earlier work πŸ“š This doc is meant to be a companion to [9,5], so you should be familiar with both 🫢

This document defines the specific requirements for implementations using ATM UNI3.x and 4.0 πŸ’… Every RSVP over ATM implementation has to follow these to keep interoperability working, no exceptions πŸ”₯ More recommendations for implementers are in [5] ✨

The rest of this section covers terms and assumptions πŸŽ€ Section 2 is the common stuff for all RSVP sessions 🌸 Section 3 is the multicast-specific stuff 🧚

1.1 Terms πŸ’–

"Reservation" and "flow" get thrown around in lots of contexts, and they don't always mean the same thing 😭 So here's how this document uses them:

  • Reservation is what this doc calls an RSVP initiated request for resources πŸŽ€ RSVP kicks off those requests based on RESV message processing, and RESV messages that just refresh state don't trigger a resource request πŸ™ˆ Resource requests can be made based on RSVP sessions and RSVP reservation styles πŸ’… Styles decide whether the reserved resources get used by one sender or shared by several senders πŸ‘‘ Check [8] for the details of each style ✨ Each new request is called an RSVP reservation here, or just reservation πŸ¦‹
  • Flow is the data traffic tied to a particular reservation 🌈 What "flow" means depends on the RSVP style πŸ’œ For shared style reservations there's one flow per session 🌸 For distinct style reservations there's one flow per sender (per session) 🫢

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [7] πŸ”₯

1.2 Assumptions 🌸

Here are the assumptions this doc makes 🧚

  • RSVP

We're assuming RSVP is the internet signaling protocol described in [8] πŸ’… You're expected to already know [8] πŸ“š

  • IPv4 and IPv6

RSVP support has been defined for both IPv4 and IPv6 ✨ The guidelines here work for supporting RSVP with either one 🌈 This document doesn't require one version over the other πŸ’–

  • Best effort service model

The current Internet only supports best effort service πŸ¦‹ We're assuming that as more pieces of the Integrated Services model get defined, best effort service has to keep being supported too 🫢

  • ATM UNI 3.x and 4.0

We're assuming ATM service as defined by UNI 3.x and 4.0 πŸ’œ ATM gives you both point-to-point and point-to-multipoint Virtual Circuits (VCs) with a specified Quality of Service (QoS) πŸŽ€ It also gives you both Permanent Virtual Circuits (PVCs) and Switched Virtual Circuits (SVCs) 🌸 In a PVC environment, PVCs are typically used as point-to-point link replacements, so the support issues look a lot like point-to-point links πŸ™ˆ This memo assumes SVCs are what's used to support RSVP over ATM πŸ‘‘


2. General RSVP Session Support πŸ’…

This section has the implementation requirements that apply to all RSVP sessions, unicast and multicast alike πŸ”₯ It covers VC usage, QoS VC initiation, VC teardown, handling requested QoS changes, and encapsulation ✨

2.1 RSVP Message VC Usage πŸ¦‹

There are several RSVP Message VC Usage options out there for implementers 🌈 Implementers have to pick which VC carries RSVP messages and how RSVP sessions get aggregated over QoS VCs πŸ’œ These options were covered in [9], and some specific guidelines are in [5] 🌸 To keep implementations that pick different options interoperable, RSVP over ATM implementations MUST NOT send RSVP (control) messages on the same QoS VC as RSVP associated data packets 😭 RSVP over ATM implementations MAY send RSVP messages either on the best effort data path or on a separate control VC 🫢

RSVP (control) messages and RSVP associated data packets don't ride the same VCs, so one VC could fail while the other stays up πŸ™ˆ When the VC carrying data packets fails and can't be reestablished, RSVP SHOULD treat that as an allocation failure πŸ’… When the VC used to forward RSVP control messages gets abnormally released and can't be reestablished, the RSVP associated QoS VCs MUST also be released πŸ”₯ Releasing the associated data VCs is required to keep forwarding and reservation states in sync for the associated data flows ✨

2.2 VC Initiation πŸŽ€

There's an apparent mismatch between RSVP and ATM 😳 RSVP control is receiver oriented, and ATM control is sender oriented 🌸 This might seem like a huge issue at first, but it really isn't πŸ’– RSVP reservation (RESV) requests get generated at the receiver, while the actual allocation of resources happens at the subnet sender πŸ¦‹

For data flows, that means subnet senders MUST establish all QoS VCs, and the RSVP enabled subnet receiver MUST be able to accept incoming QoS VCs πŸ‘‘ These restrictions match RSVP version 1 processing rules, and they let senders use different flow to VC mappings, and even different QoS renegotiation techniques, without interoperability problems 🧚 Every RSVP over ATM approach where VCs are initiated and controlled by the subnet senders will interoperate 🫢 Figure 1 shows this data flow VC initiation model 🌈

                              Data Flow ==========>

                      +-----+
                      |     |      -------------->  +----+
                      | Src |    -------------->    | R1 |
                      |    *|  -------------->      +----+
                      +-----+       QoS VCs
                           /\
                           ||
                       VC  ||
                       Initiator

                     Figure 1: Data Flow VC Initiation

RSVP over ATM implementations MAY send data in the backwards direction on an RSVP initiated QoS point-to-point VC πŸ’… When sending in the backwards data path, the sender MUST ensure the data conforms to the backwards direction traffic parameters πŸ”₯ The traffic parameters are set by the VC initiator, so it's pretty likely that no resources will be requested for traffic coming from the called party 😭 Worth noting: the backwards data path isn't available with point-to-multipoint VCs πŸ™ˆ

2.3 VC Teardown πŸ’œ

VCs carrying IP over ATM data are typically torn down based on inactivity timers 🌸 That works because IP is connectionless, so there's no other way to know when a VC isn't needed anymore 🫢 RSVP gives explicit mechanisms (messages and timeouts) for figuring out when an associated data VC isn't needed, so the traditional VC timeout mechanisms aren't needed 🧚 Also, under normal operation RSVP implementations expect to allocate resources and have them stay allocated until RSVP releases them πŸ’… So data VCs set up for RSVP controlled flows should only be released at RSVP's direction πŸ‘‘ Those VCs must not be timed out due to inactivity by either the VC initiator or the VC receiver πŸ”₯

This clashes with VCs timing out the way described in RFC 1755 [11], section 3.4 on VC Teardown 😳 RFC 1755 recommends tearing down a VC that's been inactive for a certain length of time, and twenty minutes is the recommended value 🌈 That timeout is typically implemented at both the VC initiator and the VC receiver πŸŽ€ Although, section 3.1 of the update to RFC 1755 [12] says inactivity timers must not be used at the VC receiver πŸ¦‹

In RSVP over ATM implementations, the configurable inactivity timer mentioned in [11] MUST be set to "infinite" for VCs initiated at the request of RSVP ✨ Setting the inactivity timer value at the VC initiator shouldn't be a problem, since the proper value can be relayed internally at the originator πŸ’– Setting the inactivity timer at the VC receiver is harder, and would need some mechanism to signal that an incoming VC was RSVP initiated πŸ™ˆ To dodge that complexity and to conform to [12], RSVP over ATM implementations MUST not use an inactivity timer to clear any received connections πŸ’…πŸ”₯

2.4. Dynamic QoS ✨

okay so RSVP is lowkey the flexible one here πŸ¦‹ It lets you change QoS parameters at any time, but ATM UNI3.x and 4.0 are kinda rigid and don't allow any QoS changes after a VC is set up 😭 See [9] for the full tea.

The way RSVP handles reservation changes is by trying to swap the existing VC for a new, appropriately sized one πŸ’… While the replacement VC is being set up, the old VC MUST be left in place unmodified. Leaving it alone keeps QoS data flowing with as little interruption as possible. Once the replacement VC is up, data moves over to the new VC, and only then does the old one get closed πŸŽ€

If setting up the replacement VC fails, the old QoS VC MUST continue to be used 🫢 If the new reservation is bigger than the old one, the reservation request MUST be answered with an error. If the new reservation is smaller, the request MUST be treated as if the modification was successful. Yes, leaving the bigger allocation in place is suboptimal, but it maximizes the service the user gets, so it's the move πŸ’– This behavior is also REQUIRED so you stay in line with the RSVP error handling in sections 2.5, 3.1.8 and 3.11.2 of [8]. Implementations SHOULD retry replacing a too large VC after some appropriate elapsed time πŸ”

One more thing πŸ‘€ Only one QoS change can be processed at a time per reservation. If the requested QoS (from RSVP) changes while the first replacement VC is still being set up, then the replacement VC SHOULD BE released and the whole VC replacement process gets restarted. Implementations MAY also limit the number of changes processed in a time period per [9] ⏳

2.5. Encapsulation

There are multiple encapsulation options for data sent over RSVP triggered QoS VCs, which is giving main character energy 🌈 All RSVP over ATM implementations MUST be able to support LLC encapsulation per RFC 1483 [10] on such QoS VCs. Implementations MAY negotiate alternative encapsulations using the B-LLI negotiation procedures defined in ATM Signalling, so check [11] for the details πŸ¦‹ When a QoS VC is only carrying IP packets, implementations SHOULD negotiate VC based multiplexing so they don't pay the overhead of the LLC header πŸ’…


3. Multicast RSVP Session Support 🧚

okay this is where it gets extra spicy 🌢️ Running RSVP over ATM has a few things that are unique to multicast sessions. This section covers multicast end-point identification, multicast data distribution, multicast receiver transitions, and next-hops asking for different QoS values (heterogeneity). That last one includes how to handle multicast best effort receivers. Handling best effort receivers isn't strictly an RSVP issue, but any RSVP over ATM implementation has to deal with it to keep the expected best effort internet service going 🫢

3.1. Data VC Management for Heterogeneous Sessions

the details about data VC management for heterogeneous sessions are covered in depth in [9] ✨ The quick version: heterogeneity happens when receivers ask for different levels of QoS within a single session, and also when some receivers don't ask for any QoS at all. Both types are shown in figure 2 πŸ‘€

                                 +----+
                        +------> | R1 |
                        |        +----+
                        |
                        |        +----+
           +-----+ -----+   +--> | R2 |
           |     | ---------+    +----+        Receiver Request Types:
           | Src |                             ---->  QoS 1 and QoS 2
           |     | .........+    +----+        ....>  Best-Effort
           +-----+ .....+   +..> | R3 |
                        :        +----+
                    /\  :
                    ||  :        +----+
                    ||  +......> | R4 |
                    ||           +----+
                  Single
               IP Mulicast
                  Group

                 Figure 2: Types of Multicast Receivers

[9] gives us four models for dealing with heterogeneity: full heterogeneity, limited heterogeneity, homogeneous, and modified homogeneous 🌸 No matter which model or combo of models an implementation uses, implementations MUST NOT normally send more than one copy of a particular data packet to a particular next-hop (ATM end-point). Some transient duplicate transmission is acceptable, but only during VC setup and transition πŸ™ˆ

Implementations MUST also make sure data traffic gets sent to best effort receivers πŸ’– Data traffic MAY be sent to best effort receivers over best effort or QoS VCs, whichever is appropriate for the model being implemented. In all cases, implementations MUST NOT create VCs in a way that stops data from reaching best effort receivers. This covers not being able to add a best effort receiver to a QoS VC, but it does not cover the case where best effort VCs can't be set up. That failure counts as a general IP over ATM failure, so it's beyond the scope of this document 🫠

There's an interesting interaction between dynamic QoS and heterogeneous requests when using the limited heterogeneity, homogeneous, or modified homogeneous models πŸ”₯ Say a RESV message comes in from a new next-hop and the requested resources are bigger than any existing reservation. Now both dynamic QoS and heterogeneity need handling. The key question is whether to add the new next-hop first or switch to the new QoS first. Honestly it's a fairly straightforward special case. The older, smaller reservation doesn't support the new next-hop, so the dynamic QoS process SHOULD be initiated first. Since the new QoS is only needed by the new next-hop, that next-hop SHOULD be the first end-point of the new VC. This keeps signaling to a minimum when the setup to the new next-hop fails 🧠✨

3.2. Multicast End-Point Identification

Implementations must be able to identify ATM end-points participating in an IP multicast group πŸ‘€ Those ATM end-points will be IP multicast receivers and/or next-hops. Both QoS and best effort end-points must be identified. RSVP next-hop information will usually give you the QoS end-points, but not the best effort ones πŸ’…

There's a special case where RSVP next-hop information won't give you the right end-points 😩 This happens when a next-hop isn't RSVP capable and RSVP is being automatically tunneled. In that case, a PATH message travels through a non-RSVP egress router on its way to the next-hop RSVP node. When that next-hop RSVP node sends a RESV message, it may arrive at the source via a different route than the one the PATH message used. The source gets the RESV message, but it won't know which ATM end-point should be associated with the reservation. For unicast sessions there's no problem, since the ATM end-point is the IP next-hop router. With multicast, though, multicast routing may not be able to uniquely identify the IP next-hop router, so a multicast end-point might not get identified properly πŸ₯Ί

In certain cases you can also figure out the full list of best effort end-points ✨ Some multicast over ATM control mechanisms, like MARS in mesh mode, can be used to identify all end-points of a multicast group. Also, some multicast routing protocols can provide all next-hops for a particular multicast group. In both cases, RSVP over ATM implementations can get a full list of end-points, both QoS and non-QoS, using the right mechanisms. That full list can then be compared against the RSVP identified end-points to work out the list of best effort receivers 🧚

There are cases where QoS and best effort end-points can be identified, but there's no simple solution for uniquely identifying end-points of multicast traffic handled by non-RSVP next-hops 😭 The preferred solution is to use multicast control mechanisms and routing protocols that support unique end-point identification. When those aren't available, all IP routers that will be used to support RSVP over ATM should support RSVP πŸ›£οΈ To ensure proper behavior, baseline RSVP over ATM implementations MUST only establish RSVP-initiated VCs to RSVP capable end-points. It's permissible to let a user override this behavior πŸ‘‘

3.3. Multicast Data Distribution

There are two basic models for IP multicast data distribution over ATM 🌸 In the first, senders set up point-to-multipoint VCs to all ATM attached destinations, and data is then sent over those VCs. This is often called "multicast mesh" or "VC mesh" mode distribution. In the second, senders send data over point-to-point VCs to a central point, and that central point relays the data onto point-to-multipoint VCs set up to all receivers of the IP multicast group. This one is often called "multicast server" mode distribution. Figure 3 shows the data flow for both modes πŸ¦‹

                            _________
                           /         \
                          / Multicast \
                          \   Server  /
                           \_________/
                             ^  |  |
                             |  |  +--------+
              +-----+        |  |           |
              |     | -------+  |           |         Data Flow:
              | Src | ...+......|....+      V         ---->  Server
              |     |    :      |    :    +----+      ....>  Mesh
              +-----+    :      |    +...>| R1 |
                         :      |         +----+
                         :      V
                         :    +----+
                         +..> | R2 |
                              +----+

             Figure 3: IP Multicast Data Distribution Over ATM

The goal of RSVP over ATM solutions is to make sure IP multicast data gets distributed with the appropriate QoS 🎯 Current multicast servers [1,2] don't support any mechanisms for communicating QoS requirements to a multicast server. Because of that, RSVP over ATM implementations SHOULD support "mesh-mode" distribution for RSVP controlled multicast flows 🫢 When using multicast servers that don't support QoS requests, a sender MUST set the service, not global, break bit(s). Using the service-specific break bit tells the receivers that RSVP and Integrated Services are supported by the router, but that the service can't be delivered over the ATM network for that specific request πŸ™…β€β™€οΈ

In the case of MARS [1], the selection of distribution modes is administratively controlled πŸ”§ So network administrators who want proper RSVP over ATM operation MUST appropriately configure their network to support mesh mode distribution for multicast groups that will be used in RSVP sessions. For LANE1.0 networks, the only multicast distribution option is over the LANE Broadcast and Unknown Server, which means the break bit MUST always be set 😀 For LANE2.0 [3], there are provisions that allow for non-server solutions, so it may be possible to ensure proper QoS delivery 🌈

3.4. Receiver Transitions ✨

okay so bestie, picture this πŸ¦‹ when you set up a point-to-multipoint VC, there's this awkward in-between moment where some receivers have already been added to the QoS VC and some haven't. it's giving transition chaos 😭

during that window you could start sending data on the shiny new VC already. but here's the tea: if you send on BOTH the new VC and the old VC, the receivers who got added get the proper QoS, and everyone gets the old QoS too. so the QoS receivers end up with duplicate data πŸ’€ and if you only send on the new QoS VC, anyone who hasn't been added yet just... misses data πŸ₯Ί

so the real question is: send to both, or send to just one? one option gives you duplicates, the other might lose some data. pick your poison, babe πŸ’…

this needs thinking through for three cases: when you're setting up the very first QoS VC, when you're setting up a VC to handle a QoS change, and when you're adding a brand-new end-point to a QoS VC that already exists 🌸

the first two cases are basically the same vibe. in both, you could send on the half-built new VC, and in both you're choosing between duplicates and lost data. to keep things predictable and still deliver to every receiver, data MUST NOT be sent on new VCs until all parties have been added. that way all data gets delivered exactly once to everyone πŸŽ€

the third case is the odd one out ⭐ here an end-point has to be added to an existing QoS VC and dropped from a best effort VC. the question is which step goes first. if the add goes first, the end-point might get duplicate data. if the drop goes first, it might miss data. to avoid losing data, the add MUST be completed first, and then the drop follows. this means receivers have to be ready to handle some duplicate packets whenever QoS is being set up 🫢


4. Security Considerations πŸ”₯

okay this section is short but it's giving SERIOUS vibes πŸ’€ the same considerations stated in [8] and [11] apply to this document. that's it. there are no additional security issues raised in this document. so go read [8] and [11] and you're covered πŸ™ˆ


5. Acknowledgments 🫢

this work is based on earlier drafts and comments from the ISSLL working group 🌈 the author wants to give them a big shoutout, especially Steve Berson, who coauthored one of the drafts. thank you queens πŸ‘‘


6. Author's Address πŸŽ€

Lou Berger
FORE Systems
1595 Spring Hill Road
5th Floor
Vienna, VA 22182

Phone: +1 703-245-4527
EMail: lberger@fore.com

REFERENCES πŸ“š

[1] Armitage, G., "Support for Multicast over UNI 3.0/3.1 based ATM Networks," RFC 2022, November 1996.

[2] The ATM Forum, "LAN Emulation Over ATM Specification", Version 1.0.

[3] The ATM Forum, "LAN Emulation over ATM Version 2 - LUNI Specification", April 1997.

[4] The ATM Forum, "MPOA Baseline Version 1", May 1997.

[5] Berger, L., "RSVP over ATM Implementation Guidelines", BCP 24, RFC 2379, August 1998.

[6] Borden, M., and M. Garrett, "Interoperation of Controlled-Load and Guaranteed-Service with ATM", RFC 2381, August 1998.

[7] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[8] Braden, R., Zhang, L., Berson, S., Herzog, S., and S. Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification", RFC 2205, September 1997.

[9] Crawley, E., Berger, L., Berson, S., Baker, F., Borden, M., and J. Krawczyk, "A Framework for Integrated Services and RSVP over ATM", RFC 2382, August 1998.

[10] Heinanen, J., "Multiprotocol Encapsulation over ATM Adaptation Layer 5", RFC 1483, July 1993.

[11] Perez, M., Liaw, F., Grossman, D., Mankin, A., Hoffman, E., and A. Malis, "ATM Signalling Support for IP over ATM", RFC 1755, February 1995.

[12] Maher, M., "ATM Signalling Support for IP over ATM - UNI 4.0 Update", RFC 2331, April 1998.


Copyright (C) The Internet Society (1998). 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.

πŸ“¦ where this page comes from