We all know that we our providers require BGP to connect to the internet, but it's not always so clear on how to fit this into the rest of our enterprise. Things get particularly tricky when we want to connect to the internet in different geographic regions and still provide optimal routing in and out of the enterprise.
To start, let's focus on a network with both a North American and Asian presence. The company would like to have internet access both Asian and North American data centers, and allow regional users to use the local internet connection.
Challenge 1: Number of Routes
When setting up a new peering agreement with an ISP we need to decide how many routes we want to receive. There are generally three options:
Full BGP Routes: The first option is to receive what is common called a "full BGP feed" or the entire "default free zone table". As of writing this, in early February 2013, there are roughly 443,000 prefixes on the internet. This number will have some slight differences between providers, but this is a pretty good ballpart number. The downside of receiving a full BGP feed from a provider is that it requires very large forwarding tables and very large amounts of memory. You will also feel all of the instability of the internet which will cause increased CPU usage to recalcuate and update the BGP table. The upside is that when you are connected to multiple providers you know the shortest path (number of AS hops) to any possible destination on the internet.
Customer BGP Routes: A step down from a full BGP table is to only receive customer routes. In this case, you only receive the routes of other networks directly peered to the same ISP (and generally a default route as well). The number of routes received will vary widly from ISP to ISP but generally you will only be looking at a few thousand to around ten thousand routes. This can still be significant, but is an order of magnitude less than the full table. The big upside is that this takes a lot less memory and CPU to maintain and can provide more optimal routing than simple default routes. The downside is that it is possible that a majority of your internet bound traffic isn't going to a direct peer of your ISP, which would cause you rely on the default route anyhow.
Default Only: This is the simplest solution. Have your provider send you a BGP default route and nothing more. You send all internet bound traffic to the ISP(s) and let them figure out the rest. This allows you to have routers with much smaller memory and CPU footprints at your internet edge.
So how do you decide what is best for you?
Like everything, it depends on your business requirements, but the simplest question to ask is, is a few miliseconds of latency to any given internet site acceptable? Another way to ask this is, do you mind if your internet routing is a little suboptimal? For most internet connectivity that is not providing cloud or web based tools this isn't a problem