Dâniel Fraga
2007-Jul-26 02:34 UTC
Definitive way to aggregate bandwidth using multiple links
I always used multiple links from different ISPs and in my oppinion the best way to really aggregate bandwidth is using some kind of proxy which the client connects to and distribute multiple connections to the links. Years ago, a friend of mine wrote Netsplitter: http://www.hostname.org/netsplitter/ but it''s outdated, abandoned (last version from 2002). And it was mainly written for FreeBSD but could run on Linux too. Another project which supposed to aggregate bandwidth was eqlplus, which is outdated too: http://www.technetra.com/solutions/eqlplus/ Main Netsplitter advantages over eqlplus: 1) it doesn''t require kernel patches, it runs completely in user space 2) it isn''t restricted to serial lines (slip, uncompressed ppp). Finally we can use our ethernet links :) 3) simpler configuration Anyway, I''d like to ask if somebody knows about some other project similar to these. With netsplitter everything was so simple, I redirect the connections to the netsplitter daemon, which acts like a proxy, and opened multiple connections to a ftp/http/whatever server and it distributed the connections over the links... very nice. This way we don''t have to mess with the kernel. The method is elegant and transparent. Thanks! -- Linux 2.6.22: Holy Dancing Manatees, Batman! http://www.lastfm.pt/user/danielfraga http://u-br.net Alphaville - "Big in Japan" (First Harvest 1984-92)
Dâniel Fraga
2007-Jul-26 05:55 UTC
Re: Definitive way to aggregate bandwidth using multiple links
On Wed, 25 Jul 2007 23:36:54 -0600 "Jan Mulders" <lastchancehotel@gmail.com> wrote:> >From the looks of these two programs, they seem to ''round robin'' > >outgoing > TCP requests over multiple links - I believe most iptables frontends > (I know Shorewall does out of the box) allow you to round-robin > outgoing connections over multiple different source IP addresses when > masquerading using NAT, which is usually functionally identical to > what these two do, if I am not mistaken?I''m afraid yes Jan, because it isn''t enough to round-robin connections, but to make sure that if a single client opens, for example, 5 connections, it will be split thru the available links, agregating bandwidth. I think that it''s impossible to do this just with iptables. Even multipath (using the above example) would just put all the 5 connections on a single link :(.> I''m also interested to hear of related projects: I use OpenVPN to > provide a tunneling VPN to my users, and have lots of problems with > insufficient throughput over TCP, even when more bandwidth is > available. My main goal is to try and split TCP streams into multiple > streams, then reassemble them at the other end - this seems to be > something neither of the above are intended to do.Mayeb some kind of bonding, but the problem is that the 2 points of your VPN aren''t directly connected, otherwise you could use Bonding or TEQL. There''s EQL for serial links, but you''d have to install it on both ends... -- Linux 2.6.22: Holy Dancing Manatees, Batman! http://www.lastfm.pt/user/danielfraga http://u-br.net Cranberries - "I Will Always" (Everybody Else Is Doing It, So Why Can''t We? - 1993)
Grant Taylor
2007-Jul-26 14:30 UTC
Re: Definitive way to aggregate bandwidth using multiple links
On 07/26/07 00:55, Dâniel Fraga wrote:> Mayeb some kind of bonding, but the problem is that the 2 points of > your VPN aren''t directly connected, otherwise you could use Bonding > or TEQL. There''s EQL for serial links, but you''d have to install it > on both ends...*nod* The only thing that comes to mind that would facilitate true aggregation of multiple links would be to have a server on very high bandwidth that you could create multiple tunnels (IPIP / IPSec / GRE) to and have it aggregate the multiple tunnels together and then use the aggregated tunnel as your larger pipe to the world and do all your NATing at that end so the world would see you from one largish connection. At least in theory this is sound with Multi-Link PPP. However I do not know of any one that has done this. I suppose this would be a decent service if someone could make it turn key. Would any one care to jointly work on something like this? I could locate a box on an OC-3 for testing purpose, but not long term production, at least not with out paying hundreds per month. I suppose such a service should support IPSec, IP in IP, GRE, L2TP, PPTP tunnels. What else? Would it be better to aggregate the tunnels in to one large logical router or rather multiple smaller UML / VMWare routers per client so the client could have control over the remote end? What about IP address space? Thoughts / Opinions? Grant. . . .
Dâniel Fraga
2007-Jul-26 21:30 UTC
Re: Definitive way to aggregate bandwidth using multiple links
On Thu, 26 Jul 2007 09:30:51 -0500 Grant Taylor <gtaylor@riverviewtech.net> wrote:> The only thing that comes to mind that would facilitate true > aggregation of multiple links would be to have a server on very high > bandwidth that you could create multiple tunnels (IPIP / IPSec / GRE) > to and have it aggregate the multiple tunnels together and then use > the aggregated tunnel as your larger pipe to the world and do all > your NATing at that end so the world would see you from one largish > connection.But his if you want to aggregate bandwidth to the world. Yes, in theory it should work. But I want to agregate bandwidth just for me (although it would be nice if the world could see one huge link). For external access, it would be nice (and simpler) if we had a universal protocol which just tell the client "you can access this server through IPs x, y and z" and the client would open connections to x, y and z. There''s program that does this, but you have to tell the IPs to connect: http://aria2.sourceforge.net/ "aria2 has segmented downloading engine in its core. It can download one file from multiple URLs" http://wilmer.gaast.net/main.php/axel.html This support multiple servers too and can download a list of mirrors... -- Linux 2.6.22: Holy Dancing Manatees, Batman! http://www.lastfm.pt/user/danielfraga http://u-br.net