Bad default QoS settings in Tomato/Shibby

I had a problem with the QoS settings in my new router firmware where file downloads weren’t using the full network bandwidth. Even if nothing else was trying to use the network, I was being limited to about 2/3 capacity. Finally figured out the cause: the default Inboumd Rates classified “WWW” and a bunch of other stuff to max out at 60%. I don’t think that’s an appropriate setting for home installations. The QoS should be there to give all TCP flows fair scheduling and, ideally, give important traffic higher priority. Bandwidth reservation is sort of a last resort.

The problem is the Tomato/Shibby QoS settings are very complicated. The key thing are the rate limits in the QoS/Basic Settings page, particularly Inbound for traffic coming into the router from the Internet. Here’s where I ended up:

Screen Shot 2014-05-24 at 7.53.07 AM

That setting says “all traffic classified as Service should use between 5% and 100% of the bandwidth”. The default setting for WWW was “20% to 60%” or something, or maybe that was FileXfer. Anyway, didn’t make sense. Frankly I think all of these could just be 0–100 and it’d work fine, if I understand correctly the router will still give higher classes more priority.

The other half of this is the classification and that’s gotten quite complex with 43 rules! They mostly seem reasonable to me, services like DNS and NTP are given highest “Service” priority. There’s some crazy Layer 7 classifier picking out applications like Youtube, irc, flash video, and a bunch of games. Sadly no L7 classifier for League of Legends, although given that’s UDP I’m not even sure the QoS settings can do that much.

I added some TCP rules to give my Roku device Media classification. Seems to work, I was able to reliably stream high quality video off Twitch using 25% of my bandwidth while 4 other TCP flows were downloading at max possible rate from an NNTP server.

The Tomato “View Graphs” pie charts are really useful, the pie charts for Bandwidth Distribution show current classification and flows. “Zoom graphs” is useful, it shows unused bandwidth as a white wedge.