TEAS Working Group
Internet Engineering Task Force (IETF)                    V. Beeram, Ed.
Internet-Draft
Request for Comments: 8370                              Juniper Networks
Intended status:
Category: Standards Track                                       I. Minei
Expires: August 18, 2018
ISSN: 2070-1721                                                R. Shakir
                                                             Google, Inc
                                                              D. Pacella
                                                                 Verizon
                                                                 T. Saad
                                                           Cisco Systems
                                                       February 14,
                                                                May 2018

      Techniques to Improve the Scalability of RSVP Traffic Engineering RSVP-TE Deployments
                 draft-ietf-teas-rsvp-te-scaling-rec-09

Abstract

   At the time of writing, networks which

   Networks that utilize RSVP Traffic
   Engineering (RSVP-TE) Label Switched Paths (LSPs) RSVP-TE LSPs are encountering
   limitations in the ability of implementations
   that have a limited ability to support the growth in the number of
   LSPs deployed.

   This document defines two techniques, "Refresh-Interval Refresh-Interval Independent
   RSVP (RI-RSVP)" (RI-RSVP) and "Per-Peer Flow-Control", Per-Peer Flow Control, that reduce the number of
   processing cycles required to maintain RSVP-TE LSP state in Label
   Switching Routers (LSRs) and hence allow implementations to support
   larger scale deployments.

Requirements Language

   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.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list  It represents the consensus of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid the IETF community.  It has
   received public review and has been approved for a maximum publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of six months this document, any errata,
   and how to provide feedback on it may be updated, replaced, or obsoleted by other documents obtained at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on August 18, 2018.
   https://www.rfc-editor.org/info/rfc8370.

Copyright Notice

   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
   (http://trustee.ietf.org/license-info)
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as 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
   2.  Requirement for RFC2961  Required Support for RFC 2961 . . . . . . . . . . . . . . . .   3
     2.1.  Required Functionality from RFC2961 to be Implemented RFC 2961  . .   4 . . . . . . . .   3
     2.2.  Making Acknowledgements Mandatory . . . . . . . . . . . .   4
   3.  Refresh-Interval Independent RSVP (RI-RSVP) . . . . . . . . .   4
     3.1.  Capability Advertisement  . . . . . . . . . . . . . . . .   5
     3.2.  Compatibility . . . . . . . . . . . . . . . . . . . . . .   6   5
   4.  Per-Peer RSVP Flow-Control Flow Control . . . . . . . . . . . . . . . . . . . .   6
     4.1.  Capability Advertisement  . . . . . . . . . . . . . . . .   7   6
     4.2.  Compatibility . . . . . . . . . . . . . . . . . . . . . .   7
   5.  Acknowledgements  .  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   6.  Contributors
     5.1.  Capability Object Values  . . . . . . . . . . . . . . . .   7
   6.  Security Considerations . . . . . . . .   7
   7.  IANA Considerations . . . . . . . . . . .   7
   7.  References  . . . . . . . . . .   8
     7.1.  Capability Object Values . . . . . . . . . . . . . . .   7
     7.1.  Normative References  .   8
   8.  Security Considerations . . . . . . . . . . . . . . . . .   7
     7.2.  Informative References  . .   8
   9.  References . . . . . . . . . . . . . . .   8
   Appendix A.  Recommended Defaults . . . . . . . . . .   8
     9.1.  Normative References . . . . . .   8
   Acknowledgements  . . . . . . . . . . . .   8
     9.2.  Informative References . . . . . . . . . . . .   9
   Contributors  . . . . . . . . . .   9
   Appendix A.  Recommended Defaults . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10   9

1.  Introduction

   At the time of writing, networks which

   Networks that utilize RSVP Traffic
   Engineering (RSVP-TE) RSVP-TE [RFC3209] Label Switched Paths (LSPs) LSPs are encountering limitations in the ability of
   implementations that have a limited ability to support the growth in
   the number of LSPs deployed.

   The set of RSVP Refresh Overhead Reduction procedures [RFC2961]
   serves as a powerful toolkit for RSVP-TE implementations to help
   cover a majority of the concerns about soft-state scaling.  However,
   even with these tools in the toolkit, analysis of existing
   implementations [RFC5439] indicates that the processing required
   beyond a certain scale may still cause significant disruption to a
   Label Switching Router (LSR).

   This document builds on the existing scaling work and analysis that has been
   done so far and
   defines protocol extensions to help RSVP-TE deployments push the
   envelope further on scaling by increasing the threshold above which
   an LSR struggles to achieve sufficient processing to maintain LSP
   state.

   This document defines two techniques, "Refresh-Interval Refresh-Interval Independent
   RSVP (RI-RSVP)" (RI-RSVP) and "Per-Peer Flow-Control", Per-Peer Flow Control, that cut down the number of
   processing cycles required to maintain LSP state.  "RI-RSVP"  RI-RSVP helps
   completely eliminate RSVP's reliance on refreshes and refresh-
   timeouts refresh
   timeouts, while "Per-Peer Flow-Control" Per-Peer Flow Control enables a busy RSVP speaker to
   apply back pressure to its peer(s).  This document defines a unique
   RSVP Capability [RFC5063] for each technique (Support (support for the
   CAPABILITY object is a prerequisite for implementing these
   techniques).  Note that the "Per-Peer Flow-Control" Per-Peer Flow-Control technique requires
   the "RI-RSVP" RI-RSVP technique as a prerequisite.  In order to reap maximum
   scaling benefits, it is strongly recommended that implementations
   support both the techniques and have them enabled by default.  Both the
   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.  Requirement for RFC2961  Required Support for RFC 2961

   The techniques defined in Section Sections 3 and Section 4 are based on proposals
   made in [RFC2961].  Implementations of these techniques
   will 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 RFC2961 to be Implemented RFC 2961

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

   o  It MUST indicate support for RSVP Refresh Overhead Reduction
      extensions (as specified in Section 2 of [RFC2961]).

   o  It MUST support receipt of any RSVP Refresh Overhead Reduction
      message as defined in [RFC2961].

   o  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 but offering mechanisms; however, a
      configuration override. override should be offered.

   o  It MUST support reliable delivery of Path/Resv and the
      corresponding Tear/Err messages (as specified in Section 4 of
      [RFC2961]).

   o  It MUST support retransmission of all unacknowledged RSVP-TE
      messages using exponential-backoff exponential backoff (as specified in Section 6 of
      [RFC2961]).

2.2.  Making Acknowledgements Mandatory

   The reliable message delivery mechanism specified in [RFC2961] states
   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."

   In an implementation that supports the techniques discussed in
   Section
   Sections 3 and Section 4, nodes receiving a non-out of order non-out-of-order message
   containing a MESSAGE_ID object with the ACK-Desired ACK_Desired flag set, set MUST
   respond with a MESSAGE_ID_ACK object.  This MESSAGE_ID_ACK object can
   be packed along with other MESSAGE_ID_ACK or MESSAGE_ID_NACK objects and
   sent in an Ack message (or piggy-backed piggybacked in any other RSVP message).
   This improvement to the predictability of the system in terms of
   reliable message delivery is key for being able to take any action
   based on a non-receipt of an ACK.

3.  Refresh-Interval Independent RSVP (RI-RSVP)

   The RSVP protocol relies on periodic refreshes for state
   synchronization between RSVP neighbors and for recovery from lost RSVP
   messages.  It relies on a refresh timeout for stale state stale-state cleanup.
   The primary motivation behind introducing the notion of "Refresh Refresh-
   Interval Independent RSVP" RSVP (RI-RSVP) is to completely eliminate RSVP's
   reliance on refreshes and refresh timeouts.  This is done by simply
   increasing the refresh interval to a fairly large value.  [RFC2961]
   and [RFC5439] do talk about increasing the value of the refresh interval
   to provide linear improvement of transmission overhead, but they also
   point out the degree of functionality that is lost by doing so.  This
   section revisits this notion, but also sets out additional
   requirements to make sure that there is no loss of functionality
   incurred by increasing the value of the refresh interval.

   An implementation that supports RI-RSVP:

   o  MUST support all of the requirements specified in Section 2.

   o  MUST make the default value of the configurable refresh interval
      (R) be a large value (10s (tens of minutes).  A default value of 20
      minutes is RECOMMENDED by this document.

   o  MUST use a separate shorter refresh interval for refreshing state
      associated with unacknowledged Path/Resv messages (uR). (uR) messages.  A default
      value of 30 seconds is RECOMMENDED by this document.

   o  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 learnt learned via
      the failed signaling adjacency have timed out.

   o  MUST make use of Node-ID based the Hello Session ([RFC3209], session based on the Node-ID ([RFC3209]
      [RFC4558]) for detection of RSVP-TE signaling adjacency failures; failures.
      A default value of 9 seconds is RECOMMENDED by this document for
      the configurable node hello interval (as opposed to the 5ms default
      value of 5 milliseconds proposed in Section 5.3 of [RFC3209]).

   o  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"
   flag, RI-RSVP Capable, in the CAPABILITY object signaled in Hello
   messages.  The following bit indicates that the sender supports
   RI-RSVP:

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

   Indicates that the sender supports RI-RSVP. (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.  Inactivation of the RI-
   RSVP functionality MUST result in the use of the traditional smaller
   refresh interval [RFC2205].

4.  Per-Peer RSVP Flow-Control Flow Control

   The functionality discussed in this section provides an RSVP speaker
   with the ability to apply back pressure to its peer(s) to reduce/
   eliminate a significant portion of the RSVP-TE control message load.

   An implementation that supports "Per-Peer RSVP Flow-Control": Per-Peer Flow Control:

   o  MUST support all of the requirements specified in Section 2.

   o  MUST support "RI-RSVP" RI-RSVP (Section 3).

   o  MUST treat lack of ACKs from a peer as an indication of a peer's
      RSVP-TE control plane 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 traffic-shaping mechanism that proportionally
      reduces the RSVP signaling RSVP-signaling packet rate as the number of
      outstanding Acks ACKs increases.  And when  When the number of outstanding
      Acks ACKs
      decreases, the send rate would be adjusted up again.)

   o  SHOULD use a Retry Limit (Rl) value of 7 (Section 6.2 of
      [RFC2961], [RFC2961]
      suggests using 3).

   o  SHOULD prioritize Hello messages and messages carrying
      Acknowledgements over other RSVP messages.

   o  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 control-plane congestion in the peer.

   o  MUST indicate support for this technique via the CAPABILITY object
      [RFC5063] in Hello messages.

4.1.  Capability Advertisement

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

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

   Indicates that the sender supports Per-Peer RSVP Flow-Control. (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
   Flow-Control functionality MUST NOT be activated for that peer.

4.2.  Compatibility

   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", Per-Peer
   Flow Control, then it SHOULD NOT be assumed that the peer would
   always acknowledge a non-out of order non-out-of-order message containing a MESSAGE_ID
   object with the ACK-Desired ACK_Desired flag set.

5.  Acknowledgements

   The authors would like to thank Yakov Rekhter for initiating this
   work and providing valuable inputs.  They would like to thank
   Raveendra Torvi and Chandra Ramachandran for participating in the
   many discussions that led to the techniques discussed in this
   document.  They would also like to thank Adrian Farrel, Lou Berger
   and Elwyn Davies for providing detailed review comments and text
   suggestions.

6.  Contributors

   Markus Jork
   Juniper Networks
   Email: mjork@juniper.net

   Ebben Aries
   Juniper Networks
   Email: exa@juniper.net

7.  IANA Considerations

7.1.

5.1.  Capability Object Values

   IANA maintains all the registries associated with "Capability Object values" subregistry [RFC5063]
   within the "Resource Reservation Protocol (RSVP) Paramaters" (see
   http://www.iana.org/assignments/rsvp-parameters/rsvp-
   parameters.xhtml).  "Capability Object Values" Registry (introduced
   by [RFC5063]) is one of them. Parameters" registry
   <http://www.iana.org/assignments/rsvp-parameters>.  IANA is requested to assign has assigned
   two new Capability Object Value bit flags as follows:

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

8.

6.  Security Considerations

   This document does not introduce new security issues.  The security
   considerations pertaining to the original RSVP protocol [RFC2205] and
   RSVP-TE [RFC3209] [RFC3209], and those that are described in [RFC5920] [RFC5920], remain
   relevant.

9.

7.  References

9.1.

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>.
              <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>.
              <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>.

9.2.

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>.
              <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>.

Appendix A.  Recommended Defaults

      (a) Refresh-Interval (R)-

   a.  Refresh Interval (R) - 20 minutes (Section 3):
       Given that an implementation supporting RI-RSVP doesn't rely on
       refreshes for state sync between peers, the function of the RSVP
       refresh interval is analogous to that of IGP refresh interval
       (the default of which is typically in the order of 10s tens of
       minutes).  Choosing a default of 20 minutes allows the refresh
       timer to be randomly set to a value in the range [10 minutes
       (0.5R), 30 minutes (1.5R)].

      (b)

   b.  Node Hello-Interval Hello Interval - 9 Seconds seconds (Section 3):

       [RFC3209] defines the hello timeout as 3.5 times the hello
       interval.  Choosing 9 seconds for the node hello-interval hello interval gives a
       hello timeout of 3.5*9 3.5 * 9 = 31.5 seconds.  This puts the hello
       timeout value in the vicinity of the IGP hello timeout value.

      (c)

   c.  Retry-Limit (Rl) - 7 (Section 4):
       Choosing 7 as the retry-limit results in an overall rapid
       retransmit phase of 31.5 seconds.  This matches up with the 31.5
      seconds hello timeout.

      (d) Refresh-Interval
       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) can not 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 would like to thank Yakov Rekhter for initiating this
   work and providing valuable input.  They would like to thank
   Raveendra Torvi and Chandra Ramachandran for participating in the
   many discussions that led to the techniques discussed in this
   document.  They would also like to thank Adrian Farrel, Lou Berger,
   and Elwyn Davies for providing 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