Traffic Shaper в pfSense - управление полосой пропускания

pfSense предоставляет два независимых механизма управления полосой пропускания: ALTQ (Alternate Queuing) и Limiters. Оба механизма решают задачу контроля трафика, но используют принципиально разные подходы и реализованы на различных подсистемах FreeBSD. Выбор между ними определяется требованиями конкретной инфраструктуры - приоритизация трафика и гарантированная полоса пропускания для критичных приложений или жёсткое ограничение скорости для отдельных пользователей и подсетей.

Шейпер работает путём постановки пакетов в очередь в точках, где операционная система контролирует поток данных. Входящие загрузки шейпируются при выходе с LAN-интерфейса, исходящие - при выходе с WAN-интерфейса. Это принципиальное отличие от архитектуры MikroTik, где Simple Queues применяются непосредственно к интерфейсу приёма.

Два подхода к управлению трафиком

ALTQ (Alternate Queuing)

ALTQ - фреймворк управления очередями, интегрированный с pf (packet filter). Поддерживает несколько типов планировщиков (PRIQ, CBQ, HFSC, FAIRQ), позволяет выстраивать иерархию очередей с приоритетами и заимствованием полосы пропускания. ALTQ является предпочтительным выбором, когда необходимо гарантировать минимальную полосу пропускания для критичных сервисов (VoIP, видеоконференции) при одновременном ограничении менее важного трафика.

Существенное ограничение ALTQ - зависимость от драйверов сетевых адаптеров. Не все драйверы поддерживают ALTQ, и активация шейпера снижает максимальную пропускную способность межсетевого экрана.

Limiters (dummynet)

Limiters основаны на подсистеме dummynet(4) FreeBSD и работают независимо от ALTQ. Они устанавливают жёсткие ограничения полосы пропускания, задерживая или отбрасывая пакеты для достижения заданной скорости. Ключевое преимущество Limiters - возможность ограничения скорости per-IP или per-subnet, что недоступно в ALTQ. Limiters не зависят от драйверов сетевых адаптеров и совместимы с любым оборудованием.

Сравнение ALTQ и Limiters

ХарактеристикаALTQLimiters (dummynet)
Приоритизация трафикаПолная поддержка (очереди с приоритетами)Ограниченная (веса дочерних очередей)
Гарантия полосы пропусканияДа (HFSC)Нет
Per-IP ограничениеНетДа (через маски)
Per-subnet ограничениеНетДа (через маски)
Заимствование полосыДа (CBQ, HFSC)Нет
Зависимость от драйверов NICДаНет
Влияние на производительностьСущественноеУмеренное
Настройка через визардДаНет
DSCP/DiffServ маркировкаДаНет
Борьба с bufferbloat (CoDel)НетДа

Выбор механизма по сценарию

ALTQ подходит, когда необходимо:

  • Приоритизировать VoIP и видеотрафик над остальным трафиком
  • Гарантировать минимальную полосу пропускания для критичных приложений
  • Маркировать пакеты DSCP для взаимодействия с провайдером или вышестоящим оборудованием
  • Использовать иерархическую модель распределения полосы пропускания

Limiters подходят, когда необходимо:

  • Ограничить скорость для каждого пользователя индивидуально (per-IP limit)
  • Установить потолок полосы пропускания для гостевой Wi-Fi сети
  • Ограничить совокупную полосу пропускания подсети
  • Бороться с bufferbloat с помощью CoDel или FQ-CoDel
  • Работать с сетевыми адаптерами, не поддерживающими ALTQ

Внимание:

ALTQ и Limiters могут использоваться одновременно, но не следует применять оба механизма к одному и тому же потоку трафика. Это приводит к непредсказуемому поведению и усложняет диагностику проблем с производительностью.

Содержание раздела

  • Limiters - ограничение полосы пропускания per-IP и per-subnet, CoDel для bufferbloat, применение через правила файрвола
  • ALTQ Traffic Shaper - визарды для приоритизации трафика, типы планировщиков PRIQ и HFSC, ручная настройка очередей

Связанные разделы

Last updated on