alexkirsz/dispatch-proxy

Dispatch Proxy - internet bonding, i believe i figured out how speedify does it.

pharrowboy opened this issue · 5 comments

i've been searching for internet bonding solutions in the DIY world for almost 3 years. i've always known dispatch-proxy existed but i didn't think a loadbalancer could bond a line. so today i gave dispatch proxy a try. and apparently when you connect 2 internet lines from a windows computer to the same openvpn server ip, forward all traffic to the vpnserver like normal and dispatch proxy the tunnel connections rather than your internet lines, and apply the proxy to your firefox browser or system settings, you get a bonded line like what speedify does. only you can do this privately, and cheaper. i rented a vps from vultr that provided me enough speed to do this and it worked pretty well. i should mention the speed is limited to your slowest connection. i had a 150 down and 15 up, and another line with 300 down, 20 up, and after bonding i got about 173mbps down and 35 mbps up from my single vpn server, with all packets coming from vpn server's ip address.

then it got me thinking about some background behind speedify's history. they were experts back in the day who programmed the one of the earlier @dispatch-proxy-like software, and later went on to creating speedify. its interesting that your software can do the same thing. :P i'd like to congratulate the developers of dispatch-proxy on a job well done, keep up the work! and thank you!

Thank you for your interest in this project and success story! It's always nice to hear that people love what we do. However, the algorithm we use to balance traffic is not perfect. Dispatch is not aware of the bandwidth of your two connections. We are to rewrite in a better algorithm so that it could make use of all of the bandwidth.

Compared to Speedify, dispatch runs on your local computer so it's very safe and you don't have to get a VPS. I noticed that you dispatched the OpenVPN tunnel connection using a server from Vultr rather than two physical internet connections on your computer. Do you have a better reason to do that instead?

@rlindsberg I believe OP is running dispatch proxy on 2 interfaces then connecting to the OpenVPN via the proxy.

i can confirm that the openvpn tunnels were bonded when i dispatched the tunnel addresses. all i did was simply connect 2 tunnels to the same vpn ip. in my original post i said i got 173mbps. after lots of testing i realized openvpn was maxing out at 90ish mbps per tunnel. without more ethernet cards on my home computer, i can't open more tunnels to compensate for the loss of speed. my vps will require more cpu cores as well.

i tried downloading a file on the bonded line, and it had a max download speed 22Megabytes per second on a single threaded file download. which means i was getting 176 megabits per second on the single threaded file download. i calculated megabytes to megabits with googles calculator. if you refer to what i said earlier, each openvn connection maxed out somewhere around 90megabits. so thats how i know it was a fully bonded line. but both my internet connections run at 300mbps download each. i could not reach that speed on the tunnels by each of themselves. but im just happy to have solution thats easy to put together for bonded lines, but i wish the vpn could be faster, and now i know how to get faster single threaded upload speed if i ever need it in the future. :)

every piece of information i read about bonding seem to refer to link balancing the tunnels, but no matter how far i looked in google search pages, i never saw a program that did it as perfectly as dispatch proxy did.

this speedtest is what i got on the bonded line. my server was located in seattle. i live in canada and my isp is shaw cable.. you can see i got 28mbps on the upload. my max upload speed per internet line that i have is 20mbps.
http://www.speedtest.net/result/7484575962.png

Long story short. bonding the average internet speed of the consumer is easy with dispatch proxy.
bonding the fastest speeds, is not easy and will require more effort.

Hi, could you give more technical informations on how you achieved this? I am unable to start 2 OpenVPN clients on my 2 network interfaces on macOS :/

Channel Bonding or Load Balancing?
Which one this software use?

The readme isn't clear either

use it in conjunction with a threaded download manager, effectively combining multiple connections' speed in single file downloads,

I tried it with download manager software, with only one connection/section/chunk, it won't give me extra speed. Only when the server support parallel connection, then this software will work.

From what I've experienced, this software seems to use Load Balancing algorithm and not supporting Channel Bonding algorithm. Is that correct?