So, why do we need fast reroute (FRR)? Well, it's all a matter of seconds:
- internal routing protocols take some time to propagate the information about a link failure to the headend of the LSP.
- Then MPLS headend router takes time to signal a new LSP.
- Finally, the traffic can flow on the new LSPs.
How to make things faster (meaning by that traffic restoration time <50ms) and avoid packet losses?
- Handle the failure locally. The routers directly connected to the failure deal with it. This means that they permit traffic to bypass the failure point until a new LSP is signaled. How to bypass it? Well, just stack the label of an LSP that goes to the next router not affected by the failure, then pop it and sees the original packet. The only difference is that it arrives from another interface. As the MPLS commutation table normally include the interface number (if in, label in => if out, label out), the router must understand the packet correctly to continue forwarding packets along the normal LSP. This means that the label must bear the same meaning whatever the incoming interface (global label allocation).
- Notify the headend of the LSP: either through the internal routing protocol or through an RSVP message.
- The headend signals a new RFP and finally the traffic can flow on the new LSP.
Cisco provides a great explanation figure about how the FRR operations work:
FRR is an elegant solution, because it does not require to design new backup LSPs whenever a new (normal) LSP is setup. As failures are handled locally, the backup LSPs do not really depend on the number of (normal) LSPs setup. Of course, they must deal with the resource allocation when many LSPs go through a backup LSP, but that's another problem.
If you want to learn more about MPLS traffic engineering, I cannot recommend too much the excellent presentation that Cisco made at NANOG for a few years, because in this presentation Robert Raszuk makes a good analogy with car traffic and it is very helpful to grasp MPLS-TE concepts.
An MPLS network (Credit: wikipedia)