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 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.