options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC #нужен для для SMP options ALTQ_DEBUG
PF (можно модулем подгружать, но не пробовал) для добавления очередей ALTQ (ipfw сам не умеет):
device pf #обязательно device pflog #остальное по желанию device pfsync
Правим /etc/rc.conf и добавляем:
pf_enable="YES" pf_rule="/etc/pf.conf"
В /etc/pf.conf только включаем altq и прописываем очереди.
altq on $ext_if bandwidth 1000Kb priq queue {def_out, game_out} queue def_out priority 1 priq(default red) queue game_out priority 5 priq(red) altq on $int_if bandwidth 1000Kb cbq queue {def_in, game_in} queue def_in bandwidth 872Kb cbq(default borrow red) queue game_in bandwidth 128Kb priority 7 cbq(borrow red)
Подробно очереди описывать не буду, в интернете множество примеров.Ну и теперь надо завернуть в очереди трафик из ipfw. При настроенном ipfw, делается это очень удобно через конструкцию count
ipfw add 1 count altq game_out all from any to any 8112 out via $ext_if ipfw add 2 count altq game_in all from any 8112 to any out via $int_if ...
Ну и т.д. Все, кто не попал в очередь идут в дефолтную.Для удобства ставим pftop и радуемся работе ALTQ в ifpw.З.Ы. Замечания по man`у ipfw. При попадании пакета в несколько очередей срабатывает первое. Заворачивать в очереди надо до check-state и keep-state.Ну, вот, как-то так...Литература:FAQ по ALTQ (eng)FAQ по ALTQ (rus)Настройка PF (rus)Полезно у кого асинхронный канал (eng)