How to use QoS on a Tomato router to share bandwidth evenly between computers on network?

0

I've been looking through the source code for the kernel packet scheduler, and I'm pretty sure I could code what I want manually, if necessary, but I'd love to know if it is possible without recompiling the kernel.

I'm using and RT-N66U router running the Tomato r105 firmware from http://tomato.groov.pl/download/K26RT-N/.

Can I set up a QoS algorithm using tc, without recompiling the kernel, to share bandwidth evenly between computers on the internal network?

Specifically, I'd like a single FIFO queue for every IP on the internal network, and to have packets processed round-robin from those queues (such that, if only one computer is on the network, it can use 100% of the bandwidth, but if more are active, no one user will be able use all of it).

Importantly, each user's share of bandwidth should include incoming and outgoing packets.

It looks like this might be possible with ESFQ, but I'd love some help if anyone knows how to achieve this.

Meyer Jacobs

Posted 2013-02-11T08:10:42.173

Reputation: 81

Meyer Jacobs - I would be interested in any solution you might have pursued. 10% of inbound bandwidth wasted is painful given our supplied speed, but with one user even loading a long page of images let alone big file download or worse, torrents, it is painful for all other users to get a single simple webpage to finish downloading. – user66001 – 2017-09-25T06:36:11.293

2I think you'll find this just doesn't work very well no matter what you do. Your ISP decides what packets to put on the wire to you. What are you going to do if you receive some unfair packets? If you drop them, they'll just get transmitted over your precious Internet link a second time. The only information your ISP could use to provide fairness is the inside IP of the connection, and NAT hides this from them. You can manage outbound traffic though. – David Schwartz – 2013-02-11T08:20:10.270

That's a good point. I didn't really think about where the download bottleneck was. Given that, even if I set up the packets to be processed how I want, I'd just end up with one queue always filled, and the others more or less empty, in the situations where one user is downloading a large file or something comparable? – Meyer Jacobs – 2013-02-11T08:27:18.150

1That's right. The only good way to deal with this problem is to drop (or delay) outbound UDP packets on the same 'connection' to throttle inbound UDP packets and to "modify" outbound TCP packets (to adjust the advertised window size) to throttle inbound TCP packets. So far as I know, there's no easy way to get Tomato to do that. There are all kinds of "not awful" solutions, but no good ones. If you wish to preserve latency, they all require you to intentionally waste about 10% of your inbound bandwidth. Otherwise, they can never act until it's too late. – David Schwartz – 2013-02-11T08:29:37.173

No answers