Basic ISP Load Balancing with a Cisco Router

“We have two independent DSL connections to the Internet and want to share the bandwidth for our users.” This was the basic requirement for a load balancing solution at the customer’s site. After searching a while for dedicated load balancers and thinking about a Do-It-Yourself Linux router solution, I used an old Cisco router (type 2621, about 40,- € on eBay at the time of writing) with two default routes, each pointing to one of the ISP routers. That fits. ;)

Configuration

I configured the router with two interfaces/networks: One facing to the two ISP routers (10.49.253.0/24) and the other one facing to the internal firewall (transfer network 10.49.254.0/24).

Then I added two default routes to the two ISP routers (AVM FRITZ!Boxen):

That is, the routing table looks like that (note the last two lines):

 

From now on, every new IPv4 connection to the outside is routed alternately to one of the default routes. Connections to the same destination IPv4 address are routed through the same router.

Functional Test

For testing purposes, I browsed to a few different what-is-my-ip homepages such as my own http://ip.webernetz.net/ script or http://www.wieistmeineip.de/. This immediately revealed the two different IPv4 connections as seen in these screenshots:

Routing Details

In case you’re troubleshooting on the router and want to know exactly which route an IP connection uses, you can use the show ip cef exact-route <src> <dst> command. This takes care of the load balancing. In the following example, I am searching for the route from the same source (10.49.254.9) but to two different destinations (8.8.8.8 and 9.9.9.9). In the first case, line 2, the router uses next hop 10.49.253.1, while in the second case, line 4, it uses 10.49.253.2:

 

Speed Test

Both ISP connections have a DSL download capability of almost 10 MBit/s = 1,25 MByte/s. I ran a basic test with two downloads of Knoppix with the result that both downloads used their capacity completely. The overall download rate was about 2 MB/s.

The following two graphs show the CPU usage of the Cisco 2621 router. During the first graph, one of the two downloads finished, so the CPU usage decreased:

That is, the router is more than 50 % busy with this two downloads. However, for the guest Wifi, it fits. ;)

For more posts about routing/switching you can follow the Routing” or “Switching” categories concerning various firewall/router vendors, or the “Cisco Router“/”Cisco Switch” tags for posts related to Cisco stuff.

Featured image “Router” by Chris is licensed under CC BY-NC 2.0.

8 thoughts on “Basic ISP Load Balancing with a Cisco Router

  1. Nice, though I see that both next nops are on that same subnet using that same outgoing interface. Therefore, I assume you are using some sort of a switch, so what happens if the link beyond switch or AVM FRITZ!Box itself fails?

    1. Hi Rafal. The load balancing solution here was not meant to provide redundancy or high availability. It is just for better download/upload performance for the guest users. So, you are right: If the switch between the router and the FRITZ!Box fails, there is not Internet access at all…

  2. If there are 2 link. If I want link1 to send traffic out and Link2 for incoming traffic. Can we achieve this with PBR? and if yes how? If no then why not?

  3. What do you exactly mean with “send traffic out” and “incoming traffic”? I suppose that a connection1 will always use link1 (for tx and rx) and that link2 is for new incoming connections (tx and rx, too). If so, yes, PBR can be used for that to have outgoing connections routed via link1 while the default route points to link2 for new incoming connections.
    I don’t have a tutorial for this scenario on Cisco routers. Please google it yourself. ;)

  4. Sir I want his configuration video . I look then I want this device and I will testing on this device. And you say that of 1 device in How many broadband connections and static IP can be configured So that when one connection is cut on one line, it shifts to another connection without any interruption.

    1. Hey Ajay,

      you can use as many ISP connections as you want. But yes, not endlessly, of course. Your router has to use all those equal-cost routes at the same time. But in practice you won’t use more than 3 or 4 ISPs, won’t you?

      Concerning a failure condition: That’s a good question. If one of the Ethernet ports for a certain ISP connection goes down, then this route won’t be used anymore. That’s good. Unfortunately, you will face many situations in which the hardware port is up and running while your ISP connection fails due to some other reasons. In those cases, you won’t have a shift to another connection without any interrupts. :( Sorry for that. You need to configure some kind of layer 3 tests such as ping to some destinations. Please google for “IP SLA” and “tracking” concerning your Cisco routers. You’ll find some more appropriate guides than mine here.

      Cheers ;)

Leave a Reply to Johannes Weber Cancel reply

Your email address will not be published. Required fields are marked *