TanodTools
RU

Генератор PCQ для MikroTik

Поделите канал между всеми клиентами одной очередью Per Connection Queue: задайте скорость на клиента и общую скорость, а в ответ получите типы очередей и simple queue или queue tree.

Работает в браузере; введённые вами данные не покидают устройство

Метод
Скорости
Значение 0 или пустое поле для клиента означает равную долю от общей скорости.
Параметры

Создаёт синтаксис RouterOS v7 (подходит и для v6) для IPv4. Метод queue tree помечает соединения, которые клиенты локальной сети открывают в сторону WAN; остальной трафик идёт без ограничений. Параметры pcq-limit и pcq-total-limit остаются по умолчанию. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен компанией.

Как настроить PCQ на MikroTik

  1. Выберите метод: одна simple queue на подсеть локальной сети (проще всего) или queue tree с метками mangle (больше возможностей).
  2. Укажите скорость на клиента (или 0, чтобы делить общую скорость поровну), а также общую скорость отдачи и загрузки чуть ниже реальной скорости канала.
  3. Скопируйте скрипт или скачайте файл .rsc и убедитесь, что FastTrack отключён для ограничиваемого трафика.

Per Connection Queue на практике

PCQ — это тип очереди: он задаётся в разделе /queue type с kind=pcq, а затем его используют simple queue или queue tree. Параметр pcq-classifier определяет, что считать одним потоком: dst-address для загрузки, чтобы загрузка каждого клиента была отдельным потоком, и src-address для отдачи. RouterOS создаёт подпотоки на лету и удаляет их, когда они затихают, так что при появлении и уходе клиентов ничего поддерживать не нужно.

Результат определяют две настройки. pcq-rate ограничивает каждый поток; если оставить 0, потоки просто делят поровну то, что позволяет max-limit очереди. Значение max-limit очереди с PCQ должно быть немного ниже реальной пропускной способности канала: PCQ может честно делить полосу только тогда, когда пакеты ждут в очереди на маршрутизаторе, а не в модеме выше по цепочке.

Simple queue или queue tree?

Метод simple queue не требует маркировки: одна очередь с подсетью локальной сети в качестве target и queue=upload-type/download-type. Метод queue tree использует mangle, чтобы пометить соединения из LAN в WAN, и две очереди с parent=global; он не ограничивает трафик между локальными сетями и служит отправной точкой для классов приоритета. В любом случае настройки burst для каждого клиента относятся к simple queue; сравните их с помощью инструментов Генератор Simple Queue для MikroTik и Калькулятор Burst для MikroTik.

Вопросы и ответы

Что делает PCQ?

Тип очереди PCQ раскладывает пакеты по подочередям с помощью классификатора, как правило адреса клиента, и обслуживает подочереди по кругу. Если задан pcq-rate, скорость каждой подочереди ограничена этим значением; при pcq-rate 0 лимит родительской очереди делится поровну между клиентами, активными в данный момент. Так одна очередь даёт честную долю сотням клиентов, хотя иначе понадобились бы сотни simple queue.

Почему загрузка классифицируется по dst-address, а отдача по src-address?

Пакеты загрузки идут к клиенту, поэтому адрес клиента в них является адресом назначения; пакеты отдачи идут от клиента, и он в них источник. Если поменять их местами, все клиенты попадут в одну подочередь по адресам удалённых серверов.

Почему в queue tree используются parent=global и цепочка forward?

Пакеты отдачи нужно классифицировать до того, как source NAT заменит адрес клиента адресом WAN, а глобальная очередь отрабатывает до source NAT. Маркировка в цепочке forward видит пакеты загрузки уже после того, как destination NAT вернул адрес клиента. Если маркировать на интерфейсе WAN, вся отдача окажется в одной подочереди.

Для чего нужна маска адреса?

При /32 каждый адрес образует отдельную подочередь. WISP, который выдаёт каждому абоненту небольшую подсеть, например /29, может задать маску 29, и тогда вся подсеть будет делить одну подочередь и одну скорость.

PCQ ничего не меняет. Что проверить?

Сначала FastTrack: пакеты с FastTrack обходят mangle и все очереди. Затем общие значения: если max-limit выше, чем реально даёт линия, очередь никогда не заполняется, и очередь формирует оборудование провайдера, а не ваш маршрутизатор.

Отправляется ли моя конфигурация куда-либо?

Нет. Всё создаётся в вашем браузере.