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

Reply via email to