Fable Of Contents

      ISP TECH TALK

      by Avi Freedman


        MULTI-HOMING
        WITH AND WITHOUT BGP4

        In this month's column we'll explore being "multi-homed" - connected to two or more "upstream" Internet providers. We'll look at why ISPs want to (most argue should) multi-home, and at some of the advantages and disadvantages.

        We'll also talk about the Border Gateway Protocol Version 4 (BGP4), the magic protocol that runs the Internet. The myth goes that you must run BGP4 to "multi-home," but this isn't quite true. We'll be talking quite a bit about BGP4 in future columns - for now, we'll cover just the basic concepts.

        Before we can get to the meat of the discussion, though, we have to go over some basic topics.

        BEING CONNECTED TO THE INTERNET: PART I

        To be connected to the Internet, you need to be able to send data (in the form of IP packets) to every valid IP address (host) on the Internet. Equally important is that all of the hosts on the Internet know how to send data to you.

        BEING "SINGLE-HOMED"

        Figure 1

        If you're "single-homed" you are connected to the Internet by one "upstream provider." All of your non- local IP traffic (traffic destined to the Internet) is going to be sent to that provider, and all of your non-local IP traffic that comes from the Internet will come in from that provider.

        See Figure 1 for a diagram of a single-homed ISP. Jack's ISP has an Ethernet and one Class C's worth of IP address space. Actually, it's called a /24, or slash 24 - IP Blocks that are 256 addresses in size in CIDR address space are called /24s. For more information on this, please see April's column.

        All of Jack's ISP's machines are numbered in the 207.8.130.0/24. Jack's ISP has a router at .1; servers from .2 through .6; and a terminal server at .7. Furthermore, Jack's ISP's dial-up users get dynamically- assigned addresses in the 207.8.130.129 to 207.8.130.159 range, so the terminal server also sometimes responds to those IP addresses. The router in the network knows about this.

        First we'll talk about the internal routing of Jack's ISP's network - and review the basics of IP routing - and then we'll talk about how the outside world can get data to Jack's ISP.

        AN IP ROUTING REFRESHER

        Every machine that talks TCP/IP has an "IP routing table." This routing table tells the machine where to send IP packets. Each IP packet has a source address and a destination address.

        When a machine's IP software sees a packet, it has to figure out where to send it. To do this, it examines the destination address of the packet and matches it against the "best" route in the routing table. To figure out which route is the best one, the IP software tries to find the "tightest fitting" - or "most specific" route. (See Figure 2). The "most specific" route is the smallest possible route which "contains" the destination IP address of the packet in question. The smallest route is the route which represents the fewest number of IP addresses (i.e. a Class C, or /24, is smaller than a Class B, or /16). The biggest route is the default route - also called 0.0.0.0.

        So let's look inside the router 207.8.130.1. There are four routes in the IP routing table:

        ("Network Number")("Specificity") Specificity
        0.0.0.00.0.0.0 (/0) 207.106.127.46Serial0
        207.106.127.44255.255.255.252(/30) 207.106.127.45Serial0
        207.8.130.0255.255.255.0(/24) 207.8.130.1Ethernet0
        207.8.130.128255.255.255.192(/27) 207.8.130.7Ethernet0

        Let's say the router gets a packet destined for the web server, 207.8.130.3. It looks at its routing table and finds 207.8.130.0/24 and 0.0.0.0/0 which match 207.8.130.3. 207.8.130.0/24 is the most specific route, so it sends the packet out the Ethernet0 interface.

        Why did it get this packet? Probably, someone on the Internet is sending a request to the web server and the packet came in via the serial port. Note that it doesn't matter where the packet came from or what the source IP address of the packet is. Each packet is routed based only on the destination address.

        Now let's say that the router gets a packet destined for one of the dial-up users, 207.8.130.134. It looks at its routing table and finds 207.8.130.128/27, 207.8.130.0/24, and 0.0.0.0/0 as matching routes. 207.8.130.128/27 is the most specific route, so it looks at the next-hop of that route, which is 207.8.130.7. Then it looks and finds that the best route for 207.8.130.7 is 207.8.130.0/24, which has a next-hop of Ethernet0, so it sends the packet out Ethernet0 to 207.8.130.7.

        DEFAULT ROUTING

        Each machine on Jack's ISP's network also has a routing table which probably looks like:

        Starting IP address Interface ("Network Number") Network Mask ("Specificity") CIDR SpecificityNext-Hop
        0.0.0.00.0.0.0 (/0) 207.106.127.46Serial0
        207.106.127.44255.255.255.252 (/30) 207.106.127.45Serial0
        207.8.130.0255.255.255.0 (/24) 207.8.130.XEthernet0
        207.8.130.128255.255.255.192 (/27) 207.8.130.7Ethernet0

        Where X is the address of the particular local machine.

        Figure 2

        Note that you could omit the 207.106.127.44/30 route from the local routing tables, but that would force all data destined to the terminal server to "bounce" off of the router at 207.106.127.1. If each local machine isn't specifically told how to get to the addresses 207.8.130.129 to 207.8.130.159 (the 207.8.130.128/37 route), then packets destined to the local modem users will be sent to the router, which will then send them to the terminal server. This means that those packets must traverse the Ethernet twice, which chews up bandwidth on the Ethernet. So it's always better to put all of your local routes into all of your local machines somehow - but as your network grows you may find that this is a pain to do.

        Now, for a local server to get to any other machine or modem user on your network, it will have a specific route (some route other than the default route) telling it how to get there (the next-hop). But there won't be a route in the routing tables on any of your machines for an IP packet destined to a host out on the Internet - so the route that will "match" packets destined to the Internet is the "default" route - 0.0.0.0/0.

        STATIC AND CONNECTED ROUTES

        How do the routes get into the IP routing tables? Some are "connected" routes - they are routes that are associated with the interfaces on the machine. In the case of the router, 207.106.127.44/30 is a connected route associated with Serial0, which has a local IP address of 207.106.127.45. 207.8.130.0/24 is a connected route associated with Ethernet0, which has a local IP address of 207.8.130.1.

        The other routes in the routing table had to be inserted "statically" as part of the startup procedure of the router. These "static routes" are "installed" whenever the associated interface is up. 0.0.0.0/0 is a static route with a next-hop of 207.106.127.46 (the provider's router at the far end of the T-1); and 207.8.130.128/27 is a static route with a next-hop of the terminal server on the local network, 207.8.130.128.

        A very important note: Most well-behaved routers will delete any routes associated with interfaces that are down. For example, the default route 0.0.0.0/0 and the connected route 207.106.127.44/30 will go away if the connection to the remote provider over the T-1 goes down.

        Some of the outbound load-balancing we will talk about later relies on this behavior. But most UNIX machines - and some routers - don't obey this fundamental rule of routing. If you intend to multi-home yourself with a particular router, try pulling the serial cord from one interface. Make sure that the routes associated with that interface go away.

        BEING "CONNECTED" TO THE INTERNET: PART II

        Figure3

        To be connected to the Internet usefully, every machine on your network must have an IP address that is "reachable" globally. If you have a default route to your router's WAN interface, then it's your provider's job to figure out how to deliver traffic destined to the world.

        But an equally (and arguably more) important job is to announce to all of the key routers on the Internet that they know how to send packets to you. If even one key router on the Internet doesn't know how to get to you, you do NOT have global Internet connectivity. A router knows how to get to you because it has a route in its IP routing table that tells it how to send data to you - it's the same principle as the IP routing going on in your local network.

        ROUTE ANNOUNCEMENTS WITH BGP4:
        BEING "SEEN" BY THE INTERNET

        The key routers on the Internet are the routers in the "defaultless core." These routers have no default route. If you want to be reachable by all of the hosts on the Internet, there must be a matching route for your IP space in all of these routers.

        How do those routes get into those key routers? Different providers "peer" with each other. They have private and public "Exchange Points" where they exchange "route advertisements." These advertisements are "promises" to carry traffic to various sections of the IP space.

        Providers use the BGP4 protocol to advertise routing information to each other. Routers at the "border" of various networks ("Autonomous Systems" in BGP-speak) exchange routes with each other via "peering sessions." (See Figures 3 and 4).

        Route announcements filter upwards from the edge ISPs, through various transit providers, to the top-level providers. By the time all of this occurs, all of those key routers know about your routes.

        WHAT ROUTES GET ADVERTISED FOR YOU
        WHEN YOU'RE SINGLE-HOMED?

        If you have your own address space (old Class C blocks) - or more recent CIDR allocations from the NIC - your pro-vider(s) will advertise those blocks for you as BGP route announcements. If you are using IP space that you got from your ISP, chances are good that you're part of one of their "aggregates" (or "IP blocks"). Aggregate routes are larger routes that cover multiple /24s. If you have been allocated 207.8.130.0/24, a "whois" on 207.8.130.0 will show you who owns the underlying IP block, and what the specificity is. In the case of 207.8.130.0, a "whois" will show you that it's part of the 207.8.130.0/17 block (half of a Class B in size). If you were to look at the "global routing table" you'd see that the owner of the 207.8.128.0/17 block, Net Access, advertises 207.8.128.0 "as" a /17 (meaning, with the specificity of /17).

        If you are single-homed, the only way that anyone in the world can send data to you is through your one provider. So it makes no sense for your provider (Net Access, in this case) to advertise 207.8.130.0/24 as well as 207.8.128.0! Let's say that Net Access advertised 207.8.128.0/17 and 207.8.130.0/24. The more specific route for any of your IP addresses would be 207.8.130.0/24, so that is the route that would get used. If that route were not advertised, however, 207.8.128.0/17 is the route that would get used. The net effect is the same, and having the more specific route for 207.8.130.0/24 out there is just one more route for every core router to know about and have to spend memory and CPU time on.

        If you're multi-homed, however, at least one of your providers will need to announce a specific route to match your blocks. More on this shortly.

        MORE BGP TERMINOLOGY

        As we said, BGP4 as we're looking at it, is a protocol spoken between Autono-mous Systems to advertise routes. BGP4 is spoken between two routers and routes are exchanged via "peering sessions." Each Autonomous System has an "Autonomous System Number" (ASN). Net Access's is 4969. UUNET's is 701. There are hundreds of ASNs in use on the Internet.

        In addition to the usual information (starting IP address, specificity, next-hop information), each BGP route has a property called the AS_ PATH.-.the path of Autonomous Systems that the route took from the very first advertising router. It's just a list of the ASNs in the reverse order of advertisement.

        Every time a route is advertised by one router to another over a peering session, the receiving router "stamps" the incoming route with the ASN of the remote router by prepending the remote ASN to the beginning of the AS_PATH. When UUNET hears a route from Net Access, for example, it notes that it got the route from AS 4969 (Net Access's ASN).

        Remote routers will generally decide which is the best route of multiple BGP routes by picking the route with the shortest AS_PATH (that is, the route that has traveled few the fewest providers) to get from start to finish.

        REVISITING THE SINGLE-HOMED PROVIDER

        Jack's ISP (the average single-homed provider) will typically have one route announcement "out there" for each of its routes. This makes sense - you can only get into Jack's ISP's network by one path - sending data to Net Access.

        Jack's ISP's upstream provider must either peer with all of the other key networks on the Internet (so that routes for Jack's ISP get into all of the default-free core routers), or must get "transit" (be a complete or partial customer) of some other providers.

        For example, AGIS (ASN 4200) will peer with very few other networks, so Net Access (ASN 4969) must get some Autonomous System who does peer with ASN 4200 to advertise Net Access's routes to AGIS, or AGIS's routers will not know about Jack's ISP's (Net Access's) routes.

        WHY BE MULTI-HOMED?

        Additional bandwidth and redundancy are the two major reasons that ISPs multi-home. Multi-homing (adding another upstream provider) is expensive, costing you at least $1,000 to $2,000 extra per month, so most providers put it off as long as possible. This is a mistake! In even the smallest areas there is now generally competition among ISPs, and the ISP with the most reliable network can attract customers willing to pay for quality and reliability.

        If you've got a T-1 to the Internet and it's running at 70 to 80 percent capacity, then you'll start to see slowness. Or, worse, you could have the dreaded packet loss on your line due to congestion. Your customers will start leaving you in droves if this happens. Additional bandwidth is a major reason that many finally break down and multi-home. But consider this: If you are single-homed you are completely dependent on the up-time and quality of your one upstream provider. Also, you're completely dependent on your one border router and your one link to that upstream provider. If any of those components fails you're completely off the Net!

        There's only one route out there for you. If your router or T-1 goes down, then your provider's not going to be able to send data to you. And if your provider becomes disconnected from the Internet or has some major internal routing problem, then you're also disconnected from some or all of the Internet.

        MULTI-HOMING:
        ROUTE ADVERTISEMENTS

        When you're multi-homed, your routes should be advertised by both providers. If you have two or more routes out there for each one of your IP blocks, you can sustain a complete loss of a T-1 - or severe problems with one of your upstream providers - and not have your customers notice a thing.

        Figure4

        Let's look at Figure 4. In this example, we'll use our friend Jack's ISP, now connected to both Net Access and to UUNET, and a dial-up user on AOL who wants to query a web server on Jack's ISP's network, 207.8.130.3. AOL's Internet provider is ANS, so AOL sends the packet to somewhere in ANS's network. ANS sees three BGP route advertisements for 207.8.130.0:

        207.8.130.0/24, from Net Access (ASN 4969); 207.8.128.0/17, from Net Access (ASN 4969); and 207.8.130.0/24, from UUNET (ASN 701).

        If those routes weren't there, ANS (and thus AOL) would have no connectivity to Jack's ISP's network. If there was only one route of specificity /24, then there'd only be one "primary" path to Jack's ISP's network. But since there are two routes for 207.8.130.0/24 (also called two views of this one route), ANS will choose one of those as the best path and will use it. Incoming load-balancing works on the principle that roughly half of the networks out there will choose one of multiple paths for any network and that the rest will pick one of the other paths. We'll go into more detail on this in future columns, and we will discuss the actual algorithms used by routers and providers to make and tune these decisions.

        MULTI-HOMING WITH BGP

        If you speak BGP to your providers, then you are the one originating the route advertisements that put your Autonomous System on the Internet. You have some degree of control over how those routes are advertised - we'll be talking about methods like AS_PATH padding and changing route specificity in the future.

        And you can also take "full routes" from one or both providers and let your router use BGP "selection algorithms" to pick the best path for each outgoing packet. This will generally give you a moderate bump in "quality" of connectivity - perhaps as much as 5 or 10 percent less packet loss to certain destinations.

        Also, if you have nothing better to do than tune your connectivity, you can start to fine-tune outgoing data flow. For example, if you notice that one provider has poor PSI connectivity although it's got the best BGP routes to PSI, then all of your PSI traffic is sent out to your other provider.

        MULTI-HOMING WITHOUT BGP

        But you don't need to speak BGP to have your routes be advertised by both providers. They can do it for you, just as your single upstream provider does it for you when you are single-homed. In this case you are part of their Autonomous System for routing purposes, and you have to call them on the phone and ask them to change or add route advertisements for you.

        Providers are generally happier to do the work of injecting routes into BGP for you, since it's a bit of work for them to set up a BGP peering session for you and to carefully filter the routes they hear from you over that session.

        To control outgoing data flow from your network, all you have to do is add another default route - there's no need to use BGP to take a list of all 45,000 or more routes on the Internet. It's true that you have more control and flexibility if you have those routes to work with, but the difference is usually not that great between selecting the best BGP route and round-robin default-routing.

        SO WHICH IS BETTER?

        You can get 90 percent of the benefit of multi-homing without speaking BGP yourself. But as long as you're paying for two T-1s, why not take full advantage of them by speaking BGP?

        The first problem is that running BGP on your own requires a lot of knowledge (and hopefully experience). Screw-ups in BGP route advertisements can be felt all over the Internet, and are treated very seriously. If you don't know what you're doing you'll wind up with a less reliable network instead of a more reliable one.

        The second problem is that it takes a fairly expensive router to take full routes from your providers. Each route takes a certain amount of CPU and memory, and the current Internet routing "load" of 45,000+ routes is too much for almost all low-end routers; however, you can take less than full routes - or even just use BGP to announce your routes and still just default-route for outbound traffic - with a smaller router like a Cisco 2501.

        So the decision is yours. Most pro-viders will let you speak BGP to them, but will be somewhat unsympathetic if you misconfigure your end and break your connectivity. On the other hand, there are some advantages to speaking BGP at your end.

        For the rest of this column, we'll finish explaining how multi-homing without BGP works.

        Next month's column will go into more BGP details and will show you how to safely announce your routes via BGP with router configurations. This can be done even with a low-end router. We will also discuss some of the options that you have for managing the incoming routing information which determines how you send your outbound traffic to the Net.

        Now we'll explain both sides of being multi-homed without speaking BGP to your provider. The first is load-balanced default routing, which is the art of getting data out of your network. The second is how your providers advertise your routes for you, which controls how other providers hear your routes - and thus how data flows in to your network.

        Keep in mind that these two things (sending data out with default routes and getting others to send data to you based on route advertisements from your providers) are the key to being connected to the Internet.

        DEFAULT ROUTING TO MULTIPLE PROVIDERS

        If you go from one provider to two, then you're going to already have a default route installed. You have to decide how you want to send data out from your network. Once you've decided what you want to do, you can go about implementing it.

        Remember, the default route controls where you send data that is not destined for you local network. So adding default routes is the way you both increase your outbound bandwidth to the Internet and add the redundancy that multi-homing provides.

        Let's say that Jack's ISP has his original default route installed. In the configuration mode on his Cisco, he enters:

        ip route 0.0.0.0 0.0.0.0 137.39.34.65
        int s0
        ip route-cache
        int s1
        ip route-cache

        Now there are two routes (0.0.0.0/0 through 137.39.34.65 with metric 0; and 0.0.0.0/0 through 207.106.127.46 with metric 0) of equal specificity (both are /0 routes) and of equal metric (both have a metric of 0).

        Both routes will now be installed in the Cisco's IP routing table, and the Cisco will now use both T-1s for outbound data. If one of the serial interaces goes down (because one of the T-1s goes down), one of the default routes will go away, but one will still be there to make sure your router has a way of sending data out to the Internet.

        Also, this example turns on ip route cache on both interfaces to ensure that the load balancing is done on a per-connection basis rather than by simply sending every other packet out each interface. Note that sending the packets out in a round-robin fashion makes TCP/IP unhappy.

        MULTI-HOMING TO THE
        SAME PROVIDER

        Instead of multi-homing to different providers, you can multi-home to the same provider. Net Access, for example, allows all of their dedicated-line T-1 customers to establish a backup link via the local Frame Relay "cloud." Customers install a backup default route so they'll only use the Frame Relay path if the primary T-1 goes down (since they're not paying for additional bandwidth, only redundancy).

        Customers who are happy with their upstream providers might want to run multiple links for added bandwidth or reliability. Sadly, few IP providers are so reliable that customers are tempted to do this, but it does happen. Also, paranoia dictates that an Act of God can always strike a particular upstream provider or that provider's POP in a particular city. You almost always get better reliability by multi-homing to multiple providers.

        If you do decide to multi-home to the same provider and run two equal-bandwidth pipes into either the same router at the provider's side, or routers at the same POP, you can set no ip route-cache on your serial interfaces and things should work well. Why? Because all of your outgoing packets travel almost the same path and have almost the same latency this way.

        BEING ADVERTISED BY MULTIPLE
        PROVIDERS WITHOUT PI-SPACE

        We'll use Figure 4 again. Remember April 1997's document on getting provider-independent (PI) space? The reason it's so important to have "your own" ip space is that without it multi-homing is quite tricky and requires a lot of cooperation from your original provider.

        Let's say that Jack's ISP is using 207.8.130.0/24. Jack's ISP's provider (Net Access) has 207.8.128.0/17. So Net Access announces only 207.8.128.0/17 to the world. There is no global advertisement for 207.8.130.0/24. In this case, any packet destined to 207.8.128.0/17 will be picked up by the less specific (more general) route 207.8.128.0/17. We talked about this before, when examining how Jack's ISP's routes are seen by the outside world when single-homed.

        Now Jack's ISP wants to multi-home. So Jack's ISP buys a T-1 from newprovider. Jack's ISP sets up BGP with both Net Access and newprovider. Suddenly, the world sees two routes for Jack's ISP:

        207.106.0.0/16, advertised by Net Access; and 207.8.130.0/24, advertised by newprovider. Remember, the most specific route always wins, so newprovider will wind up carrying almost all, if not all, of Jack's ISP's incoming traffic! Certain parts of Net Access's network may actually prefer newprovider's T-1 to get to Jack's ISP! In fact, this won't happen with Net Access's network, but some providers will prefer externally-heard more specific routes to get to dual-homed customers.

        This state of affairs gets you backup (if newprovider goes down, your data will once again flow through Net Access based on the aggregate advertisement), but doesn't load-balance. your inbound traffic. To have incoming load-balancing, you need to advertise two routes of equal specificity. Even so, inbound load-balancing is tricky and depends on who peers with whom and how different providers "hear" each other - but unless there are two "competing" equal-specificity routes out there for you, there's no hope if inbound load-balancing.

        The problem is that most largeish providers use something called aggregate-address statements - and they certainly have some sort of filter to keep the more specific routes floating around inside of their networks from being advertised to the world. Remember, the world only wants to hear about 207.8.128.0/17 if the little, more specific, routes inside of 207.8.128.0/17 are not multi-homed.

        So what does Net Access have to do? Blow holes in their aggregation statement. One way or another, it's going to take modifications in Net Access's "border" routers to make incoming load-balancing work properly for Jack's ISP. Net Access may not want to do this. (In fact, Net Access does do this, but some providers don't.) Basically, everywhere that Net Access peers with anyone else (and this is usually at least 5 to 10 places), they have to modify their aggregation statements or other filters to "allow" your more specific route announcement to pass through.

        If Net Access blows holes in their aggregation filter using "suppress maps," which we'll talk about in a few columns, then Net Access can announce:

        207.8.128.0/17
        207.8.130.0/24

        And newprovider will announce:

        207.8.130.0/24

        Thus, Net Access's other customers who "live" inside of 207.8.128.0/17 will still be advertised, but 207.8.130.0 will now have two advertisements at a specificity of /24, so some load-balancing may happen for inbound traffic to Jack's ISP.

        This is one reason that it's important to choose a primary provider based on how cooperative they'll be when you want to multi-home.

        BEING ADVERTISED WITH PI-SPACE

        If you have Provider-Independent (PI) address space, announcing your routes is easier, since you're not a part of anyone else's aggregate block. Examples include old Class C or Class B blocks that you or your customers might have, or newer CIDR allocations that you (or, if you sell to ISPs, your customers) might have.

        SUMMARY

        We've talked about how the world sees you when you're single-homed and multi-homed, and about what BGP does. We've also talked about how you can be multi-homed effectively without using BGP.

        Next month we'll go into more detail on BGP. We'll go through the details of configuring a router to speak BGP to multiple providers - and to announce and receive BGP routes.


        Copyright 1998 Mecklermedia Corporation.
        All Rights Reserved. Legal Notices.
        About Mecklermedia Corp.

        Colorado Offices
        13949 W Colfax Ave Suite 250, Golden, CO 80401
        Voice: 303-235-9510; Fax: 303-235-9502

            Fable Of Contents