-
Notifications
You must be signed in to change notification settings - Fork 17
Different announcements for one prefix through a mux
One cannot announce multiple routes to the prefix to one mux with the default client. Taking AMS-IX as an example, where we have BIT and Coloclue as transit providers, we cannot poison AT&T on the announcement through BIT and poison Verizon on the announcement through Coloclue.
The solution is to announce multiple routes to the same prefix through the mux. The mux will correctly forward its best route upstream. To implement the case above, we need to set make announcements setting the poisonings as well as BIT's and Coloclue's communities, to choose which route gets exported through each transit provider.
The easiest way to achieve the above is to set two different clients on different machines. This is because clients make changes to global network resources on the machine where they run.
If you absolutely need to run two clients on the same machine, you need to do the following:
- Update OpenVPN configuration files in
configs/openvpn
so each client uses different TAP devices and different local port numbers. - Add
source address
directives to BGP protocol configurations inbird.conf
. The IP address needs to match the IP in the OpenVPN tunnel the session will be established over. (Note that this requires bringing the OpenVPN tunnel up, checking its IP address (allocated dynamically), then updatingbird.conf
.) This is so different sessions through different OpenVPN tunnels behave as expected and so routes are exported with the correct next-hop. - Add a global
router id
directive inbird.conf
to avoid BGP session conflicts at the mux. - Add global
listen bgp <address> port 179
directives tobird.conf
so BIRD does not listen on all local addresses (which would prevent two instances from running simultaneously). The addresses need to match those in the OpenVPN tunnels. - Change the table number in the
kernel
protocol. This is to avoid multiple BIRD instances from trying to control the same table.