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

Linux настройка шейпинга дает скорость меньше заказаной

есть локальная сеть, для разных клиентов установлены разные скорости:

 

#!/bin/sh

#

 

lan=10.0.0.0/8

int_iface=eth1

/sbin/tc qdisc del dev $int_iface root handle 1: htb

 

/sbin/tc qdisc add dev $int_iface root handle 1: htb

/sbin/tc class add dev $int_iface parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k

 

# Internet

mark=2

speedkb=13

speedceil=13

/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit burst 200k

 

# Local lan

mark=256

speedkb=40

speedceil=60

/sbin/tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate "$speedkb"mbit ceil "$speedceil"mbit

/sbin/tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark

/sbin/iptables -t mangle -A FORWARD -d $lan -s $lan -j MARK --set-mark 256

 

# клиентская машина

IP=10.2.2.2

int_iface=eth1

mark=430

speedkb=2457

speedceil=3379

/sbin/iptables -t mangle -A FORWARD ! -s $lan -d $IP -j MARK --set-mark $mark

 

/sbin/tc class add dev $int_iface parent 1:2 classid 1:$mark htb rate "$speedkb"kbit ceil "$speedceil"kbit

/sbin/tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark

когда я ставлю чтото на закачку, получаю:

tc -s class show dev eth1

class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 200Kb cburst 1600b

Sent 17892945522 bytes 20411791 pkt (dropped 0, overlimits 0 requeues 0)

rate 6368Kbit 741pps backlog 0b 0p requeues 0

lended: 45724 borrowed: 0 giants: 0

tokens: 254125 ctokens: 125

 

class htb 1:2 parent 1:1 rate 13000Kbit ceil 13000Kbit burst 200Kb cburst 1599b

Sent 17725500404 bytes 20238758 pkt (dropped 0, overlimits 0 requeues 0)

rate 6368Kbit 740pps backlog 0b 0p requeues 0

lended: 5116283 borrowed: 0 giants: 0

tokens: 1943582 ctokens: -10261

 

class htb 1:430 parent 1:2 prio 0 rate 2457Kbit ceil 3379Kbit burst 1599b cburst 1599b

Sent 43163129 bytes 33372 pkt (dropped 0, overlimits 0 requeues 0)

rate 1293Kbit 112pps backlog 0b 0p requeues 0

lended: 8286 borrowed: 3327 giants: 0

tokens: 7328 ctokens: -53780

т.е. вместо минимальной скорости 2457кбит я имею только 1293кбит и все. почему ???

что означает ctokens: -53780 ?

ЗЫ канал свободен, с отключенным шейпингом, качаю на всю ширину канала

Share this post


Link to post
Share on other sites

Параметр burst 200k нужно убрать отовсюду. Нет смысла использовать iptables для такой простой классификации, можно обойтись средствами tc.

Share this post


Link to post
Share on other sites

Это я тормоз, или тут на листьях qdisc отсутствует? Вместе с самими листьями.

Share this post


Link to post
Share on other sites

Листья (дочерние классы) есть, qdisc-ов нет.

Share this post


Link to post
Share on other sites
Параметр burst 200k нужно убрать отовсюду. Нет смысла использовать iptables для такой простой классификации, можно обойтись средствами tc.
а burst - вообще не использовать, оставить по умолчанию ?

 

в tc можно сделать типа такого :/sbin/iptables -t mangle -A FORWARD ! -s $lan -d $IP -j MARK --set-mark $mark ?

т.е. от источника всюду, кроме локальной сети

 

 

Share this post


Link to post
Share on other sites
class htb 1:430 parent 1:2 prio 0 rate 2457Kbit ceil 3379Kbit burst 1599b cburst 1599b

Sent 43163129 bytes 33372 pkt (dropped 0, overlimits 0 requeues 0)

rate 1293Kbit 112pps backlog 0b 0p requeues 0

lended: 8286 borrowed: 3327 giants: 0

tokens: 7328 ctokens: -53780

man tc-htb:

NOTES

Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low.

On Intel, there are 100 timer events per second, the maximum rate is that rate at which ’burst’ bytes

are sent each timer tick. From this, the minimum burst size for a specified rate can be calculated.

For i386, a 10mbit rate requires a 12 kilobyte burst as 100*12kb*8 equals 10mbit.

 

Проверяем: 100 * 1599 * 8 = 1 279 200 бит/с.

Не оно?

Share this post


Link to post
Share on other sites

Рекомендую навесить sfq qdisc на все листья. Решает, как ни странно.

 

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