Your Ad Here
 
Questions ? info@easylivecd.com

EasyLiveCD.com
LiveCD Software Solutions
Linux LiveCD Router new
Download free
Router Firewall PRO new
Hotspot Server
VoIP Server
Documentation
Admin Book
VoIP Book
Printed Books
Questions ?
info@easylivecd.com
Hardware
WiFi
Firewall
VoIP
IP Camera
News
VoIP
Linux Router
Hotspot
WiFi Blog
VoIP forum
Linux forums
Tutorials new
WiFi.com.ar


Languages
Google Translations
GE IT FR CN PT JA KO AR
Write to us info@easylivecd.com

Documentation Index
Linux Advanced Routing & Traffic Control HOWTO 
Prev Chapter 4. Rules - routing policy database Next 

----------------------------------------------------------------------

4.2. Routing for multiple uplinks/providers
A common configuration is the following, in which there are two  
providers that connect a  local network (or even a single 
machine) to the big Internet. 
                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             |            |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     if1      |                      /
 /             \     |              |                      |
| Local network -----+ Linux router |                      |  Internet
 \_           __/    |              |                      |
   \__     __/       |     if2      |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |            |       |
                                          +------------+        \_____
 
There are usually two questions given this setup. 

4.2.1. Split access
The first is how to route answers to packets coming in over a 
particular provider, say Provider 1, back out again over that 
same provider. 

Let us first set some symbolical names. Let $IF1 be the name of 
the first interface (if1 in the picture above) and $IF2 the name 
of the second interface. Then let $IP1 be the IP address 
associated with $IF1 and $IP2 the IP address associated with 
$IF2. Next, let $P1 be the IP address of the gateway at Provider 
1, and $P2 the IP address of the gateway at provider 2. Finally, 
let $P1_NET be the IP network $P1 is in, and $P2_NET the IP 
network $P2 is in. 

One creates two additional routing tables, say T1 and T2. These 
are added in /etc/iproute2/rt_tables. Then you set up routing in 
these tables as follows: 

	  ip route add $P1_NET dev $IF1 src $IP1 table T1
	  ip route add default via $P1 table T1
	  ip route add $P2_NET dev $IF2 src $IP2 table T2
	  ip route add default via $P2 table T2
	
 
Nothing spectacular, just build a route to the gateway and build 
a default route via that gateway, as you would do in the case of 
a single upstream provider, but put the routes in a separate 
table per provider. Note that the network route suffices, as it 
tells you how to find any host in that network, which includes 
the gateway, as specified above. 

Next you set up the main routing table. It is a good idea to 
route things to the direct neighbour through the interface 
connected to that neighbour. Note the `src' arguments, they make 
sure the right outgoing IP address is chosen. 	    

            ip route add $P1_NET dev $IF1 src $IP1
	    ip route add $P2_NET dev $IF2 src $IP2
	  
 
Then, your  preference for default route: 	    

             ip route add default via $P1
	  
 
Next, you set up the routing rules. These actually choose what 
routing table to route with. You want to make sure that you 
route out a given interface if you already have the  
corresponding source address: 	    

            ip rule add from $IP1 table T1
	    ip rule add from $IP2 table T2
	  
 
This set of commands makes sure all answers to traffic coming in 
on a particular interface get answered from that interface. 

Now, this is just the very basic setup. It will work for all 
processes running on the router itself, and for the local 
network, if it is masqueraded. If it is not, then you either have 
IP space from both providers or you are going to want to 
masquerade to one of the two providers. In both cases you will 
want to add rules selecting which provider to route out from 
based on the IP address of the machine in the local network. 

4.2.2. Load balancing
The second question is how to balance traffic going out over the 
two providers. This is actually not hard if you already have set 
up split access as above. 

Instead of choosing one of the two providers as your default 
route, you now set up the default route to be a multipath route. 
In the default kernel this will balance routes over 
the two providers. It is done as follows (once more building on 
the example in the section on split-access): 	    
   
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
	    nexthop via $P2 dev $IF2 weight 1
	  
 
This will balance the routes over both providers. The weight 
parameters can be tweaked to favor one provider over the other. 

Note that balancing will not be perfect, as it is route based, 
and routes are cached. This means that routes to often-used 
sites will always be over the same provider


Documentation Index




Products and Services Linux LiveCD Router (Free Download) | Download | Router PRO | Hotspot Server | Media Player | Samba File Server | VoIP Server | IP Camera Server | CDRouter Admin Manual | VoIP Server Book | Printed Book Format | Online Documentation |
Noticias Noticias WIFI News | Linux Router | VoIP | Hotspot new | Linux and WIFI Forums | ba.net



Contact us info@easylivecd.com
© EasyLiveCD.com, FonoSIP.com, WiFi.com.ar, BA.NET
>