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

Приоритезация и разграничение трафика

Добрый день.

 

Есть офис, канал 10мб\с, работает 15 человек, в офисе стоит микротик  RB2011UIAS-2HND-IN 

Есть сервер в цоде с RouterOS в виртуалке , канал 100мб\с

Между ними ipsec site-to-site

 

В офисе понятное дело, сотрудники что-то качают из интернетов, периодически забивают канал, видимо нынче 10мб\с - это архаизм, но так живём, что поделать.

 

Подскажите, можно ли выделить для трафика ipsec гарантированную скорость 3-4мб\с и приоритет по трафику, а всему остальному трафику "во вне" сделать ограничение в 6-7мб\с ?

 

Заранее благодарен.

Share this post


Link to post
Share on other sites

Решил начать с QoS, я так понимаю сначала нужно маркировать трафик в mangle

потом в queue задать приоритет для маркированного трафика

 

Нашёл несколько статей:

https://wiki.mikrotik.com/wiki/Traffic_Priortization,_RouterOS_QoS_Implemetation

https://habr.com/ru/post/330362/

 

Только в wiki пакеты маркируются в форварде а на хабре в прероутинге, я так понимаю логичнее это делать в пре-роутинге

 

Потом задам для dst.ip определенную ширину канала

Share this post


Link to post
Share on other sites
51 минуту назад, r1sh сказал:

Только в wiki пакеты маркируются в форварде а на хабре в прероутинге, я так понимаю логичнее это делать в пре-роутинге

А вы и так и так попробуйте, для интереса. Я думаю, это правило одинаково сработает в обоих случаях.

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

Share this post


Link to post
Share on other sites
16 часов назад, maxkst сказал:

А вы и так и так попробуйте, для интереса. Я думаю, это правило одинаково сработает в обоих случаях.

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

благодарю за ответ) еще пока не понимаю как гарантированно зарезервировать пропускную способность для трафика по VPN.

 

Нашёл статью https://wiki.mikrotik.com/wiki/Tips_and_Tricks_for_Beginners_and_Experienced_Users_of_RouterOS

 

Можно ли это сделать таким способом?

 

/queue simple
add max-limit=20M/20M name=GLOBAL target=192.168.88.0/24
add dst=192.168.10.0/24 max-limit=10M/10M name=child1 parent=GLOBAL target=192.168.88.0/24
add name=child2 parent=GLOBAL target=192.168.88.0/24

 

Я так понимаю, сначала задаётся общий канал

потом задаётся канал только для трафика от 192.168.88.0/24 до 192.168.10.0/24

потом задаётся "остальной" канал для 192.168.88.0/24

Edited by r1sh

Share this post


Link to post
Share on other sites

У меня эт оне заработало, весь трафик шёл через child1, через child2 ничего не шло, что странно.

 

Сработало вот это, пока смотрю насколько корректно:

 

/queue simple

add dst=192.168.10.0/24 limit-at=5M/5M max-limit=20M/20M name=SERVER target=192.168.88.0/24
add max-limit=20M/20M name=TOTAL target=192.168.88.0/24

 

Я правильно понимаю, что limit-at - означает гарантированную минимальную скорость трафика несмотря на занятость канала? а max-limit - верхний порг
 

Edited by r1sh

Share this post


Link to post
Share on other sites

В итоге сделал с родителем:

 

add max-limit=20M/20M name=PARENT target=192.168.88.0/24
add dst=192.168.10.0/24 limit-at=10M/10M max-limit=20M/20M name=to_servers parent=PARENT target=192.168.88.0/24
add max-limit=20M/20M name=to_all parent=PARENT queue=pcq-burst-upload/pcq-burst-download target=192.168.88.0/24

 

Share this post


Link to post
Share on other sites

Теперь дошёл до QoS.

Сначала я маркирую подключения, потом маркирую пакеты. И по маркировке пакетов уже выставляю и приоритет:

/ip firewall mangle

add action=mark-connection chain=prerouting comment="Mark To Server" dst-address-list=SERVERS dst-port=1541,1560-1590,3389,9100,139,445,22 new-connection-mark=servers_1C passthrough=yes protocol=tcp src-address=192.168.33.0/24 tcp-flags=""
add action=mark-connection chain=prerouting dst-address-list=SERVERS dst-port=1541,1560-1590 new-connection-mark=servers_1C passthrough=yes protocol=udp src-address=192.168.33.0/24
add action=mark-packet chain=prerouting connection-mark=servers_1C new-packet-mark=servers_1C_pck passthrough=yes

/queue simple
add max-limit=10M/10M name=PARENT target=192.168.33.0/24
add name=Mark_Servers_1C packet-marks=servers_1C_pck parent=PARENT priority=2/2 target=192.168.33.0/2
add dst=192.168.10.0/24 limit-at=5M/5M max-limit=10M/10M name=to_servers parent=PARENT target=192.168.33.0/24
add max-limit=7M/7M name=to_all parent=PARENT queue=pcq-burst-upload/pcq-burst-download target=192.168.33.0/24

Но при этом в графе Traffic в свойствах очереди Mark_Servers_1C нет ни одного пакета.

Что я делаю не так?)

Share this post


Link to post
Share on other sites

а, всё разобрался)

 

Share this post


Link to post
Share on other sites

@r1sh остался последний штрих:

 

надо было так: aaaaaaaa сделал все так: bbbbbbbb, и все работает как часы, забирайте кому надо :-)

Share this post


Link to post
Share on other sites
14 часов назад, maxkst сказал:

@r1sh остался последний штрих:

 

надо было так: aaaaaaaa сделал все так: bbbbbbbb, и все работает как часы, забирайте кому надо :-)

Разобраться-разобрался но есть проблема))

 

 

Я в итоге пришёл к маркировке пакетов в Mangle и использованию tree.

 

Но я столкнулся со следующей проблемой:

 

Вmangle я маркирую исходящий трафик на 80 и 443 порт:

add action=mark-connection chain=prerouting comment="Mark Web browser" dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=tcp tcp-flags=""
add action=mark-connection chain=prerouting dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=udp tcp-flags=""
add action=mark-connection chain=forward dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=tcp tcp-flags=""
add action=mark-connection chain=forward dst-port=80,443 new-connection-mark=outside_web passthrough=yes protocol=udp tcp-flags=""
add action=mark-packet chain=prerouting connection-mark=outside_web new-packet-mark=outside_web_pck passthrough=no

 

При этом я решил отловить трафик, который никак не промаркирован:

 

add action=mark-packet chain=forward comment="All other" log=yes log-prefix=UNMARKED new-packet-mark=no_mark out-interface=ether1 packet-mark=no-mark passthrough=no src-address=192.168.33.0/24

 

В tree я создал родителя и два правила для трафика 80,443 и unmarked:

 

/queue tree
add max-limit=10M name="Total - rx" parent=global
add name="Browser - rx" packet-mark=outside_web_pck parent="Total - rx"
add name="Umarked - rx" packet-mark=no-mark parent="Total - rx"

 

Но при этом я вижу в логе что пакеты на 443 порт не промаркированы:

 

11:01:00 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac ac:9e:17:2f:83:18, proto TCP (ACK,FIN), 192.168.33.45:63200->78.46.57.120:443, len 40 
11:01:00 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac ac:9e:17:2f:83:18, proto TCP (ACK,RST), 192.168.33.45:63200->78.46.57.120:443, len 40 
11:01:01 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac 3c:2c:30:9e:e8:49, proto TCP (ACK,RST), 192.168.33.30:51957->138.201.36.251:80, len 40 
11:01:01 firewall,info UNMARKED forward: in:bridge out:ether1, src-mac 3c:2c:30:9e:e8:49, proto TCP (ACK,RST), 192.168.33.30:51968->82.202.213.163:80, len 40 


 

 

Подскажите, почему?

Edited by r1sh

Share this post


Link to post
Share on other sites

Обратил внимание, что пакеты TCP SYN маркируются а пакеты TCP с двумя флагами: ACK и FIN или ACK и RST.

Edited by r1sh

Share this post


Link to post
Share on other sites

А если в логирующее правило добавить "connection-state=!invalid", будут пакеты попадать под него ?

Share this post


Link to post
Share on other sites
2 часа назад, McSea сказал:

А если в логирующее правило добавить "connection-state=!invalid", будут пакеты попадать под него ?

О, спасибо за поправку, теперь пакеты не попадают под него:)

 

Вернее как, в ветке forward не попадают а в ветке prerouting попадают:

 

16:25:49 firewall,info UNMARKED prerouting: in:bridge out:(unknown 0), src-mac e0:d5:5e:4c:70:5e, proto TCP (ACK), 192.168.33.39:60923->151.236.74.7:443, NAT (192.168.33.39:60923->213.33.252.110:60923)->151.236.74.7:443, len 40 
16:25:49 firewall,info UNMARKED prerouting: in:bridge out:(unknown 0), src-mac e0:d5:5e:4c:70:5e, proto TCP (ACK), 192.168.33.39:60923->151.236.74.7:443, NAT (192.168.33.39:60923->213.33.252.110:60923)->151.236.74.7:443, len 40 

 

Я собственно почему начал исследовать это правило: я создал дерево, ограничил ширину канала для unmarked трафика до 1мб\с и мне начали жаловаться, что интернет тормозит, браузер сайты не открывает и тд и тп.  При этом обьём данных, прошедший по маркировке Browsing - 2.3Гб, а по unmarked - 2.6Гб за сегодняшний день.

 

 

 

 

2019-03-07_15-58-44.png

Edited by r1sh

Share this post


Link to post
Share on other sites

@r1sh 

 

А fasttrack у вас включен ?  

Share this post


Link to post
Share on other sites
В 07.03.2019 в 17:28, McSea сказал:

@r1sh 

 

А fasttrack у вас включен ?  

вот это первое, что я проверил - нет, выключен

 

2019-03-11_09-38-15.png

Edited by r1sh

Share this post


Link to post
Share on other sites

Если вы хотите ограничить интернет для абонентов на 6-7, так сделайте одно правило тип PCQ с большим буфером, и укажите общее ограничение 6-7. Тогда остальные 4-3 от канала останутся на туннель. Вот и все дела. Пользователи внутри своего ограничения сами равномерно распределят трафик. Но нужно понимать, что есть у вас входящий канал 10М, то потребление 6 + 4 это будет уже больше чем 10М, и тогда нужно делать ограничение для пользователей в виде 5М, если туннель потребляет 4М, что бы со стороны провайдера не попасть под его шейпер.

Share this post


Link to post
Share on other sites
20 минут назад, Saab95 сказал:

Если вы хотите ограничить интернет для абонентов на 6-7, так сделайте одно правило тип PCQ с большим буфером, и укажите общее ограничение 6-7. Тогда остальные 4-3 от канала останутся на туннель. Вот и все дела. Пользователи внутри своего ограничения сами равномерно распределят трафик. Но нужно понимать, что есть у вас входящий канал 10М, то потребление 6 + 4 это будет уже больше чем 10М, и тогда нужно делать ограничение для пользователей в виде 5М, если туннель потребляет 4М, что бы со стороны провайдера не попасть под его шейпер.

пользователей 20шт, в дальнейшем будет 30-35, понятное дело под 30-35 юзеров будем расширять канал, но проблема всё равно останется.

 

PCQ я изначально делал, но это не работает, потому что когда два пользователя, например один пользователь занял 5-6мб\с, при этом кто-то звонит по IP телефонии и кто=то другой работает в 1С, еще директор запустил программу просмотра Видеонаблюдения с камер кто-то начал скачивать документацию под 200-300 метров с сервера по vpn туннелю и у пользователей начинаются "подтормаживания" как они выражаются. Я предположил что это связано с приоритетом обработки трафика. Чтобы торренты и браузеры обрабатывались в последнюю очередь а звук и rdp трафик в первую, после рабочего трафика типа icmp, snmp и winbox с ssh.

 

Канал давно бы расширили, но в БЦ провайдер-монополист с конскими ценами на опту - 15к за 10мб\с

 

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

 

Share this post


Link to post
Share on other sites

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

 

1. Вася качает торрент на скорости 10М.

2. Петя открывает сайт, нажав на ссылку, при этом загрузка сайта потребует 3М скорости.

 

Вася как качал, так и качает на 10М, а Пети выделяется поток внутри общего ограничения и в его сторону начинают идти данные. Через 5 секунд Вася будет качать торренты уже на скорости 7М, а Петя загружать сайт на скорости 3М.

 

То есть любое действие при ограничении PCQ будет требовать 1-2-3 секунды на раскачку, пока потоки данных не устаканятся. А приоритеты по портам и протоколам сейчас не очень работают, т.к. все уже в курсе про приоритеты и их приложения лезут там, где больше скорость.

Share this post


Link to post
Share on other sites
1 час назад, Saab95 сказал:

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

 

1. Вася качает торрент на скорости 10М.

2. Петя открывает сайт, нажав на ссылку, при этом загрузка сайта потребует 3М скорости.

 

Вася как качал, так и качает на 10М, а Пети выделяется поток внутри общего ограничения и в его сторону начинают идти данные. Через 5 секунд Вася будет качать торренты уже на скорости 7М, а Петя загружать сайт на скорости 3М.

 

То есть любое действие при ограничении PCQ будет требовать 1-2-3 секунды на раскачку, пока потоки данных не устаканятся. А приоритеты по портам и протоколам сейчас не очень работают, т.к. все уже в курсе про приоритеты и их приложения лезут там, где больше скорость.

 

Звучит здраво, подскажите где можно почитать про грамотную реализацию PCQ?

 

А если например 10 пользователей работают по Rdp и качают какие-то легкие Excel файлы на шару, допустим им нужно на всех вместе 4-5мб\с, плюс полоса под voip, допустим 0.5Мб\с , стабильно 1мб\с смотрит директор видеорегистратор а все остальное можно делить между торрентами и браузерами сотрудников.

 

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

Share this post


Link to post
Share on other sites

@r1sh 

 

Вы в правиле отлова немаркированных пакетов опять маркировку делаете, зачем ? Есть action=log для этого.

Сделал такие три правила у себя, все пакеты маркируются, лог пустой.

 

add action=mark-connection chain=forward connection-mark=no-mark dst-port=80,8080,443 new-connection-mark=out_web out-interface=pppoe passthrough=no protocol=tcp
add action=mark-packet chain=forward connection-mark=out_web new-packet-mark=out_web out-interface=pppoe passthrough=yes
add action=log chain=forward connection-state=!invalid dst-port=80,8080,443 log=yes log-prefix=OUT_WEB_UN out-interface=pppoe packet-mark=no-mark protocol=tcp

Без условия !invalid будут попадать пакеты, которые не относятся ни к какому connection, что логично, т.к. маркировка пакетов идет по connection, таких пакетов не должно быть много.

Edited by McSea

Share this post


Link to post
Share on other sites

А у рдп или телефонии нет некого внешнего IP, на который соединения устанавливаются? Тогда можно не порты и типы вылавливать, а соединения по этому направлению.

Share this post


Link to post
Share on other sites
В 12.03.2019 в 10:13, Saab95 сказал:

А у рдп или телефонии нет некого внешнего IP, на который соединения устанавливаются? Тогда можно не порты и типы вылавливать, а соединения по этому направлению.

у рдп есть локальный IP, между офисами ipsec туннели

 

телефонию телефонисты тоже завернули через ipsec хотя сервак смотрит наружу с белым IP x_X

Share this post


Link to post
Share on other sites

всем спасибо!) с проблемой разобрался) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this