Optimize Tomato QoS
Quality of Service is a term used to describe the way bandwidth is prioritized and allocated from (Outbound) and to (Inbound) your network. Most, if not all Internet bandwidth fluctuates from load sharing and Infrastructure between you and the point to which you are connecting. When you enable QoS, your configuring the router to give guaranteed bandwidth to the device, application or service (on your network, behind the router) by priority regardless of the conditions on the Internet.
Unlike other Router Firmware with QoS, Tomato has two major advantages. The first is the ability to set the bandwidth Rate and Limit of a Class. The Second is a Graphical Interface which allows you to analyze, tune, and optimize QoS for VoIP devices, torrents, and other p2p apps that impact overall network performance.
The following section is a tutorial to be used as a basic starting point to configure and optimize Tomato QoS.
If your at this point, you likely have Tomato installed. If you don’t, need a Router that Supports Tomato, see the Pricing and Installation articles on this site
1) Determine ISP Uplink and Downlink Bandwidth.
At night, your home Internet connection slows down. At work, that network slows down. Other times your fast locally, but your passing through traffic areas of the Internet. Broadband Carriers like Comcast use a technology that passes bandwidth at a higher rate, commonly known as “Speedboost”, or “PowerBoost”. Go to:
- http://www.speakeasy.net/speedtest/ if your in North America or
- http://www.speedtest.net globally, perform a test with the recommended server.
- Write the Average of 3-4 tests down. Run some tests to various places around the country. Notice the bandwidth fluctuation, depending who you test with. In these situations, the best time to determine your speed is at night, or on weekends.
Make sure QoS is disabled when performing initial tests!
2) Enable QoS and Configure Rate/Limits
Configure initial settings like the example below, substituting Outbound and Inbound with your test results.

In this example:
- the the Inbound Class Limits are set to “None”. That basically means inbound filtering is turned off. Unless you have a reason to, let all classes get maximum Inbound bandwidth.
- The Outbound Class bandwidth “Rate”is set lower than the “Limit”. Very important to do this to cover fluctuating bandwidth. Basically your saying get all the bandwidth starting 10% slower.
3) Configure Classes
Set default Classes similar to example below:

In this example:
- Skype, and small DNS packets get the highest priority, followed by web surfing, followed by various applications.
- Depending on the device or application, Mac or port specific info is detailed.
- Larger packets of DNS, web surfing get dropped to a lower class if bandwidth is exceeded.
- All other traffic is pooled into the lowest class. Important for next step.
3) Optimize
This example shows a visual of graph page

This is the best part of Tomato QoS. Now that you have defined the basic QoS and set Classes you can click on any of the Classes displayed on this Graph page to see the details, if you have things set right, if there’s anything “Unclassified”, etc. There is also a Details menu if you prefer going straight to it.
This will get you started. There is no “one size” solution, each setup is different. This example works great with Skype Dual Mode Phones. Answers every time, no delays. echos, or drops (that are related to my end )
For Supported Routers see GazGuzla Tomato Compatible Router List or the 4+MB Master Router List
December 26th, 2008 at 6:18 am
How is your Skype service related to a MAC number? Do you have a Skype hardware phone?
Will your bulk traffic be able to use 100% of your available bandwidth?
December 26th, 2008 at 9:56 am
Using the MAC address of the phone is a way to make sure the phone maintains the highest bandwidth priority. Its related to the service in that anything the phone does (nothing but Skype) has bandwidth priority. Using the IP address of the phone is ok, but there are times where it can change if your router (uses DHCP) decides to after a reboot or a firmware upgrade. If you look at the breakdown of the scheme above, bulk traffic has a low priority, and is set not to use all of the available bandwidth.
January 28th, 2009 at 5:05 pm
For the rest of us trying to configure Tomato QoS and Skype without a dedicated Skype hardware phone, which port(s) does Skype use and does a Tomato QoS Skype configuration work well?
Thanks
January 29th, 2009 at 2:31 pm
For what your asking, bring up Skype on your PC, under Tools/Options/Advanced get the Incoming port number for the App. Using the above example, substitute the MAC hardware phone rule with a Src/Dst port rule. Don’t forget to port forward or trigger the new port number, otherwise skype will default to web ports.
If your laptop/pc is set to highest, your defeating the purpose, so be sure its not…
March 7th, 2009 at 5:24 pm
Scottb, I have a few questions if you don’t mind. First I’d like to tell you I’m an avid gamer. I was wondering if you had two xbox 360s, a ps3, a laptop, and a desktop PC, how you would configure qos for these devices on the network. I mostly use the two xboxes and the two computers get used equally for browsing and email. I occasionally use the laptop and skype to video chat with family. The ps3 gets used the least but when I play it I still don’t wish to lag. If you could give me advice on how you would set this up (I have Comcast as well) I would appreciate it. Since I have two xboxes I use UPNP so that the NAT will remain open for both. Can I set the qos for the game systems by mac address? Also, should I check mark to block ping requests in my firewall or not? My last questions is for the upload and download numbers. As of late you say to take a few averages and to test from speakeasy if in North America. But I read an old post where you say that the best speed on a Comcast powerboost network is 2000 for upload and 12000 for download. My question is are those numbers the right ones? If not, what method do you recommend I do to find the right numbers? What are good times to test? I know this is a lot of scattered questions. I apologize for that. I would really appreciate the help. Regards, Nick
March 7th, 2009 at 10:44 pm
Nick,
Here’s the short answer. Comcast “powerboost” is a catchy marketing phrase for Download throttling. Because your on the same pipe as everyone else, maybe its throttled, maybe its not. Why my settings are what they are - I use Comcast, months of trial and error, and the things you asked, like the time of day to test, etc. The bandwidth fluctuates, due to a lot of variables, QoS settings to high, you have problems. Why you hear recommendations for setting QoS at 90% of max. With powerboost, my experience is even less. Your interested in P2P apps, so your mostly concerned with the Outbound/Uplink Limit. There’s no real reason to Limit Inbound, so set Inbound/Download Limit “None”, or No QoS like the example. That means the example setting of 17000 could be blank. I have it there on the example, because thats what I came up with, but its not turned on, so if its more it I get it. You don’t use Skype like I do, as a standalone phone, you use the app on your laptop. You’ve likely seen the preset L7 settings for “skypeout”, etc. L7 differs from the standard HTB type of QoS (long answer). Its one or the other once you set it up. All L7, set each specific port, lots of work and testing. Or use HTB, Mac addresses, prioroties, etc. Not that you can’t mix, just don’t recommend it.
I would configure like this:
Use bandwidth and priority settings in the example.
Leave ACK, SYN, etc default.
Setup Mac rules for each gaming device, start with Medium priority setting.
Setup Mac address for the laptop, Start with High priority setting.
Remember, the order of the list matters, move Highest to the top of the list, then high, medium, etc.
When you plan on making a Skype call, login and and set the laptop to Highest. Playing games, set those to highest or high. After a while, you will settle in on what works, or keep doing that manually. Could be that you can keep your laptop on Highest, and the Games on high, and everything’s fine like that. But that’s a start, go from there. There’s no perfect setup, each one is different. Also, I block Ping Requests, and I don’t use UPNP. I use Port triggering and Port Forwarding. Not critical, makes security a tad tighter.
Good Luck!
March 7th, 2009 at 11:38 pm
Thanks for all the great info Scott. I will use the knowledge I’ve gained from your site and this post to tinker with qos. I don’t mean to sound stupid and I apologize if I missed something…The only part I didn’t understand was what number do you recommend I put in for the upload value? Also, how does one determine an efficient upload value. I understood your explanation for everything else. Again, thanks so much for all the useful information. Regards, Nick
March 7th, 2009 at 11:54 pm
No problem, use the example, which is an actual picture of my router - 2000 Up (2mb). I’m in Massachusetts, what I get as an average. Use the test links I gave in the post, be sure QoS is disabled to try the tests for yourself. Likely, you will find results between 1800 - 2200 - depending on the location its faster or slower. take the average of the tests. Do them at night, in the morning, and the middle of the day.
March 7th, 2009 at 11:56 pm
You’re the man. Thanks so much Scott.
April 1st, 2009 at 1:13 am
I have some suggestions and a question. I run a dedicated P2P seed box on my home network, so I use a MAC address rule to set everything coming from that box to the lowest setting. I also put this rule at the top of the list to minimize the number of rule compares for the process/machine that creates the most connections. It does minimize CPU usage especially when you initially start up your P2P client and you get a “connection storm”. Every other rule uses IP or Port# in my setup. Remember that IPP2P Layer 7 will use the most CPU, while MAC/IP addres rules use the least followed by port number rules. If you can get away with it, try and avoid L7 rules, and turn the whole option off to conserve CPU.
One question I have though is when I run my torrent client on my seed box, I see DNS activity being classified in the “highest” category despite there being no connections in the list. If a torrent acquires enough seeds and really starts downloading heavily, the DNS “ghost traffic” upload increases proportionally and starts bottle necking the torrents. I was guessing this maybe had something to do with ACK packets being prioritized, so I turned off that option but to no avail. I do have Vegas congestion enables as well, but also turned that off/on with no effect. Any ideas?
April 16th, 2009 at 10:24 am
Hi,
I have a question on class percentage of bandwidth. I can see why I’d set a particularly hungry/less important protocol to a percentage lower than 100% ?(for example, to limit the “lowest” class I’d set it from 1%-50% to allow it only haf my outbound bandwidth.
I understand the max %, but why is there a minimum? Why would it ever be more than 1%?
May 26th, 2009 at 7:45 pm
I am trying to check out how useful the Qos is in the Tomato implementation. I like to test these scenarios to ensure the Qos really works just as it should and not just some fancy GUI with overheads.
Can one of you GURUs help me chalk out few test cases where I can really see the Qos in action? example how do I see KAZA, BITTORRENT, FILE UPLOADS etc to pick up steam in throughput with Qos enabled? Any/every help is much appreciated!!
regards
roy