• United States

Bidirectional Forwarding Detection (BFD) – A Beginning and an Introduction…….

Jun 23, 20125 mins
Cisco SystemsNetworkingRouters

Instead of lowering and lowering IGP timers... maybe it is time to think outside the box.

What is Bidirectional Forwarding Detection (BFD)? Why learn about it?  Why use it?  ….. This article is going to be a “beginning”… an “introduction” into Bidirectional Forwarding Detection.  First we will look at what it is and also look at the most “simple” use case for it that I know of.  Then we will config it on a 7600 and an Nexus 7K and watch them neighbor up.  

Let’s start with simple pictures first. 

In the picture below, we see we have two routers (R1 and R2) connected together through a layer 2 only switch.   These two routers are EIGRP neighbors with each other. 

What if the physical interface between R2 and the layer 2 switch goes down?   

R2 will tear down the EIGRP neighbor based on the layer 1 down event. 

What about R1?  Its layer 1 is still up and it has no awareness of the link local event between the switch and R2.  So R1 will keep the EIGRP neighbor up until the polled detection of the missing EIGRP hellos.  Which really means what?  It means that until the EIGRP timers selected “pop”, R1 will black hole traffic out to the layer 2 switch thinking that it’s EIGRP neighbor is still up.

Not to overstate the obvious.  But…… we can’t converge around a failure until we know that there is a failure.  A friend of mine at Cisco once said “the longer we fail to detect the failure, the longer the network is failed”.  

In their CCDE Quick Reference digitial shortcut, Russ White and Mosaddaq Turabi (both CCIE, CCDE and CCAr) wrote a point I’d like to reference —

“The detection of network failures consumes most of the convergence time budget in typical designs”

We can see how very true that is with our situation with R1 and R2 and the one broken link.  

What are our options for R1 to detect the network failure more quickly?  Tune the EIGRP hello timers down.    

How low you can go?  This depends on your hardware platform, your code version, and your routing protocol.  

…..Enter Bidirectional Forwarding Detection (BFD)

First, what are we talking about when we use the word “bidirectional”.  The dictionary defines bidirectional as something that is “capable of reacting or functioning in two, usually opposite, directions”.  

So what, then is BFD?  

According to RFC5880,  (

“BFD is a simple Hello protocol that, in many respects, is similar to the detection components of well-known routing protocols”

So if that is the case, why not just use fast hello times with your routing protocol? In the above case, EIGRP? 

Valid question. And instead of me reinventing the wheel here I’ll just quote one of the results from my Google search “why use bidirectional forwarding detection” which happens to come from a Cisco 

“There are several advantages to implementing BFD over reduced timer mechanisms for routing protocols:

• Although reducing the EIGRP, IS-IS, and OSPF timers can result in minimum detection timer of one to two seconds, BFD can provide failure detection in less than one second.

• Because BFD is not tied to any particular routing protocol, it can be used as a generic and consistent failure detection mechanism for EIGRP, IS-IS, and OSPF.

• Because some parts of BFD can be distributed to the data plane, it can be less CPU-intensive than the reduced EIGRP, IS-IS, and OSPF timers, which exist wholly at the control plane.”


Configuring “Simple” Bidirectional Forwarding Detection (BFD)

Let’s go back to our 2 router, 1 switch environment.  

R1is actually a 7604 with an RSP720-3CXL running 15.2(2)S1.

R2 is actually a Nexus 7K running 6.0(3)

Let’s look at how I configured it.  First let’s look at the R1 (7604) side.  

On the interface on R1 that is connected to the layer 2 switch (above) we see the IP address config and the load-interval 30 config that I always put on in my lab environments so I can get averages over a 30 second sliding window instead of a 5 minute sliding window.  Then there is the BFD configs.  So what are those?  The first value is the transmit interval between BFD packets in milliseconds.  The 2nd value is the minimum receive window capability (also in milliseconds).  The final number is the multiplier value used to compute the holddown.  

Under the EIGRP router configs we see that we also enabled BFD on “all-interfaces”.  We could just have easily actually configured bfd interface gig4/8 there instead.  

VOILA!  Router R1 is done!

Let’s go look at the Nexus7K now.  

As we can see the BFD configuration line is identical to that of the 7600 IOS router. Same values.  Same meaning to the values.  

So what do we get?   …… BFD neighbors!!!    

And this concludes our “beginning…” our “introduction” into Bidirectional Forwarding Detection.

Feel free to do some reading…….

RFC5880 – Bidirectional Forwarding Detection (BFD)

RFC5881 – Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)

RFC5882 – Generic Application of Bidirectional Forwarding Detection (BFD)

RFC5883 – Bidirectional Forwarding Detection (BFD) for Multihop Paths