LINUX.ORG.RU
решено ФорумAdmin

Как работает rate в tc?

 


0

1

Создаю трафик по 2 портам 3331 и 3333

cat /dev/zero | nc host 3333
cat /dev/zero | nc host 3331
На удаленном хосте замеряю
nc -kl 3333 | pv > /dev/null
nc -kl 3331 | pv > /dev/null
Скорость примерно одинаковая. Добавляю
tc qdisc del dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class change dev eth0 parent 1:1 classid 1:10 htb rate 90mbit ceil 100mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 3333 0xffff flowid 1:10
Ожидаю что скорость на порт 3331 уменьшится а на 3333 возрастет в пропорции 1/10 но, ожидаемого эффекта нет. Что я делаю не так?


ЕМНИП, rate - гарантированная полоса, ceil - потолок. Понижай ceil, если хочешь урезать скорость.

anonymous
()

И да, если у тебя всего 100 Mbps, то распределение скоростей останется таким же, т.к. оба потока меньше, чем 90 Mbps

anonymous
()
Ответ на: комментарий от anonymous

Так что в себя в включает понятие гарантированная полоса?

Spinel
() автор топика

Формулирую задачу: Есть канал в 100Mbit между 2мя хостами. Есть некий трафик(например по порту 3331 или любому другому) он забивает весь. Но как только появляется трафик по порту 3333 канал должен перераспределится: 90Mbit на трафик по порту 3333 а все остальное на на другой трафик. Если нет никакого другого трафика кроме как на 3333 порт, это трафик забирает весь канал.

Spinel
() автор топика
Ответ на: комментарий от Spinel

Тогда надо ограничивать другой трафик. Как-то так:

tc qdisc del dev eth0 root handle 1: htb default 100
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class change dev eth0 parent 1:1 classid 1:10 htb rate 90mbit ceil 100mbit
tc class change dev eth0 parent 1:1 classid 1:100 htb rate 10mbit ceil 100mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 3333 0xffff flowid 1:10

anonymous
()
Ответ на: комментарий от anonymous
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 100
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class change dev eth0 parent 1:1 classid 1:10 htb rate 90mbit ceil 100mbit
tc class change dev eth0 parent 1:1 classid 1:100 htb rate 10mbit ceil 100mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 3333 0xffff flowid 1:10

поправочка

anonymous
()
Ответ на: комментарий от anonymous

Собственно по этому примеру и делал.

Spinel
() автор топика
Ответ на: комментарий от Pinkbyte
tc -s filter show dev eth0
filter parent 1: protocol ip pref 1 u32 
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10 
  match 00000d05/0000ffff at 20
Spinel
() автор топика

Оставлю это здесь для истории
Если ограничить общую скорость в 5Mbit то все работает.
Конфиг для htb.init

eth0:
DEFAULT=100

eth0-2.all:
RATE=5Mbit
CEIL=5Mbit

eth0-2:10.3333:
RATE=4Mbit
CEIL=5Mbit
RULE=:3333
PRIO=1

eth0-2:100.rest:
RATE=1Mbit
CEIL=5Mbit
PRIO=2
Но если поднять до 100Mbit то все идет по бороде.
Возможно надо подбирать R2Q, но мне так и не удалось.

Spinel
() автор топика
Ответ на: комментарий от Spinel

Если общую скорость канала делать равною или близкую к скорости канала(100, 99 ...) то RATE идет лесом. Для 100мигабитной сетки реальна скорость получатся 98. Вот ее и надо прописывать в файл eth0-2.all и потом в CEIL. Тогда RATE работает на ура. Надеюсь мои копания кому-нибудь помогут.

Spinel
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.