Hello all, I am using bird 1.6.3 on OpenWRT to use BFD. This is our setup:
Ubuntu m/c(BIRD running, BFD configured, interface enp2s0) ----------------------------> OpenWRT Box(BIRD running, BFD configured, interface br-lan) The bird configuration on OpenWRT: protocol device { scan time 10; } protocol bfd { neighbor 172.16.2.4; } Bird configuration on Ubuntu m/c: protocol device { debug all; scan time 10; } protocol kernel { scan time 10; metric 64; # Use explicit kernel route metric to avoid collisions # with non-BIRD routes in the kernel routing table import none; # export all; # Actually insert routes into the kernel routing table } protocol bfd { debug all; interface "enp2s0"; neighbor 172.16.2.1; } When the enp2s0 interface IP on the Ubuntu m/c is changed continuously using the ifconfig command, we can see that after few tries, the bfd session state is stuck at INIT and only a restart of the bird4 daemon brings the bfd session UP. Enabling the bfd debugs on the PC shows the following error: bird: bfd1: Socket error: bind: Cannot assign requested address Debug logs on the Ubuntu m/c: bird: bfd1: Sending CTL to 172.16.2.1 [Up] bird: bfd1: CTL received from 172.16.2.1 [Up] bird: bfd1: Sending CTL to 172.16.2.1 [Up] bird: bfd1: Session to 172.16.2.1 removed bird: bfd1: Session to 172.16.2.1 added bird: bfd1: Sending CTL to 172.16.2.1 [Down] bird: bfd1: Sending CTL to 172.16.2.1 [Down] bird: bfd1: Sending CTL to 172.16.2.1 [Down] bird: bfd1: Session to 172.16.2.1 removed bird: bfd1: Socket error: bind: Cannot assign requested address bird: bfd1: Session to 172.16.2.1 added bird: bfd1: CTL received from 172.16.2.1 [Down] bird: bfd1: Session to 172.16.2.1 changed state from Down to Init bird: bfd1: CTL received from 172.16.2.1 [Down] bird: bfd1: CTL received from 172.16.2.1 [Down] bird: bfd1: CTL received from 172.16.2.1 [Down] bird: bfd1: CTL received from 172.16.2.1 [Down] bird: device1: Scanning interfaces It looks like a timing issue as the number of times we need to change the interface IP to reproduce the issue is different each time, but it is reproduced consistently. These are the steps we repeated on our Ubunutu PC till the state show INIT and is stuck there: 1. ifconfig enp2s0 192.168.2.44 2. ifconfig enp2s0 192.168.2.4 3. birdc4 show bfd session The post https://bird.network.cz/pipermail/bird-users/2020-January/014183.html reports the same issue. There seems to be no suggestions on the thread. It would be really helpful if you could look in to this and let me know if there is any workaround for this problem other than a restart, because we have a script running which polls the bfd status and reports to the application above. It does not seem sensible to just restart the bird daemon when an INIT state is encountered. Any help is much appreciated. Thank you, Nisha Muraleedharan