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¶
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).¶
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
[SRH]. These FRR adjacencies are pre-calculated by the routing control plane.¶
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.¶
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.¶
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.¶
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).¶
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 -> (R3) to copy the packet only to R3.
Another group G2 would need to go to R6, R7, R8. R2 would then have G2 -> (R3, R4, R5)
meaning it would replicate packets to G1 to R3, R4 and R5.¶
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-...->R3, R1-...->R4 and R1-...->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.¶
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.¶
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).¶
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.¶
Note that the forwarding described for BIER-FRR here is LFA-based BIER-FRR in the
terminology introduced later in this document.¶