BFD
Bidirectional Forwarding Detection (BFD) is a lightweight protocol designed to provide fast failure detection for network paths between adjacent systems, enabling rapid convergence of routing protocols. It operates by sending periodic control packets between systems to detect path failures in milliseconds rather than the seconds or minutes required by traditional routing protocol hello mechanisms. BFD can be integrated with various routing protocols like OSPF, BGP, and EIGRP to dramatically improve network convergence times and overall network stability.
Diagram
Section titled “Diagram”Classes
Section titled “Classes”configuration (iosxe.devices)
Section titled “configuration (iosxe.devices)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| bfd | Class | [bfd] | No |
bfd (iosxe.devices.configuration)
Section titled “bfd (iosxe.devices.configuration)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| multi_hop_templates | List | [multi_hop_templates] | No | |
| single_hop_templates | List | [single_hop_templates] | No | |
| ipv4_maps | List | [ipv4_maps] | No | |
| ipv6_maps | List | [ipv6_maps] | No | |
| slow_timers | Integer | min: 1000, max: 30000 | No |
multi_hop_templates (iosxe.devices.configuration.bfd)
Section titled “multi_hop_templates (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| name | String | Yes | ||
| echo | Boolean | true, false | No | |
| interval_milliseconds_both | Integer | No | ||
| interval_milliseconds_min_tx | Integer | No | ||
| interval_milliseconds_min_rx | Integer | No | ||
| interval_milliseconds_multiplier | Integer | min: 3, max: 50 | No | |
| interval_microseconds | Boolean | true, false | No | |
| interval_microseconds_both | Integer | No | ||
| interval_microseconds_min_tx | Integer | No | ||
| interval_microseconds_min_rx | Integer | No | ||
| interval_microseconds_multiplier | Integer | No | ||
| authentication_md5_keychain | String | No | ||
| authentication_meticulous_md5_keychain | String | No | ||
| authentication_meticulous_sha1_keychain | String | No | ||
| authentication_sha1_keychain | String | No | ||
| dampening_half_time | Integer | min: 1, max: 30 | No | |
| dampening_unsuppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_suppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_max_suppressing_time | Integer | min: 1, max: 420 | No | |
| dampening_threshold | Integer | No | ||
| dampening_down_monitoring | Boolean | true, false | No |
single_hop_templates (iosxe.devices.configuration.bfd)
Section titled “single_hop_templates (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| name | String | Yes | ||
| echo | Boolean | true, false | No | |
| interval_milliseconds_both | Integer | No | ||
| interval_milliseconds_min_tx | Integer | No | ||
| interval_milliseconds_min_rx | Integer | No | ||
| interval_milliseconds_multiplier | Integer | No | ||
| interval_microseconds_min_tx | Integer | No | ||
| interval_microseconds_min_rx | Integer | No | ||
| authentication_md5_keychain | String | No | ||
| authentication_meticulous_md5_keychain | String | No | ||
| authentication_meticulous_sha1_keychain | String | No | ||
| authentication_sha1_keychain | String | No | ||
| dampening_half_time | Integer | min: 1, max: 30 | No | |
| dampening_unsuppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_suppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_max_suppressing_time | Integer | min: 1, max: 420 | No |
ipv4_maps (iosxe.devices.configuration.bfd)
Section titled “ipv4_maps (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| destination_vrf | String | No | ||
| destination_prefix | IP | Yes | ||
| source_vrf | String | No | ||
| source_prefix | IP | Yes | ||
| template | String | Yes |
ipv6_maps (iosxe.devices.configuration.bfd)
Section titled “ipv6_maps (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| destination_vrf | String | No | ||
| destination_prefix | IP | Yes | ||
| source_vrf | String | No | ||
| source_prefix | IP | Yes | ||
| template | String | Yes |
Sample Configuration
Section titled “Sample Configuration”The following CLI shows BFD configurations on IOS-XE devices.
bfd slow-timers 2000bfd map ipv4 172.16.1.0/24 10.2.2.0/24 multi-hop-template-1bfd map ipv4 vrf VRF-A 192.168.1.0/24 vrf VRF-B 10.1.1.0/24 multi-hop-template-1bfd map ipv6 2001:DB8:1::/64 2001:DB8:2::/64 multi-hop-template-1bfd map ipv6 vrf VRF-A 2001:DB8:1::/64 vrf VRF-B 2001:DB8:2::/64 multi-hop-template-1!bfd-template single-hop single-hop-template-1 interval min-tx 100 min-rx 100 multiplier 3 authentication md5 keychain md5-keychain-1 dampening 5 300 600 10 echo!bfd-template single-hop single-hop-template-2 interval min-tx 150 min-rx 150 multiplier 4 authentication sha-1 keychain sha1-keychain-1!bfd-template single-hop single-hop-separate-intervals interval min-tx 100 min-rx 150 multiplier 3!bfd-template multi-hop multi-hop-template-1 interval min-tx 200 min-rx 200 multiplier 5 authentication meticulous-md5 keychain meticulous-md5-keychain!bfd-template multi-hop multi-hop-md5-auth interval min-tx 150 min-rx 150 multiplier 4 authentication md5 keychain md5-keychain-1!bfd-template multi-hop multi-hop-separate-intervals interval min-tx 150 min-rx 200 multiplier 4!bfd-template multi-hop multi-hop-dampening interval min-tx 200 min-rx 200 multiplier 5 dampening 5 500 1000 10Example YAML Code
Section titled “Example YAML Code”iosxe: devices: - name: Device1 configuration: bfd: slow_timers: 2000 ipv4_maps: - destination_prefix: 172.16.1.0/24 source_prefix: 10.2.2.0/24 template: multi-hop-template-1 - destination_vrf: VRF-A destination_prefix: 192.168.1.0/24 source_vrf: VRF-B source_prefix: 10.1.1.0/24 template: multi-hop-template-1 ipv6_maps: - destination_prefix: 2001:db8:1::/64 source_prefix: 2001:db8:2::/64 template: multi-hop-template-1 - destination_vrf: VRF-A destination_prefix: 2001:db8:1::/64 source_vrf: VRF-B source_prefix: 2001:db8:2::/64 template: multi-hop-template-1 single_hop_templates: - name: single-hop-template-1 echo: true interval_milliseconds_both: 100 interval_milliseconds_multiplier: 3 authentication_md5_keychain: md5-keychain-1 dampening_half_time: 5 dampening_unsuppress_time: 300 dampening_suppress_time: 600 dampening_max_suppressing_time: 10 - name: single-hop-template-2 interval_milliseconds_both: 150 interval_milliseconds_multiplier: 4 authentication_sha_1_keychain: sha1-keychain-1 - name: single-hop-template-separate-intervals interval_milliseconds_min_tx: 100 interval_milliseconds_min_rx: 150 interval_milliseconds_multiplier: 3 multi_hop_templates: - name: multi-hop-template-1 interval_milliseconds_both: 200 interval_milliseconds_multiplier: 5 authentication_meticulous_md5_keychain: meticulous-md5-keychain - name: multi-hop-template-2 interval_microseconds: true interval_microseconds_both: 100000 interval_microseconds_multiplier: 4 authentication_meticulous_sha1_keychain: meticulous-sha1-keychain - name: multi-hop-template-md5-auth interval_milliseconds_both: 150 interval_milliseconds_multiplier: 4 authentication_md5_keychain: md5-keychain-1 - name: multi-hop-template-separate-intervals interval_milliseconds_min_tx: 150 interval_milliseconds_min_rx: 200 interval_milliseconds_multiplier: 4 - name: multi-hop-template-dampening interval_milliseconds_both: 200 interval_milliseconds_multiplier: 5 dampening_half_time: 5 dampening_unsuppress_time: 500 dampening_suppress_time: 1000 dampening_max_suppressing_time: 10Bidirectional Forwarding Detection (BFD) is a lightweight protocol designed to provide fast failure detection for network paths between adjacent systems, enabling rapid convergence of routing protocols. It operates by sending periodic control packets between systems to detect path failures in milliseconds rather than the seconds or minutes required by traditional routing protocol hello mechanisms. BFD can be integrated with various routing protocols like OSPF, BGP, and EIGRP to dramatically improve network convergence times and overall network stability.
Diagram
Section titled “Diagram”Classes
Section titled “Classes”configuration (iosxe.devices)
Section titled “configuration (iosxe.devices)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| bfd | Class | [bfd] | No |
bfd (iosxe.devices.configuration)
Section titled “bfd (iosxe.devices.configuration)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| multi_hop_templates | List | [multi_hop_templates] | No | |
| single_hop_templates | List | [single_hop_templates] | No | |
| ipv4_maps | List | [ipv4_maps] | No | |
| ipv6_maps | List | [ipv6_maps] | No | |
| slow_timers | Integer | min: 1000, max: 30000 | No |
multi_hop_templates (iosxe.devices.configuration.bfd)
Section titled “multi_hop_templates (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| name | String | Yes | ||
| echo | Boolean | true, false | No | |
| interval_milliseconds_both | Integer | No | ||
| interval_milliseconds_min_tx | Integer | No | ||
| interval_milliseconds_min_rx | Integer | No | ||
| interval_milliseconds_multiplier | Integer | min: 3, max: 50 | No | |
| interval_microseconds | Boolean | true, false | No | |
| interval_microseconds_both | Integer | No | ||
| interval_microseconds_min_tx | Integer | No | ||
| interval_microseconds_min_rx | Integer | No | ||
| interval_microseconds_multiplier | Integer | No | ||
| authentication_md5_keychain | String | No | ||
| authentication_meticulous_md5_keychain | String | No | ||
| authentication_meticulous_sha1_keychain | String | No | ||
| authentication_sha1_keychain | String | No | ||
| dampening_half_time | Integer | min: 1, max: 30 | No | |
| dampening_unsuppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_suppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_max_suppressing_time | Integer | min: 1, max: 420 | No | |
| dampening_threshold | Integer | No | ||
| dampening_down_monitoring | Boolean | true, false | No |
single_hop_templates (iosxe.devices.configuration.bfd)
Section titled “single_hop_templates (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| name | String | Yes | ||
| echo | Boolean | true, false | No | |
| interval_milliseconds_both | Integer | No | ||
| interval_milliseconds_min_tx | Integer | No | ||
| interval_milliseconds_min_rx | Integer | No | ||
| interval_milliseconds_multiplier | Integer | No | ||
| interval_microseconds_min_tx | Integer | No | ||
| interval_microseconds_min_rx | Integer | No | ||
| authentication_md5_keychain | String | No | ||
| authentication_meticulous_md5_keychain | String | No | ||
| authentication_meticulous_sha1_keychain | String | No | ||
| authentication_sha1_keychain | String | No | ||
| dampening_half_time | Integer | min: 1, max: 30 | No | |
| dampening_unsuppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_suppress_time | Integer | min: 1, max: 18000 | No | |
| dampening_max_suppressing_time | Integer | min: 1, max: 420 | No |
ipv4_maps (iosxe.devices.configuration.bfd)
Section titled “ipv4_maps (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| destination_vrf | String | No | ||
| destination_prefix | IP | Yes | ||
| source_vrf | String | No | ||
| source_prefix | IP | Yes | ||
| template | String | Yes |
ipv6_maps (iosxe.devices.configuration.bfd)
Section titled “ipv6_maps (iosxe.devices.configuration.bfd)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| destination_vrf | String | No | ||
| destination_prefix | IP | Yes | ||
| source_vrf | String | No | ||
| source_prefix | IP | Yes | ||
| template | String | Yes |
Examples
Section titled “Examples”iosxe: devices: - name: Device1 configuration: bfd: slow_timers: 2000 ipv4_maps: - destination_vrf: VRF-A destination_prefix: 192.168.1.1 source_vrf: VRF-B source_prefix: 10.1.1.1 template: single-hop-template-1 - destination_prefix: 172.16.1.1 source_prefix: 10.2.2.1 template: multi-hop-template-1 ipv6_maps: - destination_vrf: VRF-IPv6 destination_prefix: 2001:db8:1::1 source_vrf: VRF-IPv6 source_prefix: 2001:db8:2::1 template: single-hop-template-2 single_hop_templates: - name: single-hop-template-1 echo: true interval_milliseconds_both: 100 interval_milliseconds_multiplier: 3 authentication_md5_keychain: md5-keychain-1 dampening_half_time: 5 dampening_unsuppress_time: 300 dampening_suppress_time: 600 dampening_max_suppressing_time: 60 - name: single-hop-template-2 interval_microseconds_min_tx: 50000 interval_microseconds_min_rx: 50000 authentication_sha1_keychain: sha1-keychain-1 multi_hop_templates: - name: multi-hop-template-1 echo: false interval_milliseconds_both: 200 interval_milliseconds_multiplier: 5 authentication_meticulous_md5_keychain: meticulous-md5-keychain dampening_half_time: 10 dampening_threshold: 1000 dampening_down_monitoring: true - name: multi-hop-template-2 interval_microseconds: true interval_microseconds_both: 100000 interval_microseconds_multiplier: 4 authentication_meticulous_sha1_keychain: meticulous-sha1-keychain