Jump to content
Калькуляторы

ipt-ratelimit трафик полисинг в iptables

[...] bps это битрейт, но почему-то он не всегда правильно отображает иногда режет в половину

 

Как вы это поняли?

я прогнал тестом с 128 кбит и дальше на каждом шаге умножая на 2 и получил вот что.

На первый взгляд работает верно.

Сохранил картинку только для малых скоростей правда ограничив по вертикальной оси - иначе тяжело что то понять было.

Тест единственной сессией TCP? Возможно похоже на "биение" скорости, типично если нет PID алгоритма(или его аналога) в TCP congestion control на передающем устройстве и в шейпере.

Нет, тест по моему в 5 или 10 сессий но да - TCP и запущенных практически одновременно. iperf но параметры смогу сказать позже.

Запускался на виртуалках с целью грубой оценки.

 

Но на тех же ВМках на той же лабе HTC/HFSC работало как ожидаемо.

Edited by sirmax

Share this post


Link to post
Share on other sites

Есть, но это увеличит нагрузку, что не целесообразно. Просто знайте, что bps это средняя скорость за весь период. В крайнем случае, можно это убрать из статистики раз это вводит в заблуждение.

 

как на счёт параметра как HTB

options sch_htb htb_rate_est=1

кому надо выводить, а по (default 0)

Share this post


Link to post
Share on other sites

Есть, но это увеличит нагрузку, что не целесообразно. Просто знайте, что bps это средняя скорость за весь период. В крайнем случае, можно это убрать из статистики раз это вводит в заблуждение.

 

как на счёт параметра как HTB

options sch_htb htb_rate_est=1

кому надо выводить, а по (default 0)

 

А зачем это, если не секрет? Такая статистика никак не будет отражать работу полисинга. (По-моему даже у cisco такого нет.)

Только ради прикола, посмотреть на меняющиеся цифры?

Share this post


Link to post
Share on other sites

А зачем это, если не секрет? Такая статистика никак не будет отражать работу полисинга. (По-моему даже у cisco такого нет.)

Только ради прикола, посмотреть на меняющиеся цифры?

 

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

Share this post


Link to post
Share on other sites

А зачем это, если не секрет? Такая статистика никак не будет отражать работу полисинга. (По-моему даже у cisco такого нет.)

Только ради прикола, посмотреть на меняющиеся цифры?

 

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

 

Можно сделать сброс статистики в 0. Хотя...

 

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

 

Правильная идеология состоит в том, что модуль ядра должен хорошо выполнять свою прямую функцию, а то, что можно делать в userspace должно быть там. Модуль предоставляет статистику из которой можно подсчитать битерйты perl скриптиком.

 

ps. EWMA rate эстиматор нужен для работы CBQ для определения состояния overlimit. Так как "HTB is meant as a more understandable and intuitive replacement for the CBQ", то по "историческим причинам" они тоже сделали рассчет ewma rate, но, так как он там не необходим, то он отключаем через htb_rate_est. В ipt-ratelimit используется более простой алгоритм TBF, где эта эстимация изначально вообще не была нужна.

Edited by aabc

Share this post


Link to post
Share on other sites

Автору огромное спасибо за разработку и успехов в дальнейшей разработке. Отличная штука.

Надеюсь проэкт не осеротеет, и будет развиваться.

Share this post


Link to post
Share on other sites

есть возможность вывести реальный битрейт для отслеживания онлайн

Сделал (в git), средний битрейт за последние ~8 секунд.

Edited by aabc

Share this post


Link to post
Share on other sites

скажите, а функционал "echo :hotdrop > /proc/net/ipt_ratelimit/name0" (и прочих :flush, :match, :nomatch) в будущем, несмотря на удаление из документации, сохранится? очень полезная фича. экономит пару правил и позволяет не использовать ipset.

Share this post


Link to post
Share on other sites

boco

Хорошо, что вы сказали. Думаю оставить.

Share this post


Link to post
Share on other sites

А как обстоят дела с внедрением поддержки префиксов?

Share this post


Link to post
Share on other sites

скажите, а функционал "echo :hotdrop > /proc/net/ipt_ratelimit/name0" (и прочих :flush, :match, :nomatch) в будущем, несмотря на удаление из документации, сохранится? очень полезная фича. экономит пару правил и позволяет не использовать ipset.

А можно вас попросить поподробнее рассказать как вы hotdrop используете? Я чёт сходу не приудмал, но может мысль куда-то не в ту сторону пошла...

Share this post


Link to post
Share on other sites

А можно вас попросить поподробнее рассказать как вы hotdrop используете? Я чёт сходу не приудмал, но может мысль куда-то не в ту сторону пошла...

пишем всего два правила на весь фаервол

-A FORWARD -i eth0 -m ratelimit --ratelimit-set download --ratelimit-mode dst -j DROP
-A FORWARD -i eth1 -m ratelimit --ratelimit-set upload --ratelimit-mode src -j DROP

делаем дроп не присутствующих в сетах адресов. и все, готов poor man's шейпер для клиентов. добавляешь клиента в сеты - трафик клиента ходит. удаляешь - заблокировал, типа. =)

 

любители развесистых фаерволов, наверное, осудят. но по сути от железки (в моем случае) нужно только это - открыть/закрыть доступ в сеть и нарезать полосу.

 

дурацкая идея: а можно добавить в модуль функционал ограничения не только bps, но и pps? а то, знаете ли, бывают любители пофлудить. =)

Share this post


Link to post
Share on other sites

есть возможность вывести реальный битрейт для отслеживания онлайн

Сделал (в git), средний битрейт за последние ~8 секунд.

 

очень очень хорошо работает, спасибо

Share this post


Link to post
Share on other sites

А подмена nexthop это наверное уже наглость будет?

Использую с пару месяцев - шикарно

Share this post


Link to post
Share on other sites

А можно вас попросить поподробнее рассказать как вы hotdrop используете? Я чёт сходу не приудмал, но может мысль куда-то не в ту сторону пошла...

пишем всего два правила на весь фаервол

-A FORWARD -i eth0 -m ratelimit --ratelimit-set download --ratelimit-mode dst -j DROP
-A FORWARD -i eth1 -m ratelimit --ratelimit-set upload --ratelimit-mode src -j DROP

делаем дроп не присутствующих в сетах адресов. и все, готов poor man's шейпер для клиентов. добавляешь клиента в сеты - трафик клиента ходит. удаляешь - заблокировал, типа. =)

 

любители развесистых фаерволов, наверное, осудят. но по сути от железки (в моем случае) нужно только это - открыть/закрыть доступ в сеть и нарезать полосу.

Наконецто у линукса родился нормальный шейпер, такой же красивый как фришний дамминет

Edited by GrandPr1de

Share this post


Link to post
Share on other sites

А подмена nexthop это наверное уже наглость будет?

 

 

что за подмена nexthop?

Share this post


Link to post
Share on other sites

Спасибо.

 

А как обстоят дела с внедрением поддержки префиксов?

 

В процессе.

 

дурацкая идея: а можно добавить в модуль функционал ограничения не только bps, но и pps? а то, знаете ли, бывают любители пофлудить. =)

 

 

Какие хотели бы значения ставить?

 

А подмена nexthop это наверное уже наглость будет?

 

Какая связь с ratelimit?

Share this post


Link to post
Share on other sites

Чтобы iptables использовать по минимуму - в случае отсутствия правила все ip переадресуются на другой сервер (подменить dst ip), а он уже показывает браузеру страницу - мол так и так - заблокирован.

Share this post


Link to post
Share on other sites

тогда уж опционально mark пакетам добавлять, которые попали/не попали на правило полисера...

Share this post


Link to post
Share on other sites

А подмена nexthop это наверное уже наглость будет?

 

Чтобы iptables использовать по минимуму - в случае отсутствия правила все ip переадресуются на другой сервер (подменить dst ip), а он уже показывает браузеру страницу - мол так и так - заблокирован.

 

Так nexthop или dst ip?

Share this post


Link to post
Share on other sites

делаем дроп не присутствующих в сетах адресов. и все, готов poor man's шейпер для клиентов. добавляешь клиента в сеты - трафик клиента ходит. удаляешь - заблокировал, типа. =)

А, ну так-то да.

Я думал может в "развесистом" варианте нашлось какое-то применение :)

Спасибо всё равно :)

Share this post


Link to post
Share on other sites

дурацкая идея: а можно добавить в модуль функционал ограничения не только bps, но и pps? а то, знаете ли, бывают любители пофлудить. =)

Какие хотели бы значения ставить?

эмпирически. =) скажем если у товарища аплоад 10 мбит и от него прет 20кппс (примерно столько влезет 60-байтовых пакетиков в такую полосу), то это явно синфлуд. у нас average packet size около 700 байт. вот от этого значения бы и плясал.

 

Я думал может в "развесистом" варианте нашлось какое-то применение :)

да точно такое же. =)

Share this post


Link to post
Share on other sites

А подмена nexthop это наверное уже наглость будет?

 

Чтобы iptables использовать по минимуму - в случае отсутствия правила все ip переадресуются на другой сервер (подменить dst ip), а он уже показывает браузеру страницу - мол так и так - заблокирован.

 

Так nexthop или dst ip?

 

А что сделать проще? Хотелось бы решить вопрос с показом абоненту страницы блокировки. Я так понимаю это можно решить либо подменой nexthop (пакет прилетит на сервер с страницей блокировки) либо с подменой dst ip (пакет так же прилетит сервер с страницей блокировки)

Или этот вопрос вообще никак не относится к ipt-ratelimit и должен решаться другими способами?

Share this post


Link to post
Share on other sites

Или этот вопрос вообще никак не относится к ipt-ratelimit и должен решаться другими способами?

ИМХО, Да.

Ограничение pps, понятно. Возможно пригодится. А вот перенаправление - уже как по мне лишнее в модуле полисера.

Edited by bomberman

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now