Add/Remove advertisements via birdc (or other mecanism)?

Nicolas Piatto nico at lodpp.net
Thu Aug 7 11:23:49 CEST 2025



Le 07/08/2025 à 00:54, Anthony Hoppe via Bird-users a écrit :
> Hello,
> 
> We are currently using GoBGP with keepalived and are looking to switch
> to BIRD.  We currently have keepalived inject the VIPs into GoBGP via
> the following quorum_up and quorum_down commands:
> 
> quorum_up   "/usr/bin/gobgp global rib add -a ipv4 [VIP-ADDRESS]/32"
> quorum_down "/usr/bin/gobgp global rib del -a ipv4 [VIP-ADDRESS]/32"
> 
> Is there a similar mechanism with BIRD?  Right now what I've done is
> instead I'm having keepalived add/remove the VIPs to/from a dummy
> interface and have the dummy interface as one of the interested
> interfaces under protocol direct.
> 
> quorum_up   "/usr/bin/ip address add [VIP-ADDRESS]/32 dev VIPs"
> quorum_down "/usr/bin/ip address delete [VIP-ADDRESS]/32 dev VIPs"
> 
> This works as expected, when keepalived adds the VIPs BIRD exports
> them and when keepalived removes the VIPs BIRD stops exporting them.
> 
> However, I am still curious if there is a mechanism where I can tell
> keepalived to tell BIRD directly to advertise them?
> 
> Thanks!
> 

Hi,

Multiple solution for that.

At least 2 that I use:
Depending on your keepalived setup, ie if it mounts the VIP on a given 
interface.

You can configure bird to listen on that interface

```
protocol direct direct_ipv4 {
     ipv4;
     interface "lo"; # Restrict network interfaces it works with
}
```

Then basically when the VIP is configured on the interface, it gets in 
the BGP RIB and advertised to your peers (depending on route 
policy/filter you have eventually)
If it's not configured on the interface, it's not in BGP RIB -> not 
advertised.


Another solution could be to not link BIRD RIB with the LINUX RIB, you 
you need to originate the route in bird to create the RIB entry,
then trigger the advertisement by enabling/disabling the proto.

Another solution instead of disabling the proto to be more reboot proof, 
if to still originate the route from bird, but use a function you write 
on the fly then reload the config.
similar to what https://github.com/skoef/birdwatcher is doing.


++
Nico



More information about the Bird-users mailing list