Okay so I've run some more tests, and done all the following things:
-
Reflashed the Linksys router to use davidc502's patched builds as suggested by @JW0914
-
Based my initial upstream/downstream numbers off the modem's negotiated line values as suggested by @dlakelan
-
Reduced the MTU down to 1280 as suggested by @fuller
I've done all of these things in stages and at each point tested the line from a wired connection with no other clients. As suggested by @moeller0 I've run a concurrent "mtr 8.8.8.8" while running the speed tests in each case. The results are given at the end of this post.
The low down though is that it still doesn't help, even after tweaking the numbers and also trying fq_codel instead of cake. However, I'm starting to be convinced from the way that the speed test behaves that SQM really isn't working properly. My impression was that it was supposed to prevent upload bandwidth going much above the thresholds you set, but what I see in the speed tests is that the upload speed always initially ramps right up beyond 1 Mbps. This, unsurprisingly, causes the line to completely saturate and the buffers to fill up so that the bandwidth then decays exponentially, sometime to less than 10kbps by the end of the test. Unfortunately the saved test results don't seem to show the historical data for this they only give the final measured upload speed. I've tried progressively lowering the upstream value in SQM but this just continues to happen right up to a sudden cutoff when the whole thing just breaks instead and the speed test won't even run.
The only way I have been able to instead get a steady, almost flat, upload speed with the tests has been paradoxically to tell SQM to greatly curtail the download speeds. This results in steady upload speeds over 100 kbps but of course totally destroys download. I've shown this too in the results below.
If anyone can offer any ideas as to what on earth might be going on, I'd be very grateful. I know my line isn't fast but it seems both my ISP and people here now think that it ought to be capable of something around 300 kpbs upload
Anyway here are the results...
Control Test (Zyxel as modem and router, connection completely idle)
mtr
results after running mtr 8.8.8.8
for 5 minutes:
REDACTED-HOSTNAME (192.168.1.195) 2018-04-13T14:14:07+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 304 0.8 0.7 0.6 1.8 0.1
2. bottomless.aa.net.uk 0.0% 303 40.7 41.2 37.1 163.7 9.7
3. n.aimless.thn.aa.net.uk 0.0% 303 42.4 41.8 37.4 211.3 14.7
4. google1.lonap.net 0.0% 303 40.1 41.8 37.5 190.2 11.7
5. 108.170.246.129 0.0% 303 39.8 42.0 37.7 213.1 13.3
6. 108.170.230.169 0.3% 303 42.9 43.0 38.3 192.8 13.0
7. google-public-dns-a.google.com 0.0% 303 39.0 41.7 37.5 196.1 10.9
Control under load (Zyxel as modem and router, speedtest running)
REDACTED-HOSTNAME (192.168.1.195) 2018-04-13T14:16:55+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 80 0.7 0.7 0.5 1.0 0.1
2. bottomless.aa.net.uk 11.4% 80 7983. 3272. 38.8 7983. 2857.
3. n.aimless.thn.aa.net.uk 11.4% 80 7843. 3268. 38.3 7843. 2837.
4. google1.lonap.net 8.9% 80 7704. 3375. 37.9 7730. 2855.
5. 108.170.246.129 11.4% 80 7866. 3316. 38.7 7878. 2871.
6. 108.170.230.169 15.2% 79 8014. 3311. 40.2 8026. 2911.
7. google-public-dns-a.google.com 14.1% 79 8065. 3270. 37.7 8065. 2836.
Zyxel in bridge mode, Linksys running patched LEDE build by davidc502, no SQM
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T14:32:41+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 56 0.5 0.4 0.3 0.6 0.0
2. bottomless.aa.net.uk 19.6% 56 9322. 1897. 36.2 9322. 2820.
3. n.aimless.thn.aa.net.uk 16.1% 56 9202. 2249. 35.6 9369. 3172.
4. google1.lonap.net 18.2% 56 9491. 1982. 37.3 9491. 2932.
5. 108.170.246.129 16.4% 55 9565. 2160. 36.0 9565. 3111.
6. 108.170.230.169 16.4% 55 9630. 2179. 36.5 9630. 3111.
7. google-public-dns-a.google.com 16.4% 55 9540. 2200. 35.9 9540. 3110.
With SQM (cake queue discipline, downstream set to 2200 upstream to 300)
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T14:40:00+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 58 0.4 0.4 0.3 0.5 0.0
2. bottomless.aa.net.uk 7.0% 57 4941. 1319. 35.6 4941. 1660.
3. n.aimless.thn.aa.net.uk 7.1% 57 4793. 1265. 36.6 4793. 1609.
4. google1.lonap.net 7.1% 57 4803. 1283. 36.5 4803. 1614.
5. 108.170.246.129 7.1% 57 4815. 1290. 36.2 4815. 1623.
6. 108.170.230.169 7.1% 57 4842. 1302. 36.8 4842. 1635.
7. google-public-dns-a.google.com 7.1% 57 4857. 1315. 37.1 4857. 1646.
With SQM (downstream unfiltered, upstream 200)
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T15:14:28+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 68 0.5 0.4 0.3 0.5 0.0
2. bottomless.aa.net.uk 0.0% 68 59.0 136.2 39.2 798.0 178.1
3. n.aimless.thn.aa.net.uk 0.0% 68 49.8 152.7 38.1 844.5 182.6
4. google1.lonap.net 0.0% 68 90.2 175.0 41.7 884.1 195.2
5. 108.170.246.129 0.0% 68 68.1 174.1 39.9 921.5 198.1
6. 108.170.230.169 0.0% 68 57.7 186.8 43.1 972.2 205.5
7. google-public-dns-a.google.com 0.0% 67 94.3 196.1 40.7 956.9 212.1
SQM (downstream 2200 upstream 300) with MTU 1280
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T15:23:52+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 56 0.4 0.4 0.3 0.8 0.1
2. bottomless.aa.net.uk 7.1% 56 4077. 992.0 45.9 4077. 1337.
3. n.aimless.thn.aa.net.uk 7.1% 56 4126. 1008. 43.5 4126. 1351.
4. google1.lonap.net 7.3% 55 4008. 963.4 44.9 4008. 1298.
5. 108.170.246.129 7.3% 55 4020. 975.9 46.3 4020. 1310.
6. 108.170.230.169 7.3% 55 4018. 983.6 47.8 4018. 1318.
7. google-public-dns-a.google.com 7.3% 55 4069. 995.6 44.4 4069. 1331.
SQM (downstream 300 upstream unfiltered) MTU 1280
Note upstream unfiltered now, but downstream severely limited.
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T15:45:40+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 45 0.4 0.4 0.3 0.5 0.0
2. bottomless.aa.net.uk 0.0% 45 40.2 73.0 37.5 209.1 49.0
3. n.aimless.thn.aa.net.uk 0.0% 45 39.8 72.6 38.1 331.1 59.8
4. google1.lonap.net 0.0% 45 41.5 81.3 37.1 453.7 72.5
5. 108.170.246.129 0.0% 45 44.2 83.1 37.8 579.7 90.3
6. 108.170.230.169 0.0% 44 41.5 79.8 37.8 472.5 76.9
7. google-public-dns-a.google.com 0.0% 44 40.8 78.5 39.5 334.0 61.2
SQM (downstream 800 upstream unfiltered) MTU 1280
Again just limiting downstream.
REDACTED-HOSTNAME (172.16.0.202) 2018-04-13T15:49:03+0100
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. LEDE-ROUTER 0.0% 56 0.4 0.4 0.3 0.6 0.0
2. bottomless.aa.net.uk 0.0% 56 39.4 117.0 37.9 495.8 133.2
3. n.aimless.thn.aa.net.uk 1.8% 56 38.8 119.7 37.9 595.8 143.3
4. google1.lonap.net 0.0% 56 42.1 120.3 37.8 470.1 131.2
5. 108.170.246.129 0.0% 56 44.1 129.0 37.5 587.0 146.0
6. 108.170.230.169 0.0% 56 44.9 133.4 40.0 590.2 151.3
7. google-public-dns-a.google.com 0.0% 56 40.1 125.5 38.1 493.5 139.7
Once again many thanks to everyone for all their input so far!