Добрый день!
Сервер CentOS 5.1
Есть PPPoE-сервер, на нем прикручен шейпер, но он работает не как надо.
Со входящей скоростью у клиента нормальная, а вот исходящая всегда в 2 или 3 раза ниже указанной.
Вот мой исходник шейпера (если быть точнее, то взял где то на бескрайних просторах нашего могущего интернета)
#cat ip-up.local
if [ -f /var/run/radattr.$1 ]
then
DOWNSPEED=`/bin/awk '/Downstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
UPSPEED=`/bin/awk '/Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
/sbin/tc qdisc del dev $1 root > /dev/null
/sbin/tc qdisc del dev $1 ingress > /dev/null
##### speed server->client
if [ $UPSPEED -gt 0 ] ;
then
if [ $UPSPEED -lt 1200 ] ;
then
/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1
/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 4k
/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 4k prio 1
/sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 4k prio 2
/sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1500
/sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1500
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u160x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
else
burst=`echo $UPSPEED/100+2 | bc 2>/dev/null`
/sbin/tc qdisc add dev $1 root tbf rate ${UPSPEED}kbit burst ${burst}kb latency 70ms minburst 1540
fi
fi
##### speed client->server
if [ "$DOWNSPEED" != "0" ] ;
then
/sbin/tc qdisc add dev $1 handle ffff: ingress
/sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNSPEED}kbit burst 12k drop flowid :1
fi