Your preferred approach would be incorrect... If a class is set to use 1% to 70%, it really should be able to use up to 70%. That's why you use a combination of per-class limits and a global limit. If multiple classes are contending for the bandwidth, that's when the priority order goes into effect; if you have one class at 70% and one at 50%, they'll combine to hit the global limit, and at that point the higher class will get priority.
In other words, in the scenario you describe, I would not expect, nor would I want, 30% of bandwidth to be left over.--
Developer: Tomato/MLPPP, Linux/MLPPP, etc »fixppp.org