Jump to content
Калькуляторы

Правильный QOS на PPPoE

Здравствуйте. В связи с последними событиями есть навязчивая мысль готовиться к экономии ресурсов и всего-всего-всего. Потому прошу совета по поводу организации QOS для PPPoE Соединений. 

В центре стоит Mikrotik 1036, принимает PPPoE соединения (примерно 600 сессий), в настоящий момент всего хватает, но как говорил выше- нужно готовиться к возможным трудностям.

 

Для маркировки пакетов и построения queue tree в ppp/profile/scripts при подключении\Отключении пользователя, выполняются следующие команды:

 

При подключении

/ip firewall mangle
add action=mark-packet chain=forward comment=($user."-Download_Fast") dst-address=$"remote-address" new-packet-mark=($user."-Download_Fast") passthrough=no protocol=tcp src-address=0.0.0.0/0 src-port=80
add action=mark-packet chain=forward comment=($user."-Upload_Fast") dst-address=0.0.0.0/0 dst-port=80 new-packet-mark=($user."-Upload_Fast") passthrough=no protocol=tcp src-address=$"remote-address"
add action=mark-packet chain=forward comment=($user."-Download") dst-address=$"remote-address" new-packet-mark=($user."-Download") passthrough=no src-address=0.0.0.0/0
add action=mark-packet chain=forward comment=($user."-Upload") dst-address=0.0.0.0/0 new-packet-mark=($user."-Upload") passthrough=no src-address=$"remote-address"
/queue tree
add bucket-size=1 limit-at=50M max-limit=100M name=($user."-Download_Fast") packet-mark=($user."-Download_Fast") parent=Main_In priority=5 queue=pcq-download-default
add limit-at=10M max-limit=100M name=($user."-Download") packet-mark=($user."-Download") parent=Main_In queue=pcq-download-default
add bucket-size=1 limit-at=50M max-limit=100M name=($user."-Upload_Fast") packet-mark=($user."-Upload_Fast") parent=Main_Out priority=5 queue=pcq-upload-default
add limit-at=10M max-limit=100M name=($user."-Upload") packet-mark=($user."-Upload") parent=Main_Out queue=pcq-upload-default

 

При отключении 
/ip firewall mangle remove [find comment~($user."-Download_Fast")]
/ip firewall mangle remove [find comment~($user."-Upload_Fast")]
/ip firewall mangle remove [find comment~($user."-Download")]
/ip firewall mangle remove [find comment~($user."-Upload")]
/queue tree 
remove [find comment~($user."-Download_Fast")]
remove [find comment~($user."-Upload_Fast")]
remove [find comment~($user."-Download")]
remove [find comment~($user."-Upload")]

 

При этом нагрузка с 5% взлетает до 100% со всеми вытекающими. Есть мнение не делать маркировку на исходящий трафик, это даст снижение нагрузки, но может есть другие идеи?

Share this post


Link to post
Share on other sites

А чем поможет QoS?

QoS это не про то, как залить в трубу 10М объем 12М. Это про то, как из этих 12М выбрать 2М, которые будут выкинуты.

Зачем делать маркировку на каждом абоненте?

Нужно дать более высокий приоритет для обычного серфинга и более низкий приоритет для медиафайлов, торрентов и прочего. Причем это нужно делать на аплинке.

Share this post


Link to post
Share on other sites

Вот а потом пишут что микротик виснет, глючит и тормозит.

 

У нас на PPPoE скорость абонентов ограничивается шейпером на интерфейс пппое абонента.

В фильтрах пару правил, запрещающих доступ на роутер и служебные сети с адресов абонентов.

В манглах пусто.

 

Если нужно ужать трафик в канал определенной скорости, просто делается простое правило шейпера с указанием интерфейса, с типом буфера PCQ и все. Трафик абонентов сам выравнивается и все работает.

Share this post


Link to post
Share on other sites

В 18.03.2022 в 18:49, Saab95 сказал:

Вот а потом пишут что микротик виснет, глючит и тормозит.

 

У нас на PPPoE скорость абонентов ограничивается шейпером на интерфейс пппое абонента.

В фильтрах пару правил, запрещающих доступ на роутер и служебные сети с адресов абонентов.

В манглах пусто.

 

Если нужно ужать трафик в канал определенной скорости, просто делается простое правило шейпера с указанием интерфейса, с типом буфера PCQ и все. Трафик абонентов сам выравнивается и все работает.

А где в этом случае приоритезация? 

 

Как раз я и хотел на каждый PPPoE интерфейс сделать со стороны сервера. ну и честно говоря. наверное хотелось поиграться с полями scripts

Сейчас в профиле PPP, на вкладке limits, выставляется ограничение, создающее простую очередь. хотел в деревьях сделать потом приоритеты, но судя потому, что простые очереди обрабатываются раньше, приоритезации на деревьях не получилось.

Share this post


Link to post
Share on other sites

В 18.03.2022 в 17:33, weedman сказал:

А где в этом случае приоритезация?

Так гуру ведь написал.

Делается одна очередь с типом PCQ, а потом — эшельме, бешельме — и само выравнивается и работает.

Шайтанма.

Share this post


Link to post
Share on other sites

Правильный qos рождается и умирает не на стерверах доступа, а в l2-коммутаторах по-дороге, умеющих обрабатывать биты tos в заголовках ip-пакетов, и имеющих память для очередей. Остальное - это софтовый шейп или полисирейт. На заре инета это и было, порт в l2 помеченный как иной tos, навешивал свою метку на пакете, и остальные эту тос должны были понять и обработать, на уровне коммутации.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

C queue-tree все затыкается в том, что корень дерева не параллелится, он на одном ядре. Что в случае TILE = лимит. Я бы сказал перейти на simple queue, но с PPPOE не уверен, что так можно. Simple Queue 1036 тянет порядка 1000. А вот ARM-based затыкаются в районе 700, там какой-то косяк в ROS, причем он даже в семёрку переехал. 

Share this post


Link to post
Share on other sites

В 18.03.2022 в 20:44, jffulcrum сказал:

Simple Queue 1036 тянет порядка 1000.

5000 и это не предел.

 

В 18.03.2022 в 17:33, weedman сказал:

А где в этом случае приоритезация? 

Трафик сам весь равномерно выравнивается, все соединения получают равнозначный доступ. То есть запустив закачку она не заберет всю доступную скорость, если другие протоколы тоже что-то передают.

 

В 18.03.2022 в 17:33, weedman сказал:

Как раз я и хотел на каждый PPPoE интерфейс сделать со стороны сервера. ну и честно говоря. наверное хотелось поиграться с полями scripts

Сейчас в профиле PPP, на вкладке limits, выставляется ограничение, создающее простую очередь. хотел в деревьях сделать потом приоритеты, но судя потому, что простые очереди обрабатываются раньше, приоритезации на деревьях не получилось.

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

 

У нас у всех абонентов стоят приоритеты PCQ, на магистральных каналах тоже PCQ, что позволяет в часы перегрузок не терять никакой трафик, просто увеличивается задержка.

Share this post


Link to post
Share on other sites

В 19.03.2022 в 00:44, jffulcrum сказал:

C queue-tree все затыкается в том, что корень дерева не параллелится, он на одном ядре. Что в случае TILE = лимит. Я бы сказал перейти на simple queue, но с PPPOE не уверен, что так можно. Simple Queue 1036 тянет порядка 1000. А вот ARM-based затыкаются в районе 700, там какой-то косяк в ROS, причем он даже в семёрку переехал. 

Интересная информация про trees, спасибо

Выходит деревья тут явно не вариант, а в simple если настроить цепочек, они тоже будут на одном ядре?

 

В 19.03.2022 в 00:56, Saab95 сказал:

 

 

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

 

Все таки 80 и 443 хотелось бы использовать + может dns\icmp\что-то еще служебное, возможно что-то типа первых ХХ Мб соединения etc 

 

В 18.03.2022 в 22:27, alibek сказал:

Так гуру ведь написал.

Делается одна очередь с типом PCQ, а потом — эшельме, бешельме — и само выравнивается и работает.

Шайтанма.

Была попытка шейпить на входящем интерфейсе, при этом не получалось шейпить исходящий трафик, решил вот повозиться с этими скриптами и маркировкой на абонента (+повторю было интересно попробовать, этого я раньше не делал, хочется теперь еще с этим повозиться для каких-нибудь целей)

В принципе в шейпинге исходящего наверное смысла нет, а это половина правил и очередей.

Share this post


Link to post
Share on other sites

В 19.03.2022 в 03:35, weedman сказал:

Все таки 80 и 443 хотелось бы использовать + может dns\icmp\что-то еще служебное, возможно что-то типа первых ХХ Мб соединения etc 

И что даст 80 и 443? Те же торренты и DC умеют по любому порту данные передавать, будут по 80 качать и попадать в приоритет. А смотреть первые мегабайты соединения - забирает много ресурсов.

 

Смысл таких приоритетов имеет место быть на спутниковых каналах, или очень медленных. Мы, наверное, уже лет как 10 убрали все эти маркировки и прочую лабуду с приоритезацией, т.к. толку от этого нет. Процессор загружается, отзывчивость интернета падает.

 

Еще раз напишу - делаете очереди PCQ с буфером там 5000 или 10000 пакетов на каждого абонента, внутри этой очереди для абонента все его запросы будут равномерно распределяться, ни одна закачка или поток данных не займут канал полностью.

 

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

 

У нас, например, получается такая ситуация - абонент может запустить в фоне закачку гигов на 50, и сесть играть в контрстрайк, задержка (пинг) на закачке будет 50-100-200, а пинг в контре будет 2-4мс. в то же время. В свойствах шейпера этого абонента дропов не будет, хотя входящая скорость ему ограничивается. Только ограничивается она не путем дропов (отбрасывания трафика), а путем увеличении задержки (большой буфер пакетов).

Share this post


Link to post
Share on other sites

Сделал через scripts в PPP profile 

/queue simple
add limit-at=10M/10M max-limit=30M/30M name=($user."-All") packet-marks=All parent=Main queue=pcq-upload-default/pcq-download-default target=$"remote-address"
add limit-at=10M/10M max-limit=30M/30M name=($user."-Fast") packet-marks=Fast parent=Main priority=7/7 queue=pcq-upload-default/pcq-download-default target=$"remote-address"

 

Эти очереди цепляются к главной "Main"

Внедрил для проверки, выяснилось, что не на каждого абонента создается две очереди при подключении. Происходит какая-то ошибка и появляется например только "Fast", если отключить и подключить абонента, то появляются обе очереди. Возможно нужно выставить какую-то задержку перед применением скрипта, или между двумя очередями в нем? 

Edited by weedman

Share this post


Link to post
Share on other sites

В 18.03.2022 в 23:25, YuryD сказал:

Правильный qos рождается и умирает не на стерверах доступа, а в l2-коммутаторах по-дороге, умеющих обрабатывать биты tos в заголовках ip-пакетов, и имеющих память для очередей. Остальное - это софтовый шейп или полисирейт. На заре инета это и было, порт в l2 помеченный как иной tos, навешивал свою метку на пакете, и остальные эту тос должны были понять и обработать, на уровне коммутации.

Здравствуйте. Читал про tos когда-то давно, но тут на форуме не помню тем по этому вопросу. Сложилось мнение, что он не работает, или есть другие проблемы и технология не используется. Я ошибся?

Share this post


Link to post
Share on other sites

В 23.03.2022 в 07:11, weedman сказал:

но тут на форуме не помню тем по этому вопросу

Потому что тут в основном провайдеры, а не энтерпрайз или датацентры.

ToS или DSCP работает только в контролируемой сети.

Share this post


Link to post
Share on other sites

В 23.03.2022 в 09:25, alibek сказал:

ToS или DSCP работает только в контролируемой сети.

И желательно моновендорной, ибо алгоритмы обработки в разном железе/софте могут отличаться довольно сильно.

Share this post


Link to post
Share on other sites

В 18.03.2022 в 18:49, Saab95 сказал:

Вот а потом пишут что микротик виснет, глючит и тормозит.

 

У нас на PPPoE скорость абонентов ограничивается шейпером на интерфейс пппое абонента.

В фильтрах пару правил, запрещающих доступ на роутер и служебные сети с адресов абонентов.

В манглах пусто.

 

Если нужно ужать трафик в канал определенной скорости, просто делается простое правило шейпера с указанием интерфейса, с типом буфера PCQ и все. Трафик абонентов сам выравнивается и все работает.

Настало время написать, что микротик виснит и глючит

450 сессий, NAT отсутствует, есть несколько очередей с заболокироваными, у которых ограничение в профиле 100кб\с

Если сделать маркировку двух типов пакетов - быстрые и остальные и две очереди с одним родителем, то CPU 100% обеспечено и пинг растет значительно

не тянет

Если делать просто ограничение скорости в профиле абонентов, то работает и не сильно грузит, но оно нам надо? нам надо чтобы микротик был тем, для чего его купили. Может шейпить? -  не может 😞

Хочешь шейпить - собирай на X86?

Edited by weedman

Share this post


Link to post
Share on other sites

Цитата

Если сделать маркировку двух типов пакетов - быстрые и остальные и две очереди с одним родителем, то CPU 100% обеспечено и пинг растет значительно

родителей уберите. маркировку уберите. порадуетесь 5-10% на всех ядрах.

шейпить пачку очередей с 1-2 родителями по достижении некой определенной нагрузки микротик не может, это факт, в который я сам уткнулся полгода назад.

как вариант - сделайте 36 родителей, если вам ваша конфигурация позволяет.

 

upd: и никакого намека на включенный маскарадинг (хоть даже для служебных целей, не для абонентов) в файерволле быть не должно. очень поднимает нагрузку.

Edited by nixx

Share this post


Link to post
Share on other sites

В 24.07.2023 в 22:28, nixx сказал:

родителей уберите. маркировку уберите. порадуетесь 5-10% на всех ядрах.

шейпить пачку очередей с 1-2 родителями по достижении некой определенной нагрузки микротик не может, это факт, в который я сам уткнулся полгода назад.

Ну да, если создавать очереди через профиль РРРоЕ, то так работает, но это просто граничение скорости, а не шейпинг. который хотелось бы увидеть.

Share this post


Link to post
Share on other sites

Цитата

Ну да, если создавать очереди через профиль РРРоЕ, то так работает, но это просто граничение скорости, а не шейпинг. который хотелось бы увидеть.

Что вы понимаете под словом "шейпинг"? Даже в профиле PPPoE можно указать настройки шейпера, и поменять тип буфера на PCQ, что создаст комфортные условия для работы абонентов. В пределах своего ограничения абонент сможет и качать, и посещать сайты, играть в игры с маленькой задержкой.

 

Цитата

есть несколько очередей с заболокироваными, у которых ограничение в профиле 100кб\с

Зачем это? Если абонент заблокирован, то ему достаточно или давать полный доступ на своей же скорости в интернет по запросу из личного кабинета, или разрешить доступ на платежные системы, что бы можно было оплатить через личный кабинет. Зачем им делать ограничение скорости, отличное от тарифного?

 

Цитата

Если делать просто ограничение скорости в профиле абонентов, то работает и не сильно грузит, но оно нам надо? нам надо чтобы микротик был тем, для чего его купили. Может шейпить? -  не может 😞

Хочешь шейпить - собирай на X86?

Еще раз напишу - если хотите шейпить общий внешний канал, тогда надо сделать отдельное ограничение скорости типа PCQ с большим буфером и все, указать требуемое общее ограничение по скорости внешнего канала (нужно чуть меньше поставить, т.к. провайдер ограничивает скорости, и может обрезать входящий и эти данные пропадут и ограничение не будет правильно работать).

 

Цитата

родителей уберите. маркировку уберите. порадуетесь 5-10% на всех ядрах.

Вообще многие придумывают лишние действия, которые влияют на производительность. CCR1036 на шейпере легко пропускает 10Г транзитом, точно так же легко он пропускает 10Г ната. Что еще больше от него требовать?

Share this post


Link to post
Share on other sites

В 31.07.2023 в 01:51, Saab95 сказал:

Что вы понимаете под словом "шейпинг"? Даже в профиле PPPoE можно указать настройки шейпера, и поменять тип буфера на PCQ, что создаст комфортные условия для работы абонентов. В пределах своего ограничения абонент сможет и качать, и посещать сайты, играть в игры с маленькой задержкой.

 

Зачем это? Если абонент заблокирован, то ему достаточно или давать полный доступ на своей же скорости в интернет по запросу из личного кабинета, или разрешить доступ на платежные системы, что бы можно было оплатить через личный кабинет. Зачем им делать ограничение скорости, отличное от тарифного?

 

Еще раз напишу - если хотите шейпить общий внешний канал, тогда надо сделать отдельное ограничение скорости типа PCQ с большим буфером и все, указать требуемое общее ограничение по скорости внешнего канала (нужно чуть меньше поставить, т.к. провайдер ограничивает скорости, и может обрезать входящий и эти данные пропадут и ограничение не будет правильно работать).

 

Вообще многие придумывают лишние действия, которые влияют на производительность. CCR1036 на шейпере легко пропускает 10Г транзитом, точно так же легко он пропускает 10Г ната. Что еще больше от него требовать?

1- шейпинг - ряд мер создающих условия требуемые для приоретизации по заданному параметру

2- к делу это не относится, но я отвечу. А почему бы и нет? Человек не оплатил, у него по факту работает, он может открыть любую страницу, но комфорта нет. Соблюдаются требования к доступу к определенным ресурсам, что в этом плохого?

3- еще раз отвечу, мне не нужно то что вы еще раз написали, вы же знаете, что микротик на бумаге умеет давать приоритет различным типам трафика, и если вы напишите "шейпинг микротик" в поисковике, вы получите ссылки на статьи и видео, показывающие возможности маркировки, приоретизации, нет? мне нужно это, а не одна общая очередь PCQ с большим буфером, еще раз вам ответил.

4- В чем "Лишность действий"? В том, что я хочу чтобы микротик работал? В том, что хочу маркировать что-то и это его полностью вещает? одна маркировка и две очереди с одним родителем? 

Share this post


Link to post
Share on other sites

В 05.08.2023 в 05:00, weedman сказал:

1- шейпинг - ряд мер создающих условия требуемые для приоретизации по заданному параметру

Шейпинг это лишь ограничение скорости с буферизацией. Если вводятся параметры это уже не шейпинг, как таковой.

 

В 05.08.2023 в 05:00, weedman сказал:

- к делу это не относится, но я отвечу. А почему бы и нет? Человек не оплатил, у него по факту работает, он может открыть любую страницу, но комфорта нет. Соблюдаются требования к доступу к определенным ресурсам, что в этом плохого?

Что же тогда просто мешает из биллинга сменить ограничение скорости - пусть абонент работает на малой и все.

 

В 05.08.2023 в 05:00, weedman сказал:

3- еще раз отвечу, мне не нужно то что вы еще раз написали, вы же знаете, что микротик на бумаге умеет давать приоритет различным типам трафика, и если вы напишите "шейпинг микротик" в поисковике, вы получите ссылки на статьи и видео, показывающие возможности маркировки, приоретизации, нет? мне нужно это, а не одна общая очередь PCQ с большим буфером, еще раз вам ответил.

Все эти инструкции были разработаны для 5-й версии микротика, на 6-ю их вводили с натяжкой. Т.к. требуется маркировать весь трафик абонентов - это затраты ресурсов. Использование всяких там родителей в симплах тоже создает высокую нагрузку.

 

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

 

То есть нужен отдельно микротик для НАТ (выход во внешние сети), отдельно основной шейпер и вспомогательный - так можно все задачи решать без нагрузки на оборудование.

 

В 05.08.2023 в 05:00, weedman сказал:

4- В чем "Лишность действий"? В том, что я хочу чтобы микротик работал? В том, что хочу маркировать что-то и это его полностью вещает? одна маркировка и две очереди с одним родителем? 

Вот как пример - хотите делать НАТ, шейпер, приоритеты на одном физическом микротике. Включение НАТ уменьшает производительность, примерно, вдвое. Делаете некие маркировки - опять затраты, общая скорость уменьшается. Распределив задачи на несколько устройств можно снять ограничения по скорости при взаимной работе разного функционала, увеличить гибкость настроек.

Share this post


Link to post
Share on other sites

18 часов назад, Saab95 сказал:

 

 

Вот как пример - хотите делать НАТ, шейпер, приоритеты на одном физическом микротике. Включение НАТ уменьшает производительность, примерно, вдвое. Делаете некие маркировки - опять затраты, общая скорость уменьшается. Распределив задачи на несколько устройств можно снять ограничения по скорости при взаимной работе разного функционала, увеличить гибкость настроек.

Там нет ната, просто PPPoE сервер и минимум firewall. С элементарной маркировкой 1036 умирает. 

 

18 часов назад, Saab95 сказал:

 

 

Все эти инструкции были разработаны для 5-й версии микротика, на 6-ю их вводили с натяжкой. Т.к. требуется маркировать весь трафик абонентов - это затраты ресурсов. Использование всяких там родителей в симплах тоже создает высокую нагрузку.

 

проверил на домашнем RB951  ROS7. Нет, все работает, маркировка, шйпинг. Процессора хватает.

Share this post


Link to post
Share on other sites

11 часов назад, weedman сказал:

проверил на домашнем RB951  ROS7. Нет, все работает, маркировка, шйпинг. Процессора хватает.

В маршрутизаторе есть CPU, который обеспечивает ему (роутеру) некоторую производительность. Фактически Микротик может на самой слабой железке обеспечить весь доступный функционал RouterOS - вопрос лишь в том сколько трафика он сможет пропустить в такой конфигурации. Иначе говоря, производительность процессора конечна и чем больше вы вешаете на него задач тем ниже будет общая производительность конкретной железяки.

Поэтому сравнение с домашней железкой максимально некорректное, думаю количество pps на ваших RB951 и 1036 отличается раз так в сто, а то и больше.

 

Share this post


Link to post
Share on other sites

22 часа назад, XGate сказал:

В маршрутизаторе есть CPU, который обеспечивает ему (роутеру) некоторую производительность. Фактически Микротик может на самой слабой железке обеспечить весь доступный функционал RouterOS - вопрос лишь в том сколько трафика он сможет пропустить в такой конфигурации. Иначе говоря, производительность процессора конечна и чем больше вы вешаете на него задач тем ниже будет общая производительность конкретной железяки.

Поэтому сравнение с домашней железкой максимально некорректное, думаю количество pps на ваших RB951 и 1036 отличается раз так в сто, а то и больше.

 

Спасибо, Кэп, ваш пост очень полезен и познавателен.

(сарказм)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.