Проблема заключается в следующем:
Есть интерфейс 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 не попадает ни одного, и скорость режется на всё до 580кбит
Но если сделать приоретет у фильтра общего (1:3128) меньше, чем у фильтра пиринговых сетей (то есть число больше 10)
то пакеты идущие из пиринговых подсетей всё равно попадают в общий класс (1:3218) (((
уже голову сломал, подскажите в чем ошибка?