Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Ограничение скорости трафика с пом. iptables, Нужели это нормально?!
 
Сделала ограничение на скорость закачки по 443 порту с помощью iptables. Политика по умолчанию на все цепочки - ДРОП.
"Прореживаю" входящие пакеты, исходящие пускаю без ограничений - их мало, не мешают.

/sbin/iptables -A FORWARD -p tcp --sport  443 -m state   --state ESTABLISHED \
-m limit --limit 100/minute --limit-burst 50                                  -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --sport  443 -m state   --state RELATED\
-m limit --limit 100/minute --limit-burst 50                                  -j ACCEPT

/sbin/iptables -A FORWARD -s "$clinet"0/24 -p tcp  --dport 443    -j ACCEPT    #без ограничений
/sbin/iptables -A FORWARD  -p tcp  --sport 443 -j DROP  #бью, чтобы логи не засоряли

По идее что должно быть: видя потери пакетов, передающая сторона должна сжимать окно  -  замедлять скорость передачи, пока не установится равновесие и потери не минимизируются (медленный старт).  

НО!!!!!!!!!!!!!!!!!!!!!!!!

Смотрю, сколько пакетов (и мегабайт) дропается и пропускается. Примерно поровну! Равновесие почему-то не устанавливается, передающая сторона ничего и не думает замедлять. Это подтверждается и моими счетчиками скорости (и через iptables и через tc) - когда качают через 443 порт, дебет с кредитом не сходится, а так - все нормально.

Где тот медленный старт?! Ведь эти пакеты, предназначенные на убой, забивают нам канал, которого и без того не хватает.
Неужели это нормально?

Поскольку такой мехаизм используется во всех ограничителях тарфика, что же, добрая половина трафика в сети цеелнаправленно бьется, только никто этого не видит? Или это просто кривая реализация ТСП на каком-то конкретном сервере? Или я нерационально подобрала параметры ограничения (в особенности --limit-burst)?
 
Да, вижу для  того, чтобы делать выводы, у меня очень мало информации. А что делать - у нас в сети только два потребителя 443 порта, постоянно пользующиеся одними и теми же ресурсами. Первый (биржевая программка) создает настолько мало траффика, что ограничение даже не начинает работать, а второй - это тот, что описан в предыдущем посте.

Хочу сравнить отношение  дропаных и пропущенных пакетов для разных интернет-рессурсов.
Не могли бы вы поделиться ссылками, где через 443   порт можно скачать бесплатно что-нибудь объемное. Содержание не важно, хоть порно - мне не смотреть,  для экспериментов надо  ;)   Только бы ресурсов побольше (не обязательно хороших, но разных)
 
Цитата
«Ограничение скорости трафика с пом. iptables , Нужели это нормально?! »
Нет. Шейпинг трафика с помощью iptables - это ненормально. ;)
Для решения этой задачи нужно применять  соответствующие средства - iproute2, утилиту tc(Traffic Control) из состава iproute2, либо более дружественные скрипты-обертки вокруг tc вроде cbqinit,tcng,shapecfg и т.п.
iptables можно использовать в данном случае только для того, чтобы маркировать пакеты для шейпера.
 
2R - спасибо, буду пробовать tc. А разве в tc не тот же алгоритм ограничения скорости (TBF)?
Ну а принцип действия-то точно тот-же - отстрелять часть посетителей сейчас, чтобы в будущем к тебе ходили меньше.  Только как в tc проконтролировать, сколько пакетов дропаются, а сколько пропускаются? Может там та же картина, а зависит это от передающей стороны?
 
Цитата
Jul_i пишет:
А разве в tc не тот же алгоритм ограничения скорости (TBF)?
shorewall с tc пользует HTB (Hierarchical Token Bucket) и SFQ (Stochastic Fairness Queuing). Первый для деления пропускной способности на отдельные очереди, причем считая  не пакеты, а байты.
второй для балланса (SFQ does a great work on its own, by balancing "everything" without any additional configuration.).
для обеспечения т.н. "справедливости" с тем, чтобы каждый поток мог передавать данные на равных правах с остальными.

Цитата
Jul_i пишет:
Только как в tc проконтролировать..
Контроль к примеру наглядными графами из http://qos.kallenberg.dk/qos.pl, для которых правда требуется gnuplot.
В ручную выдернув из qos.pl типа можно видеть что с eth2:
/sbin/tc -s qdisc show dev eth2

http://gentoo-wiki.com/HOWTO_Packet_Shaping
 
2apple, постановка вопроса следующая: независимо от дисциплины в tc (TBF, HTB, CBQ или  SFQ) я могу ограничить входящий из инета трафик убив только уже пришедние ко мне (и оплаченные) пакеты. Благодаря особенностям протокола TCP/IP передаюащя сторона должна уменьшить скорость передачи.     Задача: оценить КПД этого механизма, найдя отношение принятых и дропнутых пакетов. И от чего этот КПД зависит - от меня или от передающей стороны.
Цитата
apple пишет:
/sbin/tc -s qdisc show dev eth2
Но эта команда показывает только принятые пакеты, а дропнутые - нет! А следовательно, все остальные приблуды для показа траффика - тоже (у меня такой самопальный скрипт стоит). А в iptables все пакеты как на ладони.
 
Цитата
Jul_i пишет:
исходящие пускаю без ограничений - их мало, не мешают.
А зря. Если соединение, которое надо шейпить делается по tcp - то лучше шейпить как раз исходящие пакеты, тогда "та сторона" будет ждать подтверждений, и, соответственно, сама уменьшит входящий трафик. С udp трафиком так не получится.
 
Цитата
Andrey Y. Ostanovsky пишет:
лучше шейпить как раз исходящие пакеты, тогда "та сторона" будет ждать подтверждений, и, соответственно, сама уменьшит входящий трафик.
А это - как раз и делается. Подтверждения у меня как ESTABLISHED, RELATED проходят, а там как раз и шейпится, не делая различий на входящие-исходящие (--sport 443 я потом убрала, так что сначала пропускаются без ограничений все ответные пакеты не на 443, а потом шейпится все, что осталось). Не шейпятся только первичные запросы на установление соединения.
 
Цитата
Jul_i пишет:
А разве в tc не тот же алгоритм ограничения скорости (TBF)?
TBF, как и другие дисциплины шейпинга производят буферизацию трафика, а не сразу отбрасывают пакеты. Сразу отбрасывает лишь ingress qdisc.

Цитата
Jul_i пишет:
Но эта команда показывает только принятые пакеты, а дропнутые - нет! А следовательно, все остальные приблуды для показа траффика - тоже (у меня такой самопальный скрипт стоит). А в iptables все пакеты как на ладони.

# tc -s qdisc
qdisc pfifo_fast 0: dev eth0 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 491901 bytes 7221 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc ingress ffff: dev eth0 ----------------
Sent 145586 bytes 208 pkt (dropped 14, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
Страницы: 1
Читают тему