0

Is there a tool that allows http file download using multiple network interfaces and multiple connections? I'd like to test my overall internet connection speed by downloading a large file via multiple interfaces. Something like lftp with wget —bind-address option

  • Note that you can't download a single file (or web page) on multiple interfaces (unless the server you are contacting uses a multi-homing protocol like SCTP, but that's unlikely). You can download several files at the same time on different interfaces via different HTTP connections, though. – dirkt Nov 19 '18 at 8:03
  • Why did you decide so? My client has multiple interfaces, what could prevent it to create several sockets bound to different addresses, connect them to the server and download different ‘range’ of file? Please explain – BbIKTOP Nov 19 '18 at 8:07
  • Because standard TCP and UDP protocols are single homed. Every connection must go through a specific interface, because you can only have a single IP address at each end. That's how the protocol works. So multiple interfaces won't make "your internet faster" (though many people wish this, this is a FAQ). The best you can do is to more or less randomly distribute connections among your interfaces. Or do a failover. – dirkt Nov 19 '18 at 8:14
  • Of course you can write an application to download different parts of some file via HTTP on several connections, if the server supports it, but you must explicitly do so, and decide on the ranges, and I don't know any application that already does it. You could use bittorrent, which already makes use of many connections, but not HTTP. And bittorrent won't help with measuring speed. – dirkt Nov 19 '18 at 8:16
  • ‘Every connection goes through a specific interface’ - correct. ‘Use of multiple interfaces won’t make overall speed faster’ - incorrect. Think again ))) – BbIKTOP Nov 19 '18 at 8:17
1

Yes - use wget with the --bind-address download option:

--bind-address=ADDRESS

When making client TCP/IP connections, bind to ADDRESS on the local machine. ADDRESS may be specified as a hostname or IP address. This option can be useful if your machine is bound to multiple IPs.

Simultaneously run a copy of wget on each interface. I am currently unable to test this, but I'm quite certain that the download will come from the interface that wget is bound to.

Alternatively, to allow multiple TCP connections on each network interface, you can use btdownloadcurses with the --bind option:

--bind ip

bind to ip instead of the default

  • I know about this option, it works, but wget cannot download in multiple threads. This limits speed. Also, I couldn’t calculate the overall speed, and i need exactly this – BbIKTOP Nov 17 '18 at 19:44
  • I improved my question with this – BbIKTOP Nov 17 '18 at 19:45
  • 1
    I'm confused. If you run 2 wget processes at the same time, they will use different threads. Then, isn't the your overall speed just the sum of the speed of the individual downloads, e.g. 2.4 Mbps on one interface, 1.4 Mbps on another, overall 3.8 Mbps? What am I missing? – bitinerant Nov 17 '18 at 19:49
  • Not really. First, it,s hard to run them really simultaneously to check the overall speed. But it’s not the main issue. Second, single-thread download is usually slower, at least in my case (tried centos “all” image) – BbIKTOP Nov 17 '18 at 19:53
  • I updated my answer with an option that is multi-threaded per network interface. Perhaps a simple script could be used to run them simultaneously and even add the speeds together. – bitinerant Nov 17 '18 at 19:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.