This is my first post in Mikrotik forums ![]()
We’re working on building a small private virtual overlay network using WireGuard as the transport. Basically, we have a few VMs running CHR/vyos and some physical MikroTik devices, all interconnected using WireGuard tunnels. Each node has its own private ASN and is running eBGP.
So far, we’ve brought up the routers in the cloud and other sites, and the WireGuard tunnels are all working. BGP instances are up, and all are peered using eBGP. The sites are currently spread across three countries.
At two sites, we’ve got some test devices connected, and routing is working fine. Each site will have a firewall, which we plan to connect to the local MikroTik using iBGP. Currently, everything is in the maint VRF.
In the future, we may need to add two more sites that must be completely isolated from the current setup. These new sites will use two different wireguard interfaces and have overlapping subnets, and due to security requirements, we want them completely separated. The easiest way is to add a new VRF (let’s call it vrf11) on the routers that these two new sites connect to, and run a separate BGP session for that VRF.
But this setup doesn’t really scale. If we add more isolated sites (e.g., vrf12, vrf13, etc.), then we’ll need to create separate BGP sessions for each VRF.
From what I understand, this is where MPLS normally comes into play, where you can run one BGP session and carry multiple VRFs across it. Correct me if I’m wrong.
But since we’re using WireGuard over WAN links on the public internet, MPLS isn’t really an option. We’re not doing any L2VPN, only L3 connectivity across sites. And each site has local internet breakout.
So here’s what I’m trying to figure out:
What’s the best way to set this up?
Is there a way to span multiple VRFs across sites using just one BGP session per router?
Or is MPLS absolutely required for that kind of multi-VRF transport?
What limitations or issues should we expect if we stick with the model of one BGP session per VRF?