Есть набор правил для шейпинга, пока разбираюсь как в обще работает эта система.
И прошу вашей помощи.
Есть два клиента которые находятся в сети /16, один качает с одного сервера по 80 порту файл, другой с другого компьютера качает по 21 порту этот же файл с того же сервера.
Как итог: тот кто тянет по FTP имеет скорость 800КБ в секунду, тот кто тянет по 80 тот тянет по 160КБ.
Хотя приоритет должен отдаваться тому кто тянет через 80 порт, что не так? и как это устранить?# Корневой обработчик очереди на интерфейсе
/sbin/tc qdisc add dev $dev_lan root handle 1: htb default 900# Дочерний класс с общей шириной канала
/sbin/tc class add dev $dev_lan parent 1: classid 1:1 htb rate 100Mbit burst 15k# Дочерний класс с общей скоростью доступа в интернет
/sbin/tc class add dev $dev_lan parent 1:1 classid 1:100 htb rate 20Mbit burst 15k
#/sbin/tc class add dev $dev_lan parent 1:1 classid 1:110 htb rate 20Mbit burst 15k# Устанавливаем SFQ дисциплину для класа 1:100
/sbin/tc qdisc add dev $dev_lan parent 1:100 handle 10: sfq perturb 10### SSH трафик
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:100/sbin/tc filter add dev $dev_lan parent 1:0 prio 1 protocol ip u32 match ip protocol 6 0xff match ip dport 3389 0xffff flowid 1:100
/sbin/tc filter add dev $dev_lan parent 1:0 prio 1 protocol ip u32 match ip protocol 6 0xff match ip sport 3389 0xffff flowid 1:100### WWW трафик пришедший с tcp порта 80 отправляется в класс 100
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 3 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:100### Трафик не соответсвующий не одному условию имеет низший приоретет в очереди
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.0/16 flowid 1:100
Очень признателен за помощь, так как только осваиваю азы шейпинга под Linux
>[оверквотинг удален]
> match ip protocol 6 0xff match ip sport 3389 0xffff flowid
> 1:100
> ### WWW трафик пришедший с tcp порта 80 отправляется в класс 100
> /sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 3 u32
> match ip protocol 6 0xff match ip sport 80 0xffff flowid
> 1:100
> ### Трафик не соответсвующий не одному условию имеет низший приоретет в очереди
> /sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 2 u32
> match ip dst 192.168.0.0/16 flowid 1:100
> Очень признателен за помощь, так как только осваиваю азы шейпинга под Linuxможет быть дело не в шейпинге, а, к примеру, в web-сервере?
>[оверквотинг удален]
>> 1:100
>> ### WWW трафик пришедший с tcp порта 80 отправляется в класс 100
>> /sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 3 u32
>> match ip protocol 6 0xff match ip sport 80 0xffff flowid
>> 1:100
>> ### Трафик не соответсвующий не одному условию имеет низший приоретет в очереди
>> /sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 2 u32
>> match ip dst 192.168.0.0/16 flowid 1:100
>> Очень признателен за помощь, так как только осваиваю азы шейпинга под Linux
> может быть дело не в шейпинге, а, к примеру, в web-сервере?Тогда вопрос, нормальный вариант внутри класса приоретизировать трафик за счет приоритета в фильтрах?
Приоритет будет раздаваться web сервером или прокси сервером. Поэтому надо смотреть в их настройках.
Чтобы рулить совсем уж приоритетом iptables или другими демонами, надо отключить приоритетность именно в настройках прокси или веб сервера.
> Тогда вопрос, нормальный вариант внутри класса приоретизировать трафик за счет приоритета
> в фильтрах?нет.
приоритизация трафика устанавливается именно в классах. и для нормальной приоритезации "внутри класса" - создавай подклассы (а уж в них фильтрами трафик направляй).
приоритет фильтров указывает только порядок их применения к пакету. первый фильтр, который выполнится - ну .. тот и выполнится (и пошлет трафик в соответствующий класс) - остальные в фильтры (с более низким приоритетом) просто окажутся в пролете.
по простому так:
1) класс - определяет приоитеты трафика (максимальную скорость для него итд)
2) дисциплина - определяет порядок обработки пакетов в классе (то есть какие пакеты пришедшие в класс, выйдут первыми, а какие следом.. для fifo например, первый пакет, который придет - первый и уйдет)
3) фильтр просто анализирует входящий пакет и направляет его в определенный класс.пакет->фильтр->класс->дисциплина_класса->пакет_передается_выше_по_дереву->...->физический_интерфейс
Пока перешел на Debian 6.0.1 c ядром
Linux gateway 2.6.32-core2 #1 SMP Tue May 31 19:49:51 EEST 2011 i686 GNU/Linux
Пересобрал его с kernel_hz=1000Нарезал правила:
# Удаляем все обработчики на интерфейсе
/sbin/tc qdisc del dev $dev_lan root
#/sbin/tc qdisc del dev $dev_lan ingress# Корневой обработчик очереди на интерфейсе
/sbin/tc qdisc add dev $dev_lan root handle 1: htb default 900 r2q 100# Дочерний класс с общей шириной канала
/sbin/tc class add dev $dev_lan parent 1: classid 1:1 htb rate 100Mbit### Клсс интернета
/sbin/tc class add dev $dev_lan parent 1:1 classid 1:10 htb rate 15Mbit# Дочерний класс с общей скоростью доступа в интернет
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:110 htb rate 1Mbit ceil 15Mbit prio 0 ### SSH RDP
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:120 htb rate 1Mbit ceil 8Mbit prio 2 ### UKRTELECOM PROXY
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:130 htb rate 1Mbit ceil 3Mbit prio 3 ### PROXY SERVER
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:140 htb rate 1Mbit ceil 10Mbit prio 4 ### ADMIN2
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:150 htb rate 1Mbit ceil 8Mbit prio 7 ### ATS1 ITAPP4
/sbin/tc class add dev $dev_lan parent 1:10 classid 1:160 htb rate 1Mbit ceil 8Mbit prio 7 ### LOCALNETWORK# Устанавливаем SFQ дисциплину для класа
/sbin/tc qdisc add dev $dev_lan parent 1:110 handle 10: sfq perturb 10
/sbin/tc qdisc add dev $dev_lan parent 1:120 handle 20: sfq perturb 10
/sbin/tc qdisc add dev $dev_lan parent 1:130 handle 30: sfq perturb 10
/sbin/tc qdisc add dev $dev_lan parent 1:140 handle 40: sfq perturb 10
/sbin/tc qdisc add dev $dev_lan parent 1:150 handle 50: sfq perturb 10
/sbin/tc qdisc add dev $dev_lan parent 1:160 handle 60: sfq perturb 10### SSH трафик
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:110
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:110
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 2222 0xffff flowid 1:110
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 2222 0xffff flowid 1:110
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip sport 3389 0xffff flowid 1:110
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip protocol 6 0xff match ip dport 3389 0xffff flowid 1:110### Прокси сервера имеют приоретет выше чем SSH и RDP но ниже всех других зверей
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.117/32 flowid 1:120### Дочерний прокси
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.5/32 flowid 1:130
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.1.7/32 flowid 1:130### ADMIN2 самое наглое создание
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.5.129/32 flowid 1:140#### Класс найнизшего приоретета для торентов
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.10/32 flowid 1:150
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.5.87/32 flowid 1:150# Вся остальная подсеть идет суюда лесом
/sbin/tc filter add dev $dev_lan protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.0/16 flowid 1:160Но проблема в том что когда качает 192.168.5.129, class 140, все остальные нервно курят в сторонке.
Поправьте пожалуйста, как будет правильно.
Общий канал порядка 15мегабит.