tc, не понятная проблема

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dragomir
проходил мимо
Сообщения: 1
Зарегистрирован: 2009-10-21 14:52:30

tc, не понятная проблема

Непрочитанное сообщение dragomir » 2009-10-21 16:17:21

Здравствуйте уважаемые. Ни как не получается разобраться самому, помогите если сможете.
Проблема заключается в следующем:
Есть интерфейс ppp0 например.
Применяю следующие правила

Код: Выделить всё

PPP_ID=ppp1
tc qdisc add dev $PPP_ID root handle 1: htb  r2q 70
tc class add dev $PPP_ID parent 1: classid 1:1 htb rate 100mbit burst 20k

tc class add dev $PPP_ID parent 1:1 classid 1:3218 htb rate 580kbit burst 20k prio 1 quantum 4096
tc class add dev $PPP_ID parent 1:1 classid 1:30 htb rate 50mbit ceil 80mbit burst 20k prio 4

tc qdisc add dev $PPP_ID parent 1:30 handle 30 sfq perturb 10
tc qdisc add dev $PPP_ID parent 1:3218 handle 3218 sfq perturb 10

tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 85.91.192.0/20 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 217.25.80.0/22 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 85.143.0.0/20 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 92.246.128.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 212.67.0.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 217.23.16.0/20 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 95.37.0.0/17 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 93.120.128.0/17 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 79.126.0.0/17 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 213.177.96.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 89.109.0.0/18 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 82.208.64.0/18 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 217.118.93.0/24 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 92.242.64.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 89.189.0.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 195.98.32.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 212.92.128.0/18 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 62.220.32.0/20 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 194.190.176.0/20 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 195.122.224.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 91.194.192.0/23 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 217.18.52.0/23 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 81.19.130.0/24 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 81.19.128.0/23 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 193.125.70.0/23 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 213.190.224.0/19 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 78.40.184.0/21 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 89.28.199.0/24 flowid 1:30
tc filter add dev $PPP_ID parent 1:0 protocol ip prio 10 u32 match ip src 94.25.78.0/24 flowid 1:30

tc filter add dev $PPP_ID parent 1:0 protocol ip prio 50 u32 match ip src 0.0.0.0/0 flowid 1:3218
тут же приведу результаты с интерфейса

Код: Выделить всё

# tc q s dev ppp0
qdisc htb 1: root r2q 70 default 0 direct_packets_stat 0
qdisc sfq 30: parent 1:30 limit 127p quantum 1488b perturb 10sec
qdisc sfq 3218: parent 1:3218 limit 127p quantum 1488b perturb 10sec

# tc c s dev ppp0
class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 20462b cburst 1600b
class htb 1:30 parent 1:1 leaf 30: prio 4 rate 50000Kbit ceil 80000Kbit burst 20Kb cburst 1590b
class htb 1:3218 parent 1:1 leaf 3218: prio 3 rate 580000bit ceil 580000bit burst 20Kb cburst 1599b

# tc f s dev ppp0
filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:30
  match 555bc000/fffff000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:30
  match d9195000/fffffc00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::802 order 2050 key ht 800 bkt 0 flowid 1:30
  match 558f0000/fffff000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::803 order 2051 key ht 800 bkt 0 flowid 1:30
  match 5cf68000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::804 order 2052 key ht 800 bkt 0 flowid 1:30
  match d4430000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::805 order 2053 key ht 800 bkt 0 flowid 1:30
  match d9171000/fffff000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::806 order 2054 key ht 800 bkt 0 flowid 1:30
  match 5f250000/ffff8000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::807 order 2055 key ht 800 bkt 0 flowid 1:30
  match 5d788000/ffff8000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::808 order 2056 key ht 800 bkt 0 flowid 1:30
  match 4f7e0000/ffff8000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::809 order 2057 key ht 800 bkt 0 flowid 1:30
  match d5b16000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80a order 2058 key ht 800 bkt 0 flowid 1:30
  match 596d0000/ffffc000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80b order 2059 key ht 800 bkt 0 flowid 1:30
  match 52d04000/ffffc000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80c order 2060 key ht 800 bkt 0 flowid 1:30
  match d9765d00/ffffff00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80d order 2061 key ht 800 bkt 0 flowid 1:30
  match 5cf24000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80e order 2062 key ht 800 bkt 0 flowid 1:30
  match 59bd0000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::80f order 2063 key ht 800 bkt 0 flowid 1:30
  match c3622000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::810 order 2064 key ht 800 bkt 0 flowid 1:30
  match d45c8000/ffffc000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::811 order 2065 key ht 800 bkt 0 flowid 1:30
  match 3edc2000/fffff000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::812 order 2066 key ht 800 bkt 0 flowid 1:30
  match c2beb000/fffff000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::813 order 2067 key ht 800 bkt 0 flowid 1:30
  match c37ae000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::814 order 2068 key ht 800 bkt 0 flowid 1:30
  match 5bc2c000/fffffe00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::815 order 2069 key ht 800 bkt 0 flowid 1:30
  match d9123400/fffffe00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::816 order 2070 key ht 800 bkt 0 flowid 1:30
  match 51138200/ffffff00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::817 order 2071 key ht 800 bkt 0 flowid 1:30
  match 51138000/fffffe00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::818 order 2072 key ht 800 bkt 0 flowid 1:30
  match c17d4600/fffffe00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::819 order 2073 key ht 800 bkt 0 flowid 1:30
  match d5bee000/ffffe000 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::81a order 2074 key ht 800 bkt 0 flowid 1:30
  match 4e28b800/fffff800 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::81b order 2075 key ht 800 bkt 0 flowid 1:30
  match 591cc700/ffffff00 at 12
filter parent 1: protocol ip pref 10 u32 fh 800::81c order 2076 key ht 800 bkt 0 flowid 1:30
  match 5e194e00/ffffff00 at 12
filter parent 1: protocol ip pref 50 u32
filter parent 1: protocol ip pref 50 u32 fh 801: ht divisor 1
filter parent 1: protocol ip pref 50 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:3218
  match b0100409/ffffffff at 16
Задача следующая:
весь трафик общий трафик из внешки в этот интерфейс должен идти со скоростью 580kbit (класс 1:3218)
а трафик из определенных подсетей которые указаны в фильтрах (класс 1:30) должен иметь скорость 50-80 мегабит, но это уже не суть
проблема заключается вот в чем, трафик из внешки режется прекрасно и получается 580kbit
и с пиринговых подсетей трафик идет с большой скоростью по 20mbit например.
Прикол заключается в том, что если качать одновременно с пиринговых подсетей, тогда скорость на внешку которой отведено 580kbit снижается сильно.
Долго мучал всё это дело, вот что выявил.
Когда человек качает что либо из внешки весь трафик попадает в класс 1:3218 стабильно, ни одного пакетика в 1:30 и всё режется прекрасно до нужной скорости
Но когда человек качает из пиринговых сетей, трафик попадает в оба класса и в 1:30 и в 1:3218.
В связи с этим если человек качает что то из пиринговых сетей общий канал (1:3218) забивается трафиком этим тоже, и скорость общая на внешку падает.
при этом замечено следующее, если я делаю приоретет у фильтра 1:3218 например не 50 а 5, таким образом:

Код: Выделить всё

tc filter add dev $PPP_ID parent 1:0 protocol ip prio 5 u32 match ip src 0.0.0.0/0 flowid 1:3218
чтоб он был приорететнее, чем 1:30, тогда абсолютно все пакеты и с пиринговых подсетей и с внешки попадают в общий класс (1:3218)
в класс 1:30 не попадает ни одного, и скорость режется на всё до 580кбит
Но если сделать приоретет у фильтра общего (1:3128) меньше, чем у фильтра пиринговых сетей (то есть число больше 10)
то пакеты идущие из пиринговых подсетей всё равно попадают в общий класс (1:3218) (((
уже голову сломал, подскажите в чем ошибка?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: tc, не понятная проблема

Непрочитанное сообщение Alex Keda » 2010-01-02 20:54:54

вы бы реальный список правил показали...
Убей их всех! Бог потом рассортирует...