Page MenuHomeVyOS Platform

BFD Configuration causes flapping
Not ApplicablePublicBUG

Description

The following BFD configuration causes the 10.0.10.12 peer to flap constantly:

admin@edge# show protocols bfd
 peer 10.0.10.11 {
     source {
         address 10.0.10.1
     }
 }
 peer 10.0.10.12 {
     source {
         address 10.0.10.1
     }
 }

It works perfectly with either this config:

admin@edge# show protocols bfd
 peer 10.0.10.11 {
     source {
         address 10.0.10.1
     }
 }
 peer 10.0.10.12 {
     source {
         interface eth0.10
     }
 }

or this config:

peer 10.0.10.11 {
    source {
        interface eth0.10
    }
}
peer 10.0.10.12 {
    source {
        interface eth0.10
    }
}

This is the example of the error from the VyOS side:

Jun 19 03:35:09 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:09 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:09 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:09 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:09 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] up -> down reason:neighbor-down
Jun 19 03:35:10 edge bfdd[1222]: state-change: [mhop:no peer:10.0.10.12 local:0.0.0.0 vrf:default ifname:eth0.10] down -> up

And this is what it looks like from the peer side:

jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection closed 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection opened by remote host 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection closed 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection opened by remote host 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection closed 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection opened by remote host 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection closed 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection opened by remote host 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1 
jun/18 22:35:10 route,bgp,info Connection closed 
jun/18 22:35:10 route,bgp,info     RemoteAddress=10.0.10.1

Details

Version
1.3
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Related Objects

Event Timeline

erkin set Issue type to Bug (incorrect behavior).Aug 30 2021, 5:11 AM
erkin removed a subscriber: Global Notifications.
dmbaturin added a project: VyOS 1.4 Sagitta.
Viacheslav changed the task status from Open to Needs testing.Jan 15 2024, 6:33 PM
Viacheslav assigned this task to a.hajiyev.
Viacheslav changed the task status from Needs testing to Needs reporter action.Apr 18 2024, 11:06 AM

Tested in VyOS 1.4.1:

set interfaces ethernet eth0 address '10.0.10.1/24'

set protocols bfd peer 10.0.10.11 source address '10.0.10.1'
set protocols bfd peer 10.0.10.12 source address '10.0.10.1'

set protocols bgp neighbor 10.0.10.11 address-family ipv4-unicast
set protocols bgp neighbor 10.0.10.11 bfd
set protocols bgp neighbor 10.0.10.11 remote-as '65002'
set protocols bgp system-as '65001'

set protocols bgp neighbor 10.0.10.12 address-family ipv4-unicast
set protocols bgp neighbor 10.0.10.12 bfd
set protocols bgp neighbor 10.0.10.12 remote-as '65002'

vyos@vyos# run show bfd peers
BFD Peers:
        peer 10.0.10.11 vrf default
                ID: 1185970066
                Remote ID: 3173933257
                Active mode
                Status: up
                Uptime: 23 minute(s), 24 second(s)
                Diagnostics: ok
                Remote diagnostics: ok
                Peer Type: configured
                RTT min/avg/max: 0/0/0 usec
                Local timers:
                        Detect-multiplier: 3
                        Receive interval: 300ms
                        Transmission interval: 300ms
                        Echo receive interval: 50ms
                        Echo transmission interval: disabled
                Remote timers:
                        Detect-multiplier: 3
                        Receive interval: 300ms
                        Transmission interval: 300ms
                        Echo receive interval: 50ms

        peer 10.0.10.12 vrf default
                ID: 4073700334
                Remote ID: 2039101274
                Active mode
                Status: up
                Uptime: 23 minute(s), 24 second(s)
                Diagnostics: ok
                Remote diagnostics: ok
                Peer Type: configured
                RTT min/avg/max: 0/0/0 usec
                Local timers:
                        Detect-multiplier: 3
                        Receive interval: 300ms
                        Transmission interval: 300ms
                        Echo receive interval: 50ms
                        Echo transmission interval: disabled
                Remote timers:
                        Detect-multiplier: 3
                        Receive interval: 300ms
                        Transmission interval: 300ms
                        Echo receive interval: 50ms

Tested many times to shutdown and connect peers. Works good

dmbaturin changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.