Implementing BFD

BFD over Bundle

BFD over Bundle feature enables BFD sessions to monitor the status of individual bundle member links. BFD notifies the bundle manager immediately when one of the member links goes down, and reduces the bandwidth used by the bundle.

Restrictions for BFD over Bundle

The following are the restrictions in using BFD over Bundle feature:

  • It is only supported in IETF mode.

  • It is only supported on the main bundle interface; it is not supported on bundle subinterfaces.

  • It is not supported on routing protocols, such as OSPF, ISIS, and BGP.

  • When the BFD timer is configured to 3.3 ms, which is the most aggressive timer, 256 sessions can be brought up.

  • If BFD timer is configured to greater than 100 ms, 300 BFD sessions can be brought up simultaneously.

  • BFD echo mode and encryption is not supported.

  • BFD dampening is not supported.

Configure BFD over Bundle

Configuring BFD over bundle involves the following steps:

  • Enable and Disable IPv6 checksum calculations for BFD on a router .

  • Specify the mode, BFD packet transmission intervals, and failure detection times on a bundle.


Note


Repeat the same configuration steps in the destination router.



/* Enable and Disable IPv6 checksum calculations for BFD on a router. */

Router(config-if)# bfd
Router(config-bfd-if)# dampening disable
Router(config-bfd-if)# commit

/* Specify the mode, BFD packet transmission intervals, and failure detection times on a bundle */

Router(config)# interface Bundle-Ether 3739
Router(config-if)# bfd mode ietf
Router(config-if)# bfd address-family ipv4 multiplier 3
Router(config-if)# bfd address-family ipv4 destination 10.23.1.2
Router(config-if)# bfd address-family ipv4 fast-detect
Router(config-if)# bfd address-family ipv4 minimum-interval 100
Router(config-if)# bfd address-family ipv6 multiplier 3
Router(config-if)# bfd address-family ipv6 destination 2001:DB8:1::2
Router(config-if)# bfd address-family ipv6 fast-detect
Router(config-if)# bfd address-family ipv6 minimum-interval 100
Router(config-if)# ipv4 address 10.23.1.1 255.255.255.252
Router(config-if)# ipv6 address 2001:DB8:1::2/120
Router(config-if)# load-interval 30
Router(config-if)# commit
Router(config)# interface TenGigE 0/0/0/0
Router(config-if)# bundle id 3739 mode active

Running Configuration


bfd
 dampening disable!
 !

interface Bundle-Ether3739
 bfd mode ietf
 bfd address-family ipv4 multiplier 3
 bfd address-family ipv4 destination 10.23.1.2
 bfd address-family ipv4 fast-detect
 bfd address-family ipv4 minimum-interval 100
 bfd address-family ipv6 multiplier 3
 bfd address-family ipv6 destination 2001:DB8:1::2
 bfd address-family ipv6 fast-detect
 bfd address-family ipv6 minimum-interval 100
 ipv4 address 10.23.1.1 255.255.255.252
 ipv6 address 2001:DB8:1::2/120
 load-interval 30
 !

interface TenGigE 0/0/0/0
 bundle id 3739 mode active

Verification

The following show command outputs displays the status of BFD sessions on bundle members:


/* Verify the details of the IPv4 BFD session. */

Router# show bfd all session

Interface   Dest Addr   Local det  time(int*mult) State   Echo   Async       H/W   NPU
----------  ----------  --------   -------------- -----  ----   -----        ---   ---
Te0/5/0/6   10.10.10.1   0s        450ms(150ms*3)  UP    Yes    0/RP0/CPU0            
Te0/5/0/6   10.10.10.1   0s(0s*0)  450ms(150ms*3)  UP    Yes    0/RP1/CPU0            
BE5         10.10.10.1   n/a       n/a             UP    No     n/a


/* Verify the details of the IPv6 BFD session. */
Router# show bfd all session

Interface    Dest Addr   Local det  time(int*mult)  State   Echo     Async      H/W   NPU
----------   ----------  --------   --------------  -----   ----    ---------   ---   ---
Te0/5/0/6    10:10::10:1   0s       450ms(150ms*3)   UP      Yes    0/RP0/CPU0           
Te0/5/0/6    10:10::10:1 0s(0s*0)   450ms(150ms*3)   UP      Yes    0/RP1/CPU0           
BE5          10:10::10:1   n/a        n/a            UP       No    n/a                  

BFD Singlepath Sessions

BFD Multipath Sessions

BFD can be applied over virtual interfaces such as GRE tunnel interfaces, PWHE interfaces, or between interfaces that are multihops away as described in the IPv4 Multihop BFD section. These types of BFD sessions are referred to BFD Multipath sessions.

As long as one path to the destination is active, these events may or may not cause the BFD Multipath session to fail as it depends on the interval negotiated versus the convergence time taken to update forwarding plane:

  • Failure of a path

  • Online insertion or removal (OIR) of a line card which hosts one or more paths

  • Removal of a link (by configuration) which constitutes a path

  • Shutdown of a link which constitutes a path

You must configure bfd multipath include location location_id command to enable at least one line card for the underlying mechanism that can be used to send and receive packets for the multipath sessions.

If a BFD multipath session is hosted on a line card that is being removed from the bfd multipath include configuration, online removed, or brought to maintenance mode, then BFD attempts to migrate all BFD Multipath sessions hosted on that line card to another one. In that case, static routes are removed from RIB and then the BFD session is established again and included to RIB.

In case of BFD multipath sessions, the input and output interface may change based on the routing table updates. If the multipath session BFD packets must get preferential treatment, then a QoS policy must be configured on the entire path, including the possible input and output interfaces of the router.


Note


The CLI bfd multipath include location location is a mandatory configuration to download BFD sessions on a given location.


IPv4 and IPv6 Multihop BFD Support

Multihop BFD over BVI

Table 1. Feature History Table

Feature Name

Release Information

Feature Description

Multihop BFD over Bridge Group Virtual Interface (BVI)

Release 7.4.1

The multihop BFD over Bridge Group Virtual Interface (BVI) feature introduces support for multihop BFD over (BVI). You can set up a multihop BFD session between two endpoints that have IP connectivity. This session is between a unique source-destination address pair that the client provides.

This feature allows you to extend BFD on arbitrary paths. These arbitrary paths can span multiple network hops, hence detecting link failures.

Multihop BFD over BVI feature allows you to configure both routing and bridging on the same interface using Integrated Routing Bridging (IRB). IRB enables you to route between a bridged domain and a routed domain with the Bridge Group Virtual Interface (BVI).

The BVI is a virtual interface within the router that acts like a normal, routed interface that does not support bridging, but represents the comparable bridge group to routed interfaces within the router.

Restrictions
  • The minimum Multihop BFD timer for the BVI interface is 50 msec.

  • The multihop ttl-drop-threshold command is not supported.

  • The Multihop BFD over BVI or IRB functionality is supported only in asynchronous mode and does not support echo mode.

  • The Multihop BFD over BVI feature is not supported over MPLS and SR core.

Supported Functionality
  • This feature is supported in both IPv4 and IPv6.

  • BFD Multihop over BVI feature supports on client BGP.

  • BFD Multihop supports only over IP core.

  • BFD Multihop supports on all currently supported media-type for BFD single-hop.

Configuration

/* Configure a BVI interface and assign an IP address */
Router(config)# interface BVI1
Router(config-if)# host-routing
Router(config-if)# mtu 8986
Router(config-if)# ipv4 address 10.1.1.1 255.255.255.0
Router(config-if)# ipv6 address 10:1:1::1/120

/* Configure the Layer 2 AC interface */ 
Router(config-if)# interface TenGigE0/5/0/6/0.1 l2transport
Router(config-subif)# encapsulation dot1q 1
Router(config-subif)# rewrite ingress tag pop 1 symmetric

/* Configure L2VPN Bridge Domain */
Router(config-subif)# l2vpn 
Router(config-subif)# bridge group 1 
Router(config-subif)# bridge-domain 1 
Router(config-l2vpn-bg-bd)# interface TenGigE0/5/0/6/0.1
Router(config-l2vpn-bg-bd)# routed interface BVI1

Running Configuration

interface BVI1
 host-routing
 mtu 8986
 ipv4 address 10.1.1.1 255.255.255.0
 ipv6 address 10:1:1::1/120
!
interface TenGigE0/5/0/6/0.1 l2transport
 encapsulation dot1q 1
 rewrite ingress tag pop 1 symmetric
!
l2vpn
 bridge group 1
  bridge-domain 1
   interface TenGigE0/5/0/6/0.1
   !
   routed interface BVI1
   !

Repeat the configuration on the peer router.


/* Configure BGP as the routing protocol  */
Router(config)# router bgp 1
Router(config-bgp)# neighbor 2.2.1.1
Router(config-bgp-nbr)# remote-as 1
Router(config-bgp-nbr)# bfd fast-detect
Router(config-bgp-nbr)# bfd minimum-interval 300
Router(config-bgp-nbr)# update-source Loopback1
Router(config-bgp-nbr)# address-family ipv4 unicast

/* Configure reachability to the BGP neighbour IP either via static or IGP*/
Router(config-bgp-nbr-af)# router static
Router(config-static)# address-family ipv4 unicast
Router(config-static-afi)# 2.2.1.1/32 10.1.1.2 

/* Configure the line cards to allow hosting of Multipath BFD sessions. */
Router(config-static-afi)# bfd
Router(config-bfd)# 
 

router bgp 1 
neighbor 2.2.1.1
  remote-as 1
  bfd fast-detect
  bfd minimum-interval 300
  update-source Loopback1
  address-family ipv4 unicast
  !
router static
 address-family ipv4 unicast
  2.2.1.1/32 10.1.1.2
 !
bfd
 multipath include location !
 

Note


To avoid the unsupported three-level recursion on BVI interfaces on the first and second generation of line cards, you must not configure the BVI interface as the next-hop in the static route configuration.


Verification
Router# show bfd session destination 2.2.1.1
Fri May 28 14:35:52.566 IST

Src Addr            Dest Addr       VRF Name                      H/W NPU          
                                        Local det time(int*mult)      State     
                                    Echo             Async           
------------------- --------------- ---------------- ---------------- ----------
1.1.1.1             2.2.1.1         default                       Yes      
                                    n/a              900ms(300ms*3)   UP        

BFD Dampening

Bidirectional Forwarding Detection (BFD) is a mechanism used by routing protocols to quickly realize and communicate the reachability failures to their neighbors. When BFD detects a reachability status change of a client, its neighbors are notified immediately. Sometimes it might be critical to minimize changes in routing tables so as not to impact convergence, in case of a micro failure. An unstable link that flaps excessively can cause other devices in the network to consume substantial processing resources, and that can cause routing protocols to lose synchronization with the state of the flapping link.

The BFD Dampening feature introduces a configurable exponential delay mechanism. This mechanism is designed to suppress the excessive effect of remote node reachability events flapping with BFD. The BFD Dampening feature allows the network operator to automatically dampen a given BFD session to prevent excessive notification to BFD clients, thus preventing unnecessary instability in the network. Dampening the notification to a BFD client suppresses BFD notification until the time the session under monitoring stops flapping and becomes stable.

Configuring the BFD Dampening feature, especially on a high-speed interface with routing clients, improves convergence time and stability throughout the network. BFD dampening can be applied to all types of BFD sessions, including IPv4/single-hop, Multiprotocol Label Switching-Transport Profile (MPLS-TP), and Pseudo Wire (PW) Virtual Circuit Connection Verification (VCCV).

BFD Session Dampening

You can configure the BFD Dampening feature at the BFD template level (single-hop template). Dampening is applied to all the sessions that use the BFD template. If you choose not to have a session to be dampened, you should use a new BFD template without dampening for a new session.

Configuration Verification

/* Verify if the BFD session is up, and the timers are configured. */
RP/0//CPU0:router# show bfd session
Thu Jan 4 03:07:15.529 UTC
Interface Dest Addr Local det time(int*mult) State Echo Async H/W NPU
-------------- ---------- ------------------------ -------- ---- ----- ---
----
Te0/0/0/16.1 172.16.0.1 0s(0s*0) 200ms(100ms*2) UP Yes