svin0, purler, Отлично. Спасибо за помощь. Я постараюсь четко изложить одну типовую задачу. Пятница - суббота.
svin0, purler, Отлично. Спасибо за помощь. Я постараюсь четко изложить одну типовую задачу. Пятница - суббота.
Есть неплохая программа Acorp монитор.
Программа визуально показывает трафик по каждому IP подключенному к модему
Но эта программа с данной версией модема не работает. И это плохо.
Я модем acorp я выбрал лишь по одной причине, это возможность включения шейпера. Но как оказалось на практике настроить шейпер для человека на уровне продвинутого пользователя оказалось сложной задачей. Все решается закачкой соответствующего скрипта. Может можно написать программу с хорошим интерфейсом, доступным для понимания большинства пользователей, которая бы формировала и закачивала ответствующий скрипт в модем.
А потом действия этого скрипта можно было бы наблюдать с помощью этой же программы. Это была бы суперпрограмма.
офлайн
Herr_Oberst
Junior Member
|
|
51 |
14 лет на сайте Город:
|
to purler, svin0:
сейчас канал на ByFly, разрешено расширять лишь имея тариф "СуперДомосед"(up/down - 512/2048), так что если Батуров не расширил его ранее - у нас должен быть канал одинаковый (512/204. Остается различие лишь в тарифных планах: у меня - «Домосед XXL»(512/1024), у Батурова - «Домосед плюс»(512/512).
Количество действующих компов ~4.
Существующий шейпер - имеет в своей основе глобальное деление, и зачастую, это проверенно на практике, его работу можно охаректиризовать, как очень сомнительная. Проще говоря, если кто либо, что нибудь начинает качать, остальные, практически, сасут палец...
Модем держит два соединения: Гость, платник. В итоге, если использовать на оба соединения одну настройку шейпера, гость зачастую начинает перекрывать платник. Хотелось бы каждое из соединений шейпить отдельно.
----------------------------------------------------------------------------------------------------------------------
Чтобы стало более понятно приведу пример:
по моей ситуации
число компов: ~4
общий канал: 512/2048
платник: 512/1024
значит для платника уже имеем:
Maximum download rate: ~1024
Limit download rate: ~256
Дабы гость не перекрывал платник, то, что из общего канала не задействует платник - отдаем гостю
2048-1024=1024, отсюда для гостя получаем
Maximum download rate: ~1024
Limit download rate: ~256
----------------------------------------------------------------------------------------------------------------------
Для батурова, получается следующее:
(количество действующих компов он не указал, поэтому приведу также цифру 4)
общий канал: 512/2048
платник: 512/512
платник:
Maximum download rate: ~512
Limit download rate: ~128
гость:
Maximum download rate: ~1536
Limit download rate: ~384
----------------------------------------------------------------------------------------------------------------------
Получается такая задача:
1. разделить общий канал download rate на два соединения(Maximum download rate) I. платник=платник, II. гость=общий канал - платник
2. шейпить каждое соединение со своими настройками(Limit download rate)
3. так как Upstream Speed не поднимается как для канала, так и для любого тарифа выше 512 - шейпить Upstream Speed для всех соединений и компов поровну
И будет всем счастье....
Постановка задачи N1
Существующая ситуация.
Есть некое количество компьютеров подключенных к модему. Учитывая, что при серфинге сайтов торможение инета практически незаметно, а торможение возникает лишь при закачке файлов, было принято выделить один компьютер для коллективного использования его для закачки. Доступ к этому компьютеру для управления закачками осуществляется с помощью таких распространенных программ как Radmin.
Надо.
Необходимо при отсутствии пользователей в сети этому компьютеру выделялся весь канал. При появлении активности кого-либо пользователя этот компьютер бы получал 30% от всей пропускной способности канала. 70% шла бы проявившему активность компьютеру. При появлении двух компьютеров 30% качающему компьютеру и 35% этим двум компьютерам и так далее.
Исходные данные
К – количество компьютеров в сети
T – процентное соотношение выделения трафика для качающего компьютера в нашем примере 30%
Постановка задачи N2
Существующая ситуация.
Все компьютеры в сети пользуются инетом. Но один активно, другой не очень, третий слабо. Каждую неделю снимается статистика с модема по потребленному трафику.
Надо.
После анализа потребленного трафика распределить загрузку канала.
T1 первого компьютера
T2 для второго и т.д.
Например. Пять компьютеров сети При равном распределении каждый должен получить 20% трафика. После анализа трафика трафик можно распределить так 30%-25%-20%-15%-10%. И конечно при отсутствии кого-либо в сети весь трафик в этой пропорции делился на остальных.
Постановка задачи N3
Инет раздается всем одинаково, но модем блокирует закачки с 23-00 до 9-00
Это верно как для платника, так и для гостя.
внутренний ресур качается на 8 мБитах, остальной инет - 1 мБит согласно договора... Надобности в чем-то сильно отличающемся от стандартного я не вижу
расскажи ка нам как это он так качает? где ты забиваешь величину канала гостя и платки чтобы модем различал сколько кому чего.
вопрос прост- если у меня 2 мегабита гостя+ 2 мегабита инэта, то при прописывании в вэбе 4мегабит и делении его на всех не учитывается направление траффика и я могу занять скачкой( если вдвоем например сидим) 2 мегабита платки, а второй комп получит "чесно" только 2 мегабита гостя, вместо отобрания 1 мегабита инэта у меня. а гость вообще может и простаивать. его мне например шейпить не обязательно- он на радио в основном идет.
кому еще не понятно что надо??
ну и может еще статическую величину раздаваемого канала по ип сделать... а самый лучший вариант выбора кому статический, кому динамический...
так как Upstream Speed не поднимается как для канала, так и для любого тарифа выше 512 - шейпить Upstream Speed для всех соединений и компов поровну
у меня мегабит...
Сложные у вас задачи, не будет универсального решения. Одним шейпером не обойтись.
На выходных попробую написать оптимальный вариант для вышесказанных требований.
Для начала покажите вывод команды
ifconfig && ls /bin && ls /sbin
Текста будет много, пользуйтесь сервисом pastebin.
Все скорости и адреса будут задаваться переменными в начале скрипта, в вебе останется только включение/отключение. Исходящий будем считать 512Кбит/с для всех юзеров и всех интерфейсов, под платник или гость отводится либо часть, либо всё.
А пока проверьте работу этого скрипта.
а возможно ли сделать лимит для определённого мак/ип адреса по трафику, т.е. при достижении N кол-ва гигов у него критично урезается скорость или вообще отключается инет.
офлайн
Herr_Oberst
Junior Member
|
|
51 |
14 лет на сайте Город:
|
офлайн
Herr_Oberst
Junior Member
|
|
51 |
14 лет на сайте Город:
|
по поводу скрипта от svin0, кто-нибудь займитесь...., а то мне уже на смену собираться надо
Herr_Oberst, спасибо.
BASHORG:а возможно ли сделать лимит для определённого мак/ип адреса по трафику, т.е. при достижении N кол-ва гигов у него критично урезается скорость или вообще отключается инет.
Можно создать коллектор трафика при помощи iptables и нескольких скриптов. При достижении определенного значения обнулять счетчик и применять требуемые правила. В интернете много вариантов.
Новый скрипт целиком:
#!/bin/sh
# Переменные:
SHAPER_SUPPORT=`flash get SHAPER_ENABLE | cut -f 2- -d =`
LOG="logger -t init.d"
# ppp0 - платник, ppp1 - гость.
OUTIFACE0=ppp0
OUTIFACE1=ppp1
# В кбит/с
# ----------------------------------------------------------------
# Максимальная скорость входящего платного:
BDOWN_PL=256
# Максимальная суммарная скорость входящего:
BDOWN=2048
# ----------------------------------------------------------------
start() {
if [ "$SHAPER_SUPPORT" = "on" ]; then
$LOG "Start shaper and stop nat fastpath..."
echo 0 > /proc/FastPath
LAN_IP_ADDR=`flash get LAN_IP_ADDR | cut -f 2- -d =`
#LAN_IP_ADDR2=`flash get LAN_IP_ADDR2 | cut -f 2- -d =`
#-----------------CLEAR-----------------
tc qdisc del dev br0 root 2> /dev/null
tc qdisc del dev $OUTIFACE0 root 2> /dev/null
tc qdisc del dev $OUTIFACE1 root 2> /dev/null
tc qdisc del dev $OUTIFACE0 ingress 2> /dev/null
tc qdisc del dev $OUTIFACE1 ingress 2> /dev/null
#-----------------INCOMING-----------------
$LOG "All incoming $OUTIFACE0 rate: $BDOWN_PL (kbit/s)"
$LOG "All incoming $OUTIFACE1 rate: $BDOWN (kbit/s)"
tc qdisc add dev br0 root handle 1: htb default 0
tc class add dev br0 parent 1: classid 1:1 htb rate 90mbit quantum 1500 burst 500k
tc class add dev br0 parent 1:1 classid 1:2 htb rate ${BDOWN}kbit quantum 1500 burst 100k
tc class add dev br0 parent 1:1 classid 1:3 htb rate 80mbit ceil 90mbit prio 0 quantum 1500 burst 100k
tc class add dev br0 parent 1:2 classid 1:20 htb rate ${BDOWN_PL}kbit prio 2 quantum 1500
let "BDOWN_RATE = $BDOWN - $BDOWN_PL"
tc class add dev br0 parent 1:2 classid 1:30 htb rate ${BDOWN_RATE}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
let "BDOWN_PL_MIN = $BDOWN_PL / 4"
tc class add dev br0 parent 1:20 classid 1:21 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:20 classid 1:22 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:20 classid 1:23 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:20 classid 1:24 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
let "BDOWN_MIN = $BDOWN_RATE / 4"
tc class add dev br0 parent 1:30 classid 1:31 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:30 classid 1:32 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:30 classid 1:33 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:30 classid 1:34 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc qdisc add dev br0 parent 1:3 handle 3: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:21 handle 21: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:22 handle 22: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:23 handle 23: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:24 handle 24: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:31 handle 31: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:32 handle 32: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:33 handle 33: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:34 handle 34: esfq perturb 10 hash dst quantum 1500
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.2 flowid 1:21
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.3 flowid 1:22
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.4 flowid 1:23
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.5 flowid 1:24
for IPS in `cat /rwfs/init.d/ips.txt`
do
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.1.2 flowid 1:31
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.1.3 flowid 1:32
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.1.4 flowid 1:33
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.1.5 flowid 1:34
done
tc filter add dev br0 parent 1:0 protocol ip prio 0 u32 match ip src $LAN_IP_ADDR flowid 1:3
#-----------------BRIDGE-----------------
ifconfig br0 txqlen 100
else
$LOG "Shaper disabled by user."
fi
}
stop() {
stop() {
tc qdisc del dev br0 root 2> /dev/null
tc qdisc del dev $OUTIFACE0 root 2> /dev/null
tc qdisc del dev $OUTIFACE1 root 2> /dev/null
tc qdisc del dev $OUTIFACE0 ingress 2> /dev/null
tc qdisc del dev $OUTIFACE1 ingress 2> /dev/null
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
Остальные локальные адреса должны быть заблокированы, т.к. трафик будет идти на максимальной скорости.
Еще надо создать файл ips.txt в /rwfs/init.d:
86.57.151.0/27
86.57.253.1/32
193.232.248.79/32
193.232.248.80/32
82.209.245.151/32
194.158.206.240/32
194.158.206.241/32
194.158.206.246/32
194.158.202.59/32
82.209.195.15/32
86.57.250.0/23
86.57.246.0/24
93.84.112.0/21
178.124.128.0/22
91.149.189.0/25
91.149.189.128/26
93.125.53.0/24
91.149.157.0/25
91.149.157.192/26
194.158.199.177/32
Писал скрипт с учетом шейпинга исходящего, но так и не дописал. Слишком много тонкостей при делении скорости на тарифах с x/256. Частное решение может быть, универсальное с переменными - слишком объемное, с проверками результата. Не составит труда настроить исходящий по аналогии, но с разделением между OUTIFACE0 и OUTIFACE1.
Думаю, примеров хватает. Теперь можете настроить шейпинг под себя
Уважаемый svin0 позвольте по задавать наиглупейшие вопросы.
Итак, исходный данные
Вчера переключились на Домосед XXL
Это исходящий 512 и входящий 1024
Появилось пять компьютеров сети. со статическими адресами 192.168.127.2 – 6
Модем имеет адрес 192.168.127.1
Задача максимально упрощенная хотелось чтобы весь трафик делился динамически на все 5 компьютеров.
Распишите пожалуйста по шагам.
1.Какие настройки для этого примера сделать в web настройках модема.
Вкладки QoS Classification и QoS Simple shaper
2. Каким образом заливать код скрипта в модем.
3. Как предусмотреть возврат к прежнему состоянию, если что не так.
Потом постараюсь все аккуратно проделать.
Батуров:1.Какие настройки для этого примера сделать в web настройках модема.
2. Каким образом заливать код скрипта в модем.
3. Как предусмотреть возврат к прежнему состоянию, если что не так.
QoS Classification скорее всего не понадобится. В QoS Simple shaper для скрипта нужно включить шейпер. 2 и 3 - WinSCP.
Так как адресов больше, то придется править скрипт.
svin0,
Продолжение вопросов. Как я понял WinSCR обычный клиент для закачки файлов в модем.
Можно ли воспользоваться для этой цели Total Commanderom
Приведенный скрипт надо загнать в файл. И поместить его в папку
/rwfs/init.d:
Вопрос. Какое имя файла и расширение должно быть.
В эту же папку забрасывается и файл ips.txt
После заброски файлов как активировать команду скрипта?
Батуров:Можно ли воспользоваться для этой цели Total Commanderom
Если через ftp/smb либо с соответствующим плагином, то да.
Батуров:Вопрос. Какое имя файла и расширение должно быть.
Имя shaper.
chmod +x shaper
Батуров:После заброски файлов как активировать команду скрипта?
Через веб и перезагрузить.
svin0:Сложные у вас задачи, не будет универсального решения. Одним шейпером не обойтись.
...
во-во...поэтому производитель никогда не будет заморачиваться этим
...это чтобы иллюзий не было, что производитель озаботится раздачей слонов писюкам в сети за модемом, да еще в динамике...динамика была и останется для ограничения трафика по типу и на atm-уровне в любых xDSL-модемах согласно QoS
...ну исходя из этого остается либо юзать прокси (разбираться придется самим...саночки возить:)) или куплять недорогой управляемый свитч (типа DLINK) c возможностью резки на ethernet портах и менеджмент интерфейсом понятным для обезьяны...и все это в статике будет.
p.s. последнее пользуют в soho и не дурят себе голову...да и свитч не шумит и энергии мало жрет
svin0:
Код: chmod +x shaperЧерез веб и перезагрузить.
Как я понял в командной строке модемного терминала после загрузки скрипта ввести эту команду chmod +x shaper Потом черех веб интерфейс включить шейпер и перегрузить модем.
otievy:svin0 :Сложные у вас задачи, не будет универсального решения. Одним шейпером не обойтись.
...
во-во...поэтому производитель никогда не будет заморачиваться этим
Глупый и недалекий производитель, отдаст рынок другим. Которые или математику для модема напишут толковую и тех поддержку организует.
А acorp.ru судя по сайту мрачная контора. Там нет даже описания новых модемов, да и информация очень сильно устарела.
DLinkи и Asus Скоро вытяснят их с этого рынка.
Батуров:...Глупый и недалекий производитель, отдаст рынок другим. Которые или математику для модема напишут толковую и тех поддержку организует...
китайские товарищи неглупые и ненедалекие и рынком модемным владеют, выпуская простые и дешевые хардварные решения с недософтом, зная что кому надо будет доводить до ума сам, тратя свое время и бесплатно (мизерное %число), большинство съест и так, а кто то найдет гибридное решение, докупив недостающее, помогая тем же товарищам захватывать рынок дешевым хардваром...