Internet-Draft | BIER-TE FRR | February 2022 |
Chen, et al. | Expires 26 August 2022 | [Page] |
This document describes a mechanism for fast re-route (FRR) protection against the failure of a transit node or link on an explicit point to multipoint (P2MP) multicast path/tree in a "Bit Index Explicit Replication" (BIER) Traffic Engineering (TE) domain. It does not have any per-path state in the core. For a multicast packet to traverse a transit node along an explicit P2MP path, when the node fails, its upstream hop node as a PLR reroutes the packet around the failed node along the P2MP path once it detects the failure.¶
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] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents 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 26 August 2022.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[I-D.ietf-bier-te-arch] introduces Bit Index Explicit Replication (BIER) Traffic/Tree Engineering (BIER-TE). It is an architecture for per-packet stateless explicit point to multipoint (P2MP) multicast path/tree and based on Bit Index Explicit Replication (BIER) architecture defined in [RFC8279]. It does not require intermediate nodes to maintain any per-path/tree state.¶
[I-D.eckert-bier-te-frr] describes three BIER-TE FRR methods for providing fast protections against the failure of an intermediate node or link on an explicit P2MP BIET-TE path. The first method is Point-to-Point Tunneling (PPT), where a BIER-TE packet is rerouted by the PLR around the failure to its NHs and NNHs through unicast tunnels. This method depends on the tunnels, whose configurations may increase the Opex. The second is BIER-in-BIER Encapsulation (BBE), where a BIER-TE packet is rerouted by the PLR to its NHs and NNHs through encapsulating the packet in another BIER-TE header. This additional header reroutes the packet around the failure towards its NHs and NNHs and may increase the overhead. The third is Header Modification (HM), where the backup path is added into the existing BIER-TE header through using an AddBitmask and a ResetBitmask. The issue of this method is that it may cause duplicated packets for some destinations.¶
This document describes a BIER-TE FRR mechanism without the above issues. For a multicast packet with a BIER-TE header to traverse a transit node along an explicit P2MP path, when the node fails, its upstream hop node as a point of local repair (PLR) reroutes the packet around the failed node to the next hop nodes of the failed node on the P2MP path once it detects the failure.¶
This BIER-TE FRR does not require intermediate nodes to maintain any per-path state for FRR protection against the failure of a transit node or link on any explicit P2MP multicast path.¶
A Bit-Forwarding Router (BFR) in a BIER-TE domain has a BIER-TE Bit Index Forwarding Tables (BIFT) [I-D.ietf-bier-te-arch]. A BIER-TE BIFT on a BFR comprises a forwarding entry for a BitPosition (BP) assigned to each of the adjacencies of the BFR. If the BP represents a forward connected adjacency, the forwarding entry for the BP forwards the multicast packet with the BP to the directly connected BFR neighbor of the adjacency. If the BP represents a BFER (i.e., egress node) or say a local decap adjacency, the forwarding entry for the BP decapsulates the multicast packet with the BP and passes a copy of the payload of the packet to the packet's NextProto within the BFR.¶
To support BIER-TE FRR (i.e., fast re-route (FRR) protection against the failure of a transit node or link on an explicit P2MP multicast path in a BIER-TE domain), the BIER-TE BIFT on a BFR is extended. For each forwarding entry of the BIER-TE BIFT on the BFR, if it is for the BP representing a forward connected adjacency, the forwarding entry is extended to include a new forwarding entry, which is called FRR forwarding entry or FRR entry for short.¶
Suppose that the BFR-NBR in the forwarding entry for the BP is N. The FRR entry forwards the multicast packet with the BP to the N's next hops that are on the P2MP path encoded in the multicast packet.¶
Once the BFR as a PLR detects the failure of its BFR-NBR N that is a transit node, for a multicast packet with the BP attached to N, the PLR uses the FRR forwarding entry in the extended BIER-TE BIFT to send the packet to the N's next hop nodes that are on the P2MP path encoded in the multicast packet. These next hop nodes forward the packet along the P2MP path towards the egress nodes of the path.¶
Before sending the packet to the N's next hops, for any local decap BP for a destination/BFER in the header, the PLR removes/clears it if it is on the backup path and it is not reachable through the forward connected adjacency BPs in the header (i.e., it is not on any branch from the PLR).¶
This section describes extensions to a BIER-TE BIFT of a BFR for supporting BIER-TE FRR and enhancements on a forwarding procedure to use the extended BIER-TE BIFT for BIER-TE FRR.¶
Every BFR has an extended BIER-TE BIFT to support BIER-TE FRR protection against the failure of its neighbor transit node. The forwarding entry with transit node (say N) as its BFR-NBR in the BIFT comprises a FRR forwarding entry (or FRR entry for short). The FRR entry contains a flag FPA (which is short for FRR Protection is Active) and a backup path from the BFR to each of N's next hop nodes.¶
In normal operations, the flag FPA in the FRR entry for neighbor transit node N is set to 0 (zero). The flag FPA is set to 1 (one) when transit node N fails. FPA == 1 means that the FRR protection for transit node N is active and the FRR entry will be used to forward the packet with the BP for the adjacency from the BFR to node N towards N's next hop nodes on the P2MP path encoded in the packet's BitString along the backup paths.¶
The backup path from the BFR to a N's next hop node X is a path that satisfies a set of constraints and does not traverse transit node N or any link connected to N. In one implementation, the backup path is represented by the BitPositions for the adjacencies along the backup path.¶
The forwarding procedure defined in [I-D.ietf-bier-te-arch] is updated/enhanced for using an extended BIER-TE BIFT to support BIER-TE FRR.¶
For a multicast packet with the BP in the BitString indicating a BFR-NBR as a transit node of the P2MP path encoded in the packet, the updated forwarding procedure on a BFR sends the packet towards the transit node's next hop nodes on the P2MP path if the transit node fails.¶
It checks whether FPA equals to 1 (one) in the forwarding entry with the BFR-NBR that is a transit node of the P2MP path. If FPA is 1 (i.e., the transit node fails and the FRR protection for the transit node is active), the procedure clears the BP for the adjacency to the transit node in the packet's BitString first. Secondly, for any local decap BP for a destination/BFER in the BitString, it removes/clears the BP if the BP is on the backup path and is not reachable by the forward connected adjacency BPs in the BitString (i.e., is not on any branch from the BFR as PLR). And then, for each next hop node of the failed transit node that is on the P2MP path encoded in the packet's BitString, it copies and sends the packet to the next hop node along the backup path from the BFR to the next hop node.¶
For each next hop node of transit node BFR-NBR (which is named as N for simplicity), when N's next hop node is on the P2MP path, the forwarding procedure clears the BP for the adjacency from N to the N's next hop node in the packet's BitString and adds the BPs for the backup path from the BFR to the N's next hop node. This lets the packet be copied and sent to the N's next hop nodes along the backup paths when transit node N fails and then towards the destinations along the P2MP path.¶
The updated procedure is described in Figure 1. It can also be used by the BFR to forward multicast packets in normal operations.¶
This section illustrates an example application of BIER-TE FRR on a BFR in a BIER-TE topology in Figure 2.¶
An example BIER-TE topology for a BIER-TE domain is shown in Figure 2. It has 9 nodes/BFRs A, B, C, D, E, F, G, H and I. Nodes/BFRs D, F, E, H and A are BFERs and have local decap adjacency BitPositions 1, 2, 3, 4, and 5 respectively. For simplicity, these BPs are represented by (SI:BitString), where SI = 0 and BitString is of 8 bits. BPs 1, 2, 3, 4, and 5 are represented by 1 (0:00000001), 2 (0:00000010), 3 (0:00000100), 4 (0:00001000) and 5 (0:00010000) respectively.¶
The BitPositions for the forward connected adjacencies are represented by i', where i is from 1 to 28. In one option, they are encoded as (n+i), where n is a power of 2 such as 32768. For simplicity, these BitPositions are represented by (SI:BitString), where SI = (6 + (i-1)/8) and BitString is of 8 bits. BitPositions i' (i from 1 to 28) are represented by 1'(6:00000001), 2'(6:00000010), 3'(6:00000100), 4'(6:00001000), 5'(6:00010000), 6'(6:00100000), 7'(6:01000000), 8'(6:10000000), 9'(7:00000001), 10'(7:00000010), . . . , 24'(8:10000000) 25'(9:00000001), 26'(9:00000010), ..., 28'(9:00001000).¶
For a link between two nodes X and Y, there are two BitPositions for two forward connected adjacencies. These two forward connected adjacency BitPositions are assigned on nodes X and Y respectively. The BitPosition assigned on X is the forward connected adjacency of Y. The BitPosition assigned on Y is the forward connected adjacency of X.¶
For example, for the link between nodes B and C in the figure, two forward connected adjacency BitPositions 3' and 4' are assigned to two ends of the link. BitPosition 3' is assigned on node B to B's end of the link. It is the forward connected adjacency of node C. BitPosition 4' is assigned on node C to C's end of the link. It is the forward connected adjacency of node B.¶
Every BFR in a BIER-TE domain/topology has a BIER-TE BIFT. For the BIER-TE topology in Figure 2, each of 9 nodes/BFRs A, B, C, D, E, F, G, H and I has its BIER-TE BIFT for the topology.¶
The BIER-TE BIFT on BFR B (i.e. node B) is shown in Figure 3.¶
The 1st forwarding entry in the BIFT is for BitPosition 2', which is the forward connected adjacency from B to E. For a multicast packet with BitPosition 2', which indicates that the P2MP path in the packet traverses the adjacency from B to E, the forwarding entry forwards the packet to E along the link from B to E.¶
The 2nd forwarding entry in the BIFT is for BitPosition 4', which is the forward connected adjacency from B to C. For a multicast packet with BitPosition 4', which indicates that the P2MP path in the packet traverses the adjacency from B to C, the forwarding entry forwards the packet to C along the link from B to C.¶
The 3rd forwarding entry in the BIFT is for BitPosition 6', which is the forward connected adjacency from B to G. For a multicast packet with BitPosition 6', which indicates that the P2MP path in the packet traverses the adjacency from B to G, the forwarding entry forwards the packet to G along the link from B to G.¶
The 4-th forwarding entry in the BIFT is for BitPosition 8', which is the forward connected adjacency from B to A. For a multicast packet with BitPosition 8', which indicates that the P2MP path in the packet traverses the adjacency from B to A, the forwarding entry forwards the packet to A along the link from B to A.¶
The BIER-TE BIFT on BFR E (i.e. node E) is shown in Figure 4.¶
The 1st forwarding entry in the BIFT forwards a multicast packet with BitPosition 1' to B. It is for BitPosition 1', which is the forward connected adjacency from E to B. For a multicast packet with BitPosition 1', which indicates that the P2MP path in the packet traverses the adjacency from E to B, the forwarding entry forwards the packet to B along the link from E to B.¶
The 2nd forwarding entry in the BIFT forwards a multicast packet with BitPosition 22' to F. It is for BitPosition 22', which is the forward connected adjacency from E to F. For a multicast packet with BitPosition 22', which indicates that the P2MP path in the packet traverses the adjacency from E to F, the forwarding entry forwards the packet to F along the link from E to F.¶
The 3rd forwarding entry in the BIFT locally decapsulates a multicast packet with BitPosition 3 and passes a copy of the payload of the packet to the packet's NextProto. It is for BitPosition 3, which is the local decap adjacency for BFER (i.e., egress) E. For a multicast packet with BitPosition 3, which indicates that the P2MP path in the packet has node E as one of its destinations (i.e., egress nodes), the forwarding entry decapsulates the packet and passes a copy of the payload of the packet to the packet's NextProto within node E.¶
Every BFR has an extended BIER-TE BIFT to support BIER-TE FRR protection against the failure of its neighbor transit node.¶
For example, the extended BIER-TE BIFT on BFR B is illustrated in Figure 5. Each forwarding entry with transit node (such as E, C and G) as its BFR-NBR in the BIFT comprises a FRR entry. Each of these FRR entries contains a flag FPA and a number of backup paths. For a forwarding entry with transit node X, its FRR entry has a backup path to each of node X's next hop nodes except for BFR B itself. FPA is set to zero in normal operations. FPA in the FRR entry for neighbor transit node X is set to one when node X fails.¶
On BFR B, the 1st forwarding entry in the BIFT has BFR-NBR E as transit node. Nodes F and B are the next hop nodes of node E in Figure 2. The backup path from B to F without E or links attached to E goes through the link from B to C and then the link from C to F. This backup path from B to F is represented by B-->F: {4', 10'} in the FRR entry of the forwarding entry.¶
FPA in the FRR entry is set to 0 (zero) in normal operations. When transit node E fails, the FPA is set to 1 (one) and the FRR entry is used to forward a multicast packet with BitPosition 2' for adjacency from B to E towards E's next hop node F along the backup path from B to F if the P2MP path in the packet traverses node F.¶
On BFR B, the 2nd forwarding entry in the BIFT has BFR-NBR C as transit node. Nodes F, D, I and B are the next hop nodes of node C in Figure 2. The backup path from B to F without C or links attached to C goes through the link from B to E and then the link from E to F. This backup path from B to F is represented by B-->F: {2', 22'} in the FRR entry of the forwarding entry.¶
The backup path from B to D without C or links attached to C goes through the link from B to G, the link from G to H and then the link from H to D. This backup path from B to D is represented by B-->D: {6', 20', 27'} in the FRR entry of the forwarding entry.¶
The backup path from B to I without C or links attached to C goes through the link from B to G and then the link from G to I. This backup path from B to I is represented by B-->I: {6', 17'} in the FRR entry of the forwarding entry.¶
FPA in the FRR entry is set to 0 (zero) in normal operations. When transit node C fails, the FPA is set to 1 (one) and the FRR entry is used to forward a multicast packet with BitPosition 4' for adjacency from B to C towards C's next hop nodes F, D or I along the backup paths from B to F, D or I respectively if the P2MP path in the packet traverses nodes F, D or I.¶
On BFR B, the 3rd forwarding entry in the BIFT has BFR-NBR G as transit node. Nodes I, H, A and B are the next hop nodes of node G in Figure 2. The backup path from B to I without G or links attached to G goes through the link from B to C and then the link from C to I. This backup path from B to I is represented by B-->I: {4', 14'} in the FRR entry of the forwarding entry.¶
The backup path from B to H without G or links attached to G goes through the link from B to C, the link from C to I and then the link from I to H. This backup path from B to H is represented by B-->H: {4', 14', 16'} in the FRR entry of the forwarding entry.¶
The backup path from B to A without G or links attached to G goes through the link from B to A. This backup path from B to A is represented by B-->A: {8'} in the FRR entry of the forwarding entry.¶
FPA in the FRR entry is set to 0 (zero) in normal operations. When transit node G fails, the FPA is set to 1 (one) and the FRR entry is used to forward a multicast packet with BitPosition 6' for adjacency from B to G towards G's next hop nodes I, H or A along the backup paths from B to I, H or A respectively if the P2MP path in the packet traverses nodes I, H or A.¶
On BFR B, the 4-th forwarding entry in the BIFT has BFR-NBR A as transit node. Nodes G and B are the next hop nodes of node A. The backup path from B to G without A or links attached to A goes through the link from B to G. This backup path from B to G is represented by B-->G: {6'} in the FRR entry of the forwarding entry.¶
FPA in the FRR entry is set to 0 (zero) in normal operations. When node A fails, the FPA is set to 1 (one) and the FRR entry is used to forward a multicast packet with BitPosition 8' for adjacency from B to A towards A's next hop node G along the backup path from B to G if the P2MP path in the packet traverses node A as a transit node.¶
Suppose that there is an explicit multicast P2MP path from ingress A to egresses H and D, traversing from A to G to H and from A to B to C to D. This path is represented by BPs as {26', 20', 7', 4', 12', 4, 1}. The forwarding behaviors in normal operations and in case of BFR C failure are described below.¶
For a multicast packet with the path on BFR A, A sends the packet to G and B according to the forwarding entries for 26' and 7' in A's extended BIER-TE BIFT respectively. The packet received by G and B contains path {20', 4', 12', 4, 1}.¶
After receving the packet from A, G forwards the packet to H according to forwarding entry for 20' in its extended BIER-TE BIFT. The packet received by H contains path {4', 12', 4, 1}. After receving the packet from A, B forwards the packet to C according to forwarding entry for 4' in its extended BIER-TE BIFT. The packet received by C contains path {20', 12', 4, 1}.¶
After receving the packet from G, H decapsulates the packet and passes a copy of the payload of the packet to the packet's NextProto according to forwarding entry for 4 in its extended BIER-TE BIFT. After receving the packet from B, C forwards the packet to D according to forwarding entry for 12' in its extended BIER-TE BIFT. The packet received by D contains path {20', 4, 1}.¶
After receving the packet from C, D decapsulates the packet and passes a copy of the payload of the packet to the packet's NextProto according to forwarding entry for 1 in its extended BIER-TE BIFT.¶
Once BFR B detects the failure of node C, it sets FPA of the FRR entry in the 2nd forwarding entry with BFR-NBR C to one. After receiving the packet from BFR A, which contains path {20', 4', 12', 4, 1}, BFR B clears BP 4'; BFR B clears the BP 4 for BFER H since H is on the backup path from B to G to H to D, but not on any branch of the path from B.¶
For C's next hop node D on the P2MP path, BFR B clears adjacency BP 12' from C to D and adds the BPs for backup path {6', 20', 27'} from B to G to H to D. The packet has path {6', 20', 27', 1}. BFR B sends the packet to G according to forwarding entry for 6' in its extended BIER-TE BIFT. The packet received by G contains path {20', 27', 1}.¶
After receving the packet from B, G forwards the packet to H according to forwarding entry for 20' in its extended BIER-TE BIFT. The packet received by H contains path {27', 1}.¶
After receving the packet from G, H forwards the packet to D according to forwarding entry for 27' in its extended BIER-TE BIFT. The packet received by D contains path {1}.¶
After receving the packet from H, D decapsulates the packet and passes a copy of the payload of the packet to the packet's NextProto according to forwarding entry for 1 in its extended BIER-TE BIFT.¶
No requirements for IANA.¶
The authors would like to thank Daniel Merling for his comments to this work.¶