Тем не менее договор на сотрудничество с теми кто пишет прошивки они расторгли
Тем не менее договор на сотрудничество с теми кто пишет прошивки они расторгли
svin0:Батуров:chmod +x shaper
Чтобы сделать файл исполняемым.
Прошу извинения за свои вопросы. Но это мои первые операции над модемом.
Итак что я понял.
1. Копирую содержание Вашего скрипта в блокнот.
2. Сохраняю это в файл с именем shaper.
3. Заливаю этот файл в папку /rwfs/init.d:
4. Эти же операции делаю создав и заливая файл ips.txt
5. Далее непонятки куда конкретно и как вводить команду chmod +x shaper
6. В настройках модема включаю shaper
7. перегружаю модем и смотрю результаты.
Растолкуйте мне пункт 5 или что я не догоняю.
Ваш покорный ученик.
Зайдите через telnet и выполните
chmod +x /rwfs/init.d/shaper
Вроде бы получилось. Теперь смотрю, что изменилось.
Большое спасибо svin0 за терпение и помощь.
офлайн
Herr_Oberst
Junior Member
|
|
51 |
14 лет на сайте Город:
|
делал ли кто:
имеем byfly тариф плюс1 (по траффику). и 4 компа в сети со стат. адресами
надо прошить 2 соединения в модем, для 3х - доступ в платник и гость - в 1 - только гость.
можно ли такое и как реализовать.
версия 2
#!/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=2048
# Максимальная суммарная скорость входящего:
BDOWN=4096
#tc filter add dev br0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.72.251 flowid 1:27 - вроде бы пользователей добавил, как мне кажется даже правильно, только вот как добавить ещё один, класс, у которого приоритет будет ниже, чем у остальных (серв-файлокачалщик)
# ----------------------------------------------------------------
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 / 7"
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
tc class add dev br0 parent 1:20 classid 1:25 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:20 classid 1:26 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:20 classid 1:27 htb rate ${BDOWN_PL_MIN}kbit ceil ${BDOWN_PL}kbit prio 3 quantum 1500
let "BDOWN_MIN = $BDOWN_RATE / 7"
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 class add dev br0 parent 1:30 classid 1:35 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:30 classid 1:36 htb rate ${BDOWN_MIN}kbit ceil ${BDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:30 classid 1:37 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:24 handle 25: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:24 handle 26: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:24 handle 27: 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 qdisc add dev br0 parent 1:35 handle 34: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:36 handle 34: esfq perturb 10 hash dst quantum 1500
tc qdisc add dev br0 parent 1:37 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.72.1 flowid 1:21
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.72.2 flowid 1:22
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.72.3 flowid 1:23
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.72.8 flowid 1:24
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.72.9 flowid 1:25
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.72.10 flowid 1:26
tc filter add dev br0 parent 1:0 protocol ip prio 3 u32 match ip dst 192.168.72.251 flowid 1:27
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.72.1 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.72.2 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.72.3 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.72.8 flowid 1:34
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.72.9 flowid 1:35
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.72.10 flowid 1:36
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip src $IPS match ip dst 192.168.72.251 flowid 1:37
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
пытался отредактировать скрипт под себя, ТП домосед за 150тыс, 6 юзеров с равными приоритетами и серв с более низким приоритетом, не смог вкурить как добавить ещё один класс, с более низким приоритетом, если не сложно, то проверьте, что есть и подскажите, как добавить класс.
и ещё один глупый вопрос подключаюсь к модему по телнету и попадаю в меню, где можно вводить только цифры для перемещения по этому меню, где или как ввести "chmod +x /rwfs/init.d/shaper"
у меня в принципе есть доступ к модему v3, могу при желании забрать
в чем задача-то конкретно стоит?
если задача написать шейпер по честному делению канала по ИП адресам и при это впилить его в встроенные скрипты, то нужно:
1. Выяснить, где ставятся метки.
2. Выставить метки в правилах iptables.
3. Раскидать полученный трафик по классам, используя метки.
4. Задать политики шейпинга трафика.
Нужны примеры, могу помочь, если что.
Так, svin0, подскажите как добавить ещё один приоритет?
Вроде бы в /rwfs/init.d/iptables. Без меток будет достаточно.
если это мне,то я поясните я не понял).
Mr.Smith, меня интересует:
1. Возможность назначения приоритетов для IP адресов и нарезка скорости исходя из этих приоритетов.
2. Разрешение/запрет определённых ресурсов для IP адресов
3. Ограничение доступа/скорости по достижению лимита трафика.
sfstudio
Не зарегестрирован на онлайнере. Пните там народу что /rwfs/init.d/shaper это симлинк на /rwfs/rc.d/S11shaper и менять нужно последний файл а не символическую ссылку. Если заменить только симлинк будет каша при загрузке.
Вот оно что. Надеюсь, владельцы модемов заметили симлинк. В Debian наоборот, симлмнки в rc*.d.
Повторю еще раз, у меня нет этого модема, так что пользуйтесь скриптом осторожно, а лучше допишите под себя
BASHORG, создайте еще одну ветку, присвоив требуемую скорость и начав обработку с этого класса или окончив этим классом в зависимости от потребностей.
я это и хочу, но не знаю как, объясните, если не сложно
вот эти строчки
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
и ещё раз повторюсь "chmod +x /rwfs/init.d/shaper" где прописать.
Если не сложно, то объясните как для тупого, желание разобраться есть, но всё кажется таким не подъёмным и не понятным.
офлайн
Herr_Oberst
Junior Member
|
|
51 |
14 лет на сайте Город:
|
Тут http://ddixlab.ru/forum/viewtopic.php?t=1464&highlight=w422gv3
sfstudio, попросил сообщение кидануть(правда уже с опозаднием в месяц получилось) может это кому чего сказало:
Не зарегестрирован на онлайнере. Пните там народу что /rwfs/init.d/shaper это симлинк на /rwfs/rc.d/S11shaper и менять нужно последний файл а не символическую ссылку. Если заменить только симлинк будет каша при загрузке.
Ну что всё забросили?
не дождетесь...
тут намедни налабал статью в порыве вдохновения, браузер глюкнул и все пропало
от злости ничего и не писал долго
вот версия 0.2
===========================================================
Для начала немного теории:
qdisc - дисциплина (queue discipline) - это алгоритм работы с очередями, в данном случае применяется алгоритм HTB - hierarchical token bucket
br0 - интерфейс моста (bridge) - это мост между eth0 и ppp0
class - это класс трафика, просто некая категория, которую лично вы определили для себя, например, http-трафик, p2p-трафик
filter - это правило, которое определяет, по какому критерию выделять из всего потока данных нужный нам трафик и запихивать его в класс
иерархия классов - это дерево, у которого есть корень (ваш полный канал), и ветви - это классы скоростей, определенных для классов
теперь комментарии к строкам:
tc qdisc add dev br0 root handle 1: htb default 0
определить корневую (root) дисциплину обработки очереди по алгоритму htb, весь трафик, который не будет обработан явно указанными вами фильтрами, попадет в класс с номером 0 (default 0), лучше не ноль, а что-нить другое, просто номер самого низкоприоритетного класса
tc class add dev br0 parent 1: classid 1:1 htb rate 90mbit quantum 1500 burst 500k
задаем первый класс, rate - это полная ширина канала, берется на 5-10% меньше реальной ширины, это нужно для того, чтобы создать очередь пакетов _на нужном нам_ интерфейсе, этот факт нужно понять
представьте себе плотину на реке, построенную, чтобы управлять потоком воды, тут цель аналогичная
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
rate - это максимальная величина скорости потока из класса-родителя, с которой будет "истекать" очередь
ceil - гарантированная скорость класса-родителя (нарисуйте на бумажке дерево и прочитайте эту фразу еще раз)
prio - приоритет потока, значение от 0 до 7, то есть всего 8
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
кому что непонятно?
писать примеры просто лень, если кто отважится разобраться хотя бы в этом и составит конкретный пример на 2-3 класса, я помогу составить скрипт, но с нуля писать не буду
признаком того, что кто-то прочитал и понял, буду считать первый самый правильный вопрос, на который я совершенно не дал никакого ответа
да, вот такой вот я лентяй
===========================================================
офлайн
Odyssey_ua
Neophyte Poster
|
|
3 |
14 лет на сайте Город:
|
хотелось бы реализовать вот это
Равномерное распределение трафика между lan1/lan3/lan4/wi-fi
Если один или несколько lan (lan1, lan3, lan4) и/или wi-fi не задействованы, то весь трафик для upload и download распределить, как: 100%-lan2(128кбит/с) поровну между задействованными.
Распределение между соединениями для lan1, lan3, lan4 и wi-fi: torrent (prio9), http/ftp (prio2), email (prio1),Skype (prio0) - по приоритетам, если что-то не задействовано, распределять между остальными. Гарантировано выделить:
Skype = 256 кбит/с на up и down.
email = 512 кбит/с на up и down
http/ftp = 2048 кбит/с на up и на down = 512 кбит/с
Torrent = вся полоса, если другие не задействованы
Torrent для lan1, lan3, lan4 и wi-fi используют порты: XXXXX, XXXXX+1, XXXXX+2, соответственно для lan1, lan3, lan4
Odyssey_ua, Можно нескромный вопросик.. Сколько компов в сети?
4 компа с торрентами пусть даже по 50 сессий и смерть железке будет уже без всяких шейперов. Уж извините, но тут ведь простенькая железка, а по картинке вы целые сетки цепляете и это уже совсем другие требования к железу.