Ограничение входящей и исходящей скорости (shaping) для клиентов на ppp интерфейсах.#!/bin/bash
DEVICE=ppp9 UP=512 DOWN=512/sbin/tc qdisc del dev $DEVICE root
/sbin/tc qdisc add dev $DEVICE root tbf rate ${DOWN}Kbit latency 50ms burst $[$DOWN*1024]/sbin/tc qdisc del dev $DEVICE handle ffff: ingress
/sbin/tc qdisc add dev $DEVICE handle ffff: ingress
/sbin/tc filter add dev $DEVICE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 \
police rate ${UP}Kbit burst $[$DOWN*1024] drop flowid :1
URL:
Обсуждается: http://www.opennet.me/tips/info/811.shtml
После добавления последней строки вообще перестает ити трафик
А я бы так сделал:
#!/bin/sh
DOWNLINK=512
UPLINK=512
DEV=ppp0
################ CLEAR RULES ##################################
tc qdisc del dev ${DEV} root 2> /dev/null > /dev/null
tc qdisc del dev ${DEV} ingress 2> /dev/null > /dev/null
################ EGRESS #######################################
tc qdisc add dev ${DEV} root handle 1: cbq avpkt 1000 bandwidth 3mbps
tc class add dev ${DEV} parent 1: classid 1:1 cbq rate ${UPLINK}kbps allot 1500 prio 5 bounded isolated
tc class add dev ${DEV} parent 1:1 classid 1:10 cbq rate ${UPLINK}kbps allot 1600 prio 1 avpkt 1000
tc class add dev ${DEV} parent 1:1 classid 1:20 cbq rate $((9*$UPLINK/10))kbps allot 1600 prio 2 avpkt 1000
tc class add dev ${DEV} parent 1:1 classid 1:30 cbq rate $((8*$UPLINK/10))kbps allot 1600 prio 2 avpkt 1000
tc class add dev ${DEV} parent 1:1 classid 1:40 cbq rate $((6*$UPLINK/10))kbps allot 1600 prio 2 avpkt 1000
############# ADD SFQ SHAPER ##################################
tc qdisc add dev ${DEV} parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ${DEV} parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ${DEV} parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev ${DEV} parent 1:40 handle 40: sfq perturb 10
############# MINIMIZE DELAY ##################################
tc filter add dev ${DEV} parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
tc filter add dev ${DEV} parent 1:0 protocol ip prio 11 u32 match ip protocol 1 0xff flowid 1:10
############# GRE #############################################
tc filter add dev ${DEV} parent 1:0 protocol ip prio 11 u32 match ip protocol 1 0xff flowid 1:10
############# UDP TRAFFIC #####################################
tc filter add dev ${DEV} parent 1:0 protocol ip prio 11 u32 match ip protocol 17 0xff flowid 1:10
############# VRRP OR SKYPE ###################################
tc filter add dev ${DEV} parent 1:0 protocol ip prio 112 u32 match ip protocol 17 0xff flowid 1:40
############# TCP #############################################
tc filter add dev ${DEV} parent 1: protocol ip prio 12 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 flowid 1:10
############## PRIO FOR GAMES #################################
tc filter add dev ${DEV} parent 1: protocol ip prio 1 u32 match ip dport 2106 0xffff flowid 1:10
tc filter add dev ${DEV} parent 1: protocol ip prio 1 u32 match ip dport 7777 0xffff flowid 1:10
############# LOW PRIO ########################################
tc filter add dev ${DEV} parent 1: protocol ip prio 14 u32 match ip dport 411 0xffff flowid 1:30
tc filter add dev ${DEV} parent 1: protocol ip prio 15 u32 match ip sport 411 0xffff flowid 1:30
tc filter add dev ${DEV} parent 1:0 protocol ip prio 10 u32 match ip protocol 17 0xff match ip sport 4666 0xffff flowid 1:30
############# DEFAULT PRIO ####################################
tc filter add dev ${DEV} parent 1: protocol ip prio 18 u32 match ip dst 0.0.0.0/0 flowid 1:20
################# INGRESS #####################################
tc qdisc add dev ${DEV} handle ffff: ingress
tc filter add dev ${DEV} parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNLINK}kbps burst 10k drop flowid :1
############# END #############################################
Большое спасибо Evseniy!
Работает прямо из коробки!
Начало вашего скрипта использую так же для снятия ограничений!
а лучше конечно ifb/imq
а, нет. Все норм. Только при добавлении последней строки пишет ошибку Illegal filter ID.
В чем проблема?
а как все это сделать? пожалуйста подскажите((((