Правильный шейпер. Исходящая скорость и интервалы
Re: Правильный шейпер. Исходящая скорость и интервалы
у меня Lenny родной поптоп всё показываеться
Re: Правильный шейпер. Исходящая скорость и интервалы
поставил accel-pptp 0.8.4 с git, на 2.6.31 версия 0.8.3 не компилируется..
супер vpn лётает, при сжатии mppc не чё не глючит)
а вот логирование так и не заработало, погуглил..
и вот
в конфиге /etc/pptpd.conf
нужно включить
Код: Выделить всё
modinfo pptp
filename: /lib/modules/2.6.31/extra/pptp.ko
license: GPL
author: Kozlov D. (xeb@mail.ru)
description: Point-to-Point Tunneling Protocol for Linux
depends: pppox,ppp_generic
vermagic: 2.6.31 SMP mod_unload modversions 686
parm: log_packets:int
parm: log_level:Logging level (default=0) (int)
а вот логирование так и не заработало, погуглил..
и вот
в конфиге /etc/pptpd.conf
нужно включить
Код: Выделить всё
logwtmp
Re: Правильный шейпер. Исходящая скорость и интервалы
На forum.nag.ru автор об этом рассказывал. Я даже собирал под Lenny пакеты последнего current.Dendj писал(а):поставил accel-pptp 0.8.4 с git, на 2.6.31 версия 0.8.3 не компилируется..
То, что оно не скомпилилось - это полбеды, в 2.6.26 0.8.3 наглухо вешает ядро .
Шейпер заработал?Dendj писал(а):а вот логирование так и не заработало, погуглил..
и вот
в конфиге /etc/pptpd.conf
нужно включитьКод: Выделить всё
logwtmp
Re: Правильный шейпер. Исходящая скорость и интервалы
да,
но я его толком не тестил, вчера собирал гремучую смесь ppp-2.4.4-mppe-mppc-gigawords
но я его толком не тестил, вчера собирал гремучую смесь ppp-2.4.4-mppe-mppc-gigawords
Re: Правильный шейпер. Исходящая скорость и интервалы
вот мой вариант, с фильтрами сетей
ip-up
ip
ip-down
ip-up
Код: Выделить всё
#!/bin/sh
#ABillS %DATE% %TIME%
#
# When the ppp link comes up, this script is called with the following
# parameters
# $1 the interface name used by pppd (e.g. ppp3)
# $2 the tty device name
# $3 the tty device speed
# $4 the local IP address for the interface
# $5 the remote IP address
# $6 the parameter specified by the 'ipparam' option to pppd
##DEBUG 0=ОТКЛ. 1=ВКЛ.
DEBUG_OK=0
if [ "$DEBUG_OK" == "1" ]; then
set -x
# Uncoment the line below to enable logging
LOGFILE=/tmp/pppd_up_log
# This one is for replacing the log
LOGREPLACE=1
fi
###########
FILENET="/etc/ppp/ip-up.d/ip"
FILENETOK=1
SPEEDNET="4084kbit" #Скорость ресурсов
SH_FILE="/etc/ppp/ip-up.d/shaper" #адрес этого скрипта
MYSQLHOST="127.0.0.1"
MYSQLUSER="abills"
MYSQLPASSW="Пароль"
DOWNK="100mbit" #Вся Полоса канала
############
INPUT=ifb0;
UBURST="burst 512k"
DBURST="burst 512k"
TCFR="/sbin/tc filter replace"
TCCR="/sbin/tc class replace"
TCQR="/sbin/tc qdisc replace"
TCQD="/sbin/tc qdisc del"
A_W="/usr/bin/awk"
#__________________________________
if [ "$LOGFILE" == "" ]; then LOGFILE='/dev/null'; fi
if [ "$LOGREPLACE" == "1" ]; then exec 1> "$LOGFILE"; else exec 1>> "$LOGFILE"; fi
USER=`who|grep "$1\ "| $A_W '{print $1}'`
# Everything below is fucking scary
QUERY="SELECT s.in_speed, s.out_speed, TIME_FORMAT(i.end,'%H:%i')
FROM \`trafic_tarifs\` AS s, \`intervals\` AS i, \`dv_main\` AS dv, \`users\` AS u
WHERE u.id = '$USER'
AND dv.uid = u.uid
AND dv.tp_id = i.tp_id
AND s.interval_id = i.id
AND i.begin <= NOW()
AND i.end > NOW();"
Q_RESULT=`/bin/echo $QUERY | /usr/bin/mysql -u shaper -p -h $MYSQLHOST -D $MYSQLUSER --password=$MYSQLPASSW --silent`
UPSPEED=`/bin/echo $Q_RESULT | $A_W '{print $1}'`
DOWNSPEED=`/bin/echo $Q_RESULT | $A_W '{print $2}'`
NEXTINT=`/bin/echo $Q_RESULT | $A_W '{print $3}'`
echo "UPSPEED:" $UPSPEED " DOWNSPEED:"$DOWNSPEED" NEXTINT:"$NEXTINT
TASKS=`at -l | $A_W '{print $1}'`
for i in $TASKS
do
TASK_TEXT=`at -c $i`
if echo $TASK_TEXT | grep $1 > /dev/null;
then
atrm $i
fi
done
/bin/echo "$SH_FILE $1" | at $NEXTINT
if [ -f /var/run/radattr.$1 ]
then
PPPNUM=`echo $1|sed 's/ppp//'|$A_W '{printf "%03d",$1}'`
IP=$5
QDISC_ETH=`tc qdisc show dev $INPUT|grep -v sfq|$A_W '{print $2}'`
DOWNSPEED=$(($DOWNSPEED*110/100))
UPSPEED=$(($UPSPEED*105/100))
if [ "$QDISC_ETH" != "htb" ];
then
ip l s $INPUT up
$TCQD dev $INPUT root &>/dev/null
$TCQR dev $INPUT root handle 1: htb default 2 r2q 100
$TCCR dev $INPUT parent 1: classid 1:1 htb rate ${DOWNK} ceil ${DOWNK} burst 1024k cburst 64k prio 2
$TCCR dev $INPUT parent 1: classid 1:2 htb rate ${DOWNK} ceil ${DOWNK} burst 1024k cburst 64k prio 1
$TCQR dev $INPUT parent 1:2 handle 2: sfq perturb 10 quantum 1514
fi
$TCQD dev $1 root &>/dev/null
$TCQD dev $1 ingress &>/dev/null
##### speed server->client
if [ "$UPSPEED" != "0" ] ;
then
URATE=$[$UPSPEED/2]
$TCQR dev $1 root handle 1: htb default 20 r2q 100
$TCCR dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit $UBURST quantum 1514
$TCCR dev $1 parent 1:1 classid 1:10 htb rate ${URATE}kbit ceil ${UPSPEED}kbit $UBURST prio 1 quantum 1514
$TCCR dev $1 parent 1:1 classid 1:20 htb rate ${URATE}kbit ceil ${UPSPEED}kbit $UBURST prio 2 quantum 1514
$TCQR dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1514
$TCQR dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1514
if [ "$FILENETOK" == "1" ]; then
$TCCR dev $1 parent 1: classid 1:2 htb rate ${SPEEDNET}
fi
# PRIO1
# ICMP (ip protocol 1) in the interactive class
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
# all UDP traffic are interractive
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 0x11 0xff flowid 1:10
# to make downloads fast while an upload is going on, speed up ACK packets
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 \
match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 \
match u16 0x0000 0xffc0 at 2 \
match u8 0x10 0xff at 33 \
flowid 1:10
# TOS Minimum Delay (ssh, NOT scp)
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
if [ "$FILENETOK" == "1" ]; then
COUNT=0
exec 3<&0
exec 0<$FILENET
while read line
do
#echo "Line $COUNT is " $line
##echo "ADD filter " $line
$TCFR dev $1 parent 1:0 protocol ip prio 1 u32 match ip src $line flowid 1:2
COUNT=$((COUNT+1))
done
exec 0<&3
fi
fi
##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
DRATE=$[$DOWNSPEED/2]
$TCQR dev $1 handle ffff: ingress
$TCFR dev $1 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $INPUT
$TCCR dev $INPUT parent 1:1 classid 1:1$PPPNUM htb rate ${DOWNSPEED}kbit $DBURST quantum 1514
$TCCR dev $INPUT parent 1:1$PPPNUM classid 1:2$PPPNUM htb rate ${DRATE}kbit ceil ${DOWNSPEED}kbit $DBURST prio 10 quantum 1514
$TCCR dev $INPUT parent 1:1$PPPNUM classid 1:3$PPPNUM htb rate ${DRATE}kbit ceil ${DOWNSPEED}kbit $DBURST prio 1 quantum 1514
$TCQR dev $INPUT parent 1:2$PPPNUM handle 2$PPPNUM: sfq perturb 10 quantum 1514
$TCQR dev $INPUT parent 1:3$PPPNUM handle 3$PPPNUM: sfq perturb 10 quantum 1514
$TCFR dev $INPUT parent 1: protocol ip prio 1$PPPNUM handle 0x1$PPPNUM u32 match ip src $IP/32 flowid 1:2$PPPNUM
$TCFR dev $INPUT parent 1:2$PPPNUM protocol ip prio 2$PPPNUM handle 0x2$PPPNUM u32 match ip src $IP/32 match ip tos 0x10 0xff flowid 1:3$PPPNUM
$TCFR dev $INPUT parent 1:2$PPPNUM protocol ip prio 3$PPPNUM handle 0x3$PPPNUM u32 match ip src $IP/32 match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 match u16 0x0000 0xfc0 at 2 match u8 0x10 0xff at 33 flowid 1:3$PPPNUM
$TCFR dev $INPUT parent 1:2$PPPNUM protocol ip prio 4$PPPNUM handle 0x4$PPPNUM u32 match ip src $IP/32 match ip protocol 1 0xff flowid 1:3$PPPNUM
fi
fi
Код: Выделить всё
10.0.192.0/20
10.0.10.0/21
Код: Выделить всё
#!/bin/sh
#ABillS %DATE% %TIME%
#
# When the ppp link comes up, this script is called with the following
# parameters
# $1 the interface name used by pppd (e.g. ppp3)
# $2 the tty device name
# $3 the tty device speed
# $4 the local IP address for the interface
# $5 the remote IP address
# $6 the parameter specified by the 'ipparam' option to pppd
#
##DEBUG 0=ОТКЛ. 1=ВКЛ.
DEBUG_OK=0
if [ "$DEBUG_OK" == "1" ]; then
set -x
# Uncoment the line below to enable logging
LOGFILE=/tmp/pppd_up_log
# This one is for replacing the log
LOGREPLACE=1
fi
if [ "$LOGFILE" == "" ]; then LOGFILE='/dev/null'; fi
if [ "$LOGREPLACE" == "1" ]; then exec 1> "$LOGFILE"; else exec 1>> "$LOGFILE"; fi
INPUT=ifb0;
UBURST="burst 512k"
DBURST="burst 64k"
TCFD="/sbin/tc filter del"
TCFR="/sbin/tc filter replace"
TCCR="/sbin/tc class replace"
TCCD="/sbin/tc class del"
TCQR="/sbin/tc qdisc replace"
TCQD="/sbin/tc qdisc del"
A_W="/usr/bin/awk"
TASKS=`at -l | $A_W '{print $1}'`
for i in $TASKS
do
TASK_TEXT=`at -c $i`
#echo $TASK_TEXT
if echo $TASK_TEXT | grep $1 > /dev/null;
then
atrm $i
fi
done
if [ -f /var/run/radattr.$1 ]
then
PPPNUM=`echo $1|sed 's/ppp//'|$A_W '{printf "%03d",$1}'`
DOWNSPEED=`$A_W '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
$TCQD dev $1 root &>/dev/null
$TCQD dev $1 ingress &>/dev/null
##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
$TCFD dev $INPUT parent 1:2$PPPNUM protocol ip prio 4$PPPNUM
$TCFD dev $INPUT parent 1:2$PPPNUM protocol ip prio 3$PPPNUM
$TCFD dev $INPUT parent 1:2$PPPNUM protocol ip prio 2$PPPNUM
$TCFD dev $INPUT parent 1: protocol ip prio 1$PPPNUM
$TCQD dev $INPUT parent 1:2$PPPNUM
$TCQD dev $INPUT parent 1:3$PPPNUM
$TCCD dev $INPUT parent 1:1$PPPNUM classid 1:2$PPPNUM
$TCCD dev $INPUT parent 1:1$PPPNUM classid 1:3$PPPNUM
$TCCD dev $INPUT parent 1:1 classid 1:1$PPPNUM
fi
fi
Re: Правильный шейпер. Исходящая скорость и интервалы
Какие-то у тебя фильтры непонятные. Они вообще-то должны из базы браться.
Re: Правильный шейпер. Исходящая скорость и интервалы
А тестировал ли кто нибудь данный шейпер на Ubuntu?
Re: Правильный шейпер. Исходящая скорость и интервалы
А убунта что, особо одаренная? Или девелоперы в ней кастрировали все, что для десктопов не нужно?
Re: Правильный шейпер. Исходящая скорость и интервалы
2 NiTr0
Может и не особо одарреная
Я пытался запустить данный шейпери на убунту но в результате получил полный хаос. Скорость не резалась вообще.
Может и не особо одарреная
Я пытался запустить данный шейпери на убунту но в результате получил полный хаос. Скорость не резалась вообще.
Re: Правильный шейпер. Исходящая скорость и интервалы
А запустить вручную, посмотреть где ошибки, и подумать над ними - не судьба?
Хотя конечно заводить на десктопной сборке сервер - чревато...
Хотя конечно заводить на десктопной сборке сервер - чревато...
Re: Правильный шейпер. Исходящая скорость и интервалы
Буду так и делать
А сборка чисто серверная. И ставилась сразу в варианте установки сервер.
А сборка чисто серверная. И ставилась сразу в варианте установки сервер.
Re: Правильный шейпер. Исходящая скорость и интервалы
Поставил. Но скорость не меняется автоматически. Только при пере подключении
Re: Правильный шейпер. Исходящая скорость и интервалы
А кто будет шейпер дергать-то при имене интервала? Пушкин?
Re: Правильный шейпер. Исходящая скорость и интервалы
2 NiTr0
Объясните как для не далеких, то есть меня
И как же его дергать?
Объясните как для не далеких, то есть меня
И как же его дергать?
Re: Правильный шейпер. Исходящая скорость и интервалы
Скрипт очевидно Куда его крутить и как - зависит от вашей фантазии Можно по крону для всех поднятых туннелей в момент возможной смены интервалов, можно - разбираться billd или обработкой акаунтинг-пакетов.