Якщо ви працює з pf і під час завантаження правил отримуєте таке повідомлення:
значить підтримка altq не включена. Включити можна тільки через перезбирання ядра. Для цього додаємо такі опції в конфігураційний файл ядра:
включає підсистему ALTQ
включає Class Based Queuing (CBQ). CBQ дозволяє розподіляти пропускну здатність сполук за класами або черг для виставлення пріоритетів трафіку на основі правил фільтрації.
включає Random Early Detection (RED). RED використовується для запобігання перевантаження мережі. RED обчислює довжину черги і порівнює її з мінімальною і максимальною межею черзі. Якщо чергу перевищує максимум, все нові пакети відкидаються. Відповідно до своєї назви, RED відкидає пакети з різні з'єднань в довільному порядку.
включає Random Early Detection In and Out.
включає Priority Queuing (PRIQ). PRIQ завжди пропускає трафік з більш високою черги першим.
включає підтримку SMP для ALTQ. Ця опція необхідна для SMP систем.
Обмежити можна тільки вихідний (upload) трафік, так як вхідний (download) - уже прийшов і обмежити його не можна. Але є хитрий спосіб (не завжди дає бажаний результат, але краще, ніж нічого): вхідний на внутрішній інтерфейс (download) буде вихідним для зовнішнього. Саме так і будуть складатися правила.
Іншими словами спочатку складаєте правила розподілу трафіку, а потім навішуєте на правила брандмауера, але тільки з ключовим словом out. Інакше шейпер працювати не буде.
Нагадаю, що в pf'e важливий порядок правил:
- 1) макроси
- 2) таблиці
- 3) опції
- 4) параметри нормалізації
- 5) пріоретізаціі і черги ALTQ
- 6) правила трансляції
- 7) правила фільтра
Тому правила, що починаються з altq / queue йтимуть вище правил трансляції, а правила pass - разом з правилами фільтрації.
А тепер, що б подивитися стан черг, виконаємо:
Будьте уважні при використанні borrow + cbq. так як воно не завжди працює, так як вам цього хочеться. Яскравий приклад - НЕ запозичення пропускної здатності від батьків. Якщо коротко - то використовувати замість cbq -> hfsc
У пакетному фільтрі (починаючи з OpenBSD 5.5) pf реалізована нова система управління чергами мережевих пакетів, яка прийшла на зміну системі пріоритезації трафіку та управління пропускної здатності ALTQ. Підтримка ALTQ поки збережена, але буде видалена в наступному випуску. Змінено дію правила блокування за замовчуванням, в pf.conf тепер використовується «block return«. Найпростіший приклад нового синтаксису розстановки пріоритетів для різного виду трафіку: