Cisco documentation speaks of BFD clients which I think are routing protocols or HSRP/VRRP etc. that use BFD.
Is there any point in running BFD without a client?
So for example over an Ethernet connection with no client, would BFD take the interface down?
BFD clients are indeed (routing) protocols that use the information from BFD. For example: OSPF or EIGRP.
BFD detects a failure but you need a BFD client to take action upon it. BFD without any clients won’t do you much good.
It seems echo is the default, keep in mind that default settings sometimes are different depending on the IOS version.
19 posts were merged into an existing topic: Bidirectional Forwarding Detection (BFD)
BFD does not work in GNS3. I was using 7200 with IOS 15.x. Checking on forums the consensus is a GNS3 bug. Does anyone have a workaround for this?
Hostname R1 ! interface FastEthernet0/0 ip address 10.0.0.9 255.255.255.252 ip ospf 10 area 0 duplex full bfd interval 500 min_rx 500 multiplier 3 ! router ospf 10 router-id 10.0.0.1 bfd all-interfaces
Hostname R2 ! interface FastEthernet0/0 ip address 10.0.0.10 255.255.255.252 ip ospf 10 area 0 duplex full bfd interval 500 min_rx 500 multiplier 3 ! router ospf 10 router-id 10.0.0.1 bfd all-interfaces
R1#ping 10.0.0.10 repeat 10 Type escape sequence to abort. Sending 10, 100-byte ICMP Echos to 10.0.0.10, timeout is 2 seconds: !!!!!!!!!! Success rate is 100 percent (10/10), round-trip min/avg/max = 20/20/20 ms
R2#ping 10.0.0.9 repeat 10 Type escape sequence to abort. Sending 10, 100-byte ICMP Echos to 10.0.0.9, timeout is 2 seconds: !!!!!!!!!! Success rate is 100 percent (10/10), round-trip min/avg/max = 8/12/20 ms
R1# *Feb 27 09:11:39.335: %SCHED-5-INT_DISABLED_BEFORE_PREEMPTION: Detected interrupts being disabled in preemption handler. schedflag = (1) forkx = (EnvMon) preempted process = (<Null>) preempted_process_epc = (0x63267C7C) preemption_forced_suspend_level = (1) current interrupt level = (0) getinterruptindex() = (0) onintstack() = (FALSE) -Traceback=
R2# *Feb 27 09:11:26.863: %SCHED-5-INT_DISABLED_BEFORE_PREEMPTION: Detected interrupts being disabled in preemption handler. schedflag = (1) forkx = (BFD PP Process) preempted process = (<Null>) preempted_process_epc = (0x63267C7C) preemption_forced_suspend_level = (1) current interrupt level = (0) getinterruptindex() = (0) onintstack() = (FALSE) -Traceback=
is it possible to configure two neigbors peers as below? what will happen in this case as the Minimum time R2 is expecting to recive a packet is larger than the time it takes for R1 to send. Tried this in GNS but my router crashed based on the bug
R1 (config)# bfd interval 300 min_rx 300 multiplier 3 R2 (config)# bfd interval 999 min_rx 999 multiplier 3
With echo mode, this is no problem. The packets you send are echoed back to you. For example, take a look at this output:
R1(config)#interface FastEthernet 0/0 R1(config-if)#bfd interval 300 min_rx 300 multiplier 3 R2(config)#interface FastEthernet 0/0 R2(config-if)#bfd interval 300 min_rx 600 multiplier 3
The min_rx is set to 300 on R1 and 600 on R2. Here’s the output of R1 showing the 600 ms of R2:
R1#show bfd neighbors details NeighAddr LD/RD RH/RS State Int 192.168.12.2 1/1 Up Up Fa0/0 Session state is UP and using echo function with 600 ms interval. OurAddr: 192.168.12.1 Local Diag: 0, Demand mode: 0, Poll bit: 0 MinTxInt: 1000000, MinRxInt: 1000000, Multiplier: 3 Received MinRxInt: 1000000, Received Multiplier: 3 Holddown (hits): 0(0), Hello (hits): 1000(571) Rx Count: 578, Rx Interval (ms) min/max/avg: 1/1000/867 last: 396 ms ago Tx Count: 580, Tx Interval (ms) min/max/avg: 1/1000/865 last: 276 ms ago Elapsed time watermarks: 0 0 (last: 0) Registered protocols: OSPF Uptime: 00:08:21 Last packet: Version: 1 - Diagnostic: 0 State bit: Up - Demand bit: 0 Poll bit: 0 - Final bit: 0 Multiplier: 3 - Length: 24 My Discr.: 1 - Your Discr.: 1 Min tx interval: 1000000 - Min rx interval: 1000000 Min Echo interval: 600000
R2#show bfd neighbors details NeighAddr LD/RD RH/RS State Int 192.168.12.1 1/1 Up Up Fa0/0 Session state is UP and using echo function with 300 ms interval. OurAddr: 192.168.12.2 Local Diag: 0, Demand mode: 0, Poll bit: 0 MinTxInt: 1000000, MinRxInt: 1000000, Multiplier: 3 Received MinRxInt: 1000000, Received Multiplier: 3 Holddown (hits): 0(0), Hello (hits): 1000(575) Rx Count: 584, Rx Interval (ms) min/max/avg: 1/1000/865 last: 700 ms ago Tx Count: 583, Tx Interval (ms) min/max/avg: 1/1000/868 last: 12 ms ago Elapsed time watermarks: 0 0 (last: 0) Registered protocols: OSPF Uptime: 00:08:25 Last packet: Version: 1 - Diagnostic: 0 State bit: Up - Demand bit: 0 Poll bit: 0 - Final bit: 0 Multiplier: 3 - Length: 24 My Discr.: 1 - Your Discr.: 1 Min tx interval: 1000000 - Min rx interval: 1000000 Min Echo interval: 300000
Keep in mind that your own packets are echoed back to you, it’s not like OSPF or EIGRP where you need to receive a hello packet from your neighbor.
Insted of use BFD, why not reduce OSPF timers ?
The main advantage of BFD is that it is exceptionally fast in detecting link failures. Failures can be detected within milliseconds ore microseconds. This is especially useful on high performance networks carrying exceptionally large amounts of real-time traffic such as VoIP or video conferencing conversations. Of course you can reduce the OSPF dead interval timer to a value of one second, but you can’t get any smaller than that.
OSPF, EIGRP and other IGPs were not designed for such quick failovers. For this reason BFD can work with these routing protocols providing the “link failure alarm” so to speak in a fraction of the time, and then letting the routing protocol do its thing.
I hope this has been helpful!
You can also use BFD to support static routing - worth a lesson IMO (button still broken):
It is very helpful
I wonder if you can explain the “admin down” state? I believe that BFD will be “down” initially, until the other side is configured?
The Admin Down state is a state that is used to intentionally bring down a BFD link gracefully in such a way so that the network will not be affected. In other words, the network will have to “know” that such a “link failure” is intentional and that the normal BFD mechanisms should not kick in once the link is disconnected.
When the BFD enters the admin down state, it notifies the new state to its peer for failure detection time and after the time expires, the client stops transmitting packets. At this point the BFD link is broken, and normal routing protocol convergence takes place. I was unable to find much info on this from a Cisco perspective, although it is documented generically.
I hope this has been helpful!
Hello Rene/Networklesson team.
I have a question related to how routers lose their adjacency. In this lesson you correctly put a switch in the middle of the routers and thats the reason why the other router dont see the interface goes down, and thats the justification of using BFD, all correct.
However in EIGRP graceful shutdown lesson you just put two routers together ( with no switch in the middle) and the lesson said that when one of the routers shutdown their interface the other router dont realize and it has to wait to holdtime interval in order to drop the adjacency, and you recommend again BFD. My question is if the router is connected directly to the other, it will notice that the interface goes down as well and the adjacency will go down directly without waiting holdtime. Am I correct? If not is it different for OSPF than for EIGRP?
Indeed, if two routers are connected directly to each other, and they have either an EIGRP adjacency or an OSPF adjacency, if the interface of one of those routers goes down, then both the EIGRP and the OSPF adjacencies are dropped immediately on both ends. I’ve labbed it up just to be sure.
I will let Rene know to clarify this in the lesson.
You are correct, we need a switch in between here as well. Just updated the picture. Thanks for letting us know!
what is state for BFD for initial ?
Admin/down or Intit ? which one.
I’m not sure I understand your question. The state of BFD neighbours is shown with the
show bfd neighors command. Initially when BFD is not configured, this information is not available. As soon as it is configured, based on the neighbour adjacency, the state will be Up, as shown in the lesson. When the adjacency fails, it will go down.
I’m not sure I’ve answered your question, but if not, feel free to clarify!
I hope this has been helpful!
When BFD tracking OSPF neighbor goes down, OSPF will be stuck in which state? (Down or Init)
eg : [R1]–[Switch]—[R2]
If R1 interface to switch goes down, in which state OSPF will be stuck in both routers?
And also once the interface is down, If my bfd configuration is “bfd interval 300 min_rx 300 multiplier 3”, how much time it will take for BFD to come down - 300 secs ? & how much time it will take for OSPF to come down?
The states that OSPF routers go through are the steps that are taken to create a neighbour adjacency. If BFD tracking detects that a neighbour is down, this means that the adjacency is removed completely. So, the state would be Down, which means no OSPF neighbours are detected at this moment.
Take a look at this lesson for more details about states if you like.
Now if you issue the following command:
bfd interval 300 min_rx 300 multiplier it should take 0.9 seconds for OSPF to come down. The values here are in milliseconds. The multiplier tells the router that if BDF packets are not received in 3 times the minimum receive interval, which is 900 milliseconds, or 0.9 seconds.
I hope this has been helpful!