Improving Anycast routing with Bird

Kyle Drake kyle at kyledrake.net
Wed Sep 21 23:35:17 CEST 2016


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20160921/4251c58b/attachment.html>


More information about the Bird-users mailing list