Вернуться Форум Bashtel.RU > Разное > OS и Программное обеспечение > Linux
Ответ
 
Опции темы Опции просмотра

Подружите с шейпером
Старый 19.01.2011, 11:50   #1
Мимо проходил
 
kvsdom вне форума
Регистрация: 27.09.2007
Сообщений: 43
По умолчанию Подружите с шейпером

Требуется помощь в настройке шейпера.
Имеется адсл-модем со встроенным роутером Акорп w422g v3. К нему подключен стационарный компьютер по LAN и пара клиентов по wi-fi. Интернет раздается по DHCP. Эта модель модема примечательна тем, что функция шейпера исполнена, так скажем, "по коммунистически" - то есть всем поровну. Что не устраивает хозяина модема. Ему требуется чтобы вай-фай-пользователи получали по 256 кбит (достаточно для агентов, мыла и скайпа).
Автор прошивки на неофициальном форуме поддержки отсылает всех в ман по LARTC, но при этом намекает что обычному пользователю не стоит совать свой нос туда, куда собака письку не сует, а доверить это дело профессионалу. Нормальному линукс админу, по его словам, понадобится 10-15 минут чтобы написать 2,5 правила для tc или поправить скрипт шейпера.
Скрость инета 2М/512к, торрентами не пользуется.
Дополнительные вопросы приветствуются
скрипт шейпера по дефолту:
#!/bin/sh

SHAPER_SUPPORT=`flash get SHAPER_ENABLE | cut -f 2- -d =`
OUTIFACE=ppp0
LOG="logger -t init.d"

start() {

#----------------------------------------------CLEAR---------------------------------------------------------------
tc qdisc del dev br0 root > /dev/null 2>&1
tc qdisc del dev $OUTIFACE root > /dev/null 2>&1
tc qdisc del dev $OUTIFACE ingress > /dev/null 2>&1

if [ "$SHAPER_SUPPORT" != "on" ]; then
$LOG "Shaper disabled by user."
exit 0
fi

$LOG "Start shaper..."
NATFASTPATH=`flash get NFASTPATH_ENABLED | cut -f 2- -d =`
if [ -f /proc/FastPath ] && [ "$NATFASTPATH" = "1" ]; then
echo 0 > /proc/FastPath
echo "Disable fastpath if shaper is up."
fi

$LOG "Load needs modules..."
modprobe sch_esfq > /dev/null 2>&1
modprobe sch_sfq > /dev/null 2>&1

$LOG "Tune netsched..."
#get parametrs
BANDWIDTHUP=`flash get TOTAL_BANDWIDTH_UP | cut -f 2- -d =`
BANDWIDTHDOWN=`flash get TOTAL_BANDWIDTH_DOWN | cut -f 2- -d =`
BANDWIDTHUP_LIMIT=`flash get TOTAL_BANDWIDTH_LIMIT_UP | cut -f 2- -d =`
BANDWIDTHDOWN_LIMIT=`flash get TOTAL_BANDWIDTH_LIMIT_DOWN | cut -f 2- -d =`
LAN_IP_ADDR=`flash get LAN_IP_ADDR | cut -f 2- -d =`
LAN_IP_ADDR2=`flash get LAN_IP_ADDR2 | cut -f 2- -d =`
SHAPER_IN_ENABLE=`flash get SHAPER_IN_ENABLE | cut -f 2- -d =`

#--------------------------------------------INCOMING---------------------------------------------------------------
#all output traffic for ppp0
$LOG "All incoming ppp rate: normal $BANDWIDTHDOWN_LIMIT , maximum $BANDWIDTHDOWN (kbit/s)"
tc qdisc add dev br0 root handle 1: htb default 22
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 ${BANDWIDTHDOWN}kbit \
quantum 1500 burst 100k
tc class add dev br0 parent 1:1 classid 1:3 htb rate 80 \
ceil 90mbit prio 0 quantum 1500 burst 100k

tc class add dev br0 parent 1:2 classid 1:20 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
ceil ${BANDWIDTHDOWN}kbit prio 1 quantum 1500
tc class add dev br0 parent 1:2 classid 1:21 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
ceil ${BANDWIDTHDOWN}kbit prio 2 quantum 1500
tc class add dev br0 parent 1:2 classid 1:22 htb rate ${BANDWIDTHDOWN_LIMIT}kbit \
ceil ${BANDWIDTHDOWN}kbit prio 3 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:20 handle 20: 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

if [ "$SHAPER_IN_ENABLE" = "on" ]; then
#filters for marked in prerouting
tc filter add dev br0 parent 1:0 prio 1 protocol ip handle 20 fw flowid 1:20
tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 21 fw flowid 1:21
tc filter add dev br0 parent 1:0 prio 3 protocol ip handle 22 fw flowid 1:22
else
#HIGH icmp,ssh,https,telnet,sip,dns //fix me
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 21 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 23 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 53 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip dport 53 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 443 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip sport 5060 0xffff flowid 1:20
tc filter add dev br0 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:20

#MEDIUM http/ftpdata/udp
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip sport 80 0xffff flowid 1:21
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip dport 80 0xffff flowid 1:21
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip sport 20 0xffff flowid 1:21
tc filter add dev br0 parent 1:0 protocol ip prio 2 u32 match ip protocol 17 0xff flowid 1:21

#LOW smtp/pop and others
tc filter add dev br0 parent 1:0 protocol ip prio 3 u32 match ip sport 110 0xffff flowid 1:22
tc filter add dev br0 parent 1:0 protocol ip prio 3 u32 match ip sport 25 0xffff flowid 1:22
fi

#local connections
tc filter add dev br0 parent 1:0 protocol ip prio 0 u32 match ip src $LAN_IP_ADDR flowid 1:3

#---------------------------------------------OUTGOING--------------------------------------------------------------
#all output traffic for ppp0
$LOG "All outgoing ppp rate: normal $BANDWIDTHUP_LIMIT , maximum $BANDWIDTHUP (kbit/s)"
tc qdisc add dev $OUTIFACE root handle 1: htb default 24
tc class add dev $OUTIFACE parent 1: classid 1:1 htb rate ${BANDWIDTHUP}kbit quantum 1500 burst 50k

tc class add dev $OUTIFACE parent 1:1 classid 1:23 htb rate ${BANDWIDTHUP_LIMIT}kbit \
ceil ${BANDWIDTHUP}kbit prio 0 quantum 1500
tc class add dev $OUTIFACE parent 1:1 classid 1:24 htb rate ${BANDWIDTHUP_LIMIT}kbit \
ceil ${BANDWIDTHUP}kbit prio 1 quantum 1500

tc qdisc add dev $OUTIFACE parent 1:23 handle 23: sfq perturb 10 quantum 1500
tc qdisc add dev $OUTIFACE parent 1:24 handle 24: sfq perturb 10 quantum 1500

tc filter add dev $OUTIFACE parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23
tc filter add dev $OUTIFACE parent 1:0 prio 1 protocol ip handle 24 fw flowid 1:24

$LOG "Shaper start OK..."
}

stop() {
$LOG "Stop shaper..."
tc qdisc del dev br0 root > /dev/null 2>&1
tc qdisc del dev $OUTIFACE root > /dev/null 2>&1
tc qdisc del dev $OUTIFACE ingress > /dev/null 2>&1
rmmod sch_esfq > /dev/null 2>&1
rmmod sch_sfq > /dev/null 2>&1
}

case "$1" in
start)
start
;;

stop)
stop
;;

restart)
stop
start
;;

*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
  Ответить с цитированием
 
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подружите с Ubuntu tokyo.O Linux 14 28.01.2011 23:32



Текущее время: 17:48. Часовой пояс GMT +3.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
top of page