[Solved] Terrible performance on EdgeRouter X with SQM enabled (3 Mbps)

I'm on a 120 Mbps up and 6 Mbps down connection (cable), using an EdgeRouter X and a QNAP QSW-308 switch. A Xiaomi Redmi AX6 is serving as wireless AP.

It appears my ISP is having trouble with IPv6.

All is working well until I enable SQM with default settings

config queue 'eth1'
        option qdisc 'fq_codel'
        option script 'simple.qos'
        option qdisc_advanced '0'
        option linklayer 'none'
        option enabled '1'
        option interface 'eth0'
        option download '120000'
        option upload '6000'
        option verbosity '5'
        option debug_logging '1'

Then performance drops down to roughly 2 to 4 Mbps down, less up. CPU load seems to be fine though. As others state that they are getting something like 200 Mbps minimum with SQM enabled, something seems to have gone wrong...

This is from /tmp/run/sqm/eth0.start-sqm.log:

Sat Dec 12 15:44:37 UTC 2020: Starting.
Starting SQM script: simple.qos on eth0, in: 120000 Kbps, out: 6000 Kbps
fn_exists: function candidate name: sqm_start
fn_exists: TYPE_OUTPUT: sqm_start: not found
fn_exists: return value: 1
Using generic sqm_start_default function.
fn_exists: function candidate name: sqm_prepare_script
fn_exists: TYPE_OUTPUT: sqm_prepare_script is a function
fn_exists: return value: 0
sqm_start_default: starting sqm_prepare_script
Failed to find act_ipt. Maybe it is a built in module ?
Failed to find sch_fq_codel. Maybe it is a built in module ?
cmd_wrapper: COMMAND: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root htb
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root htb
QDISC htb is useable.
cmd_wrapper: COMMAND: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: COMMAND: /sbin/ip link delete TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -X QOS_MARK_eth0
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -X QOS_MARK_eth0
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -X QOS_MARK_eth0
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -X QOS_MARK_eth0
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -N QOS_MARK_eth0
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -N QOS_MARK_eth0
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -N QOS_MARK_eth0
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -N QOS_MARK_eth0
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -j MARK --set-mark 0x2/0xff
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS1 -j MARK --set-mark 0x3/0xff
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class CS6 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class EF -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m dscp --dscp-class AF42 -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: FAILURE (1): /usr/sbin/iptables -t mangle -D QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: LAST ERROR: iptables: No chain/target/match by that name.
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: FAILURE (1): /usr/sbin/ip6tables -t mangle -D QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: LAST ERROR: ip6tables: No chain/target/match by that name.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A QOS_MARK_eth0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1/0xff
Squashing differentiated services code points (DSCP) from ingress.
cmd_wrapper: iptables: invocation silenced by request, FAILURE either expected or acceptable.
[...]
cmd_wrapper: COMMAND: /usr/sbin/iptables -t mangle -A OUTPUT -p udp -m multiport --ports 123,53 -j DSCP --set-dscp-class AF42
cmd_wrapper: iptables: SUCCESS: /usr/sbin/iptables -t mangle -A OUTPUT -p udp -m multiport --ports 123,53 -j DSCP --set-dscp-class AF42
cmd_wrapper: ip6tables: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/ip6tables -t mangle -A OUTPUT -p udp -m multiport --ports 123,53 -j DSCP --set-dscp-class AF42
cmd_wrapper: ip6tables: SUCCESS: /usr/sbin/ip6tables -t mangle -A OUTPUT -p udp -m multiport --ports 123,53 -j DSCP --set-dscp-class AF42
Failed to find act_ipt. Maybe it is a built in module ?
Failed to find sch_fq_codel. Maybe it is a built in module ?
cmd_wrapper: COMMAND: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root fq_codel
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root fq_codel
QDISC fq_codel is useable.
cmd_wrapper: COMMAND: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: COMMAND: /sbin/ip link delete TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
sqm_start_default: Starting simple.qos
ifb associated with interface eth0:
Currently no ifb is associated with eth0, this is normal during starting of the sqm system.
cmd_wrapper: COMMAND: /sbin/ip link add name ifb4eth0 type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link add name ifb4eth0 type ifb
fn_exists: function candidate name: egress
fn_exists: TYPE_OUTPUT: egress is a function
fn_exists: return value: 0
IFACE: eth0 MTU: 1500
get_htb_quantum: 1: eth0, 2: 6000, 3: 1000
get_burst: 1: 1500, 2: 6000, 3: 1000
get_burst (by duration): the calculated burst/quantum size of 750 bytes was below the minimum of 1749 bytes.
get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 6000, DURATION [us]: 1000
IFACE: eth0 MTU: 1500
get_htb_burst: 1: eth0, 2: 6000, 3: 1000
get_burst: 1: 1500, 2: 6000, 3: 1000
get_burst (by duration): the calculated burst/quantum size of 750 bytes was below the minimum of 1749 bytes.
get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 6000, DURATION [us]: 1000
cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc del dev eth0 root
cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth0 root
cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
LLA: default link layer adjustment method for !cake is tc_stab
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev eth0 root handle 1: htb default 12
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0 root handle 1: htb default 12
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev eth0 parent 1: classid 1:1 htb quantum 1749 rate 6000kbit ceil 6000kbit burst 1749 cburst 1749
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev eth0 parent 1: classid 1:1 htb quantum 1749 rate 6000kbit ceil 6000kbit burst 1749 cburst 1749
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:11 htb quantum 1749 rate 128kbit ceil 2000kbit prio 1
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:11 htb quantum 1749 rate 128kbit ceil 2000kbit prio 1
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:12 htb quantum 1749 rate 1000kbit ceil 5984kbit burst 1749 cburst 1749 prio 2
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:12 htb quantum 1749 rate 1000kbit ceil 5984kbit burst 1749 cburst 1749 prio 2
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:13 htb quantum 1749 rate 1000kbit ceil 5984kbit burst 1749 cburst 1749 prio 3
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev eth0 parent 1:1 classid 1:13 htb quantum 1749 rate 1000kbit ceil 5984kbit burst 1749 cburst 1749 prio 3
get_limit:  CURLIMIT: 1001
get_target defaulting to auto.
get_ECN: ECN CURECN: ecn IECN: ECN EECN: ECN
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev eth0 parent 1:11 handle 110: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0 parent 1:11 handle 110: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
get_limit:  CURLIMIT: 1001
get_target defaulting to auto.
get_ECN: ECN CURECN: ecn IECN: ECN EECN: ECN
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev eth0 parent 1:12 handle 120: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0 parent 1:12 handle 120: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
get_limit:  CURLIMIT: 1001
get_target defaulting to auto.
get_ECN: ECN CURECN: ecn IECN: ECN EECN: ECN
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev eth0 parent 1:13 handle 130: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0 parent 1:13 handle 130: fq_codel limit 1001 target 5000us interval 100000us ecn quantum 300 flows 1024
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol all prio 999 u32 match ip protocol 0 0x00 flowid 1:12
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol all prio 999 u32 match ip protocol 0 0x00 flowid 1:12
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1/0xff fw classid 1:11
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1/0xff fw classid 1:11
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2/0xff fw classid 1:12
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2/0xff fw classid 1:12
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3/0xff fw classid 1:13
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3/0xff fw classid 1:13
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 4 handle 1/0xff fw classid 1:11
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 4 handle 1/0xff fw classid 1:11
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 5 handle 2/0xff fw classid 1:12
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 5 handle 2/0xff fw classid 1:12
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 6 handle 3/0xff fw classid 1:13
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 6 handle 3/0xff fw classid 1:13
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol arp prio 7 handle 1/0xff fw classid 1:11
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol arp prio 7 handle 1/0xff fw classid 1:11
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 8 u32 match ip protocol 1 0xff flowid 1:13
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 8 u32 match ip protocol 1 0xff flowid 1:13
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 9 u32 match ip protocol 1 0xff flowid 1:13
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent 1:0 protocol ipv6 prio 9 u32 match ip protocol 1 0xff flowid 1:13
sqm_start_default: egress shaping activated
cmd_wrapper: COMMAND: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM ingress
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM ingress
QDISC ingress is useable.
cmd_wrapper: COMMAND: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
cmd_wrapper: COMMAND: /sbin/ip link delete TMP_IFB_4_SQM type ifb
cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
fn_exists: function candidate name: ingress
fn_exists: TYPE_OUTPUT: ingress is a function
fn_exists: return value: 0
IFACE: eth0 MTU: 1500
get_htb_quantum: 1: eth0, 2: 120000, 3: 1000
get_burst: 1: 1500, 2: 120000, 3: 1000
get_burst (by duration): BURST [Byte]: 15000, BANDWIDTH [Kbps]: 120000, DURATION [us]: 1000
IFACE: eth0 MTU: 1500
get_htb_burst: 1: eth0, 2: 120000, 3: 1000
get_burst: 1: 1500, 2: 120000, 3: 1000
get_burst (by duration): BURST [Byte]: 15000, BANDWIDTH [Kbps]: 120000, DURATION [us]: 1000
cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc del dev eth0 handle ffff: ingress
cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth0 handle ffff: ingress
cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: Invalid argument
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev eth0 handle ffff: ingress
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0 handle ffff: ingress
cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc del dev ifb4eth0 root
cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev ifb4eth0 root
cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
Do not perform DSCP based filtering on ingress. (1-tier classification)
LLA: default link layer adjustment method for !cake is tc_stab
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev ifb4eth0 root handle 1: htb default 10
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev ifb4eth0 root handle 1: htb default 10
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev ifb4eth0 parent 1: classid 1:1 htb quantum 15000 rate 120000kbit ceil 120000kbit burst 15000 cburst 15000
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev ifb4eth0 parent 1: classid 1:1 htb quantum 15000 rate 120000kbit ceil 120000kbit burst 15000 cburst 15000
cmd_wrapper: COMMAND: /usr/sbin/tc class add dev ifb4eth0 parent 1:1 classid 1:10 htb quantum 15000 rate 120000kbit ceil 120000kbit burst 15000 cburst 15000 prio 0
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc class add dev ifb4eth0 parent 1:1 classid 1:10 htb quantum 15000 rate 120000kbit ceil 120000kbit burst 15000 cburst 15000 prio 0
get_limit:  CURLIMIT: 1001
get_target defaulting to auto.
get_ECN: ECN CURECN: ecn IECN: ECN EECN: ECN
cmd_wrapper: COMMAND: /usr/sbin/tc qdisc add dev ifb4eth0 parent 1:10 handle 110: fq_codel limit 1001 target 5000us interval 100000us ecn flows 1024
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev ifb4eth0 parent 1:10 handle 110: fq_codel limit 1001 target 5000us interval 100000us ecn flows 1024
cmd_wrapper: COMMAND: /sbin/ip link set dev ifb4eth0 up
cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth0 up
cmd_wrapper: COMMAND: /usr/sbin/tc filter add dev eth0 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0
cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0
sqm_start_default: ingress shaping activated
simple.qos was started on eth0 successfully

Thanks everyone :slight_smile:

What does ifstatus wan | grep device return?

How did you measure? Could you post the result pages of an ookla speedtest, of an dslreports speedtest, and also report the results from fast.com; for each test first run and report a test with SQM disabled and one with SQM enabled.

Sure :slight_smile:
Speedtest by Ookla - The Global Broadband Speed Test
Speed result of 103.7/6.54 Mbps | DSLReports, ISP Information
Fast.com says 110 Mbps, unloaded 18 ms, loaded 58 ms, upload 5,6 Mbps.

With SQM:
Speedtest by Ookla - The Global Broadband Speed Test
Speed result of 3/1.12 Mbps | DSLReports, ISP Information
Fast.com says 1.3 Mbps, unloaded 16 ms, loaded 36 ms, upload 1.4 Mbps.

Sorry, forgot this:

root@OpenWrt:~# ifstatus wan | grep device
"l3_device": "eth0.2",
"device": "eth0.2",

Try selecting eth0.2 for sqm and run a speedtest again, please.

1 Like

That was the solution. Thanks :slight_smile:

1 Like

My hypothesis is that eth0.1 is the connection to the internal network, and a shaper on eth0 witout the proper VLAN tag will affect both eth0.1 and eth0.2 and that will effectively result in the shaper shaping everythin to below the minimum of configured upload and download rates. An easy mistake to make and also subtle, but since SQM is designed to allow the user to select any interface not something SQM can easily check for and warn about....

1 Like

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.