RFC 8370

Techniques to Improve the Scalability of RSVP-TE Deployments

๐Ÿ“… published May 2018, from ietf

RFC 8370: Techniques to Improve the Scalability of RSVP-TE Deployments ๐ŸŽ€

Okay bestie, this RFC is about making RSVP-TE handle way more LSPs without the routers totally melting ๐Ÿ˜ญโœจ Here's the title block tea first ๐Ÿซ–

It's an IETF (Internet Engineering Task Force) document in the Standards Track category ๐Ÿ’… It was published in May 2018 with ISSN 2070-1721 ๐ŸŒธ The editor is V. Beeram (Juniper Networks), and the other authors are I. Minei (also Juniper Networks), R. Shakir (Google, Inc), D. Pacella (Verizon), and T. Saad (Cisco Systems) ๐Ÿซถ The title block doesn't list any documents this one obsoletes or updates, so there's nothing it's replacing or changing in the header ๐Ÿ“

Abstract โœจ

Networks using RSVP-TE LSPs are running into implementations that can't keep up with how many LSPs people are deploying ๐Ÿ˜ฉ

This doc defines two techniques, Refresh-Interval Independent RSVP (RI-RSVP) and Per-Peer Flow Control. They cut down the number of processing cycles needed to maintain RSVP-TE LSP state in Label Switching Routers (LSRs), so implementations can handle bigger deployments ๐Ÿš€


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 has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

Info about the current status of this document, any errata, and how to give feedback is at https://www.rfc-editor.org/info/rfc8370 ๐Ÿ’œ

Copyright (c) 2018 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 (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, since they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents ๐Ÿงš

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Required Support for RFC 2961 . . . . . . . . . . . . . . . .   4
     2.1.  Required Functionality from RFC 2961  . . . . . . . . . .   4
     2.2.  Making Acknowledgements Mandatory . . . . . . . . . . . .   4
   3.  Refresh-Interval Independent RSVP (RI-RSVP) . . . . . . . . .   5
     3.1.  Capability Advertisement  . . . . . . . . . . . . . . . .   6
     3.2.  Compatibility . . . . . . . . . . . . . . . . . . . . . .   6
   4.  Per-Peer Flow Control . . . . . . . . . . . . . . . . . . . .   6
     4.1.  Capability Advertisement  . . . . . . . . . . . . . . . .   7
     4.2.  Compatibility . . . . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
     5.1.  Capability Object Values  . . . . . . . . . . . . . . . .   7
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   9
   Appendix A.  Recommended Defaults . . . . . . . . . . . . . . . .  10
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  10
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  11
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  11

1. Introduction ๐Ÿ’–

Okay so, networks using RSVP-TE [RFC3209] LSPs are hitting implementations that can't keep up with the growing number of LSPs being deployed ๐Ÿ˜ญ

The set of RSVP Refresh Overhead Reduction procedures [RFC2961] is a powerful toolkit for RSVP-TE implementations, and it covers a majority of the concerns about soft-state scaling ๐Ÿงฐ But even with those tools, analysis of existing implementations [RFC5439] shows that past a certain scale, the processing can still cause significant disruption to a Label Switching Router (LSR) ๐Ÿ’€

This document builds on existing scaling work and analysis ๐Ÿ“š It defines protocol extensions so RSVP-TE deployments can push the envelope further by raising the threshold where an LSR struggles to get enough processing to maintain LSP state ๐Ÿ‘‘

So the two techniques are Refresh-Interval Independent RSVP (RI-RSVP) and Per-Peer Flow Control, and together they cut down the processing cycles needed to maintain LSP state โœจ RI-RSVP basically aims to completely eliminate RSVP's reliance on refreshes and refresh timeouts ๐Ÿ™ˆ Per-Peer Flow Control lets a busy RSVP speaker apply back pressure to its peer(s) ๐Ÿ›‘ This document defines a unique RSVP Capability [RFC5063] for each technique. Support for the CAPABILITY object is a prerequisite for implementing these techniques ๐ŸŽ€ Also, the Per-Peer Flow-Control technique requires the RI-RSVP technique as a prerequisite ๐Ÿ”ฅ To get the maximum scaling benefits, it is strongly recommended that implementations support both techniques and have them enabled by default ๐Ÿฆ‹ Both techniques are fully backward compatible and can be deployed incrementally. ๐ŸŒธ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. ๐Ÿ“–

2. Required Support for RFC 2961 ๐Ÿซถ

The techniques in Sections 3 and 4 are based on proposals made in [RFC2961] ๐Ÿ’… Implementations of these techniques need to support the RSVP messages and procedures defined in [RFC2961], with some minor modifications and alterations to recommended time intervals and iteration counts (see Appendix A for the set of recommended defaults) โญ

2.1. Required Functionality from RFC 2961 ๐ŸŒˆ

An implementation that supports the techniques discussed in Sections 3 and 4 must support the functionality described in [RFC2961] as follows:

  • It MUST indicate support for RSVP Refresh Overhead Reduction extensions (as specified in Section 2 of [RFC2961]). ๐Ÿ’œ
  • It MUST support receipt of any RSVP Refresh Overhead Reduction message as defined in [RFC2961]. ๐Ÿงš
  • It MUST initiate all RSVP Refresh Overhead Reduction mechanisms as defined in [RFC2961] (including the SRefresh message), with the default behavior being to initiate the mechanisms. However, a configuration override should be offered. ๐Ÿ”ฅ
  • It MUST support reliable delivery of Path/Resv and the corresponding Tear/Err messages (as specified in Section 4 of [RFC2961]). ๐ŸŽ€
  • It MUST support retransmission of all unacknowledged RSVP-TE messages using exponential backoff (as specified in Section 6 of [RFC2961]). ๐Ÿฆ‹

2.2. Making Acknowledgements Mandatory ๐Ÿ“

The reliable message delivery mechanism in [RFC2961] says that "Nodes receiving a non-out of order [sic] message containing a MESSAGE_ID object with the ACK_Desired flag set, SHOULD respond with a MESSAGE_ID_ACK object." ๐Ÿ™ˆ

So in an implementation that supports the techniques in Sections 3 and 4, nodes receiving a non-out-of-order message containing a MESSAGE_ID object with the ACK_Desired flag set MUST respond with a MESSAGE_ID_ACK object ๐Ÿ’– This MESSAGE_ID_ACK object can be packed with other MESSAGE_ID_ACK or MESSAGE_ID_NACK objects and sent in an Ack message (or piggybacked in any other RSVP message) โœจ

This makes the system way more predictable when it comes to reliable message delivery ๐Ÿ”ฎ It's key for being able to take any action based on a non-receipt of an ACK ๐Ÿซถ

3. Refresh-Interval Independent RSVP (RI-RSVP) ๐Ÿฆ‹

Okay, the RSVP protocol relies on periodic refreshes for state synchronization between RSVP neighbors and for recovering from lost RSVP messages ๐Ÿ”„ It also relies on a refresh timeout for stale-state cleanup โฐ The main motivation behind Refresh-Interval Independent RSVP (RI-RSVP) is to completely eliminate RSVP's reliance on refreshes and refresh timeouts ๐Ÿ’… The plan is to just increase the refresh interval to a fairly large value ๐ŸŒ™ [RFC2961] and [RFC5439] talk about increasing the refresh interval to get linear improvement in transmission overhead, but they also point out how much functionality gets lost by doing that ๐Ÿ˜ฌ This section revisits the idea, and it also sets out extra requirements so there's no loss of functionality from a bigger refresh interval ๐Ÿ›ก๏ธ

An implementation that supports RI-RSVP:

  • MUST support all of the requirements specified in Section 2. ๐Ÿงฉ
  • MUST make the default value of the configurable refresh interval (R) be a large value (tens of minutes). A default value of 20 minutes is RECOMMENDED by this document. โณ
  • MUST use a separate shorter refresh interval for refreshing state associated with unacknowledged Path/Resv (uR) messages. A default value of 30 seconds is RECOMMENDED by this document. โšก
  • MUST implement coupling the state of individual LSPs with the state of the corresponding RSVP-TE signaling adjacency. When an RSVP-TE speaker detects RSVP-TE signaling adjacency failure, the speaker MUST act as if all the Path and Resv states learned via the failed signaling adjacency have timed out. ๐Ÿ”—
  • MUST make use of the Hello session based on the Node-ID ([RFC3209] [RFC4558]) for detection of RSVP-TE signaling adjacency failures. A default value of 9 seconds is RECOMMENDED by this document for the configurable node hello interval. This is as opposed to the default value of 5 milliseconds proposed in Section 5.3 of [RFC3209]. ๐Ÿ‘€
  • MUST indicate support for RI-RSVP via the CAPABILITY object [RFC5063] in Hello messages. ๐ŸŽ€

3.1. Capability Advertisement ๐Ÿ’œ

An implementation supporting the RI-RSVP technique MUST set a new flag, RI-RSVP Capable, in the CAPABILITY object signaled in Hello messages. The following bit indicates that the sender supports RI-RSVP:

      Bit Number 28 (0x0008) - RI-RSVP Capable (I-bit)

Any node that sets the new I-bit in its CAPABILITY object MUST also set the Refresh-Reduction-Capable bit [RFC2961] in the common header of all RSVP-TE messages. If a peer sets the I-bit in the CAPABILITY object but does not set the Refresh-Reduction-Capable bit, then the RI-RSVP functionality MUST NOT be activated for that peer. ๐Ÿšซ

3.2. Compatibility ๐ŸŒธ

The RI-RSVP functionality MUST NOT be activated with a peer that does not indicate support for this functionality. Inactivating the RI-RSVP functionality MUST result in the use of the traditional smaller refresh interval [RFC2205]. Bestie, the compatibility part is super important, so don't skip it ๐ŸŒˆ๐Ÿ’–

4. Per-Peer Flow Control ๐ŸŒธ

okay so this section is all about giving an RSVP speaker a way to hit pause on its peers when things get too chaotic ๐Ÿ›‘๐Ÿ’…. The whole point is to cut down a big chunk of the RSVP-TE control message load, so nobody's inbox gets flooded ๐Ÿ’Œ.

An implementation that supports Per-Peer Flow Control:

  • MUST support all of the requirements specified in Section 2. ๐Ÿ’–
  • MUST support RI-RSVP (Section 3). โœจ
  • MUST treat lack of ACKs from a peer as an indication of a peer's RSVP-TE control-plane congestion. If congestion is detected, the local system MUST throttle RSVP-TE messages to the affected peer. This MUST be done on a per-peer basis. (Per-peer throttling MAY be implemented by a traffic-shaping mechanism that proportionally reduces the RSVP-signaling packet rate as the number of outstanding ACKs increases. When the number of outstanding ACKs decreases, the send rate would be adjusted up again.) ๐Ÿซถ
  • SHOULD use a Retry Limit (Rl) value of 7 (Section 6.2 of [RFC2961] suggests using 3). ๐Ÿ”ฅ
  • SHOULD prioritize Hello messages and messages carrying Acknowledgements over other RSVP messages. ๐ŸŽ€
  • SHOULD prioritize Tear/Error over trigger Path/Resv (messages that bring up new LSP state) sent to a peer when the local system detects RSVP-TE control-plane congestion in the peer. ๐Ÿฆ‹
  • MUST indicate support for this technique via the CAPABILITY object [RFC5063] in Hello messages. ๐Ÿ“ฃ

4.1. Capability Advertisement

okay so if you're rocking the Per-Peer Flow-Control technique, you MUST set a brand new flag, Per-Peer Flow-Control Capable, in the CAPABILITY object you send in Hello messages ๐ŸŽŸ๏ธ. This is the bit that says "hey, I can do this" โœจ:

Bit Number 27 (0x0010) - Per-Peer Flow-Control Capable (F-bit)

Any node that sets the new F-bit in its CAPABILITY object MUST also set the Refresh-Reduction-Capable bit in the common header of all RSVP-TE messages. If a peer sets the F-bit in the CAPABILITY object but does not set the Refresh-Reduction-Capable bit, then the Per-Peer Flow-Control functionality MUST NOT be activated for that peer. ๐Ÿ™…โ€โ™€๏ธ no cap, the bits have to match or it's a no-go ๐Ÿ’€.

4.2. Compatibility

ngl this part is giving boundaries ๐Ÿšง. The Per-Peer Flow-Control functionality MUST NOT be activated with a peer that does not indicate support for this functionality. If a peer hasn't indicated that it is capable of participating in Per-Peer Flow Control, then it SHOULD NOT be assumed that the peer would always acknowledge a non-out-of-order message containing a MESSAGE_ID object with the ACK_Desired flag set. ๐Ÿ™ˆ Don't assume your bestie will always reply, periodt ๐Ÿ’….

5. IANA Considerations ๐Ÿ—‚๏ธ

5.1. Capability Object Values

IANA maintains the "Capability Object values" subregistry [RFC5063] within the "Resource Reservation Protocol (RSVP) Parameters" registry <http://www.iana.org/assignments/rsvp-parameters>. IANA has assigned two new Capability Object Value bit flags as follows: ๐Ÿงš

   Bit      Hex     Name                                Reference
   Number   Value
   ------------------------------------------------------------------
     28     0x0008  RI-RSVP Capable (I)                 Section 3
     27     0x0010  Per-Peer Flow-Control Capable (F)   Section 4

6. Security Considerations ๐Ÿ’€

okay the security part is serious bestie ๐Ÿ˜ญ. This document does not introduce new security issues. The security considerations pertaining to the original RSVP protocol [RFC2205] and RSVP-TE [RFC3209], and those that are described in [RFC5920], remain relevant. So all the old security stuff is still very much in play ๐Ÿ”โš ๏ธ.

7. References ๐Ÿ“š

7.1. Normative References

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC2205]  Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
           Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
           Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
           September 1997, <https://www.rfc-editor.org/info/rfc2205>.

[RFC2961]  Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F.,
           and S. Molendini, "RSVP Refresh Overhead Reduction
           Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001,
           <https://www.rfc-editor.org/info/rfc2961>.

[RFC3209]  Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
           and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
           Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
           <https://www.rfc-editor.org/info/rfc3209>.

[RFC4558]  Ali, Z., Rahman, R., Prairie, D., and D. Papadimitriou,
           "Node-ID Based Resource Reservation Protocol (RSVP) Hello:
           A Clarification Statement", RFC 4558,
           DOI 10.17487/RFC4558, June 2006,
           <https://www.rfc-editor.org/info/rfc4558>.

[RFC5063]  Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to
           GMPLS Resource Reservation Protocol (RSVP) Graceful
           Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007,
           <https://www.rfc-editor.org/info/rfc5063>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

7.2. Informative References

[RFC5439]  Yasukawa, S., Farrel, A., and O. Komolafe, "An Analysis of
           Scaling Issues in MPLS-TE Core Networks", RFC 5439,
           DOI 10.17487/RFC5439, February 2009,
           <https://www.rfc-editor.org/info/rfc5439>.

[RFC5920]  Fang, L., Ed., "Security Framework for MPLS and GMPLS
           Networks", RFC 5920, DOI 10.17487/RFC5920, July 2010,
           <https://www.rfc-editor.org/info/rfc5920>.

okay this appendix is the cute cheat sheet with all the recommended numbers ๐Ÿง.

  • a. Refresh Interval (R) - 20 minutes (Section 3): Since an implementation supporting RI-RSVP doesn't lean on refreshes to sync state between peers, the RSVP refresh interval works a lot like the IGP refresh interval (which is typically in the order of tens of minutes). Picking a default of 20 minutes lets the refresh timer be randomly set to a value in the range [10 minutes (0.5R), 30 minutes (1.5R)]. โฐ
  • b. Node Hello Interval - 9 seconds (Section 3): [RFC3209] defines the hello timeout as 3.5 times the hello interval. Choosing 9 seconds for the node hello interval gives a hello timeout of 3.5 * 9 = 31.5 seconds. That puts the hello timeout value in the vicinity of the IGP hello timeout value. ๐Ÿ‘‹
  • c. Retry-Limit (Rl) - 7 (Section 4): Choosing 7 as the retry-limit results in an overall rapid retransmit phase of 31.5 seconds. That matches up with the hello timeout of 31.5 seconds. ๐Ÿ”
  • d. Refresh Interval for refreshing state associated with unacknowledged Path/Resv messages (uR) - 30 seconds (Section 3): The recommended refresh interval (R) value of 20 minutes (for an implementation supporting RI-RSVP) cannot be used for refreshing state associated with unacknowledged Path/Resv messages. This document recommends the use of the traditional default refresh interval value of 30 seconds for uR. ๐ŸŒˆ

Acknowledgements ๐Ÿซถ

the authors gave a big shoutout to Yakov Rekhter for kicking this whole thing off and dropping valuable input ๐Ÿ‘‘. They also thanked Raveendra Torvi and Chandra Ramachandran for joining the many discussions that shaped the techniques in this document ๐Ÿ’ฌ. And a huge thank you to Adrian Farrel, Lou Berger, and Elwyn Davies for their detailed review comments and text suggestions ๐Ÿ“โœจ.

Contributors ๐Ÿ’œ

   Markus Jork
   Juniper Networks
   Email: mjork@juniper.net

   Ebben Aries
   Juniper Networks
   Email: exa@juniper.net

Authors' Addresses ๐Ÿฆ‹

   Vishnu Pavan Beeram (editor)
   Juniper Networks

   Email: vbeeram@juniper.net


   Ina Minei
   Google, Inc

   Email: inaminei@google.com


   Rob Shakir
   Google, Inc

   Email: rjs@rob.sh


   Dante Pacella
   Verizon

   Email: dante.j.pacella@verizon.com


   Tarek Saad
   Cisco Systems

   Email: tsaad@cisco.com
๐Ÿ“ฆ where this page comes from