The first idea I have when building the 3 nodes solution was to to peer each node with eBGP sessions then, each node would be able to run calico to advertize /32 routes. That way, the Docker workload could move from one site to another with automagical reconfiguration.
In this post, I’ll build 3 peerings:
cobra (OpenBSD) to db-sc1 (Debian, BIRD)
cobra (OpenBSD) to db-xc1 (Debian, BIRD)
db-sc1 (Debian, BIRD) to db-xc1 (Debian, BIRD)
The AS are the following:
cobra: AS 65001
db-sc1: AS 65003
db-xc1: AS 65004
All nodes are communicating well within the 3 GRE tunnels I’ve setup
OpenBSD bgpd
bgpd is already installed, therefore only the configuration needs to be done. Here is my copy of bgpd.conf (Yeah I know, one day I should add md5 auth =))
Now, enable bgpd at boot time
Bird on Debian hosts
Install bird on Debian. I choose to go with the repository offered by the bird mainteners, so I created a file /etc/apt/sources.list.d/bird_network_cz_debian.list
After adding the repo, add the gpg key, update your package lists and install bird
Update the configuration to match the desired state. This is the configuration for db-sc1. the other bird node has similar configuration (update router id and AS number)
Restart service
post install checks
After checking that all routes are OK, I removed the static routes entries from my gre* definition files on Debian and OpenBSD.