ECMP load balancing with masquerade: Difference between revisions
No edit summary |
No edit summary |
||
Line 19: | Line 19: | ||
'''/ ip firewall nat''' | '''/ ip firewall nat''' | ||
add chain=srcnat | add chain=srcnat out-interface=wlan1 action=masquerade | ||
add chain=srcnat out-interface=wlan2 action=masquerade | |||
</pre> | </pre> | ||
Line 39: | Line 39: | ||
<pre> | <pre> | ||
/ ip firewall nat | / ip firewall nat | ||
add chain=srcnat | add chain=srcnat out-interface=wlan1 action=masquerade | ||
add chain=srcnat out-interface=wlan2 action=masquerade | |||
</pre> | </pre> | ||
As routing decision is already made we just need | As routing decision is already made we just need rules that will fix src-addresses for all outgoing packets. if this packet will leave via wlan1 it will be NATed to 10.112.0.2/24, | ||
if via wlan2 then NATed to 10.111.0.2/24 | if via wlan2 then NATed to 10.111.0.2/24 | ||
Revision as of 09:54, 2 February 2009
Spanish version of this article: Balanceo de carga mejorado persistente
Introduction
This example is improved (different) version of round-robin load balancing example. It adds persistent user sessions, i.e. a particular user would use the same source IP address for all outgoing connections. Consider the following network layout:
Quick Start for Impatient
Configuration export from the gateway router:
'''/ ip address''' add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=wlan2 add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=wlan1 '''/ ip route''' add dst-address=0.0.0.0/0 gateway=10.111.0.1,10.112.0.1 check-gateway=ping '''/ ip firewall nat''' add chain=srcnat out-interface=wlan1 action=masquerade add chain=srcnat out-interface=wlan2 action=masquerade
Explanation
First we give a code snippet and then explain what it actually does.
IP Addresses
/ ip address add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=wlan2 add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=wlan1
The router has two upstream (WAN) interfaces with the addresses of 10.111.0.2/24 and 10.112.0.2/24. The LAN interface has the name "Local" and IP address of 192.168.0.1/24.
NAT
/ ip firewall nat add chain=srcnat out-interface=wlan1 action=masquerade add chain=srcnat out-interface=wlan2 action=masquerade
As routing decision is already made we just need rules that will fix src-addresses for all outgoing packets. if this packet will leave via wlan1 it will be NATed to 10.112.0.2/24, if via wlan2 then NATed to 10.111.0.2/24
Routing
/ ip route add dst-address=0.0.0.0/0 gateway=10.111.0.1,10.112.0.1 check-gateway=ping
This is typical ECMP (Equal Cost Multi-Path) gateway with check-gateway. ECMP is "persistent per-connection load balancing" or "per-src-dst-address combination load balancing". As soon as one of the gateway will not be reachable, check-gateway will remove it from gateway list. And you will have a "failover" effect.
You can use asymmetric bandwidth links also - for example one link is 2Mbps other 10Mbps. Just use this command to make load balancing 1:5
/ ip route add dst-address=0.0.0.0/0 gateway=10.111.0.1,10.112.0.1,10.112.0.1,10.112.0.1,10.112.0.1,10.112.0.1 check-gateway=ping