Network Working Group                                          T. Eckert
Internet-Draft                                                    Huawei
Intended status: Experimental                                 G. Cauchie
Expires: September 6, 2018                              Bouygues Telecom
                                                                W. Braun
                                                                M. Menth
                                                 University of Tuebingen
                                                           March 5, 2018


                     Protection Methods for BIER-TE
                      draft-eckert-bier-te-frr-03

Abstract

   This document proposes protection methods for the BIER-TE
   architecture [I-D.ietf-bier-te-arch].  These include 1+1 (live-live)
   path/tree [RFC7431] redundancy, 1:1 path/tree protection, as well as
   fast reroute (FRR) methods.  The latter may protect against link and/
   or node failures and leverage infrastructure tunnels, BIER-in-BIER
   encapsulation, or header modification for implementation.

   In particular, this memo describes FRR for BIER-TE in detail.  FRR
   for BIER-TE requires support from the BIER-TE controller and the BFRs
   that are attached to a link/adjacency for which FRR protection is
   desired.  FRR relies on the BIER header described in [RFC8279] which
   is also used by BIER-TE.  It does not require extensions or
   modifications to existing BIER-TE tables.  However, the presented FRR
   procedures need some additional forwarding plane logic on the BFR.
   An additional table is needed that carries information about pre-
   computed backup paths.  When a failure is detected, the information
   from this table is used to modify the bitstring in the BIER header
   before forwarding a packet over a backup path.  To prevent undesired
   packet duplication, packets should be tunneled on the backup paths.

Status of This Memo

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

   Internet-Drafts are working documents 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




Eckert, et al.          Expires September 6, 2018               [Page 1]


Internet-Draft                 BIER-TE FRR                    March 2018


   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 September 6, 2018.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Overview of FRR Mechanisms for BIER-TE  . . . . . . . . . . .   3
     2.1.  Path/Tree Diversity . . . . . . . . . . . . . . . . . . .   3
       2.1.1.  1+1 Path/Tree Redundancy  . . . . . . . . . . . . . .   3
       2.1.2.  1:1 Path/Tree Protection  . . . . . . . . . . . . . .   5
     2.2.  1:1 Link/Node Protection  . . . . . . . . . . . . . . . .   5
       2.2.1.  Link Protection using Existing Mechanisms . . . . . .   6
       2.2.2.  Node Protection using Existing Mechanisms . . . . . .   6
       2.2.3.  Native 1:1 Protection using BIER-in-BIER
               Encapsulation . . . . . . . . . . . . . . . . . . . .   7
       2.2.4.  Native BIER-TE Node and Link Protection . . . . . . .   7
   3.  FRR Extension for Native 1:1 Protection with BIER-TE  . . . .   7
     3.1.  FRR Key Concepts  . . . . . . . . . . . . . . . . . . . .   8
     3.2.  The BIER-TE Adjacency FRR Table (BTAFT) . . . . . . . . .   9
     3.3.  FRR in BIER-TE Forwarding . . . . . . . . . . . . . . . .  10
     3.4.  FRR in the BIER-TE Controller . . . . . . . . . . . . . .  10
     3.5.  BIER-TE FRR Benefits  . . . . . . . . . . . . . . . . . .  11
     3.6.  Adjustment to the BIER-TE Forwarding Pseudocode . . . . .  11
     3.7.  Recommendations for Tunneling . . . . . . . . . . . . . .  14
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  14
   5.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  14
   6.  Change log [RFC Editor: Please remove]  . . . . . . . . . . .  14
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  15
     7.2.  Informational References  . . . . . . . . . . . . . . . .  15
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  15



Eckert, et al.          Expires September 6, 2018               [Page 2]


Internet-Draft                 BIER-TE FRR                    March 2018


1.  Introduction

   The BIER-TE architecture is defined in [I-D.ietf-bier-te-arch] and
   does not provide any protection mechanisms.  However, there are
   several approaches to protect multicast traffic against network
   failures.  This draft gives an overview of 1+1 (live-live) path/tree
   redundancy, 1:1 path/tree protection, as well as fast reroute (FRR)
   methods including link and node protection.  They may leverage either
   existing mechanisms with some extensions for BIER-TE, BIER-TE point-
   to-multipoint tunnels, or renounce on tunneling at all with the
   downside of reduced coverage.

   This document describes additions to the BIER-TE architecture that
   facilitate FRR for link and node protection using BIER-TE
   encapsulation.  Similar extensions are needed for node-protection FRR
   with existing mechanisms and must be supported by and must be
   supported by the BIER-TE controller and BFRs attached to a link/
   adjacency for which FRR support is required.  The FRR operation
   modifies the BIER header to facilitate local bypass of failed
   elements.  It is possible to add and remove multicast links to the
   header, use unicast tunnels, e.g., MPLS tunnels, to implement the
   bypass, or to leverage BIER-in-BIER encapsulation.

   The BIER-TE FRR method only requires a small set of additional
   forwarding entries that are stored in a separate table called the
   BTAFT.  The entries depend only on the topology and not on the
   multicast flows.

2.  Overview of FRR Mechanisms for BIER-TE

   In the following we give an overview of various protection methods
   that may be applied to protect BIER-TE-based multicast trees.

   BIER-TE can be combined with a range of mechanisms to provide
   resilience in the face of failures such as link or nodes.  In this
   section, we give an overview of the key options.

2.1.  Path/Tree Diversity

2.1.1.  1+1 Path/Tree Redundancy

   In 1+1 redundancy, often also called live-live, traffic is sent twice
   across the network, path-engineered in a way that no single point of
   failure (link or node) is in the path for both copies towards every
   single receiver.  For point-to-multipoint transmission, this
   basically requires disjoint ent-to-end paths.  For point-to-
   multipoint transmission, distribution structures are needed that
   fulfill the earlier mentioned criterion.  They usually resemble



Eckert, et al.          Expires September 6, 2018               [Page 3]


Internet-Draft                 BIER-TE FRR                    March 2018


   "orthogonal" tree structures.  See [BIERFRRANALYSIS] for
   illustration.  For multicast transmission, 1+1 redundancy can be very
   attractive because the cost of dual transmission can often be
   negligible vs. the overall bandwidth saving of doing replication in
   the network.

   Path-engineering for 1+1 redundancy can become quite advanced
   depending on the topology - but it does not require any new
   functionalities from BIER-TE.  It just requires appropriate
   engineering and potentially additional application or BIER edge
   functions such as traffic duplication at the sender and traffic
   deduplication at the receiver.

   Consider the following topology example: each sender or receiver has
   connections to two BFRs to overcome the failure of either BFR.  The
   application on the source creates two copies for every packet.  It
   sends one "a-packet" copy onto its a-link and the other "b-packet"
   copy onto its b-link.  Snd,Rcvr could be BFIR,BFER or they could send
   native multicast and the BFR they connect to are BFIR, BFER.

   BIER-TE bitstrings need to be set up for a-packets and b-packets to
   pass through the topology counter-circular to each other so that any
   individual link or node failure never interrupt both a-packets and
   b-packets

                                   Snd1,Rcv1
                             a-link/      \
                                  /        \
                        ------ BFR1a ---- BFR1b -------
                       /                                \
                  - BFR2a          (RING1)            BFR4b -
                 /    \                                 /    \
         Snd2,Rcv2     \                               /    Snd4,Rcv4
                  -- BFR2b ---- BFR3a -- BFR3b --- BFR4a ----
                       /              \    /             \
                      /             Snd3,Rcv3             \
                  - BFR5a                                BFR6b -
                 /    \              (RING2)               /    \
         Snd5,Rcv5     \                                  /   Rcv5
                  -- BFR5b --- BFR6a --- BFR6b --- BFR6a -----
                                    \    /
                                     Rcv6

   The application side in Snd,Rcv needs to be able to eliminate the
   duplication resulting from receiving both a-packet and b-packet
   copies (unless there is a failure).  This is easily done if there is
   any encapsulation (such as transport layer) where sequence numbers
   are used.  Otherwise such a layer has to be added.



Eckert, et al.          Expires September 6, 2018               [Page 4]


Internet-Draft                 BIER-TE FRR                    March 2018


   If sender and/or receivers can not support the duplication on the
   sending side and/or deduplication on the receiving side, it is easy
   to derive variations of these designs in which network ingress/egress
   devices take over these rules.  The functionality that is least
   common in network devices is per-packet deduplication based on
   sequence numbers in the packets.  Only few network transport service
   encapsulations do currently provide sequence numbers, e.g., L2TPv3.

   Because the described ingress/egress functionalities are not specific
   to BIER-TE but would equally apply to the solution if built with
   native IP multicast or RSVP-TE/P2MP, this document does not propose
   any further functionality required for this type of solutions.

   Compared to RSVP-TE/P2MP, one specific benefit of BIER-TE is that
   trees can be optimized without re-signaling solely by the BIER-TE
   sender adding/deleting bits representing leaf trees to receivers that
   join/leave the content.

2.1.2.  1:1 Path/Tree Protection

   If duplicate transmission is not desirable, variations of the above
   scheme can be devised where only one copy is sent to each receiver.
   Such solutions require receiver feedback to the sender and are
   therefore most feasible for a limited receiver set deployment, e.g.,
   regional multi-system operator (MSO) distribution networks to hybrid
   fiber-coaxial (HFC) headends.  For example, by default only the
   a-tree could be transmitted, and upon reception failure at any subset
   of receivers, the sender would transmit to the subset of the b-tree
   covering those receivers.  Upon recovery of the a-tree, signaling
   from the receiver could equally stop transmission of the b-tree
   toward this receiver.

   For a more common path utilization across the network in the no-
   failure scenario, senders could instead start with 50% receiver
   populated a-tree and b-tree as well.

   These options heavily depend on the ability to change the set of
   receivers in a tree without signaling.  The enabling/disabling of
   sending to a particular branch of the network can be done within a
   single round-trip starting with the signaling of the reception
   failure by a receiver.

2.2.  1:1 Link/Node Protection

   In this section we discuss the link and node protection for BIER-TE
   using existing mechanisms and the native BIER-Te FRR approach.





Eckert, et al.          Expires September 6, 2018               [Page 5]


Internet-Draft                 BIER-TE FRR                    March 2018


2.2.1.  Link Protection using Existing Mechanisms

   BIER-TE can be used in conjunction with reactive 1:1 link protection
   as it is also possible in RSVP-TE/P2MP.  When a node sees a failure
   on a link, it assumes that the link has failed and uses a pre-
   established backup path to get packets to the node on the other side
   of the link.  In example below, BFR2 would use a pre-established path
   via l7,l2,l3,l4 to send packets to BFR3 when it sees a failure of
   link1.

                                      l3
                        ------ BFR4 ------- BFR5 ------
                       /                    /  \
                      / l2              l4 /    \ l5
                     /                    /      |
                 BFR1 ---- BFR2 --X-- BFR3 ---- BFR6 --
                       l7         l1      \      |
                                           \     | l6
                                            \    |
                                             -- BFR7 --

   In BIER-TE, this link protection can be done either by using some
   pre-existing traffic engineered tunneling mechanisms such as RSVP-TE/
   P2P or Segment Routing paths to get packets to BFR3 in the link
   failure case.  These options do not require enhancements to BIER-TE.

2.2.2.  Node Protection using Existing Mechanisms

   BFR2 can not distinguish whether link1 or BFR3 fails.  It simply
   needs to assume one or the other and perform link or node protection.
   If it assumes node failure and wants to perform node protection, the
   solution becomes more complex.  Effectively, BFR2 needs to get the
   packets over to BFR5,BFR6 and BFR7 or the subset of those next-next-
   hops that is required.  Using pre-established p2p backup tunnels
   (RSVP-TE/P2P or SR) allows to send just to the required subset of
   next-next-hops at the expense of sending the traffic up to three
   times across the path consisting of the links l7,l2,l3.  The required
   subset of next-next-hops consists of the downstream next-next-hops.
   Downstream means that the next-next-hops are the direct multicast
   children of the next-hop.  This is similar to the FRR concept
   discussed in Section 3.1.  Using a backup RSVP-TE/P2MP tree
   eliminates this higher load but would deliver to all next-next-hops
   or it would be necessary to set up backup RSVP-TE/P2MP trees for all
   possible subsets of next-next-hops (which may not scale well).







Eckert, et al.          Expires September 6, 2018               [Page 6]


Internet-Draft                 BIER-TE FRR                    March 2018


2.2.3.  Native 1:1 Protection using BIER-in-BIER Encapsulation

   A simpler solution for node protection leverages BIER-in-BIER
   encapsulation.  In this approach, BFR2 would encapsulate the BIER-TE
   packet into another BIER-TE packet whose bitset was pre-built to
   carry the packet via l7,l2,l3,l5,l6 to BFR5,BFR6,BFR7 optionally
   reducing the bitset based on the bitset of the encapsulated BIER-TE
   packet.  This document describes this option in Section 3.

   If there are no available infrastructure tunnels deployed, then BIER-
   in-BIER encapsulation could equally be used for the simple case of
   link protection.

2.2.4.  Native BIER-TE Node and Link Protection

   An even simpler solution is to not encapsulate the BIER-TE packet
   into another BIER-TE packet but instead to rewrite the bitstring of
   the BIER-TE packet to make the packets get delivered via l2,l3 to
   BFR5, via l5 to BFR6 if that is part of the original bitstring and
   via l6 to BFR7, if that is part of the original bitstring.

   This document specifies the necessary rules for the BIER-TE
   forwarding machinery for such bitstring bitstring rewrites to enable
   the most lightweight and efficient form of node protection with BIER-
   TE.

   This solution will not work in all topologies though because the set
   of bits necessary to pass the traffic across a backup path/tree may
   cause undesired traffic forwarding (duplicates/loops).

3.  FRR Extension for Native 1:1 Protection with BIER-TE

   In this section, we explain the FRR extension to support native 1:1
   protection with BIER-TE.  These extensions do not require changes to
   the BIER header or to forwarding mechanism.  The protection procedure
   runs directly before the BIER-TE forwarding procedure.

   Note that the FRR extensions require the use of a new table which is
   described in Section 3.2.  The table is only filled with entries that
   depend on the network topology and do not depend on the multicast
   flows.

   An implementation of BIER-TE FRR based on BIER-in-BIER encapsulation
   in the networking programming language P4 is given in [BIER-FRR-P4].
   The source code is thoroughly documented and contains examples how
   the BIER-TE BIFT and BIER-TE BTAFT tables can be filled.





Eckert, et al.          Expires September 6, 2018               [Page 7]


Internet-Draft                 BIER-TE FRR                    March 2018


3.1.  FRR Key Concepts

   In this section we use the following example to explain the key
   concepts of BIER-TE FRR.  The example shows a multicast tree from
   BFR1 to BFR2, BFR6, BFR9.  The path to BFR2 is represented by the
   bits p1, p3 and p4.  The bits p1, p6, p7 and the bits p2, p8
   represent the path towards BFR6 and BFR 9, respectively.  Local_decap
   bits for all BFR2,BFR6, and BFR9 are also used.

                     BFR1-------+
                      |         |
                      |         |
       p4      p3     v p1      v p2
   BFR2<---BFR3<-----BFR4------BFR5
            |         |      p5 |
            |         |         |
         p8 |         v p6      v p8
           BFR6<-----BFR7-----BFR9
              p7    p9  p10

   First, we consider that the link from P towards F fails.  The failure
   can be protected by the backup paths over BFR3->BFR6->BFR7: p3, p8,
   p9 (BP1) and BFR5->BFR9->BFR7: p5, p8, p10 (BP2).  The use of backup
   path BP1 does not cause duplicates.  Backup path BP2 would cause
   duplicates because the local_decap bit for D2 is still set in
   bitstring at P.  Two options exist to avoid duplicates.

   1.  We reset the local_decap bit for D2: This solution prevents the
       duplicate packet.  However, this method can lead to lost packets
       in other examples.

   2.  We use a tunnel from P to F over D2 to prevent BIER packet
       processing at the nodes at the backup path.

   Tunnels may be implemented in these two different ways:

   1.  A remote adjacency represented by a single bit which is a tunnel
       in the routing underlay.  For an MPLS routing underlay, this can
       be implemented using an MPLS label stack.  In the example we
       would introduce an additional bit,e.g., p11, representing the
       tunnel.

   2.  BIER-in-BIER encapsulation using an additional BIER header with
       NextProto = BIER.  This methods does not require additional bits
       for remote adjacencies compared to remote adjacencies but it
       increases the size of the packet header.  In this example the new
       bitstring contains the bits of BP2 and an additional local_decap
       bit for BFR7.



Eckert, et al.          Expires September 6, 2018               [Page 8]


Internet-Draft                 BIER-TE FRR                    March 2018


   Now, we consider that BFR7 fails.  The backup path must send the
   packets to all downstream next next-hops (DS-NNHs), i.e. the next-
   hops of the sub-tree rooted of BFR7.  BFR4 can identify the DS-NNHs
   by checking the bits of interest of the failed node BFR7.  BFR6 is
   such a node because bit p7 is set.  BFR9 is not downstream because
   there is no bit of interest from BFR7 to BFR9.  Sending packets to
   BFR9 would causes duplicates because BFR9 is served using the branch
   BFR1->BFR5->BFR9.

   Protection against link failures only requires knowledge of the
   failed adjacency.  Protection against node failures requires
   additional knowledge of the downstream nodes of the tree.  The
   computation of appropriate backup paths, AddBitmasks, ResetBitmasks,
   and BitPositions is outside of the scope of this document.

3.2.  The BIER-TE Adjacency FRR Table (BTAFT)

   The BIER-TE IF FRR Table exists in every BFR that is supporting BIER-
   TE FRR.  It is indexed by FRR Adjacency Index that is compromised of
   the SI and the adjacency.  Associated with each FRR Adjacency Index
   are the failed BitPosition (F-BP), Downstream BitPosition (DS-BP),
   ResetBitmask, and AddBitmask.  The table can be configured to enable
   different actions for the AddBitMask.  Either the table is configured
   to apply BIER-in-BIER encapsulation with a new BIER header containing
   the AddBitmask as new bitstring or to simply add the bits on the
   current bitstring.

   ---------------------------------------------------------------------
   | FRR Adjacency | Failed  | Downstream  | ResetBitmask | AddBitmask |
   | Index         | BP      | BP          |              |            |
   =====================================================================
   | 0:1           | 5       | 5           |  ..0010000   | ..11000000 |
   ---------------------------------------------------------------------
   ...

   An FRR Adjacency is an adjacency that is used in the BIFT of the BFR.
   The BFR has to be able to determine whether the adjacency is up or
   down in less than 50msec.  An FRR adjacency can be a
   forward_connected adjacency with fast L2 link state Up/Down state
   notifications or a forward_connected or forward_routed adjacency with
   a fast aliveness mechanism such as BFD.  Details of those mechanism
   are outside the scope of this architecture.

   The FRR Adjacency Index is the index that would be indicated on the
   fast Up/Down notifications to the BIER-TE forwarding plane and
   enables the selection of appropriate ResetBitmasks and AddBitmasks.





Eckert, et al.          Expires September 6, 2018               [Page 9]


Internet-Draft                 BIER-TE FRR                    March 2018


   The failed BitPosition is the BP in the BIFT in which the FRR
   Adjacency is used.  The downstream BitPosition is required to protect
   against node failures to identify the downstream adjacency as
   described in Section 3.1.  The backup path/tree is constructed of the
   individual ResetBitmasks and AddBitmasks of the downstream nodes.  To
   protect against link failures, the DS-BP field is set equally to the
   F-BP field.

3.3.  FRR in BIER-TE Forwarding

   The BIER-TE forwarding plane receives fast Up/Down notifications of
   BIER adjacencies which are used for different SIs.  From the failed
   BitPosition in the BTAFT entry, it records which BPs are currently
   affected (have a down adjacency).

   When a packet is received, BIER-TE forwarding checks if it has failed
   BPs and matching downstream BitPositions to which it would forward.
   If it does, it will remove the ResetBitmask bits from the packets
   BitString.  Depending on the table configuration it will either add
   the AddBitmask bits to the packets BitString or construct a new BIER
   header for rerouted packets.  Note that the original packet must be
   still available for non-affected bitpositions.

   Afterwards, normal BIER-TE forwarding occurs, taking the modified
   bitstring or the additional BIER header into account.  Note that the
   information is pre-computed by the controller so that the BFR can
   reroute around a failure immediately after its detection.

3.4.  FRR in the BIER-TE Controller

   The basic rules how the BIER-TE controller would calculate the
   ResetBitmask and the AddBitmask are as follows:

   1.  The BIER-TE controller decides which tunnel mode a BFR uses for
       the BTAFT: remote adjacencies or BIER-in-BIER tunneling.

   2.  The BIER-TE controller determines whether a failure of the
       adjacency should be taken to indicate link or node failure.  This
       is a policy decision.

   3.  The ResetBitmask has the BitPosition of the failed adjacency.

   4.  In the case of link protection, the AddBitmask are the segments
       forming a path from the BFR over to the BFR on the other end of
       the failed link.  The path can be formed using remote adjacencies
       for tunneling purposes.





Eckert, et al.          Expires September 6, 2018              [Page 10]


Internet-Draft                 BIER-TE FRR                    March 2018


   5.  In the case of node protection, the AddBitmask are the segments
       forming a tree from the BFR over to all necessary downstream BFRs
       of the (assumed to be failed) BFR across the failed adjacency.

   6.  The ResetBitmask is extended with those segments that could lead
       to duplicate packets if the AddBitmask is added to possible
       bitstrings of packets using the failing BitPosition.

3.5.  BIER-TE FRR Benefits

   Compared to other FRR solutions, such as RSVP-TE/P2MP FRR, BIER-TE
   FRR has two key distinctions

   o  It maintains the goal of BIER-TE not to establish in-network per
      multicast traffic flow state.  For that reason, the backup path/
      trees are only tied to the topology, but not to individual
      distribution trees.

   o  For the case of a node failure, it allows to build a path
      engineered backup tree as opposed to a set of partly overlapping
      p2p backup tunnels.

   o  BIER-in-BIER encapsulation enables backup tunnels in networks that
      do not provide a routing layer with tunneling capabilities.  It
      may simplify network management because additional tunnels (such
      as GRE) do not to be setup in the routing layer.

3.6.  Adjustment to the BIER-TE Forwarding Pseudocode

   We augment the forwarding procedure presented in the BIER-TE draft to
   support FRR.

   The following procedure computes the ResetBitmasks and AddBitmasks
   when an adjacency up/down notification is triggered.  The masks can
   later be directly applied to the header to facilitate the backup.
















Eckert, et al.          Expires September 6, 2018              [Page 11]


Internet-Draft                 BIER-TE FRR                    March 2018


      global ResetBitMaskByBT[BitStringLength]
      global AddBitMaskByBT[BitStringLength]
      global FRRaffectedBP

      void FrrUpDown(FrrAdjacencyIndex, UpDown)
      {
          global FRRAdjacenciesDown
          local Idx = FrrAdjacencyIndex

          if (UpDown == Up)
              FRRAdjacenciesDown &= ~ 2<<(FrrAdjacencyIndex-1)
          else
              FRRAdjacenciesDown |=   2<<(FrrAdjacencyIndex-1)

          for (Index = GetFirstBitPosition(FRRAdjacenciesDown); Index ;
              Index = GetNextBitPosition(FRRAdjacenciesDown, Index))

              local BP = BTAFT[Index].BitPosition
              FRRaffectedBP |= 2<<(Index)
              ResetBitMaskByBT[BP] |= BTAFT[Index].ResetBitMask
              AddBitMaskByBT[BP]   |= BTAFT[Index].AddBitMask
      }

   The ForwardBierTePacket procedure must be modified by applying the
   FRR operations when necessary.


























Eckert, et al.          Expires September 6, 2018              [Page 12]


Internet-Draft                 BIER-TE FRR                    March 2018


      void ForwardBierTePacket (Packet)
      {
          // We calculate in BitMask the subset of BPs of the BitString
          // for which we have adjacencies. This is purely an
          // optimization to avoid to replicate for every BP
          // set in BitString only to discover that for most of them,
          // the BIFT has no adjacency.

          local BitMask = Packet->BitString
          Packet->BitString &= ~MyBitsOfInterest
          BitMask &= MyBitsOfInterest

          // FRR Operations
          // Note: this algorithm is not optimal yet for ECMP cases
          // it performs FRR replacement for all candidate ECMP paths

          local MyFRRBP = BitMask & FRRaffectedBP
          for (BP = GetFirstBitPosition(MyFRRNP); BP ;
               BP = GetNextBitPosition(MyFRRNP, BP))
              BitMask &= ~ResetBitMaskByBT[BP]
              BitMask |=  ResetBitMaskByBT[BP]

          // Replication
          for (Index = GetFirstBitPosition(BitMask); Index ;
               Index = GetNextBitPosition(BitMask, Index))
              foreach adjacency BIFT[Index]

                  if(adjacency == ECMP(ListOfAdjacencies, seed) )
                      I = ECMP_hash(sizeof(ListOfAdjacencies),
                                    Packet->Entropy, seed)
                      adjacency = ListOfAdjacencies[I]

                  PacketCopy = Copy(Packet)

                  switch(adjacency)
                      case forward_connected(interface,neighbor,DNR):
                          if(DNR)
                              PacketCopy->BitString |= 2<<(Index-1)
                          SendToL2Unicast(PacketCopy,interface,neighbor)

                      case forward_routed([VRF],neighbor):
                          SendToL3(PacketCopy,[VRF,]l3-neighbor)

                      case local_decap([VRF],neighbor):
                          DecapBierHeader(PacketCopy)
                          PassTo(PacketCopy,[VRF,]Packet->NextProto)
      }




Eckert, et al.          Expires September 6, 2018              [Page 13]


Internet-Draft                 BIER-TE FRR                    March 2018


3.7.  Recommendations for Tunneling

   Recommendations for usage of tunnels for BIER-TE FRR based on the
   study in [BIERFRRANALYSIS]:

   1.  Tunneling SHOULD be used.  The study shows that header
       modification does not improve coverage in many topologies and may
       cause more harm than protection when node failures occur.

   2.  Using unicast tunnels may cause unnecessary extra load on
       overlapping links when protecting against node failures.
       Moreover, they require additional bits in the BIER header.

   3.  BIER-in-BIER encapsulation is the recommended mechanism.  It
       causes increased header overhead through the encapsulating BIER
       header.  This may become an issue when the BIER header supports
       long bitstrings

4.  IANA Considerations

   This document requests no action by IANA.

5.  Acknowledgements

   The authors would like to thank Greg Shepherd, Ijsbrand Wijnands and
   Neale Ranns for their extensive review and suggestions.

6.  Change log [RFC Editor: Please remove]

      03: Updated references, no other conent changes from -02.  Refresh
      to continue using this document for reference of new work.
      Unchanged.  Currently unclear if the novel method proposed in this
      document is worth pursuing.  If not, then we would change the
      document to solely document the applicability of pre-existing
      methods (and remove new options).

      02: Overview of FRR mechanisms feasible for BIER-TE (Eckert)

      02: Removed Section "BIER-TE and existing FRR, because it is now
      part of "Overview" chapter (Braun)

      02: Added recommendation on native BIER-TE FRR with regard to
      tunneling options based on a study (Braun)

      02: Added P4 implementation of BIER-TE FRR using BIER-in-BIER as
      reference.(Braun)

      01: Update of author addresses



Eckert, et al.          Expires September 6, 2018              [Page 14]


Internet-Draft                 BIER-TE FRR                    March 2018


      00: Initial version based on draft-eckert-bier-arch-03.

7.  References

7.1.  Normative References

   [I-D.ietf-bier-te-arch]
              Eckert, T., Cauchie, G., Braun, W., and M. Menth, "Traffic
              Engineering for Bit Index Explicit Replication (BIER-TE)",
              draft-ietf-bier-te-arch-00 (work in progress), January
              2018.

   [RFC7431]  Karan, A., Filsfils, C., Wijnands, IJ., Ed., and B.
              Decraene, "Multicast-Only Fast Reroute", RFC 7431,
              DOI 10.17487/RFC7431, August 2015,
              <https://www.rfc-editor.org/info/rfc7431>.

   [RFC8279]  Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A.,
              Przygienda, T., and S. Aldrin, "Multicast Using Bit Index
              Explicit Replication (BIER)", RFC 8279,
              DOI 10.17487/RFC8279, November 2017,
              <https://www.rfc-editor.org/info/rfc8279>.

7.2.  Informational References

   [BIER-FRR-P4]
              Braun, W., Hartmann, J., and M. Menth, "Demo: Scalable and
              Reliable Software-Defined Multicast with BIER and P4",
               IFIP/IEEE International Symposium on Integrated Network
              Management (IM), May 2017, <https://atlas.informatik.uni-
              tuebingen.de/~menth/papers/Menth17b.pdf>.

   [BIERFRRANALYSIS]
              Braun, W., Eckert, T., and M. Menth, "Performance
              Comparison of Resilience Mechanisms for Stateless
              Multicast Using BIER",  IFIP/IEEE International Symposium
              on Integrated Network Management (IM), May 2017,
              <https://atlas.informatik.uni-tuebingen.de/~menth/papers/
              Menth17a.pdf>.

Authors' Addresses










Eckert, et al.          Expires September 6, 2018              [Page 15]


Internet-Draft                 BIER-TE FRR                    March 2018


   Toerless Eckert
   Huawei USA - Futurewei Technologies Inc.
   2330 Central Expy
   Santa Clara  95050
   USA

   Email: tte+ietf@cs.fau.de


   Gregory Cauchie
   Bouygues Telecom

   Email: GCAUCHIE@bouyguestelecom.fr


   Wolfgang Braun
   University of Tuebingen

   Email: wolfgang.braun@uni-tuebingen.de


   Michael Menth
   University of Tuebingen

   Email: menth@uni-tuebingen.de


























Eckert, et al.          Expires September 6, 2018              [Page 16]