LINUX.ORG.RU
ФорумAdmin

Шейпинг: не удаётся завести tc-drr

 ,


2

2

Собственно для tc есть queue discipline DDD(Dificite Round Robin) .

Вкратце - умеет то же, что HTB, но вместо того, чтобы заполнять корзины токенами с определённой скоростью, потом их оттуда вынимать и т. д., просто присваивает каждой каждой очереди некоторый Dificit Counter, при отправке пакета - уменьшает его на размер пакета. Если DC меньше размера пакета, увеличивает размер DC на заданный для очереди quantum и переходит к следующей. Таким образом, можно делить исходящий траффик в некотором отношении, не зная заранее ширину канала(что требуется для HTB). Подробнее: http://www.unix.com/man-page/linux/8/tc-drr/

Setup: две машины, 172.16.1.1 и 172.16.1.2.

На первой - слушаем траффик:

nc -l 8111
nc -l 8112

На второй - проверяем скорость:

pv /dev/zero | nc 172.16.1.1 8111
pv /dev/zero | nc 172.16.1.1 8112

Пока скорость равная(pv - позволяет мерить скорость через pipeline). Добавляем на второй машине шейпер(сверху присобачен HTB для имитации ограничения скорости канала):

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:1 handle 2: drr
tc class add dev eth0 parent 2: classid 2:1 drr quantum 600
tc class add dev eth0 parent 2: classid 2:2 drr quantum 1400
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8111 0xffff classid 2:1
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8112 0xffff classid 2:2

Скорость остаётся равной :( Куда копать?

★★★

Скорость остаётся равной :( Куда копать?

NOTES This implementation does not drop packets from the longest queue on overrun, as limits are handled by the individual child qdiscs.

На оконечные ноды повесь fifo с limit 50 скажем и фильтры направь на него.

По умолчанию реализация drr в Linux не дропает пакеты

Pinkbyte ★★★★★
()
Ответ на: комментарий от selivan

Блин, ты гений! Спасибо!

Я - не гений, я просто прочитал ман вдумчиво. Я вообще не был уверен что это поможет, так как с DRR не работал.

Ты вот лучше скажи - оно действительно себя хорошо ведет в условиях неизвестной общей скорости? То есть, у меня тут задачка нарисовалась худо-бедно пошейпить канал у которого скорость плавает. Шейпить по принципу минимума не хотелось бы(канал будет простаивать), а теория, выкуренная по DRR пока ясности особой не принесла

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

В продакшене я это ещё не скоро потестю, тут куча более срочной фигни образовалась :( Как только - так сразу отпишусь

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