Можно сделать несколько трубок и в каждую по несколько очередей.
Каждая очередь со своим приоритетом.
Пока в трубе есть место - все идет само по себе, как только
труба заполнена - каждая очереь занимет трубу согласно приоритету.
есть pipe - труба, есть queue - очереди.
Труба ограничивает полосу пропускания.
Заводим очереди (по типам трафика к примеру)
Даем им weight (приоритет). Приоритет по умолчанию - 30 (кажется)
Пока ширины трубы хватает для всех очередей, все идет само по себе.
Как только труба наполнена - очереди будут опоржняться в соотвествии со своим приоритетом. Если есть 100мбит, труба с весом 10 и труба с весом 90,
то после переполнения очередей на трубу с весом 90 отдадут 90 мбит.
Типичные случаи возникновения ошибок:
1) очень большой параметр queue в определении pipe:
fwcmd pipe 1 config bw 128Kbit/s queue 64Kbytes
будет страшно долго ждать. Трафик будет идти рывками.
2) при определнии очереди взята маска по IP,
при этом, к примеру для smtp, вес очереди будет применяться к каждому соединению на 25 порт, а не ко всему трафику.
Если задать такую маску для низкоприоритетного трафика, то у тебя окажется много(1) низкоприоритетных потоков.
3) все очередизаданы с весом ниже 30, тогда любой неописанный трафик окажется более приоритетным. (IMHO, не уверен)
труба
fwcmd pipe 1 config bw 128Kbit/s queue 4Kbytes
# четыре очереди
fwcmd queue 1 config pipe 1 weight 10
fwcmd queue 2 config pipe 1 weight 15
fwcmd queue 3 config pipe 1 weight 45
fwcmd queue 2 config pipe 1 weight 99
# почту ставим в самую неприоритетную очередь
fwcmd add 10 queue 1 tcp from any 25 to any
fwcmd add 11 queue 1 tcp from any to any 25
# и т.д.
fwcmd add 12 queue 2 tcp from any 80 to any
fwcmd add 13 queue 2 tcp from any to any 80