RFC 5710 PROPOSED STANDARD MPLS · SIGNALING · TRAFFIC ENGINEERING

PathErr Message Triggered MPLS and GMPLS LSP Reroutes

How a router asks the routers upstream to steer an MPLS or GMPLS path around it, without tearing the path down first.

On rfc-editor.org ↗
PUBLISHED
January 2010
AUTHORS
L. Berger, D. Papadimitriou, JP. Vasseur
STREAM
IETF
NEW RSVP ERROR CODE
34 (Reroute)
GENERIC ERROR VALUE
0 (Generic LSP reroute request)
IETF CONSENSUS VALUE RANGE
0-32767
PRIVATE USE VALUE RANGE
32768-65535
APPLIES TO
Point-to-point LSPs
DOI
10.17487/RFC5710

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                         L. Berger
Request for Comments: 5710                                          LabN
Category: Standards Track                               D. Papadimitriou
ISSN: 2070-1721                                           Alcatel Lucent
                                                             JP. Vasseur
                                                                   Cisco
                                                            January 2010


         PathErr Message Triggered MPLS and GMPLS LSP Reroutes

Abstract

   This document describes how Resource ReserVation Protocol (RSVP)
   PathErr messages may be used to trigger rerouting of Multi-Protocol
   Label Switching (MPLS) and Generalized MPLS (GMPLS) point-to-point
   Traffic Engineering (TE) Label Switched Paths (LSPs) without first
   removing LSP state or resources.  Such LSP rerouting may be desirable
   in a number of cases, including, for example, soft-preemption and
   graceful shutdown.  This document describes the usage of existing
   Standards Track mechanisms to support LSP rerouting.  In this case,
   it relies on mechanisms already defined as part of RSVP-TE and simply
   describes a sequence of actions to be executed.  While existing
   protocol definitions can be used to support reroute applications,
   this document also defines a new reroute-specific error code to allow
   for the future definition of reroute-application-specific error
   values.

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

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc5710.

Copyright Notice

   Copyright (c) 2010 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) 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
      1.1. Conventions Used in This Document ..........................4
   2. Reroute Requests ................................................4
      2.1. Processing at Requesting Node ..............................4
           2.1.1. Reroute Request Timeouts ............................5
      2.2. Processing at Upstream Node ................................6
      2.3. Processing at Ingress ......................................6
   3. Example Reroute Requests ........................................7
      3.1. Node Reroute Request .......................................7
      3.2. Interface Reroute Request ..................................7
      3.3. Component Reroute Request ..................................8
      3.4. Label Reroute Request ......................................9
   4. IANA Considerations .............................................9
   5. Security Considerations ........................................10
   6. References .....................................................10
      6.1. Normative References ......................................10
      6.2. Informative References ....................................11
   7. Acknowledgments ................................................11

1.  Introduction

   The Resource ReserVation Protocol (RSVP), see [RFC2205], has been
   extended to support the control of Traffic Engineering (TE) Label
   Switched Paths (LSPs) for both Multi-Protocol Label Switching (MPLS)
   and Generalized MPLS (GMPLS) in, respectively, [RFC3209] and
   [RFC3473].  In all cases, a PathErr message is used to report errors
   to nodes upstream of the error-detecting node.  As defined in
   [RFC2205] and left unmodified by [RFC3209], PathErr messages "do not
   change path state in the nodes through which they pass".
   Notwithstanding this definition, PathErr messages are most commonly
   used to report errors during LSP establishment, i.e., the RSVP-TE
   processing that occurs prior to the ingress receiving a Resv message.
   (See [RFC5711] for a broader discussion on PathErr message handling.)
   Support for such usage was enhanced via the introduction of the
   Path_State_Removed flag in [RFC3473], which enables a processing node
   to free related LSP state and resources.  The usage of PathErr
   messages during LSP establishment was further covered in [RFC4920],
   which describes in detail how a node may indicate that it or one of
   its associated resources should be avoided, i.e., routed around,
   during LSP establishment.

   PathErr messages can also be used to support a number of other cases
   that can occur after an LSP is established.  This document focuses on
   the cases where PathErr messages can be used for a node to indicate
   that it desires an upstream node to reroute an LSP around the
   indicating node or resources associated with the indicating node.
   Some examples of such cases are soft-preemption and graceful shutdown
   (see [RFC5712] and [GRACEFUL]).

   This document uses the terminology "reroute request" to refer to the
   indication by a node that an upstream reroute should take place.
   This document describes how a node can initiate a reroute request
   without disrupting LSP data traffic or, when so desired, with the
   disruption of data traffic and removal of LSP-associated state and
   resources.  The applicability of this document is limited to point-
   to-point LSPs.  Support for point-to-multipoint LSPs are for further
   study.

   The mechanisms used to indicate reroute requests are derived from the
   mechanisms described in [RFC4920] and the error codes defined in
   [RFC4736].  This document describes (1) how a non-disruptive reroute
   request may be issued and, (2) based on an optional "timeout" period,
   how rerouting may be forced by removing LSP state and associated
   resources and signaling such removal.  While this document describes
   how existing protocol definitions can be used to support rerouting,
   it also defines a new reroute-specific error code to allow for the
   future definition of reroute-application-specific error values.

1.1.  Conventions Used in This Document

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

2.  Reroute Requests

   This section describes how a downstream node can indicate that it
   desires a node upstream (along the LSP path) to initiate the
   rerouting of an LSP, and how the upstream nodes can respond to such a
   request.  Initiating nodes, transit nodes, and ingress nodes are
   described separately.

2.1.  Processing at Requesting Node

   When a transit or egress node desires to request the rerouting of an
   established LSP, it first determines if it can act on the reroute
   request locally.  Such a check MUST be performed on the condition
   that the Explicit Route Object (ERO), see [RFC3209], received in the
   LSP's incoming Path message does not preclude LSP rerouting.
   Examples of requests that may trigger reroutes are avoiding an
   outgoing interface, a component, label resource, or a next hop not
   explicitly listed in the ERO.  In all cases, the actual repair action
   SHOULD be performed after verification that the local policy allows
   local repair for that LSP/state.  That is, any traffic-rerouting
   action (associated to this state) must be initiated and completed
   only as allowed by local node policy.

   When the node cannot act locally, it MUST issue a PathErr message
   indicating its inability to perform local rerouting.  The PathErr
   message MUST contain an ERROR_SPEC object of the format defined in
   [RFC2205] or [RFC3473].  Such a message MUST include one of the
   following combinations of error codes and error values:

      1. "Notify/Local node maintenance required" to support backwards
         compatibility and to reroute around the local node.

      2. "Notify/Local link maintenance required" to support backwards
         compatibility and to reroute around a local interface.

      3. "Reroute/<any Reroute error value>" for future compatibility
         and when backwards compatibility is not a concern.

   The rest of the ERROR_SPEC object is constructed based on the local
   rerouting decision and the resource that is to be avoided by an
   upstream node.  It is important to note that the address and TLVs
   carried by the ERROR_SPEC object identify the resource to be avoided
   and not the error code and value.

   When the reroute decision redirects traffic around the local node,
   the local node MUST be indicated in the ERROR_SPEC object.
   Otherwise, i.e., when the reroute decision does not redirect traffic
   around the local node, the impacted interface MUST be indicated in
   the ERROR_SPEC object and the IF_ID [RFC3473] ERROR_SPEC object
   formats SHOULD be used to indicate the impacted interface.

   The IF_ID [RFC3473] ERROR_SPEC object format MUST be used to indicate
   a reroute request that is more specific than an interface.  The TLVs
   defined in [RFC3471], as updated by [RFC3477], [RFC4201], and
   [RFC4920] MAY be used to provide specific, additional reroute request
   information, e.g., reroute around a specific label.  The principles
   related to ERROR_SPEC object construction, defined in Section 6.3.1
   of [RFC4920], SHOULD be followed.

2.1.1.  Reroute Request Timeouts

   Reroute request timeouts are used to remove an LSP when there is no
   response to a reroute request.  A reroute request timeout is used
   when an LSP is to be removed at the expiration of the reroute request
   timeout period.  When such LSP removal is desired, and after
   initiating a reroute request, the initiating node MUST initiate a
   timeout during which it expects to receive a response to the reroute
   request.  Valid responses are a PathTear message or a trigger Path
   message with an ERO, avoiding the resource that was indicated in the
   reroute request.  If either type of message is received, the timeout
   period MUST be canceled and no further action is needed.  Note,
   normal refresh processing is not modified by the introduction of
   reroute request timeouts.  Such processing may result in Path state
   being removed during the timeout period, in which case the timeout
   period MUST also be canceled.

   If the reroute request timeout is reached, the initiating node MUST
   remove the LSP and its associated state and resources.  Removal of
   LSP state is indicated downstream via a corresponding PathTear
   message.  Removal is indicated upstream via a PathErr message with
   the error code of "Service preempted".  The Path_State_Removed flag
   MUST be set if supported.  When the Path_State_Removed flag is not
   supported, a corresponding ResvTear MUST also be sent.

2.2.  Processing at Upstream Node

   When a transit node's policy permits it to support reroute request
   processing and local repair, the node MUST examine incoming PathErr
   messages to see it the node can perform a requested reroute.  A
   reroute request is indicated in a received PathErr message, which
   carries one of the error code and value combinations listed above in
   Section 2.1.  Note that a conformant implementation MUST check for
   any of the three combinations listed in Section 2.1.

   A transit node MAY act on a reroute request locally when the ERO
   received in the LSP's incoming Path message does not preclude the
   reroute.  As before, examples include loosely routed LSP next hops.
   When the reroute request can be processed locally, standard, local
   repair processing MUST be followed.  The node SHOULD limit the number
   of local repair attempts.  Again, the expected norm is for local
   repair, and thereby this case, to be precluded due to policy.

   When the transit node supports [RFC4920] and is a boundary node, and
   Boundary rerouting is allowed, it SHOULD use a route request as a
   trigger to reroute the LSP.  (Per [RFC4920], the Flags field of the
   LSP_ATTRIBUTES object of the initial Path message indicates "Boundary
   rerouting".)  In the case the node triggers rerouting, it first MUST
   identify an alternate path within the domain.  When such a path is
   available, the node MUST terminate the PathErr message and issue a
   Path message reflecting the identified alternate path.  Processing
   then continues per [RFC4920].  When an alternate path is not
   available, the node cannot act on the reroute request.

   When a transit node cannot act on a reroute request locally, per
   standard processing, it MUST propagate the received PathErr message
   to the previous hop.

2.3.  Processing at Ingress

   When reroute processing is supported, an ingress node MUST check
   received PathErr messages to identify them as indicating reroute
   requests.  A reroute request is indicated in a received PathErr
   message, which carries one of the error code and value combinations
   listed above in Section 2.1.  Note that a conformant implementation
   MUST check for any of the three combinations listed in Section 2.1.

   Upon receiving a reroute request, the ingress MUST attempt to
   identify an alternate path, avoiding the node, interface, resource,
   etc. identified within the ERROR_SPEC object.  When an alternate path
   cannot be identified, the reroute request MUST be discarded.  When an
   alternate path is identified, a corresponding make-before-break LSP
   SHOULD be initiated and standard make-before-break procedures MUST be
   followed.

3.  Example Reroute Requests

   This section provides example reroute requests.  This section is
   informative rather than prescriptive.  Reroute requests are always
   sent via PathErr messages.  As described above, a PathErr message may
   contain either an [RFC2205] format ERROR_SPEC object, or an IF_ID
   [RFC3473] format ERROR_SPEC object; it is the address and TLVs
   carried by the ERROR_SPEC object, and not the error value, that
   indicates the resource that is to be avoided by the reroute.

3.1.  Node Reroute Request

   To indicate that the node should be avoided by an upstream node, the
   node originating the reroute may format the ERROR_SPEC per [RFC2205],
   for example:

      o    IPv4 ERROR_SPEC object: Class = 6, C-Type = 1

      +-------------+-------------+-------------+-------------+
      |            IPv4 Error Node Address (4 bytes)          |
      +-------------+-------------+-------------+-------------+
      |    Flags    |  Error Code |        Error Value        |
      +-------------+-------------+-------------+-------------+

   The node address is set to the local node's TE router address.  Error
   code is set to either "Notify/Local node maintenance required" or
   "Reroute/<any Reroute error value>".

3.2.  Interface Reroute Request

   To indicate that a numbered interface should be avoided by an
   upstream node, the node originating the reroute may format the
   ERROR_SPEC per [RFC3473], for example:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num (6) | C-Type (3)    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     IPv4 Error Node Address                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Flags     |   Error Code  |          Error Value          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type (1)         |             Length (8)        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            IP Address                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The node address is set to the local node's TE router address.  Error
   code is set to either "Notify/Local link maintenance required" or
   "Reroute/<any Reroute error value>".  IP address is set to the TE
   address of the interface to be avoided.

3.3.  Component Reroute Request

   To indicate that an unnumbered component should be avoided by an
   upstream node, the node originating the reroute formats the
   ERROR_SPEC per [RFC4201], for example:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num (6) | C-Type (3)    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     IPv4 Error Node Address                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Flags     |   Error Code  |          Error Value          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type (3)         |             Length (12)       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           Router ID                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Interface ID (32 bits)                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The node address is set to the local TE address used in the
   advertisement of the bundle associated with the component.  Error
   code is set to either "Notify/Local link maintenance required" or
   "Reroute/<any Reroute error value>".  Router ID is set to the local
   router ID, and Interface ID is the identifier assigned to the
   component link by the local node.

3.4.  Label Reroute Request

   To indicate that a label should be avoided by an upstream node, the
   node originating the reroute may format the ERROR_SPEC per [RFC4920],
   for example:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             | Class-Num (6) | C-Type (3)    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     IPv4 Error Node Address                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Flags     |   Error Code  |          Error Value          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type (1)         |             Length (8)        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            IP Address                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type (6)         |             Length (8)        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         DOWNSTREAM_LABEL                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   The node address is set to the local node's TE router address.  Error
   code is set to either "Notify/Local link maintenance required" or
   "Reroute/<any Reroute error value>".  IP address is set to the TE
   address of the interface that supports the label to be avoided.
   DOWNSTREAM_LABEL indicates the label to be avoided.

4.  IANA Considerations

   IANA assigned values for namespaces defined in this document and
   reviewed in this section.

   IANA made the assignment in the "Error Codes and Globally-Defined
   Error Value Sub-Codes" section of the "RSVP Parameters" registry:

         34  Reroute                                [RFC5710]

      This error code has the following defined Error Value sub-code:

            0 = Generic LSP reroute request

      Reroute error values should be allocated based on the following
      allocation policy as defined in [RFC5226].

            Range         Registration Procedures
            --------      ------------------------
            0-32767       IETF Consensus
            32768-65535   Private Use

5.  Security Considerations

   Sections 9 of [RFC4920] and [RFC4736] should be used as the starting
   point for reviewing the security considerations related to the
   formats and mechanisms discussed in this document.  This document
   introduces a new error code, but this code is functionally equivalent
   to existing semantics, in particular, the error code/error value
   combinations of "Notify/Local node maintenance required" and
   "Notify/Local link maintenance required".  As such, this document
   introduces no new security considerations beyond what already applies
   to these existing formats and mechanisms.  Future documents may
   define new error values; any considerations specific to those values
   should be discussed in the document defining them.
6.  References

6.1.  Normative References

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

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

   [RFC3209]    Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan,
                V., and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
                Tunnels", RFC 3209, December 2001.

   [RFC3471]    Berger, L., Ed., "Generalized Multi-Protocol Label
                Switching (GMPLS) Signaling Functional Description", RFC
                3471, January 2003.

   [RFC3473]    Berger, L., Ed., "Generalized Multi-Protocol Label
                Switching (GMPLS) Signaling Resource ReserVation
                Protocol-Traffic Engineering (RSVP-TE) Extensions", RFC
                3473, January 2003.

   [RFC3477]    Kompella, K. and Y. Rekhter, "Signalling Unnumbered
                Links in Resource ReSerVation Protocol - Traffic
                Engineering (RSVP-TE)", RFC 3477, January 2003.

   [RFC4201]    Kompella, K., Rekhter, Y., and L. Berger, "Link Bundling
                in MPLS Traffic Engineering (TE)", RFC 4201, October
                2005.

   [RFC4920]    Farrel, A., Ed., Satyanarayana, A., Iwata, A., Fujita,
                N., and G. Ash, "Crankback Signaling Extensions for MPLS
                and GMPLS RSVP-TE", RFC 4920, July 2007.

   [RFC5226]    Narten, T. and H. Alvestrand, "Guidelines for Writing an
                IANA Considerations Section in RFCs", BCP 26, RFC 5226,
                May 2008.

6.2.  Informative References

   [RFC4736]    Vasseur, JP., Ed., Ikejiri, Y., and R. Zhang,
                "Reoptimization of Multiprotocol Label Switching (MPLS)
                Traffic Engineering (TE) Loosely Routed Label Switched
                Path (LSP)", RFC 4736, November 2006.

   [GRACEFUL]   Ali, Z., Vasseur, JP., Zamfir, A., and J. Newton,
                "Graceful Shutdown in MPLS and Generalized MPLS Traffic
                Engineering Networks", Work in Progress, September 2009.

   [RFC5711]    Vasseur, JP., Ed., Swallow, G., and I. Minei, "Node
                Behavior upon Originating and Receiving Resource
                Reservation Protocol (RSVP) Path Error Messages", RFC
                5711, January 2010.

   [RFC5712]    Meyer, M., Ed. and JP. Vasseur, Ed., "MPLS Traffic
                Engineering Soft Preemption", RFC 5712, January 2010.

7.  Acknowledgments

   This document was conceived along with Matthew Meyer.  George Swallow
   provided valuable feedback.  The General Area Review Team (Gen-ART)
   review was performed by Francis Dupont.

Authors' Addresses

   Lou Berger
   LabN Consulting, L.L.C.
   Phone: +1-301-468-9228
   EMail: lberger@labn.net


   Dimitri Papadimitriou
   Alcatel Lucent
   Francis Wellesplein 1,
   B-2018 Antwerpen, Belgium
   Phone: +32 3 240-8491
   EMail: Dimitri.Papadimitriou@alcatel-lucent.be


   JP Vasseur
   Cisco Systems, Inc
   11, Rue Camille Desmoulins
   L'Atlantis
   92782 Issy Les Moulineaux
   France
   EMail: jpv@cisco.com

AI ELI5

On this page
PROBLEMA node on an established MPLS or GMPLS path sometimes needs traffic moved away from itself or one of its resources, for example for soft-preemption or graceful shutdown, but the path should not be torn down first.
MECHANISMThe node sends an RSVP PathErr message upstream with a reroute error code. The ingress finds an alternate path and sets it up make-before-break. An optional timeout forces removal if nobody reacts.
WHY IT MATTERSThe document reuses existing RSVP-TE mechanisms and adds one new error code, Reroute (34), for future reroute-specific error values. It applies to point-to-point LSPs only.

§1Why Reroute Requests Are Needed

RSVP, extended for traffic engineering by RFC 3209 (MPLS) and RFC 3473 (GMPLS), controls Label Switched Paths (LSPs). A PathErr message reports errors to nodes upstream of the node that detected the problem. Under RFC 2205, PathErr messages do not change path state in the nodes they pass through.

PathErr is mostly used while an LSP is being set up. This document covers a use after the LSP exists: a node tells an upstream node that it wants the LSP rerouted around the node itself or around resources tied to it. Soft-preemption (RFC 5712) and graceful shutdown are given as examples. The document calls such an indication a reroute request.

A reroute request can be issued without disrupting data traffic. When desired, a timeout can instead force removal of the LSP state and resources. Only point-to-point LSPs are covered; point-to-multipoint is left for further study.

Sometimes a stop on a bus route needs to be skipped. The stop sends a message back along the route asking the bus company to pick a different way, without cancelling the bus.

§2How a Reroute Request Is Signaled

The request travels from a downstream node (a transit or egress node) toward the ingress. It is carried in a PathErr message whose ERROR_SPEC object holds an error code and error value. The RFC says that the address and TLVs in the ERROR_SPEC identify the resource to avoid, not the error code and value.

A node that cannot act on the request itself MUST send a PathErr with one of three combinations:

  • Notify / Local node maintenance required, for backwards compatibility, to reroute around the local node.
  • Notify / Local link maintenance required, for backwards compatibility, to reroute around a local interface.
  • Reroute / any Reroute error value, for future compatibility when backwards compatibility is not a concern.

Everything else is handled with mechanisms from RFC 4920 (crankback) and RFC 4736 (reoptimization). The document only describes a sequence of actions using them.

The note uses one of three standard phrases. The address written on the note tells everyone which place to avoid, not the phrase itself.

§2.1What the Requesting Node Does

The node first checks whether it can act locally. The check MUST respect the Explicit Route Object (ERO) from the incoming Path message, which may rule out local rerouting. Any local repair SHOULD be done only if local policy allows it for that LSP.

If it cannot, it sends the PathErr described above. When rerouting around the local node, the local node MUST be named in the ERROR_SPEC. Otherwise the affected interface MUST be named, and the IF_ID ERROR_SPEC format SHOULD be used. A request more specific than an interface MUST use the IF_ID format, and TLVs may name a specific item such as a label.

Timeouts. If the node wants the LSP gone when nobody responds, it MUST start a reroute request timeout after sending. A PathTear, or a trigger Path message with an ERO avoiding the resource, cancels the timeout. So does normal refresh processing removing the Path state. If the timeout expires, the node MUST remove the LSP and its state and resources. It signals this downstream with PathTear and upstream with a PathErr carrying Service preempted, with the Path_State_Removed flag set if supported. Without that flag, it MUST also send a ResvTear.

The sender first checks whether it can fix things itself. If not, it sends the note and starts a timer. If nobody changes the route before the timer rings, it closes the road for good.

§2.2Upstream Nodes and the Ingress

A transit node whose policy supports reroute handling MUST examine incoming PathErr messages and MUST check for all three code combinations. It MAY act locally if the ERO does not preclude it, such as for loosely routed next hops, and SHOULD limit local repair attempts. The RFC expects policy to usually rule local repair out.

If the transit node supports RFC 4920, is a boundary node and boundary rerouting is allowed, it SHOULD use the request as a trigger. It MUST first find an alternate path within the domain, then terminate the PathErr and issue a new Path message. If it cannot act, it MUST propagate the PathErr to the previous hop.

The ingress MUST check received PathErr messages for reroute requests and MUST try to find an alternate path avoiding the named node, interface or resource. If none exists, the request MUST be discarded. If one exists, a make-before-break LSP SHOULD be initiated and standard make-before-break procedures MUST be followed.

Each stop along the way either fixes the route itself or passes the note back. The starting point builds a new route first, and only then drops the old one.

REROUTE REQUEST FLOW, SIMPLIFIED (ILLUSTRATIVE, NOT FROM THE RFC)
Requesting nodeTransit nodeIngress
  1. PathErr (reroute request)ERROR_SPEC names the resource to avoid.
  2. PathErr (propagated)Sent on when the transit node cannot act locally.
  3. Make-before-break PathA new path avoiding the resource is set up.

§3Example ERROR_SPEC Formats

This section is informative. A reroute request is always a PathErr, carrying either an RFC 2205 or an IF_ID (RFC 3473) ERROR_SPEC. Four examples show how to name what should be avoided.

  • Node: an IPv4 ERROR_SPEC (Class 6, C-Type 1) with the node address set to the local TE router address, and the error code Notify/Local node maintenance required or Reroute.
  • Interface: an IF_ID ERROR_SPEC (C-Type 3) with a TLV of Type 1 carrying the TE address of the interface to avoid.
  • Component: for an unnumbered component, per RFC 4201, a TLV of Type 3 carrying the router ID and the Interface ID assigned by the local node.
  • Label: per RFC 4920, the interface TLV (Type 1) plus a Type 6 TLV holding the DOWNSTREAM_LABEL to avoid.

The note can say avoid this whole stop, avoid this one door, avoid this one lane inside it, or avoid this one ticket number.

INTERFACE REROUTE REQUEST ERROR_SPEC (RFC 5710, SECTION 3.2)
IF_ID ERROR_SPEC for an interface
FieldNameSizeValueDescription
LENGTHLength2 bytesLength of the object.
CLASS-NUMClass-Num1 byte6ERROR_SPEC class.
C-TYPEC-Type1 byte3IF_ID format.
NODE-ADDRESSIPv4 Error Node Address4 bytesThe local node's TE router address.
FLAGSFlags1 byteERROR_SPEC flags.
ERROR-CODEError Code1 byteNotify (link maintenance) or Reroute.
ERROR-VALUEError Value2 bytesValue paired with the error code.
TLV-TYPEType2 bytes1TLV type.
TLV-LENGTHLength2 bytes8TLV length.
IP-ADDRESSIP Address4 bytesTE address of the interface to avoid.

§4The New Reroute Error Code

IANA assigned error code 34, named Reroute, in the RSVP Parameters registry. One error value is defined: 0, Generic LSP reroute request. Further values are allocated by IETF Consensus in the range 0 to 32767, and 32768 to 65535 is Private Use.

The document asks for one new official label, number 34, so future special reasons for rerouting can be added under it.

§5Security Considerations

The text points to Section 9 of RFC 4920 and to RFC 4736 as the starting point. It says the new error code is functionally equivalent to the existing Notify local node and local link maintenance combinations. The document therefore introduces no new security considerations beyond those formats and mechanisms. Future documents defining new error values should discuss considerations specific to them.

Because the new label means the same as ones already in use, it does not open any new doors for trouble.

§8References