There are some routers that can handle this. I think D-Link refers to this feature as 'GameFuel', and the pre-sets prioritize one-line game traffic over others, but you can always adjust the settings. D-Link seems to have a set of 'Gaming' routers (like the 108G) that contain this feature.
By putting the feature into your local network router, I think you'll have the best experience, once you figure out the appropriate ports to prioritize (or de-prioritize).
Caveat: I haven't actually done this, I'm just saying that it appears to be possible with this equipment.
I ran into exactly this issue with the new Photos app. After installation, a photolibraryd
app uploads all the photos in the background, causing the network congestion issues you cite. I too installed the Network Link Conditioner and set up a 256Kbps upload limit.
At first it didn't work. The reason was simple: the upload is a TCP connection (HTTPS on port 443). I had to disconnect first (I just shut off WiFi for a second) after enabling NLC. After that, the uploads resumed under the new NLC rule and I'm able to use my internet at the same time.
For further insight, take a look at your PF rules before and after enabling NLC. Notice that when NLC is enabled, you have a dummynet PF rule?! That's right, instead of supporting ALTQ, it appears that Apple made PF work with dummynet. I posted a bit more about PF on Mac OS X on my blog.
UPDATE: NLC is not needed. Dummynet pipes and queues can be created directly with dnctl
. Read the accompanying man page for it for detailed instructions and examples of using it with pf
.
Best Answer
trickle -d 10 command
runs command, limiting its bandwidth to 10kB/s. This is the analog ofnice
for bandwidth. It is packaged by at least Debian and Ubuntu.ip_relay
andredir
are both tiny TCP proxies that support bandwidth limiting. Neither of them seem to have been maintained recently, but they're packaged by at least Debian and Ubuntu.But maybe the tool you're using for downloading already supports bandwidth limitation, for instance
wget --limit-rate=10k
,curl --limit-rate 10k
,rsync --bwlimit=10
.