URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91647
[ Назад ]

Исходное сообщение
"Шейпинг трафика в Linux CentOS работает неравномерно"

Отправлено InventoRs , 26-Май-11 11:48 
Есть набор правил для шейпинга, пока разбираюсь как в обще работает эта система.
И прошу вашей помощи.
Есть два клиента которые находятся в сети /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


Содержание

Сообщения в этом обсуждении
"Шейпинг трафика в Linux CentOS работает неравномерно"
Отправлено Aquarius , 26-Май-11 12:30 
>[оверквотинг удален]
> 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-сервере?


"Шейпинг трафика в Linux CentOS работает неравномерно"
Отправлено InventoRs , 26-Май-11 12:52 
>[оверквотинг удален]
>> 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-сервере?

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


"Шейпинг трафика в Linux CentOS работает неравномерно"
Отправлено profaner , 26-Май-11 13:20 
Приоритет будет раздаваться web сервером или прокси сервером. Поэтому надо смотреть в их настройках.
Чтобы рулить совсем уж приоритетом iptables или другими демонами, надо отключить приоритетность именно в настройках прокси или веб сервера.


"Шейпинг трафика в Linux CentOS работает неравномерно"
Отправлено LSTemp , 26-Май-11 17:54 
> Тогда вопрос, нормальный вариант внутри класса приоретизировать трафик за счет приоритета
> в фильтрах?

нет.

приоритизация трафика устанавливается именно в классах. и для нормальной приоритезации "внутри класса" - создавай подклассы (а уж в них фильтрами трафик направляй).

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

по простому так:
1) класс - определяет приоитеты трафика (максимальную скорость для него итд)
2) дисциплина - определяет порядок обработки пакетов в классе (то есть какие пакеты пришедшие в класс, выйдут первыми, а какие следом.. для fifo например, первый пакет, который придет - первый и уйдет)
3) фильтр просто анализирует входящий пакет и направляет его в определенный класс.

пакет->фильтр->класс->дисциплина_класса->пакет_передается_выше_по_дереву->...->физический_интерфейс


"Шейпинг трафика в Linux CentOS работает неравномерно"
Отправлено InventoRs , 03-Июн-11 14:38 
Пока перешел на 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мегабит.