RFC 8424

Extensions to RSVP-TE for Label Switched Path (LSP) Ingress Fast Reroute (FRR) Protection

๐Ÿ“… published August 2018, from ietf

RFC 8424 ๐ŸŽ€ Extensions to RSVP-TE for Label Switched Path (LSP) Ingress Fast Reroute (FRR) Protection

Okay bestie, the title block first! ๐Ÿ’– This is an Experimental doc ๐Ÿงช, published in August 2018 under the IETF (Internet Engineering Task Force) and ISSN 2070-1721. The editors are H. Chen, Ed. from Huawei Technologies ๐Ÿ‡จ๐Ÿ‡ณ and R. Torvi, Ed. from Juniper Networks ๐ŸŒ. The title block doesn't list any RFCs that it obsoletes or updates, so nothing gets replaced or patched by this one ๐Ÿซถ.

Abstract โœจ

Okay so this doc is about teaching RSVP-TE (Resource Reservation Protocol - Traffic Engineering) how to protect the ingress node of a Point-to-Point (P2P) or Point-to-Multipoint (P2MP) Traffic Engineered (TE) Label Switched Path (LSP) ๐Ÿฆ‹. Transit nodes already get Fast Reroute (FRR) protection, and this extends that same protection to the ingress node of the LSP ๐Ÿ’…. The procedures in here are experimental ๐Ÿงช.


Status of This Memo ๐Ÿ“œ

This document is not an Internet Standards Track spec ๐Ÿ™…โ€โ™€๏ธ. It's shared so people can examine it, try out experimental implementations, and evaluate it ๐Ÿ”.

This document defines an Experimental Protocol for the Internet community ๐ŸŒˆ. It's a product of the IETF and represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every document the IESG approves is a candidate for any level of Internet Standard, so see Section 2 of RFC 7841 ๐Ÿ’….

For info about the current status, any errata, and how to give feedback, check https://www.rfc-editor.org/info/rfc8424 ๐Ÿ”—.


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. Please read those carefully, bestie, because they describe your rights and restrictions with respect to this document ๐Ÿ“‘.


Table of Contents ๐Ÿ—‚๏ธ

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
  1.1.  Ingress Local Protection Example  . . . . . . . . . . . .   5
  1.2.  Ingress Local Protection Overview . . . . . . . . . . . .   6
2.  Conventions Used in This Document . . . . . . . . . . . . . .   7
3.  Ingress Failure Detection . . . . . . . . . . . . . . . . . .   7
  3.1.  Source Detects Failure  . . . . . . . . . . . . . . . . .   7
  3.2.  Backup and Source Detect Failure  . . . . . . . . . . . .   8
4.  Backup Forwarding State . . . . . . . . . . . . . . . . . . .   9
  4.1.  Forwarding State for Backup LSP . . . . . . . . . . . . .   9
5.  Protocol Extensions . . . . . . . . . . . . . . . . . . . . .   9
  5.1.  INGRESS_PROTECTION Object . . . . . . . . . . . . . . . .  10
    5.1.1.  Class Number and Class Type . . . . . . . . . . . . .  10
    5.1.2.  Object Format . . . . . . . . . . . . . . . . . . . .  11
    5.1.3.  Subobject: Backup Ingress IPv4 Address  . . . . . . .  12
    5.1.4.  Subobject: Backup Ingress IPv6 Address  . . . . . . .  13
    5.1.5.  Subobject: Ingress IPv4 Address . . . . . . . . . . .  13
    5.1.6.  Subobject: Ingress IPv6 Address . . . . . . . . . . .  13
    5.1.7.  Subobject: TRAFFIC_DESCRIPTOR . . . . . . . . . . . .  14
    5.1.8.  Subobject: Label-Routes . . . . . . . . . . . . . . .  15
6.  Behavior of Ingress Protection  . . . . . . . . . . . . . . .  15
  6.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  15
    6.1.1.  Relay-Message Method  . . . . . . . . . . . . . . . .  15
    6.1.2.  Proxy-Ingress Method  . . . . . . . . . . . . . . . .  16
  6.2.  Ingress Behavior  . . . . . . . . . . . . . . . . . . . .  17
    6.2.1.  Relay-Message Method  . . . . . . . . . . . . . . . .  17
    6.2.2.  Proxy-Ingress Method  . . . . . . . . . . . . . . . .  18
  6.3.  Backup Ingress Behavior . . . . . . . . . . . . . . . . .  19
    6.3.1.  Backup Ingress Behavior in the Off-Path Case  . . . .  20
    6.3.2.  Backup Ingress Behavior in the On-Path Case . . . . .  22
    6.3.3.  Failure Detection and Refresh PATH Messages . . . . .  23
  6.4.  Revertive Behavior  . . . . . . . . . . . . . . . . . . .  23
    6.4.1.  Revert to Primary Ingress . . . . . . . . . . . . . .  24
    6.4.2.  Global Repair by Backup Ingress . . . . . . . . . . .  24
7.  Security Considerations . . . . . . . . . . . . . . . . . . .  24
8.  Compatibility . . . . . . . . . . . . . . . . . . . . . . . .  24
9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  25
10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  25
  10.1.  Normative References . . . . . . . . . . . . . . . . . .  25
  10.2.  Informative References . . . . . . . . . . . . . . . . .  26
Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  26
Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  26
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  28

1. Introduction โœจ

Okay so for an MPLS Traffic Engineered (TE) Label Switched Path (LSP), protecting its transit nodes from failure with Fast Reroute (FRR) is already covered: [RFC4090] handles Point-to-Point (P2P) LSPs and [RFC4875] handles Point-to-Multipoint (P2MP) LSPs ๐ŸŒธ. But protecting the ingress node from failure with FRR? Not covered in either one ๐Ÿ™ˆ. The MPLS Transport Profile (MPLS-TP) Linear Protection from [RFC6378] can protect against the failure of any transit node between the ingress and egress nodes of an LSP, but it can't protect against the ingress node failing ๐Ÿ’€.

Here's the existing workaround. To protect against the failure of the (primary) ingress node of a primary end-to-end P2MP (or P2P) TE LSP, the typical fix is to set up a secondary backup end-to-end P2MP (or P2P) TE LSP ๐Ÿ”. The backup LSP runs from a backup ingress node to backup egress nodes (or node). The backup ingress node is different from the primary ingress node. The backup egress nodes (or node) are (or is) different from the primary egress nodes (or node) of the primary LSP ๐Ÿ‘ฏ.

For a P2MP TE LSP, on each of the primary (and backup) egress nodes, a P2P LSP gets created from that egress node to its primary (backup) ingress node, and it's configured with Bidirectional Forwarding Detection (BFD) ๐Ÿ›ฐ๏ธ. This is used to detect when the primary (backup) ingress node fails, so the receiver can switch to the backup (or primary) egress node and keep receiving traffic after the primary (or backup) ingress node fails, when both the primary LSP and the secondary LSP carry the traffic. On top of that, FRR may be used to protect against failures of the transit nodes and links of the primary and secondary end-to-end TE LSPs ๐Ÿ›ก๏ธ.

Here's the tea, there are a few issues with this solution:

  • It eats up lots of network resources ๐Ÿ’ธ. Double states need to be maintained in the network since two end-to-end TE LSPs are created. Double link bandwidth is reserved and used when both the primary and the secondary end-to-end TE LSPs carry traffic at the same time.
  • More operations are needed ๐Ÿงฐ, including configuring two end-to-end TE LSPs and BFDs from each of the egress nodes to its corresponding ingress node.
  • Detecting ingress node failure may not be reliable ๐Ÿ˜ต. Any failure on the path of the BFD from an egress node to an ingress node may cause the BFD to indicate that the ingress node has failed.
  • The speed of protection against ingress node failure may be slow ๐Ÿข.

This specification defines a simple extension to RSVP-TE for local protection (FRR) of the ingress node of a P2MP or P2P LSP to resolve these issues ๐Ÿ‘‘. Ingress local protection and ingress FRR protection will be used interchangeably โœจ.

Heads up, bestie: this doc is an Experimental RFC ๐Ÿงช, so it's still a work in progress.

Two different approaches are proposed to transfer the information for ingress protection ๐Ÿ”€. They both use the same new INGRESS_PROTECTION object, which is sent in both PATH and RESV messages between a primary ingress and a backup ingress ๐Ÿ“จ. One approach is the Relay-Message Method (refer to Sections 6.1.1 and 6.2.1), and the other is the Proxy-Ingress Method (refer to Sections 6.1.2 and 6.2.2). Each one has advantages and disadvantages. It's hard to decide which one should be the standard approach right now ๐Ÿคทโ€โ™€๏ธ. The experiment on ingress local protection with these two approaches is expected to provide quantities that help choose one. The quantities include numbers on control traffic, states, codes, and operations ๐Ÿ“Š. After one approach is selected, the document will be revised to reflect that selection and any other items learned from the experiment. The revised document is expected to be submitted for publication on the standards track ๐Ÿ†.

1.1. Ingress Local Protection Example ๐Ÿ—บ๏ธ

Figure 1 shows an example of using a backup P2MP LSP to locally protect the ingress of a primary P2MP LSP, which goes from ingress Ia to three egresses: L1, L2, and L3. The backup LSP goes from backup ingress Ib to the next hops of ingress Ia: R2 and R4 ๐ŸŽฏ.

                  *******  *******              S Source
               [R2]-----[R3]-----[L1]          Ix Ingress
              */ &                             Rx Transit
             */  &                             Lx Egress
            */   &                            *** Primary LSP
           */    &                            &&& Backup LSP across
          */     &                                Logical Hop
         */      &
        */ ********    ********  *******
 [S]---[Ia]--------[R4]------[R5]-----[L2]
   \      |     &    &           *\
    \     |    &    &             *\
     \    |   &    &               *\
      \   |  &    &                 *\
       \  | &    &                   *\
        \ |&    &                     *\
         [Ib]&&&                       [L3]

                Figure 1: Ingress Local Protection

In normal operations, source S sends the traffic to primary ingress Ia, and Ia imports the traffic into the primary LSP ๐ŸŒŠ.

When source S detects the failure of Ia, it switches the traffic to backup ingress Ib ๐Ÿ”„. Ib imports the traffic from S into the backup LSP to Ia's next hops, R2 and R4, where the traffic is merged into the primary LSP and then sent on to egresses L1, L2, and L3 ๐Ÿ’–.

Note that the backup ingress is one logical hop away from the ingress ๐Ÿฆ‹. A logical hop is a direct link or a tunnel (such as a GRE tunnel) over which RSVP-TE messages may be exchanged ๐Ÿ’œ.

1.2. Ingress Local Protection Overview ๐ŸŽ€

Okay so ingress local protection has four parts โœจ:

  • setting up the necessary backup LSP forwarding state based on the information received for ingress local protection;
  • detecting the primary ingress failure and providing the fast repair (as discussed in Sections 3 and 4);
  • maintaining the RSVP-TE control-plane state until a global repair is done; and,
  • performing the global repair (see Section 6.4.2).

The primary ingress of a primary LSP sends the backup ingress the info for ingress protection in a PATH message with a new INGRESS_PROTECTION object ๐Ÿ“จ. Then the backup ingress sets up the backup LSP(s) and forwarding state once it has everything it needs. After that, it sends the primary ingress the status of ingress protection in a RESV message, which also carries a new INGRESS_PROTECTION object ๐Ÿฆ‹.

When the primary ingress fails, the backup ingress sends or refreshes the PATH messages to the next hops of the primary ingress after it verifies the failure. These PATH messages do not include any INGRESS_PROTECTION object ๐Ÿ™ˆ. This is the part that keeps the RSVP-TE control-plane state of the primary LSP alive ๐Ÿ’œ.

2. Conventions Used in This Document ๐Ÿ“š

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 ๐Ÿ’….

3. Ingress Failure Detection ๐Ÿ”

Exactly how to detect the failure of the ingress is out of scope, so this document doesn't pin it down ๐Ÿ™ƒ. It's still important to talk about the different modes for detecting the failure, though, because those modes decide what the source and the backup ingress are required to do.

3.1. Source Detects Failure

Source Detects Failure, or Source-Detect for short ๐ŸŒธ, means that the source is responsible for "fast detecting" the failure of the primary ingress of an LSP. Fast detecting means spotting the failure in a few or tens of milliseconds โšก. The backup ingress is ready to import the traffic from the source into the backup LSP(s) once the backup LSP(s) is up.

In normal operations, the source sends the traffic to the primary ingress. When the source detects the failure of the primary ingress, it switches the traffic to the backup ingress. The backup ingress then delivers the traffic to the next hops of the primary ingress through the backup LSP(s), and the traffic gets merged into the primary LSP ๐Ÿฆ‹.

For an LSP, after the primary ingress fails, the backup ingress MUST use a method to verify the failure of the primary ingress before the PATH message for the LSP expires at the next hop of the primary ingress. This is a hard deadline, bestie โฐ. After verifying the failure, the backup ingress sends/refreshes the PATH message to the next hop through the backup LSP as needed. The method may verify the failure of the primary ingress slowly, such as in seconds ๐Ÿข.

After the primary ingress fails, it won't be reachable once routing converges. So checking whether the primary ingress (address) is reachable is a possible method ๐Ÿง .

When the previously failed primary ingress of a primary LSP becomes available again, and the primary LSP has recovered from its primary ingress, the source may switch the traffic back to the primary ingress from the backup ingress ๐Ÿ”„. An operator may control that traffic switch by using a command on the source node after seeing that the primary LSP has recovered ๐ŸŽ›๏ธ.

3.2. Backup and Source Detect Failure

Backup and Source Detect Failure, or Backup-Source-Detect for short ๐Ÿ‘ฏ, means that both the backup ingress and the source are concurrently responsible for fast detecting the failure of the primary ingress.

Here's the big difference between Source-Detect and Backup-Source-Detect ๐Ÿ‘€. In the former, the backup ingress verifies the failure of the primary ingress slowly, such as in seconds. In the latter, the backup ingress detects the failure fast, such as in a few or tens of milliseconds โšก.

In normal operations, the source sends the traffic to the primary ingress. It switches the traffic to the backup ingress when it detects the failure of the primary ingress ๐Ÿ”€.

The backup ingress does not import any traffic from the source into the backup LSP in normal operations ๐Ÿ™…. When it detects the failure of the primary ingress, it imports the traffic from the source into the backup LSP to the next hops of the primary ingress. The traffic is then merged into the primary LSP ๐Ÿ’–.

The Source-Detect is preferred ๐Ÿ†. It's simpler than the Backup-Source-Detect, which needs both the source and the backup ingress to detect the ingress failure quickly ๐Ÿ˜ฎโ€๐Ÿ’จ.

4. Backup Forwarding State ๐Ÿงฉ

Before the primary ingress fails, the backup ingress is responsible for creating the necessary backup LSPs ๐Ÿ› ๏ธ. These might be multiple bypass P2P LSPs that avoid the ingress. Alternately, the backup ingress could choose to use a single backup P2MP LSP as a bypass or detour to protect the primary ingress of a primary P2MP LSP ๐ŸŒˆ.

The backup ingress may be "off path" or "on path" of an LSP. If a backup ingress isn't any node of the LSP, it's off path. If a backup ingress is a next hop of the primary ingress of the LSP, it's on path ๐Ÿ—บ๏ธ. When a backup ingress for protecting the primary ingress is configured, the backup ingress MUST not be on the LSP except for if it is the next hop of the primary ingress. If it is on path, the primary forwarding state associated with the primary LSP SHOULD be clearly separated from the backup LSP(s) state ๐Ÿงผ.

4.1. Forwarding State for Backup LSP

A forwarding entry for a backup LSP is created on the backup ingress after the LSP is set up. Depending on the failure-detection mode (e.g., Source-Detect), it may be used to forward received traffic, or it may simply be inactive (e.g., Backup-Source-Detect) until it's required ๐Ÿ’ค. Either way, when the primary ingress fails, this entry is used to import the traffic into the backup LSP to the next hops of the primary ingress, and the traffic is merged into the primary LSP ๐ŸŽฏ.

The forwarding entry for a backup LSP is a local implementation issue ๐Ÿ . On one device, it may have an inactive flag. This inactive forwarding entry is not used to forward any traffic normally. When the primary ingress fails, the flag changes to active, and the traffic from the source gets imported into the backup LSP โœ….

5. Protocol Extensions ๐Ÿ”Œ

A new object, INGRESS_PROTECTION, is defined for signaling ingress local protection ๐Ÿ“ฃ. The primary ingress of a primary LSP sends this object to the backup ingress in a PATH message. In this case, the object contains the information needed to set up ingress protection. That information includes:

  • the Backup Ingress IP Address, which indicates the backup ingress;
  • the TRAFFIC_DESCRIPTOR, which describes the traffic that the primary LSP transports (this traffic is imported into the backup LSP(s) on the backup ingress when the primary ingress fails) ๐Ÿšฆ;
  • the Labels and Routes, which indicate the first hops of the primary LSP, each of which is paired with its label ๐Ÿท๏ธ; and,
  • the Desire options on ingress protection, such as a P2MP option, which indicates a desire to use a backup P2MP LSP to protect the primary ingress of a primary P2MP LSP ๐Ÿ™‹โ€โ™€๏ธ.

The backup ingress sends this object to the primary ingress in a RESV message. In this case, the object contains the information about the status of the ingress protection ๐Ÿ“ฌ.

5.1. INGRESS_PROTECTION Object ๐Ÿ’œ

5.1.1. Class Number and Class Type ๐Ÿ”ข

The Class Number for the INGRESS_PROTECTION object MUST be of the form 0bbbbbbb. That lets implementations that don't recognize the object reject the entire message and return an "Unknown Object Class" error [RFC2205] ๐Ÿ™…โ€โ™€๏ธ. It is suggested that a Class Number value from the Private Use range (124-127) [RFC3936] be chosen for the 0bbbbbbb octet for this experiment. It is also suggested that a Class Type value of 1 be used for this object in this experiment ๐Ÿงช.

The INGRESS_PROTECTION object together with the FAST_REROUTE object in a PATH message is used to control the backup for protecting the primary ingress of a primary LSP ๐ŸŽ€. The primary ingress MUST insert this object into the PATH message that gets sent to the backup ingress for protecting the primary ingress ๐Ÿซถ.

5.1.2. Object Format โœจ

okay so the INGRESS_PROTECTION object has this layout, and the bits are lowkey everything ๐Ÿ’…

      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 (bytes)        |    Class-Num  |    C-Type     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Reserved (zero)  |   NUB   |      Flags    |    Options    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                         (Subobjects)                          ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's the vibe for when you're protecting the ingress of a P2MP LSP ๐Ÿฆ‹ If the backup ingress doesn't have a backup LSP to every single next hop of the primary ingress, it SHOULD clear Ingress local protection available and set the Number of Unprotected Branches (NUB) to the number of next hops with no backup LSP. Bestie, that's the honest status check ๐Ÿซถ

The flags are how the backup ingress spills the tea about its status to the primary ingress ๐Ÿ“

        Flags
         0x01    Ingress local protection available
         0x02    Ingress local protection in use
         0x04    Bandwidth protection

        Options
         0x01    Revert to Ingress
         0x02    P2MP Backup
  • Ingress local protection available: The backup ingress MUST set this flag once its backup LSPs are up and ready to locally protect the primary ingress. It sends this to the primary ingress so everyone knows the primary ingress is covered ๐Ÿ’–
  • Ingress local protection in use: The backup ingress MUST set this flag when it detects a failure in the primary ingress and actively redirects traffic into the backup LSPs ๐Ÿšจ It records this flag and does not send any RESV messages carrying it back to the primary ingress, because the primary ingress is down. Iconic, but also sad ๐Ÿ˜ญ
  • Bandwidth protection: The backup ingress MUST set this flag if the backup LSPs guarantee the desired bandwidth for the protected LSP when the primary ingress fails. Guaranteed vibes only โœจ

The options are the primary ingress's way of telling the backup ingress what it wants ๐Ÿ‘‘

  • Revert to Ingress: The primary ingress sets this option. It means that if the primary LSP gets successfully resignaled, its traffic gets switched back from the backup ingress to the primary ingress once the primary ingress is restored. Main character comeback ๐ŸŒˆ
  • P2MP Backup: This option asks the backup ingress to use a backup P2MP LSP to protect the primary ingress ๐Ÿงš

The INGRESS_PROTECTION object may contain some subobjects with the following format:

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |            Length             |Reserved (zero)|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Contents / Body of Subobject               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Where Type is the type of the subobject, and Length is its total size in bytes, counting the Type, Length, and Contents fields โœจ

5.1.3. Subobject: Backup Ingress IPv4 Address ๐ŸŽ€

When the primary ingress of a protected LSP sends a PATH message with an INGRESS_PROTECTION object to the backup ingress, the object MUST have a Backup Ingress IPv4 Address subobject containing an IPv4 address that belongs to the backup ingress, if IPv4 is used. The Type of this subobject is 1, and the body looks like this:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              Backup Ingress IPv4 Address (4 bytes)            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Backup Ingress IPv4 Address: An IPv4 host address of backup ingress

5.1.4. Subobject: Backup Ingress IPv6 Address ๐Ÿฆ‹

When the primary ingress of a protected LSP sends a PATH message with an INGRESS_PROTECTION object to the backup ingress, the object MUST have a Backup Ingress IPv6 Address subobject containing an IPv6 address that belongs to the backup ingress, if IPv6 is used. The Type of this subobject is 2, and the body looks like this:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Backup Ingress IPv6 Address (16 bytes)            |
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Backup Ingress IPv6 Address: An IPv6 host address of backup ingress

5.1.5. Subobject: Ingress IPv4 Address ๐ŸŒธ

The INGRESS_PROTECTION object may have an Ingress IPv4 Address subobject containing an IPv4 address that belongs to the primary ingress, if IPv4 is used. The Type of this subobject is 3. It has the following body:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Ingress IPv4 Address (4 bytes)                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ingress IPv4 Address: An IPv4 host address of ingress

5.1.6. Subobject: Ingress IPv6 Address ๐Ÿงš

The INGRESS_PROTECTION object may have an Ingress IPv6 Address subobject containing an IPv6 address that belongs to the primary ingress, if IPv6 is used. The Type of this subobject is 4. It has the following body:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Ingress IPv6 Address (16 bytes)                 |
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ingress IPv6 Address: An IPv6 host address of ingress

5.1.7. Subobject: TRAFFIC_DESCRIPTOR ๐Ÿ’œ

The INGRESS_PROTECTION object may have a TRAFFIC_DESCRIPTOR subobject that describes the traffic to be mapped onto the backup LSP on the backup ingress, so it can locally protect the primary ingress. The subobject types for Interface, IPv4 Prefix, IPv6 Prefix, and Application Identifier are 5, 6, 7, and 8, respectively. It has the following body:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Traffic Element 1                      |
   ~                                                               ~
   |                        Traffic Element n                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

A TRAFFIC_DESCRIPTOR subobject may contain multiple Traffic Elements, all of the same type, as follows:

  • Interface Traffic: Each Traffic Element is a 32-bit index of an interface from which the traffic is imported into the backup LSP ๐Ÿ”ฅ
  • IPv4 Prefix Traffic: Each Traffic Element is an IPv4 prefix. It contains an 8-bit prefix length, followed by an IPv4 address prefix (whose length, in bits, is given by the prefix length) that is padded to a byte boundary ๐ŸŒˆ
  • IPv6 Prefix Traffic: Each Traffic Element is an IPv6 prefix. It contains an 8-bit prefix length, followed by an IPv6 address prefix (whose length, in bits, is given by the prefix length) that is padded to a byte boundary ๐Ÿ’ซ
  • Application Traffic: Each Traffic Element is a 32-bit identifier of an application from which the traffic is imported into the backup LSP ๐Ÿ“

5.1.8. Subobject: Label-Routes ๐ŸŒธ

The INGRESS_PROTECTION object in a PATH message from the primary ingress to the backup ingress may have a Label-Routes subobject containing the labels and routes that the next hops of the ingress use. The Type of this subobject is 9. It has the following body:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                           Subobjects                          ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Subobjects in Label-Routes are copied from the RECORD_ROUTE objects in the RESV messages that the primary ingress receives from its next hops for the primary LSP. They MUST contain the first hops of the LSP, and each one is paired with its label ๐ŸŽ€


6. Behavior of Ingress Protection ๐Ÿ‘‘

6.1. Overview ๐ŸŒˆ

There are two different proposed signaling approaches for transferring the information needed for ingress protection. Both use the same new INGRESS_PROTECTION object, and the object is sent in both PATH and RESV messages ๐Ÿ’–

6.1.1. Relay-Message Method ๐Ÿฆ‹

The primary ingress relays the information for ingress protection of an LSP to the backup ingress via PATH messages. Once the LSP is created, the ingress of the LSP sends the backup ingress a PATH message with an INGRESS_PROTECTION object that has a Label-Routes subobject, populated with the next hops and labels. This gives the backup ingress enough information to create the appropriate forwarding state and backup LSP(s) โœจ

The ingress also sends the backup ingress all the other PATH messages for the LSP, each with an empty INGRESS_PROTECTION object. An INGRESS_PROTECTION object without any TRAFFIC_DESCRIPTOR subobject is called an empty INGRESS_PROTECTION object. So the backup ingress has access to all the PATH messages it needs to modify and refresh the control-plane state after a failure ๐Ÿซถ

The empty INGRESS_PROTECTION object is there for efficient ingress protection of a P2MP LSP. A P2MP LSP's primary ingress may have more than one PATH message, each sent to a next hop along a branch of the P2MP LSP. The PATH message along one branch is selected and sent to the backup ingress with an INGRESS_PROTECTION object that contains the TRAFFIC_DESCRIPTOR subobject. All the PATH messages along the other branches are sent to the backup ingress with an INGRESS_PROTECTION object that does not have any TRAFFIC_DESCRIPTOR subobject (an empty INGRESS_PROTECTION object). For a P2MP LSP, the backup ingress only needs one TRAFFIC_DESCRIPTOR ๐Ÿงš

6.1.2. Proxy-Ingress Method ๐Ÿงš

Okay so picture this: a proxy ingress gets created ๐Ÿ’… and it's the one that kicks off the RSVP signaling. The explicit path of the LSP goes from the proxy ingress to the backup ingress and then to the real ingress. The proxy ingress's behavior and signaling is handled by the real ingress ๐Ÿซถ, and using a proxy-ingress address keeps loop detection from getting confused ๐Ÿ™ˆ. Note that the proxy ingress MUST reside within the same router as the real ingress. Non-negotiable, bestie ๐Ÿ’€

                              [ Traffic Source ]       *** Primary LSP
                               $             $         --- Backup LSP
                               $             $          $$  Link
                               $             $
                       [ Proxy Ingress ]  [ Backup ]
                       [ & Ingress     ]     |
                              *              |
                              *****[ MP ]----|

Figure 2: Example of a Protected LSP with a Proxy-Ingress Node

The backup ingress MUST know the merge points or next hops and their associated labels. ๐Ÿฆ‹ This happens because the RSVP PATH and RESV messages go through the backup ingress, even though the forwarding path doesn't have to go through it. If the backup ingress fails, the ingress simply removes the INGRESS_PROTECTION object and forwards the PATH messages to the LSP's next hop(s). If the ingress has its LSP configured for ingress protection, then it can add the backup ingress and itself to the Explicit Route Object (ERO) and start forwarding the PATH messages to the backup ingress. โœจ

Slightly different behavior can apply for the on-path and off-path cases. In the on-path case, the backup ingress is a next-hop node after the ingress for the LSP. In the off-path case, the backup ingress is not any next-hop node after the ingress for all associated sub-LSPs. ๐ŸŒธ

The key advantage of this approach is that it minimizes the special handling code required. ๐Ÿ‘‘ Because the backup ingress is on the signaling path, it can receive various notifications. It easily has access to all the PATH messages needed for a modification to be sent to refresh the control-plane state after a failure. Main character energy, literally ๐Ÿ˜ญ๐Ÿ”ฅ


6.2. Ingress Behavior ๐Ÿ’–

The primary ingress MUST be configured with a couple of pieces of information for ingress protection. Here's the checklist ๐Ÿ“

  • Backup Ingress Address: The primary ingress MUST know the IP address of the backup ingress it wants to be used before it can use the INGRESS_PROTECTION object.
  • Proxy-Ingress-Id (only needed for Proxy-Ingress Method): The Proxy-Ingress-Id is only used in the RECORD_ROUTE object for recording the proxy ingress. If no Proxy-Ingress-Id is specified, then a local interface address that will not otherwise be included in the RECORD_ROUTE object can be used. A similar technique is used in Section 6.1.1. of [RFC4090]. ๐ŸŽ€
  • Application Traffic Identifier: The primary ingress and backup ingress MUST both know what application traffic should be directed into the LSP. If a list of prefixes in the TRAFFIC_DESCRIPTOR subobject will not suffice, then a commonly understood Application Traffic Identifier can be sent between the primary ingress and backup ingress. The exact meaning of the identifier should be configured similarly at both the primary ingress and backup ingress. The Application Traffic Identifier is understood within the unique context of the primary ingress and backup ingress. ๐Ÿงš
  • A Connection between Backup Ingress and Primary Ingress: If there is not any direct link between the primary ingress and the backup ingress, a tunnel MUST be configured between them. ๐ŸŒˆ

With this additional information, the primary ingress can create and signal the necessary RSVP extensions to support ingress protection. Iconic โœจ


6.2.1. Relay-Message Method ๐Ÿฆ‹

To protect the primary ingress of an LSP, the primary ingress MUST do the following after the LSP is up. Okay, here's the play-by-play ๐Ÿ‘€

  1. Select a PATH message P0 for the LSP.
  2. If the backup ingress is off path (the backup ingress is not the next hop of the primary ingress for P0), then send it a PATH message P0' with the content from P0 and an INGRESS_PROTECTION object; else (the backup ingress is a next hop, i.e., on-path case) add an INGRESS_PROTECTION object into the existing PATH message to the backup ingress (i.e., the next hop). The object contains the TRAFFIC_DESCRIPTOR subobject, the Backup Ingress Address subobject and the Label-Routes subobject. The options field is set to indicate whether a backup P2MP LSP is desired. The Label-Routes subobject contains the next hops of the primary ingress and their labels. Note that for the on-path case, there is an existing PATH message to the backup ingress (i.e., the next hop), and we just add an INGRESS_PROTECTION object into the existing PATH message to be sent to the backup ingress. We do not send a separate PATH message to the backup ingress for this existing PATH message. ๐Ÿ’…
  3. For each Pi of the other PATH messages for the LSP, send the backup ingress a PATH message Pi' with the content copied from Pi and an empty INGRESS_PROTECTION object. ๐Ÿซถ

For every PATH message Pj' (i.e., P0'/Pi') to be sent to the backup ingress, it has the same SESSION as Pj (i.e., P0/Pi). If the backup ingress is off path, the primary ingress updates Pj' according to the backup ingress as its next hop before sending it. It adds the backup ingress to the beginning of the ERO and sets RSVP_HOP based on the interface to the backup ingress. > The primary ingress MUST NOT set up any forwarding state to the backup ingress if the backup ingress is off path. Hard rule, no exceptions ๐Ÿšซ๐Ÿ’œ


6.2.2. Proxy-Ingress Method ๐ŸŒธ

The primary ingress is responsible for starting the RSVP signaling for the proxy-ingress node. To do this, the following MUST be done for the RSVP PATH message. Here's the steps ๐Ÿ“

  1. Compute the EROs for the LSP as normal for the ingress.
  2. If the selected backup ingress node is not the first node on the path (for all sub-LSPs), then insert it at the beginning of the ERO first, then the backup ingress node, and then the ingress node.
  3. In the PATH RECORD_ROUTE Object (RRO), instead of recording the ingress node's address, replace it with the Proxy-Ingress-Id.
  4. Leave the hop (HOP) object populated as usual with information for the ingress node.
  5. Add the INGRESS_PROTECTION object to the PATH message. Include the Backup Ingress Address (IPv4 or IPv6) subobject and the TRAFFIC_DESCRIPTOR subobject. Set or clear the options indicating that a backup P2MP LSP is desired.
  6. Optionally, add the FAST-REROUTE object [RFC4090] to the Path message. Indicate whether one-to-one backup is desired. Indicate whether facility backup is desired.
  7. The RSVP PATH message is sent to the backup node as normal.

If the ingress detects that it can't communicate with the backup ingress, then the ingress SHOULD instead send the PATH message to the next hop indicated in the ERO computed in step 1. Once the ingress detects that it can communicate with the backup ingress, the ingress SHOULD follow steps 1-7 to obtain ingress failure protection. ๐Ÿ”„

When the ingress node receives an RSVP PATH message with an INGRESS_PROTECTION object and the object specifies that node as the ingress node and the Previous Hop (PHOP) as the backup ingress node, the ingress node SHOULD remove the INGRESS_PROTECTION object from the PATH message before sending it out. Additionally, the ingress node MUST store that it will install ingress forwarding state for the LSP rather than midpoint forwarding. ๐Ÿง 

When an RSVP RESV message is received by the ingress, it uses the Next Hop (NHOP) to determine whether the message is received from the backup ingress or from a different node. The stored associated PATH message contains an INGRESS_PROTECTION object that identifies the backup ingress node. If the RESV message is not from the backup node, then the ingress forwarding state SHOULD be set up, and the INGRESS_PROTECTION object MUST be added to the RESV before it is sent to the NHOP, which SHOULD be the backup node. If the RESV message is from the backup node, then the LSP SHOULD be considered available for use. ๐ŸŽ‰

If the backup ingress node is on the forwarding path, then a RESV is received with an INGRESS_PROTECTION object and an NHOP that matches the backup ingress. In this case, the ingress node's address will not appear after the backup ingress in the RRO. The ingress node SHOULD set up the ingress forwarding state, just as is done if the ingress node of the LSP weren't protected. ๐ŸŒท


6.3. Backup Ingress Behavior ๐Ÿฆ‹

A Label Edge Router (LER) determines that the ingress local protection is requested for an LSP if the INGRESS_PROTECTION object is included in the PATH message it receives for the LSP. The LER can further determine that it is the backup ingress if one of its addresses is in the Backup Ingress Address subobject of the INGRESS_PROTECTION object. The LER as the backup ingress will assume full responsibility of the ingress after the primary ingress fails. ๐Ÿซก In addition, the LER determines that it is off path if it is not any node of the LSP. The LER determines whether it uses the Relay-Message Method or the Proxy-Ingress Method according to configurations. โญ

6.3.1. Backup Ingress Behavior in the Off-Path Case

okay so the backup ingress thinks of itself as a Point of Local Repair (PLR) ๐Ÿ’– and sees the primary ingress as its next hop ๐ŸŽ€. It gives the primary ingress local protection ๐Ÿ›ก๏ธ, kind of like a PLR doing fast reroute, except the primary ingress is the failure point being protected โœจ. Wherever nothing else is specified, the behavior in [RFC4090] for a PLR applies ๐Ÿ’….

The backup ingress MUST follow the control options in the INGRESS_PROTECTION object, and the flags and specifications in the FAST-REROUTE object ๐Ÿซถ. That covers a P2MP backup if "P2MP backup" is set, a one-to-one backup if "one-to-one desired" is set, a facility backup if "facility backup desired" is set, and backup paths that support both the desired bandwidth and the requested administrative groups ๐Ÿ”ฅ.

If multiple non-empty INGRESS_PROTECTION objects came in through multiple PATH messages for the same LSP, then the most recent one MUST be the one used ๐Ÿ™ˆ.

The backup ingress creates the right forwarding state for the backup LSP tunnel(s) to the merge point(s) ๐Ÿงš.

When the backup ingress sends a RESV message to the primary ingress, it MUST add an INGRESS_PROTECTION object to the message ๐Ÿ’œ. It MUST set or clear the flags in that object to report "Ingress local protection available", "Ingress local protection in use", and "bandwidth protection" ๐ŸŒˆ.

If the backup ingress doesn't have a backup LSP tunnel to each of the merge points, it SHOULD clear "Ingress local protection available" and set NUB to the number of merge points with no backup LSP ๐Ÿ˜ญ.

When the primary ingress fails, the backup ingress redirects traffic from a source into the backup P2P LSPs or the backup P2MP LSP. That traffic goes to the next hops of the primary ingress, where it merges into the protected LSP ๐Ÿฆ‹.

In this case, the backup ingress MUST keep the PATH message with the INGRESS_PROTECTION object it received from the primary ingress, and the RESV message with the INGRESS_PROTECTION object that's going to the primary ingress ๐Ÿ“ฆ. The backup ingress MUST set the "local protection in use" flag in the RESV message. That flag says the backup ingress is actively redirecting traffic into the backup P2P LSPs or the backup P2MP LSP to locally protect against the primary ingress failure ๐Ÿ’€.

Note that the RESV message with this info won't be sent to the primary ingress, because the primary ingress has failed ๐Ÿ˜ญ.

If the backup ingress hasn't received any PATH messages from the primary ingress for an extended period of time (e.g., a cleanup timeout interval) and no confirmed primary ingress failure happened, then the standard RSVP soft-state removal SHOULD occur ๐Ÿงน. The backup ingress SHALL remove the state for the PATH message from the primary ingress. It also either tears down the one-to-one backup LSPs protecting the primary ingress (if one-to-one backup is used) or unbinds the facility backup LSPs (if facility backup is used) โœจ.

When the backup ingress receives a PATH message from the primary ingress for locally protecting the primary ingress of a protected LSP, it MUST check whether any critical information has changed ๐Ÿ‘€. If the next hops of the primary ingress have changed, the backup ingress SHALL update its backup LSP(s) accordingly ๐Ÿ”.

6.3.1.1. Relay-Message Method

When the backup ingress receives a PATH message with a non-empty INGRESS_PROTECTION object, it examines the object to learn what traffic is associated with the LSP ๐Ÿ”. It works out which next hops to merge to by examining the Label-Routes subobject in the object ๐Ÿ—บ๏ธ.

The backup ingress MUST store the PATH message received from the primary ingress but NOT forward it ๐Ÿคซ.

The backup ingress responds with a RESV message to the PATH message it received from the primary ingress. If the backup ingress is off path, the LABEL object in the RESV message contains IMPLICIT-NULL ๐Ÿท๏ธ. If the INGRESS_PROTECTION object is not "empty", the backup ingress SHALL send the RESV message with the state indicating protection is available, but only after the backup LSP(s) are successfully established ๐ŸŽ‰.

6.3.1.2. Proxy-Ingress Method

When a RESV message for an LSP arrives from a router that is not the primary ingress, the backup ingress collects the pair of (IPv4/IPv6 subobject, Label subobject) in the second place from the top of the RECORD_ROUTE object in the message ๐Ÿ“š. It determines the next hops to be merged according to the set of pairs it collected. If a Label-Routes subobject is included in the INGRESS_PROTECTION object, the included IPv4/IPv6 subobjects are used to filter the set down to the specific next hops where protection is desired ๐ŸŽฏ. An RESV message MUST have been received before the backup ingress can create or select the appropriate backup LSP โณ.

When the backup ingress receives a PATH message with the INGRESS_PROTECTION object, it examines the object to learn what traffic is associated with the LSP ๐Ÿ‘€. Then it forwards the PATH message to the ingress node with the normal RSVP changes ๐Ÿ“จ.

When the backup ingress receives a RESV message with the INGRESS_PROTECTION object, it records an IMPLICIT-NULL label in the RRO ๐Ÿท๏ธ. After that, it forwards the RESV message to the ingress node, which is acting for the proxy ingress ๐Ÿช„.

6.3.2. Backup Ingress Behavior in the On-Path Case

An LER acting as the backup ingress determines that it is on path if one of its addresses is a next hop of the primary ingress. For the Proxy-Ingress Method, the primary ingress is determined to not be its next hop, by checking the PATH message with the INGRESS_PROTECTION object received from the primary ingress ๐Ÿ”Ž. The LER on path MUST send the corresponding PATH messages without any INGRESS_PROTECTION object to its next hops ๐Ÿ“ค. It creates a number of backup P2P LSPs, or a backup P2MP LSP, from itself to the other next hops (the next hops other than the backup ingress) of the primary ingress. Those other next hops come from the Label-Routes subobject ๐Ÿงต.

It also creates a forwarding entry that sends or multicasts the traffic from the source to the next hops of the backup ingress along the protected LSP when the primary ingress fails. The traffic is described by the TRAFFIC_DESCRIPTOR ๐ŸŽฏ.

After setting up all the backup P2P LSPs or the backup P2MP LSP, the backup ingress creates forwarding entries for importing traffic into the backup LSP(s) from the source when the primary ingress fails ๐Ÿงฉ. Then it MUST send the primary ingress a RESV message with an INGRESS_PROTECTION object. That object contains the state of the local protection, such as the "local protection available" flag set to one, which shows the primary ingress is locally protected ๐Ÿ›ก๏ธโœจ.

When the primary ingress fails, the backup ingress sends or multicasts the traffic from the source to its next hops along the protected LSP. It also imports the traffic into each of the backup P2P LSPs, or into the backup P2MP LSP, which transmits the traffic to the other next hops of the primary ingress. There the traffic merges into a protected LSP ๐ŸŒŠ.

During the local repair, the backup ingress MUST continue to send PATH messages to its next hops as before ๐Ÿ“ฌ. It also MUST keep the PATH message with the INGRESS_PROTECTION object received from the primary ingress, and the RESV message with the INGRESS_PROTECTION object to be sent to the primary ingress. In the RESV message, it MUST set the "local protection in use" flag ๐Ÿšฉ.

6.3.3. Failure Detection and Refresh PATH Messages

As described in [RFC4090], it is necessary to refresh the PATH messages via the backup LSP(s) ๐Ÿ”„. The backup ingress MUST wait to refresh the PATH messages until it can accurately detect that the ingress node has failed ๐Ÿ•ต๏ธ. An example of accurate detection would be that the IGP has no bidirectional links to the ingress node, or that a BFD session to the primary ingress' loopback address has failed and stayed failed after the network has reconverged ๐Ÿ“‰.

As described in Section 6.4.3 of [RFC4090], the backup ingress, acting as PLR, MUST modify and send any saved PATH messages associated with the primary LSP to the corresponding next hops through the backup LSP(s) ๐Ÿ› ๏ธ. No PATH message sent this way will contain any INGRESS_PROTECTION objects. The RSVP_HOP object in the message contains an IP source address belonging to the backup ingress ๐Ÿ“. The SENDER_TEMPLATE object has the Backup Ingress Address as its tunnel sender address ๐ŸŽ€.

6.4. Revertive Behavior

Upon a failure event in the (primary) ingress of a protected LSP, the protected LSP is locally repaired by the backup ingress ๐Ÿฉน. There are a couple of basic strategies for restoring the LSP to a full working path ๐Ÿ”™.

  • Revert to Primary Ingress: When the primary ingress is restored, it resignals each of the LSPs that start from the primary ingress. The traffic for every LSP successfully resignaled is switched back to the primary ingress from the backup ingress ๐Ÿ”.
  • Global Repair by Backup Ingress: After determining that the primary ingress of an LSP has failed, the backup ingress computes a new optimal path, signals a new LSP along the new path, and switches the traffic to the new LSP ๐Ÿ—บ๏ธ.

6.4.1. Revert to Primary Ingress

If "Revert to Primary Ingress" is desired for a protected LSP, the (primary) ingress of the LSP SHOULD resignal the LSP that starts from the primary ingress after the primary ingress is restored ๐ŸŒ…. After the LSP is resignaled successfully, the traffic SHOULD be switched back to the primary ingress from the backup ingress on the source node, and redirected into the LSP starting from the primary ingress ๐Ÿ’ซ.

The primary ingress can specify the "Revert to Ingress" control option in the INGRESS_PROTECTION object in the PATH messages it sends to the backup ingress ๐Ÿ“. After the backup ingress receives the "Revert to Ingress" control option, it MUST stop sending or refreshing PATH messages for the protected LSP ๐Ÿ›‘.

6.4.2. Global Repair by Backup Ingress

When the backup ingress has determined that the primary ingress of the protected LSP has failed (e.g., via the IGP), it can compute a new path and signal a new LSP along that path, so it no longer relies on local repair ๐Ÿƒโ€โ™€๏ธ. To do this, the backup ingress MUST use the same tunnel sender address in the SENDER_TEMPLATE object, and allocate an LSP ID different from the one of the old LSP as the LSP ID of the new LSP ๐Ÿ†”. This allows the new LSP to share resources with the old LSP ๐Ÿค. Alternately, the backup ingress can create a new LSP with no bandwidth reservation that duplicates the path(s) of the protected LSP, move the traffic to the new LSP, delete the protected LSP, and then resignal the new LSP with bandwidth ๐Ÿ’ช.

7. Security Considerations โš ๏ธ

In principle, this document does not introduce new security issues ๐Ÿ”. The security considerations pertaining to [RFC4090], [RFC4875], [RFC2205], and [RFC3209] remain relevant ๐Ÿšจ.

8. Compatibility โœจ

okay so this extension is basically built on top of stuff we already have ๐Ÿงš it reuses and extends the semantics and procedures from [RFC2205], [RFC3209], [RFC4090], and [RFC4875] to support ingress protection ๐Ÿ’– the new object for signalling ingress protection has a Class Number of the form 0bbbbbbb. ๐ŸŽ€

Now the fun part: per [RFC2205], a node that doesn't support this extension won't recognize the new Class Number ๐Ÿ˜ญ and should respond with an "Unknown Object Class" error. That error message then propagates back to the ingress, and the ingress can take action to avoid that incompatible node as a backup ingress, or it can simply terminate the session. Not dramatic at all, just vibes ๐Ÿ’…

9. IANA Considerations

this document has no IANA actions ๐ŸŒธ nothing to register, nothing to request, we're chilling.

10. References

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

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

[RFC3936]  Kompella, K. and J. Lang, "Procedures for Modifying the
           Resource reSerVation Protocol (RSVP)", BCP 96, RFC 3936,
           DOI 10.17487/RFC3936, October 2004,
           <https://www.rfc-editor.org/info/rfc3936>.

[RFC4090]  Pan, P., Ed., Swallow, G., Ed., and A. Atlas, Ed., "Fast
           Reroute Extensions to RSVP-TE for LSP Tunnels", RFC 4090,
           DOI 10.17487/RFC4090, May 2005,
           <https://www.rfc-editor.org/info/rfc4090>.

[RFC4875]  Aggarwal, R., Ed., Papadimitriou, D., Ed., and S.
           Yasukawa, Ed., "Extensions to Resource Reservation
           Protocol - Traffic Engineering (RSVP-TE) for Point-to-
           Multipoint TE Label Switched Paths (LSPs)", RFC 4875,
           DOI 10.17487/RFC4875, May 2007,
           <https://www.rfc-editor.org/info/rfc4875>.

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

10.2. Informative References

[RFC6378]  Weingarten, Y., Ed., Bryant, S., Osborne, E., Sprecher,
           N., and A. Fulignoli, Ed., "MPLS Transport Profile (MPLS-
           TP) Linear Protection", RFC 6378, DOI 10.17487/RFC6378,
           October 2011, <https://www.rfc-editor.org/info/rfc6378>.

Acknowledgements

the authors wanted to give a huge shoutout ๐Ÿ“ฃ๐Ÿซถ to Nobo Akiya, Rahul Aggarwal, Eric Osborne, Ross Callon, Loa Andersson, Daniel King, Michael Yue, Alia Atlas, Olufemi Komolafe, Rob Rennison, Neil Harrison, Kannan Sampath, Gregory Mirsky, and Ronhazli Adam for their valuable comments and suggestions on this document. the whole group chat of reviewers, iconic behaviour ๐Ÿ‘‘

Contributors

these people contributed significantly to the content of this document and should be considered coauthors ๐ŸŒˆ

Autumn Liu
Ciena
United States of America
Email: hliu@ciena.com

Zhenbin Li
Huawei Technologies
Email: zhenbin.li@huawei.com

Yimin Shen
Juniper Networks
10 Technology Park Drive
Westford, MA  01886
United States of America
Email: yshen@juniper.net

Tarek Saad
Cisco Systems
Email: tsaad@cisco.com

Fengman Xu
Verizon
2400 N. Glenville Dr
Richardson, TX  75082
United States of America
Email: fengman.xu@verizon.com

these people also contributed to the content of this document ๐Ÿ“

Ning So
Tata Communications
2613 Fairbourne Cir.
Plano, TX  75082
United States of America
Email: ningso01@gmail.com

Mehmet Toy
Verizon
United States of America
Email: mehmet.toy@verizon.com

Lei Liu
United States of America
Email: liulei.kddi@gmail.com

Renwei Li
Huawei Technologies
2330 Central Expressway
Santa Clara, CA  95050
United States of America
Email: renwei.li@huawei.com

Quintin Zhao
Huawei Technologies
Boston, MA
United States of America
Email: quintin.zhao@huawei.com

Boris Zhang
Telus Communications
200 Consilium Pl Floor 15
Toronto, ON  M1H 3J3
Canada
Email: Boris.Zhang@telus.com

Markus Jork
Juniper Networks
10 Technology Park Drive
Westford, MA  01886
United States of America
Email: mjork@juniper.net

Authors' Addresses

Huaimo Chen (editor) ๐Ÿ’œ

Huawei Technologies
Boston, MA
United States of America

Email: huaimo.chen@huawei.com

Raveendra Torvi (editor) ๐Ÿฆ‹

Juniper Networks
10 Technology Park Drive
Westford, MA  01886
United States of America

Email: rtorvi@juniper.net

that's the whole spec, bestie ๐ŸŒˆโœจ we made it through all six parts and I'm obsessed ๐Ÿ˜ญ๐Ÿ’…

๐Ÿ“ฆ where this page comes from