Ork Yason Posted December 13, 2008 Posted December 13, 2008 есть писюковый роутер на нем через ТС настроен шейпинг... встал вопрос, какую дисциплину использовать, что минимизировать нагрузку на процессор нарезка на приблизительно полтысячи пользователей, для каждого создается такой вот набор правил: tc class replace dev eth1 parent $tc_parent classid 1:$code_user htb rate 1kbit ceil ${ceil}kbit quantum 2000 tc qdisc add dev eth1 parent 1:$code_user handle $code_user: sfq perturb 10 tc filter replace dev eth1 protocol ip parent 1:0 prio 5 handle $code_user fw classid 1:$code_user ... tc class replace dev eth0 parent $tc_parent classid 1:$code_user htb rate 1kbit ceil ${ceil}kbit quantum 2000 tc qdisc add dev eth0 parent 1:$code_user handle $code_user: sfq perturb 10 tc filter replace dev eth0 protocol ip parent 1:0 prio 5 handle $code_user fw classid 1:$code_user ... Вставить ник Quote
nuclearcat Posted December 13, 2008 Posted December 13, 2008 У вас "узким местом" будет фильтр на MARK, а не дисциплина. Вставить ник Quote
Ork Yason Posted December 13, 2008 Author Posted December 13, 2008 хм... я читал, что айпитейблз "есть" мало процессора... ю32 - говорят еще больше есть как тогда мне быть? Вставить ник Quote
AlKov Posted December 13, 2008 Posted December 13, 2008 хм... я читал, что айпитейблз "есть" мало процессора... ю32 - говорят еще больше есть как тогда мне быть? FreeBSD+Radius+mpd5+ng_car спасут Отца Русской демократии. ;)У меня данная связка держит полторы сотни он-лайн зверей с персональным шейпом (именно шейп, не рейт-лимит) на каждом. Говорят, что без напряга потащит 500 и более зверей.. На пиюковом рутере только нарезаю полосы для тарифных планов. Ну Вы наверное читали тут. Вставить ник Quote
Ivan Rostovikov Posted December 13, 2008 Posted December 13, 2008 Вот только, что (на той неделе) разбилался с таким случаем. iptables - метит пакеты. Далее соовт. фильтр и 1 класс HTB. 1500 клиентов. Тормоза... Узким местом оказалась цепочка из 3000 правил iptables -t mangle Порезал на подсети. Теперь все летает. Xeon 2Г Вставить ник Quote
Ork Yason Posted December 13, 2008 Author Posted December 13, 2008 а подробней можно?! в теории как это будет выглядеть Вставить ник Quote
Ivan Rostovikov Posted December 14, 2008 Posted December 14, 2008 Было: /sbin/iptables -t mangle -A FORWARD -s $IP -j MARK --set-mark $SMARK /sbin/iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $DMARK 1500 клиентов и соответственно 3000 строк. Результат - поток в 100Мб/s укладывал XEON 2Г с "крутыми" интеловскими сетевухами НАГЛУХО. Временами такой бридж не мог пропускать более 50-60 Мб при задержках 2-3 секунды на отдельных пакетах. Что конечно неприемлимо. Решение: sn_list="10.129.0.0 10.100.0.0 10.100.1.0 10.0.0.0" ..... и так много /sbin/iptables -t mangle -F FORWARD for i in $sn_list do /sbin/iptables -t mangle -A FORWARD -s $i/24 -j SUBNET-$i /sbin/iptables -t mangle -A FORWARD -d $i/24 -j SUBNET-$i done /sbin/iptables -t mangle -A FORWARD -j SUBNET-OTHER insert_rule() { sn=`echo $1 | sed -r "s/\.[0-9]+$/.0/"` fl=0 for i in $sn_list do if [ $i = $sn ] then /sbin/iptables -t mangle -A SUBNET-$sn -d 0/0 -s $1 -j MARK --set-mark $2 /sbin/iptables -t mangle -A SUBNET-$sn -s 0/0 -d $1 -j MARK --set-mark $3 fl=1 fi done if [ $fl = 0 ] then /sbin/iptables -t mangle -A SUBNET-OTHER -d 0/0 -s $1 -j MARK --set-mark $2 /sbin/iptables -t mangle -A SUBNET-OTHER -s 0/0 -d $1 -j MARK --set-mark $3 fi } Возможно код скрипта не оптимален, но суть отражает. Цепочка SUBNET-OTHER создана для подсетей, которые возможно забыл внести в список sn_list Разбиение на подсети /24 позволило сильно не заботится о дальнейшем росте числа абонентов. Теперь загрузка при потоке 100Мб: # uptime 14:10:33 up 12 days, 19:04, 1 user, load average: 0.00, 0.01, 0.00 Вставить ник Quote
Ork Yason Posted December 14, 2008 Author Posted December 14, 2008 т.е. я правильно понял, что каждой подсети была создана новая цепочка и траффик туда завернут тогда вопрос, количество марков не изменилось, они лишь разнесеные по разным цепочкам... почему от этого становицо легче процу? Вставить ник Quote
Ivan Rostovikov Posted December 14, 2008 Posted December 14, 2008 Потому, что при линейной цепочке пакет проходил 3000 правил. А при "древовидной" схеме - максимум ~500 Вставить ник Quote
Ork Yason Posted December 14, 2008 Author Posted December 14, 2008 ну, скажем, я был не уверен в столь интеллектуальности iptables... если он знает в какой цепочке искать - эт хорошо ок, благодарю, бум думать, как бы поправильней сделать цепочек... Вставить ник Quote
Мартен Posted December 14, 2008 Posted December 14, 2008 вопрос по сути сводится к переходу от линейного поиска к индексированному. стоит взглянуть на ipset Вставить ник Quote
Ivan Rostovikov Posted December 15, 2008 Posted December 15, 2008 (edited) ipset для маркировки не применим. Я уже обьяснял в другом топике. >если он знает в какой цепочке искать... iptables сам ничего незнает :-) Куда Вы его направите, туда он и пойдет. Edited December 15, 2008 by Ivan Rostovikov Вставить ник Quote
sirmax Posted December 15, 2008 Posted December 15, 2008 насчет 150 клиентов на фре - на accel-pptp c tc с индивидуальными скоростями из радиуса до 500 сессий от 128 до 2048 кбит. проц celeron 2.8 Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.