Перейти до

Flexshape for Linux - Dynamic Shaper


Рекомендованные сообщения

В общем есть проектик - написал скрипт, что-то вроде CBQ но основанный на HTB, который динамически изменяет скорость в зависимости от загрузки канала на пользователя. Умеет работать с интерфейсами ВПН - то есть на линухе создается каждый раз разный интерфейс - так вот ЭТО может находить нужный интерфейс и шейпить что нам нужно. Файлы конфигураций приближены по формату к конфигам CBQ.init. Сам файл лежит здесь (извините за выбор хостинга)

http://flexshape.narod.ru/flexshape-alpha-v1-20051024.tar.gz

размер - 17кбайт

Документалка внутри - на английском (моем кривом английском) и на русском.

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

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

Руль..... пойдет....

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

настоящий пользователь GNU

:)

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

Забыл сказать, что версия альфа - то бишь исключительно для тестинга. Просто не рекомендую запускать в работу, хотя у меня уже успел поработать пару часов на всю локалку - могу сказать преркасно работает. Но появилось пару вопроскиов - буду тестить дальше. И, конечно же, продолжаю ждать замечаний по ошибкам :)

Да и еще одно. Кто знает готовые программы тестеры - в общем нужно получить общую статистику загрузки памяти и процессора моей программой, а то неприкольно как-то наблюдать top или клацать free, uptime...

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

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

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

О, пасибки...

Я на народ перегрузил файл - добавил ридми на русском в кодировке виндузной... Есть желающие под виндой почитать :)

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

Чуток подкорректировал сайт, приблизительно к выходным выложу следующую версию.

Прошу сюда:

http://flexshape.narod.ru

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

Есть канал на инет со скоростю в зависимости от трафика: Украина - 1 Мбит, мир - 128 Кбит.

Я хочу шейпить с помощью вашей проги только иностранный (неукраинский) трафик. Для этого для иностранного трафик в iptables я делаю REDIRECT на порт 3128 и он идет на проксю. Внимание, вопрос: смогу ли я создать класс на основе порта-адресата 3128 и т.о. шейпить только иностранный трафик? Спасибо.

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

Насколько я понимаю процесс обработки пакетов приходящих в линукс - могу сказать, что вряд ли будет работать. Т.к. шейпер работает на исходящие пакеты, то будет проблематично указать с какого интерфейса идут пакеты и куда. То есть порт указать укажем - а вот куда трафик исходить будет? на внутрь - есть дополнительные модули для шейпера, но они иммитируют входящий интерфейс и задерживают трафик на прием - в моем шейпере нет поддержки этого.

 

Кста, я сейчас весь в работе - не знаю когда будет следующая версия, но будет обязательно - крайне не рекомендую использовать шейпер для динамических интерфейсов - забивает процессор уже при 5-10 классах.

Ссылка на сообщение
Поделиться на других сайтах
Насколько я понимаю процесс обработки пакетов приходящих в линукс - могу сказать, что вряд ли будет работать. Т.к. шейпер работает на исходящие пакеты, то будет проблематично указать с какого интерфейса идут пакеты и куда. То есть порт указать укажем - а вот куда трафик исходить будет? на внутрь - есть дополнительные модули для шейпера, но они иммитируют входящий интерфейс и задерживают трафик на прием - в моем шейпере нет поддержки этого.

 

В таком случае скажите, на каком этапе фильтрации транзитных пакетов работает ваша программа (mangle prerouting -> nat prerouting -> mangle forward -> filter forward -> mangle postrouting -> nat postrouting)?

Если уже после nat postrouting, то можно сначала в этой таблице сделать такое маскирование для иностранных пакетов (iptables -t nat -A POSTROUTING -p tcp -o eth1 -j SNAT --to-source 194.236.50.155:1024) и т.о. ваша программа могла бы на этом внешнем интрефейсе (eth1) на основе уже порта-источника 1024 шейпить трафик. Или снова мимо?

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

Да, теперь работать будет - по порту источнику в этом случае можно просто указать порт источник и будет шейпиться вся информация с 1024 порта, а если параллельно указывать абобента - айпи-приемник, то шейпер будет работать на отдельного клиента :(

 

ЗЫ. Вопрос ко всем, каким образом можно обратиться непосредственно к системе и узнать информацию об интерфейсах присутствующих в данный момент? Т.к. в последней версии просиходит обработка текстовой ифнормации из "/sbin/ip addr show", то достаточно нагружает процесор несколько таких процессов да и еще раз в две-три секунды. Чувствую, что следующая версия выйдет еще на перле в виде скрипта, а следующая за ней будет в виде исходника на С для компиляции

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

И вопрос непосредственно ко всем. В виду того, что "тяжелый" режим работает кое-как, есть уже алгоритм который охладит процессор на 50% (в частности поиск интерфейсов динамических будет производится одним ведущим скриптом). И алгоритм отдельно для ППП соединений (используя ip-up ip-down). Так вот вопрос: стоит ли оставлять эту старую версию алгоритма в шейпере?

Ссылка на сообщение
Поделиться на других сайтах
  • 4 months later...
И вопрос непосредственно ко всем. В виду того, что "тяжелый" режим работает кое-как, есть уже алгоритм который охладит процессор на 50% (в частности поиск интерфейсов динамических будет производится одним ведущим скриптом). И алгоритм отдельно для ППП соединений (используя ip-up ip-down). Так вот вопрос: стоит ли оставлять эту старую версию алгоритма в шейпере?

Уж очень хотся поюзать...

Заранее Респект. Очень интересная идея.

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

наработки есть конечно, другой вопрос в том а функционально ли будет это для других ?

 

лично я не против поделится, но без поставленой задачи это просто набор скриптов...

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

Извиняюсь, что долго не отвечал - завален работой по самое нехочу. Шейпер однозначно будет переписан. И переписан по всем швам. Уже сейчас нужна поддержка управления на основе списков и общих классов. Как упоминалось раньше - управление для динамических интерфейсов используя ip-up ip-down.

 

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

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

2 N.Leiten

 

Два вопроса:

1. Пока только расчехляю шейпер, и пока не знаю, может ли он так делать.

Есть канал на 256Кб/с. Ну допустим я создал класс и ограничил всех юзеров, до половины всего канала - 128Кб/с. И в случае, если их становится слишком много, и все чего-нить качают, то скорость (по идее) должна равномерно падать у всех юзеров. А если юзер или группа юзеров в сумме не превышают скорость канала (в моем случае это вряд ли возможно, но все же), то даст ли шейпер свободную часть канала в использование, или она так и будет простаивать? Если этого нет, то хотелось бы видеть эту возможность в новой версии. Желательно, чтобы это было опционально.

 

2. Где-то тут на форуме читал, что новый релиз на С выйдет в сентябре. Так когда же (хотя бы бриблизительно) ждать?

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

Да, действительно были планы до сентября закончить, учитывая, что переделывать начал в июне, на том и остановился, т.к. был завален работой и мыслью об отдыхе. Отдохнуть не дали, вот теперь пашу дальше. О приблизительных сроках выхода говорить не буду, т.к. и сейчас завален работой, и в соседнем треде обещался сервер для чата закончить. Сам шейпер переписать - около недели времени. Ориентировочно ним буду заниматься сразу по завершению работы над чатом :)

 

Насчет возможности использования "гуляющего" канала - подумать можно, но не факт что получится легкой кровью это реализовать. В общем буду думать - безвыходных ситуаций не бывает.

 

Ну и конечно, все возможности будут опциональными. Вот пока не начал писать жду новых предложений, для того, чтоб упарвление шейпером сделать простым и понятным, а то первая версия немного с толку сбивает :(

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...