ADSL Bandwidth Aggregation w/ Multiple Accounts?
kernel_panic writes "Okay, I've been reading up on combining two or more SDSL connections together to give you one big fat pipe, but I haven't seen any references to doing this w/ ADSL. This place even manufactures a nifty little hardware device (ePipe) that combines two WAN ports for the aggregate sum. I've seen the Netopia 7000 Series routers support this capability as well, w/ an add-on card, but all of these places only mention accomplishing this w/ SDSL accounts. I've seen a lot of info on bandwidth load balancing, but I want bandwidth aggregation (inverse multiplexing). Has anyone had any experience doing this kind of thing w/ your Linux/BSD gateway boxen?"
I get the impression from your rejection of load balancing that you are more typically on the "client" rather than the "server" end of a connection. (Or maybe you're a server with only a single client, in which case load balancing probably doesn't help either.)
If you're a guy in his house who wants a fatter pipe to download single big files, you probably cannot get the folks at the server to install special equipment for you. If your ISP will help you to support aggregation by putting equipment on their end to hook into their upstream connection, that's not so bad, and some small regional ISP's do specialize in this. But you'll have to tell us where you are to get a recommendation for such ISP's.
Inverse Multiplexing would happen at the dsl modem level, not at the ip level. It would require inverse multiplex support at your provider's DSLAM, and you would probably be using multiple lines under a single account.
IMHO the best way for a residential consumer to get more bandwidth (and reliability) is to multi-NAT your home network. Sign up for a couple of DSL lines (maybe pretend to be stupid enough that you want a second DSL for another room in the house or something) and perhaps a Cable Modem hokoup for redundancy and a bit more bandwidth.
Into the ethernet jacks of each of the 3 or so modems, plug a direct crossover cable to seperate ethernet ports on your NAT/Firewall/Router box. A Sun Ultra 5 running OpenBSD with a quad fast ethernet card would work great.
Have your NAT box run three dhcp client instances to get IPs on all three interfaces, and have it run NAT for a private network on the back.
The last remaining part of the puzzle is having the gateway loadbalance the three available default routes per connection stream, either round-robin or by utilization.
Hopefully someone will reply with a pre-shink-wrapped answer to that part, and preferably on OpenBSD since I already mentioned it, but I guess ultrapenguin could work too
11*43+456^2
It seems possible to use a linux (or my preference -- OpenBSD) to NAT one or more internal addresses and round-robin each outgoing TCP connection from the NAT box -- alternate them between your two separate external addresses. Should be a pretty simply change to OpenBSD's pf NAT code -- if it isn't already there. Perhaps this could get you some higher incoming speeds? Maybe some coding here -- but it seems reasonable. Your internal machines should not care from which ADSL interface the traffic comes through since it's being NATed anyway. You just won't be able to load balance a single TCP connection.....
This would tipically be done on the data-link layer, but can also be done at the IP level.
If you can't change the software on the other end, you'd have to do the unification at the application layer. It depends on the application. Ex: for HTTP, you can balance the requests over the lines. When the size is known, you can do partial requests and balance these along the lines; for FTP, do PART requests for the pieces of the file. Expose a proxy for each application protocol. Not all applications can be adapted to take advantage of the multiplexing, however.
If at first you don't succeed, skydiving is not for you
Outgoing packets can be sent out either connection. Unless there's some really paranoid packet filtering going on at your ISP, outgoing packets are routed without any concern for the source IP, so there's no theoretical reason why you can't have 100% load balancing across your connections for outgoing traffic.
Incoming packets are routed by your ISP to a particular IP address. That address is normally tied to a particular physical connection. Hence, you have very little ability to load balance. All hope is not lost, though. If you are load-balancing outgoing connections, then connections that you establish will be randomly distributed between your physical connections, giving an approximate load balancing. For incoming connections, you can use DNS to list multiple IP addresses for your hostname, allowing some load balancing across the connections.
Now the exact software configuration to acheive what is theoretical possible is a good question; I don't know.
What about uncapping your modem?
Karma: none (due to not believing in reincarnation)
I've thought that something like this may work out if you could get a place to terminate VPN pipes. Use some load balancing routing protocol to get to your term point over your two lines and you're there.
You just create your internal network, and as a router you get a litle linux box with (eg) 3 NICs in. One NIC goes to the internal network, the other 2 each to an adsl modem. You then read the Linux Advanced Routing & Traffic Control HOWTO. Chapter 10 is what you want to do ...
As stated by several earlier posts, true aggregation is not possible without hardware and software/firmware at both ends of the link. This is not an IP or layer three solution. It must be done at a lower level. But, from a purely technical, if only theoretical stand point, it is possible.
A few years ago, while working for one of the biggest network equipment vendors, I proposed this very technology. The proposal would use a variant of Multilink PPP for xDSL connections, I called it MPPPoE since the most immediate application would have been PPP over Ethernet ISPs. The plan was reviewed and determined to be technically sound as well as simple(read inexpensive) to implement in that vendors hardware offerings. However, the marketing division saw only a very limited market for this and the idea was abandoned due to "lack of interest".
What I'd like to know is if there are any vendors or more importantly, ISPs that are offering such service today. Was marketing right? I was sure that I had come up with a winner.
You already have software at the other end, HTTP and FTP servers.
If you have say 4 ADSL lines
Setup a proxy so that each request gets split up into chunks of 10k+.
then interleave the requests across all of your available lines.
0-10k from adsl 1
10-20k from adsl 2
20-30k from adsl 3
30-40k from adsl 4
etc...
there will be a slight overhead, but you'll still get at least a 3.5x as fat connection.
thank God the internet isn't a human right.
I was looking into this recently and though of posting exactly the same ask slashdot.
Here is the most useful Usenet thread I found. It describes using multiple ethernet connections equalised as one connection..not round robin balanced as most other solutions seem to employ.
If you are using PPP links check out eql, if (like me) you want to use broadband routers, eql will not do it, as far as I can see.
Info
CHECK THIS OUT, 2 DSL\Cable lines into 1 BOX !
The ISB Pro800turbo is Nexland's flagship. It is the only box of its kind to feature dual modem ports faster browsing speeds by load balancing two broadband accounts. Mix, Cable, DSL, SDSL and/or T1 connections. Auto-Failover between ports.
The 8-port switch supports up to 253 computers making it easy to set up a small network in a snap. The Pro800turbo also contains Nexland's proprietary technology which allows unlimited IPsec tunnels over NAT.
Looks like it'd be alright...Haven't personally used it, but for $379 it can't be all that bad.
I looked a couple years ago. Since then I moved out of DSL range. I'm stuck in colo mode.
There's not much advantage if any to service via VPN over service via colo. So I'm not willing to pay much of a premium for the service.
Mostly I want it because it would be cool. Getting moderate bandwidth by aggregating a few crappy connections is somewhat cooler than making a Beowolf cluster out of a few crappy systems. My idea of cool is different than most people.
Nexland Load Balancer Review
Anyway, the biggest problem we have is limited uplink bandwidth. So want I think is the best is use the business link mostly for email/other important traffic. Then I will use the personal link for all other traffic.
The real question is, can this be easily acheived with a linux gateway?
---- Put Sig here:
I have recently achived this with two ADSL/Cable connection, there is not differences.
Using Linux Advanced Routing & Traffic Control HOWTO - Chapter 4.2. Routing for multiple uplinks/providers
(as it is in the UK for cable and A/RDSL?
Which means both your lines are going to be sharing the bandwidth, like you do with the rest of the street.
So you can only do what you're trying to do if:
You can get uncontended lines, e.g. lines of different DSLAMs, or one ADSL, one cable, etc.
Dom
I thought that ADSL was fixed as in that you do not share bandwidth unlike cable where the main limit is shared out in areas such as streets etc.