Sorry for my late reply here!
So, I also have a tp-link router and it also kills my WiFi connection. The direct problem is that there are too many concurrent connections, but the reason that is a problem is because the default TCP congestion controller prioritizes all connections equally. If you have 2 connections they both get 1/2 of the bandwidth. If you have 102 connections, they each get 1/102 of the bandwidth.
We use lots of connections, but we don’t want to use a disproportionate share of the bandwidth. This is something BitTorrent went through a decade ago, and we need to resolve too, probably the same way, using uTP and LEDBAT. Switching to uTP and LEDBAT are in the whitepaper(!) and on our roadmap, but are significant chunks of work and it may still take us some time to get there (if you want to help with this effort, let me know!)
Until we are able to automatically switch the congestion controller for everyone by using uTP, there are still a few things you can do.
- Many people have had success by adjusting the QoS settings in their router. The router can almost certainly handle the number of connections just fine but you want to make sure Uplink traffic isn’t taking up the majority of your bandwidth. I was recently surprised to find out how many of our employees have already done this, when I was confused why more people weren’t having this problem.
- If you use Linux (and maybe OS X might also work), are comfortable with a small amount of development and compiling kernel modules, you can configure your sockets to use LEDBAT today! First, make sure your kernel has a LEDBAT TCP congestion controller module loaded. This PR brings this repo up to date for recent kernels: https://github.com/silviov/TCP-LEDBAT/pull/11. OS X might have LEDBAT built in (I think Apple Updater uses it). Then, cherry-pick this change (which will get merged soon once it makes it through review): https://review.dev.storj.io/c/storj/uplink/+/1813. This change allows you to set per-socket options for things using your Uplink. Once you have those two things in, you’ll need to set your socket options to use LEDBAT per socket, like this: https://github.com/jtolio/jam/blob/6052bfd5be86d6d07d0bea3fbc38f8bf7feeea4c/backends/storj/socket_linux.go. Then, if your binary does that, you’ll need to make sure it has
cap_net_admin (you can run
sudo setcap cap_net_admin=eip your-binary), and you’ll be off to the races.
Obviously #2 is… not very user friendly. We’re going to try and make this a bit more user friendly in advance of actually implementing uTP, but yeah, still a ways out.
So, I’d recommend #1 (I think the TP-Link Archer A9 might support OpenWRT, if the default interface doesn’t let you set QoS) for now, and then thank you for your patience with us while we make this better!