Перейти до

Flexshape for Linux - Dynamic Shaper


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

Ладно. Тогда, раз сроки окончания (или даже начала) написания новой версии не определены, помоги с настройкой текущей версии. А то у меня что-то не получается то, чего я хочу.

 

Есть сеть с одним шлюзом. Канал 256Кб/с. Цели:

1. ограничить скорость всех пользователей до 192Кб/с.

2. дать конкретному пользователю канал со скоростью 64Кб/с (безлимитку), чтобы для остальных пользователей это было прозрачно, т.е. чтобы скорость остальных юзеров была равна именно 192Кб/с, а не 192-64. Динамику (VLAN, ppp и т.п.) не использую.

 

Можно такое реализовать? CBQ мне не смог помочь... Squid тоже, т.к. мне нужно ограничить весь траф, а сквид часть трафа пропускал мимо себя (хотя вроде бы настраивал так, чтобы брал весь).

 

Спасибо.

 

P.S. А где можно найти полный список команд/опций настроек для flex'a? То, что есть в доке вроде как маловато.... Или это и все? И еще хотя бы пару рабочих примеров, типа Example.

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

Тема не закрыта и проект не заброшен...

 

Примеры есть в пакете с программой. Описаны все команды.

 

С задачей 192 всем и 64 одному справится любой шейпер... Просто делаешь фильтр на подсеть со скоростью 192 Кбит. И фильтр на айпи со скоростью 64кбит. И будут у тебя люби бегать отдельно и не мешая друг другу. Если, конечно, я правильно понял ситуацию :(

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

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

только все лок.службы (smb и т.д.) шейпятся тоже..... Или я не совсем разобрался в конфигах)

умные люди помогите, пожалуйста, может кто-то реализовывал уже

Відредаговано keshaLG
Ссылка на сообщение
Поделиться на других сайтах
  • 4 weeks later...
  • 8 months later...

Есть наработки в этом направлении, но проект "завис" немного.

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

 

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

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

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

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

По поводу прикручивания к stargazer-у, я сделал у себя примерно так:

Мои условия - есть пользователи которые подключены по безлимитмным тарифам, для них соответственно устанавливаются ограничения на скорость, но! нет ограничений на доступ к локальным ресурсам и к сети оптимы.

1) В стартовом скрипте фаервола

# создаю цепочки для установки меток входящего трафика

$IPTABLES -N mark_trafic_in -t mangle

 

$IPTABLES -N mark_optima_in -t mangle

$IPTABLES -t mangle -A mark_optima_in -s 213.154.192.0/20 -j MARK --set-mark 1

...

$IPTABLES -t mangle -A mark_optima_in -s 213.154.208.0/23 -j MARK --set-mark 1

 

$IPTABLES -N mark_local_in -t mangle

$IPTABLES -t mangle -A mark_local_in -s $LOCAL_IP -j MARK --set-mark 1

...

$IPTABLES -t mangle -A mark_local_in -s $LOCAN_IP_RANGE -d $LAN_IP_RANGE -j MARK --set-mark 1

 

$IPTABLES -t mangle -A FORWARD -j mark_trafic_in

$IPTABLES -t mangle -A FORWARD -j mark_optima_in

$IPTABLES -t mangle -A FORWARD -j mark_local_in

 

# ну и собственно - режем трафик - начало

$TC qdisc add dev $LAN_IFACE root handle 1: htb

$TC class add dev $LAN_IFACE parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k

 

2) OnConnect

# выделяю скорость из названия тарифа

tarif=`cat "$usercfg" | grep "Tariff=" | cut -d"=" -f2`

if [ "$tarif" = "Unlim-128" ]; then

speed=128

elif [ "$tarif" = "Unlim-256" ]; then

speed=256

else

speed=0

fi

id_net=`echo $IP | gawk -F. '{ print $3 }'`

id_num=`echo $IP | gawk -F. '{ print $4 }'`

iface="lan0"

 

IPTABLES="/usr/sbin/iptables"

TC="/sbin/tc"

 

if [ $speed -gt 0 ]; then

$TC class add dev $iface parent 1:1 classid 1:$id_num htb rate $speed'kbit' burst 20k

$TC filter add dev $iface parent 1: protocol ip prio 16 handle $id_num fw classid 1:$id_num

$IPTABLES -t mangle -A mark_trafic_in -d $IP -j MARK --set-mark ${id_num}

fi

 

3) OnDisconnect

# установка переменных такая же как и выше

$IPTABLES -t mangle -D mark_trafic_in -d $IP -j MARK --set-mark ${id_num}

while [ $? -eq 0 ]; do

$IPTABLES -t mangle -D mark_trafic_in -d $IP -j MARK --set-mark ${id_num}

done

 

$TC filter del dev $iface protocol ip parent 1: prio 16 handle $id_num fw flowid 1:$id_num

$TC class del dev $iface parent 1:1 classid 1:$id_num

 

Вот собственно и все прикручивние. По факту есть два недостатка.

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

2) Фильтры для шейпера построены исключительно на метках пакетов. Вот это гораздо хуже проблема на мой взгляд, но к сожалению пока не понял как сделать лучше. Умом понимаю что надо было бы ограничиться только меткой для скоростного трафика, а весь немеченный трафик, в случае если ip клиента совпадает по условию, должен попадать в тот класс который для него создан. Но пока что то не могу понять где и как поправить надо. В принципе если бы это было очень насущно, пока что в сети 60 клиентов всего, то уже разобрался бы. Если кто имеет опыт такой настройки - поправте меня, буду признателен.

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

Все кажется просто.

Но, сколько уже перечитал инфы по HTB, а так с места и не сдвинулся.

Иногда приходит просветление, и кажется, что все понятно, но только начинаю что-то реализовывать попадаю в тупик.

Помогите понять как сделать шейпер под Linux на основе htb.

Задача как мне кажеться не сложная.

Есть канал в инет 1мбит, есть клиенты с разными анлимами.

Как реализовать гарантированную скорость всем?

Предполагается что rate абонентов не перекроет ceil канала.

Приоритет у всех одинаковый.

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

--

Если можно обьясните как для одноклеточных. :)

или в аську 152856907

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

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

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

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

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

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

Вхід

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

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

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

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