Код: Выделить всё
qdisc htb 1: root r2q 10 default 10 direct_packets_stat 0
qdisc sfq 10: parent 1:10 limit 127p quantum 1404b perturb 1sec
qdisc ingress ffff: parent ffff:fff1 ----------------
Код: Выделить всё
qdisc htb 1: root r2q 10 default 10 direct_packets_stat 0
qdisc sfq 10: parent 1:10 limit 127p quantum 1404b perturb 1sec
qdisc ingress ffff: parent ffff:fff1 ----------------
Код: Выделить всё
tc -s filter show dev ppp15 parent ffff:
Скажите, а простой копипаст должен работать? или нужно делать под себя.ran писал(а):а на форуме для кого специально прилеплено?
не надо ничего под себя если не хотите какого-то дополнительного функционала... то что заложено - ограничение скорости согласно классам трафика в интервалах тарифного планаlasik писал(а):под себя конешна
Прилеплено то оно нормально, а вот скрипт из той темы на исходящую скорость ну никак не влияет.ran писал(а):а на форуме для кого специально прилеплено?
Код: Выделить всё
#!/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;
INPUT=ifb0;
UBURST="burst 512k"
DBURST="burst 64k"
TCFR="/sbin/tc filter replace"
TCCR="/sbin/tc class replace"
TCQR="/sbin/tc qdisc replace"
TCQD="/sbin/tc qdisc del"
if [ -f /var/run/radattr.$1 ]
then
PPPNUM=`echo $1|sed 's/ppp//'|awk '{printf "%03d",$1}'`
IP=$5
# echo $IP >/var/run/shaper/$1
QDISC_ETH=`tc qdisc show dev $INPUT|grep -v sfq|awk '{print $2}'`
DOWNSPEED=`/bin/awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
UPSPEED=`/bin/awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
FILTERS=`/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1`
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 100mbit ceil 1000mbit burst 1024k cburst 64k prio 2
$TCCR dev $INPUT parent 1: classid 1:2 htb rate 100mbit ceil 1000mbit burst 1024k cburst 64k prio 1
$TCQR dev $INPUT parent 1:2 handle 2: sfq perturb 10 quantum 1514
fi
if [ w${debug} = w1 ] ; then
echo "Debug mode" >>/tmp/pptpd
echo $DOWNSPEED >>/tmp/pptpd
echo $UPSPEED >>/tmp/pptpd
echo $FILTERS >>/tmp/pptpd
fi;
$TCQD dev $1 root &>/dev/null
$TCQD dev $1 ingress &>/dev/null
##### speed server->client
if [ "$UPSPEED" != "0" ] ;
then
# UPSPEED=$[$UPSPEED*4/3]
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
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
$TCFR dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
fi
##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
# DOWNSPEED=$[$DOWNSPEED*4/3]
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
#### Filters
if [ w$FILTERS != w ] ;
then
echo "filters not supported";
fi;
fi
Код: Выделить всё
#!/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;
INPUT=ifb0;
UBURST="burst 512k"
DBURST="burst 64k"
TCFD="/sbin/tc filter del"
TCFD="/sbin/tc class del"
TCFD="/sbin/tc qdisc del"
if [ -f /var/run/radattr.$1 ]
then
PPPNUM=`echo $1|sed 's/ppp//'|awk '{printf "%03d",$1}'`
DOWNSPEED=`/bin/awk '/PPPD-Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
FILTERS=`/bin/awk '/Filter-Id/ {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
#### Filters
if [ w$FILTERS != w ] ;
then
echo "filters not supported";
fi;
fi
если заюзаете - заделитесь результатом, я потестил скрипт пока на тестовом тазике - шейпит то что надо, столкнулся только вот с чем...NiTr0 писал(а):Сейчас на одном из тазиков стоит бартон 2500+ - до 100 клиентов, поток на вход и на выход на влане в мир 50 мбит/с, загрузка проца до 30%.
Надо в шейпере хеш заюзать - нагрузка ИМХО сильно упадет.