msh_1 Опубликовано 13 октября, 2009 · Жалоба хочу ограничть общую скорость нескольких абонентов с помощью HTB. делаю так: INDEV="eth0" OUTDEV="eth1" /sbin/tc qdisc add dev $INDEV root handle 1: htb default ffff r2q 1 /sbin/tc qdisc add dev $OUTDEV root handle 1: htb default ffff r2q 1 ##delay pool /sbin/tc class add dev $INDEV parent 1:0 classid 1:fffe htb rate 5mbit burst 8k prio 1 /sbin/tc class add dev $OUTDEV parent 1:0 classid 1:fffe htb rate 5mbit burst 8k prio 1 #default /sbin/tc class add dev $INDEV parent 1:0 classid 1:ffff htb rate 1000mbit burst 4k prio 3 /sbin/tc qdisc add dev $INDEV parent 1:ffff handle ffff: sfq perturb 10 quantum 1500 /sbin/tc class add dev $OUTDEV parent 1:0 classid 1:ffff htb rate 1000mbit burst 4k prio 3 /sbin/tc qdisc add dev $OUTDEV parent 1:ffff handle ffff: sfq perturb 10 quantum 1500 ##добавляю правила /sbin/tc class add dev eth0 parent 1:fffe classid 1:7 htb rate 10mbit burst 8k prio 1 /sbin/tc qdisc add dev eth0 parent 1:7 handle 7: sfq perturb 10 quantum 5000 /sbin/tc class add dev eth1 parent 1:fffe classid 1:7 htb rate 10mbit burst 8k prio 1 /sbin/tc qdisc add dev eth1 parent 1:7 handle 7: sfq perturb 10 quantum 5000 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 7 fw flowid 1:7 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 1 handle 7 fw flowid 1:7 iptables -I FORWARD -t mangle -s 192.168.5.5 -j MARK --set-mark 7 iptables -I FORWARD -t mangle -d 192.168.5.5 -j MARK --set-mark 7 в результате получаем скорость 10 Мбит/c, а не 5 как ожидалось не могу понять что я не так делаю Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
msh_1 Опубликовано 13 октября, 2009 · Жалоба ой прошу прощения за пост не в тот раздел что-то не могу найти как удалить сообщение :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 14 октября, 2009 · Жалоба что-то вы наворотили с дисциплинами и классами, перемешали и htb и sfq в одну кучу должно быть примерно так: # для eth0 - download # # удаляем очередь $tc qdisc del dev eth0 root 2>/dev/null # создаём очередь $tc qdisc add dev eth0 root handle 1: htb # создаём корневой класс $tc class add dev eth0 parent 1: classid 1:1 htb rate 320mbit # создаём класс с низким рейтом для неклассифицируемого трафика $tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100kbit burst 5k # и направляем туда неклассифицированный трафик $tc filter add dev eth0 parent 1: protocol ip prio 3 handle 1 fw classid 1:10 ну а потом для каждого клиента примерно так: $ipt -t mangle -A segment_0 -s 0/0 -d 172.16.0.33 -j MARK --set-mark 201 $tc filter add dev eth0 parent 1: protocol ip prio 3 handle 201 fw classid 1:201 $tc class add dev eth0 parent 1:1 classid 1:201 htb rate 10mbit Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
msh_1 Опубликовано 14 октября, 2009 · Жалоба что-то вы наворотили с дисциплинами и классами, перемешали и htb и sfq в одну кучу должно быть примерно так: # для eth0 - download # # удаляем очередь $tc qdisc del dev eth0 root 2>/dev/null # создаём очередь $tc qdisc add dev eth0 root handle 1: htb # создаём корневой класс $tc class add dev eth0 parent 1: classid 1:1 htb rate 320mbit # создаём класс с низким рейтом для неклассифицируемого трафика $tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100kbit burst 5k # и направляем туда неклассифицированный трафик $tc filter add dev eth0 parent 1: protocol ip prio 3 handle 1 fw classid 1:10 ну а потом для каждого клиента примерно так: $ipt -t mangle -A segment_0 -s 0/0 -d 172.16.0.33 -j MARK --set-mark 201 $tc filter add dev eth0 parent 1: protocol ip prio 3 handle 201 fw classid 1:201 $tc class add dev eth0 parent 1:1 classid 1:201 htb rate 10mbit спасибо вроде sfq рекомандуют в конец ставить что бы одно соединение весь канал не заняло мне еще хочется ограничить общую скорость на группу абонентов поэтому там 2 класса htb из более внимательного чтения доки я понял что в моем случае надо использовать ceil, а не rate Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
micros Опубликовано 14 октября, 2009 · Жалоба мне еще хочется ограничить общую скорость на группу абонентов поэтому там 2 класса htb Создаете class на ту скорость какую хотите для группы (1:11 например) и U32 фильтром в этот класс направляете IP адреса абонентов из вашей группы.. скорость в классе между ними поделится, и суммарно не привысит class rate если не так - поправьте меня кто нибудь :0) из более внимательного чтения доки я понял что в моем случае надо использовать ceil, а не rate ceil - это скорость которая будет вместо rate для класса если в вышестоящем классе есть свободная полоса.. т.е. rate для него не достиг предела. А где вы вычитали про ceil вместо рейт? можно ссылку..? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
msh_2 Опубликовано 14 октября, 2009 (изменено) · Жалоба А где вы вычитали про ceil вместо рейт? можно ссылку..?если бы у меня была ссылка где это все расписано я бы не спрашивал http://tldp.org/HOWTO/Traffic-Control-HOWT...ful-qdiscs.html цитаты rate Used to set the minimum desired speed to which to limit transmitted traffic. This can be considered the equivalent of a committed information rate (CIR), or the guaranteed bandwidth for a given leaf class. и еще Because HTB does not shape in any class except the leaf class, the sum of the rates of leaf classes should not exceed the ceil of a parent class. Ideally, the sum of the rates of the children classes would match the rate of the parent class, allowing the parent class to distribute leftover bandwidth (ceil - rate) among the children classes. и еще http://luxik.cdi.cz/~devik/qos/htb/htbfaq.htm What if sum of child rates is greater than parent rate ? Then interesting things can happen. Total rate delivered by children can be higher that parent's rate (thus its rate is not respected). правда нигде не написано что будет при превышении есть подозрение что rate это гарантированная скорость и она не зависит от родительского класса. поэтому и надо использовать ceil Изменено 14 октября, 2009 пользователем msh_2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 15 октября, 2009 · Жалоба насколько я понимаю работу, что rate - задает верхнюю границу скорости, которая может быть превышена до ceil, если есть свободные ресурсы, выше ceil она превышена быть не может. можно создать например такой тариф: $tc class add dev eth0 parent 1:1 classid 1:201 htb rate 10mbit ceil 15mbit burst 100k т.е. тариф 10 мегабит, но при наличии свободного канала может повышаться до 15 мегабит всплесками по 100 килобайт, но обычно burst указывать не надо, он вычисляется автоматом Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
micros Опубликовано 15 октября, 2009 · Жалоба rate - задает верхнюю границу скорости, которая может быть превышена до ceil, если есть свободные ресурсы Да, и в идеале сумма рейт дочерних должна быть = рейт родительскому, а если родительский рейт имеет запас в полосе, то свободная полоса распределяется между ceil дочерних классов. так и написано: Ideally, the sum of the rates of the children classes would match the rate of the parent class, allowing the parent class to distribute leftover bandwidth (ceil - rate) among the children classes. 1) Мне кстати тоже интересно что будет когда сумма rate дочерей jrf;tncz больше rate родителя? кто сможет пояснить? 2) Причем интересно как должно быть достигнуто это превышение чтобы заглючило:)& -Либо просто сумма всех rate созданных классов превысит рейт родительского - в цифрах -Либо сумма не только в цифрах - а именно когда начнется реальное поедание полос абонентами (классами). кто может сказать? кто пробовал? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Nic Опубликовано 15 октября, 2009 · Жалоба смысл рейт делать больше родительского? ставьте юзверям рейт на 10кбит, сеил на скорость по тарифу. Тогда при перегрузке канала все будут иметь равный приоритет, и алгоритм будет работать в штатном режиме. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 16 октября, 2009 · Жалоба 1) Мне кстати тоже интересно что будет когда сумма rate дочерей jrf;tncz больше rate родителя? кто сможет пояснить? судя по 1 посту топикстартера, у него родительский рейт = 5 мегабит, а дочерние по 10 мегабит, и он жалуется, что скорость у клиентов не 5 мегабит а 10 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...