Of all the sections we cover here, this is probably the one where IPv4 has survived best. It is certainly true to say that the routing infrastructure of the Internet has scaled beyond anyone's original expectations, and it continues to work quite well, with only the occasional continent-sized hiccup.
Dynamic routing, after all, is what sets IP apart from its circuit-switched cousins in the telco world. Within an administrative domain (an organization, campus, or any entity that has control over a "single" network) there are a few options available when the time comes to deploy a routing protocol.
Until the mid-1990s, the no-brain choice for internal routing was RIP. Its main attraction? It was, and it remains, extremely easy to configure. It's still out there, and not just in legacy installations, but the list of factors that make it less than optimal for use on the Internet at large has grown over time. For one, RIP was designed for a classful world. This is the reason most frequently trotted out by rabid anti-RIP fanatics like, well, us, but it's also the least convincing—classless routing was retrofitted, along with a bunch of other stuff, into RIPv2.
Much as we would like to dispense with it, RIP is still around in the IPv6 world, and we deal with it in more detail in Section 1.7 in Chapter 3 and the Section 6.3.3 in Chapter 6. Thankfully, there are much better internal routing protocols available these days—ones which do not limit the growth or management capabilities of your network quite so much. Apart from mentioning that IPv6 has been defined for these protocols also, we don't need to talk about it in any more detail until Chapter 3. As much as we might wish them to, however, neither RIP nor its link-state cousins will scale to encompass the wider Internet.
BGP is the protocol that is used to route between large networks on the Internet. It works (for complex values of works) by communicating information about who can reach which CIDR prefixes (in essence, which addresses) via which networks.
The key to BGP is summarization. Our networks are complex, intricate things internally, but when we have a limited number of ways in and out, it's natural to represent our network as a single entity. This is precisely what happens—each network is assigned an Autonomous System (AS) Number. All the blocks of IP addresses within the network are advertised as belonging to that AS. Each network may then exercise a large degree of control over the routes it sends to and receives from its peers; filtering unwelcome routes, tuning their preferences, even to some extent changing their "distance" from each other.
This, then, is perhaps why IPv4 has scaled so well, and it is no coincidence that the routing protocols are the one part of the Internet architecture that has survived mostly intact in the switch to IPv6. Of course they have their weaknesses, and everyone has a theory on how these may be fixed in conjunction with IPv6, but this is largely a separate exercise. At the moment the focus is on making IPv6 routing work "right" and in time people will move on to making it work better.
Sadly, there is one critical problem that IPv4 and BGP are in fact contributing to, by their very nature. This is the problem of routing table growth, and in particular the growth of multihomed, nontransit end sites.
Under the current routing model, these end-sites have a choice: they can get provider-independent address space and a new Autonomous System number, or they can get provider-aggregable address space. Provider Independent (PI) address space is assigned to the end organization and does not change if the organization changes ISP. Provider Aggregate (PA) space is drawn from a group of addresses belonging to the ISP.
Unsurprisingly, many larger organizations try to get PI space, if they can possibly get away with it. There are many motivations for this. Perhaps the most powerful is that renumbering is not necessary if their ISP changes. This does not come without its cost, and that cost is another entry in the global routing table, which really should not be necessary for nontransit end sites. After all, they're not actually routing any traffic for other people, they're just reachable via two (or more) paths.
An absolutely key goal of IPv6 is to allow as much aggregation as possible. To this end the restrictions surrounding who can have entries are much more demanding. It is hoped that IPv6's provision for easy renumbering will remove much of potential pain associated with provider aggregatespace. Multi-homed sites will usually just assign one address per provider to their hosts. We'll talk more about this in Chapter 4.
 The current definition of RIPv2 is RFC 2453.
 OSPF and IS-IS being two examples.
 The details of BGP are complicated, if you need more details you should consult a book such as Iljitsch van Beijnum's BGP: Building Reliable Networks with the Border Gateway Protocol (O'Reilly).
 A nontransit site is a site that only carries traffic for itself. See the Glossary for a slightly longer definition of transit.