<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.8 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-bier-frr-13" category="info" submissionType="IETF" tocDepth="4" tocInclude="true">
  <front>
    <title abbrev="BIER-FRR">A Framework for Fast Reroute with Bit Index Explicit Replication (BIER-FRR)</title>

    <author initials="H." surname="Chen" fullname="Huaimo Chen">
      <organization>Futurewei</organization>
      <address>
        <email>hchen.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="McBride" fullname="Mike McBride">
      <organization>Futurewei</organization>
      <address>
        <email>michael.mcbride@futurewei.com</email>
      </address>
    </author>
    <author initials="S." surname="Lindner" fullname="Steffen Lindner">
      <organization>University of Tuebingen</organization>
      <address>
        <email>steffen.lindner@uni-tuebingen.de</email>
      </address>
    </author>
    <author initials="M." surname="Menth" fullname="Michael Menth">
      <organization>University of Tuebingen</organization>
      <address>
        <email>menth@uni-tuebingen.de</email>
      </address>
    </author>
    <author initials="T." surname="Eckert" fullname="Toerless Eckert">
      <organization>Futurewei</organization>
      <address>
        <email>tte@cs.fau.de</email>
      </address>
    </author>

    <date year="2026"/>

    
    
    

    <abstract>


<?line 92?>

<t>This document provides a framework for the development of Fast Reroute (FRR)
mechanisms for Bit Index Explicit Replication forwarding (BIER-FRR). BIER-FRR
can provide protection against link or BFR failure by invoking locally
pre-determined repair paths that can react in the same time-scales as
(unicast) FRR for MPLS or IP networks - "sub 50msec", and without the creation
of additional per-path or per-flow state coordinated across multiple routers/LSR.</t>

<t>BIER-FRR can be implemed locally within a router/LSR with minimal interoperability
requirements against other router/LSR. It can therefore easily be introduced
incrementally or selectively where needed. BIER-FRR implementing nodes only
need to understand the routing topology of the network for calculation of
repair paths and know what type of unicast encapsulation can be used to send ("tunnel")
BIER packets to remote BFR.</t>

<t>This document proposes and discusses different options for BIER forwardng (BIFT) extensions
to support BIER-FRR. These are exemplary and non-normative. This document does not
specify any standards or experiments but aims to support such efforts.</t>



    </abstract>



  </front>

  <middle>


<?line 112?>

<section anchor="terminology"><name>Terminology</name>

<t>This document uses the following definitions:</t>

<t>BIER: Bit Index Explicit Replication</t>

<t>BIER-FRR: Bit Index Explicit Replication Fast ReRoute</t>

<t>BFR: Bit-Forwarding Router</t>

<t>BFR-NBR: Bit-Forwarding Neighbor</t>

<t>BFIR: Bit-Forwarding Ingress Router</t>

<t>BFER: Bit-Forwarding Egress Router</t>

<t>BIFT: Bit Index Forwarding Table</t>

<t>F-BM: Forwarding Bit Mask</t>

<t>PLR: Point of Local Repair</t>

<t>LFA: Loop Free Alternate</t>

<t>BF-BM: Backup F-BM</t>

<t>BBFR-NBR: Backup BFR-NBR</t>

<t>BFA: Backup Forwarding Action</t>

<t>BEA: Backup Entry Active</t>

</section>
<section anchor="overview"><name>Overview</name>

<t>BIER-FRR describes how IP FRR style sub-50 msec protection can be done for BIER.
The BIER-FRR mechanisms described in this document adhere to a
primary/backup path model, also known as 1:1 protection where traffic
is forwarded either over a primary path or over a backup path.</t>

<t>It is in contrast to a 1+1 protection model, where traffic is
duplicated across both primary and backup paths. That 1+1 principle has
been described by Multicast-only Fast Reroute (MoFRR) <xref target="RFC7431"/> and was explored for BIER in <xref target="BrAl17"/>.</t>

<t>This memo is informational because it is a technology primer explaining the
benefits of and mechanisms for Fast ReRoute (FRR) with Bit Inexed Explicit Replication (BIER)
stateless multicast forwarding. This document is not a standards track document because</t>

<t>o  Most if not all mechanisms possible can be implemented solely on single routers supporting
   BIER without the same or "interoperable" new mechanism to be supported by other
   routers supporting BIER.</t>

<t>o  At this point in time, it is unclear which of the advanced mechanisms presented are most
   feasible for implementation adoption in different type of routers supporting BIER,
   because the feasibility of implemeting them depend on the specifiec abilities of
   the routers forwarding plane.</t>

<section anchor="benefits"><name>Benefits</name>

<t>BIER is a novel method that allows to simplify and scale the deployments of
multicast services significantly over widely deployed technologies like
<xref target="PIM-SM"/> for IP networks including SRv6 networks or <xref target="mLDP"/> for MPLS or SR-MPLS networks.
The key novelty of BIER is that it is stateless whereas the prior mechanisms are stateful.</t>

<t>BIER-FRR allows to achieve fundamentally the same so-called "sub 50msec" recovery from link or
node failure that <xref target="IP-FRR"/> achieves the same networks for unicast traffic. Stateful
multicast mechanisms including <xref target="PIM-SM"/> and <xref target="mLDP"/> can not support FRR directly.
Instead, they must be combined with prior mechanisms to achieve link-protection (such as
<xref target="RSVP-TE"/> with <xref target="RFC4090"/> or explicit paths with SR). In summary, link-protection
with these pre-existing mechanisms is more complex and less efficient, and node-protection
is mostly considered infeasible  because of the involved complexity and excess traffic
it causes.</t>

<t>BIER-FRR likely allows for the most efficient and simple multicast FRR because it
fundamentally operates like unicast, except that a BIER packet does not indicate only
one destination but a list of multiple packets, allowing for each router to perform
unicast like forwarding plus whenever necessary replication of the packet to any
outgoing interface through which one or more of these destinations need to be reached.</t>

<t>The following sections detail these summaries.</t>

<section anchor="bier-versus-ip-multicast"><name>BIER versus IP multicast</name>

<t>BIER <xref target="RFC8279"/> is a novel method for so-called "stateless" forwarding and replication
of traffic, especially IP multicast, across networks such as Service Provider
network. BIER is intended to replace prior, so-called "stateful" methods of
IP multicast, such as the predominantly deployed <xref target="PIM-SM"/> in these networks.</t>

<t>In IP (unicast), variations in user traffic across such a Service Provider network
do only impact capacity utilization of the network (links and nodes), but not the
control-plane activity and forwarding plane state scalability: IGP and BGP
routing protocol operations and scalability and derived forwarding plane scalability
and change performance. Only changes in the network topology through failures, recovery
and network expansion cause the need for high-performance control-plane activity
and/or increased scale requirements. This makes IP unicast Service Provider network
designs arguably very easily scalable to arbitrary levels of throughput, a core
requirement for successful Service Provider network deployments.</t>

<t>In stateful IP multicast, this is not the case. Every individual new IP multicast
application, with new senders and/or receivers can create new control-plane
state (from e.g.: PIM-SM) hop-by-hop across such a Service Provider network. Every
failure or recovery of links or nodes in the network require control-plane and
forwarding-plane re-convergence that needs to be able to scale not with the
total size of the network (unicast routing table), but with the total number
of IP multicast applications. Denial of Service attacks in IP multicast are
equally not limited to attempts of overloading network bandwidth, but can more
easily attempt to overload this control-plane and forwarding-plane state through
the creation of new IP multicast application state. Because this does not even
need for the attackers to have significant bandwidth available, this attack
is a lot easier to achieve.</t>

<t>BIER resolves these issues by eliminating the per-IP-multicast application
state across Service Provider networks by utilizing fundamentally very much
the same packet forwarding paradigm as IP (unicast). The packet simply
contains a list of destinations in it's packet header (encoded very efficiently
as a bitstring), and on every hop the packet is replicated and forwarded to all the next-hop
routers towards one or more of those destinations. No IP-multicast group state is
required for this forwarding.</t>

</section>
<section anchor="frr-overview"><name>FRR for BIER versus IP/MPLS unicast and multicast</name>

<t>In IP-FRR, which is also applicable to FRR for SR-MPLS (and hence MPLS networks),
unicast packets are forwarded by every router/LSR (Label Switched Router) based</t>

<t>In IP (IPv4 and IPv6), packets are forwarded hop-by-hop in routers based on the
destination address of the packet. for each destination (prefix) the forwarding
entry indicates a next-hop which may be an outgoing interface or an outgoing
intercace with a particular next-hop-neighbor if the outgoing interface is a multi-access
subnet (like ethernet with multicast routers connected to it).</t>

<t>IP-FRR amends the per-packet forwarding with a check whether the outgoing interface or
the next-hop-neighbor are failed. If so, then the packet is instead forwarded
to a so-called FRR adjacency, which is primarily a different interface/next-hop-neighbor,
but can also involve an additional 'steering' header, such as from SR-MPLS or
<xref target="SRH"/>. These FRR adjacencies are pre-calculated by the routing control plane.</t>

<t>Note too, that these IP-FRR mechanisms are not limited to IP networks including SRv6
networks, but they are equally applicable to SR-MPLS networks.</t>

<t>In BIER-FRR, exactly the same principles of IP-FRR can be used, except that
when a BIER packet is processed by the forwarding plane, a forwarding decision needs
to be taken not only once (as in unicast), but once for every bit (destination)
in the bitstring. For each bit, an interface/next-hop-neighbor is determined and
a copy of the packet is sent to it. Unless such a copy was already made for a prior examined
bit in the packets bitstring, hence avoiding more than one copy of the packet to each
interface/next-hop-neighbor. Each packet will also receive a modified version of the
bitstring which indicates the subset of bits in the received packets bitstring
which are reachable across this same interface/next-hop-neighbor.</t>

<t>Beside being able to apply all the same mechanisms to BIER-FRR as available in
IP-FRR, BIER-FRR specifically maintains the benefit of the most efficient hop-by-hop
replication, even when a packet has to be put onto a BIER-FRR adjacency.</t>

<figure title="Example 1" anchor="example1"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="272" viewBox="0 0 272 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 144,64 L 144,80" fill="none" stroke="black"/>
<path d="M 144,112 L 144,128" fill="none" stroke="black"/>
<path d="M 96,32 L 120,32" fill="none" stroke="black"/>
<path d="M 168,32 L 184,32" fill="none" stroke="black"/>
<path d="M 144,64 L 184,64" fill="none" stroke="black"/>
<path d="M 224,64 L 240,64" fill="none" stroke="black"/>
<path d="M 32,96 L 48,96" fill="none" stroke="black"/>
<path d="M 88,96 L 120,96" fill="none" stroke="black"/>
<path d="M 160,96 L 184,96" fill="none" stroke="black"/>
<path d="M 224,96 L 240,96" fill="none" stroke="black"/>
<path d="M 144,128 L 184,128" fill="none" stroke="black"/>
<path d="M 224,128 L 240,128" fill="none" stroke="black"/>
<g class="text">
<text x="72" y="36">R10</text>
<text x="144" y="36">R11</text>
<text x="208" y="36">R12</text>
<text x="72" y="52">|</text>
<text x="200" y="52">|</text>
<text x="68" y="68">R9</text>
<text x="204" y="68">R3</text>
<text x="260" y="68">R6</text>
<text x="72" y="84">|</text>
<text x="200" y="84">|</text>
<text x="12" y="100">R0</text>
<text x="68" y="100">R1</text>
<text x="140" y="100">R2</text>
<text x="204" y="100">R4</text>
<text x="260" y="100">R7</text>
<text x="108" y="116">L1</text>
<text x="200" y="116">|</text>
<text x="204" y="132">R5</text>
<text x="260" y="132">R8</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
        R10 ---- R11 --- R12
         |               |
        R9        .----- R3 --- R6
         |        |      |
 R0 --- R1 ----- R2 ---- R4 --- R7
             L1   |      |
                  '----- R5 --- R8
]]></artwork></artset></figure>

<t>pre-existing unicast LFA algorithms for LFA from R1 to R6 in case of R2 failure
would for example calculate that it is sufficient to encapsulate a packet up to
R10 but towards R8, that encapsulation endpoint would need to be R11 because
R10 would send back packets to R8 to R9 because that is its shorted path
(before reconvernce).</t>

<t>Consider some multicast packets from R0 would need to be received by a subset of (R6,R7,R8).
They would be forwarded from R0 to R1, by R1 to R2, and from R2 to R3, R4, R5 to then
reach R6, R7, R8. Assume one multicast group, G1 would only need to go to R6.
R2 would then have multicast forwarding state G1 -&gt; (R3) to copy the packet only to R3.
Another group G2 would need to go to R6, R7, R8. R2 would then have G2 -&gt; (R3, R4, R5)
meaning it would replicate packets to G1 to R3, R4 and R5.</t>

<t>Assumme R2 fails. FRR in R1 would recognize this as a failure of the link to R2
and be configured to assume this indicates failure of R2 and hence pre-established
R2 node-protection FRR would kich in. Instead of sending a packet to R2, R1 it would
send the packet onto the FRR packup path. With 
existing stateful multicast, FRR in R1 would have needed to pre-calculate and install
three unicast backup path ("tunnels"). R1-...-&gt;R3, R1-...-&gt;R4 and R1-...-&gt;R5. R1 would
then have to send three copies of each multicast packet, one into each backup path.
If this was a packet for G1, then two of these copies would be in wain and be discarded
by R4 and R5.</t>

<t>If a stateful multicast FRR solution would want to avoid such unnecessary excess traffic,
it would need to install per group FRR state - a separate state for G1 and G2. In real
networks there are not just 2 groups but thousands (#G). In the picture, R1 only has one
outgoing interface to which to replicate. In a real network, it would have on average
N outgoing interfaces/next-hops and this type of traffic optimized FRR for stateful
multicast would create #G*N additional states on each hop.  In addition, new protocol
mechanisms to signal all this information would need to be developed, because today,
R1 would not know which group would need to go to which subset of R3,R4,R5. Such
protocol mechanisms where never developed and hence this type of stateful FRR for
"node protection" (in this case for the failure of R2) is just theoretical.</t>

<t>With BIER-FRR, the solution becomes extremely simple for this example. The BIER-FRR control
plane in R1 can calculate that the FRR adjacency for the case of R2 failing for all
three possible destinations R6, R7, R8 can be R11.
When R1 recognizes failure of (link to) R2, it would send the BIER packet with
exactly the same bits encapsulated towards R11 (via R9, R10) and there normal BIER forwarding proceeds.
According to the subset of bits for R6, R7, R8 set in the bitstring, R3,R4,R5 would make according
copies. Like in FRR for unicast, it does not matter to BIER that the packet did
arrive from R10 as opposed to R2, it is only revelant what destinations it has
(in its bitstring).</t>

<t>R2 could not simply send the packt to R9, because it is not aware of R2 having failed,
so its routing table would send packet packets for R6,R7,R8 towards R1 because that 
is the shortest path from R9 to R6,R7,R8. Likewise, R10 too would still send back
packets towards R8 to R1. Only for R11 are paths not across the failed R2 the
shortest path towards R6,R7,R8.</t>

<t>Note that the forwarding described for BIER-FRR here is LFA-based BIER-FRR in the
terminology introduced later in this document.</t>

</section>
</section>
<section anchor="introduction"><name>Introduction</name>

<t>The protection level offered by BIER-FRR can be either link protection
or node protection. This is like in IP FRR and both of them can co-exist.</t>

<t>Link protection is limited to safeguarding against link failures and
is simpler to implement but will not be effective if a BFR neighbor fails.</t>

<t>Node protection, while more complex, also guards against the failure
of BFRs.  The choice of backup strategy determines the selection of backup
forwarding entries.</t>

<t>As in IP FRR, one would typically use node protection and apply link-protection
only when the next-hop node is the actual destination (BFER), so that only
link-protection makes sense.</t>

<t>The followin introductory text explains the two fundamental approaches
to BIER-FRR, one being tunnel-based BIER-FRR, and the other being
LFA-based BIER-FRR.</t>

<section anchor="tunnel-based-bier-frr"><name>Tunnel-based BIER-FRR</name>

<t>In this approach, a BIER forwarding entry to a BFR-NBR is replaced by
an (IP)-FRR protected adjacency which encapsulates the BIER packet
into a unicast packet towards that BFR-NBR. This is exactly what
classicial (non IP) FRR in MPLS was and is doing with RSVP-TE backup
tunnels. Hence the name tunnel-based.</t>

<t>For example, assuming the topology of <xref target="example1"/> and R1 as the BFR where
this form of FRR is to be installed. Usually a BIER forwarding entry
towards R2 is simply an L2 adjacency for BIER packets. Instead, that L2 adjacency
towards R2 is set to be a unicast encapsulation (IPv4, IPv6 or SR-MPLS) with
a unicast IPv4/IPv6 destination of R2. In the case of SR-MPLS, the
actual encapsulation will have an MPLS SID for the IPv4 and/or IPv6
address of R2.</t>

<t>Absent a failure of link L1, this change means simply an "unnecessary"
encapsulation of BIER packets from R1 to R2 and decapsulation there.</t>

<t>If instead, the link L1 fails, the BIER packet on R1 will get
encapsulated into the unicast packet, and once it is to be forwarded as
unicast, the unicast forwarding will determine that the link L1 has failed
and will hence forward the packet on the pre-calculated unicast FRR
adjacency towards R2. In the <xref target="example1"/> topology this means that
so-called TI-LFA (Topology Independent LFA) has to be used which can
calculate that packets towards R2 (in case of L1 link failures) need
to be encapsulated with a destination address of R11 - because 
sending the FRR packet only towards R9 or R10 would have it be
returned towards R1. In other topologies, simple (non TI) LFA may
suffice. In those cases, the FRR adjacency would simply be to
send the unicast packet to another next-hop without additional
encapsulation.</t>

<section anchor="limitations"><name>Limitations</name>

<t>Tunnel-based BIER-FRR is only applicable to link-protection but not
node-protection. This is because Tunnel-based BIER-FRR is based on
only having to replace BIER (L2) adjacencies with already existing FRR
protected unicast adjacencies. Tunnel-based BIER-FRR is not
applicable to node-protection because a failure of the next-hop
means that some other router in the network would need to replace
the replications of  BIER packet that this failed router could have
done, and there is no unicast FRR function that would do this.</t>

<t>The traffic efficiency of Tunnel-based BIER-FRR is typically lower
than that of LFA-based BIER-FRR because the traffic needs to be 
tunneled towards the BIER-NH and from there back as a regular
BIER packet. In the topology of <xref target="example1"/> a Tunnel-based BIER-FRR
packet from R1 to R6 would go R1-R9-R10-R11-R11-R12-R3-R2(decap)-R3-R6,
whereas as described in before, LFA-based would have it simply go
R1-R9-R10-R11-R11-R12-R3-R6 (not via R2).</t>

<t>Because Tunnel-based BIER-FRR requires FRR protected adjacencies to
a next-hop, unicast FRR needs to be configured to not only provide
node-protection adjacencies but also link-protection adjacencies
to all direct neighbors that are also BIER neighbors. This should
be standard unicast FRR deployment though when node-protection is
used.</t>

</section>
<section anchor="benefits-1"><name>Benefits</name>

<t>Tunnel-based BIER-FRR is least demanding to the BIER forwarding plane and
should be most easy to implement on any BFR already supporting unicast LFA.
No changes to the BIER forwarding tables (BIFT) are required other than
replacing the BFR-NBR entries.</t>

<t>For both unicast and BIER, Tunnel-based FRR is logically something
that can happen at the link-layer, not impacting the forwarding table,
and hence not requiring to scale with the size of the forwarding table.
Instead of sending a packet to a neighbor in a connected subnet, FRR
protection adds a check whether the interface to the subnet is up and/or
the neighbor is alive, and if not, then packet is instead redirected
to another interface (or neighbor on the same interface) with an
additional encapsulation.</t>

<t>The interoperability requirement for Tunnel-based is solely that the 
tailends of pre-calculated unicast FRR adjacencies are also BFR and will
accept to forward unicast FRR encapsulated BIER packets as BIER again
after decapsulation.</t>

<t>When the total amount of multicast/BIER traffic is insignificant compared
to the overall bandwidth in the network, the traffic inefficiencies of
Tunnel-based BIER-FRR may be irrelevant, but the inability to provide
node-protection may be insufficient.</t>

<t>Tunnel-based BIER-FRR does not necessarily have to be built from (IP)-LFA
based unicast adjacencies. It can equally be built from RSVP-TE tunnels
with FRR protection (or any other unicast FRR protected tunnels), which
may be attractive if those already exist in the network.</t>

</section>
</section>
<section anchor="lfa-based-bier-frr"><name>LFA-based BIER-FRR</name>

<t>In LFA-based BIER-FRR as in (unicast) IP FRR, the goal is to directly
get packets in the failure situation as directly as possible to
the ultimate destinations insted of back to the next-hop router
as in Tunnel-Mode.</t>

<t>The mechanisms are exactly the same as in unicast IP FRR, specifically
that it requires to establish for every destination in the unicast
or BIER forwarding table (BIFT) new "FRR protected" adjacencies", and
hence it requires additional forwarding resources in the order of
forwarding table entries. These can often be optimized, but it does
cost overall more forwarding plane resources than Tunnel-based BIER-FRR.</t>

<t>BIER-FRR will often be able to re-use pre-existing (unicast) IP FRR
adjcancies in the BIER forwarding table (BIFT), but there are some
optimizations and differences to observe. These are described here.</t>

<section anchor="principles-of-unicast-lfa"><name>Principles of (unicast) LFA</name>

<t>The principles of unicast LFA are to determine a path from the node
determining an adjacent link or node failure towards some desting
assuming that the intermediate hops on this alternative path still
have the routing tables in which there is no failed link or node.
The problem with this principle is that nodes along the best
alternative path would not send packets along the intended path
but back to where they come from because without a failure, that
could be the best path for them.</t>

<t>Using the example of <xref target="example2"/>, and examining the case
where R1 tries to calculate unicast link-protection FRR for the failure
of link L1. It calculates for each of the destinations of interest,
R6, R7 and R8 the shortest path. Each of these path goes along</t>

<figure title="Example 2" anchor="example2"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="296" viewBox="0 0 296 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 112,32 L 112,40" fill="none" stroke="black"/>
<path d="M 184,64 L 200,64" fill="none" stroke="black"/>
<path d="M 160,128 L 208,128" fill="none" stroke="black"/>
<path d="M 248,128 L 264,128" fill="none" stroke="black"/>
<path d="M 64,160 L 120,160" fill="none" stroke="black"/>
<path d="M 160,160 L 208,160" fill="none" stroke="black"/>
<path d="M 248,160 L 264,160" fill="none" stroke="black"/>
<path d="M 160,192 L 208,192" fill="none" stroke="black"/>
<path d="M 248,192 L 264,192" fill="none" stroke="black"/>
<path d="M 144,176 L 152,192" fill="none" stroke="black"/>
<path d="M 144,144 L 152,128" fill="none" stroke="black"/>
<g class="text">
<text x="96" y="36">(q6</text>
<text x="128" y="36">q7)</text>
<text x="188" y="36">(q8,q7,q6)</text>
<text x="56" y="52">(p)</text>
<text x="104" y="52">(p)</text>
<text x="160" y="52">(p)</text>
<text x="48" y="68">R11</text>
<text x="76" y="68">--</text>
<text x="104" y="68">R12</text>
<text x="132" y="68">--</text>
<text x="160" y="68">R13</text>
<text x="224" y="68">R14</text>
<text x="48" y="84">|</text>
<text x="224" y="84">|</text>
<text x="60" y="100">R10(p)</text>
<text x="232" y="100">R15</text>
<text x="48" y="116">|</text>
<text x="224" y="116">|</text>
<text x="56" y="132">R9(p)</text>
<text x="228" y="132">R3</text>
<text x="284" y="132">R6</text>
<text x="48" y="148">|</text>
<text x="224" y="148">|</text>
<text x="16" y="164">R0-</text>
<text x="44" y="164">R1</text>
<text x="140" y="164">R2</text>
<text x="228" y="164">R4</text>
<text x="284" y="164">R7</text>
<text x="84" y="180">L1</text>
<text x="224" y="180">|</text>
<text x="228" y="196">R5</text>
<text x="284" y="196">R8</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
              (q6,q7) (q8,q7,q6)
         (p)   (p)    (p)
        R11 -- R12 -- R13 --- R14 
         |                     |
        R10(p)                 R15 
         |                     |
        R9(p)         /------- R3 --- R6
         |           /         |
    R0- R1 -------- R2 ------- R4 --- R7
             L1      \         |
                      \------- R5 --- R8
]]></artwork></artset></figure>

<t>LFA characterizes routers along an FRR path by whether they
are part of the so-called P-space and/or Q-space <xref target="RFC7490"/>.</t>

<t>The p)re-converge space are all routers that can be reached
from the router of interest (R1) in the pre-convergence routing
table without going through the failed link (or node). For
example from R1 under failure of L1 or R2, the routers
R9, R10, R11, R12 and R13 are in p-space. R14 is not in p-space
anymore because assuming all links have equal cost, the
path from R9 to R14 is ECMP through either R1 and the
failed link/node or R10. And R1 can not know which route
R9 is using. So packets from R1 to R14 via R9 might be
returned by R9. And R15 is most easily not in p-space anymore,
because R9 would be guaranteed to send packets from R1 towards
R15 back to R1.</t>

<t>q-space is the reverse p-space (as q is typographically a reverse p),
indicating whether a router can reach the ultimate destination
without going through the failed link/node in the pre-converged
routing tables.</t>

<t>R13 is in the q-space for R8, whereas
R12 is not. It has ECMP paths via R13 and R11, and the
path via R11 would go via the failed link/node (L1/R2).
However, R12 is in q-space for R6 and R7 though.</t>

<t>The FRR logic is now simply that if packets can not be sent
directly to an alternative next-hop without encapsulation,
then they need to be encapsulated and sent to a router that
is both in p-space and q-space for the final destination.
Because R9 is not in q-space for any of the destinations of
interest in BIER, directly sending packets to R9 does not
work - whether link failure of L1 is assumed, or node failure of R2.</t>

<t>Instead, R1 would create for R6 an FRR adjacency encapsulating
the packet with an appropriate unicast encapsulation destined
to R12 or R13 and make R9 the next-hop for this encapsulated packet.
Likewise for R7. For R8, it would need to use R13 as the encapsulation
destination.  Most likely R1 would pick R12 for R6 and R7 because the
path with encapsulation is typically choosen to be as short
as possible but with most often insignificant differences.</t>

</section>
<section anchor="optimization"><name>Adjustments for BIER-FRR</name>

<t>If the same logic as for unicast is choosen for BIER-FRR, it does make a significant
difference whether R12 or R13 are picked as FRR for R6,R7 or if
R13 is picked. For BIER, the same FRR adjacency "encapsualte towards R13"
would mean that a BIER packet destined to R6 and R8 could be sent once
across that FRR adjcency. If instead R6,R7 had the "encapsulate towards R12"
FRR adjacency, and R8 "encapsulate towards R13", then BIER would need
to send two copies of that BIER packet to R6,R8: once encapsulated for
R6 towards R12 and once encapsulated for R8 towards R13. In this case,
if L1 or R2 are failling, R1 would need to send two copies of the
same packet instead of one if R13 was choosen as the pq-router for
R6, R7 and R8.</t>

<t>So, while the principle of unicast FRR holds true, BIER makes it
more beneficial to choose longer encapsulated paths to minimize
unnecessary replications. On the other hand (not shown by example
topology), longer encapsulation paths may also result in longer
paths from the point of decapsulation, and there may be a more
complex weighting of multiple copies across the same encapsulated
path versus such longer paths after the decapsulation.</t>

</section>
<section anchor="topology-independent-frr"><name>Topology Independent FRR</name>

<t>A simple encapsulation towards a router in pq-space
may not suffice. This is the same for BIER-FRR as it is for unicast FRR.</t>

<figure title="Example 3" anchor="example3"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="264" viewBox="0 0 264 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 64,64 L 64,96" fill="none" stroke="black"/>
<path d="M 152,80 L 176,80" fill="none" stroke="black"/>
<path d="M 216,80 L 232,80" fill="none" stroke="black"/>
<path d="M 80,112 L 112,112" fill="none" stroke="black"/>
<path d="M 152,112 L 176,112" fill="none" stroke="black"/>
<path d="M 216,112 L 232,112" fill="none" stroke="black"/>
<path d="M 152,144 L 176,144" fill="none" stroke="black"/>
<path d="M 216,144 L 232,144" fill="none" stroke="black"/>
<path d="M 16,192 L 32,192" fill="none" stroke="black"/>
<path d="M 136,128 L 144,144" fill="none" stroke="black"/>
<path d="M 136,96 L 144,80" fill="none" stroke="black"/>
<circle cx="16" cy="176" r="6" class="closeddot" fill="black"/>
<circle cx="24" cy="176" r="6" class="closeddot" fill="black"/>
<circle cx="32" cy="176" r="6" class="closeddot" fill="black"/>
<circle cx="104" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="128" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="136" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="144" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="152" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="160" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="168" cy="48" r="6" class="closeddot" fill="black"/>
<circle cx="176" cy="48" r="6" class="closeddot" fill="black"/>
<g class="text">
<text x="92" y="36">(p6,p7,p8)</text>
<text x="212" y="36">(q6,q7,q8)</text>
<text x="64" y="52">R10</text>
<text x="92" y="52">**</text>
<text x="116" y="52">**</text>
<text x="200" y="52">R13</text>
<text x="116" y="68">L2</text>
<text x="192" y="68">|</text>
<text x="196" y="84">R3</text>
<text x="252" y="84">R6</text>
<text x="192" y="100">|</text>
<text x="12" y="116">R0</text>
<text x="36" y="116">--</text>
<text x="60" y="116">R1</text>
<text x="132" y="116">R2</text>
<text x="196" y="116">R4</text>
<text x="252" y="116">R7</text>
<text x="100" y="132">L1</text>
<text x="192" y="132">|</text>
<text x="196" y="148">R5</text>
<text x="252" y="148">R8</text>
<text x="48" y="180">-</text>
<text x="76" y="180">high</text>
<text x="116" y="180">link</text>
<text x="156" y="180">cost</text>
<text x="192" y="180">100</text>
<text x="48" y="196">-</text>
<text x="72" y="196">low</text>
<text x="116" y="196">link</text>
<text x="156" y="196">cost</text>
<text x="184" y="196">1</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
        (p6,p7,p8)     (q6,q7,q8)
        R10 ************ R13
         |     L2        |
         |         /---- R3 --- R6
         |        /      |
  R0 -- R1 ----- R2 ---- R4 --- R7
             L1   \      |
                   \---- R5 --- R8

   *** - high link cost 100
   --- - low  link cost 1
]]></artwork></artset></figure>

<t>Consider in <xref target="example3"/> that a link between R10 and R13 has a
significantly higher cost than the other links in the topology.
In result, R10 is in p-space, R13 in q-space and hence there is
no single router in pq-space that R1 could encapsulate packets to to
reach R6, R6, R8 under failure of L1 or R2. If R1 would want to
send packets to ANY node in the topology across R10 under failure
of L1 or R2, R10 would simply send them back because of the
high cost of L2.</t>

<t>To get packets across L2, a steering encapsulation is required that
does ignore the actual IGP routing table. For example with
SR-MPLS or SRv6 this could be a two-hop SID list, once to R10
and then to an adjacency-SID for R13. An adjacency SIP would only
be possible to interpret by R10 and indicate to R10 to forward
the packet to the interface of R13 connecting to R10. This type
of FRR solutions are documented in <xref target="RFC9855"/>. There are
no additional considerations for BIER-FRR.</t>

</section>
<section anchor="partitioned"><name>Partitioned q-space</name>

<t>Even though the big advantage of BIER-FRR with node protection
is that it allows most often and as shown in the prior example <xref target="example2"/>
to send out just one copy of a packet to an FRR adjacency instead
of to the primary adjacency, there are also cases that more
than one copy need to be sent. This is always true in BIER-FRR
node protection, when a BIER packet though the primary adjacency
would have to reach multiple destinations (BFER) and the q-spaces
for those destinations are non-overlapping (partitioned).</t>

<t>In <xref target="example4"/>, R1 is the PLR and R2 is the node assumed to fail.
R1 would have a BIFT in which R5, R6, R7, R8 are reachable via R2,
but in case of a node failure of R2, there is no single node which
is in q-space for all of R5, R6, R7, R8 (shown as p5, p6, p7, p8).
R12 for example is only in p-space for R1 but not in q-space for
any destination because it would go via R1 to reach any of R5, R6, R7, R8.</t>

<figure title="Example 4" anchor="example4"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="336" viewBox="0 0 336 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 120,32 L 120,40" fill="none" stroke="black"/>
<path d="M 248,32 L 248,40" fill="none" stroke="black"/>
<path d="M 200,96 L 256,96" fill="none" stroke="black"/>
<path d="M 288,96 L 304,96" fill="none" stroke="black"/>
<path d="M 32,112 L 56,112" fill="none" stroke="black"/>
<path d="M 200,128 L 256,128" fill="none" stroke="black"/>
<path d="M 288,128 L 304,128" fill="none" stroke="black"/>
<g class="text">
<text x="104" y="36">(q5</text>
<text x="136" y="36">q8)</text>
<text x="184" y="36">(q5,q6)</text>
<text x="232" y="36">(q5</text>
<text x="264" y="36">q6)</text>
<text x="132" y="52">(p1)</text>
<text x="188" y="52">(p1)</text>
<text x="236" y="52">(p1)</text>
<text x="100" y="68">--</text>
<text x="128" y="68">R11</text>
<text x="156" y="68">--</text>
<text x="184" y="68">R10</text>
<text x="208" y="68">-</text>
<text x="232" y="68">R12</text>
<text x="256" y="68">-</text>
<text x="276" y="68">R3</text>
<text x="300" y="68">--</text>
<text x="324" y="68">R5</text>
<text x="88" y="84">/</text>
<text x="264" y="84">/</text>
<text x="280" y="84">\</text>
<text x="80" y="100">|</text>
<text x="192" y="100">/</text>
<text x="324" y="100">R6</text>
<text x="12" y="116">R0</text>
<text x="80" y="116">R12</text>
<text x="108" y="116">--</text>
<text x="132" y="116">R1</text>
<text x="156" y="116">--</text>
<text x="180" y="116">R2</text>
<text x="64" y="132">(p1)|</text>
<text x="156" y="132">L1</text>
<text x="192" y="132">\</text>
<text x="324" y="132">R7</text>
<text x="88" y="148">\</text>
<text x="264" y="148">\</text>
<text x="280" y="148">/</text>
<text x="100" y="164">--</text>
<text x="128" y="164">R13</text>
<text x="156" y="164">--</text>
<text x="180" y="164">R9</text>
<text x="204" y="164">--</text>
<text x="228" y="164">R4</text>
<text x="248" y="164">-</text>
<text x="272" y="164">R13</text>
<text x="300" y="164">--</text>
<text x="324" y="164">R8</text>
<text x="132" y="180">(p1)</text>
<text x="180" y="180">(p1)</text>
<text x="228" y="180">(p1)</text>
<text x="120" y="196">(q7,q8)</text>
<text x="184" y="196">(q7,q8)</text>
<text x="248" y="196">(q7,q8)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
                (q5,q8) (q5,q6) (q5,q6)
                   (p1)   (p1)  (p1)
                -- R11 -- R10 - R12 - R3 -- R5
               /                     / \
              |             /--------   --- R6
     R0 ---- R12 -- R1 -- R2
          (p1)|        L1   \--------   --- R7
               \                     \ /
                -- R13 -- R9 -- R4 - R13 -- R8
                   (p1)  (p1)  (p1)
                (q7,q8) (q7,q8) (q7,q8)
                      
]]></artwork></artset></figure>

<t>In result, R1 does need to create an FRR adjacencies for R5 and R6
towards R11 and one for R7 and R8 towards R13. If then a packet comes
towards all of R5, R6, R7, R8, R1 will create one copy towards
R11 for R5 and R6, and another copy towards R13 for R7 and R8.
This creates double the amount of originally received traffic from
R12 back towards R12, but from there on, it again has only
one copy on each link as opposed to any non-BIER FRR mechanism
which would still carry two copies for example one for R5 and another
for R6.</t>

<t>See <xref target="bier-in-bier"/> for discussions of non-working enhancements.</t>

</section>
</section>
</section>
</section>
<section anchor="bift-forwarding-for-frr"><name>BIFT forwarding for FRR</name>

<t>This chapter describes how BIER-FRR forwarding can be modelled for the BIER
forwarding plane. It starts by refreshing the BIER forwarding table behavor
to then introduce three models for how FRR can be added, and finishes with
the complex example for how to handle partitioned q-space in them.</t>

<section anchor="reference-example-with-bier-forwarding-table-bift"><name>Reference Example with BIER forwarding table (BIFT)</name>

<t><xref target="RFC8279"/>, Figure 3, specifies the BIER forwarding conceptually through the
structure of the Bit Index Forwarding Table (BIFT). It is summarized here
for convenience and to describe the FRR options in the following sections.</t>

<t><xref target="example5"/> shows a simple topology used to re-summarize BIER forwarding
as well as the FRR options. We look at the forwarding table on R2 and the possible
failures of its downstream BFR-NBR R3,R4,R5. R6,R7,R8,R9,R10,R11 are BFER and
thus have bits in the bitstring of BIER packets.</t>

<figure title="Example 5 toplogy" anchor="example5"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="280" viewBox="0 0 280 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 32,96 L 48,96" fill="none" stroke="black"/>
<path d="M 88,96 L 104,96" fill="none" stroke="black"/>
<path d="M 136,96 L 152,96" fill="none" stroke="black"/>
<path d="M 136,160 L 152,160" fill="none" stroke="black"/>
<path d="M 72,112 L 92,152" fill="none" stroke="black"/>
<path d="M 72,80 L 92,40" fill="none" stroke="black"/>
<g class="text">
<text x="100" y="36">--</text>
<text x="124" y="36">R3</text>
<text x="148" y="36">--</text>
<text x="172" y="36">R6</text>
<text x="252" y="36">(BFER)</text>
<text x="136" y="52">\</text>
<text x="152" y="52">/</text>
<text x="176" y="52">\</text>
<text x="144" y="68">R12</text>
<text x="188" y="68">R7</text>
<text x="252" y="68">(BFER)</text>
<text x="136" y="84">/</text>
<text x="152" y="84">\</text>
<text x="12" y="100">R1</text>
<text x="68" y="100">R2</text>
<text x="124" y="100">R4</text>
<text x="172" y="100">R8</text>
<text x="252" y="100">(BFER)</text>
<text x="136" y="116">\</text>
<text x="152" y="116">/</text>
<text x="184" y="116">\</text>
<text x="144" y="132">R13</text>
<text x="196" y="132">R9</text>
<text x="252" y="132">(BFER)</text>
<text x="136" y="148">/</text>
<text x="152" y="148">\</text>
<text x="100" y="164">--</text>
<text x="124" y="164">R5</text>
<text x="176" y="164">R10</text>
<text x="252" y="164">(BFER)</text>
<text x="184" y="180">\</text>
<text x="192" y="196">R11</text>
<text x="252" y="196">(BFER)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
                -- R3 -- R6      (BFER)
               /     \ /  \
              /      R12   R7    (BFER)
             |       / \
     R1 --- R2 --- R4--- R8      (BFER)
             |       \ /   \ 
              \      R13    R9   (BFER)
               \     / \
                -- R5--- R10     (BFER)
                           \
                           R11   (BFER)
]]></artwork></artset></figure>

<t>Assuming the BIFT on R2 was created with the help of a normal shortest path routing protocol,
 it would look as shown in <xref target="e5-bier"/>.</t>

<figure title="Example 5 R2 BIFT (without FRR)" anchor="e5-bier"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="248" viewBox="0 0 248 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 240,32" fill="none" stroke="black"/>
<path d="M 8,62 L 240,62" fill="none" stroke="black"/><path d="M 8,66 L 240,66" fill="none" stroke="black"/>
<path d="M 8,96 L 240,96" fill="none" stroke="black"/>
<path d="M 8,128 L 240,128" fill="none" stroke="black"/>
<path d="M 8,160 L 240,160" fill="none" stroke="black"/>
<path d="M 8,192 L 240,192" fill="none" stroke="black"/>
<path d="M 8,224 L 240,224" fill="none" stroke="black"/>
<path d="M 8,256 L 240,256" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="108" y="52">F-BM</text>
<text x="160" y="52">|</text>
<text x="200" y="52">BFR-NBR</text>
<text x="240" y="52">|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R6</text>
<text x="80" y="84">|</text>
<text x="112" y="84">R6,R7</text>
<text x="160" y="84">|</text>
<text x="180" y="84">R3</text>
<text x="240" y="84">|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R7</text>
<text x="80" y="116">|</text>
<text x="112" y="116">R6,R7</text>
<text x="160" y="116">|</text>
<text x="180" y="116">R3</text>
<text x="240" y="116">|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R8</text>
<text x="80" y="148">|</text>
<text x="112" y="148">R8,R9</text>
<text x="160" y="148">|</text>
<text x="180" y="148">R4</text>
<text x="240" y="148">|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R9</text>
<text x="80" y="180">|</text>
<text x="112" y="180">R8,R9</text>
<text x="160" y="180">|</text>
<text x="180" y="180">R4</text>
<text x="240" y="180">|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R10</text>
<text x="80" y="212">|</text>
<text x="120" y="212">R10,R11</text>
<text x="160" y="212">|</text>
<text x="180" y="212">R5</text>
<text x="240" y="212">|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R11</text>
<text x="80" y="244">|</text>
<text x="120" y="244">R10,R11</text>
<text x="160" y="244">|</text>
<text x="180" y="244">R5</text>
<text x="240" y="244">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       ------------------------------
       | BFR-id | F-BM    | BFR-NBR |
       ==============================
       | R6     | R6,R7   | R3      |
       ------------------------------
       | R7     | R6,R7   | R3      |
       ------------------------------
       | R8     | R8,R9   | R4      |
       ------------------------------
       | R9     | R8,R9   | R4      |
       ------------------------------
       | R10    | R10,R11 | R5      |
       ------------------------------
       | R11    | R10,R11 | R5      |
       ------------------------------
]]></artwork></artset></figure>

<t>Each line of the BIFT is an entry for one BFER identified in this represenation
by it's BFR-id in the first colum. F-BM is a bitstring represented by the BFR-id
included in it. The F-BM exists to suppress multiple copies to the same downstream
BFR-NBR. The BFR-NBR is the third colum.</t>

<t>In result, a BIER packet whose bitstring indicates R6,R7,R8,R9,R10,R11 would
be replicated by R2 into one BIER packet to R3 with a bitstring indicating R6,R7,
one BIER packet to R4 indicating R8,R9 and one BIER packet to R5 indicating R10,R11.
This happens according to <xref target="RFC8279"/> through the standard BIER forwarding code as shown in
<xref target="bier-fwd"/>, copied from <xref target="RFC8279"/>, Figure 4. The bitstring
of each of the copies only contains a subset of BFER each because of the
"&amp;" operation of the pseudocode driven by the BIFT entries F-BM field.</t>

<figure title="BIER forwarding pseudocode" anchor="bier-fwd"><artwork align="center"><![CDATA[
void ForwardBitMaskPacket (Packet)
   {
       SI=GetPacketSI(Packet);
       Offset=SI*BitStringLength;
       for (Index = GetFirstBitPosition(Packet->BitString); Index ;
            Index = GetNextBitPosition(Packet->BitString, Index)) {
           F-BM = BIFT[Index+Offset]->F-BM;
           if (!F-BM) continue;
           BFR-NBR = BIFT[Index+Offset]->BFR-NBR;
           PacketCopy = Copy(Packet);
           PacketCopy->BitString &= F-BM;
           PacketSend(PacketCopy, BFR-NBR);
           Packet->BitString &= ~F-BM;
       }
   }
]]></artwork></figure>

<t>The following three sections introduce three different
Forwarding Models for BIER with FRR and their associated modified or
extended BIFTs. These three models result not only in different complexities
of implementation, but also in three different outcomes (packets replicated)
in the case of failures of one of the three neighbors from R2: R3, R4 or
R5.</t>

<t>Because of differences in outcome, operators need to be aware which model
is actually employed by a BFR so that they can validate whether the observed
behavior matches the expected behavior (routing, BFR are not malfunctioning), and to
be able to do capacity planning, especially under FRR failures - they need
to be able to simulate which links/path will have how much additional, FRR
re-routed BIER traffic under failures.</t>

<t>These models do give good indication how easy or complex implementations are,
but they are far from being explicit implementation suggestions.</t>

<t>These three models are likely not all possible models how FRR for BIER
can be supported through modified or extended BIFT, but not only do they
show likely three significantly interesting option, instead, the way they
are specified here are also meant to be examples of the type of documentation
necessary when implementing yet another model. It simply follows and extends
the approach used by <xref target="RFC8279"/>.</t>

</section>
<section anchor="aFRR"><name>BIFT with adjacency FRR (BIER-aFRR)</name>

<t>In the BIER-aFRR model, FRR is modelled with no changes
to the BIER forwarding/replication algorithm shown in <xref target="bier-fwd"/>.
Instead, it leverages the same approach as unicast FRR, enhancing only the
neighbor information to which a packet is to be sent, as shown in
<xref target="e5-bier-afrr"/>.</t>

<figure title="Example 5 R2 BIFT with unicast FRR (aFRR)" anchor="e5-bier-afrr"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="264" viewBox="0 0 264 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 256,32" fill="none" stroke="black"/>
<path d="M 8,62 L 256,62" fill="none" stroke="black"/><path d="M 8,66 L 256,66" fill="none" stroke="black"/>
<path d="M 8,96 L 256,96" fill="none" stroke="black"/>
<path d="M 8,128 L 256,128" fill="none" stroke="black"/>
<path d="M 8,160 L 256,160" fill="none" stroke="black"/>
<path d="M 8,192 L 256,192" fill="none" stroke="black"/>
<path d="M 8,224 L 256,224" fill="none" stroke="black"/>
<path d="M 8,256 L 256,256" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="108" y="52">F-BM</text>
<text x="160" y="52">|</text>
<text x="200" y="52">BFR-NBR</text>
<text x="256" y="52">|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R6</text>
<text x="80" y="84">|</text>
<text x="112" y="84">R6,R7</text>
<text x="160" y="84">|</text>
<text x="216" y="84">LFA(R3,R4)|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R7</text>
<text x="80" y="116">|</text>
<text x="112" y="116">R6,R7</text>
<text x="160" y="116">|</text>
<text x="216" y="116">LFA(R3,R4)|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R8</text>
<text x="80" y="148">|</text>
<text x="112" y="148">R8,R9</text>
<text x="160" y="148">|</text>
<text x="216" y="148">LFA(R4,R3)|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R9</text>
<text x="80" y="180">|</text>
<text x="112" y="180">R8,R9</text>
<text x="160" y="180">|</text>
<text x="216" y="180">LFA(R4,R3)|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R10</text>
<text x="80" y="212">|</text>
<text x="120" y="212">R10,R11</text>
<text x="160" y="212">|</text>
<text x="216" y="212">LFA(R5,R4)|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R11</text>
<text x="80" y="244">|</text>
<text x="120" y="244">R10,R11</text>
<text x="160" y="244">|</text>
<text x="216" y="244">LFA(R5,R4)|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       --------------------------------
       | BFR-id | F-BM    | BFR-NBR   |
       ================================
       | R6     | R6,R7   | LFA(R3,R4)|
       --------------------------------
       | R7     | R6,R7   | LFA(R3,R4)|
       --------------------------------
       | R8     | R8,R9   | LFA(R4,R3)|
       --------------------------------
       | R9     | R8,R9   | LFA(R4,R3)|
       --------------------------------
       | R10    | R10,R11 | LFA(R5,R4)|
       --------------------------------
       | R11    | R10,R11 | LFA(R5,R4)|
       --------------------------------
]]></artwork></artset></figure>

<t>To emphasize that BIER forwarding stays unchanged, the FRR behavior
is solely modelled inside the PacketSend procedure as shown in <xref target="afrr-pseudocode"/>.</t>

<figure title="aFRR pseudocode" anchor="afrr-pseudocode"><artwork align="center"><![CDATA[
void PacketSend(PacketCopy, bfrnbr)
    {
        if(bfrnbr == LFA(primary, backup)) {
            if(IsUp(primary) {
                PacketSend(PacketCopy, primary) 
            } else {
                PacketSend(PacketCopy, backup)
            }
        } else {
           ... pre-existing non-aFRR forwarding...
        }
    }
]]></artwork></figure>

<t>This simple pseudocode shows only support for an aFRR adjacency that
is equivalent to unicast LFA, because this is the only option required
in Example 5. When the primary BFR-NBR is down, the BIER packet is 
simply sent to the backup BFR neighbor which is another directly connected BFR neighbor.
When remote LFA or TI-LFA adjacencies are required due to topology as explained
above, the code and BIFT entry options accordingly need to be enhanced with
options expressing such LFA adjacencies with additional encapsulations.</t>

<t>It should be possible to share pre-existing unicast LFA code (including
such remote LFA and TI-LFA code) for this option, so BFER-uFRR should
be the option with the least amount of new development and most sharing
with unicast FRR.</t>

<t>When using aFRR with the example BIFT, the aforementioned BIER
packet to  R6,R7,R8,R9,R10,R11 would always send two packet copies to one of the
two remaining neighbors out of R3,R4,R5, if one of the three
neighbors is down.</t>

<t>If R3 is down, R1 would first send a copy for R6,R7 towards R4 in
result of "LFA(R3,R4)" in the R6 BIFT entry - and R3 being down.
It then sends the second copy for R8,R9 towards R4 in result of 
"LFA(R4,R3)" in the R8 BIFT entry - and R4 being up. Finally
it sends a copy for R10,R11 towards R5 in result of "LFA(R5,R4)"
and R5 being up.</t>

<t>Note that BIER-aFRR can not support FRR for all topologies without a
workaround that introduces multiple copies across the same neighbors
even in the non-FRR case. See <xref target="bift-partitioned-q"/>.</t>

</section>
<section anchor="bift-with-backup-fbm-bier-bfrr"><name>BIFT with backup FBM (BIER-bFRR)</name>

<t>In the BIER-bFRR model, FRR is modelled to overcome some of
the duplicate packets sent to neighbors when another neighbor
fails as shown above as well as the aforementioned issue discussed
in <xref target="bift-partitioned-q"/>. These improvements come at the expense of added complexity
in the actual BIER forwarding/replication procedure for FRR.</t>

<figure title="Example 5 R2 BIFT with bFRR" anchor="e5-bier-bfrr"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="448" viewBox="0 0 448 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 440,32" fill="none" stroke="black"/>
<path d="M 8,62 L 440,62" fill="none" stroke="black"/><path d="M 8,66 L 440,66" fill="none" stroke="black"/>
<path d="M 8,96 L 440,96" fill="none" stroke="black"/>
<path d="M 8,128 L 440,128" fill="none" stroke="black"/>
<path d="M 8,160 L 440,160" fill="none" stroke="black"/>
<path d="M 8,192 L 440,192" fill="none" stroke="black"/>
<path d="M 8,224 L 440,224" fill="none" stroke="black"/>
<path d="M 8,256 L 440,256" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="108" y="52">F-BM</text>
<text x="160" y="52">|</text>
<text x="200" y="52">BFR-NBR</text>
<text x="240" y="52">|</text>
<text x="272" y="52">BF-BM</text>
<text x="404" y="52">|BBFR-NBR|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R6</text>
<text x="80" y="84">|</text>
<text x="112" y="84">R6,R7</text>
<text x="160" y="84">|</text>
<text x="180" y="84">R3</text>
<text x="240" y="84">|</text>
<text x="296" y="84">R6,R7,R8,R9</text>
<text x="368" y="84">|</text>
<text x="388" y="84">R4</text>
<text x="440" y="84">|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R7</text>
<text x="80" y="116">|</text>
<text x="112" y="116">R6,R7</text>
<text x="160" y="116">|</text>
<text x="180" y="116">R3</text>
<text x="240" y="116">|</text>
<text x="296" y="116">R6,R7,R8,R9</text>
<text x="368" y="116">|</text>
<text x="388" y="116">R4</text>
<text x="440" y="116">|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R8</text>
<text x="80" y="148">|</text>
<text x="112" y="148">R8,R9</text>
<text x="160" y="148">|</text>
<text x="180" y="148">R4</text>
<text x="240" y="148">|</text>
<text x="296" y="148">R6,R7,R8,R9</text>
<text x="368" y="148">|</text>
<text x="388" y="148">R3</text>
<text x="440" y="148">|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R9</text>
<text x="80" y="180">|</text>
<text x="112" y="180">R8,R9</text>
<text x="160" y="180">|</text>
<text x="180" y="180">R4</text>
<text x="240" y="180">|</text>
<text x="296" y="180">R6,R7,R8,R9</text>
<text x="368" y="180">|</text>
<text x="388" y="180">R3</text>
<text x="440" y="180">|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R10</text>
<text x="80" y="212">|</text>
<text x="120" y="212">R10,R11</text>
<text x="160" y="212">|</text>
<text x="180" y="212">R5</text>
<text x="240" y="212">|</text>
<text x="304" y="212">R8,R9,R10,R11</text>
<text x="368" y="212">|</text>
<text x="388" y="212">R4</text>
<text x="440" y="212">|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R11</text>
<text x="80" y="244">|</text>
<text x="120" y="244">R10,R11</text>
<text x="160" y="244">|</text>
<text x="180" y="244">R5</text>
<text x="240" y="244">|</text>
<text x="304" y="244">R8,R9,R10,R11</text>
<text x="368" y="244">|</text>
<text x="388" y="244">R4</text>
<text x="440" y="244">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       -------------------------------------------------------
       | BFR-id | F-BM    | BFR-NBR | BF-BM         |BBFR-NBR|
       =======================================================
       | R6     | R6,R7   | R3      | R6,R7,R8,R9   | R4     |
       -------------------------------------------------------
       | R7     | R6,R7   | R3      | R6,R7,R8,R9   | R4     |
       -------------------------------------------------------
       | R8     | R8,R9   | R4      | R6,R7,R8,R9   | R3     |
       -------------------------------------------------------
       | R9     | R8,R9   | R4      | R6,R7,R8,R9   | R3     |
       -------------------------------------------------------
       | R10    | R10,R11 | R5      | R8,R9,R10,R11 | R4     |
       -------------------------------------------------------
       | R11    | R10,R11 | R5      | R8,R9,R10,R11 | R4     |
       -------------------------------------------------------
]]></artwork></artset></figure>

<t>The BIER-bFRR extended BIFT for Example 5 is shown in <xref target="e5-bier-bfrr"/>,
the forwarding code for BIER with bFRR is shown in <xref target="bier-fwd-bfrr"/>,
the four additional lines of code compared to <xref target="bier-fwd"/> are shown
with the comment "bFRR".</t>

<t>Functionally, bFRR simply differs from aFRR in that it allows for
a different F-BM to be used when the BFR-NBR is not Up, so that
the packet instead has to be sent to the backup BFR-NBR. Because
the applying of a BFM to a bitstring is not something applicable
to a unicast packet, the bFRR code is hence shown as part of the
BIER forwarding loop in the pseudocode.</t>

<t>The Backup BFR-NBR is called BBFR-NBR, and the Backup F-BM is called BF-BM
in the bFRR enhanced BIFT.</t>

<figure title="BIER forwarding pseudocode with bFRR" anchor="bier-fwd-bfrr"><artwork align="center"><![CDATA[
void ForwardBitMaskPacket (Packet)
   {
       SI=GetPacketSI(Packet);
       Offset=SI*BitStringLength;
       for (Index = GetFirstBitPosition(Packet->BitString); Index ;
            Index = GetNextBitPosition(Packet->BitString, Index)) {
           F-BM = BIFT[Index+Offset]->F-BM;
           if (!F-BM) continue;
           BFR-NBR = BIFT[Index+Offset]->BFR-NBR;
           if(!IsUp(BFR-NBR) {                          ! bFRR
               F-BM = BIFT[Index+Offset]->BF-BM;        ! bFRR
               BFR-NBR = BIFT[Index+Offset]->BBFR-NBR;  ! bFRR
           }                                            ! bFRR
           PacketCopy = Copy(Packet);
           PacketCopy->BitString &= F-BM;
           PacketSend(PacketCopy, BFR-NBR);
           Packet->BitString &= ~F-BM;
       }
   }
]]></artwork></figure>

<t>Assuming again as in before for BIER-aFRR a BIER packet to R6,R7,R8,R9,R10,R11.</t>

<t>Whereas in BIER-aFRR in Example 5, when R3 was not Up, two packet copies
would be sent to R4, one for R6,R7 that should have gone to R3, and another
packet copy for R8,R9, which is independent of whether or not R3 is Up or
not, in BIER-bFRR this can be optimized because of BB-FM. If R3 is down,
the packet copy created because of the BIFT entry for R6 and sent to R4
will include all bits from BB-FM for R6, which includes R6,R7,R8,R9. When
then the BIFT entry for R8 and R9 are examined, then their bits have
already been reset in the "Packet-&gt;BitString". Hence no duplicate packet
copies are sent towards R4.</t>

<t>However, this BB-FM optimization does not help to avoid duplicate packets
to R4 in the case of R5 not being Up. Even though BB-FM makes it look as
if the same benefit as for a failure of R3 could happen, this BB-FM is
insubstantial because of the sequential processing of the BIFT entries by
ForwardBitMaskPacket. The BIFT entry for R8 will have already caused
one Packet copy for R8, R9 to be sent to R4, so when the BIFT entry for
R10/R11 are examined, a second packet copy for R10,R11 needs to be made towards
R4.</t>

<t>As a rule of thumb, BIER-bFRR allows for the BB-FM to send to the same BFER
as indicated by the B-FM, but also to include the additional bits from the
B-FM of BIFT entries where the BBFR-NBR is the BFR-NBR, but but that
optimization only reduces duplicate packet copies when the failed BFR-NBR
BIFT entry is earlier in the BIFT than the BIFT entries where the BBFR-NBR is
the actual BFR-NBR. In cases like Example 5 where two or more BFR-NBR like
R3 and R4 mutually protect each other (are BBFR-NBR for one another),
it is never possible to avoid packet duplication due to the way the BIFT
operates sequentially.</t>

<t>Note again, that elimination of packet duplication is not the only reason
for BIER-bFRR, see <xref target="bift-partitioned-q"/>.</t>

</section>
<section anchor="bift-with-sorted-backup-fbm-bier-sbfrr"><name>BIFT with sorted backup FBM (BIER-sbFRR)</name>

<t>To overcome the problem of BIER-bFRR that it can not avoid unnecessary duplicate
packets to one BFR-NBR when another BFR-NBR is down (in all cases), as described above, the simple
logical model option is to loop across the bit indices of the BIFT not in their
numerical order, but first consider only those bits in the BitString for which the
BFR-NBR is known to be down - and only then consider all the bits for whom the
BFR-NBR is not down.</t>

<figure title="BIER forwarding pseudocode extensions for sorted bFRR (sbFRR)" anchor="bier-fwd-sbfrr"><artwork align="center"><![CDATA[
static DownBfrNbrIndices;
static DoFRRIndices;
GetFirstBitPosition(BitString)
   { 
       DoFRRIndices = 1;
       return GetNextBitPosition(BitString, 0)
   }

GetNextBitPosition(BitString, Index)
   {
      if( DoFRRIndices && Index = _GetNextBitPosition(Packet->BitString & DownBfrNbrIndices, Index)) {
          return Index;
      }
      DoFRRIndices = 0;
      return _GetNextBitPosition(Packet->BitString & ~DownBfrNbrIndices, Index);
   }

]]></artwork></figure>

<t><xref target="bier-fwd-sbfrr"/> shows how this behavior can be modelled by modifying
the functions enumerating the BitIndices. DownBfrNbrIndices is a bitstring variable
changed by fast executing control plane code, whenever an interface connecting to
a BFR-NBR goes up or down. It includes all BitIndices of BIFT entries whose BFR-NBR
is down.</t>

<t>GetNetBitPosition now first returns all Indices in the Packet-&gt;BitString with
such down BFR-NBR, and afterwards those Indices whose BFR-NBR are not down.</t>

<t>In result of this change, in Example 5, when R5 is down, the BIFT entry for R10
is examined first, resulting in a packet copy with R8,R9,R10,R11 towards R4, because
R5 is down, and later no additional packet copy needs to be made because the Bits
for R8,R9 where already cleared by that first copy.</t>

<t>[ RFC-editor: remove the following paragraph, it is only here for convenience of reviers to relate to a prior version of the document ]</t>

<t>Note: Earlier versions of this document, such as revision 10, had called BIER-bFRR
single-BIFT (with FRR) and BIER-sbFRR multiple BIFT because it was modelled
as one BIFT just with primary F-BM/BFR-NBR and another one only with BF-BM/BBFR-NBR
for the failure of one specific interface. Likewise,  section 3.8
claimed that it would be necessary to perform two passes through this type
of BIFT: this text it is not necessary to perform two passes as written there:
"A first one matches the bitstring combined with BEA=1.  If no further
match is possible, then another pass with the remaining bitstring
combined with BEA=0 is performed.".  The rewrite presented above with bFRR
and sbFRR replaces this with the simpler model of a single BIFT extended with
BF-BM/BBFR-NBR and just uses two different ways to sequentially process the
bits in the packets BitString.</t>

</section>
<section anchor="bift-partitioned-q"><name>BIFT for partitioned q-space</name>

<t>This section discusses how the different BIFT models presented can
deal with partitioned q-space as defined in <xref target="partitioned"/>. The difference
in behavior is between BIER-aFRR and BIER-bFRR/sbFRR. There is no difference
in between bFRR and sbFRR.</t>

<figure title="BIFT Example 4 for R1 with bFRR for R2 failure" anchor="bift-e4-bfrr"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="512" viewBox="0 0 512 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 504,32" fill="none" stroke="black"/>
<path d="M 8,62 L 504,62" fill="none" stroke="black"/><path d="M 8,66 L 504,66" fill="none" stroke="black"/>
<path d="M 8,96 L 504,96" fill="none" stroke="black"/>
<path d="M 8,128 L 504,128" fill="none" stroke="black"/>
<path d="M 8,160 L 504,160" fill="none" stroke="black"/>
<path d="M 8,192 L 504,192" fill="none" stroke="black"/>
<path d="M 8,224 L 504,224" fill="none" stroke="black"/>
<path d="M 8,256 L 504,256" fill="none" stroke="black"/>
<path d="M 8,288 L 504,288" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="108" y="52">F-BM</text>
<text x="240" y="52">|BFR-NBR|BF-BM|</text>
<text x="340" y="52">BBFR-NBR</text>
<text x="504" y="52">|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R5</text>
<text x="124" y="84">|R5,R6,R7,R8</text>
<text x="184" y="84">|</text>
<text x="204" y="84">R2</text>
<text x="272" y="84">|R5,R6|</text>
<text x="400" y="84">tunnel(nh:R12,dest:R11)</text>
<text x="504" y="84">|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R6</text>
<text x="124" y="116">|R5,R6,R7,R8</text>
<text x="184" y="116">|</text>
<text x="204" y="116">R2</text>
<text x="272" y="116">|R5,R6|</text>
<text x="400" y="116">tunnel(nh:R12,dest:R11)</text>
<text x="504" y="116">|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R7</text>
<text x="124" y="148">|R5,R6,R7,R8</text>
<text x="184" y="148">|</text>
<text x="204" y="148">R2</text>
<text x="272" y="148">|R7,R8|</text>
<text x="400" y="148">tunnel(nh:R12,dest:R13)</text>
<text x="504" y="148">|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R8</text>
<text x="124" y="180">|R5,R6,R7,R8</text>
<text x="184" y="180">|</text>
<text x="204" y="180">R2</text>
<text x="272" y="180">|R7,R8|</text>
<text x="400" y="180">tunnel(nh:R12,dest:R13)</text>
<text x="504" y="180">|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R11</text>
<text x="124" y="212">|R11,R12,R13</text>
<text x="184" y="212">|</text>
<text x="208" y="212">R12</text>
<text x="248" y="212">|</text>
<text x="296" y="212">|</text>
<text x="504" y="212">|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R12</text>
<text x="124" y="244">|R11,R12,R13</text>
<text x="184" y="244">|</text>
<text x="208" y="244">R12</text>
<text x="248" y="244">|</text>
<text x="296" y="244">|</text>
<text x="504" y="244">|</text>
<text x="8" y="276">|</text>
<text x="32" y="276">R13</text>
<text x="124" y="276">|R11,R12,R13</text>
<text x="184" y="276">|</text>
<text x="208" y="276">R12</text>
<text x="248" y="276">|</text>
<text x="296" y="276">|</text>
<text x="504" y="276">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       ---------------------------------------------------------------
       | BFR-id | F-BM       |BFR-NBR|BF-BM| BBFR-NBR                |
       ===============================================================
       | R5     |R5,R6,R7,R8 | R2    |R5,R6| tunnel(nh:R12,dest:R11) |
       ---------------------------------------------------------------
       | R6     |R5,R6,R7,R8 | R2    |R5,R6| tunnel(nh:R12,dest:R11) |
       ---------------------------------------------------------------
       | R7     |R5,R6,R7,R8 | R2    |R7,R8| tunnel(nh:R12,dest:R13) |
       ---------------------------------------------------------------
       | R8     |R5,R6,R7,R8 | R2    |R7,R8| tunnel(nh:R12,dest:R13) |
       ---------------------------------------------------------------
       | R11    |R11,R12,R13 | R12   |     |                         |
       ---------------------------------------------------------------
       | R12    |R11,R12,R13 | R12   |     |                         |
       ---------------------------------------------------------------
       | R13    |R11,R12,R13 | R12   |     |                         |
       ---------------------------------------------------------------
]]></artwork></artset></figure>

<t><xref target="bift-e4-bfrr"/> shows the relevant excerpt of the R1 BIFT using the BIER-bFRR/sbFRR
BIFT model. As explained in <xref target="partitioned"/>, when R2 fails, R1 can only delivery BIER
packets for R5 and R6 through a unicast encapsulation (tunnel) destined to R11 and
send to R12. Likewise, to reach R7 and R8, the BIER packet needs to be encapsulated to
R13 and that unicast packet sent to R12. Because both tunneled packets have different
unicast destinations, these four BFER (R5,R6,R7,R8) can not be served with a single
BIER packet copy.</t>

<t>In unicast LFA terminoloy such unicast encapsulated FRR packets are called remote
LFA (<xref target="RFC7490"/>) and the syntax shown for BBFR-NBR in <xref target="bift-e4-bfrr"/> expresses 
the required tunnelling accordingly.</t>

<figure title="BIFT Example 4 R1 with aFRR BROKEN" anchor="bift-e4-bfrr-broken"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="504" viewBox="0 0 504 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,62 L 496,62" fill="none" stroke="black"/><path d="M 8,66 L 496,66" fill="none" stroke="black"/>
<path d="M 8,96 L 496,96" fill="none" stroke="black"/>
<path d="M 8,128 L 496,128" fill="none" stroke="black"/>
<path d="M 8,160 L 496,160" fill="none" stroke="black"/>
<path d="M 8,192 L 496,192" fill="none" stroke="black"/>
<path d="M 8,224 L 496,224" fill="none" stroke="black"/>
<path d="M 8,256 L 496,256" fill="none" stroke="black"/>
<path d="M 8,288 L 496,288" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="116" y="52">F-BM</text>
<text x="208" y="52">|</text>
<text x="248" y="52">BFR-NBR</text>
<text x="496" y="52">|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R5</text>
<text x="80" y="84">|</text>
<text x="144" y="84">R5,R6,R7,R8</text>
<text x="208" y="84">|</text>
<text x="252" y="84">RLFA(R2,</text>
<text x="388" y="84">tunnel(nh:R12,dest:R11))</text>
<text x="496" y="84">|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R6</text>
<text x="80" y="116">|</text>
<text x="144" y="116">R5,R6,R7,R8</text>
<text x="208" y="116">|</text>
<text x="252" y="116">RLFA(R2,</text>
<text x="384" y="116">tunnel(nh:R12,dest:R11)</text>
<text x="496" y="116">|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R7</text>
<text x="80" y="148">|</text>
<text x="144" y="148">R5,R6,R7,R8</text>
<text x="208" y="148">|</text>
<text x="252" y="148">RLFA(R2,</text>
<text x="388" y="148">tunnel(nh:R12,dest:R13))</text>
<text x="496" y="148">|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R8</text>
<text x="80" y="180">|</text>
<text x="144" y="180">R5,R6,R7,R8</text>
<text x="208" y="180">|</text>
<text x="252" y="180">RLFA(R2,</text>
<text x="388" y="180">tunnel(nh:R12,dest:R13))</text>
<text x="496" y="180">|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R11</text>
<text x="80" y="212">|</text>
<text x="144" y="212">R11,R12,R13</text>
<text x="208" y="212">|</text>
<text x="256" y="212">R12</text>
<text x="496" y="212">|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R12</text>
<text x="80" y="244">|</text>
<text x="144" y="244">R11,R12,R13</text>
<text x="208" y="244">|</text>
<text x="256" y="244">R12</text>
<text x="496" y="244">|</text>
<text x="8" y="276">|</text>
<text x="32" y="276">R13</text>
<text x="80" y="276">|</text>
<text x="144" y="276">R11,R12,R13</text>
<text x="208" y="276">|</text>
<text x="256" y="276">R12</text>
<text x="496" y="276">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       --------------------------------------------------------------
       | BFR-id |  F-BM         | BFR-NBR                           |
       ==============================================================
       | R5     |  R5,R6,R7,R8  | RLFA(R2, tunnel(nh:R12,dest:R11)) |
       --------------------------------------------------------------
       | R6     |  R5,R6,R7,R8  | RLFA(R2, tunnel(nh:R12,dest:R11)  |
       --------------------------------------------------------------
       | R7     |  R5,R6,R7,R8  | RLFA(R2, tunnel(nh:R12,dest:R13)) |
       --------------------------------------------------------------
       | R8     |  R5,R6,R7,R8  | RLFA(R2, tunnel(nh:R12,dest:R13)) |
       --------------------------------------------------------------
       | R11    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
       | R12    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
       | R13    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
]]></artwork></artset></figure>

<t><xref target="bift-e4-bfrr-broken"/> shows a first attempt to express the same situation with
the BIER-aFRR BIFT model in which there are no new BIFT fields BB-FM or BBFR-NBR.
Instead, and as explained in <xref target="aFRR"/>, the RLFA 'adjacency becomes the value
of the BFR-NBR. It indicates the directly connected BFR-NBR R2, and if the
interface to that neighbor is down, then instead the packed has to be tunnel
encapsulated to destination R11 or R13 and send towards BFR-NBR R12.</t>

<t>However, this BIFT does not work as expected because it can not represent
the BB-FM of a bFRR BIFT. And the goal of the aFRR model is explicitly to
only use non-BIER specific FRR options for the BFR-NBR field, so that
hopefully even unchangeable (hardcoded) BIER forwarding code could be extended
to support aFRR - because it should be possible to implement aFRR solely through
pre-existing unicast FRR adjacency forwarding.</t>

<t>The reason why this BIFT will not work is that a packet to R5,R6,R7,R8 will
not be processed as desired under failure of R2: As long as R2 is up, the BIFT
delivers the expected result, sending one BIER packet copy to R2 with all
the four bits for R5,R6,R7,R8 set. But when R2 goes down, then only one
packet copy will be sent too, and that is the one derived from the BIFT entry
for R5 which already includes all four bits in the bitstring because of its
F-BM. Only when a packet would not have R5 or R6 set, but only R7,R8 would
their BIFT entries kick in and a packet copy tunneled to R13 be sent!</t>

<figure title="BIFT Example 4 R1 with aFRR FIXED" anchor="bift-e4-afrr"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="504" viewBox="0 0 504 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,62 L 496,62" fill="none" stroke="black"/><path d="M 8,66 L 496,66" fill="none" stroke="black"/>
<path d="M 8,96 L 496,96" fill="none" stroke="black"/>
<path d="M 8,128 L 496,128" fill="none" stroke="black"/>
<path d="M 8,160 L 496,160" fill="none" stroke="black"/>
<path d="M 8,192 L 496,192" fill="none" stroke="black"/>
<path d="M 8,224 L 496,224" fill="none" stroke="black"/>
<path d="M 8,256 L 496,256" fill="none" stroke="black"/>
<path d="M 8,288 L 496,288" fill="none" stroke="black"/>
<g class="text">
<text x="8" y="52">|</text>
<text x="44" y="52">BFR-id</text>
<text x="80" y="52">|</text>
<text x="116" y="52">F-BM</text>
<text x="208" y="52">|</text>
<text x="248" y="52">BFR-NBR</text>
<text x="496" y="52">|</text>
<text x="8" y="84">|</text>
<text x="28" y="84">R5</text>
<text x="80" y="84">|</text>
<text x="120" y="84">R5,R6</text>
<text x="208" y="84">|</text>
<text x="252" y="84">RLFA(R2,</text>
<text x="388" y="84">tunnel(nh:R12,dest:R11))</text>
<text x="496" y="84">|</text>
<text x="8" y="116">|</text>
<text x="28" y="116">R6</text>
<text x="80" y="116">|</text>
<text x="120" y="116">R5,R6</text>
<text x="208" y="116">|</text>
<text x="252" y="116">RLFA(R2,</text>
<text x="384" y="116">tunnel(nh:R12,dest:R11)</text>
<text x="496" y="116">|</text>
<text x="8" y="148">|</text>
<text x="28" y="148">R7</text>
<text x="80" y="148">|</text>
<text x="120" y="148">R7,R8</text>
<text x="208" y="148">|</text>
<text x="252" y="148">RLFA(R2,</text>
<text x="388" y="148">tunnel(nh:R12,dest:R13))</text>
<text x="496" y="148">|</text>
<text x="8" y="180">|</text>
<text x="28" y="180">R8</text>
<text x="80" y="180">|</text>
<text x="120" y="180">R7,R8</text>
<text x="208" y="180">|</text>
<text x="252" y="180">RLFA(R2,</text>
<text x="388" y="180">tunnel(nh:R12,dest:R13))</text>
<text x="496" y="180">|</text>
<text x="8" y="212">|</text>
<text x="32" y="212">R11</text>
<text x="80" y="212">|</text>
<text x="144" y="212">R11,R12,R13</text>
<text x="208" y="212">|</text>
<text x="256" y="212">R12</text>
<text x="496" y="212">|</text>
<text x="8" y="244">|</text>
<text x="32" y="244">R12</text>
<text x="80" y="244">|</text>
<text x="144" y="244">R11,R12,R13</text>
<text x="208" y="244">|</text>
<text x="256" y="244">R12</text>
<text x="496" y="244">|</text>
<text x="8" y="276">|</text>
<text x="32" y="276">R13</text>
<text x="80" y="276">|</text>
<text x="144" y="276">R11,R12,R13</text>
<text x="208" y="276">|</text>
<text x="256" y="276">R12</text>
<text x="496" y="276">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
       --------------------------------------------------------------
       | BFR-id |  F-BM         | BFR-NBR                           |
       ==============================================================
       | R5     |  R5,R6        | RLFA(R2, tunnel(nh:R12,dest:R11)) |
       --------------------------------------------------------------
       | R6     |  R5,R6        | RLFA(R2, tunnel(nh:R12,dest:R11)  |
       --------------------------------------------------------------
       | R7     |  R7,R8        | RLFA(R2, tunnel(nh:R12,dest:R13)) |
       --------------------------------------------------------------
       | R8     |  R7,R8        | RLFA(R2, tunnel(nh:R12,dest:R13)) |
       --------------------------------------------------------------
       | R11    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
       | R12    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
       | R13    |  R11,R12,R13  |    R12                            |
       --------------------------------------------------------------
]]></artwork></artset></figure>

<t><xref target="bift-e4-afrr"/> shows the fixed aFRR BIFT. The F-BM between R5,R6 and R7,R8 are now
split, so that a packet to R5,R6,R7,R8 under failure of R2 will receive one
tunneled packet copy destined towards R11 with destinations R5,R6 and triggered by the BIFT entry for R5,
and a second packet copy destined towards R13 with destinations R7,R8 and triggered by the BIFT entry for R7.</t>

<t>The downside of this approach is obviously that when R2 is up and running, then a
BIER packet for R5,R6,R7,R8 will not be sent as a single packet copy towards R2,
but instead as two packet copies to R2. One with the bits for R5,R6, triggered by
the BIFT entry for R5, and one with the bits for R7,R8, triggered by the BIFT entry
for R7.</t>

<t>The ability to use an unchanged BIFT and BIER forwarding algorithm and just use
"unicast" FRR adjacencies therefore comes at the price of having to carry unnecessary
packet copies when there is no FRR failure - just because there is only a single
F-BM in a non-bFRR enhanced BIFT and hence the F-BM space needs to be segmented
by the segmented q-spaces of the BFER. In the example topology, this duplicated
amount of traffic only exists over link L1 from R1 to R2. As soon as those
two packets hit R2, the one with bits for R5,R6 will be sent towards R3, and
the one with the bits for R7,R8 will be sent towards R13. This mechanism never
creates packet duplication on actual receivers, but it only creates less BIER
packet de-duplication on transit links!</t>

<t>For fast core networks, this lower de-duplication efficiency of BIER to support
FRR without e.g.: new forwarding hardware (which may be required for bFRR) may
well be worth it, especially if the aggregate of BIER traffic multiplied by the
number of q-space particions (e.g: 2 in this example) is a well acceptable percentage.
Assume for example link L1 between R1 and R2 is 100Gbps and the total amount of multicast (BIER)
traffic is 5 Gbps at most. Then this solution would waste (just) 5% (5Gps) of the bandwidth
from R1 to R2 - compared to BIER-bFRR.</t>

</section>
</section>
<section anchor="old-text-follows"><name>Old text follows</name>

<section anchor="summary-of-options"><name>Summary of options</name>

<t>In "Tunnel-based BIER FRR"The most simple option to perfor</t>

</section>
</section>
<section anchor="ex4_bier_frr"><name>Definition of BIER-FRR</name>

<t>BIER-FRR proposes a backup BIFT that comprises backup forwarding
entries.  They are executed before the primary forwarding entries in the normal
BIFT which is also denoted primary BIFT in this context.
In this subsection, forwarding actions are defined and the structure of
the backup BIFT is introduced.
Then activation and deactivation of backup forwarding entries as well
as the derivation of the backup F-BM (BF-BM) are explained.</t>

<section anchor="trigger_for_frr"><name>Definition of Forwarding Actions</name>

<t>A BFR-NBR is considered directly connected if it is a link-layer
next-hop.
Conversely, if the BFR-NBR cannot be reached directly through the link
layer, it is regarded as indirectly connected.</t>

<t>The following forwarding actions are defined:</t>

<t><list style="symbols">
  <t>Plain: The BIER packet is sent directly to a BFR-NBR via a direct
link without encapsulation in a tunnel.
This indicates that the packet is not forwarded through the underlying
network.</t>
  <t>Tunnel: The BIER packet is encapsulated with a tunnel header and
forwarded to a BFR-NBR over the routing underlay.</t>
  <t>Explicit: The packet is forwarded along an explicit path to a
BFR-NBR.
The specific path information must be provided.
If segment routing is employed for this purpose, the segment IDs
(SIDs) must be specified.
Two forwarding actions of type Explicit are considered equivalent
only if they utilize the same explicit path.</t>
</list></t>

<t>In the BIFT as outlined in <xref target="RFC8279"/>, the forwarding actions are
implicitly determined by the connectivity status of the BFR-NBR.
If the BFR-NBR is directly connected, the forwarding action is Plain.
If the BFR-NBR is not directly connected, the forwarding action is
Tunnel.</t>

</section>
<section anchor="backup_forwarding_entries"><name>Backup BIFT</name>

<t>The structure of the backup BIFT is given in <xref target="bift"/>.</t>

<figure title="Structure of the backup BIFT." anchor="bift"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="368" viewBox="0 0 368 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 80,32 L 80,96" fill="none" stroke="black"/>
<path d="M 152,32 L 152,96" fill="none" stroke="black"/>
<path d="M 240,32 L 240,96" fill="none" stroke="black"/>
<path d="M 312,32 L 312,96" fill="none" stroke="black"/>
<path d="M 360,32 L 360,96" fill="none" stroke="black"/>
<path d="M 8,32 L 360,32" fill="none" stroke="black"/>
<path d="M 8,62 L 360,62" fill="none" stroke="black"/><path d="M 8,66 L 360,66" fill="none" stroke="black"/>
<path d="M 8,96 L 360,96" fill="none" stroke="black"/>
<g class="text">
<text x="44" y="52">BFR-id</text>
<text x="112" y="52">BF-BM</text>
<text x="196" y="52">BBFR-NBR</text>
<text x="272" y="52">BFA</text>
<text x="336" y="52">BEA</text>
<text x="40" y="84">...</text>
<text x="112" y="84">...</text>
<text x="192" y="84">...</text>
<text x="272" y="84">...</text>
<text x="336" y="84">...</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
+--------+--------+----------+--------+-----+
| BFR-id | BF-BM  | BBFR-NBR |  BFA   | BEA |
+========+========+==========+========+=====+
|  ...   |  ...   |   ...    |  ...   | ... |
+--------+--------+----------+--------+-----+
]]></artwork></artset></figure>

<t>The columns refer to:</t>

<t><list style="symbols">
  <t>BFR-id: the bit position of a BFER for which this row in the backup
BIFT applies.</t>
  <t>BF-BM: the Backup F-BM used for forwarding, used like the primary
F-BM.</t>
  <t>BBFR-NBR: the Backup BFR-NBR used for forwarding, used like the
primary BFR-NBR.</t>
  <t>BFA: the Backup Forwarding Action takes values as introduced in
Section 3.1 and indicates how the packet is forwarded to the
BBFR-NBR.</t>
  <t>BEA: the Backup Entry Active flag indicates if the backup forwarding
entry of this row is active.</t>
</list></t>

<t>The structure and semantics of the first three fields are identical to
the entries of the primary BIFT, as defined in Figure 3 of <xref target="RFC8279"/>,
and they are used in a very similar way.
The BEA indicates if the backup forwarding entry is executed.
In that case, the BFA indicates the forwarding action for the packet.</t>

</section>
<section anchor="a_backup_entry"><name>Activating and Deactivating Backup Forwarding Entries</name>

<t>When a primary BFR-NBR is not reachable over the implicit primary
action, a failure is observed.
Then, the BEA flag of the corresponding backup forwarding entry is
set.</t>

<t>If the primary BFR-NBR is directly connected, the information about
the failed interface is sufficient to detect its unreachability.
If the primary BFR-NBR is indirectly connected, a Bidirectional
Forwarding Detection (BFD) <xref target="RFC5880"/> session between the BFR as PLR and
the BFR-NBR may be used to monitor its reachability.</t>

<t>If the primary BFR-NBR is reachable again, the BEA flag is
deactivated.
This may be caused by the disappearance of the failure or by a change
of the primary BFR-NBR due to a reconfiguration of the BIFT.</t>

</section>
<section anchor="usage-of-the-backup-bift"><name>Usage of the Backup BIFT</name>

<t>An incoming packet is first matched against the backup BIFT.
A row in the backup BIFT matches a packet if the BEA flag in the
backup BIFT is set and if the BFR-id is set in the packet's bitstring.
Then, the BF-BM of the matching backup forwarding entry is applied to
the packet's bitstring.
That means, the packet is copied and in its bitstring the bits other
than those set in BF-BM are cleared before the packet is forwarded to
the BBFR-NBR with the indicated BFA.
Finally, the bits of the BF-BM are cleared in the bitstring of the
remaining packet.
In the absence of a match of the remaining packet, the normal
forwarding procedure continues, i.e., forwarding based on the primary
BIFT as described in <xref target="RFC8279"/>.</t>

<t>Note: If a BFR-id matches in the primary or backup BIFT, and the
transmission is not successful, the F-BM or BF-BM is still applied to
the bitstring of the remaining packet.</t>

</section>
<section anchor="f_bm_computation"><name>Computation of the Backup F-BM</name>

<t>The primary F-BM of a specific BFER identifies all BFERs that share
the same primary BFR-NBR.
The backup F-BM for a specific BFER is computed to indicate:</t>

<t><list style="symbols">
  <t>All BFERs that share both the primary and backup BFR-NBRs of the
specific BFER, and</t>
  <t>All BFERs for which the backup BFR-NBR of the specific BFER serves
as the primary BFR-NBR.</t>
</list></t>

</section>
<section anchor="alternative-representations-of-backup-forwarding-entries"><name>Alternative Representations of Backup Forwarding Entries</name>

<t>Alternative representations of backup forwarding entries are possible
as long as the same behavior is ensured.
Two other variants are introduced in the following sections.</t>

</section>
<section anchor="single-extended-bift"><name>Single Extended BIFT</name>

<t>The information of the primary BIFT and the backup BIFT may be
combined in a single extended BIFT.
Its structure is illustrated in <xref target="single_extended_bift"/>.</t>

<figure title="Structure of a single extended BIFT including backup forwarding entries." anchor="single_extended_bift"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="496" viewBox="0 0 496 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 80,32 L 80,96" fill="none" stroke="black"/>
<path d="M 136,32 L 136,96" fill="none" stroke="black"/>
<path d="M 216,32 L 216,96" fill="none" stroke="black"/>
<path d="M 288,32 L 288,96" fill="none" stroke="black"/>
<path d="M 376,32 L 376,96" fill="none" stroke="black"/>
<path d="M 448,32 L 448,96" fill="none" stroke="black"/>
<path d="M 488,32 L 488,96" fill="none" stroke="black"/>
<path d="M 8,32 L 488,32" fill="none" stroke="black"/>
<path d="M 8,62 L 488,62" fill="none" stroke="black"/><path d="M 8,66 L 488,66" fill="none" stroke="black"/>
<path d="M 8,96 L 488,96" fill="none" stroke="black"/>
<g class="text">
<text x="44" y="52">BFR-id</text>
<text x="108" y="52">F-BM</text>
<text x="176" y="52">BFR-NBR</text>
<text x="248" y="52">BF-BM</text>
<text x="332" y="52">BBFR-NBR</text>
<text x="408" y="52">BFA</text>
<text x="472" y="52">BEA</text>
<text x="40" y="84">...</text>
<text x="112" y="84">...</text>
<text x="176" y="84">...</text>
<text x="256" y="84">...</text>
<text x="328" y="84">...</text>
<text x="408" y="84">...</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
+--------+------+---------+--------+----------+--------+----+
| BFR-id | F-BM | BFR-NBR | BF-BM  | BBFR-NBR |  BFA   | BEA|
+========+======+=========+========+==========+========+====+
|  ...   |  ... |   ...   |   ...  |   ...    |  ...   |    |
+--------+------+---------+--------+----------+--------+----+
]]></artwork></artset></figure>

<t>To ensure the same behavior, the BEA flag must be set like in the
backup BIFT.
Furthermore, two matching passes through the extended BIFT are needed.
A first one matches the bitstring combined with BEA=1.
If no further match is possible, then another pass with the remaining
bitstring combined with BEA=0 is performed.</t>

</section>
<section anchor="primary-bift-and-failure-specific-backup-bifts"><name>Primary BIFT and Failure-Specific Backup BIFTs</name>

<t>To avoid two distinct passes through a BIFT, the information of the
primary BIFT and backup BIFT may be combined into a primary BIFT and
multiple failure-specific BIFTs.
Each failure-specific BIFT corresponds to a specific failure scenario.
Failure-specific backup BIFTs are structured like normal backup BIFTs,
but do not have a BEA flag as they are enabled or disabled as a whole.</t>

<t>In the absence of a failure, packets are processed using the primary
BIFT.
In case of a failure, packets are processed using a failure-specific
BIFT that matches the occurred failure.
That means, there should be failure-specific BIFTs for at least any
adjacent link to protect against all single-link failures.
To support multiple failures, even more failure-specific BIFTs are
needed.
If failure-specific BIFTs are provided for only single-link failures,
the BIFT should be taken that covers the most relevant single failure.</t>

</section>
</section>
<section anchor="Representation"><name>Illustration and the Need for Prioritized Backup Forwarding Entries</name>

<t>In this section, BIER-FRR is illustrated using a small example.
It is pointed out that unnecessary redundant packets may occur if
primary forwarding entries are erroneously applied before backup
forwarding entries.
Therefore, it is important that the backup BIFT is applied before the
primary BIFT.</t>

<section anchor="redundant_packets"><name>Example</name>

<t><xref target="networking_scenario"/> presents an example of a BIER network.
In this example, BFRs are identified by the prefix "B" followed by
their BFR-ids.
For simplicity, each BFR also serves as a BFER, and its bit position
in the bitstring corresponds to its BFR-id.
The number assigned to each link represents its cost, which the
routing underlay uses to compute the shortest paths.</t>

<figure title="BIER network example." anchor="networking_scenario"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="512" viewBox="0 0 512 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 24,64 L 24,112" fill="none" stroke="black"/>
<path d="M 24,144 L 24,176" fill="none" stroke="black"/>
<path d="M 128,64 L 128,112" fill="none" stroke="black"/>
<path d="M 256,64 L 256,176" fill="none" stroke="black"/>
<path d="M 48,48 L 112,48" fill="none" stroke="black"/>
<path d="M 152,48 L 240,48" fill="none" stroke="black"/>
<path d="M 48,128 L 112,128" fill="none" stroke="black"/>
<path d="M 40,192 L 232,192" fill="none" stroke="black"/>
<g class="text">
<text x="72" y="36">1</text>
<text x="192" y="36">1</text>
<text x="28" y="52">B1</text>
<text x="132" y="52">B6</text>
<text x="260" y="52">B5</text>
<text x="336" y="52">BFR</text>
<text x="364" y="52">Bi</text>
<text x="388" y="52">is</text>
<text x="420" y="52">BFER</text>
<text x="324" y="68">(i</text>
<text x="344" y="68">=</text>
<text x="412" y="68">1,2,3,4,5,6,7;</text>
<text x="328" y="84">i</text>
<text x="348" y="84">is</text>
<text x="388" y="84">BFR-id</text>
<text x="428" y="84">of</text>
<text x="456" y="84">Bi)</text>
<text x="8" y="100">2</text>
<text x="144" y="100">1</text>
<text x="80" y="116">1</text>
<text x="272" y="116">1</text>
<text x="332" y="116">cost</text>
<text x="364" y="116">of</text>
<text x="396" y="116">link</text>
<text x="444" y="116">B1-&gt;B2</text>
<text x="484" y="116">is</text>
<text x="504" y="116">2</text>
<text x="28" y="132">B2</text>
<text x="132" y="132">B7</text>
<text x="332" y="132">cost</text>
<text x="364" y="132">of</text>
<text x="396" y="132">link</text>
<text x="444" y="132">B3-&gt;B4</text>
<text x="484" y="132">is</text>
<text x="504" y="132">4</text>
<text x="332" y="148">cost</text>
<text x="364" y="148">of</text>
<text x="400" y="148">other</text>
<text x="448" y="148">links</text>
<text x="484" y="148">is</text>
<text x="504" y="148">1</text>
<text x="8" y="164">1</text>
<text x="176" y="180">4</text>
<text x="20" y="196">B3</text>
<text x="252" y="196">B4</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
        1              1
  B1 --------- B6 ------------ B5       BFR Bi is BFER
  |            |               |       (i = 1,2,3,4,5,6,7;
  |            |               |        i is BFR-id of Bi)
2 |            | 1             |
  |      1     |               | 1     cost of link B1->B2 is 2
  B2 --------- B7              |       cost of link B3->B4 is 4
  |                            |       cost of other links is 1
1 |                            |
  |                  4         |
 B3 ------------------------- B4
]]></artwork></artset></figure>

<t>In the absence of a failure, traffic for BFR-id 2 and 3 is forwarded
via BFR-NBR B2 and traffic to BFR-id 4, 5, 6, and 7 is forwarded to
BFR-NBR B6.
If a packet with bitstring 0001100 (destinations B3 and B4) is
forwarded, the row for BFR-id B3 matches first.
A packet with bitstring 0000100 is sent to B2 and the bitstring of the
remaining packet is also processed with F-BM 0001100, i.e., the
remaining bitstring is
0001000.
Then the remaining bitstring is matched again so that BFR-id B4 yields
a match.
A packet copy with bitstring 0001000 is sent to B6 and the application
of the F-BM 1111000 to the bitstring of the remaining packet results
in 0000000, which terminates the forwarding process.
This BIER forwarding process avoids redundant packet copies.</t>

<figure title="B1's primary BIFT." anchor="extended_bift_plr_redundant"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="224" viewBox="0 0 224 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,256" fill="none" stroke="black"/>
<path d="M 64,32 L 64,256" fill="none" stroke="black"/>
<path d="M 152,32 L 152,256" fill="none" stroke="black"/>
<path d="M 216,32 L 216,256" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,62 L 216,62" fill="none" stroke="black"/><path d="M 8,66 L 216,66" fill="none" stroke="black"/>
<path d="M 8,96 L 216,96" fill="none" stroke="black"/>
<path d="M 8,128 L 216,128" fill="none" stroke="black"/>
<path d="M 8,160 L 216,160" fill="none" stroke="black"/>
<path d="M 8,192 L 216,192" fill="none" stroke="black"/>
<path d="M 8,224 L 216,224" fill="none" stroke="black"/>
<path d="M 8,256 L 216,256" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="108" y="52">F-BM</text>
<text x="184" y="52">BFR-NBR</text>
<text x="40" y="84">2</text>
<text x="104" y="84">0000110</text>
<text x="180" y="84">B2</text>
<text x="40" y="116">3</text>
<text x="104" y="116">0000110</text>
<text x="180" y="116">B2</text>
<text x="40" y="148">4</text>
<text x="104" y="148">1111000</text>
<text x="180" y="148">B6</text>
<text x="40" y="180">5</text>
<text x="104" y="180">1111000</text>
<text x="180" y="180">B6</text>
<text x="40" y="212">6</text>
<text x="104" y="212">1111000</text>
<text x="180" y="212">B6</text>
<text x="40" y="244">7</text>
<text x="104" y="244">1111000</text>
<text x="180" y="244">B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
+------+----------+-------+
|BFR-id|   F-BM   |BFR-NBR|
+======+==========+=======+
|   2  | 0000110  |  B2   |
+------+----------+-------+
|   3  | 0000110  |  B2   |
+------+----------+-------+
|   4  | 1111000  |  B6   |
+------+----------+-------+
|   5  | 1111000  |  B6   |
+------+----------+-------+
|   6  | 1111000  |  B6   |
+------+----------+-------+
|   7  | 1111000  |  B6   |
+------+----------+-------+
]]></artwork></artset></figure>

<t>A backup BIFT for B1 in the example of Figure 2 is given in
<xref target="extended_bift_plr_redundant"/>.
It implements LFA-based FRR as a protection strategy and link
protection.</t>

<t>If B1 cannot reach B2 or B6, BEA will be set to 1 in the rows for the
backup BIFT for which B2 or B6 is the BFR-NBR in the primary BIFT.
Thus, if B1 cannot reach B2, traffic for BFR-id 2 and 3 will be
forwarded over B6 and 1111110 is applied as BF-BM.
This mask also includes all the BFR-ids that have B6 as their primary
BFR-NBR.
Likewise, if B1 cannot reach B6, traffic for BFR-id 4, 5, 6, and 7
will be forwarded over B2 and again 1111110 is applied as BF-BM for
the same reason.</t>

</section>
<section anchor="lfa-based_FRR"><name>B1's backup BIFT for LFA-based FRR with link protection</name>

<figure title="B1's backup BIFT for LFA-based FRR with link protection." anchor="LFA-based"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="224" viewBox="0 0 224 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,256" fill="none" stroke="black"/>
<path d="M 64,32 L 64,256" fill="none" stroke="black"/>
<path d="M 152,32 L 152,256" fill="none" stroke="black"/>
<path d="M 216,32 L 216,256" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,62 L 216,62" fill="none" stroke="black"/><path d="M 8,66 L 216,66" fill="none" stroke="black"/>
<path d="M 8,96 L 216,96" fill="none" stroke="black"/>
<path d="M 8,128 L 216,128" fill="none" stroke="black"/>
<path d="M 8,160 L 216,160" fill="none" stroke="black"/>
<path d="M 8,192 L 216,192" fill="none" stroke="black"/>
<path d="M 8,224 L 216,224" fill="none" stroke="black"/>
<path d="M 8,256 L 216,256" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="108" y="52">F-BM</text>
<text x="184" y="52">BFR-NBR</text>
<text x="40" y="84">2</text>
<text x="104" y="84">0000110</text>
<text x="180" y="84">B2</text>
<text x="40" y="116">3</text>
<text x="104" y="116">0000110</text>
<text x="180" y="116">B2</text>
<text x="40" y="148">4</text>
<text x="104" y="148">1111000</text>
<text x="180" y="148">B6</text>
<text x="40" y="180">5</text>
<text x="104" y="180">1111000</text>
<text x="180" y="180">B6</text>
<text x="40" y="212">6</text>
<text x="104" y="212">1111000</text>
<text x="180" y="212">B6</text>
<text x="40" y="244">7</text>
<text x="104" y="244">1111000</text>
<text x="180" y="244">B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
+------+----------+-------+
|BFR-id|   F-BM   |BFR-NBR|
+======+==========+=======+
|   2  | 0000110  |  B2   |
+------+----------+-------+
|   3  | 0000110  |  B2   |
+------+----------+-------+
|   4  | 1111000  |  B6   |
+------+----------+-------+
|   5  | 1111000  |  B6   |
+------+----------+-------+
|   6  | 1111000  |  B6   |
+------+----------+-------+
|   7  | 1111000  |  B6   |
+------+----------+-------+
]]></artwork></artset></figure>

<t>We now consider that the link B1-&gt;B2 failed and that B1 needs to
forward a packet with bitstring 0001100.
Therefore, the BEA is set for BFR-id 2 and 3 in the backup BIFT.
If B1 needs to forward a packet with bitstring 0001100 (destinations
B3 and B4), the row for BFR-id B3 in the backup BIFT matches first.
Therefore, a packet with bitstring 0001100 is sent to B6 and the
bitstring of the remaining packet is also processed with BF-BM 1111110
so that the remaining bitstring is 0000000, which terminates the
forwarding process.
That is, only a single packet copy is sent to B6.</t>

</section>
</section>
<section anchor="primary_bift_single_backup_bift"><name>Prioritization of Backup Forwarding Entries over Primary Forwarding Entries</name>

<t>BIER-FRR defines that the backup BIFT is applied before the primary
BIFT.
The reason for that is twofold.
First, applying the primary BIFT first may erase the forwarding
information for BFERs whos primary BFR-NBR is unreachable.
Second, if that can be fixed, redundant packets can occur if the
primary BIFT is applied before the backup BIFT.
These issues are demonstrated in the above example when the link
B1-&gt;B2 has failed and B1 applies the primary BIFT before the backup
BIFT when forwarding a packet with bitstring 0011000 (B3 and B4 as
destinations).</t>

<t>We first assume that B1 just ignores the failed interface when
forwarding the packet with the primary BIFT but processes the
bitstring of remaining packet like if the transmission was successful.
That means, when BFR-id 3 matches first in the primary BIFT, no packet
is sent to B2, but the bits in the bitstring are still cleared,
leading to a remaining bitstring of 0001000.
Another pass through the primary BIFT forwards a packet copy to B6 and
clears the remaining bitstring to 0000000, which terminates the
forwarding process.
However, no packet will reach B3 as the bitstring information was lost
during the unsuccessful transmission.</t>

<t>We now assume a feature that saves the bitstring information when the
transmission to a specific BFR-id was not successful.
This can be done by AND-ing the remaining bitstring and the F-BM and
OR-ing the result with a remaining backup bitstring which was
initially zero.
Only then the bits of the F-BM are cleared from the remaining
bitstring.
When B1 is to forward a packet with bitstring 0001100, the first match
in the primary BIFT is for BFR-id 3.
As the transmission is not successful, 00000100 is saved in the
remaining backup bitstring and the remaining bitstring is 0001000.
Therefore, a second match in the primary BIFT is for BFR-id 4, which
sends a packet copy with bitstring 0001000 to B6.
Then, the remaining backup bitstring is processed with the backup
BIFT.
As there is a match for BFR-id 3, another packet is sent to B6, now
with bitstring 0000100.
This can be considered redundant.</t>

<t>Below the line, it is important to first process backup forwarding
entries before backup forwarding entries.
This avoids additions to the forwarding process with the primary BIFT
and avoids redundant packets.</t>

</section>
<section anchor="Protection_Levels"><name>Protection Levels</name>

<t>Both link protection and node protection may be supported.
Link protection is designed to safeguard against the failure of an
adjacent link, whereas node protection addresses the failure of a
neighboring node and the associated path leading to that node.
The relevance of link or node protection depends on the specific
service being supported.
Additionally, both protection levels can be combined with any of the
backup strategies outlined in <xref target="Strategies"/>.</t>

<section anchor="link_protection"><name>Link Protection</name>

<t>In link protection, the backup path is designed to circumvent the
failed link, i.e., the failed primary path from the PLR to the primary
BFR-NBR, while still potentially including the primary BFR-NBR itself.
Consequently, the backup path with link protection cannot protect
against the failure of the primary BFR-NBR.</t>

</section>
<section anchor="node_protection"><name>Node Protection</name>

<t>In node protection, the backup path is designed to avoid both the
failed node and the link to that node, i.e., the failed primary path
from the PLR to the primary BFR-NBR, including the primary BFR-NBR.
Consequently, the backup path with link protection also protects
against the failure of the primary BFR-NBR.
If a BFER and its primary BFR-NBR are the same, only link protection
is feasible for that BFER.</t>

</section>
<section anchor="protection_example"><name>Example</name>

<t>In the network depicted in <xref target="networking_scenario"/>, the primary path
from BFR B1 to BFER B5 is B1-&gt;B6-&gt;B5.
Protecting BFER B5 from a BFR-NBR B6 node failure can only be provided
through the backup path B1-&gt;B2-&gt;B3-&gt;B4-&gt;B5.
Link protection for BFER B5 is achieved via the backup path
B1-&gt;B2-&gt;B7-&gt;B6, and additionally through the backup path
B1-&gt;B2-&gt;B3-&gt;B4-&gt;B5-&gt;B6.
The specific backup entries are determined by the selected protection
level and backup strategy.
Example BIFTs illustrating link and node protection are provided in
<xref target="Strategies"/>.</t>

</section>
</section>
<section anchor="Strategies"><name>Backup Strategies</name>

<t>Backup strategies determine the selection of backup forwarding
entries, influencing both the choice of the backup BFR-NBR and the
backup forwarding action, and consequently, the backup path.
The following sections present tunnel-based BIER-FRR and LFA-based
BIER-FRR as potential strategies.
Both can be implemented with BIER-FRR presented in Section 3.</t>

<section anchor="Tunnel_Based"><name>Tunnel-Based BIER-FRR</name>

<t>The routing underlay may possess the capability to forward packets to
their destinations even in the presence of a failure, potentially due
to FRR mechanisms within the routing underlay.
In such scenarios, while the primary BFR-NBR may no longer be
reachable via the primary action (Direct), it could still be
accessible through a backup action (Tunnel).</t>

<t>Tunnel-based BIER-FRR encapsulates BIER packets impacted by a failure
within the routing underlay, thereby leveraging the routing underlay's
fast restoration capabilities.
As soon as connectivity in the routing underlay is reestablished, the
affected BIER packets can be forwarded to their intended destinations.
The appropriate backup forwarding entries in a BIFT for BIER-FRR are
determined by the desired protection level.</t>

<section anchor="tunnel-based-bier-frr-with-link-protection"><name>Tunnel-Based BIER-FRR with Link Protection</name>

<t>In the context of link protection, the backup BFR-NBRs are identical
to the primary BFR-NBRs.
If a primary BFR-NBR is directly connected to the BFR acting as the
Point of Local Repair (PLR), the corresponding backup forwarding
action is Tunnel.
Consequently, BIER packets affected by a failure are tunneled through
the routing underlay to their BFR-NBR, rather than being directly sent
as pure BIER packets.
If the primary BFR-NBR is not directly connected to the BFR as a PLR
(i.e., the implicit primary action is Tunnel), the corresponding
backup action is also Tunnel.
The backup F-BMs are identical to the primary F-BMs, which is
consistent with the computation of backup F-BMs described in
<xref target="f_bm_computation"/>.</t>

<figure title="B1's backup BIFT for tunnel-based BIER-FRR with link protection." anchor="backup_bift_tunnel_based_link_protection"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="504" viewBox="0 0 504 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,272" fill="none" stroke="black"/>
<path d="M 64,32 L 64,272" fill="none" stroke="black"/>
<path d="M 152,32 L 152,272" fill="none" stroke="black"/>
<path d="M 224,32 L 224,272" fill="none" stroke="black"/>
<path d="M 320,32 L 320,272" fill="none" stroke="black"/>
<path d="M 352,32 L 352,272" fill="none" stroke="black"/>
<path d="M 496,32 L 496,272" fill="none" stroke="black"/>
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,78 L 496,78" fill="none" stroke="black"/><path d="M 8,82 L 496,82" fill="none" stroke="black"/>
<path d="M 8,112 L 496,112" fill="none" stroke="black"/>
<path d="M 8,144 L 496,144" fill="none" stroke="black"/>
<path d="M 8,176 L 496,176" fill="none" stroke="black"/>
<path d="M 8,208 L 496,208" fill="none" stroke="black"/>
<path d="M 8,240 L 496,240" fill="none" stroke="black"/>
<path d="M 8,272 L 496,272" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="104" y="52">BF-BM</text>
<text x="188" y="52">BBFR-NBR</text>
<text x="264" y="52">BFA</text>
<text x="336" y="52">BEA</text>
<text x="388" y="52">Comment:</text>
<text x="460" y="52">protects</text>
<text x="400" y="68">failure</text>
<text x="444" y="68">of</text>
<text x="40" y="100">2</text>
<text x="104" y="100">0000110</text>
<text x="180" y="100">B2</text>
<text x="268" y="100">Tunnel</text>
<text x="388" y="100">Link</text>
<text x="436" y="100">B1-&gt;B2</text>
<text x="40" y="132">3</text>
<text x="104" y="132">0000110</text>
<text x="180" y="132">B2</text>
<text x="268" y="132">Tunnel</text>
<text x="388" y="132">Link</text>
<text x="436" y="132">B1-&gt;B2</text>
<text x="40" y="164">4</text>
<text x="104" y="164">1111000</text>
<text x="180" y="164">B6</text>
<text x="268" y="164">Tunnel</text>
<text x="388" y="164">Link</text>
<text x="436" y="164">B1-&gt;B6</text>
<text x="40" y="196">5</text>
<text x="104" y="196">1111000</text>
<text x="180" y="196">B6</text>
<text x="268" y="196">Tunnel</text>
<text x="388" y="196">Link</text>
<text x="436" y="196">B1-&gt;B6</text>
<text x="40" y="228">6</text>
<text x="104" y="228">1111000</text>
<text x="180" y="228">B6</text>
<text x="268" y="228">Tunnel</text>
<text x="388" y="228">Link</text>
<text x="436" y="228">B1-&gt;B6</text>
<text x="40" y="260">7</text>
<text x="104" y="260">1111000</text>
<text x="180" y="260">B6</text>
<text x="268" y="260">Tunnel</text>
<text x="388" y="260">Link</text>
<text x="436" y="260">B1-&gt;B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
  +------+----------+--------+-----------+---+-----------------+
  |BFR-id|  BF-BM   |BBFR-NBR|   BFA     |BEA|Comment: protects|
  |      |          |        |           |   |  failure of     |
  +======+==========+========+===========+===+=================+
  |   2  | 0000110  |  B2    |  Tunnel   |   |  Link B1->B2    |
  +------+----------+--------+-----------+---+-----------------+
  |   3  | 0000110  |  B2    |  Tunnel   |   |  Link B1->B2    |
  +------+----------+--------+-----------+---+-----------------+
  |   4  | 1111000  |  B6    |  Tunnel   |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   5  | 1111000  |  B6    |  Tunnel   |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   6  | 1111000  |  B6    |  Tunnel   |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   7  | 1111000  |  B6    |  Tunnel   |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
]]></artwork></artset></figure>

<t><xref target="backup_bift_tunnel_based_link_protection"/> illustrates B1's backup
BIFT for tunnel-based BIER-FRR with link protection in the BIER
network example depicted in <xref target="networking_scenario"/>.
The backup BFR-NBRs and backup F-BMs in this backup BIFT correspond to
the primary BFR-NBRs and primary F-BMs in the primary BIFT.
However, the backup actions in this backup BIFT are Tunnel, while the
primary forwarding actions in the primary BIFT are Direct (which are
not explicitly shown but are implicit).</t>

<t>When B1, acting as the PLR, detects a failure of its link to B6, a
BIER packet with the bitstring 0100000 destined for B6 is tunneled by
B1 through the routing underlay towards B6.
The specific path of the backup tunnel depends on the routing underlay
and could be B1-&gt;B2-&gt;B7-&gt;B6 or B1-&gt;B2-&gt;B3-&gt;B4-&gt;B5-&gt;B6.</t>

<t>If a BIER packet is destined for {B2, B5, B7}, an encapsulated packet
copy is first forwarded via link B1-&gt;B2 to backup BFR-NBR B6 using the
backup forwarding action Tunnel to deliver packet copies to BFERs B5
and B7.
Subsequently, a non-encapsulated packet copy is forwarded via link
B1-&gt;B2 to BFR-NBR B2 using the primary forwarding action Direct to
deliver a packet copy to BFER B2.
Therefore, with tunnel-based BIER-FRR, and link protection, a single
redundant packet copy may occur in the event of a failure because an
encapsulated and a non-encapsulated packet copy are forwarded over the
same link.
This redundancy occurs even though BIER packets affected by failures
are forwarded before those unaffected by failures.
The redundant packet is rather caused by the fact that two packet
copies are sent over the link with different next-hops on the BIER
layer, namely B2 and B6.</t>

<t>A BIER packet with the bitstring 1000000 destined for B7 is forwarded
along the backup path B1-&gt;B2-&gt;B7-&gt;B6-&gt;B7, as it is first delivered to
the backup BFR-NBR B6.
Consequently, the backup path may be unnecessarily long.
This phenomenon is similar to the facility backup method described in
<xref target="RFC4090"/> which employs paths analogous to those in tunnel-based
BIER-FRR.</t>

</section>
<section anchor="tunnel-based-bier-frr-with-node-protection"><name>Tunnel-Based BIER-FRR with Node Protection</name>

<t>To determine the backup forwarding entries for node protection, two
cases need to be distinguished.
If the BFER is the same as its primary BFR-NBR, node protection is not
feasible for that BFER.
Therefore, link protection is applied, meaning the backup BFR-NBR is
set to the primary BFR-NBR.
If the BFER is different from its primary BFR-NBR, the backup BFR-NBR
is set to the primary BFR-NBR's primary BFR-NBR for that BFER, making
the backup BFR-NBR a next-next-hop BFR.
In both cases, the backup forwarding action is Tunnel.
In the first case, the backup F-BM is set to all zeros with the bit
for the BFER to be protected enabled.
In the second case, the backup F-BM is computed as described in
<xref target="f_bm_computation"/>.</t>

<figure title="B1's backup BIFT for tunnel-based BIER-FRR with node protection." anchor="backup_bift_tunnel_based_node_protection"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="496" viewBox="0 0 496 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,272" fill="none" stroke="black"/>
<path d="M 64,32 L 64,272" fill="none" stroke="black"/>
<path d="M 152,32 L 152,272" fill="none" stroke="black"/>
<path d="M 224,32 L 224,272" fill="none" stroke="black"/>
<path d="M 312,32 L 312,272" fill="none" stroke="black"/>
<path d="M 344,32 L 344,272" fill="none" stroke="black"/>
<path d="M 488,32 L 488,272" fill="none" stroke="black"/>
<path d="M 8,32 L 488,32" fill="none" stroke="black"/>
<path d="M 8,78 L 488,78" fill="none" stroke="black"/><path d="M 8,82 L 488,82" fill="none" stroke="black"/>
<path d="M 8,112 L 488,112" fill="none" stroke="black"/>
<path d="M 8,144 L 488,144" fill="none" stroke="black"/>
<path d="M 8,176 L 488,176" fill="none" stroke="black"/>
<path d="M 8,208 L 488,208" fill="none" stroke="black"/>
<path d="M 8,240 L 488,240" fill="none" stroke="black"/>
<path d="M 8,272 L 488,272" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="104" y="52">BF-BM</text>
<text x="188" y="52">BBFR-NBR</text>
<text x="264" y="52">BFA</text>
<text x="328" y="52">BEA</text>
<text x="380" y="52">Comment:</text>
<text x="452" y="52">protects</text>
<text x="392" y="68">failure</text>
<text x="436" y="68">of</text>
<text x="40" y="100">2</text>
<text x="104" y="100">0000010</text>
<text x="188" y="100">B2</text>
<text x="268" y="100">Tunnel</text>
<text x="380" y="100">Link</text>
<text x="428" y="100">B1-&gt;B2</text>
<text x="40" y="132">3</text>
<text x="104" y="132">0000100</text>
<text x="188" y="132">B3</text>
<text x="268" y="132">Tunnel</text>
<text x="392" y="132">BFR-NBR</text>
<text x="436" y="132">B2</text>
<text x="40" y="164">4</text>
<text x="104" y="164">0011000</text>
<text x="188" y="164">B5</text>
<text x="268" y="164">Tunnel</text>
<text x="392" y="164">BFR-NBR</text>
<text x="436" y="164">B6</text>
<text x="40" y="196">5</text>
<text x="104" y="196">0011000</text>
<text x="188" y="196">B5</text>
<text x="268" y="196">Tunnel</text>
<text x="392" y="196">BFR-NBR</text>
<text x="436" y="196">B6</text>
<text x="40" y="228">6</text>
<text x="104" y="228">0100000</text>
<text x="188" y="228">B6</text>
<text x="268" y="228">Tunnel</text>
<text x="380" y="228">Link</text>
<text x="428" y="228">B1-&gt;B6</text>
<text x="40" y="260">7</text>
<text x="104" y="260">1000000</text>
<text x="188" y="260">B7</text>
<text x="268" y="260">Tunnel</text>
<text x="392" y="260">BFR-NBR</text>
<text x="436" y="260">B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
  +------+----------+--------+----------+---+-----------------+
  |BFR-id|  BF-BM   |BBFR-NBR|   BFA    |BEA|Comment: protects|
  |      |          |        |          |   |  failure of     |
  +======+==========+========+==========+===+=================+
  |   2  | 0000010  |   B2   |  Tunnel  |   |  Link B1->B2    |
  +------+----------+--------+----------+---+-----------------+
  |   3  | 0000100  |   B3   |  Tunnel  |   |  BFR-NBR B2     |
  +------+----------+--------+----------+---+-----------------+
  |   4  | 0011000  |   B5   |  Tunnel  |   |  BFR-NBR B6     |
  +------+----------+--------+----------+---+-----------------+
  |   5  | 0011000  |   B5   |  Tunnel  |   |  BFR-NBR B6     |
  +------+----------+--------+----------+---+-----------------+
  |   6  | 0100000  |   B6   |  Tunnel  |   |  Link B1->B6    |
  +------+----------+--------+----------+---+-----------------+
  |   7  | 1000000  |   B7   |  Tunnel  |   |  BFR-NBR B6     |
  +------+----------+--------+----------+---+-----------------+
]]></artwork></artset></figure>

<t><xref target="backup_bift_tunnel_based_node_protection"/> illustrates B1's backup
BIFT for tunnel-based BIER-FRR with node protection in the BIER
network example provided in <xref target="networking_scenario"/>.
BFERs B2 and B6 are direct neighbors of B1.
To protect them, only link protection is applied, as B1's primary
BFR-NBRs for these nodes are the nodes themselves.
As described above, only the bit for B2 is set in the backup F-BM of
B2, and similarly for B6.
For BFER B5, the backup BFR-NBR is B5, as it is B1's next-next-hop BFR
towards B5.
Similarly, for BFER B7, the backup BFR-NBR is B7.
When B1, acting as the PLR, detects the failure of its BFR-NBR B6, a
BIER packet with bitstring 1010010 destined for {B2, B5, B7} is
processed as follows: an encapsulated copy of the packet is sent via
tunnel B1-&gt;B2-&gt;B3-&gt;B4-&gt;B5, another encapsulated copy is sent via
tunnel B1-B2-B7, and a non-encapsulated copy is sent via link B1-&gt;B2.
In this example, two redundant packets are sent over link B1-&gt;B2.
Therefore, node protection may result in more redundant packet copies
than link protection.</t>

<t>Caveat: If the routing underlay does not support node protection,
tunnel-based BIER-FRR will similarly be unable to provide node
protection.
This limitation is illustrated in the following example.
In the network depicted in <xref target="networking_scenario"/>, the underlay offers
only link protection.
If BFR-NBR B6 fails and B1 must forward a packet to B5, according to
the backup BIFT in <xref target="backup_bift_tunnel_based_node_protection"/> the
packet is tunneled towards B5.
The underlay may route the packet along the path B1-&gt;B2-&gt;B7-&gt;B6-&gt;B5
due to FRR with link protection.
However, since B6 is also unreachable from B7, the packet is returned
to B2, resulting in a loop between B2 and B7.</t>

</section>
</section>
<section anchor="LFA_Based"><name>LFA-based BIER-FRR</name>

<t>LFA-based BIER-FRR leverages alternate BFRs to deliver BIER packets to
BFERs if their primary BFR-NBR is unreachable.
This approach does not rely on any fast restoration or protection
mechanisms in the underlying routing infrastructure.
First, the prerequisites for LFA-based BIER-FRR are clarified,
followed by the definition of BIER-LFAs.
Subsequently, link and node protection for LFA-based BIER-FRR are
discussed using a single backup BIFT.</t>

<section anchor="relation-of-bier-lfas-to-ip-lfas-and-prerequisites"><name>Relation of BIER-LFAs to IP-LFAs and Prerequisites</name>

<t>An LFA for a specific destination is an alternate node to which a
packet is sent if the primary next-hop for that destination is
unreachable.
This alternate node should be capable of forwarding the packet without
creating a forwarding loop.
LFAs have been defined for IP networks in <xref target="RFC5286"/>, <xref target="RFC7490"/> and
<xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/>, and such LFAs are referred to
as IP-LFAs.
BIER-LFAs are similar to IP-LFAs, but a BIER-LFA node must be a BFR.
If only a subset of the nodes in the routing underlay are BFRs, some
IP-LFAs in the routing underlay may not be usable as BIER-LFAs.
To compute BIER-LFAs, network topology and link cost information from
the routing underlay are required.
This differs from tunnel-based BIER-FRR, where knowledge of the
primary BIFTs of a PLR and its BFR-NBRs is sufficient.</t>

<t>LFA-based BIER-FRR may reuse IP-LFAs as BIER-LFAs under the following
conditions: if an IP-LFA node for the destination of a specific BFER
is a BFR, it may be reused as the backup BFR-NBR for that BFER, along
with the backup action applied for that IP-LFA at the IP layer.
A normal IP-LFA corresponds to the backup forwarding action Direct, a
remote IP-LFA to Tunnel, and a TI-IP-LFA to Explicit.</t>

</section>
<section anchor="definition-of-bier-lfas"><name>Definition of BIER-LFAs</name>

<t>As with IP-LFAs, there are several types of BIER-LFAs:</t>

<t><list style="symbols">
  <t>A BFR is considered a normal BIER-LFA for a specific BFER if it is
directly connected to the PLR and:  <list style="numbers">
      <t>the BFER can be reached from it through the BIER domain.</t>
      <t>both the path from the PLR to the BFR and the path from the BFR to the
BFER are disjoint from the primary path from the PLR to the primary BFR-NBR.
These paths:      <list style="symbols">
          <t>may include the primary BFR-NBR for link protection.</t>
          <t>must not include the primary BFR-NBR for node protection.</t>
        </list></t>
    </list></t>
  <t>A BFR is considered a remote BIER-LFA for a specific BFER if it is
not directly connected to the PLR, can be reached via a tunnel from
the PLR, and satisfies the aforementioned conditions 1 and 2.</t>
  <t>A BFR is considered a TI-BIER-LFA for a specific BFER if it is not
directly connected to the PLR, cannot be reached via a tunnel from
the PLR, but is reachable from the PLR via an explicit path (e.g.,
with the assistance of a Segment Routing (SR) header), and satisfies
the aforementioned conditions 1 and 2.</t>
</list></t>

<t>For the protection of some BFERs, one or more normal BIER-LFAs may be
available at a specific PLR.
For the protection of other BFERs, only remote or TI-BIER-LFAs may be
available.
There may also be BFERs which can be protected only through
TI-BIER-LFAs.</t>

<t>The backup forwarding actions for rerouting BIER packets depending on
the type of BIER-LFA are:</t>

<t><list style="symbols">
  <t>For normal BIER-LFA: Direct</t>
  <t>For remote BIER-LFA: Tunnel</t>
  <t>For TI-BIER-LFA: Explicit</t>
</list></t>

</section>
<section anchor="bier_lfa_protection_coverage"><name>Protection Coverage of BIER-LFA Types</name>

<t>Protection coverage refers to the set of BFERs that can be protected
with a desired level of protection by a particular type of BIER-LFA.
The BIER-LFA types exhibit the following characteristics:</t>

<t><list style="symbols">
  <t>Normal BIER-LFAs  <list style="symbols">
      <t>The protection coverage is the least as some or many BFERs may not
be protected at the desired protection level or at all.</t>
      <t>Redundant packet copies are avoided.</t>
      <t>There is no encapsulation overhead.</t>
    </list></t>
  <t>Remote BIER-LFAs  <list style="symbols">
      <t>They enhance the protection coverage of normal BIER-LFAs.</t>
      <t>Redundant packet copies may occur on a link, similar to
tunnel-based BIER-FRR.</t>
      <t>The encapsulation overhead is similar to that of tunnel-based
BIER-FRR.</t>
    </list></t>
  <t>TI-BIER-LFAs  <list style="symbols">
      <t>They complement the protection coverage of normal and remote
BIER-LFAs to achieve 100% coverage.</t>
      <t>Redundant packets may occur on a link, similar to tunnel-based
BIER-FRR.</t>
      <t>The encapsulation overhead is similar or equivalent to that of
tunnel-based BIER-FRR, depending on the FRR mechanism employed in
the routing underlay.</t>
      <t>There is increased complexity as segment routing, or some other
forms of explicit tunnels, needs to be supported by the routing
underlay.</t>
    </list></t>
</list></t>

</section>
<section anchor="sets-of-supported-bier-lfas"><name>Sets of Supported BIER-LFAs</name>

<t>Normal BIER-LFAs are the simplest option, as they do not require
tunneling or explicit paths.
Remote BIER-LFAs offer greater capabilities but introduce additional
header overhead and require more functionality from the PLR.
TI-BIER-LFAs are the most complex BIER-LFAs, necessitating the use of
explicit paths.
When implementing LFA-based BIER-FRR, it is essential to specify the
set of supported BIER-LFAs.
The available options are as follows:</t>

<t><list style="symbols">
  <t>Option 1: Only normal BIER-LFAs are supported.</t>
  <t>Option 2: Both normal and remote BIER-LFAs are supported.</t>
  <t>Option 3: All types of BIER-LFAs are supported.</t>
</list></t>

<t>Options 1 and 2 may not be able to protect the reachability of all
BFERs against all single link failures and all single node failures.</t>

</section>
<section anchor="lfa-based-1backup-bift-link-protect"><name>Link Protection</name>

<t>In the following, LFA-based BIER-FRR with link protection is
illustrated.
Thereby, normal BIER-LFAs are prioritized over remote LFAs, and remote
BIER-LFAs are preferred over TI-BIER-LFAs.
Depending on the specific PLR, simple BIER-LFAs are sufficient, remote
BIER-LFAs are needed, or even TI-BIER-LFAs to protect the reachability
of all BFERs against single link failures.</t>

<t>If the link between B1 and B6 fails, B1 cannot reach the BFERs B4, B5,
B6, and B7 via their primary BFR-NBR.
Consequently, B1 forwards their traffic via the backup BFR-NBR B2,
along with the traffic for B2 and B3, as B2 is their primary BFR-NBR.
In this scenario, the backup F-BM is set to 1111110.
Similarly, if the link between B1 and B2 fails, B1 routes all traffic
to B6, with the backup F-BM also set to 1111110.</t>

<t>B1 requires only normal BIER-LFAs to protect all BFERs.
However, this situation can vary significantly for other BFRs.
<xref target="b7-backup_bift_lfa-based-link-protect"/> and
<xref target="b5-backup_bift_link-protect"/> present the backup BIFTs for B7 and B5,
respectively.
BFR B7 requires one normal BIER-LFA, three remote BIER-LFAs, and two
TI-BIER-LFAs to protect all BFERs.
BFR B5 requires one normal BIER-LFA, one remote BIER-LFA, and four
TI-BIER-LFAs as backup BFR-NBRs.
Thus, depending on the set of supported BIER-LFAs, it may not be
possible to protect all BFERs using BIER-FRR.</t>

<t>Consider a scenario where B7 holds a BIER packet with destinations
{B1, B4, B5, B6}.
If the link between B7 and B6 fails, the packet copy for B1 is sent to
B2 using the backup forwarding action Direct, the packet copy for B4
is tunneled via B2 to B3, and the packet copies for B5 and B6 are sent
via explicit paths to B4 and B1, respectively.
Since these packet copies have different next-hops on the BIER layer,
all of them must be transmitted, resulting in three redundant copies.</t>

<figure title="B7's backup BIFT with link protection." anchor="b7-backup_bift_lfa-based-link-protect"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="504" viewBox="0 0 504 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,272" fill="none" stroke="black"/>
<path d="M 64,32 L 64,272" fill="none" stroke="black"/>
<path d="M 152,32 L 152,272" fill="none" stroke="black"/>
<path d="M 224,32 L 224,272" fill="none" stroke="black"/>
<path d="M 320,32 L 320,272" fill="none" stroke="black"/>
<path d="M 352,32 L 352,272" fill="none" stroke="black"/>
<path d="M 496,32 L 496,272" fill="none" stroke="black"/>
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,78 L 496,78" fill="none" stroke="black"/><path d="M 8,82 L 496,82" fill="none" stroke="black"/>
<path d="M 8,112 L 496,112" fill="none" stroke="black"/>
<path d="M 8,144 L 496,144" fill="none" stroke="black"/>
<path d="M 8,176 L 496,176" fill="none" stroke="black"/>
<path d="M 8,208 L 496,208" fill="none" stroke="black"/>
<path d="M 8,240 L 496,240" fill="none" stroke="black"/>
<path d="M 8,272 L 496,272" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="104" y="52">BF-BM</text>
<text x="188" y="52">BBFR-NBR</text>
<text x="264" y="52">BFA</text>
<text x="336" y="52">BEA</text>
<text x="388" y="52">Comment:</text>
<text x="460" y="52">protects</text>
<text x="400" y="68">failure</text>
<text x="444" y="68">of</text>
<text x="40" y="100">1</text>
<text x="104" y="100">0000111</text>
<text x="188" y="100">B2</text>
<text x="268" y="100">Direct</text>
<text x="388" y="100">Link</text>
<text x="436" y="100">B7-&gt;B6</text>
<text x="40" y="132">2</text>
<text x="104" y="132">0000110</text>
<text x="188" y="132">B1</text>
<text x="268" y="132">Tunnel</text>
<text x="388" y="132">Link</text>
<text x="436" y="132">B1-&gt;B2</text>
<text x="40" y="164">3</text>
<text x="104" y="164">0000110</text>
<text x="188" y="164">B1</text>
<text x="268" y="164">Tunnel</text>
<text x="388" y="164">Link</text>
<text x="436" y="164">B1-&gt;B2</text>
<text x="40" y="196">4</text>
<text x="104" y="196">0001000</text>
<text x="188" y="196">B3</text>
<text x="268" y="196">Tunnel</text>
<text x="388" y="196">Link</text>
<text x="436" y="196">B1-&gt;B6</text>
<text x="40" y="228">5</text>
<text x="104" y="228">0010000</text>
<text x="188" y="228">B4</text>
<text x="276" y="228">Explicit</text>
<text x="388" y="228">Link</text>
<text x="436" y="228">B1-&gt;B6</text>
<text x="40" y="260">6</text>
<text x="104" y="260">0100000</text>
<text x="188" y="260">B1</text>
<text x="276" y="260">Explicit</text>
<text x="388" y="260">Link</text>
<text x="436" y="260">B1-&gt;B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
  +------+----------+--------+-----------+---+-----------------+
  |BFR-id|  BF-BM   |BBFR-NBR|   BFA     |BEA|Comment: protects|
  |      |          |        |           |   |  failure of     |
  +======+==========+========+===========+===+=================+
  |   1  | 0000111  |   B2   |  Direct   |   |  Link B7->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   2  | 0000110  |   B1   |  Tunnel   |   |  Link B1->B2    |
  +------+----------+--------+-----------+---+-----------------+
  |   3  | 0000110  |   B1   |  Tunnel   |   |  Link B1->B2    |
  +------+----------+--------+-----------+---+-----------------+
  |   4  | 0001000  |   B3   |  Tunnel   |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   5  | 0010000  |   B4   |  Explicit |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   6  | 0100000  |   B1   |  Explicit |   |  Link B1->B6    |
  +------+----------+--------+-----------+---+-----------------+
]]></artwork></artset></figure>

<figure title="B5's backup BIFT with link protection." anchor="b5-backup_bift_link-protect"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="504" viewBox="0 0 504 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,272" fill="none" stroke="black"/>
<path d="M 64,32 L 64,272" fill="none" stroke="black"/>
<path d="M 152,32 L 152,272" fill="none" stroke="black"/>
<path d="M 224,32 L 224,272" fill="none" stroke="black"/>
<path d="M 320,32 L 320,272" fill="none" stroke="black"/>
<path d="M 352,32 L 352,272" fill="none" stroke="black"/>
<path d="M 496,32 L 496,272" fill="none" stroke="black"/>
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,78 L 496,78" fill="none" stroke="black"/><path d="M 8,82 L 496,82" fill="none" stroke="black"/>
<path d="M 8,112 L 496,112" fill="none" stroke="black"/>
<path d="M 8,144 L 496,144" fill="none" stroke="black"/>
<path d="M 8,176 L 496,176" fill="none" stroke="black"/>
<path d="M 8,208 L 496,208" fill="none" stroke="black"/>
<path d="M 8,240 L 496,240" fill="none" stroke="black"/>
<path d="M 8,272 L 496,272" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="104" y="52">BF-BM</text>
<text x="188" y="52">BBFR-NBR</text>
<text x="264" y="52">BFA</text>
<text x="336" y="52">BEA</text>
<text x="388" y="52">Comment:</text>
<text x="460" y="52">protects</text>
<text x="400" y="68">failure</text>
<text x="444" y="68">of</text>
<text x="40" y="100">1</text>
<text x="104" y="100">1100011</text>
<text x="188" y="100">B3</text>
<text x="276" y="100">Explicit</text>
<text x="388" y="100">Link</text>
<text x="436" y="100">B5-&gt;B6</text>
<text x="40" y="132">2</text>
<text x="104" y="132">1100011</text>
<text x="188" y="132">B3</text>
<text x="276" y="132">Explicit</text>
<text x="388" y="132">Link</text>
<text x="436" y="132">B5-&gt;B6</text>
<text x="40" y="164">3</text>
<text x="104" y="164">0000100</text>
<text x="188" y="164">B4</text>
<text x="268" y="164">Direct</text>
<text x="388" y="164">Link</text>
<text x="436" y="164">B5-&gt;B6</text>
<text x="40" y="196">4</text>
<text x="104" y="196">0001000</text>
<text x="188" y="196">B3</text>
<text x="268" y="196">Tunnel</text>
<text x="388" y="196">Link</text>
<text x="436" y="196">B5-&gt;B4</text>
<text x="40" y="228">6</text>
<text x="104" y="228">1100011</text>
<text x="188" y="228">B3</text>
<text x="276" y="228">Explicit</text>
<text x="388" y="228">Link</text>
<text x="436" y="228">B5-&gt;B6</text>
<text x="40" y="260">7</text>
<text x="104" y="260">1100011</text>
<text x="188" y="260">B3</text>
<text x="276" y="260">Explicit</text>
<text x="388" y="260">Link</text>
<text x="436" y="260">B5-&gt;B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
  +------+----------+--------+-----------+---+-----------------+
  |BFR-id|  BF-BM   |BBFR-NBR|   BFA     |BEA|Comment: protects|
  |      |          |        |           |   |  failure of     |
  +======+==========+========+===========+===+=================+
  |   1  | 1100011  |   B3   |  Explicit |   |  Link B5->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   2  | 1100011  |   B3   |  Explicit |   |  Link B5->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   3  | 0000100  |   B4   |  Direct   |   |  Link B5->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   4  | 0001000  |   B3   |  Tunnel   |   |  Link B5->B4    |
  +------+----------+--------+-----------+---+-----------------+
  |   6  | 1100011  |   B3   |  Explicit |   |  Link B5->B6    |
  +------+----------+--------+-----------+---+-----------------+
  |   7  | 1100011  |   B3   |  Explicit |   |  Link B5->B6    |
  +------+----------+--------+-----------+---+-----------------+
]]></artwork></artset></figure>

</section>
<section anchor="node-protection"><name>Node Protection</name>

<t>To determine the backup forwarding entries for node protection, it is
necessary to conduct a case-by-case analysis of the BFER to be
protected.
If the BFER is the same as its primary BFR-NBR, node protection is not
feasible for that BFER, and link protection must be applied instead.
In all other cases, the BFER should be protected by a node-protecting
BIER-LFA.
In this context, normal BIER-LFAs are prioritized over remote
BIER-LFAs, and remote BIER-LFAs are preferred over TI-BIER-LFAs.
Depending on the set of supported BIER-LFAs, it may not be possible to
protect certain BFERs.</t>

<t><xref target="b1-backup_bift_node-protect"/> illustrates B1's backup BIFT for
LFA-based BIER-FRR with node protection, using the network example
provided in <xref target="networking_scenario"/>.</t>

<figure title="B1's backup BIFT with node protection." anchor="b1-backup_bift_node-protect"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="504" viewBox="0 0 504 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,272" fill="none" stroke="black"/>
<path d="M 64,32 L 64,272" fill="none" stroke="black"/>
<path d="M 152,32 L 152,272" fill="none" stroke="black"/>
<path d="M 224,32 L 224,272" fill="none" stroke="black"/>
<path d="M 320,32 L 320,272" fill="none" stroke="black"/>
<path d="M 352,32 L 352,272" fill="none" stroke="black"/>
<path d="M 496,32 L 496,272" fill="none" stroke="black"/>
<path d="M 8,32 L 496,32" fill="none" stroke="black"/>
<path d="M 8,78 L 496,78" fill="none" stroke="black"/><path d="M 8,82 L 496,82" fill="none" stroke="black"/>
<path d="M 8,112 L 496,112" fill="none" stroke="black"/>
<path d="M 8,144 L 496,144" fill="none" stroke="black"/>
<path d="M 8,176 L 496,176" fill="none" stroke="black"/>
<path d="M 8,208 L 496,208" fill="none" stroke="black"/>
<path d="M 8,240 L 496,240" fill="none" stroke="black"/>
<path d="M 8,272 L 496,272" fill="none" stroke="black"/>
<g class="text">
<text x="36" y="52">BFR-id</text>
<text x="104" y="52">BF-BM</text>
<text x="188" y="52">BBFR-NBR</text>
<text x="264" y="52">BFA</text>
<text x="336" y="52">BEA</text>
<text x="388" y="52">Comment:</text>
<text x="460" y="52">protects</text>
<text x="400" y="68">failure</text>
<text x="444" y="68">of</text>
<text x="40" y="100">2</text>
<text x="104" y="100">1111010</text>
<text x="188" y="100">B6</text>
<text x="268" y="100">Direct</text>
<text x="400" y="100">BFR-NBR</text>
<text x="444" y="100">B2</text>
<text x="40" y="132">3</text>
<text x="104" y="132">0000100</text>
<text x="188" y="132">B4</text>
<text x="268" y="132">Tunnel</text>
<text x="400" y="132">BFR-NBR</text>
<text x="444" y="132">B2</text>
<text x="40" y="164">4</text>
<text x="104" y="164">0001000</text>
<text x="188" y="164">B3</text>
<text x="268" y="164">Tunnel</text>
<text x="400" y="164">BFR-NBR</text>
<text x="444" y="164">B6</text>
<text x="40" y="196">5</text>
<text x="104" y="196">0010000</text>
<text x="188" y="196">B4</text>
<text x="276" y="196">Explicit</text>
<text x="400" y="196">BFR-NBR</text>
<text x="444" y="196">B6</text>
<text x="40" y="228">6</text>
<text x="104" y="228">1100100</text>
<text x="188" y="228">B2</text>
<text x="268" y="228">Direct</text>
<text x="400" y="228">BFR-NBR</text>
<text x="444" y="228">B6</text>
<text x="40" y="260">7</text>
<text x="104" y="260">1100100</text>
<text x="188" y="260">B2</text>
<text x="268" y="260">Direct</text>
<text x="400" y="260">BFR-NBR</text>
<text x="444" y="260">B6</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
  +------+----------+--------+-----------+---+-----------------+
  |BFR-id|  BF-BM   |BBFR-NBR|   BFA     |BEA|Comment: protects|
  |      |          |        |           |   |  failure of     |
  +======+==========+========+===========+===+=================+
  |   2  | 1111010  |   B6   |  Direct   |   |  BFR-NBR B2     |
  +------+----------+--------+-----------+---+-----------------+
  |   3  | 0000100  |   B4   |  Tunnel   |   |  BFR-NBR B2     |
  +------+----------+--------+-----------+---+-----------------+
  |   4  | 0001000  |   B3   |  Tunnel   |   |  BFR-NBR B6     |
  +------+----------+--------+-----------+---+-----------------+
  |   5  | 0010000  |   B4   |  Explicit |   |  BFR-NBR B6     |
  +------+----------+--------+-----------+---+-----------------+
  |   6  | 1100100  |   B2   |  Direct   |   |  BFR-NBR B6     |
  +------+----------+--------+-----------+---+-----------------+
  |   7  | 1100100  |   B2   |  Direct   |   |  BFR-NBR B6     |
  +------+----------+--------+-----------+---+-----------------+
]]></artwork></artset></figure>

<t>As B6 serves as the primary BFR-NBR for BFER B6, only link protection
can be applied.
Consequently, B2 is utilized as a normal, link-protecting BIER-LFA to
safeguard B6.
Similarly, as B2 is the primary BFR-NBR for BFER B2, B2 is protected
with B6 as its normal, link-protecting BIER-LFA.
BFER B7 is protected against the failure of node B6 by using B2 as its
normal, node-protecting BIER-LFA, as B2 has a shortest path to B7 that
does not traverse B6.
The backup F-BMs for BFERs B6 and B7 are set to {B2, B6, B7}, as
traffic for these BFERs is routed via link B1-&gt;B2 with the backup
forwarding action Direct when B6 is unreachable.</t>

<t>BFER B4 cannot be reached via a normal LFA when BFR B6 fails.
However, B3 serves as a remote, node-protecting BIER-LFA for BFER B4,
as B3 has a shortest path to B4, is reachable from B1 via a shortest
path, and the resulting backup path from B1 to B4 does not traverse
B6.
Similarly, B4 serves as a remote LFA for BFER B3 if BFR B2 fails.</t>

<t>BFER B5 is neither reachable through a normal BIER-LFA nor through a
remote BIER-LFA when BFR B6 fails.
However, B4 acts as a node-protecting TI-BIER-LFA for BFER B5 as B4 is
reachable through the explicit path B1-&gt;B2-&gt;B3-&gt;B4 and has a shortest
path to B5 that does not traverse B6.</t>

<t>Consider a scenario where B1 holds a BIER packet with destinations
{B4, B5, B6}.
If the link between B1 and B2 fails, the packet copy for B1 is sent to
B2 using the backup forwarding action Direct, a packet copy for B4 is
tunneled via B2, and a packet copy for B5 is sent via an explicit path
to B4.
Since these packet copies have different next-hops on the BIER layer,
all of them must be transmitted, resulting in two redundant copies.</t>

</section>
<section anchor="optimization-potential-to-reduce-redundant-bier-packets-in-failure-cases"><name>Optimization Potential to Reduce Redundant BIER Packets in Failure Cases</name>

<t>Redundant packets can occur with LFA-based BIER-FRR when BIER packets
are transmitted over a specific link in different forms, including:</t>

<t><list style="symbols">
  <t>Directly sent BIER packets (either primary transmission or reroute
to a normal BIER-LFA).</t>
  <t>BIER packets encapsulated for transmission to a specific BFR-NBR
(either tunneled primary transmission or reroute to a remote
BIER-LFA).</t>
  <t>BIER packets routed with an encoded explicit path (reroute to a
TI-LFA).</t>
</list></t>

<t>When different remote BIER-LFAs are utilized, multiple redundant
packets may be generated.
A similar situation can arise with TI-BIER-LFAs.
However, some redundant packets can be mitigated if remote BIER-LFAs
or TI-BIER-LFAs are selected such that they can protect multiple
BFERs, thereby reducing the need for additional remote BIER-LFAs or
TI-BIER-LFAs.
This approach, while potentially leading to longer backup paths,
introduces a new optimization objective for the selection of remote or
TI-BIER-LFAs, which does not exist in IP-FRR.
The relevance of this optimization may vary depending on the specific
use case.</t>

<t>To illustrate this optimization potential, consider LFA-based BIER-FRR
with link protection for B7, as described in its backup BIFT in
<xref target="b7-backup_bift_lfa-based-link-protect"/>.
As noted in <xref target="lfa-based-1backup-bift-link-protect"/>, B7 needs to
transmit four copies to forward a packet to {B1, B4, B5, B6}.
If the more complex TI-BIER-LFA B4 is chosen to protect BFER B4
instead of the remote BIER-LFA B3, only two redundant copies need to
be transmitted.</t>

</section>
</section>
</section>
<section anchor="Comparison"><name>Comparison</name>

<t>This section first addresses the differences between IP-LFAs for
IP-FRR and BIER-LFAs for BIER-FRR.
It then examines the advantages and disadvantages of tunnel-based and
LFA-based BIER-FRR.</t>

<section anchor="comparison-of-lfa-based-protection-for-ip-frr-and-bier-frr"><name>Comparison of LFA-Based Protection for IP-FRR and BIER-FRR</name>

<t>LFAs were initially proposed for IP networks.
They are straightforward in that they do not require any tunneling
overhead.
However, certain destinations cannot be protected against specific
link failures, and even more destinations may be unprotectable against
certain node failures.
To improve coverage, remote LFAs (R-LFAs) were introduced, which
tunnel affected traffic to another node from which the traffic can
reach the destination through normal forwarding.
Despite this, there may still be destinations that remain unprotected
against link or node failures.
To address this, topology-independent LFAs (TI-LFAs) were developed,
wherein affected traffic is tunneled via an explicit path (preferably
using segment routing headers) to another node from which the traffic
can reach its destination through standard IP forwarding.
With TI-LFAs, all destinations can be protected against any failures
as long as connectivity exists.</t>

<t>LFA-based BIER-FRR adopts the principles of LFAs but differs from
IP-FRR in that the LFA target node, i.e., the next-hop on the BIER
layer to which traffic is diverted, must be a BFR.
If an IP-LFA target is a BFR, it can be utilized as a BIER-LFA;
otherwise, it cannot serve as a BIER-LFA.
Consequently, if only a subset of nodes in the underlay are BFRs, the
BIER-LFAs will differ substantially from IP-LFAs.
Furthermore, this makes it more challenging to find normal BIER-LFAs
which do not require tunneling.
As a result, LFA-based BIER-FRR is likely to require more remote
BIER-LFAs and TI-BIER-LFAs than IP-FRR under such conditions.</t>

</section>
<section anchor="advantages-and-disadvantages-of-tunnel-based-bier-frr"><name>Advantages and Disadvantages of Tunnel-Based BIER-FRR</name>

<section anchor="advantages"><name>Advantages</name>

<t><list style="symbols">
  <t>The computation of backup forwarding entries for tunnel-based
BIER-FRR is straightforward, requiring only the primary BIFTs of a
PLR and its BFR-NBRs.
No routing information from the routing underlay is needed.</t>
  <t>The forwarding action "Explicit" is not required for tunnel-based
BIER-FRR.
However, depending on the underlay, explicit forwarding may still be
utilized to achieve FRR in the underlay.</t>
</list></t>

</section>
<section anchor="disadvantages"><name>Disadvantages</name>

<t><list style="symbols">
  <t>Tunnel-based BIER-FRR relies on the presence of a FRR mechanism in
the underlay.</t>
  <t>Its protection level is constrained by the protection level provided
by the underlay.
For instance, if the underlay supports only link protection,
tunnel-based BIER-FRR cannot offer node protection.</t>
  <t>Redundant packet copies may occur in tunnel-based BIER-FRR.</t>
  <t>Backup paths may be longer than with LFA-based BIER-FRR.</t>
  <t>A tunneling header is required for any rerouting, resulting in
additional header overhead.</t>
</list></t>

</section>
</section>
<section anchor="advantages-and-disadvantages-of-lfa-based-bier-frr"><name>Advantages and Disadvantages of LFA-Based BIER-FRR</name>

<section anchor="advantages-1"><name>Advantages</name>

<t><list style="symbols">
  <t>LFA-based BIER-FRR does not depend on any fast protection mechanisms
in the underlay.</t>
  <t>Therefore, it can provide superior protection at the BIER layer
compared to the IP layer, particularly if LFA-based BIER-FRR
utilizes BIER-LFAs with a higher protection level than those used in
LFA-based IP-FRR.
For example, the underlay may only offer FRR with link protection,
while BIER-FRR can provide node protection for BIER traffic.</t>
  <t>LFA-based BIER-FRR avoids header overhead for normal BIER-LFAs.</t>
</list></t>

</section>
<section anchor="disadvantages-1"><name>Disadvantages</name>

<t><list style="symbols">
  <t>The computation of backup forwarding entries requires routing
information from the underlay.</t>
  <t>The computation of backup forwarding entries is more complex when
some nodes in the underlay are not BFRs because then BIER-LFAs
differ from IP-LFAs.</t>
  <t>The "Tunnel" forwarding action is required to protect certain BFERs,
which adds header overhead.</t>
  <t>The "Explicit" forwarding action is necessary to achieve full
protection coverage in some topologies; without it, only partial
protection coverage is possible.
This requires support for explicit paths, such as Segment Routing.</t>
  <t>More remote BIER-LFAs and TI-BIER-LFAs are needed compared to IP-FRR
if some nodes in the routing underlay are not BFRs.</t>
  <t>Redundant packet copies may occur in LFA-based BIER-FRR, though this
is less frequent than with tunnel-based BIER-FRR as simple BIER-LFAs
do not require a tunnel.</t>
</list></t>

</section>
</section>
</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This specification does not introduce additional security concerns
beyond those already discussed in the BIER architecture <xref target="RFC8279"/>
along with the IP FRR <xref target="RFC5286"/> and LFA <xref target="RFC7490"/> specifications.</t>

</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>No requirements for IANA.</t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank Daniel Merling, Jeffrey Zhang, Tony
Przygienda and Shaofu Peng for their comments to this work.
A special thank you to Gunter van de Velde for his extensive editing
to help bring this document to publication.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC5286">
  <front>
    <title>Basic Specification for IP Fast Reroute: Loop-Free Alternates</title>
    <author fullname="A. Atlas" initials="A." role="editor" surname="Atlas"/>
    <author fullname="A. Zinin" initials="A." role="editor" surname="Zinin"/>
    <date month="September" year="2008"/>
    <abstract>
      <t>This document describes the use of loop-free alternates to provide local protection for unicast traffic in pure IP and MPLS/LDP networks in the event of a single failure, whether link, node, or shared risk link group (SRLG). The goal of this technology is to reduce the packet loss that happens while routers converge after a topology change due to a failure. Rapid failure repair is achieved through use of precalculated backup next-hops that are loop-free and safe to use until the distributed network convergence process completes. This simple approach does not require any support from other routers. The extent to which this goal can be met by this specification is dependent on the topology of the network. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5286"/>
  <seriesInfo name="DOI" value="10.17487/RFC5286"/>
</reference>

<reference anchor="RFC7431">
  <front>
    <title>Multicast-Only Fast Reroute</title>
    <author fullname="A. Karan" initials="A." surname="Karan"/>
    <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <date month="August" year="2015"/>
    <abstract>
      <t>As IPTV deployments grow in number and size, service providers are looking for solutions that minimize the service disruption due to faults in the IP network carrying the packets for these services. This document describes a mechanism for minimizing packet loss in a network when node or link failures occur. Multicast-only Fast Reroute (MoFRR) works by making simple enhancements to multicast routing protocols such as Protocol Independent Multicast (PIM) and Multipoint LDP (mLDP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7431"/>
  <seriesInfo name="DOI" value="10.17487/RFC7431"/>
</reference>

<reference anchor="RFC8279">
  <front>
    <title>Multicast Using Bit Index Explicit Replication (BIER)</title>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen"/>
    <author fullname="A. Dolganow" initials="A." surname="Dolganow"/>
    <author fullname="T. Przygienda" initials="T." surname="Przygienda"/>
    <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
    <date month="November" year="2017"/>
    <abstract>
      <t>This document specifies a new architecture for the forwarding of multicast data packets. It provides optimal forwarding of multicast packets through a "multicast domain". However, it does not require a protocol for explicitly building multicast distribution trees, nor does it require intermediate nodes to maintain any per-flow state. This architecture is known as "Bit Index Explicit Replication" (BIER). When a multicast data packet enters the domain, the ingress router determines the set of egress routers to which the packet needs to be sent. The ingress router then encapsulates the packet in a BIER header. The BIER header contains a bit string in which each bit represents exactly one egress router in the domain; to forward the packet to a given set of egress routers, the bits corresponding to those routers are set in the BIER header. The procedures for forwarding a packet based on its BIER header are specified in this document. Elimination of the per-flow state and the explicit tree-building protocols results in a considerable simplification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8279"/>
  <seriesInfo name="DOI" value="10.17487/RFC8279"/>
</reference>

<reference anchor="RFC7490">
  <front>
    <title>Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)</title>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <author fullname="M. Shand" initials="M." surname="Shand"/>
    <author fullname="N. So" initials="N." surname="So"/>
    <date month="April" year="2015"/>
    <abstract>
      <t>This document describes an extension to the basic IP fast reroute mechanism, described in RFC 5286, that provides additional backup connectivity for point-to-point link failures when none can be provided by the basic mechanisms.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7490"/>
  <seriesInfo name="DOI" value="10.17487/RFC7490"/>
</reference>

<reference anchor="RFC5880">
  <front>
    <title>Bidirectional Forwarding Detection (BFD)</title>
    <author fullname="D. Katz" initials="D." surname="Katz"/>
    <author fullname="D. Ward" initials="D." surname="Ward"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency. It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5880"/>
  <seriesInfo name="DOI" value="10.17487/RFC5880"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RSVP-TE">
  <front>
    <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="V. Srinivasan" initials="V." surname="Srinivasan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <date month="December" year="2001"/>
    <abstract>
      <t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching). Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels. A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3209"/>
  <seriesInfo name="DOI" value="10.17487/RFC3209"/>
</reference>

<reference anchor="RFC4090">
  <front>
    <title>Fast Reroute Extensions to RSVP-TE for LSP Tunnels</title>
    <author fullname="P. Pan" initials="P." role="editor" surname="Pan"/>
    <author fullname="G. Swallow" initials="G." role="editor" surname="Swallow"/>
    <author fullname="A. Atlas" initials="A." role="editor" surname="Atlas"/>
    <date month="May" year="2005"/>
    <abstract>
      <t>This document defines RSVP-TE extensions to establish backup label-switched path (LSP) tunnels for local repair of LSP tunnels. These mechanisms enable the re-direction of traffic onto backup LSP tunnels in 10s of milliseconds, in the event of a failure.</t>
      <t>Two methods are defined here. The one-to-one backup method creates detour LSPs for each protected LSP at each potential point of local repair. The facility backup method creates a bypass tunnel to protect a potential failure point; by taking advantage of MPLS label stacking, this bypass tunnel can protect a set of LSPs that have similar backup constraints. Both methods can be used to protect links and nodes during network failure. The described behavior and extensions to RSVP allow nodes to implement either method or both and to interoperate in a mixed network. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4090"/>
  <seriesInfo name="DOI" value="10.17487/RFC4090"/>
</reference>

<reference anchor="IP-FRR">
  <front>
    <title>IP Fast Reroute Framework</title>
    <author fullname="M. Shand" initials="M." surname="Shand"/>
    <author fullname="S. Bryant" initials="S." surname="Bryant"/>
    <date month="January" year="2010"/>
    <abstract>
      <t>This document provides a framework for the development of IP fast- reroute mechanisms that provide protection against link or router failure by invoking locally determined repair paths. Unlike MPLS fast-reroute, the mechanisms are applicable to a network employing conventional IP routing and forwarding. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5714"/>
  <seriesInfo name="DOI" value="10.17487/RFC5714"/>
</reference>

<reference anchor="mLDP">
  <front>
    <title>Label Distribution Protocol Extensions for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths</title>
    <author fullname="IJ. Wijnands" initials="IJ." role="editor" surname="Wijnands"/>
    <author fullname="I. Minei" initials="I." role="editor" surname="Minei"/>
    <author fullname="K. Kompella" initials="K." surname="Kompella"/>
    <author fullname="B. Thomas" initials="B." surname="Thomas"/>
    <date month="November" year="2011"/>
    <abstract>
      <t>This document describes extensions to the Label Distribution Protocol (LDP) for the setup of point-to-multipoint (P2MP) and multipoint-to-multipoint (MP2MP) Label Switched Paths (LSPs) in MPLS networks. These extensions are also referred to as multipoint LDP. Multipoint LDP constructs the P2MP or MP2MP LSPs without interacting with or relying upon any other multicast tree construction protocol. Protocol elements and procedures for this solution are described for building such LSPs in a receiver-initiated manner. There can be various applications for multipoint LSPs, for example IP multicast or support for multicast in BGP/MPLS Layer 3 Virtual Private Networks (L3VPNs). Specification of how such applications can use an LDP signaled multipoint LSP is outside the scope of this document. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6388"/>
  <seriesInfo name="DOI" value="10.17487/RFC6388"/>
</reference>

<reference anchor="PIM-SM">
  <front>
    <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)</title>
    <author fullname="B. Fenner" initials="B." surname="Fenner"/>
    <author fullname="M. Handley" initials="M." surname="Handley"/>
    <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
    <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
    <author fullname="R. Parekh" initials="R." surname="Parekh"/>
    <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
    <author fullname="L. Zheng" initials="L." surname="Zheng"/>
    <date month="March" year="2016"/>
    <abstract>
      <t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source.</t>
      <t>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="83"/>
  <seriesInfo name="RFC" value="7761"/>
  <seriesInfo name="DOI" value="10.17487/RFC7761"/>
</reference>

<reference anchor="SRH">
  <front>
    <title>IPv6 Segment Routing Header (SRH)</title>
    <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
    <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <author fullname="J. Leddy" initials="J." surname="Leddy"/>
    <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8754"/>
  <seriesInfo name="DOI" value="10.17487/RFC8754"/>
</reference>

<reference anchor="RFC9855">
  <front>
    <title>Topology Independent Fast Reroute Using Segment Routing</title>
    <author fullname="A. Bashandy" initials="A." surname="Bashandy"/>
    <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
    <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
    <author fullname="P. Francois" initials="P." surname="Francois"/>
    <author fullname="B. Decraene" initials="B." surname="Decraene"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <date month="October" year="2025"/>
    <abstract>
      <t>This document presents Topology Independent Loop-Free Alternate (TI-LFA) Fast Reroute (FRR), which is aimed at providing protection of node and Adjacency segments within the Segment Routing (SR) framework. This FRR behavior builds on proven IP FRR concepts being LFAs, Remote LFAs (RLFAs), and Directed Loop-Free Alternates (DLFAs). It extends these concepts to provide guaranteed coverage in any two-connected networks using a link-state IGP. An important aspect of TI-LFA is the FRR path selection approach establishing protection over the expected post-convergence paths from the Point of Local Repair (PLR), reducing the operational need to control the tie-breaks among various FRR options.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9855"/>
  <seriesInfo name="DOI" value="10.17487/RFC9855"/>
</reference>


<reference anchor="I-D.chen-bier-egress-protect">
   <front>
      <title>BIER Egress Protection</title>
      <author fullname="Huaimo Chen" initials="H." surname="Chen">
         <organization>Futurewei</organization>
      </author>
      <author fullname="Mike McBride" initials="M." surname="McBride">
         <organization>Futurewei</organization>
      </author>
      <author fullname="Aijun Wang" initials="A." surname="Wang">
         <organization>China Telecom</organization>
      </author>
      <author fullname="Gyan Mishra" initials="G. S." surname="Mishra">
         <organization>Verizon Inc.</organization>
      </author>
      <author fullname="Yisong Liu" initials="Y." surname="Liu">
         <organization>China Mobile</organization>
      </author>
      <author fullname="Michael Menth" initials="M." surname="Menth">
         <organization>University of Tuebingen</organization>
      </author>
      <author fullname="Boris Khasanov" initials="B." surname="Khasanov">
         <organization>Yandex LLC</organization>
      </author>
      <author fullname="Xuesong Geng" initials="X." surname="Geng">
         <organization>Huawei</organization>
      </author>
      <author fullname="Yanhe Fan" initials="Y." surname="Fan">
         <organization>Casa Systems</organization>
      </author>
      <author fullname="Lei Liu" initials="L." surname="Liu">
         <organization>Fujitsu</organization>
      </author>
      <author fullname="Xufeng Liu" initials="X." surname="Liu">
         <organization>Alef Edge</organization>
      </author>
      <date day="28" month="March" year="2024"/>
      <abstract>
	 <t>   This document describes a mechanism for fast protection against the
   failure of an egress node of a &quot;Bit Index Explicit Replication&quot;
   (BIER) domain.  It is called BIER egress protection.  It does not
   require any per-flow state in the core of the domain.  With BIER
   egress protection the failure of a primary BFER (Bit Forwarding
   Egress Router) is protected with a backup BFER such that traffic
   destined to the primary BFER in the BIER domain is fast rerouted by a
   neighbor BFR to the backup BFER on the BIER layer.  The mechanism is
   applicable if all BIER traffic sent to the primary BFER can reach its
   destination also via the backup BFER.  It is complementary to BIER-
   FRR which cannot protect against the failure of a BFER.


	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-chen-bier-egress-protect-07"/>
   
</reference>


<reference anchor="I-D.ietf-rtgwg-segment-routing-ti-lfa">
   <front>
      <title>Topology Independent Fast Reroute using Segment Routing</title>
      <author fullname="Ahmed Bashandy" initials="A." surname="Bashandy">
         <organization>Individual</organization>
      </author>
      <author fullname="Stephane Litkowski" initials="S." surname="Litkowski">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Pierre Francois" initials="P." surname="Francois">
         <organization>INSA Lyon</organization>
      </author>
      <author fullname="Bruno Decraene" initials="B." surname="Decraene">
         <organization>Orange</organization>
      </author>
      <author fullname="Daniel Voyer" initials="D." surname="Voyer">
         <organization>Bell Canada</organization>
      </author>
      <date day="12" month="February" year="2025"/>
      <abstract>
	 <t>   This document presents Topology Independent Loop-free Alternate Fast
   Reroute (TI-LFA), aimed at providing protection of node and adjacency
   segments within the Segment Routing (SR) framework.  This Fast
   Reroute (FRR) behavior builds on proven IP Fast Reroute concepts
   being LFAs, remote LFAs (RLFA), and remote LFAs with directed
   forwarding (DLFA).  It extends these concepts to provide guaranteed
   coverage in any two-connected networks using a link-state IGP.  An
   important aspect of TI-LFA is the FRR path selection approach
   establishing protection over the expected post-convergence paths from
   the point of local repair, reducing the operational need to control
   the tie-breaks among various FRR options.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-segment-routing-ti-lfa-21"/>
   
</reference>


<reference anchor="BrAl17" >
  <front>
    <title>Performance Comparison of Resilience Mechanisms for Stateless Multicast Using BIER</title>
    <author initials="W." surname="Braun" fullname="W. Braun">
      <organization></organization>
    </author>
    <author initials="M." surname="Albert" fullname="M. Albert">
      <organization></organization>
    </author>
    <author initials="T." surname="Eckert" fullname="T. Eckert">
      <organization></organization>
    </author>
    <author initials="M." surname="Menth" fullname="M. Menth">
      <organization></organization>
    </author>
    <date year="2017" month="May"/>
  </front>
</reference>


    </references>


<?line 2152?>

<section anchor="non-working-frr-options"><name>Non-working FRR options</name>

<section anchor="bier-in-bier"><name>BIER-in-BIER encapsulation</name>

<t><xref target="example41"/> is again the example shown in <xref target="example4"/>. One
option not discussed in before - because it can reasonably not
be made to work - is to attempt using BIER-in-BIER encapsulation
to improve over the solution described.</t>

<figure title="Example 4" anchor="example41"><artset><artwork  type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="336" viewBox="0 0 336 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 120,32 L 120,40" fill="none" stroke="black"/>
<path d="M 248,32 L 248,40" fill="none" stroke="black"/>
<path d="M 200,96 L 256,96" fill="none" stroke="black"/>
<path d="M 288,96 L 304,96" fill="none" stroke="black"/>
<path d="M 32,112 L 56,112" fill="none" stroke="black"/>
<path d="M 200,128 L 256,128" fill="none" stroke="black"/>
<path d="M 288,128 L 304,128" fill="none" stroke="black"/>
<path d="M 288,160 L 304,160" fill="none" stroke="black"/>
<g class="text">
<text x="104" y="36">(q5</text>
<text x="136" y="36">q8)</text>
<text x="184" y="36">(q5,q6)</text>
<text x="232" y="36">(q5</text>
<text x="264" y="36">q6)</text>
<text x="132" y="52">(p1)</text>
<text x="188" y="52">(p1)</text>
<text x="236" y="52">(p1)</text>
<text x="100" y="68">--</text>
<text x="128" y="68">R11</text>
<text x="156" y="68">--</text>
<text x="184" y="68">R10</text>
<text x="208" y="68">-</text>
<text x="232" y="68">R12</text>
<text x="256" y="68">-</text>
<text x="276" y="68">R3</text>
<text x="300" y="68">--</text>
<text x="324" y="68">R5</text>
<text x="88" y="84">/</text>
<text x="264" y="84">/</text>
<text x="280" y="84">\</text>
<text x="80" y="100">|</text>
<text x="192" y="100">/</text>
<text x="324" y="100">R6</text>
<text x="12" y="116">R0</text>
<text x="80" y="116">R12</text>
<text x="108" y="116">--</text>
<text x="132" y="116">R1</text>
<text x="156" y="116">--</text>
<text x="180" y="116">R2</text>
<text x="64" y="132">(p1)|</text>
<text x="156" y="132">L1</text>
<text x="192" y="132">\</text>
<text x="324" y="132">R7</text>
<text x="88" y="148">\</text>
<text x="264" y="148">\</text>
<text x="280" y="148">/</text>
<text x="100" y="164">--</text>
<text x="128" y="164">R13</text>
<text x="156" y="164">--</text>
<text x="180" y="164">R9</text>
<text x="204" y="164">--</text>
<text x="228" y="164">R4</text>
<text x="248" y="164">-</text>
<text x="268" y="164">R7</text>
<text x="324" y="164">R8</text>
<text x="132" y="180">(p1)</text>
<text x="180" y="180">(p1)</text>
<text x="228" y="180">(p1)</text>
<text x="120" y="196">(q7,q8)</text>
<text x="184" y="196">(q7,q8)</text>
<text x="248" y="196">(q7,q8)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art" align="center"><![CDATA[
                (q5,q8) (q5,q6) (q5,q6)
                   (p1)   (p1)  (p1)
                -- R11 -- R10 - R12 - R3 -- R5
               /                     / \
              |             /--------   --- R6
     R0 ---- R12 -- R1 -- R2
          (p1)|        L1   \--------   --- R7
               \                     \ /
                -- R13 -- R9 -- R4 - R7 --- R8
                   (p1)  (p1)  (p1)
                (q7,q8) (q7,q8) (q7,q8)
                      
]]></artwork></artset></figure>

<t>One way how one could attempt to avoid having to send out
two copies from R1 under the failure of R2, one towards R11 to then
reach R5, R6 and one towards R13 to then reach R7, R8 is to
consider encapsulating the packet into a new BIER header which
for example has as destinations (BFER) R11 and R13. When 
R11 and R13 respectively receive this packet, they decapsulate it,
encounter the original BIER packet (that was FRR redirected by R1),
and continue to forward it to it's ultimate destinations.</t>

<t>Unfortunately, this topology also shows how this would fail.
When R11 would process the original BIER packet and encounter
the bits for either R7 and.or R8, then it would send a copy
back to R12 to reach R7, R8. That copy would again reach R1,
and in result in another FRR'ed copy of the same packet. This
duplication would only stop due to TTL expiry.</t>

<t>Arguably, if the BIER encapsulation was choosen not to send
copies towards R11, R13, but instead R12, R4, then this
looping would not happen because the copy for R7, R8 from R12
would instead be sent towards R3, which would send it towards
R2 which assumably has failed and hence the packet copy from
R3 would be dropped.</t>

<t>However, in reality FRR would not only be set up on R1 towards R2,
but equally on R3 and R7, so both of them would equally create
FRR packets when they recognize R2 to be down.</t>

</section>
</section>
<section anchor="changelog"><name>Changelog</name>

<t>[RFC-Editor: Please remove this section].</t>

<section anchor="rev-13-"><name>rev 13 -</name>

<t>Wrote new chapter 3 BIFT/forwarding to specify a simplified set of forwarding/BIFT options for FRR.
They are explained on one simple topology example that shows how they do create different
outputs of packets in the FRR case. These differences are what justifies the need to
specify or in future standardize the models - operators need to be able to verify behavior of
router (with BIER/FRR) against specified behavior to see if it works correctly, and they need
to be able to plan capacity based on the expectation of how much BIER traffic will flow with FRR.</t>

<t>Beyond section 3 is still old text, need to negotiate with other authors how much of that is
still useful.</t>

<t>TBD: algorithms to calculate FRR in control plane.</t>

</section>
<section anchor="rev-12-"><name>rev 12 -</name>

<t>Intermediate version. Added primarily the Overview Chapter to better
introduce the concepts and benefits of BIER-FRR to readers (customers et all) only aware of unicast FRR,
and to better explain unicast FRR concepts (p, q space) to readers primarily aware of BIER.</t>

<t>Changes / optimizations in further parts of the document yet.</t>

</section>
<section anchor="rev-11-sent-back-from-iesg-to-wg"><name>rev 11 - sent back from IESG to WG</name>

<t>Triage of IESG review feedback. Fixed the following core / simple feedback. See TBD section below for the missing IESG and directorate review feedback that will need to be folded into the next rev's.</t>

<t>Brought document into kramdown format for easier editing.</t>

<t>Rewrote abstract to answer Roman Danyliw / Éric Vyncke / Brian Haberman
questions about scope (framework) and intended status (informational) of
document.</t>

<t>Changed set of authors to meeth 5-authors max requirements. Changed
authors to contributors.</t>

<t>Removed RFC2119 boilerplate because as a framework, this document does
not use RFC2119 language (Mike Bishop).</t>

<t>Resolved Eric Vyncke Abstract text convern (removed). But see TBD for more work on refining text required.</t>

<t>Resolved expanding LFA on first use.</t>

<t>Ketan: Please remove extra "." I saw a few other similar instances in the document.</t>

<t>Ketan: minor: perhaps s/reconvergence/control plane reconvergence .</t>

<t>Ketan: fixed "persistent failure" text.</t>

<t>Ketan: In the following ? ... perhaps "In this subsection," ?</t>

</section>
<section anchor="resolved-iesg-discuss-comments-before-rev-11"><name>Resolved IESG discuss / comments before rev 11.</name>

<t>Added text for BFD referring to RFC5880 (prior no use of RFC5880 reference).</t>

<t>EVyncke: s/without encapsulation in a tunnel header/without encapsulation in a tunnel/</t>

<t>EVyncke: s/link layer technology/link-layer technology/</t>

</section>
<section anchor="tbd"><name>TBD</name>

<t>Consider adding text about optimizations introducing forwarding plane behavior
(e.g.: when processing multiple bits per BIFT entry. Need to find example showing this).</t>

<t>Fold in RTGDIR feedback (eckert).</t>

<t>Fold in unanswered questions from INTDIR review (Haberman):
 https://datatracker.ietf.org/doc/review-ietf-bier-frr-08-intdir-telechat-haberman-2025-06-03/)</t>

<t>Section 6.1: Add text about PMTU when using tunnels (Evyncke DISCUSS). Although: RFC7490 which explicitly require stunnels also does not address tunnels MTU issues. Maybe attempt to declare MTU problem out of scope given how we're "just" doing something similar for BIER that several unicast RFCs are doing - without addressing MTU.</t>

<t>Check/remove unused references. Add text explaining benefits of reading reference 
"Performance Comparison of Resilience Mechanisms for Stateless Multicast Using BIER" (aka: which pieces relevant to this draft does this research paper cover).</t>

<t>Add text about egress protection (Aka: node protection against BFER failure),
reference I-D.chen-bier-egress-protect (Roman Danilyv).</t>

<t>EVyncke: I fail to see the logical link between <spanx style="verb">Typically, BIER packets are forwarded without an outer IP header.</spanx> and the consequence <spanx style="verb">if a link or node failure occurs, the corresponding BFR Neighbor (BFR-NBR) becomes unreachable</spanx>. Strongly suggest adding some explanations. Answer: linkage is that BIER can not automatically use IP FRR but has to deal with unreachability events itself. But even if BIER was using per-hop IP/MPLS encap to rely on IP/MPLS FRR, then the result would not be as good as "direct" BIER-FRR. Text rewrite requires some restructuring.</t>

<t>EVyncke: Should a reference be provide for SR in <spanx style="verb">If segment routing is employed</spanx> ?</t>

<t>Evyncke: The last paragraph does not mention the 'explicit' forwarding action, is it on purpose ? If so, the read will welcome an explanation.</t>

<t>Ketan: major: Please provide a reference or explanation of "normal BIER-LFAs". Did
you mean RFC5286? Same goes for the other types - please provide references. TBD because text needs more structured rewrite of aligning the BIER behavior with the pre-defined unicast FRR terminology / cases.</t>

<t>Ketan: Is that IP-TI-LFA ? Same Q for TI-BIER-LFA. Need more structured rewrite of text...</t>

<t>Ketan: Isn't that 100% theoretical? Practically, there are limits of platform
and implementations. Also, all routers should be BFRs. Answer: No, should be as practically applicable as unicast TI-LFA is. There may be othrer platform limitations for BIER-FRR though.</t>

<t>DebCooley: The word 'tunnel' is used many times in this draft.  There is no definition of what is meant by tunnel(s), I have to assume that they are not for security purposes.  If they are specific types of tunnels, e.g. MPLS or other security tunnel options (IPsec), then it would be nice to have that defined. Yes: Need to define "tunnel" for the purpose of this ocument as an encapsulation of BIER packets into some unicast header that allows forwarding of the packet to a remote BFR. On the other hand, RFC like RFC7490 (RLFA in unicast) uses "tunnel" without explaininf/defining it.</t>

<t>Ketan:  References to respective RFCs related to different types of LFA/FRR
unicast mechanisms would be helpful in this section as well. Yes!</t>

<t>All of Mohammeds IESG review (sorry, ran out of time).</t>

</section>
</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="A." surname="Wang" fullname="Aijun Wang">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>
          <city>Beijing</city>
          <code>102209</code>
          <country>China</country>
        </postal>
        <email>wangaj3@chinatelecom.cn</email>
      </address>
    </contact>
    <contact initials="G." surname="Mishra" fullname="Gyan S. Mishra">
      <organization>Verizon Inc.</organization>
      <address>
        <postal>
          <street>13101 Columbia Pike</street>
          <city>Silver Spring</city>
          <code>MD 20904</code>
          <country>USA</country>
        </postal>
        <phone>301 502-1347</phone>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </contact>
    <contact initials="Y." surname="Liu" fullname="Yisong Liu">
      <organization>China Mobile</organization>
      <address>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </contact>
    <contact initials="Y." surname="Fan" fullname="Yanhe Fan">
      <organization>Casa Systems</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>yfan@casa-systems.com</email>
      </address>
    </contact>
    <contact initials="L." surname="Liu" fullname="Lei Liu">
      <organization>Fujitsu</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>liulei.kddi@gmail.com</email>
      </address>
    </contact>
    <contact initials="X." surname="Liu" fullname="Xufeng Liu">
      <organization>Alef Edge</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>xufeng.liu.ietf@gmail.com</email>
      </address>
    </contact>
    <contact initials="X." surname="Geng" fullname="Xuesong Geng">
      <organization></organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>gengxuesong@huawei.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
H4sIAM8wXWoAA+y9a3fbVpYg+v38CrS8piNVkbSoh2WrVmpKiu2UZuzEIytd
PbfTKwskQQllEmAA0LLKcX+/v+v+sdnPc/YBQEp5VWrWLa+VSCKB89zv53A4
dO9Pk0M3K6dFusxOk1mVzpthnjXz4STPquG8qobjQzdNm9MkL+alq5sqS5en
ycWLq5euyZsFvHSWvKzg7duyepfMyyp5mdZNcplV5brJktu8uUnO8ya5KGbZ
h+TFh9Uin+b4Pf6SNnlZJLvnFy8uhy8vL/dcOplUGaxJP3GztIEpDvYPnrhV
fuqSpCmnp8nOXVbv8B+zbNXcwCdHO86l6+amrE7dMOHt/Hmd5ssy+eImK+Dh
sro+TV6um3WV3WY5fJAt03xxmtxM4fsRbvpP1/jJaFou/RCv83dZ8np6XuWz
bMsYy3x6k2aL0XI6wSf/NNdHosHeNtl8nhXJq7yYFVml431T5O+zqs6bu6Sc
J1frbJIX17RkGb3m90YLfu9P6yIfNvrYCBYWVkvLSF5nRXPz4OGX+PTmQa/K
rFpkdZ28mL7LqmbLKTRN9qdpPZqna3zfTcuiqfLJurF3cpb/dV0kf0mLax3o
i5u8SJOrbJHhWSUJwlgGAHee5d/nf83hq/K2GMBj8M4KVpc8z+GRfIorAVC6
oyf/mtOA03IGc3w23j842H/2GX2whkXcySxhqbcwWPrXwz9N8eOG5x5NC1hm
XtSnyZcjOMv6psI3eN1f3qVF8tZ8TGv/t6zK/wYgfFFMR2bp48Px/jj5olys
lxPYwBsAIr/Yt/kCriN5u6rskl8/ByB/tn9kl/zN2zP4c3VTFvDAIQx4vH8A
6Hh0ErZxDasa1aMlLepP73k1Ecz977wu4cxe5ev4vF+Xk3yRhZEW+fqOHuUj
WdLX8UhpcZMBdntc+iKt0+TtHUDnso7WXeRNNgNoh4OtEebOlrCwqTn9u3la
/GkKrw9rfj2a6FWW2/W+XP81b+r1j5sBtrMA7Hs3m+U9WP3va0Cn6FDOFtk8
eTG7zn7cNB9oIEDM9SYC8u/rjC7gy0xuux8eAeeuP/Cjf7pZp0o5XFFWS6CS
7zOkfZcvvzg+ePpEfj05OhzLr08PTp75T5/t67NPn8KvSLftGG//7c3w6sUp
PnAIIMePHu3zWxdvkOrSl8cnY4TG5avnb+jvJ4dPn8Lfby5eD9++pk9OTp6M
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
csERRIxvVqPEZqDxbJoNrnGNLjclE7SxrBRNiKp6Xx76gtoYQxRtIYdhCozP
aVKg7SA8tYChzr5fZ/yNNGwWKaIThjO5c33cVDuAte/XdG2Q+6N5ZxRC9aaL
PFKHqIWcdWlkqGgObHX6WKOOAwSlasTp4KfI3rYuNPVf9nkYR9yaJk2q9ULO
Z72cDAxeBqmPF0Qn7CsNmNA3NBVyhcpZCD6jV+ANE3VBiZiMZyTFBRk3oBwJ
WASN8/hCfCk7Lzmp9doLUlT5bi1tuiNolkZcbNhpw7Bv0ahHL3V6ZFxnbgJN
62m1yEPJePrS5znfv2JnTRcq214UkqlIDZmCyiEjYDvJiktR6kD4oLs8VIPb
ci0xIJKcKGFsRIN3KVBdX9RoSyHse9QOEsVlatJnjcyM8FrSYx2sKmpID857
2rfjkBVqIKRYtrhTQx1xR231i12jQpuUnilEfve+CWSIZeE8P51wFdMHW9dq
DnLoGNlqsbJdGesZOzm4eKOmxgqfYm1IjYx8QLYYhYcs075MYlv59CNLW8uD
Qu02UkoKAlDYG8RF6Y2Dgv1DTup3swlQzfLsaCeNxNgrub86IGeImqCzkbRG
YkGuWC+zikakcqqSEiWBtVIgQPz+GpvqkcCLYHPvzSFEDjvEGmlakId2O5Sw
UQ4kKMIc2rTcN/+7vVG6EKuVYlsn6Q6bR+bT5Dl8dD6vvppUF7zdP4Rv4Ar9
h30KS1BUSFPyzkf7Jki5Yy9dcrm2PsXFKCz7eyyDuu2PsV5jVTRQK+Kp//Vf
va703UOUpeRfu8fRr0DJRugr3Z16Slu739fv5Z2HruS/Ni7lD3I+XSG9fqCU
Tkab2ifIK66Tl54RfIv4bowwNVthxNtKSWA31CVF4t7aKW6TO46WutM6XRr/
hnW0EJlSXyIfjkK2PepeSjtW/X1a5WSpkMAAnGhORb4+ZFPOD5HOo1KOGE+B
lQIi4mlhqhVEZQpcaHZGhUzXKJEzHlE6mIq2iIJhyT2sGAmAssfg5SJYsKBA
RemYhDC88NB+34WJY7DwQm5U8loSqYgsJVTbRvuO4Dp0tGhVPixRHXDWsWTa
YA16Navjtlc7FvfG+056wlKVK9rgQMbnQHqbNAsSGXdli4yiQRr3Lnln58Wt
cq/IuCKEHbYj3NnWLefYESO49ViU8MLpIksrldPSQOZXyK+//Y/k8uUXwwzm
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
fAQez+kCWqFziPxLNOhlPs53YMRxYNR82Xt6gELxZtp+SDJAfB000ylcawbw
lKggSDsvE0AFR+BCcJfNelOJWVh/kBjRxlqvcqFVmtqFm9cC6PGx0KVxp6Nw
Nli/TE46ah0TnYzgiM4jGYzDvGC6ioyZz4j5th7SDAPgyxUmDZP8jYna7eNp
B5F082HYygx3eOdYfG5FGEvqC0z6sKMmEwYfdd7UvUeN2TYzBHVACHvefxGZ
QOzii0UHjPthmDO5tYxeTUy0U7qdGFzdn16ZzoATeSNIMUVBoBYCwEHFNg1U
qZRBVFIpm7S6zrpdV3yacqdoXkh1Ntc1w9T3hqWtdvJtSOKUuaL8TDmf2Dyk
ZPQPjm5O+hc3ShNIO46fbBud8p6k3yjhtyfRF0OTAwGnihN8gjQGts1i8kgg
5HOUX64rXONSmr1S8+Z3GRVVYSZ4Ay9lxbXISvOc0t1bmSgq10R009NMYuqp
KEy9IbhU5+Id1ghoyjhEvBvFCvPH0Xc3qQpQkpNLEmdICGMmcxZzq+dtbtVb
w481uPAq5WfcbKp2vsHj10qRsJtusaGB7J2FOqmk081ohkH6cpoxLfOr0pZI
iLKvezMg2NiSzSRK/Oom61Hfd9RyvqNV7DVfe9v+cDmeRXaE1dA/wpNGM7El
+DCMxy6TvuKJQWbzJihx2F4t7aq3JAvI2dS8q69PSJxKQhkkrYl+l1w0tZWG
OTNKMjXxWk3Xh85jvkdQoo+EoRNKi0Mai0qAjwv2NybOxrrXlo1Jlv0VaIT2
cB5HX9rs/elRrSqYcdrSudGeVFoRxYowdIOBQrJcQzKKJI2Q7dIAGbIbn60Y
G19gy0Y1bCWdSLWU+7A/CJ3bUL+HcnldjiE8qnFiPeS+qAmstgu2koPEVY2E
q2hZILjvDB3aUTOkpmWvglGnJEWH3F5N5R+YlERs3zbvU/A8jtkKB5LyeAMU
Kqu6QEzXKrVya020CmOrTsvwHOo93bSq8hAYM1huysag1GHS4C04R4WTOoop
Ho1w+NGGu5Nuje00pXk3p7XeSFp+DDPwoeAh6auXSLcB4+EzIPe2miu1RE7Y
trNZfEDwpTJAWq+5UaMhc/dE5YhYcpDF7TB53emvc+qR2OjKUdyD3C2Wnpl1
LyPMEnhQ7zxR/IzyiPl6sYDhe9NjCz4VEfzh8P6g5WYAAUVJJ8RJNw5R+6gO
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

-->

</rfc>

