LINUX.ORG.RU
ФорумAdmin

есть ли смысл использовать imq для ограничения входящего трафика?


0

0

Вопрос в следующем, сейчас для ограничения входящего трафика (download) я вынужден использовать htb для исходящего трафика на внутреннем интерфейсе роутера.
то есть если к одному клиенту идет слишком много трафика я его задерживаю на роутере и уже потом средствами tcp протокола происходит уменьшения входного потока, но при этом пакеты до роутера доходят и канал занимают.

Один человек мне сказал, что использование imq помогает более красиво решить эту проблему, это действително так?

★★

>есть ли смысл использовать imq для ограничения входящего трафика?

Да

>использование imq помогает более красиво решить эту проблему,

ХЗ.

fagot ★★★★★
()

Входящий трафик, как ни крути, будет доходить до твоего маршрутизатора и занимать канал. HTB позволяет буферризовать такие данные и цедить буферизованные данные на заданной скорости. IMQ поступит проще, imho - просто дропнет пакеты, которые идут с бОльшим rate'ом, чем допустимо. Поэтому применение IMQ может негативно отразиться на приеме UDP-трафика - возрастут потери при интенсивном обмене дейтаграммами.

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

Вот эта фраза с http://www.opennet.ru/base/net/linux_traffic_qos.txt.html
не даёт покоя

* Ограничить скорость можно только у исходящего трафика. Входящий
трафик уже пришел к нам, потому мы не можем непосредственно
ограничить скорость его поступления. Традиционным решением
является использование ограничителя, однако это не есть лучшее
решение, ведь уничтожаются уже пришедшие данные, которые заняли
часть нашей полосы пропускания. Лучшим решением является
использование IMQ.

Уже пересобрал ядро сейчас буду пробывать...

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

Первые впечетления.

добавил
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0
/sbin/ip link set imq0 up

На imq0 повесил htb всё работает,
пока не знаю на сколько лучше стал использоваться канал,
но...
и на LAN_IFACE HTB пришлось оставить, может я и ошибаюсь, но
так как все клиенты подключены через NAT в цепочке PREROUTING,
а следовательно и на imq0 не видно их ip-адресов и следовательно нет
возможности использовать дисциплину ESFQ с dst_ip hash,
чтобы поделить канал более честно.

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

>дисциплину ESFQ

А ты используешь? Какая версия, откуда качал?

>а следовательно и на imq0 не видно их ip-адресов и следовательно нет возможности использовать дисциплину ESFQ с dst_ip hash

Для решения есть специальный патч на код IMQ (у них на сайте) - imq-nat

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

ESFQ качал с http://www.ssi.bg/~alex/esfq/esfq-0.2-2.4.18.tar.gz

На сайте http://kem.p.lodz.pl/~peter/qnet/ разделе Known bugs: есть два патча после которых начинает нормально собиратся и работает iproute2-2.6.9 с http://developer.osdl.org/dev/iproute2/download/

адреса патчей: http://kem.p.lodz.pl/~peter/qnet/ip2-2.6.9-xfrm_compile_fix.patch http://kem.p.lodz.pl/~peter/qnet/ip2-2.6.9-esfq_fix.patch

После всего этого всё собралось и работает, сейчас посмотрю про imq-nat

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

поставил imq-nat path пересобрал ядро,
что-то не работает фильтрация по dst ip.
вот кусочек скрипта, может тут что-то неправильно?

/sbin/ip link set imq0 up
$FW -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0

i=imq0

$TC qdisc add dev $i root handle 1: htb default $NORMAL
$TC class add dev $i parent 1: classid 1:$ROOT htb rate $LINK_RATE ceil $LINK_RATE
$TC class add dev $i parent 1:$ROOT classid 1:$NORMAL htb rate $LINK_RATE ceil $LINK_RATE
$TC class add dev $i parent 1:$ROOT classid 1:4 htb rate 200Kbit ceil 200kbit

$TC filter add dev imq0 protocol ip parent 1:0 u32 match ip dst 192.168.1.253 classid 1:4



в результате если смотреть в статистику, то в класс 1:4 ни чего не попадает.

class htb 1:4 parent 1:1 leaf 4: prio 0 rate 200000bit ceil 200000bit burst 1849b cburst 1849b
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
lended: 0 borrowed: 0 giants: 0
tokens: 60620 ctokens: 60620



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

Всё разобрался, сейчас IMQ работает с NAT и в PREROUTING вижу dst ip-дреса.
Ошибка была в строке
$FW -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0

у меня же INET_IFACE = eth1, как поправил всё заработало, все IP видны.

На освоение IMQ потратил 1 день.

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

>>IMQ поступит проще

>А если на IMQ повешать HTB?

Мне кажеться, что HTB будет регулировать потоки пакетов, уже прошедшие через IMQ, т.е. уже обрезанные на заданном rate.

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

Не совсем понимаю.

Речь идет о rate чего? У самой IMQ rate нету, только у навешанных дисципнин, хоть и у HTB.

Или имеется ввиду, что есть ingress policer и IMQ разом? Мне кажется, эти вещи несколько не совместимы.

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

>Хм, вообще то ты прав...

Да нет, прав был ты... некоторое время назад ;)))

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