-
Notifications
You must be signed in to change notification settings - Fork 21
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/openvpnso each client uses different TAP devices and different local port numbers. - Add
source addressdirectives 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 iddirective inbird.confto avoid BGP session conflicts at the mux. - Add global
listen bgp <address> port 179directives tobird.confso 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
kernelprotocol. This is to avoid multiple BIRD instances from trying to control the same table.