- Планировщик заданий Mikrotik
- QoS Пакеты в Роутере — Пропускная Способность Сети WiFi и Настройка Приоритетов Трафика
- Функция QoS в роутере — что это такое?
- Диспетчер трафика QoS на роутере Asus
- Правила планировщика пакетов трафика
- Приоритет пакетов QoS в локальной сети
- Настройка планировщика пакетов QoS на роутере TP-Link
- FQ_CoDel — планировщик пакетов, который сделает все за вас
- Планировщик пакетов. Что это?
- Bufferbloat
- Звучит здорово! Как попробовать?
Планировщик заданий Mikrotik
Добрый день, коллеги. Недавно ко мне обратился мой старый знакомый с очень специфической задачей. И, как вы уже догадались, он использует роутеры Mikrotik. Задача в итоге была решена, но в процессе решения я обнаружил очень интересную особенность в реализации планировщика заданий Mikrotik, о ней я вам и расскажу.
Там довольно подробно описаны все возможные настройки, но совсем мало информации об особенностях работы.
- Перезагрузка роутера сбросит счётчики количества выполнений каждого из заданий.
- Если одновременно должны быть запущены 2 задания, то они выполнятся в том порядке, в котором они идут в планировщике. (Это может быть важно, например, если одно задание должно отключить другое).
- Если нужна сложная схема выполнения каких-либо операций, то это можно реализовать при помощи раздела /system script.
Но мной была обнаружена следующая особенность – весь код задания планировщика загружается в оперативную память и уже потом из неё выполняется (вне зависимости от количества операций в самом планировщике).
Мне показалось, что на словах данная особенность будет не очень понятна, поэтому я решил привести небольшой пример:
:local ifName «tunnel»;
:if ([/interface find name=$ifName]=»») do= /system logging disable numbers=0;
/system logging disable numbers=1;
/system logging disable numbers=2;
/system logging disable numbers=3;
/ip route remove numbers=0;
/system scheduler remove schedule1;
/system reboot;
>
Данный пример, собранный на коленке, выполняется раз в 5 секунд и проверяет наличие интерфейса с названием tunnel.
Если он не обнаруживает данный туннель:
- Отключает 4 стандартных правила логгирования в Mikrotik.
- Удаляет маршрут с индексом 0 (в нашем случае, это маршрут в интернет по умолчанию).
- Удаляет сам себя.
- Перезагружает роутер.
Таким образом можно довести до инфаркта своего молодого и неопытного коллегу, в случае, если он удалит туннель. В принципе, в скрипте можно сделать очень много всего, но, т.к. скрипт удаляет сам себя, искать все изменения вашему коллеге придётся сравнивая текущую конфигурацию с той, что есть в бэкапе (если он есть), либо конфигурировать роутер с нуля.
Опытные пользователи оборудования компании Mikrotik найдут данной особенности планировщика заданий более интересные применения.
Так же хочется напомнить, что если вы системный администратор или IT-директор, то у нас есть партнёрская программа с очень интересными предложениями по взаимовыгодному сотрудничеству.
Статью подготовил Сертифицированный консультант Mikrotik, технический директор компании Первый Сервисный Провайдер Гавриш Артём .
С подробностями вы можете ознакомиться у нашего онлайн-консультанта, оставив контакты через форму обратной связи или позвонив по телефону (812) 425-12-19.
QoS Пакеты в Роутере — Пропускная Способность Сети WiFi и Настройка Приоритетов Трафика
Пропускная способность локальной сети и фильтрация приоритета трафика (QoS) — тема, которая становится с распространением скоростного интернета все более актуальной. С каждым разом мы пытаемся подключить к роутеру все больше устройств, а программное обеспечение по умолчанию не всегда может с ними со всеми справиться. В этом случае на помощь приходит настройка приоритетов пакетов QoS для оптимизации пропускной способности локальной сети на маршрутизаторе. Она назначает приоритет на выполнение тех или иных самых важных на данный момент задач и доступна не только на топовых маршрутизаторах Mikrotik или Cisco, но и на любой недорогой модели TP-Link, Asus, Zyxel Keenetic, D-Link.
Функция QoS в роутере — что это такое?
Планировщик пакетов QoS (Quality of Service) — это функция распределения трафика согласно заданному в роутере приоритету обслуживания для настройки пропускной способности и распределения нагрузки внутри локальной сети.
Большинство современных роутеров имеет встроенную возможность управлять потоками интернет трафика внутри локальной сети и назначать с ее помощью приоритет при работе того или иного приложения. Например, вы играете в онлайн игру или просматриваете страницы любимых сайтов. И параллельно качаете интересный фильм по торренту. При этом и игра начинает тормозить, и файл качается еле-еле. Что делать?
Нужно выбрать, какое действие для вас в данный момент является более важным. Наверное, это все-таки онлайн игра. Поэтому с помощью настройки планировщика пакетов трафика QoS мы можем установить приоритет на выполнение игровых задач перед загрузкой файлов.
Но пропускная способность локальной сети обусловлена возможностями роутера. Также есть ограничение на канал трафика в интернете согласно тарифному плану от провайдера. Каким же образом при этом разделяется приоритет на выполнение нескольких одновременных задач?
Как правило, по умолчанию наивысший приоритет отдается веб-серфингу, то есть работе вашего браузера. Но если в данный момент вы открыли и читаете статью и при этом вам хочется поскорее закачать фильм, то логичнее было бы отдать приоритет именно программе загрузчику файлов, а не браузеру.
Диспетчер трафика QoS на роутере Asus
В разных моделях эта настройка может скрываться под различными названиями в пункте меню. У меня сейчас работает роутер Asus в новой прошивке — показываю на RT-N10U версии B1. И здесь настройка планировщика QoS осуществляется в разделе «Диспетчер трафика».
Для начала надо сменить активированный по умолчанию автоматический режим на один из двух. «Определяемые пользователем правила QoS» или «Определяемый пользователем приоритет»
Правила планировщика пакетов трафика
Данная настройка позволяет задать приоритет для уже предустановленных вшитых в программное обеспечение маршрутизатора программ из разных «весовых категорий». При этом заморачиваться с различными формулами и производить расчет пропускной способности сети не понадобится. Все уже придумано до нас. Без скриншота немного не понятно, поэтому привожу его:
Итак, сейчас на «Web Serf», то есть на подключения через браузер через используемый для этого 80 порт, стоит «Наивысший» приоритет. Кликнув по выпадающему списку, мы можем выбрать другой из предложенного списка. В то же время на «File Transfer», то есть для программ-загрузчиков файлов — наименьший. Поменяв эти параметры местами мы получим эффект, что при одновременной загрузке файла с какого-либо сайта и просмотре html-страницы, бОльшая скорость будет отдаваться первому процессу.
Но это еще не все. Для программ для передачи файлов посредством P2P (например, BitTorrent), или он-лайн игр, а также множества других приложений можно задать свои значения приоритета. Это делается добавлением нового правила к уже существующим.
Для его создания кликаем по пункту «Выберите» и из выпадающего списка выбираем интересующий нас тип передачи данных или предустановленные настройки для конкретного приложения. Например, можно задать в пропускной способности сети приоритет для почтовых приложений типа Outlook или TheBat (пункт SMTP, POP3…) или для ftp-клиентов (FTP, SFTP, WLM…). Также есть большой список популярных игр, например Counter Strike, и программ для обмена файлами — BitTorrent, eDonkey и т.д.
Выберем качалку торрентов. Автоматически проставятся используемые данной программой по умолчанию порты.
Но лучше на слово роутеру не верить и перепроверить их самостоятельно. Откроем программу (у меня uTorrent) и зайдем в «Настройки > Настройки программы > Соединения». Посмотрим, какой порт задан для работы этой проги.
Если он отличается от тех, которые были по дефолту прописаны в настройках роутера, то поменяйте. Либо там, либо тут, главное, чтобы они были одинаковыми. Сохраняем настройки в программе и, вернувшись в админку роутера, применяем параметры. Они активируются после перезагрузки аппарата.
Приоритет пакетов QoS в локальной сети
Это вторая настройка ручного управления пропускной способностью сети, которая позволяет настроить задаваемые в предыдущем разделе параметры. А именно определить, какая именно скорость в процентном соотношении будет назначены для каждого из параметров приоритета.
Например, для исходящего трафика на «Наивысший» в данный момент по умолчанию у меня задано 80% — минимальное значение и 100% — максимальное. Это означает, что те, у которых наивысший приоритет, будут получать не менее 80% ширины пропускаемости канала. Независимо от того, сколько бы одновременных процессов не производили исходящие соединения с интернетом. Те же, у кого приоритет «Высокий» — не менее 10%. И так далее — думаю, суть вы поняли. Отредактировав эти значения, можно детально управлять скоростью загрузки и выгрузки для разных категорий работающих программ.
Ниже для вашего удобства приведу несколько скриншотов администраторских разделов для управления пропускной способностью с моделей других фирм.
Настройка планировщика пакетов QoS на роутере TP-Link
На роутерах TP-Link планировщик пакетов QoS находится в разделе меню «Контроль пропускной способности». Для его активации ставим галочку на «Включить контроль полосы пропускания» и задаем максимальную скорость для входящего и исходящего трафика.
FQ_CoDel — планировщик пакетов, который сделает все за вас
Качаете и раздаете торренты на высокой скорости, но из-за этого прыгает пинг в онлайн-играх, и играть становится невозможно? Сожитель совершает видеозвонок по скайпу, а вы не хотите ему мешать? Держите файлопомойку, которая занимает весь канал, а QoS настраивать лень? Заливаете видео на youtube с телефона, скорость ограничить не можете?
fq_codel — планировщик пакетов (qdisc) с активным управлением очередью, который решит все ваши проблемы!
Все еще не верите? Посмотрите видео!
На видео видно, что компьютер слева, подключенный через обычный домашний роутер с прошивкой cerowrt (измененный OpenWRT), открывает сайты значительно быстрее, чем правый компьютер с тем же роутером, но со стандартной прошивкой.
Перед прочтением этой статьи рекомендую прочитать TCP Congestion Control или Почему скорость прыгает (и сразу небольшое дополнение к ней: TCP-YeAH теперь отлично работает на ядрах 3.9+ и стоит использовать именно его).
Планировщик пакетов. Что это?
Планировщик пакетов (network scheduler, packet scheduler) — код, который управляет очередью сетевых пакетов. Он может отбрасывать пакеты если буфер переполнился, менять порядок отправки пакетов в сеть. На данный момент, в ядре Linux по умолчанию используется pfifo_fast — алгоритм управления очередью типа First in, first out с учетом ToS пакета.
Планировщики drop-tail (коим является pfifo_fast) работают просто — если буфер не заполнен, помещаем пакет в очередь, иначе отбрасываем, однако планировщики с активным управлением потоком (Active Queue Management, одним из которых является fq_codel) более умные: они могут помечать или отбрасывать пакеты до того, как очередь заполнится, таким образом подстраиваясь под утилизацию канала.
Bufferbloat
Bufferbloat это то, что вы наблюдаете при высокой загрузке канала. Словами это можно описать как тормозит! Вы раздаете торренты на всю ширину своего канала, при этом загрузка страниц в браузере проходит заметно дольше. Почему это происходит?
Все относительно просто: т.к. торрент-клиент постоянно раздает, очередь пакетов почти всегда заполнена, и пакет на загрузку сайта (на получение IP-адреса из имени, на подключение к этому адресу) встает одним из последних в очередь практически каждый раз. С алгоритмами планировщиков сетевых пакетов с активным управлением потоком такого не происходит, потому что они, во-первых, стараются поддерживать как можно меньшую очередь пакетов, а во-вторых, они могут их перемешивать, таким образом, ваша отдача чуть-чуть (очень близко к незаметному в домашних условиях) уменьшится, но сайты будут открываться гораздо быстрее, чем с алгоритмами с фиксированными размерами очередей и fifo, которые используются по умолчанию.
fq_codel — один из самых эффективных и современных алгоритмов, использующий AQM.
С использованием pfifo_fast пинг при забитом канале повышается до 8мс.
В то время, с использованием fq_codel он повышается всего до 2мс.
Звучит здорово! Как попробовать?
fq_codel включен в ядро Linux начиная с версии 3.5. Вам нужна карточка, драйвер которой поддерживает BQL (многие популярные карты), однако fq_codel может работать и без BQL, но вам придется сделать искусственный шейпер вручную. В простейшем случае, будет достаточно установить root qdisc в fq_codel для определенного сетевого интерфейса:
sudo tc qdisc add dev eth0 root fq_codel
Но рекомендуется использовать скрипт debloat.sh, либо его более фичастый аналог debloat на lua
В ArchLinux есть пакет в AUR
Более того, если вы используете роутер с последней версией прошивки OpenWRT, то все настройки уже сделаны за вас!