Jump to content
Калькуляторы

шейпер tc

есть нат сервер, решил поднять на нем же шейпер.

 

собственно вот правила шейпера:

 

tc qdisc del dev bond0.8 root
tc qdisc add dev bond0.8 root handle 1: htb default 900
tc class add dev bond0.8 parent 1: classid 1:1 htb rate 4000Mbit burst 150k
tc class add dev bond0.8 parent 1:1 classid 1:100 htb rate 3800Mbit burst 150k
tc class add dev bond0.8 parent 1: classid 1:900 htb rate 3800Mbit burst 150k
tc qdisc add dev bond0.8 parent 1:900 handle 900 pfifo limit 50000

tc filter add dev bond0.8 parent 1:0 protocol ip u32

tc filter add dev bond0.8 parent 1:0 handle 12: protocol ip u32 divisor 8
tc filter add dev bond0.8 parent 1:0 handle 13: protocol ip u32 divisor 256
tc filter add dev bond0.8 parent 1:0 handle 14: protocol ip u32 divisor 256
tc filter add dev bond0.8 parent 1:0 handle 15: protocol ip u32 divisor 256
tc filter add dev bond0.8 parent 1:0 handle 16: protocol ip u32 divisor 256
tc filter add dev bond0.8 parent 1:0 handle 17: protocol ip u32 divisor 256

tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 800:: match ip dst 172.24.128.0/17 hashkey mask 0x0000ff00 at 16 link 12:

tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 12:0: match ip dst 172.24.128.0/24 hashkey mask 0x000000ff at 16 link 13:
tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 12:1: match ip dst 172.24.129.0/24 hashkey mask 0x000000ff at 16 link 14:
tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 12:2: match ip dst 172.24.130.0/24 hashkey mask 0x000000ff at 16 link 15:
tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 12:3: match ip dst 172.24.131.0/24 hashkey mask 0x000000ff at 16 link 16:
tc filter add dev bond0.8 parent 1:0 protocol ip u32 ht 12:4: match ip dst 172.24.132.0/24 hashkey mask 0x000000ff at 16 link 17:


tc class add dev bond0.8 parent 1:100 classid 1:1001 htb rate 20Mbit ceil 20Mbit
tc qdisc add dev bond0.8 parent 1:1001 handle 1001 sfq  perturb 10
tc filter add dev bond0.8 protocol ip parent 1:0 u32 ht 13:1: match ip dst 172.24.128.1 flowid 1:1001
tc class add dev bond0.8 parent 1:100 classid 1:1002 htb rate 20Mbit ceil 20Mbit
tc qdisc add dev bond0.8 parent 1:1002 handle 1002 sfq  perturb 10
tc filter add dev bond0.8 protocol ip parent 1:0 u32 ht 13:2: match ip dst 172.24.128.2 flowid 1:1002
tc class add dev bond0.8 parent 1:100 classid 1:1003 htb rate 20Mbit ceil 20Mbit
tc qdisc add dev bond0.8 parent 1:1003 handle 1003 sfq  perturb 10
tc filter add dev bond0.8 protocol ip parent 1:0 u32 ht 13:3: match ip dst 172.24.128.3 flowid 1:1003
tc class add dev bond0.8 parent 1:100 classid 1:1004 htb rate 20Mbit ceil 20Mbit
tc qdisc add dev bond0.8 parent 1:1004 handle 1004 sfq  perturb 10
tc filter add dev bond0.8 protocol ip parent 1:0 u32 ht 13:4: match ip dst 172.24.128.4 flowid 1:1004
tc class add dev bond0.8 parent 1:100 classid 1:1005 htb rate 20Mbit ceil 20Mbit
tc qdisc add dev bond0.8 parent 1:1005 handle 1005 sfq  perturb 10
tc filter add dev bond0.8 protocol ip parent 1:0 u32 ht 13:5: match ip dst 172.24.128.5 flowid 1:1005
tc class add dev bond0.8 parent 1:100 classid 1:1006 htb rate 20Mbit ceil 20Mbit

тут дальше куча идентичных классов, фильтров и очередей

 

Проблема выражается таким образом:

При увеличении общего трафика через сервер у юзеров, попадающих в классы 1:1001-1:1275, все нормально со скоростью (наблюдается просадка не более 5%, но это из-за загруженности сервера)

А у пользователей, попадающих в дефолтный класс, серьезные проблемы со скоростью.

Из 100 мбит не более 3-х, задержки при открытии страниц и прочие прелести.

 

Загрузка CPU 50-60% по каждому из 8 ядер.

 

Что я сделал неправильно?

Или оно просто не должно работать при таком количестве правил и трафике через сервер ~1Gbit/sec ?

Edited by acutus

Share this post


Link to post
Share on other sites

покажите статистику по дефолтному классу и дисциплине tc -s qdisc .... tc -s class show ...

 

какая версия ядра?

Share this post


Link to post
Share on other sites

Попробуйте вместо

tc class add dev bond0.8 parent 1: classid 1:900 htb rate 3800Mbit burst 150k

поставить

tc class add dev bond0.8 parent 1:1 classid 1:900 htb rate 200Mbit ceil 3800Mbit burst 150k

 

Ну или изменить дефолтный класс

tc qdisc add dev bond0.8 root handle 1: htb default 1

 

Попробуйте оба варианта.

 

А вообще, откуда такие скорости (4000,3800) если

Из 100 мбит

 

 

Да, и хотя это источником проблем не является, но хеши работать не будут. Хеширование идет по всему 3-му октету (ff), а хеши второго порядка указаны от 128. Хеши не работают.

Либо в первом фильтре делайте hashkey 0x00007f00, либо в дочерних хешах указывайте ht 12:128 (вместо 12:0), 12:129(виесто 12:1) и т.д.

Edited by SABRE

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this