Like most everyone in the time of COVID, I am working from home and thus in many Zoom meetings. I have OpenWrt 19.07.3 installed on my home router / wifi AP which connects to my Cable Modem. I have installed the SQM packages and have enabled CAKE with the layer_cake script giving the following config:
However, despite spending quite a number of hours on Zoom during the day, I see no traffic in the Bulk tin, very little traffic in the Voice tin, and the vast majority in the Best Effort tin:
I must admit that while I sometimes think I know what I'm doing, this stuff is nearly black magic to me. So, have I missed a step? I thought all I had to do was turn it on and it auto-magically configured itself. Do I need to somehow teach it that Zoom traffic needs to be mapped to Voice?
By default zoom does not use dscp marking, this seems a feature for paying customers... You might be able to dscp mark on the machines that actually run the zoom client.
That said, with just 3072/1280 Kbps zoom is not going to be fun... unless you stop all other traffic during calls. But for a cable plan 3.0/1.2 Mbps looks awfully low.
That might work well, but ports above ~1000 are not reserved guaranteed, so I would recommend to keep an occasional eye on this rule, just to confirm it still is restricted to zoom traffic.
You know this, but CS3 will map to AC_BE on wifi WMM (which in itself is not bad) and will also map into cake's BE tin at least for the OP's layer_cake.qos... So folks, either adjust that to match default cake, or, even better, use @ldir's great ctinfo_4layercake.qos.
Thanks all for the feedback!
Ok, as suggested I've copied the ctinfo_4layercake.qos from @ldir and am now using that as my SQM script. Can you expand a bit on this part:
In which section should that go? Is it perhaps accessible from the Luci WUI?
Also, after changing the SQM config to use the ctinfo_4layercake.qos, I got the following in my logs:
Wed Jul 15 00:07:50 2020 user.notice SQM: Starting SQM script: ctinfo_4layercake.qos on eth1, in: 3072 Kbps, out: 1280 Kbps
Wed Jul 15 00:07:50 2020 user.notice SQM: Using generic sqm_start_default function.
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Bulk4 dst -j DSCP --set-dscp-class CS1 -m comment --comment Bulk CS1 ipset
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Bulk4 src -j DSCP --set-dscp-class CS1 -m comment --comment Bulk CS1 ipset
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set BE4 dst -j CONNMARK --set-xmark 0x01000000/0x01000000 -m comment --comment Best Effort CS0 ipset
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set BE4 src -j CONNMARK --set-xmark 0x01000000/0x01000000 -m comment --comment Best Effort CS0 ipset
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Vid4 dst -j DSCP --set-dscp-class CS3 -m comment --comment Vid CS3 ipset
Wed Jul 15 00:07:51 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Vid4 src -j DSCP --set-dscp-class CS3 -m comment --comment Vid CS3 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Voice4 dst -j DSCP --set-dscp-class CS4 -m comment --comment Voice CS4 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Voice4 src -j DSCP --set-dscp-class CS4 -m comment --comment Voice CS4 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Bulk6 dst -j DSCP --set-dscp-class CS1 -m comment --comment Bulk CS1 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Bulk6 src -j DSCP --set-dscp-class CS1 -m comment --comment Bulk CS1 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set BE6 dst -j CONNMARK --set-xmark 0x01000000/0x01000000 -m comment --comment Best Effort CS0 ipset
Wed Jul 15 00:07:52 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set BE6 src -j CONNMARK --set-xmark 0x01000000/0x01000000 -m comment --comment Best Effort CS0 ipset
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Vid6 dst -j DSCP --set-dscp-class CS3 -m comment --comment Vid CS3 ipset
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Vid6 src -j DSCP --set-dscp-class CS3 -m comment --comment Vid CS3 ipset
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Voice6 dst -j DSCP --set-dscp-class CS4 -m comment --comment Voice CS4 ipset
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -m set --match-set Voice6 src -j DSCP --set-dscp-class CS4 -m comment --comment Voice CS4 ipset
Wed Jul 15 00:07:53 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:54 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: FAILURE (2): /usr/sbin/iptables -t mangle -A QOS_MARK_F_eth1 -p udp -m udp -m set --match-set Zoom4 dst -m multiport --dports 8801:8810 -j DSCP --set-dscp-class CS3 -m comment --comment Zoom CS3 VI
Wed Jul 15 00:07:54 2020 user.notice SQM: ERROR: cmd_wrapper: iptables: LAST ERROR: iptables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `iptables -h' or 'iptables --help' for more information.
Wed Jul 15 00:07:54 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: FAILURE (2): /usr/sbin/ip6tables -t mangle -A QOS_MARK_F_eth1 -p udp -m udp -m set --match-set Zoom6 dst -m multiport --dports 8801:8810 -j DSCP --set-dscp-class CS3 -m comment --comment Zoom CS3 VI
Wed Jul 15 00:07:54 2020 user.notice SQM: ERROR: cmd_wrapper: ip6tables: LAST ERROR: ip6tables v1.8.3 (legacy): Couldn't load match `set':No such file or directory Try `ip6tables -h' or 'ip6tables --help' for more information.
Wed Jul 15 00:07:55 2020 user.notice SQM: ERROR: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc filter add dev eth1 protocol all u32 match u32 0 0 action ctinfo dscp 0xfc000000 0x02000000
Wed Jul 15 00:07:55 2020 user.notice SQM: ERROR: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory We have an error talking to the kernel, -1
Wed Jul 15 00:07:55 2020 user.notice SQM: WARNING: sqm_start_default: ctinfo_4layercake.qos lacks an egress() function
Wed Jul 15 00:07:56 2020 user.notice SQM: ERROR: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc filter add dev eth1 parent ffff: protocol all u32 match u32 0 0 action ctinfo dscp 0xfc000000 0x02000000 action mirred egress redirect dev ifb4eth1
Wed Jul 15 00:07:56 2020 user.notice SQM: ERROR: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory We have an error talking to the kernel, -1
Wed Jul 15 00:07:56 2020 user.notice SQM: WARNING: sqm_start_default: ctinfo_4layercake.qos lacks an ingress() function
Wed Jul 15 00:07:56 2020 user.notice SQM: ctinfo_4layercake.qos was started on eth1 successfully
That's a good point on the speeds. I'll have to turn off SQM and retest using dslreports. Maybe later tonight when all is (relatively) quiet.
Ok, I disabled SQM totally and ran five speedtests with the median speeds being:
So, I was off by almost an order of magnitude on the download side; I wonder how that happened... In any case, I then enabled SQM using speeds of 20500/1500 and the standard layer_cake.qos script, ran another five speed tests and got median speeds of:
Though the upload speed came in at anywhere from 0.93 to 1.65 Mbit/s β which is a really wide range to my mind. Any ideas on that?
Here are the tests performed with SQM (layer_cake, speed 20500/1500). All were run with 16 threads, https off, hi-res BB, 60sec duration, avoid compression:
Thanks, these all look decent, except for the nasty latency spikes... I do not believe that these are caused by your router, but could you try once more with the following in /etc/config/sqm:
These all suffer from the same set of spurious latency spikes.
At this point, I think you need to start plying with flent's rrul test to figure out whether these spikes are real or just an artifact of how the dslreports speedtest measures latency (the test is decent, but relies on your browser to do the right thing, and test and browser might have differing opinions on what is right...).
But as I expected, no real change from using htb/fq_codel.
One more test you could do, to rule out overload at your docsis plant to set the shaper for 10000/750 basically halving your rates, if this reduces the spiking it might point to queueing at the cmts (but interpretation might be tricky).
Thanks, so according to flent, things do not look as spiky and dire. If you are willing to share the flent data file I can have a deeper look into them (but the only thing I am a bit puzzled is that the unloaded ICMP latency seems to sits at ~0ms only to jump to ~40ms under load, which is a bit more than I would have expected).
The reduced rate dslreportstest, shows even a massive spie in the idle period at the beginning of the test when sqm would not be doing any shaping, so given the flent results this might be an artifact of running a test in a browser and/or of the test servers that dslreports selected (also, as sidde-note, at 10000/750, 16 streams might be on the high side, which might have caused part of the large Re-xmit
Avg. values for three of the servers).