LINUX.ORG.RU
ФорумAdmin

Настройка QoS, приоритезация трафика.


1

1

Потихоньку настраиваю QoS на роутере. Более менее разобрался в принципах остались нюансы. Скрипт такой:

int="br0"
DL=10Mbit
tc qdisc del dev $int root > /dev/null 2>&1
tc qdisc add dev $int root handle 1: htb default 30
tc class add dev $int parent 1: classid 1:1 htb rate $DL ceil $DL
tc class add dev $int parent 1:1 classid 1:10 htb rate 5kbit ceil $DL prio 2
tc class add dev $int parent 1:1 classid 1:20 htb rate 5kbit ceil $DL prio 3
tc class add dev $int parent 1:1 classid 1:30 htb rate 3Mbit ceil $DL prio 4
tc qdisc add dev $int parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $int parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $int parent 1:30 handle 30: sfq perturb 10

###HIGH PRIO
#ICMP
tc filter add dev $int parent 1: protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10
#ACK
tc filter add dev $int parent 1: protocol ip prio 1 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
#DNS
tc filter add dev $int parent 1: protocol ip prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:10
#VOIP
tc filter add dev $int parent 1: protocol ip prio 2 u32 match ip tos 0x68 0xff match ip protocol 11 0xff flowid 1:10
tc filter add dev $int parent 1: protocol ip prio 2 u32 match ip tos 0xb8 0xff match ip protocol 11 0xff flowid 1:10
#TOS
tc filter add dev $int parent 1: protocol ip prio 2 u32 match ip tos 0x10 0xff flowid 1:10
#IPTV
tc filter add dev $int parent 1: protocol ip prio 2 u32 match ip protocol 17 0xff match ip dst 224.0.0.0/3 flowid 1:10
#SSH+TELNET
tc filter add dev $int parent 1: protocol ip prio 2 u32 match ip protocol 6 0xff match ip sport 22 0xfffe flowid 1:10
#RDP ????
#SKYPE ????

Вопросы остались как выявить skype трафик, чтобы добавить его в приоритетный список? Еще есть RDP, вроде все просто порт 3389, но на многих серверах он настроен на других портах, может как-то можно по содержимому пакетов через u32 match выявить? Подскажите.

Сейчас подумал, кроме RDP аналогичный вопрос по VNC и Radmin

samson_b
() автор топика

Настройка QoS на офисном роутере особо не даёт эффекта, т.к. фактически полноценно вы можете управлять лишь исходящим трафиком, а на входящий(к вам) лишь косвенное влияние, в основном на tcp-трафик. А обычно в офисах входящий превышает исходящий.

То, что Вы хотите должен делать провайдер(т.е. продавать вам X мбит/с, но внутри это трубы делать приоритезацию). Между прочим, есть провайдеры, которые это делают. Потестите различных, если в вашем офисе есть выбор.

srg666
()

Вопросы остались как выявить skype трафик, чтобы добавить его в приоритетный список? Еще есть RDP, вроде все просто порт 3389, но на многих серверах он настроен на других портах, может как-то можно по содержимому пакетов через u32 match выявить? Подскажите.

Для linux-а нет открытых/бесплатных решений, позволяющих эффективно матчить skype и делать прочую L7-классификацию. На сегодняшний день на рынке есть только платные(и весьма дорогостоящие решения) типа Cisco SCE.

srg666
()
Ответ на: комментарий от gfh

OpenDPI

http://www.opendpi.org/ : OpenDPI is currently not available. For more information please contact sales@ipoque.com.

L7-filter

http://l7-filter.clearfoundation.com/ : The 0.12-beta1 of l7-filter userspace has been released.

Проще говоря, оба проекты мёртвые. А DPI это штука такая, требующих постоянных обновлений, как антивирусы и антиспамы.

srg666
()
Ответ на: комментарий от nerve

http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/L7
http://wiki.mikrotik.com/wiki/Basic_traffic_shaping_based_on_layer-7_protocols

Вы его пробовали? Реально, оно почти ничего не умеет и производительность УГ

http://www.openbsd.org/cgi-bin/man.cgi?query=relayd&sektion=8&format=...

Есть обзор и тесты?

srg666
()
Ответ на: комментарий от srg666

У меня система уже работает, просто приоритезацию нужно вешать на внутренний интерфейс. Получается мы управляем исходящим трафиком к клиентам ;)

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

samson_b
() автор топика
Ответ на: комментарий от vromanov

Ни в коем разе не пытался это утверждать. Просто привёл как пример промышленной DPI-системы.

srg666
()
Ответ на: комментарий от samson_b

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

Это нормально работает для tcp, при небольшом и среднем количестве потоков. Если кто-то балуется udp, то тут как повезёт, зависит от агрессивности вышестоящего протокола.

srg666
()

Насчет скайпа, можно пропускать через проксю, а проксю ставить приоритетом выше. Костыльно, но дешево.

А с RDP да, выявить кажется можно. Или использовать отдельный ip, алиас, для RDP, Radmin, VNC

leader32
()
25 сентября 2013 г.

Сам искал поиском как приоретизировать трафик скайпа и наткнулся на эту тему. Решил задачу следующим образом:
Скайп, собака, не имеет статически определенного порта по которому он коммуникачит с другими клиентами. Но в настройках ему можно указать порт. По сему, единственный выход - сказать всем клиентам установить определенный порт. Тогда маркируем трафик следующим правилом:
$TC filter add dev $IF_INT parent 1: protocol ip prio 19 u32 match ip sport 19000 0xffff flowid 1:3
В итоге все пакеты маркируются и отправляются в определенный подкласс HTB где и устанавливаем ему приоритет выше остального трафика. Может способ и костыльный, но работает.

iron ★★★★★
()
15 ноября 2014 г.

Добрый день. Настраиваю шейпер и приоритезацию трафика. Создал классы по ограничению скорости канала для каждого клиента, а также подклассы с приоритетами. По моим соображениям скрипт должен гарантировать скорость 4950kbit каждому клиенту (за исключением VoIP), а если канал никем не занят, выдавать 35000kbit. По факту максимальная скорость всегда выдается 4950kbit, даже если в канале больше никого нет. ЧЯДНТ?

tc qdisc del dev br-lan root
tc qdisc add dev br-lan root handle 1: htb default 900
tc class add dev br-lan parent 1: classid 1:1 htb rate 100000kbit burst 15k
tc class add dev br-lan parent 1:1 classid 1:10 htb rate 50000kbit ceil 80000kbit burst 15k
tc class add dev br-lan parent 1:1 classid 1:100 htb rate 35000kbit burst 15k
tc class add dev br-lan parent 1:1 classid 1:900 htb rate 56kbit ceil 128kbit

#VoIP prio 0
tc class add dev br-lan parent 1:100 classid 1:101 htb rate 256kbit ceil 1000kbit prio 0

#NatashaW
tc class add dev br-lan parent 1:100 classid 1:200 htb rate 4950kbit ceil 35000kbit
#ICMP prio 1
tc class add dev br-lan parent 1:200 classid 1:201 htb rate 33kbit ceil 35000kbit prio 1
#TCP sport 80 - www trafic prio 2
tc class add dev br-lan parent 1:200 classid 1:202 htb rate 33kbit ceil 35000kbit prio 2
#UDP SSH prio 3
tc class add dev br-lan parent 1:200 classid 1:203 htb rate 33kbit ceil 35000kbit prio 3
#unclassified traffic prio 4
tc class add dev br-lan parent 1:200 classid 1:204 htb rate 33kbit ceil 35000kbit prio 4

#...

#Voip
tc filter add dev br-lan protocol ip parent 1:0 prio 0 u32 match ip dst 192.168.0.100 flowid 1:101

#NatashaW
#ICMP
tc filter add dev br-lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.101 \
match ip protocol 1 0xff flowid 1:201
#WWW
tc filter add dev br-lan protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.101 \
match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:202
#UDP SSH
tc filter add dev br-lan protocol ip parent 1:0 prio 3 u32 match ip dst 192.168.0.101 \
match ip protocol 17 0xff flowid 1:203
#unclassified traffic
tc filter add dev br-lan protocol ip parent 1:0 prio 4 u32 match ip dst 192.168.0.101 flowid 1:204

#...

solaris
()
Ответ на: комментарий от srg666

l7 кернельный вариант давным давно внесен в openwrt.

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

Есть реализация на базе nDPI (ntop.org). Обсуждение применения в nDPI как замена l7filter

подробный рецепт http://a7lanov.blogspot.ru/2014/10/ubuntu-imq-ndpi-3.html

vel ★★★★★
()
Ответ на: комментарий от leader32

Не городя страшные прокси можно думаю вот это http://www.delegate.org/delegate/ Ну и шейпить уже можно придумать как. Очень полезная и удобная вестч.

hbars ★★★★★
()
Последнее исправление: hbars (всего исправлений: 2)
Ответ на: комментарий от iron

Сам искал поиском как приоретизировать трафик скайпа и наткнулся на эту тему.

Было бы чего «искать». cgroups в помощь. Только *опять*, всё управление исключительно исходящим трафиком.

Macil ★★★★★
()
Ответ на: комментарий от leader32

Прикольно еще то что японец столько времени проект не бросает.
Молодца.

hbars ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.