LinuxForum.Fans
Тема

HTB нарезка канала и проблемы скорости

Автор: Melan 12 сообщений 3263 просмотров
#167311

Все доброго времени суток. Прошу помощи в решении следующей проблемы:
Есть Debian 6.0.1 c ядром

text

Linux gateway 2.6.32-core2 #1 SMP Tue May 31 19:49:51 EEST 2011 i686 GNU/Linux

Пересобрал его с kernel_hz=1000

Нарезал правила:

text

# Удаляем все обработчики на интерфейсе
/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мегабит.

text
Every 2.0s: tc -s class show dev eth0.1000                                                                                           Fri Jun  3 15:26:56 2011

class htb 1:110 parent 1:10 leaf 10: prio 0 rate 1000Kbit ceil 15000Kbit burst 1600b cburst 1597b Sent 18174978 bytes 50218 pkt (dropped 0, overlimits 0 requeues 0) rate 9880bit 4pps backlog 0b 0p requeues 0 lended: 40400 borrowed: 9818 giants: 0 tokens: 142672 ctokens: 12532

class htb 1:10 parent 1:1 rate 15000Kbit ceil 15000Kbit burst 1597b cburst 1597b Sent 9458184350 bytes 9552093 pkt (dropped 0, overlimits 0 requeues 0) rate 6336Kbit 921pps backlog 0b 0p requeues 0 lended: 6652898 borrowed: 0 giants: 0 tokens: 1000 ctokens: 1000

class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 9458184350 bytes 9552093 pkt (dropped 0, overlimits 0 requeues 0) rate 6336Kbit 921pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 157 ctokens: 157

class htb 1:130 parent 1:10 leaf 30: prio 3 rate 1000Kbit ceil 3000Kbit burst 1600b cburst 1599b Sent 1142883465 bytes 1013820 pkt (dropped 1124, overlimits 0 requeues 0) rate 527664bit 70pps backlog 0b 0p requeues 0 lended: 492706 borrowed: 521114 giants: 0 tokens: 191000 ctokens: 63656

class htb 1:120 parent 1:10 leaf 20: prio 2 rate 1000Kbit ceil 8000Kbit burst 1600b cburst 1600b Sent 547084685 bytes 431791 pkt (dropped 0, overlimits 0 requeues 0) rate 20072bit 5pps backlog 0b 0p requeues 0 lended: 174148 borrowed: 257643 giants: 0 tokens: 132000 ctokens: 16500

class htb 1:150 parent 1:10 leaf 50: prio 7 rate 1000Kbit ceil 8000Kbit burst 1600b cburst 1600b Sent 253745505 bytes 328353 pkt (dropped 0, overlimits 0 requeues 0) rate 23120bit 22pps backlog 0b 0p requeues 0 lended: 163054 borrowed: 165299 giants: 0 tokens: 184000 ctokens: 23000

class htb 1:140 parent 1:10 leaf 40: prio 4 rate 1000Kbit ceil 10000Kbit burst 1600b cburst 1600b Sent 5844845636 bytes 5550871 pkt (dropped 20, overlimits 0 requeues 0) rate 5260Kbit 677pps backlog 0b 3p requeues 0 lended: 879962 borrowed: 4670906 giants: 0 tokens: -7917 ctokens: -18450

class htb 1:160 parent 1:10 leaf 60: prio 7 rate 1000Kbit ceil 8000Kbit burst 1600b cburst 1600b Sent 1651585781 bytes 2177043 pkt (dropped 0, overlimits 0 requeues 0) rate 491144bit 142pps backlog 0b 0p requeues 0 lended: 1148925 borrowed: 1028118 giants: 0 tokens: 8460 ctokens: 1460

class sfq 40:1c5 parent 40: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 allot 4744

class sfq 40:232 parent 40: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0

#167318

если торрентом качает попробуйте уменьшить ему

htb rate 100Kbit ceil 10Mbit prio 4

И ещё можно попробовать подставить burst

htb rate 100Kbit ceil 10Mbit burst 15k prio 4

#167324

Сделал, эффект тот же, этот чел забивает весь канал и все курят в сторонке.

#167326

выше 10 мб?
проверил ваш скрипт работает всё исправно.

#167328

150 класс, не выше, но все равно ложит всех

text
Every 2.0s: tc -s class show dev eth0.1000                                                                                           Fri Jun  3 16:21:56 2011

class htb 1:110 parent 1:10 leaf 10: prio 0 rate 1000Kbit ceil 15000Kbit burst 12Kb cburst 1597b Sent 79910 bytes 219 pkt (dropped 0, overlimits 0 requeues 0) rate 10288bit 4pps backlog 0b 0p requeues 0 lended: 219 borrowed: 0 giants: 0 tokens: 1488000 ctokens: 10141

class htb 1:10 parent 1:1 rate 15000Kbit ceil 15000Kbit burst 12Kb cburst 1597b Sent 83312625 bytes 72047 pkt (dropped 0, overlimits 0 requeues 0) rate 11711Kbit 1257pps backlog 0b 0p requeues 0 lended: 57820 borrowed: 0 giants: 0 tokens: 84766 ctokens: -4296

class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 83312625 bytes 72047 pkt (dropped 0, overlimits 0 requeues 0) rate 11711Kbit 1257pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 157 ctokens: 157

class htb 1:130 parent 1:10 leaf 30: prio 3 rate 1000Kbit ceil 3000Kbit burst 12Kb cburst 1599b Sent 6205194 bytes 6054 pkt (dropped 0, overlimits 0 requeues 0) rate 1197Kbit 133pps backlog 0b 64p requeues 0 lended: 3866 borrowed: 2124 giants: 0 tokens: -112533 ctokens: -59524

class htb 1:120 parent 1:10 leaf 20: prio 2 rate 1000Kbit ceil 8000Kbit burst 12Kb cburst 1600b Sent 165197 bytes 376 pkt (dropped 0, overlimits 0 requeues 0) rate 36296bit 8pps backlog 0b 0p requeues 0 lended: 370 borrowed: 6 giants: 0 tokens: 1527000 ctokens: 23875

class htb 1:150 parent 1:10 leaf 50: prio 7 rate 100000bit ceil 10000Kbit burst 12Kb cburst 1600b Sent 72208188 bytes 56257 pkt (dropped 43, overlimits 0 requeues 0) rate 9736Kbit 943pps backlog 0b 101p requeues 0 lended: 585 borrowed: 55571 giants: 0 tokens: -1372950 ctokens: -18447

class htb 1:140 parent 1:10 leaf 40: prio 4 rate 1000Kbit ceil 10000Kbit burst 12Kb cburst 1600b Sent 40595 bytes 628 pkt (dropped 0, overlimits 0 requeues 0) rate 5656bit 11pps backlog 0b 0p requeues 0 lended: 628 borrowed: 0 giants: 0 tokens: 1527000 ctokens: 19110

class htb 1:160 parent 1:10 leaf 60: prio 7 rate 1000Kbit ceil 8000Kbit burst 12Kb cburst 1600b Sent 4880490 bytes 8678 pkt (dropped 0, overlimits 0 requeues 0) rate 739000bit 159pps backlog 0b 0p requeues 0 lended: 8559 borrowed: 119 giants: 0 tokens: 1116115 ctokens: 23875

class sfq 30:60 parent 30: (dropped 0, overlimits 0 requeues 0) backlog 0b 2p requeues 0 allot -384

class sfq 30:134 parent 30: (dropped 0, overlimits 0 requeues 0) backlog 0b 3p requeues 0

#167329

Как проверяете что ложит?

Обьсните как понимать ложит?

#167330

Для начала смотрю по скорости открытия страничек в браузере когда этот клиент качает.
Странички открываются через 120 класс, так вот фишки уже 10 минуту пытаются загрузится.
Этот форум грузится по 6 минут, хотя там класс приоритетный.

#167331

Чем качаете?

хз честно ваше схему но попробуйте filter прикрепить на 1:1

/sbin/tc filter add dev $dev_lan protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.5.129 flowid 1:140

#167333

Проблема в том что если креплю фильтр в какое-то другое место кроме 1:0 то он перестает работать

#167334

Мысли кончились как вариант попробуйте фильтры добавить для 80 и 3128

Типо такого
/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

#168411

В общем пока кое как разгреб, стабильность нарезки есть только при больших файлах, а вот при маленьких объемах сильно тупит.
Вопрос такой, в каких случаях применяется
protocol ip
и
protocol 802.1q

на сколько понимаю, первый это всегда кроме когда надо шейпить отдельно vlan проходящие через сетевую карту, но у меня шейпинг идет непосредственно в самом vlan, по этому тут применяется первый вариант, так ведь?

#168546

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

Войдите или зарегистрируйтесь, чтобы ответить.