SQM Details Confusion

https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm

The author talks about mpu values. Do mpu vales need to be set manually somehow or are they set depending on the overhead value entered? I never see mpu values.

https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm-details#making_cake_sing_and_dance_on_a_tight_rope_without_a_safety_net_aka_advanced_features

In the To enable Per-Host Isolation section, it is suggested adding nat dual-srchost and nat dual-srchost in the Advanced option strings section. This is no longer there apparently.

I am using OpenWrt 23.05.4, LuCI git-23.051.66410-a505bb1, and luci-app-sqm git-22.360.73151-127c900.

These need to be set by hand.

Could you post a screen-shot please?

After looking again, I assume mpu goes into the Minimum packet size window?


Here is the requested screenshot:

At the bottom.

Thanks @dave14305! I hope the author of that guide would update it to say that they go into the Qdisc options fields. Maybe that person would also change the ingress line to:

nat dual-dsthost ingress

Hmm... I add these and now my tests are ~100 Mbps slower.

And then if I uncheck Software offloading on the firewall, I lose another ~100 Mbps.

If I check software unloading and remove what I entered in the screenshot above, I get my full Internet speed, but it bounces between 300-370 Mbps (the plan I have says 300 Mbps downloading).

Yes, note how the comment text mentions mpu?

Again note how the comment text contains the words "advanced option string"?

The wiki actually mentions this already, so what exactly is missing?

You are apparently running out of CPU... options are:
a) get a router with a more powerful cpu
b) live with a higher throughput sacrifice
c) try to squeeze out a bit more throughput by playing with irqbalance and packet steering
d) try using sim'lest_tbf.qos/fq_codel instead of cake
e) use piece_of_cake.qos/cake with no advanced options

Getting a faster CPU likely is the most effective but also most expensive option.

What router model are you using right now?

The guides would be much easier for people new to these features (like me) to understand if the actual name of the field was used instead of the description under the field. The current way it is done is not very intuitive IMO.

For nat dual-dsthost ingress, yes the WiKi MENTIONS it, but the code line given is just nat dual-dsthost. It needs to be the full line used instead of mentioning it in a way that ingress also needs to be added. Why not just add it to the line given?

I use a TP-Link Archer C7 V5. I gave up on the ingress/egress stuff. I have SQM on using 270000 (for 300 Mbps down) and 9000 (for 10 Mbps up) on Basic tab, the default cake options for Queue tab, and Ethernet with 22 for Per Packet Overhead (bytes) and 64 on Minimum packet size (mpu) on Link Layer tab. I also have software overflow enabled on the firewall so I do not lose 100+ Mbps as I would without it enabled.

I do have access to an Asus GT-AX11000 which would blow the TP-Link out of the water, but OpenWrt doesn't support most modern, high-end wireless routers. Thankfully, I can install Asuswrt-Merlin firmware to it.

I prefer OpenWrt, but it needs to support the modern chipsets being used which it seems it does not. I know a lot of that is because the Linux kernel is slow to add new things to, and the chipset makers don't offer Linux support usually. I also have access to a TP-Link Archer A9 V6, but official OpenWrt doesn't support the 5 GHz wireless chipset it uses, and that router has been out for awhile now so it seems unlikely to me OpenWrt will support most of the new AX routers that are out now anytime soon forcing most people to use older equipment like the Archer C7 V5. There is an unofficial OpenWrt that adds the 5 GHz support for the Archer A9 V6, but it is not the current OpenWrt.

However the wiki contains the actual text in the GUI. Respectfully, if users do not actually read the wiki and the GUI text, all bets are off...

This is incorrect, in the section about per-host isolation it reads:

To enable Per-Host Isolation Add the following to the ā€œAdvanced option stringsā€ (in the Interfaces ā†’ SQM-QoS page; Queue Discipline tab, look for the Dangerous Configuration options):

For queueing disciplines handling incoming packets from the internet (internet-ingress): nat dual-dsthost

For queueing disciplines handling outgoing packets to the internet (internet-egress): nat dual-srchost

which for per-host isolation is correct. This is immediately followed by a verbose sectin about the ingress keyword, that ends explicitly in the text you claim is missing:
Please note the addition of the ingress keyword to the ā€œAdvanced option stringsā€

Regarding cake's ā€œingressā€ keyword: Conceptually a traffic shaper will drop and/or delay packets in a way that the rate of packets leaving the shaper is smaller or equal to the configured shaper-rate. This works well on egress, but for post-bottleneck shaping as is typical for the internet ingress (the download direction) this is not ideal. For this kind of shaping we actually want to make sure that there is as little as possible packet-backspill into the upstream devices buffers (if those buffers where sized and managed properly we would not need to shape on ingress in the first place). And to avoid backspill we need to make sure that the combined rate of packets coming into the upstream device (rarely) exceeds the bottleneck-link's true capacity. The ā€œingressā€ keyword instructs cake to basically try to keep the incoming packet rate ā‡ the configured shaper rate. This leads to slightly more aggressive dropping, but this also ameliorates one issue we have with post-bottleneck shaping, namely the inherent dependency of the required bandwidth ā€œsacrificeā€ with the expected number of concurrent bulk flows. As far as I can tell the more aggressive dropping in ingress-mode automatically scales with the load and hence it should make it possible to get away with configuring an ingress-mode rate closer to the true bottleneck-rate, and actually also get higher throughput if only few bulk flows are active. For further reference I recommend to have a look at cake's source at https://github.com/dtaht/sch_cake?files=1

With the 'ingress' keyword, the above example for incoming packets from the internet would be nat dual-dsthost ingress

Because these are two different options, and not everybody will want to use both... really, I can see that the wiki text that has been on and off worked on by several authors in piece-meal fashion might not be perfect and even a bit cluncky, but in this specific instance the wiki covers all the bases.

That is a MIPS 74K CPU router running at 750 MHz if I got this right. This will certainly fail to traffic shape 300 Mbps even without using cake"s somewhat expensive features.

I am surprised that you seem to be able to traffic shape 270 Mbps on that router at all, let alone with cake. That certainly is well above what I would expect for that class of CPU. (I am not the best person to expect empathy from, for large throughput sacrifices, on my old wndr 3700v2 aggregate shaping capability topped out at around 70 Mbps, on my 100/40 link that meant losing 50% of the aggregate throughput, which I happily sacrificed for consistent low jitter. I am not saying this is the only acceptable trade-off, just that I would trade in 100 Mbps potential throughput for better latency performance in a blink of the eye...)

Yes, that can be slightly annoying that OpenWrt is a bit restricted in which hardware it supports well and which it does not. As in other volunteer projects that is mainly driven, by what the actual developers have and are interested in. If asus-merlin works better for you, by all means, use it.

However there are reasonably modern designs out there that are supported either by stable or at least by snapshots, like the GL.iNet GL-MT6000(Flint 2) that people seem to be happy with, and also a number of decent mediatek filologoc based designs.

OpenWrt does support modern/ high-end filogix 8x0/ ipq807x based routers, it however generally doesn't support Broadcom based routers like that one (as wireless/ packet engine/ xDSL-/ cable modem and phone features are a no-go area (no driver) - and as a result very little attention is paid to their support). Given that OpenWrt can only support what some of its developers or other contributors (including random drive-by contributors) have sitting on their desk, paid for by their own money. Accordingly support does tend to trail market availability - and these contributors obviously prefer to spend their time of options with reasonable mainline support, a good chance for getting them fully supported.

With a throughput expectation of ~400 MBit/s, So you have 500Mbps-1Gbps fiber and need a router READ THIS FIRST is still largely valid. filogic 8x0 is a contender, but also x86_64, rockchip, RPi4+ (skipping the more exotic options like powerpc/ watchguard m300, the rb5009, various cavium/ octeon mips64 devices, etc.).

1 Like

We'll have to agree to disagree. The first article I linked to is actually pretty good and easy to follow along with. The only question I had from it was were did mpu values go. The second article is a dry read. The information needs to be better organized. No matter what the article is, the name of the field needs to be used instead of the description under the field.

I cannot when I lose a 1/3 of my full speed. But, it is working pretty well with these settings. I actually am doing more testing. I increased 270000 to 325000 since Speedtest.net keeps claiming my cable Internet is downloading a 360 Mbps while Waveform is kind of all over the place...

https://www.waveform.com/tools/bufferbloat?test-id=d937437d-4cd7-4ba9-88f9-fc63e33cec12

I did say...

And it sure seems like a lot of the routers on the USA market are now using Broadcom chips. I would love to find a great AX router I can easily order from Amazon for no more than $150 that OpenWrt supports perfectly. I think OpenWrt could raise some funds using Amazon affliate links for these:

https://openwrt.org/toh/views/toh_available_16128_ax-wifi

I just went through it using "wifi router" for the Device Type and 4 for the CPU Cores. I came across the TP-Link XDR-6088 (AX6000). It is presently on sale on Amazon for $169. I just about pulled the trigger on it then found the Acer Predator Connect W6 for $144.99 and did pull the trigger.

EDIT 1: And now I am cancelling that order because it needs to use serial to install OpenWrt. I really appreciate how the table makes it look like it is no problem to install OpenWrt, but the device page (with the wrong picture for the router) says serial which is not all that easy:

https://openwrt.org/toh/acer/predator_w6

EDIT 2: Seems like the GL.iNet Flint 2 (GL-MT6000) might be the way to go for now. On their US store, it is on sale for $132.50. Use coupon code GLFANS5OFF to save $5 more:

Respectfully, no. Per-host isolation and ingress accounting are two orthogonal issues that both are covered in the detail wiki, including the explicit enumeration of the keywords to put into the config. There is nothing to disagree about.
Describing the sqm details page as 'dry' seems fair, by all means propose a replacement text that improves that page (either request wiki editing permissions or post things here in the forum as a new thread). This is how opensource works, after all.

I wonder whether you looked at:

the required feature list seems close to what you seem to be looking for.

Does the TOH table actually have a field for ease of installation?

The device page starts with this note though:

Under Construction!
This page is currently under construction. You can edit the article to help completing it.

So, maybe add the correct photo to replace what looks like the default example image from a template?

About the mt6000, it appears people are reasonably happy with, so this seems a decent choice.

OK then, but it is not on me to fix it. That is the vanity of opensores.

No as I would expect the AX router table to do that, and (as I wrote) I had to filter the table to get to the good stuff and go through a few models before finding the one that appears to be easy to install OpenWrt onto. I can, however, relate to the OP's frustration of that thread.

Not on me to fix. I do like your idea of having a section on the table for easy of installation. But, specifically, it needs warnings. I can see someone buying an AX router from that table, wanting to install OpenWrt, and discovering they need to have a serial console to do it. I am glad I discovered that shortly after ordering the Acer and cancelled the order because of that. At least make it easy to get the device's OpenWrt WiKi page.

See, noting and reporting (perceived) short comings is always easy, coming up with an actual useful replacement text costs time. The question really is, whose time. Do I understand you correctly that your position is "someone else's time"? Fair enough, though not all that likely to result in changes.

If you do not scratch your own itches, who do you expect to do that?

Ah, I was too cryptic, you implied the TOH made you believe the Acer would be easy to install, so I wanted to figure out what information in the TOH made you come to that conclusion?

Like clicking the links in the table columns named "device page", or the next column "OWrt Forum topic" (at the right side of the TOH)? Sure these do not exist for all entries, but e.g. for the acer and the gl-mt300 and mt6000 these are populated...

1 Like

I'm going to put on my moderator hat here, and note that this topic has veered from a discussion of SQM parameters to "wiki maintenance issues". Both are legitimate subjects, but if you want to talk further about the wiki, please start a new topic. Thanks

Respectfully, this thread was always about the SQM Details wiki page...

I completely agree. Perhaps I should have called the digression "ToH maintenance issues" (an "easy to install" warning/flag). Thanks.

1 Like

Most of it is @moeller0 trolling. But yes it is on OpenWrt to keep OpenWrt documentation up-to-date with useful, easy-to-follow information. And it woud be silly for users who barely go into the nuts and bolts of OpenWrt to edit guides (like me) because, as you said earlier:

They would benefit from a select group of OpenWrt admins/contributors who peer-review these with an eye to ease-of-use for normal users such as myself.

Don't get me wrong. I am all for guides, but they need to be easy to follow and need to use the name of the field something goes into instead of the description under the field which is usually in smaller letters. Expecting a normal user to follow a guide where you the author doesn't use the field name, but instead the description under the field is farcical.

Look, you can continue to complain (hopeing someone else addresses your grievances) or you can draft a replacement for the sections you deem problematic. Your choice.

I am willing to help get stuff into the wiki, if you feel not confident enough as a relative newcomer. That is where my motivation to help out ends. And given that I am apparently a troll, I consider this to be a generous offer...

2 Likes

Is this a step up or down from unfrozen caveman? :grinning:

1 Like