Поделюсь опытом :) .
Мои магистральные марщрутизаторы по ИНТЕРФЕЙСАМ(внешний, пиринги, PBX) производят раскраску пакетов , уже раскрашенные пакеты (на Л3) поступают на роутеры доступа, далее принцип ограничителей трафика "чем ближе трафик к клиенту тем 'глубже' мы лезем в пакет" , поэтому у меня используется множество очередей, пример:
1 очередь - работает только с Л1/2 (мас , интерфейс) , основная задача избежание перегрузок интерфесов/процов на рутерах
2 очередь - лезем в пакет за полем DSCP (ToS) , по разному раскрашенный трафик с разной скоростью и разным шейпером(ограничителем), вообщем QoS :)
3 очередь - ip , порты ит.д. , имхо не правильно , но иногда приходится делать и так.