You are not logged in.
Hi,
wondershaper-git doesn't work anymore on my ARchLinux64-bit. Until two months ago it worked perfectly :-|
$ sudo wondershaper -a eth0 -d 10000 -u 500
What is ":1"?
Usage: ... u32 [ match SELECTOR ... ] [ link HTID ] [ classid CLASSID ]
[ action ACTION_SPEC ] [ offset OFFSET_SPEC ]
[ ht HTID ] [ hashkey HASHKEY_SPEC ]
[ sample SAMPLE ] [skip_hw | skip_sw]
or u32 divisor DIVISOR
Where: SELECTOR := SAMPLE SAMPLE ...
SAMPLE := { ip | ip6 | udp | tcp | icmp | u{32|16|8} | mark }
SAMPLE_ARGS [ divisor DIVISOR ]
FILTERID := X:Y:Z
NOTE: CLASSID is parsed at hexadecimal input.
$ uname -r
4.12.13-1-ARCH
$ pacman -Q|grep iprout
iproute2 4.13.0-1
Can someone solve this problem?
Last edited by quellen (2017-10-02 09:22:09)
sorry for my bad english
Offline
Moving to AUR Issues...
Offline
wondershaper is 15+ years old... and unmaintained.
Change `#!/bin/bash` to `#!/bin/bash -x` and run it again, it will show the command it executes, then you might get an idea on what is wrong and how to fix it.
Offline
thanks for reply!
do you mean this?
$ SHELL="/bin/bash -x"
$ /bin/bash -x
+ [[ himxBH != *i* ]]
+ [[ -n :0.0 ]]
+ shopt -s checkwinsize
+ PS1='[\u@\h \W]\$ '
+ case ${TERM} in
+ PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
+ '[' -r /usr/share/bash-completion/bash_completion ']'
+ [[ himxBH != *i* ]]
+ alias 'ls=ls --color=auto'
+ PS1='[\u@\h \W]\$ '
++ printf '\033]0;%s@%s:%s\007' pippo linux '~'
$ sudo wondershaper -a eth0 -d 10000 -u 500
+ sudo wondershaper -a eth0 -d 10000 -u 500
What is ":1"?
Usage: ... u32 [ match SELECTOR ... ] [ link HTID ] [ classid CLASSID ]
[ action ACTION_SPEC ] [ offset OFFSET_SPEC ]
[ ht HTID ] [ hashkey HASHKEY_SPEC ]
[ sample SAMPLE ] [skip_hw | skip_sw]
or u32 divisor DIVISOR
Where: SELECTOR := SAMPLE SAMPLE ...
SAMPLE := { ip | ip6 | udp | tcp | icmp | u{32|16|8} | mark }
SAMPLE_ARGS [ divisor DIVISOR ]
FILTERID := X:Y:Z
NOTE: CLASSID is parsed at hexadecimal input.
++ printf '\033]0;%s@%s:%s\007' pippo linux '~'
Last edited by quellen (2017-09-30 19:43:59)
sorry for my bad english
Offline
I mean inside the script itself.
Offline
$ sudo /bin/bash -x wondershaper -a eth0 -d 10000 -u 500
+ DSPEED=
+ USPEED=
+ IFACE=
+ MODE=
+ getopts hd:u:a:pcs o
+ case "$o" in
+ IFACE=eth0
+ getopts hd:u:a:pcs o
+ case "$o" in
+ DSPEED=10000
+ getopts hd:u:a:pcs o
+ case "$o" in
+ USPEED=500
+ getopts hd:u:a:pcs o
+ '[' '' = presets ']'
+ [[ ! -z '' ]]
+ '[' '' = status ']'
+ '[' '' = clear ']'
+ [[ -z 10000 ]]
+ [[ -z 500 ]]
+ [[ -z eth0 ]]
+ NOPRIOHOSTSRC=80
+ NOPRIOHOSTDST=
+ NOPRIOPORTSRC=
+ NOPRIOPORTDST=
+ tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
+ tc class add dev eth0 parent 1: classid 1:1 cbq rate 500kbit allot 1500 prio 5 bounded isolated
+ tc class add dev eth0 parent 1:1 classid 1:10 cbq rate 500kbit allot 1600 prio 1 avpkt 1000
+ tc class add dev eth0 parent 1:1 classid 1:20 cbq rate 450kbit allot 1600 prio 2 avpkt 1000
+ tc class add dev eth0 parent 1:1 classid 1:30 cbq rate 400kbit allot 1600 prio 2 avpkt 1000
+ tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
+ tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
+ tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
+ tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
+ tc filter add dev eth0 parent 1:0 protocol ip prio 11 u32 match ip protocol 1 0xff flowid 1:10
+ tc filter add dev eth0 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
+ for a in $NOPRIOHOSTSRC
+ tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip src 80 flowid 1:30
+ tc filter add dev eth0 parent 1: protocol ip prio 18 u32 match ip dst 0.0.0.0/0 flowid 1:20
+ tc qdisc add dev eth0 handle ffff: ingress
+ tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 10000kbit burst 10k drop flowid :1
What is ":1"?
Usage: ... u32 [ match SELECTOR ... ] [ link HTID ] [ classid CLASSID ]
[ action ACTION_SPEC ] [ offset OFFSET_SPEC ]
[ ht HTID ] [ hashkey HASHKEY_SPEC ]
[ sample SAMPLE ] [skip_hw | skip_sw]
or u32 divisor DIVISOR
Where: SELECTOR := SAMPLE SAMPLE ...
SAMPLE := { ip | ip6 | udp | tcp | icmp | u{32|16|8} | mark }
SAMPLE_ARGS [ divisor DIVISOR ]
FILTERID := X:Y:Z
NOTE: CLASSID is parsed at hexadecimal input.
I don't understand anything, is someone able to find out what's wrong?
sorry for my bad english
Offline
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 10000kbit burst 10k drop flowid :1
Is the command that is failing with the error message
What is ":1"?
Offline
can i do something?
sorry for my bad english
Offline
You could try downgrading to iproute2 4.12.0-2 if it works under that version you could bisect between 4.12 and 4.13 to find which commit causes the issue then discuss it with upstream.
Alternatively you could find someone who understands the failing command and ask for a functioning replacement. Or you could find alternative software that is maintained.
Offline
Can you do a 'tc qdisc show dev eth0' and 'tc class show dev eth0' after running wondershaper?
It's trying to add a filter for ffff:1 (ingress) - I haven't used tc in a long time and always avoided ingress shaping.
You could also try running that command with ffff:1 instead of just :1
or classid instead of flowid
*guessing wildly*
Last edited by frostschutz (2017-10-01 12:44:35)
Offline
thanks,
maybe i have solved: if i run this command after wondershaper it works!
$ sudo tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 10000kbit burst 10k drop flowid
(i have removed ":1")
Is possible to use only "tc" without "wondershaper"?
Last edited by quellen (2017-10-01 16:34:46)
sorry for my bad english
Offline
Is possible to use only "tc" without "wondershaper"?
wondershaper is just a shell script around a number of tc calls.
Offline
thanks, i have SOLVED:
i have removed the code ":1" from the script:
BEFORE:
$ cat /usr/bin/wondershaper
#!/bin/bash
# Wonder Shaper
#
# Set the following values to somewhat less than your actual download
# and uplink speed. In kilobits. Also set the device that is to be shaped.
#
# Orginal: bert hubert <ahu@ds9a.nl>, Copyright 2002, Licensed under the GPL
# Fixes: magnific0 (http://www.github.com/magnific0/wondershaper)
# systemd .service and .conf file by kfgz and cmsigler at aur.archlinux.org
usage()
{
cat << EOF
USAGE: $0 [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]
Limit the bandwidth of an adapter
OPTIONS:
-h Show this message
-a <adapter> Set the adpter
-d <rate> Set maximum download rate (in Kbps)
-u <rate> Set maximum upload rate (in Kbps)
-p Use presets in /etc/conf.d/wondershaper.conf
-c Clear the limits from adapter
-s Show the current status of adapter
MODES:
wondershaper -a <adapter> -d <rate> -u <rate>
wondershaper -c -a <adapter>
wondershaper -s -a <adapter>
EXAMPLES:
wondershaper -a eth0 -d 1024 -u 512
wondershaper -c -a eth0
EOF
}
DSPEED=
USPEED=
IFACE=
MODE=
while getopts hd:u:a:pcs o
do case "$o" in
h) usage
exit 1;;
d) DSPEED=$OPTARG;;
u) USPEED=$OPTARG;;
a) IFACE=$OPTARG;;
p) MODE="presets";;
c) MODE="clear";;
s) MODE="status";;
[?]) usage
exit 1;;
esac
done
if [ "$MODE" = "presets" ]
then
if [ -f /etc/conf.d/wondershaper.conf ]
then
source /etc/conf.d/wondershaper.conf
else
echo "/etc/conf.d/wondershaper.conf not found"
exit 1
fi
fi
if [[ ! -z $MODE ]] && [[ -z $IFACE ]]
then
echo "Please supply the adapter name for the mode."
echo ""
usage
exit 1
fi
if [ "$MODE" = "status" ]
then
tc -s qdisc ls dev $IFACE
tc -s class ls dev $IFACE
exit
fi
if [ "$MODE" = "clear" ]
then
tc qdisc del dev $IFACE root 2> /dev/null > /dev/null
tc qdisc del dev $IFACE ingress 2> /dev/null > /dev/null
exit
fi
if [[ -z $DSPEED ]] || [[ -z $USPEED ]] || [[ -z $IFACE ]]
then
usage
exit 1
fi
# low priority OUTGOING traffic - you can leave this blank if you want
# low priority source netmasks
NOPRIOHOSTSRC=80
# low priority destination netmasks
NOPRIOHOSTDST=
# low priority source ports
NOPRIOPORTSRC=
# low priority destination ports
NOPRIOPORTDST=
###### uplink
# install root CBQ
tc qdisc add dev $IFACE root handle 1: cbq avpkt 1000 bandwidth 10mbit
# shape everything at $USPEED speed - this prevents huge queues in your
# DSL modem which destroy latency:
# main class
tc class add dev $IFACE parent 1: classid 1:1 cbq rate ${USPEED}kbit \
allot 1500 prio 5 bounded isolated
# high prio class 1:10:
tc class add dev $IFACE parent 1:1 classid 1:10 cbq rate ${USPEED}kbit \
allot 1600 prio 1 avpkt 1000
# bulk and default class 1:20 - gets slightly less traffic,
# and a lower priority:
tc class add dev $IFACE parent 1:1 classid 1:20 cbq rate $[9*$USPEED/10]kbit \
allot 1600 prio 2 avpkt 1000
# 'traffic we hate'
tc class add dev $IFACE parent 1:1 classid 1:30 cbq rate $[8*$USPEED/10]kbit \
allot 1600 prio 2 avpkt 1000
# all get Stochastic Fairness:
tc qdisc add dev $IFACE parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $IFACE parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $IFACE parent 1:30 handle 30: sfq perturb 10
# start filters
# TOS Minimum Delay (ssh, NOT scp) in 1:10:
tc filter add dev $IFACE parent 1:0 protocol ip prio 10 u32 \
match ip tos 0x10 0xff flowid 1:10
# ICMP (ip protocol 1) in the interactive class 1:10 so we
# can do measurements & impress our friends:
tc filter add dev $IFACE parent 1:0 protocol ip prio 11 u32 \
match ip protocol 1 0xff flowid 1:10
# prioritize small packets (<64 bytes)
tc filter add dev $IFACE 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
# some traffic however suffers a worse fate
for a in $NOPRIOPORTDST
do
tc filter add dev $IFACE parent 1: protocol ip prio 14 u32 \
match ip dport $a 0xffff flowid 1:30
done
for a in $NOPRIOPORTSRC
do
tc filter add dev $IFACE parent 1: protocol ip prio 15 u32 \
match ip sport $a 0xffff flowid 1:30
done
for a in $NOPRIOHOSTSRC
do
tc filter add dev $IFACE parent 1: protocol ip prio 16 u32 \
match ip src $a flowid 1:30
done
for a in $NOPRIOHOSTDST
do
tc filter add dev $IFACE parent 1: protocol ip prio 17 u32 \
match ip dst $a flowid 1:30
done
# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
tc filter add dev $IFACE parent 1: protocol ip prio 18 u32 \
match ip dst 0.0.0.0/0 flowid 1:20
########## downlink #############
# slow downloads down to somewhat less than the real speed to prevent
# queuing at our ISP. Tune to see how high you can set it.
# ISPs tend to have *huge* queues to make sure big downloads are fast
#
# attach ingress policer:
tc qdisc add dev $IFACE handle ffff: ingress
# filter *everything* to it (0.0.0.0/0), drop everything that's
# coming in too fast:
tc filter add dev $IFACE parent ffff: protocol ip prio 50 u32 match ip src \
0.0.0.0/0 police rate ${DSPEED}kbit burst 10k drop flowid :1
AFTER:
$ cat /usr/bin/wondershaper
#!/bin/bash
# Wonder Shaper
#
# Set the following values to somewhat less than your actual download
# and uplink speed. In kilobits. Also set the device that is to be shaped.
#
# Orginal: bert hubert <ahu@ds9a.nl>, Copyright 2002, Licensed under the GPL
# Fixes: magnific0 (http://www.github.com/magnific0/wondershaper)
# systemd .service and .conf file by kfgz and cmsigler at aur.archlinux.org
usage()
{
cat << EOF
USAGE: $0 [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]
Limit the bandwidth of an adapter
OPTIONS:
-h Show this message
-a <adapter> Set the adpter
-d <rate> Set maximum download rate (in Kbps)
-u <rate> Set maximum upload rate (in Kbps)
-p Use presets in /etc/conf.d/wondershaper.conf
-c Clear the limits from adapter
-s Show the current status of adapter
MODES:
wondershaper -a <adapter> -d <rate> -u <rate>
wondershaper -c -a <adapter>
wondershaper -s -a <adapter>
EXAMPLES:
wondershaper -a eth0 -d 1024 -u 512
wondershaper -c -a eth0
EOF
}
DSPEED=
USPEED=
IFACE=
MODE=
while getopts hd:u:a:pcs o
do case "$o" in
h) usage
exit 1;;
d) DSPEED=$OPTARG;;
u) USPEED=$OPTARG;;
a) IFACE=$OPTARG;;
p) MODE="presets";;
c) MODE="clear";;
s) MODE="status";;
[?]) usage
exit 1;;
esac
done
if [ "$MODE" = "presets" ]
then
if [ -f /etc/conf.d/wondershaper.conf ]
then
source /etc/conf.d/wondershaper.conf
else
echo "/etc/conf.d/wondershaper.conf not found"
exit 1
fi
fi
if [[ ! -z $MODE ]] && [[ -z $IFACE ]]
then
echo "Please supply the adapter name for the mode."
echo ""
usage
exit 1
fi
if [ "$MODE" = "status" ]
then
tc -s qdisc ls dev $IFACE
tc -s class ls dev $IFACE
exit
fi
if [ "$MODE" = "clear" ]
then
tc qdisc del dev $IFACE root 2> /dev/null > /dev/null
tc qdisc del dev $IFACE ingress 2> /dev/null > /dev/null
exit
fi
if [[ -z $DSPEED ]] || [[ -z $USPEED ]] || [[ -z $IFACE ]]
then
usage
exit 1
fi
# low priority OUTGOING traffic - you can leave this blank if you want
# low priority source netmasks
NOPRIOHOSTSRC=80
# low priority destination netmasks
NOPRIOHOSTDST=
# low priority source ports
NOPRIOPORTSRC=
# low priority destination ports
NOPRIOPORTDST=
###### uplink
# install root CBQ
tc qdisc add dev $IFACE root handle 1: cbq avpkt 1000 bandwidth 10mbit
# shape everything at $USPEED speed - this prevents huge queues in your
# DSL modem which destroy latency:
# main class
tc class add dev $IFACE parent 1: classid 1:1 cbq rate ${USPEED}kbit \
allot 1500 prio 5 bounded isolated
# high prio class 1:10:
tc class add dev $IFACE parent 1:1 classid 1:10 cbq rate ${USPEED}kbit \
allot 1600 prio 1 avpkt 1000
# bulk and default class 1:20 - gets slightly less traffic,
# and a lower priority:
tc class add dev $IFACE parent 1:1 classid 1:20 cbq rate $[9*$USPEED/10]kbit \
allot 1600 prio 2 avpkt 1000
# 'traffic we hate'
tc class add dev $IFACE parent 1:1 classid 1:30 cbq rate $[8*$USPEED/10]kbit \
allot 1600 prio 2 avpkt 1000
# all get Stochastic Fairness:
tc qdisc add dev $IFACE parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $IFACE parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $IFACE parent 1:30 handle 30: sfq perturb 10
# start filters
# TOS Minimum Delay (ssh, NOT scp) in 1:10:
tc filter add dev $IFACE parent 1:0 protocol ip prio 10 u32 \
match ip tos 0x10 0xff flowid 1:10
# ICMP (ip protocol 1) in the interactive class 1:10 so we
# can do measurements & impress our friends:
tc filter add dev $IFACE parent 1:0 protocol ip prio 11 u32 \
match ip protocol 1 0xff flowid 1:10
# prioritize small packets (<64 bytes)
tc filter add dev $IFACE 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
# some traffic however suffers a worse fate
for a in $NOPRIOPORTDST
do
tc filter add dev $IFACE parent 1: protocol ip prio 14 u32 \
match ip dport $a 0xffff flowid 1:30
done
for a in $NOPRIOPORTSRC
do
tc filter add dev $IFACE parent 1: protocol ip prio 15 u32 \
match ip sport $a 0xffff flowid 1:30
done
for a in $NOPRIOHOSTSRC
do
tc filter add dev $IFACE parent 1: protocol ip prio 16 u32 \
match ip src $a flowid 1:30
done
for a in $NOPRIOHOSTDST
do
tc filter add dev $IFACE parent 1: protocol ip prio 17 u32 \
match ip dst $a flowid 1:30
done
# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
tc filter add dev $IFACE parent 1: protocol ip prio 18 u32 \
match ip dst 0.0.0.0/0 flowid 1:20
########## downlink #############
# slow downloads down to somewhat less than the real speed to prevent
# queuing at our ISP. Tune to see how high you can set it.
# ISPs tend to have *huge* queues to make sure big downloads are fast
#
# attach ingress policer:
tc qdisc add dev $IFACE handle ffff: ingress
# filter *everything* to it (0.0.0.0/0), drop everything that's
# coming in too fast:
tc filter add dev $IFACE parent ffff: protocol ip prio 50 u32 match ip src \
0.0.0.0/0 police rate ${DSPEED}kbit burst 10k drop flowid
sorry for my bad english
Offline