From: Danny <dineshg@hostway.com>
To: netfilter@lists.netfilter.org
Subject: Iptables for load balancing internet traffic
Date: Mon, 13 Nov 2006 22:26:24 +0530 [thread overview]
Message-ID: <4558A3B8.9080905@hostway.com> (raw)
Hi everyone,
Is there a perfect solution to use iptables for load balancing outgoing
internet traffic ?
I am using Debian Sarge 3.1 [ kernel 2.4.27 ] [ iptables v1.2.11 ] I
chose this kernel specifically for this purpose.
I have tried the below 2 techniques : -
1 > Tried using random patch
iptables -t mangle -A OUTPUT -o ! eth0 -m random --average 50 -j MARK
--set-mark 1
iptables -t mangle -A PREROUTING -i eth0 -m random --average 50 -j MARK
--set-mark 1
ip ro add table 10 default via 10.90.101.1 dev eth2
ip ru add fwmark 1 table 10
ip ro fl ca
iptables -t mangle -A OUTPUT -o ! eth0 -m random --average 50 -j MARK
--set-mark 2
iptables -t mangle -A PREROUTING -i eth0 -m random --average 50 -j MARK
--set-mark 2
ip ro add table 20 default via 10.90.102.1 dev eth3
ip ru add fwmark 2 table 20
ip ro fl ca
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 10.90.101.2
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to 10.90.102.2
ip ro add default nexthop via 10.90.101.1 dev eth2 weight 1 nexthop via
10.90.102.1 dev eth3 weight 1
#-------------end -------------
Well this didnt do the job for me ! It was breaking TCP connections. It
was load balancing UDP packets well though !
2> Tried using nth patch
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -m nth
--every 2 --counter 2 --packet 0 -j CONNMARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -m nth
--every 2 --counter 2 --packet 1 -j CONNMARK --set-mark 2
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 10.90.101.2
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to 10.90.102.2
ip ro add table 10 default via 10.90.101.1 dev eth2
ip ru add fwmark 1 table 10
ip ro fl ca
ip ro add table 20 default via 10.90.102.1 dev eth3
ip ru add fwmark 2 table 20
ip ro fl ca
ip ro add default nexthop via 10.90.101.1 dev eth2 weight 1 nexthop via
10.90.102.1 dev eth3 weight 1
#----end
This kept the tcp connections intact. But it wasnt distributing the
internet traffic evenly.
The ditribution of connections through the links are not even.
# iptables -L PREROUTING -t mangle -nv
Chain PREROUTING (policy ACCEPT 82796 packets, 20M bytes)
pkts bytes target prot opt in out source
destination
8 480 CONNMARK all -- eth0 * 0.0.0.0/0
0.0.0.0/0 state NEW every 2th counter #2 packet #0 CONNMARK
set 0x1
8 480 CONNMARK all -- eth0 * 0.0.0.0/0
0.0.0.0/0 state NEW every 2th counter #2 packet #1 CONNMARK
set 0x2
-- this shows that connections have been marked evenly. But
/proc/net/ip_conntrack doesnt show even number of connections.
# sed 's/^.*\(mark=[12]\).*$/\1/g' /proc/net/ip_conntrack | grep -v
"mark=0"
mark=2
mark=2
mark=2
mark=2
mark=2
mark=2
mark=2
mark=1
mark=2
mark=2
Most of the connections here are marked 2. [ sometime most of them are
marked 1 ]
Is there any other perfect solution for load balancing internet traffic ?
I have gone through many forums, but I havent got the perfect solution yet.
Thank you,
Danny
next reply other threads:[~2006-11-13 16:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-13 16:56 Danny [this message]
2006-11-14 8:32 ` Iptables for load balancing internet traffic bill
2006-11-14 9:38 ` Danny
2006-11-14 10:15 ` Jorge Nerín
2006-11-14 11:26 ` Danny
2006-11-15 0:35 ` Jorge Nerín
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4558A3B8.9080905@hostway.com \
--to=dineshg@hostway.com \
--cc=netfilter@lists.netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox