Перейти к содержимому
Калькуляторы

TC: какую дисциплину выбрать?! наименее прожорливую

есть писюковый роутер

на нем через ТС настроен шейпинг...

встал вопрос, какую дисциплину использовать, что минимизировать нагрузку на процессор

 

нарезка на приблизительно полтысячи пользователей, для каждого создается такой вот набор правил:

 

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

...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас "узким местом" будет фильтр на MARK, а не дисциплина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хм...

 

я читал, что айпитейблз "есть" мало процессора...

 

ю32 - говорят еще больше есть

 

как тогда мне быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хм...

 

я читал, что айпитейблз "есть" мало процессора...

 

ю32 - говорят еще больше есть

 

как тогда мне быть?

FreeBSD+Radius+mpd5+ng_car спасут Отца Русской демократии. ;)

У меня данная связка держит полторы сотни он-лайн зверей с персональным шейпом (именно шейп, не рейт-лимит) на каждом.

Говорят, что без напряга потащит 500 и более зверей..

На пиюковом рутере только нарезаю полосы для тарифных планов. Ну Вы наверное читали тут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот только, что (на той неделе) разбилался с таким случаем.

iptables - метит пакеты. Далее соовт. фильтр и 1 класс HTB.

1500 клиентов. Тормоза...

Узким местом оказалась цепочка из 3000 правил iptables -t mangle

Порезал на подсети. Теперь все летает.

Xeon 2Г

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а подробней можно?!

в теории как это будет выглядеть

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Было:

/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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

т.е. я правильно понял, что каждой подсети была создана новая цепочка и траффик туда завернут

 

тогда вопрос, количество марков не изменилось, они лишь разнесеные по разным цепочкам...

почему от этого становицо легче процу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Потому, что при линейной цепочке пакет проходил 3000 правил. А при "древовидной" схеме - максимум ~500

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну, скажем, я был не уверен в столь интеллектуальности iptables...

если он знает в какой цепочке искать - эт хорошо

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вопрос по сути сводится к переходу от линейного поиска к индексированному. стоит взглянуть на ipset

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ipset для маркировки не применим. Я уже обьяснял в другом топике.

>если он знает в какой цепочке искать...

 

iptables сам ничего незнает :-) Куда Вы его направите, туда он и пойдет.

Изменено пользователем Ivan Rostovikov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

насчет 150 клиентов на фре - на accel-pptp c tc с индивидуальными скоростями из радиуса до 500 сессий от 128 до 2048 кбит. проц celeron 2.8

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.