State of TP-Link Archer C7v2|v5 in 2023

Hmmm... with that many devices, some of them time sensitive, (phone, etc) might it be bloat related issues? Have you tried testing for bufferbloat?

As has been said, 200mbit should be OK, maybe not stellar. But, if bloat is the issue here, and I'd guess so with the traffic load you describe... you WANT SQM, and then your C7 is only good for 100-120mbit. So a problem, or a lot of speed to give up.

You could set up Cake, throttle it back to 95-100mbit and see how that works. The more advanced settings might help your traffic mix more, as well. See the various SQM pages.

Another trick I learned, when I was running just a C7 and had a 300/30 connection, was to only SQM the upload/ingress. Set it to 0 and 30 for the rate speeds. Then you get full line speed on the DL, it just wont manage flows on it. The C7 easily handles SQM'ing 30mbit, and I saw much of the total bloat improvement of running at 100/30. This of course, wont help if you're symmetrical and have 200/200.

Other thing to do, is migrate to a more powerful box, or split system like slh mentioned above. The C7's make decent AP's. I do this now, and its great. A little mini PC or a RPi4, and you're not burning much power.

You could try one of the simpler queue disciplines, but I dont think that will get you to 200mbit. Beware of the C7 getting to higher speeds with SQM than saturates the CPU. Cake at least, will just pass w/o processing if it runs out of CPU, and it looks like its doing 250, while it isnt doing much SQM anymore. Check CPU idle time in top, or watch carefully in the bloat test. A C7 w cake maxes out about 140 on the wire, and about 100-115 over wifi, as I recall.

Getting a better box is not really a problem, I just thought that this one should be enough. :slight_smile:

I did run a bufferbloat test, but I found the results somewhat inconclusive as they varied between A and C or so, even when run consequently. Furthermore, I ran same test with a much more powerful box (GL.iNet AX1800) and even if it performed somewhat better, I don't think the result was ever A+. I could run these tests again tomorrow and document my findings, if you're curious.

Either way, I'm grateful for all your replies! I guess, if I keep having these problems, I'll flash stock firmware to see if it works better, but in the end I'll just sell the device and replace it with the aforementioned GL.iNet or some other router that has more power than the C7.

Run iperf3 directly to the router from both boxes, and post your results.

OK... I re-read your first post, and I apologize for thinking you WERE saying there was gaming and file transfer and stuff going on in your use... Less loading than hundreds more busy threads running.

Yeah, if you don't mind, it might be interesting to see:

  1. What settings you are using with SQM.
  2. Results of tc -s qdisc, after the test.
  3. Results you are getting on the Waveform site test. (that is what you were using?)
  4. What top shows for sirq and idle time during the speedtesting. (see how loaded the CPU is)

I'm thinking there could be a chance of non optimal SQM settings preventing maximum benefit. Would be good to know how much it could smooth thnigs out for you. I got a lot of benefit and consider it the major reason to run my own router/use OpenWrt.

  1. Okay, here are the results of three consecutive iperf3 runs just now:

    Expand to see
    root@Archer:~# iperf3 -s -D && iperf3 -c 127.0.0.1
    Connecting to host 127.0.0.1, port 5201
    [  5] local 127.0.0.1 port 42548 connected to 127.0.0.1 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  56.3 MBytes   473 Mbits/sec    0   1.06 MBytes       
    [  5]   1.00-2.00   sec  59.9 MBytes   501 Mbits/sec    0   1.06 MBytes       
    [  5]   2.00-3.00   sec  59.6 MBytes   500 Mbits/sec    0   1.06 MBytes       
    [  5]   3.00-4.00   sec  59.5 MBytes   501 Mbits/sec    0   1.06 MBytes       
    [  5]   4.00-5.00   sec  60.2 MBytes   504 Mbits/sec    0   1.06 MBytes       
    [  5]   5.00-6.00   sec  61.2 MBytes   514 Mbits/sec    0   1.06 MBytes       
    [  5]   6.00-7.00   sec  61.1 MBytes   513 Mbits/sec    0   1.06 MBytes       
    [  5]   7.00-8.00   sec  62.2 MBytes   522 Mbits/sec    0   1.06 MBytes       
    [  5]   8.00-9.00   sec  61.5 MBytes   515 Mbits/sec    0   1.06 MBytes       
    [  5]   9.00-10.00  sec  64.0 MBytes   538 Mbits/sec    0   1.06 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec   606 MBytes   508 Mbits/sec    0             sender
    [  5]   0.00-10.02  sec   604 MBytes   506 Mbits/sec                  receiver
    
    iperf Done.
    root@Archer:~# iperf3 -s -D && iperf3 -c 127.0.0.1
    Connecting to host 127.0.0.1, port 5201
    [  5] local 127.0.0.1 port 57784 connected to 127.0.0.1 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  57.5 MBytes   481 Mbits/sec    0   1023 KBytes       
    [  5]   1.00-2.01   sec  59.3 MBytes   494 Mbits/sec    0   1023 KBytes       
    [  5]   2.01-3.00   sec  58.6 MBytes   496 Mbits/sec    0   1023 KBytes       
    [  5]   3.00-4.00   sec  58.1 MBytes   487 Mbits/sec    0   1023 KBytes       
    [  5]   4.00-5.00   sec  57.8 MBytes   486 Mbits/sec    0   1023 KBytes       
    [  5]   5.00-6.00   sec  60.2 MBytes   504 Mbits/sec    0   1023 KBytes       
    [  5]   6.00-7.00   sec  57.9 MBytes   487 Mbits/sec    0   1023 KBytes       
    [  5]   7.00-8.00   sec  61.1 MBytes   512 Mbits/sec    0   1023 KBytes       
    [  5]   8.00-9.00   sec  60.7 MBytes   510 Mbits/sec    0   1023 KBytes       
    [  5]   9.00-10.00  sec  63.8 MBytes   535 Mbits/sec    0   1023 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec   595 MBytes   499 Mbits/sec    0             sender
    [  5]   0.00-10.01  sec   594 MBytes   498 Mbits/sec                  receiver
    
    iperf Done.
    root@Archer:~# iperf3 -s -D && iperf3 -c 127.0.0.1
    Connecting to host 127.0.0.1, port 5201
    [  5] local 127.0.0.1 port 37310 connected to 127.0.0.1 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  58.7 MBytes   491 Mbits/sec    0   1023 KBytes       
    [  5]   1.00-2.00   sec  59.9 MBytes   502 Mbits/sec    0   1023 KBytes       
    [  5]   2.00-3.00   sec  61.0 MBytes   513 Mbits/sec    0   1023 KBytes       
    [  5]   3.00-4.00   sec  62.0 MBytes   519 Mbits/sec    0   1023 KBytes       
    [  5]   4.00-5.02   sec  61.2 MBytes   507 Mbits/sec    0   1023 KBytes       
    [  5]   5.02-6.00   sec  59.8 MBytes   509 Mbits/sec    0   1023 KBytes       
    [  5]   6.00-7.00   sec  60.8 MBytes   510 Mbits/sec    0   1023 KBytes       
    [  5]   7.00-8.00   sec  60.4 MBytes   506 Mbits/sec    0   1023 KBytes       
    [  5]   8.00-9.00   sec  59.9 MBytes   502 Mbits/sec    0   1023 KBytes       
    [  5]   9.00-10.00  sec  59.9 MBytes   503 Mbits/sec    0   1023 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec   603 MBytes   506 Mbits/sec    0             sender
    [  5]   0.00-10.00  sec   602 MBytes   505 Mbits/sec                  receiver
    
    iperf Done.
    
  2. I'm not really using SQM or any other form of traffic shaping. I hoped I wouldn't have to bother about (configuring) it. I can install these packages though, if you give me their names. In that case perhaps you could also suggest me the best settings to use?
    With that in mind, I'm not sure if the tc command applies to me as well, because none of the tc* packages were or are installed on the router.

  3. Waverform bufferbloat test results. They're quite surprisingly consistent this time:

    1. A / 4ms / +27ms / +13ms
    2. A / 5ms / +13ms / +14ms
    3. A / 4ms / +28ms / +11ms
  4. top header at a moment during the Waveform test:

    Mem: 66312K used, 55972K free, 1164K shrd, 0K buff, 14044K cached
    CPU:   1% usr   0% sys   0% nic   1% idle   0% io   0% irq  95% sirq
    Load average: 0.44 0.29 0.13 3/54 4021
    

You sirq at 95% seems high, but I don't have a reference point. See here:

Try bufferbloat tests at fast.com and/or cloudflare, while also checking waveform at the same time to rule out ISP and internet connection issues.

The sirq number is a bit flaky during these tests, but it easily reaches 99% as well.

Consecutive Fast.com tests results

Ekrano nuotrauka 2023-09-06 12.47.52
Ekrano nuotrauka 2023-09-06 12.48.36
Ekrano nuotrauka 2023-09-06 12.49.42

Consecutive Cloudflare test results (15 minutes later)



Subsequent Waveform tests again:

And with SQM installed, both speeds set to 180000 kbit/s in the config, and piece_of_cake setup script enabled:

Again, sirc was above 90% and even reached 100% at some point. Doesn't look like much of an improvement. Did I have to reboot the router first?

Sorry, been away...

So, yes, you wont see rests with the tc command when you arent using SQM.

The non SQM results you're getting on the waveform tests is not all that bad, actually.

Nope, you just enable or disable cake.

When running cake, you should set the speed lower. You're running out of CPU/irq and need to slow it down to the point youre below 95-100% sirq. Cake will start dropping packets if the cpu cant handle the rate, and then its not helping you much. (While overworking the cpu...) Set the traffic rates to 100mbit for testing, to see how it helps your bloat, if the sirq stays below 100%, and how the network feels. If you see it getting close to 100%, its too fast for the traffic speed.

Then you can edge the speed up, though you shouldnt expect more than 110-140mbit without running out of sirq time. Or lower, since my testing was on an asymmetric line that was 300/30, hence my practical limit of around 110/30.

And, then you get to decide if that much speed loss is worth the sacrifice... but if the smoothness improves a lot under load, you might accept that, or find something powerful enough to give you working SQM at your full line speed.

'kay, so I tried setting download and upload speeds to 100000, 90000, 50000 and even 30000 kbits, and running the bufferbloat test. I can't say I noticed any difference. My bufferbloat grade was always A, and sirq would jump to 98% or even 99% in all cases. I suppose it makes sense though, because why wouldn't it use the CPU resources that are otherwise available?

Perhaps the only thing I've noticed is that there seem to be much fewer considerable deviations from the average per-packet latency when SQM is enabled. E.g. this result only has three deviating results, and this one appears to have none.

I guess I'll just have to see whether or not I'm generally happy with this router. In fact, I have acquired another one already (a GL.iNet AX1800), but I'm just not yet sure if I actually need it or if it's OK to sell it.

Hmmm... sounds like somethings not right. You should see the latency approach 0ms, somewhere below 100mbits... And, in the last Waveform tests you posted, I still see >100mbit speeds. SQM dosent seem to be controlling your traffic speed. You should see a speed close to what you set it to, not above.

And.... Rereadng this, I realize it must have been a long day, back then... I should have been pointing you at the idle%!! THAT is the primary indicator of running out of resources, when it gets down near to 0%. :flushed: So, focus on idle time, and how little there is left during the test.

Other thing to check, is to look at tc -s qdisc, to make sure that you do have a functioning SQM, and its doing something. Ive been caught a few times by typoing an advanced command, with NO cake enabled as a result. Or, trying a new, different router and getting cake on the wrong interface due to different layouts. It can be hard to notice, if your connection is not obviously terrible without it.

Lastly... if you would benefit from adding an AP for better coverage around the house, the C7 would be worth keeping for that..

Here is my anecdotal experience with the C7 and current OpenWrt versions. I used my C7 with OpenWrt starting last year with OpenWrt 22.03 for about six months. I have an 70/30 Mbit VDSL connection, the C7 is a router behind my modem, it was configured only with cake SQM. I have about 8 devices connected to it, and maybe 3 are online at the same time. So not much traffic is expected in my network and everything was running smoothly. But after a few months I noticed that the router had a high load between 1-2 and high CPU usage regularly, when the uplink max bandwith was used. After trying to fix and figuring out, I just downgraded to OpenWrt 21.04.x, activated Software offloading and enabled fq_codel instead of cake for SQM. The effect was that load and CPU usage has normalized (on max bandwith the load is between 0.1-0.3 and CPU is maybe above 60%). So I guess the 10 year old hardware in the C7 starts to show and a more current build is maybe just to demanding for the little champ. I still use the C7 as my router and it is running great on the older OpenWrt version.

Hey Rimas... did you ever see if you had a functioning SQM? I.E, trying tc -s qdisc in the terminal, after running a test? Then you'd know if you actually were running it, seeing statistics on the data, vs not seeing any.

IIRC, even when saturated, (and running above 100mbit should do it, like that example) there was a bit of improvement... but nothing like you should see, and it seems you might not have had it working.

Hey guys. Just decided to revive my C7 v2. Flashed 23.05 rc4 and tried hardware flow offloading in firewall settings - looks like I am able to get around 900mbit on iperf3 (no QOS). Not bad! Only 280mbit on 5Ghz Wi-Fi but no complaints there.

The most funny aspect of that would be, that there is no hardware flow-offloading available on the c7-v2…

Interesting. I am guessing that software flow offloading is all you need to achieve those speeds, which is a surprise to me.

That is correct. Actually the Ethernet driver has a lot of opportunities for optimization. Nobody’s working on it though.

What was your iperf3 command and where did you run it, and what was the topology?

Also, hardware revision?

Archer C7 v2. Just dual NAT on my network, iPerf3 to a server on the WAN side. I did a regular test and reverse test, both were about the same speeds. Upload maybe slightly slower at 870mbit

Impossible. Show me.