So I'm reading through the QoS sticky and throughout the whole thing I'm thinking, this just seems wrong. Now I'm not saying it doesn't work to some degree, but the way traffic is classified and prioritization is handled just seems well, unfair. Now this is not to any fault of toastman or anyone in particular, every router I have come across has terrible QoS capability in general and has resulted in me turning it off very quickly. The issue here that I see is that you are trying to manage an apartment complex network more or less like an ISP would but you are managing it like you would manage a network under your control by choosing which traffic/applications gets through. If an application I need happens to use peer to peer I would expect to get the same bandwidth rate as my web browser. Another issue is latency, latency is incredibly important for games and VoIP and your system can't classify everything properly, you can cap everything a little lower but the prioritization scheme throws that out the window to some degree if the network is fully saturated. I think a proper QoS system for an apartment should be simply splitting bandwidth evenly to all residents regardless of the application. Now obviously we don't want to be wasting any bandwidth so we want this bandwidth to be split evenly among all users dynamically. Meet the Hierarchical fair-service curve network scheduling algorithm an advanced new algorithm that actually does everything we would want in situations like these. It provides dynamic limiting of all users by IP address or any other buckets, full network utilization, and latency controls. That way if a user wants to play a game as long as they are not downloading anything they should have good latency if the game uses low bandwidth, the same should be true for any latency sensitive application. At the same time someone can download a peer to peer file but without crippling the network. This is possible because the max bandwidth rate per user is identical for all clients that request more speed than available, however it will change depending on total network utilization. Rather than manually limiting certain protocols because they are using more bandwidth than available, instead bandwidth per application is back in their control since the algorithm can be protocol agnostic and only take IP addresses into context. One other advantage is you can tell your users to run downloads during off peak hours and they will get much faster speeds. By giving everyone their own dynamically allocated bandwidth bucket you can solve all these issues at once. It is also highly customizable so if you want to allocate bandwidth differently between users that is also possible and you can even have one user have ultimate priority over all others. Openwrt has a number of examples how that would be done here. Hopefully something like this can be integrated into the tomatousb GUI.