Hello! I'm new to using Bird and BGP, but I'm learning. I've recently acquired an IPv4/24, and I've been working on building an Anycast network for CDN use. Right now I have a 15 datacenter network from a VPS provider (which uses Bird as it's recommended daemon: https://www.vultr.com/docs/configuring-bgp-on-vultr).
Using their configuration example, I was able to get an anycast network up without any modification. That part is working great! The problem I have now is figuring out how to improve the routing. For example, Comcast users in Portland, OR are being sent to Los Angeles, even though the closest server is in Seattle (confirmed with traceroute). The underlying BGP problem seems to be that Comcast sees multiple routes as 2 AS routes (7922 20473), so it doesn't understand that the Seattle instance is preferred here. There are many more examples like this I've found, and I'm trying to figure out what an approach might be to try to improve this. Is there a way to improve routing using bird export filters or some other mechanism I'm not familiar with? Can I use Bird to steer certain traffic to closer servers, or to only announce routes to regional BGP servers? Or is this largely out of my control and I need to accept these non-ideal routes? I've also been told I might be able to use BGP communities for this, but I've never worked with communities directly, so I don't understand how they would help me here. This is the list of communities I have available to me: https://www.vultr.com/docs/as20473-bgp-customer-guide Thank you in advance for any ideas or code examples here. There is zero documentation on tuning Anycast out there (even the old school BGP books I've skimmed through barely mention anycast). Here is my current bird.conf: log syslog all; router id **MY_IP**; protocol bgp vultr { local as 395409; source address **MY_IP**; import none; export all; graceful restart on; multihop 2; neighbor **BGP_IP** as 64515; password "**OBSCURED**"; } protocol static { route 198.51.233.0/24 via **MY_IP**; } protocol device { scan time 5; } protocol direct { interface "neocities*"; import all; } -Kyle