Нарезаем трафик ломтиками Andrey Matveev Хакер, номер #087, стр. 087-130-5 keep state queue (q_hig) /* Если в поле заголовка IP-пакета установлен TCP ACK или TOS LOWDELAY (к примеру, это могут быть интерактивные ssh-сессии), используем очередь q_max, иначе q_def */ pass out on pppoe0 inet proto tcp from (pppoe0) to any \ flags S/SA keep state queue (q_def, q_max) /* Обращения к удаленным Web-сайтам имеют наивысший приоритет */ pass out on pppoe0 inet proto tcp from (pppoe0) to any port www \ flags S/SA keep state queue (q_hig, q_max) Активируем правила: # pfctl -e -f /etc/pf.conf Проверяем, вступили ли в силу новые изменения: # pfctl -sq queue q_max priority 7 queue q_hig priority 5 queue q_def priority 3 queue q_low priq( default ) [визуализация трафика] На этом обе части настройки закончены. Теперь, чтобы оценить выигрыш от использования ALTQ/PRIQ, можно воспользоваться pfstat. Эта программа из дерева портов прекрасно справляется с задачей обработки статистики pf и построения наглядных графиков. # cd /usr/ports/net/pfstat # make install clean CLEANDEPENDS=Yes Приведу пример конфигурационного файла pfstat.conf: # vi /etc/pfstat.conf image "/var/www/htdocs/pfstat/pfstat.jpg" { from 10 minutes to now width 960 height 300 left graph bytes_v4_in label "incoming" color 0 192 0 filled, graph bytes_v4_out label "outgoing" color 0 0 255 } Далее утилитой crontab вызываем текстовый редактор (тот, что определен в переменной окружения $EDITOR) для постановки pfstat на исполнение и ротации логов в заданное время: # crontab -e * * * * * /usr/local/bin/pfstat -q >>/var/log/pfstat 1 1 * * 1 tail -n 50000 /var/log/pfstat >/tmp/pfstat && mv /tmp/pfstat /var/log/pfstat */1 * * * * /usr/local/bin/pfstat -c /etc/pfstat.conf -d /var/log/pfstat >/dev/null PS. Статья не претендует на роль полноценного руководства или панацеи на все случаи жизни. Для каких-то типов соединений выигрыш будет больше, для каких-то - меньше. Истинный результат может показать только эксперимент. МИНИ-СТАТЬЯ Пример настройки штатной утилиты pppoe(8). Редактируем ppp.conf: # vi /etc/ppp/ppp.conf default: Set log Phase Chat LCP IPCP CCP tun command Disable ipv6cp pppoe: set device "!/usr/sbin/pppoe -i vr0" set mtu max 1492 set mru max 1492 set speed sync disable acfcomp protocomp deny acfcomp set authname user set authkey password add! default HISADDR Так как конфиг содержит имя пользователя и пароль, выставляем корректные права доступа: # chmod 600 /etc/ppp/ppp.conf Устанавливаем PPPoE-соединение: # ppp -ddial pppoe |