[aklug] Re: Bonding multiple network connections

From: Shane R. Spencer <shane@bogomip.com>
Date: Wed Jan 20 2010 - 19:30:22 AKST

Scott A. Johnson wrote:
> Hello all -
>
> Looking for anyone with experience bonding network connections, or who
> has even researched the concept. Would love to discuss your
> experiences and insights. I have run a load-balancing setup for a
> while with two separate modems/connections via a layer 3 router
> appliance. This works for opening up multiple transfer sessions
> aggregating your bandwidth in a roundabout way, but I had a thought
> the other day that perhaps if I looked at renting a dedicated host in
> a datacenter somewhere, and establishing separate VPN connections over
> both links from my network to the rented server, by controlling the
> software at both ends perhaps I could truly bond the connection and be
> able to increase my bandwidth over a single TCP session.
>
> Back in the late 90's/early 2000's some specific ISPs offered to bond
> connections via "MLPPP", which again required specific
> software/hardware at both your end and the ISPs hence the limited
> rollout, but the support for MLPPP doesn't seem to be what I would
> call solid these days due to the lack of demand (from what I can
> tell). This is the path I'm currently exploring due to my previous
> thought that if I controlled the software at both ends of the VPN
> tunnel I might be able to actually achieve a bonded connection.
> Thought I see if any fellow LUG members had looked into this before
> (or actually done it) before I go about reinventing the wheel.
>
> Many thanks for any/all feedback and ideas.
>
> Cheers,
>

Scott and All,

In the kernel documentation there is a file called bonding.txt which is
a great resource for this. There are several modes that will do exactly
what you want including balance-rr, balance-tlb, balance-alb. I haven't
tested the latter two in a while but I did an exhaustive analysis on the
other modes for a bonding project I was working on and balance-rr will
do what you want, however bonding on top of tap devices can be tricky
due to the lack of ethernet status/speed support. If you control both
sides of each connection then you can use this module to do pretty much
anything. If you're ISP supports XOR or LACP then you can at least
split the load of several clients to multiple destinations and have a
wide connection with several channels set to a specific speed. This can
be achieved without bonding by using multi-hop routes:
http://lartc.org/howto/lartc.rpdb.multiple-links.html

You should also check out 'teql':
http://lartc.org/howto/lartc.loadshare.html which can be used with L2/L3
devices. I've had luck with that in the past but never dove very far
into it because bonding did exactly what I needed and had better link
detection. You need to set up scripts to add/remove from the teql
device based on a link state that can be detected easily at both ends.
OpenVPN has a kick butt method of doing that.

And last but not least: pppd's 'endpoint' parameter and 'mp' option.
Combine this with the power of SSH/Telnet/socat(UDP/TCP)/inetd/whatever
and you have yourself a double-barrel connection that is expandable to
however many connections you can support, However your speed will only
be as fast as your slowest link * the connection count.

If you want to play, I'm game. I registered www.ipovpn.com specifically
for this purpose. Feel free to be my first client so I can have a good
excuse to put up a website :) Otherwise I don't mind helping you
configure it.

- Shane
---------
To unsubscribe, send email to <aklug-request@aklug.org>
with 'unsubscribe' in the message body.
Received on Wed Jan 20 19:30:56 2010

This archive was generated by hypermail 2.1.8 : Wed Jan 20 2010 - 19:30:56 AKST