QoSmate: (Yet Another) Quality of Service Tool for OpenWrt

I play warzone on PC and recently discovred this forum. I play in north American Servers and I use CAKE as the Root Queueing Discipline. In the first two days of installing QOSmate my game felt really Fluid with great Hit Reg but yesterday I felt like I am 1-2 seconds behind everyone in the lobby. What could be the problem. Please help. I just want a fair Game. Also the DHCP class shows up as CS0 on UDP ports for Warzone. How can I give them highest priority?

I use flint 2 router

I use CAKE scheduler

My speed is about 580 / 500

I input 522 for download and upload for 522 the same

I test speed in Libreqos and other speedtest websites

My download speed max at 310-350 though I input download for 522.

What gives?

Bottleneck on my router?

Thanks for pointing that out... I simply forgot about it when the new dependencies were added. I always build my firmware myself too, but I apparently have jq included in my build, which is why I didn’t notice it.

I’ll take a look at it.

The easiest fix is to just update qosmate via the cli or ui after your build or run git fetch origin && git reset --hard origin/main in both directories... this pulls the latest version and discards any local changes.

1 Like

The quantum values are intentional and based on proven implementations:

HFSC: Uses quantum = MTU Ɨ 2 (3000), inherited from the original SimpleHFSCgamerscript. Since HFSC's service curves already handle prioritization between classes, fq_codel only needs to ensure fairness within each class... a larger quantum reduces CPU overhead here.

RFC 8290:

"The size of the quantum determines the scheduling granularity, with the trade-off from too small a quantum being scheduling overhead."

HTB: Uses quantum = 300 for priority/background classes, inspired by sqm-scripts. The idea: The smaller quantum gives small packets (gaming, voip) a slight latency boost over large bulk packets within the same class. This matters more at lower bandwidths (<100 Mbit).

Both approaches seem reasonable... they just reflect different design philosophies. If you want to dive deeper, check man tc-fq_codel and the RFC 8290 spec for the technical details...

@topgunsavi
I don’t think you’re alone with these findings. This kind of behavior has been observed many times before, but it’s not specific to qosmate and is likely not something you can fix yourself or within your own network. If you use the search function, you’ll find plenty of discussions about this topic (in this thread and the forum).

Just one thing upfront though: online gaming has never been fair and probably never will be.

If you believe you’ve found a bug or that qosmate is not working correctly, feel free to go through the issue report template and post it here:

Sorry, I’m not sure what you mean by this.

@Chaiyoabc If your upload speed is 500 i wouldn't set it to 522...
Aside from that, it’s possible that your router is the bottleneck. You should be able to find information in the forum about how much traffic the Flint 2 router can realistically shape.

Hello,

I am encountering an issue with the interaction between qosmate and youtubeUnblock on OpenWRT. During system boot, a conflict occurs that causes youtubeUnblock to stop functioning.

Symptoms (from system log):

  1. The youtubeUnblock service starts successfully via the /etc/rc.d/S91youtubeUnblock script and begins listening on Netfilter queue number 537 (Queue 537 started).

  2. The /etc/rc.d/S99qosmate script automatically includes an nftables rules file: '[!] Automatically including '/usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft'.

  3. Immediately after this, the youtubeUnblock process crashes with an error: mnl_cb_run: Operation not permitted and the message Probably another instance of youtubeUnblock with the same queue number is running.

Analysis of the conflict:
The file /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft contains rules that also use queue num 537. It appears that when qosmate loads this file, it attempts to re-bind or interact with the same Netfilter queue that is already in use by the actively running youtubeUnblock daemon. The Linux kernel interprets this as a permission conflict (Operation not permitted) and terminates the original youtubeUnblock process.

Result:
After the router boots, youtubeUnblock fails and requires a manual restart to work.

Question:
Is it possible to configure qosmate so that it does not automatically include this specific rules file (/usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft), or to change its behavior to avoid this conflict? Perhaps the inclusion could be skipped if the queue is already occupied, or the file could be modified to use a different queue number.

Thank you for your attention to this matter. I would appreciate any guidance or a fix for this interaction.

Not Qosmate is loading the include. Qosmate simply triggers a firewall reload on startup, which causes all firewall includes to be reloaded. Since Qosmate runs later in the boot sequence (after youtubeUnblock has already started), the firewall is just reloaded again. If youtubeUnblock can’t handle this properly, I would look for the issue there instead.

Also, Qosmate does not use queue number 537... I’m not sure what you’re referring to.

Got it, thanks for the clarification. That makes sense — the firewall reload is what triggers it.

Looks like the issue is indeed with youtubeUnblock not handling the queue properly when the firewall rules get reapplied. Thanks for clearing that up

1 Like

Hello, like now 2 weeks ago I bought a flint 2 router as I heard (chatgpt, my bad) smart queue management is a way to organize your network traffic in a neat way which in turn results in better in game performance which, in my case, is for playing call of duty (black ops 7 at the moment) on my ps5 slim. I flashed the flint2 router with openwrts official os (24.10) and implemented cakes sqm. I think more than a few days ago now I saw some people on other forums recommending qosmate as you can actually tag traffic from specific ports used by a specific IP, which would make using cakes diffserv4 option viable. So that’s what I tried, but I think I might mis some obvious things because it didn’t go as I expected. I found that depending on the rules I set, the tags showing up in the connection tab varied. When specifying a single udp port for my static PS5 IP as both in and out, only one line of traffic of udp 3074 (I don’t know how else to call it I just started im a noob) was tagged CS5, while others were still marked as CS0. I disabled wash egress as I thought it might be due to these tags being after sending out the packets but nothing changed. Then when I tried the general rules for gaming consoles which @hudra made, suddenly all the 3074 udp port traffic lines were classified correctly as cs5, and also when using ā€œservice qosmate statusā€ both the download and upload tins in voice were being filled when playing a cod public match on my ps5. When only using the single 3074 udp port in the rules the voice tin packets barely went up when playing a cod game.

The screenshots and status code you see below are all when being in a public cod match. I’m wondering if this is purely a visual effect and that its fine or that I’m making an obvious mistake here. Also since the voice tin when specifying a single port (3074 udp) in the rules doesn't actually seem to fill. Next to that I'm curious as to why the connections only appear to show outgoing traffic from my ps5. I scouted the forum and could find two similar issues that have occured, the one that Knomax dealt with in 2024 (I dont know how to refer to that reply), which he resolved by flashing an older version of openwrt (I think, If I'm correct) , and one more recently where @hudra implemented a fix for same lines of traffic changing dscp tag in the connection tab. I'm unsure how similar these are and as I'm not an expert I'm asking it here, if this issue is already resolved somewhere else I'm very sorry

For context, I’m using a flint 2 router connected to a ONT (fiber casket) via an ethernet cable, and it uses a pppoe-wan with vlan id: 6 (eth 1.6, where the 6 is the vlan tag I think) connection as this is how my isp providers manual said to connect your own router. Download/upload both 1000mb/s.

As I said I’m pretty new to this stuff, the main thing I want to make sure is correct is the dscp tagging.

when specifying single port:

root@OpenWrt:~# service qosmate status
==== qosmate Status ====
qosmate autostart is enabled.
qosmate global:enabled is true.
Traffic shaping (CAKE) is active on the egress interface (pppoe-wan).
Traffic shaping (CAKE) is active on the ingress interface (ifb-pppoe-wan).

==== Current Settings ====
Upload rate: 750000 kbps
Download rate: 750000 kbps
Game traffic upload: 112900 kbps
Game traffic download: 112900 kbps
Queue discipline: CAKE (Root qdisc)

==== Version Information ====
Backend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0
Frontend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0

QoSmate components 'BACKEND FRONTEND' are up to date.

==== System Information ====
{
        "kernel": "6.6.119",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.5",
                "revision": "r29087-d9c5716d1d",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
                "builddate": "1766005702"
        }
}

==== Health Check ====
status=service:enabled;nft:ok;tc:ok;config:ok;packages:ok;BACKEND_integrity:ok;FRONTEND_integrity:ok;;errors=0

==== Flow Offloading Check ====
Flow offloading is disabled (compatible with qosmate).

==== WAN Interface Information ====
        "l3_device": "pppoe-wan",
        "device": "eth1.6",

==== QoSmate Configuration ====

config global 'global'
        option enabled '1'

config settings 'settings'
        option WAN 'pppoe-wan'
        option DOWNRATE '750000'
        option UPRATE '750000'
        option ROOT_QDISC 'cake'

config advanced 'advanced'
        option PRESERVE_CONFIG_FILES '1'
        option WASHDSCPUP '0'
        option WASHDSCPDOWN '1'
        option BWMAXRATIO '20'
        option UDP_RATE_LIMIT_ENABLED '0'
        option TCP_UPGRADE_ENABLED '1'
        option TCP_DOWNPRIO_INITIAL_ENABLED '1'
        option TCP_DOWNPRIO_SUSTAINED_ENABLED '1'
        option MSS '536'
        option NFT_HOOK 'forward'
        option NFT_PRIORITY '0'
        option MAX_CONNECTIONS '0'
        option COMMON_LINK_PRESETS 'ethernet'
        option OVERHEAD '44'
        option MPU '96'
        option LINK_COMPENSATION 'noatm'

config hfsc 'hfsc'
        option gameqdisc 'pfifo'
        option nongameqdisc 'fq_codel'
        option nongameqdiscoptions 'besteffort ack-filter'
        option MAXDEL '24'
        option PFIFOMIN '5'
        option PACKETSIZE '450'
        option netemdelayms '30'
        option netemjitterms '7'
        option netemdist 'normal'
        option pktlossp 'none'
        option netem_direction 'both'

config cake 'cake'
        option PRIORITY_QUEUE_INGRESS 'diffserv4'
        option PRIORITY_QUEUE_EGRESS 'diffserv4'
        option HOST_ISOLATION '1'
        option NAT_INGRESS '1'
        option NAT_EGRESS '1'
        option ACK_FILTER_EGRESS 'auto'
        option AUTORATE_INGRESS '0'

config custom_rules 'custom_rules'

config rule
        option name 'PS5_COD_HIGHP_UDP_IN'
        option proto 'udp'
        list src_port '3074'
        list dest_ip '192.168.1.3'
        option class 'cs5'
        option counter '1'
        option trace '0'
        option enabled '1'

config rule
        option name 'PS5_COD_HIGHP_UDP_OUT'
        option proto 'udp'
        list src_ip '192.168.1.3'
        list dest_port '3074'
        option class 'cs5'
        option counter '1'
        option trace '0'
        option enabled '1'

==== Package Status ====
All required packages are installed.

qdisc cake 1: dev pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-srchost nat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 1797894 bytes 8143 pkt (dropped 0, overlimits 145 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 30464b of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           29 /    1492
 min/max overhead-adjusted size:       96 /    1536
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          0us         14us         18us          7us
  av_delay          0us          3us          3us          0us
  sp_delay          0us          2us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0         5177         2949           17
  bytes               0       861683       934446         1765
  way_inds            0            0           11            0
  way_miss            0           99          106            3
  way_cols            0            0            0            0
  drops               0            0            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            0            2            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0         1278         9968          333
  quantum          1430         1514         1514         1514

qdisc ingress ffff: dev pppoe-wan parent ffff:fff1 ----------------
 Sent 6698428 bytes 8738 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8008: dev ifb-pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-dsthost nat wash ingress no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 6698428 bytes 8738 pkt (dropped 0, overlimits 2388 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 85Kb of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           40 /    1492
 min/max overhead-adjusted size:       96 /    1536
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          0us         16us         48us          5us
  av_delay          0us          3us          9us          0us
  sp_delay          0us          3us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0         5200         3524           14
  bytes               0      4047238      2650192          998
  way_inds            0            0           11            0
  way_miss            0          116           86           13
  way_cols            0            0            0            0
  drops               0            0            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            0            2            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0         1480         1492           76
  quantum          1430         1514         1514         1514


==== Nftables Ruleset (dscptag) ====
        chain dscptag {
                type filter hook forward priority filter; policy accept;
                iif "lo" accept
                iifname "pppoe-wan" accept
                meta length < 100 tcp flags ack add @xfst4ack { ct id . ct direction limit rate over 3750000/second burst 5 packets } counter packets 0 bytes 0 jump drop995
                meta length < 100 tcp flags ack add @fast4ack { ct id . ct direction limit rate over 375000/second burst 5 packets } counter packets 0 bytes 0 jump drop95
                meta length < 100 tcp flags ack add @med4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 34 bytes 1768 jump drop50
                meta length < 100 tcp flags ack add @slow4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 15 bytes 780 jump drop50
                meta l4proto tcp ct bytes < 46875000 jump mark_500ms
                meta l4proto tcp ct bytes > 937500000 jump mark_10s
                meta l4proto tcp ip dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip dscp set af42 counter packets 2582 bytes 851193
                meta l4proto tcp ip6 dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip6 dscp set af42 counter packets 234 bytes 76201
                udp sport 3074 ip daddr 192.168.1.3 ip dscp set cs5 counter packets 0 bytes 0 comment "ipv4_PS5_COD_HIGHP_UDP_IN"
                udp dport 3074 ip saddr 192.168.1.3 ip dscp set cs5 counter packets 11 bytes 551 comment "ipv4_PS5_COD_HIGHP_UDP_OUT"
                meta priority set ip dscp map @priomap counter packets 7685 bytes 1702332
                meta priority set ip6 dscp map @priomap counter packets 252 bytes 81319
                ct mark set ip dscp | 0x80 counter packets 7685 bytes 1702332
                ct mark set ip6 dscp | 0x80 counter packets 252 bytes 81319
        }
}

==== Custom Rules Table Status ====
Custom rules table (qosmate_custom) is not active or doesn't exist.

==== Inline Rules Status ====
No inline rules configured.

When specifying which ports not to use:

root@OpenWrt:~# service qosmate status
==== qosmate Status ====
qosmate autostart is enabled.
qosmate global:enabled is true.
Traffic shaping (CAKE) is active on the egress interface (pppoe-wan).
Traffic shaping (CAKE) is active on the ingress interface (ifb-pppoe-wan).

==== Current Settings ====
Upload rate: 750000 kbps
Download rate: 750000 kbps
Game traffic upload: 112900 kbps
Game traffic download: 112900 kbps
Queue discipline: CAKE (Root qdisc)

==== Version Information ====
Backend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0
Frontend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0

QoSmate components 'BACKEND FRONTEND' are up to date.

==== System Information ====
{
        "kernel": "6.6.119",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.5",
                "revision": "r29087-d9c5716d1d",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
                "builddate": "1766005702"
        }
}

==== Health Check ====
status=service:enabled;nft:ok;tc:ok;config:ok;packages:ok;BACKEND_integrity:ok;FRONTEND_integrity:ok;;errors=0

==== Flow Offloading Check ====
Flow offloading is disabled (compatible with qosmate).

==== WAN Interface Information ====
        "l3_device": "pppoe-wan",
        "device": "eth1.6",

==== QoSmate Configuration ====

config global 'global'
        option enabled '1'

config settings 'settings'
        option WAN 'pppoe-wan'
        option DOWNRATE '750000'
        option UPRATE '750000'
        option ROOT_QDISC 'cake'

config advanced 'advanced'
        option PRESERVE_CONFIG_FILES '1'
        option WASHDSCPUP '0'
        option WASHDSCPDOWN '1'
        option BWMAXRATIO '20'
        option UDP_RATE_LIMIT_ENABLED '0'
        option TCP_UPGRADE_ENABLED '1'
        option TCP_DOWNPRIO_INITIAL_ENABLED '1'
        option TCP_DOWNPRIO_SUSTAINED_ENABLED '1'
        option MSS '536'
        option NFT_HOOK 'forward'
        option NFT_PRIORITY '0'
        option MAX_CONNECTIONS '0'
        option COMMON_LINK_PRESETS 'ethernet'
        option OVERHEAD '44'
        option MPU '96'
        option LINK_COMPENSATION 'noatm'

config hfsc 'hfsc'
        option gameqdisc 'pfifo'
        option nongameqdisc 'fq_codel'
        option nongameqdiscoptions 'besteffort ack-filter'
        option MAXDEL '24'
        option PFIFOMIN '5'
        option PACKETSIZE '450'
        option netemdelayms '30'
        option netemjitterms '7'
        option netemdist 'normal'
        option pktlossp 'none'
        option netem_direction 'both'

config cake 'cake'
        option PRIORITY_QUEUE_INGRESS 'diffserv4'
        option PRIORITY_QUEUE_EGRESS 'diffserv4'
        option HOST_ISOLATION '1'
        option NAT_INGRESS '1'
        option NAT_EGRESS '1'
        option ACK_FILTER_EGRESS 'auto'
        option AUTORATE_INGRESS '0'

config custom_rules 'custom_rules'

config rule
        option name 'ps5cod'
        option proto 'tcp udp'
        list src_ip '192.168.1.3'
        list dest_port '!=80 !=443'
        option class 'ef'
        option counter '1'
        option trace '0'
        option enabled '1'

config rule
        option name 'ps5cods'
        option proto 'tcp udp'
        list src_port '!=80 !=443'
        list dest_ip '192.168.1.3'
        option class 'ef'
        option counter '1'
        option trace '0'
        option enabled '1'

==== Package Status ====
All required packages are installed.

qdisc cake 1: dev pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-srchost nat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 891323 bytes 4718 pkt (dropped 0, overlimits 10 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 8704b of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           29 /    1480
 min/max overhead-adjusted size:       96 /    1524
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          0us         14us         17us         14us
  av_delay          0us          1us          2us          3us
  sp_delay          0us          1us          1us          2us
  backlog            0b           0b           0b           0b
  pkts                0           59          427         4232
  bytes               0        17132        88051       786140
  way_inds            0            0            0            0
  way_miss            0           16           36           13
  way_cols            0            0            0            0
  drops               0            0            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            6            0            1
  bk_flows            0            0            1            0
  un_flows            0            0            0            0
  max_len             0         1424         2848         1480
  quantum          1430         1514         1514         1514

qdisc ingress ffff: dev pppoe-wan parent ffff:fff1 ----------------
 Sent 2993699 bytes 4543 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 800a: dev ifb-pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-dsthost nat wash ingress no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 2992616 bytes 4541 pkt (dropped 0, overlimits 310 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 68Kb of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           40 /    1492
 min/max overhead-adjusted size:       96 /    1536
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          0us         12us        148us         17us
  av_delay          0us          0us         28us          4us
  sp_delay          0us          0us          2us          3us
  backlog            0b           0b           0b           0b
  pkts                0           43          463         4035
  bytes               0         9096       331737      2651783
  way_inds            0            0            0            0
  way_miss            0           17           29           14
  way_cols            0            0            0            0
  drops               0            0            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            5            0            1
  bk_flows            0            0            1            0
  un_flows            0            0            0            0
  max_len             0         1492         1492         1301
  quantum          1430         1514         1514         1514


==== Nftables Ruleset (dscptag) ====
        chain dscptag {
                type filter hook forward priority filter; policy accept;
                iif "lo" accept
                iifname "pppoe-wan" accept
                meta length < 100 tcp flags ack add @xfst4ack { ct id . ct direction limit rate over 3750000/second burst 5 packets } counter packets 0 bytes 0 jump drop995
                meta length < 100 tcp flags ack add @fast4ack { ct id . ct direction limit rate over 375000/second burst 5 packets } counter packets 0 bytes 0 jump drop95
                meta length < 100 tcp flags ack add @med4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 0 bytes 0 jump drop50
                meta length < 100 tcp flags ack add @slow4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 0 bytes 0 jump drop50
                meta l4proto tcp ct bytes < 46875000 jump mark_500ms
                meta l4proto tcp ct bytes > 937500000 jump mark_10s
                meta l4proto tcp ip dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip dscp set af42 counter packets 392 bytes 86326
                meta l4proto tcp ip6 dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip6 dscp set af42 counter packets 31 bytes 3345
                meta l4proto { tcp, udp } th dport != { 80, 443 } ip saddr 192.168.1.3 ip dscp set ef counter packets 4232 bytes 786222 comment "ipv4_ps5cod"
                meta l4proto { tcp, udp } th sport != { 80, 443 } ip daddr 192.168.1.3 ip dscp set ef counter packets 0 bytes 0 comment "ipv4_ps5cods"
                meta priority set ip dscp map @priomap counter packets 4616 bytes 870122
                meta priority set ip6 dscp map @priomap counter packets 39 bytes 7650
                ct mark set ip dscp | 0x80 counter packets 4616 bytes 870122
                ct mark set ip6 dscp | 0x80 counter packets 39 bytes 7650
        }
}

==== Custom Rules Table Status ====
Custom rules table (qosmate_custom) is not active or doesn't exist.

==== Inline Rules Status ====
No inline rules configured.

sorry if the image text is too small I could only upload one image because I just made this account, also the names of the single port rules are slightly different as I tested this multiple times but the port assignment is the same

Hello. I know it is hard when you start on something.

You need to do that in the 'Custom Rules 'tab, then go down to 'Inline Rules'.

Here a capture

If you do well, you will see those tins start to increase

Thanks for the detailed description. The rules are simply not marking all traffic because they’re incorrect. In fact, you only need a single rule here and that rule is set up incorrectly.

The rule should look like this:


config rule
        option name 'PS5_COD_HIGHP_UDP_IN'
        option proto 'udp'
        list src_port '3074'
        list src_ip '192.168.1.3'
        option class 'cs5'
        option counter '1'
        option trace '0'
        option enabled '1'

This also directly matches what we can see in the Connection-Tab screenshot you provided. It clearly shows that all relevant traffic is coming from src_port 3074 with the source IP being your local PlayStation IP.

The more generic rule happens to match the traffic because it’s very broad and includes source port 3074 and the source IP of your PlayStation.

There’s also no real reason to bring up Custom Rules here. In @Mauricio's example Custom Rules do exactly the same thing that regular rules can already handle. There’s no difference for this scenario.

Inline or Custom Rules are mainly useful for more advanced or dynamic marking logic (for example, prioritizing traffic only after a connection has been active for more than 10 seconds, etc...). That kind of logic isn’t relevant to your current issue.

Alright I feel pretty ashamed now lol, my bad. Thanks for helping me @Hudra @Mauricio, I now used these two rules:

Also the download and upload tins now fill when playing cod public match:

root@OpenWrt:~# service qosmate status
==== qosmate Status ====
qosmate autostart is enabled.
qosmate global:enabled is true.
Traffic shaping (CAKE) is active on the egress interface (pppoe-wan).
Traffic shaping (CAKE) is active on the ingress interface (ifb-pppoe-wan).

==== Current Settings ====
Upload rate: 750000 kbps
Download rate: 750000 kbps
Game traffic upload: 112900 kbps
Game traffic download: 112900 kbps
Queue discipline: CAKE (Root qdisc)

==== Version Information ====
Backend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0
Frontend versions:
  Update channel: release
  Current version: 1.8.0
  Latest version: 1.8.0

QoSmate components 'BACKEND FRONTEND' are up to date.

==== System Information ====
{
        "kernel": "6.6.119",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.5",
                "revision": "r29087-d9c5716d1d",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
                "builddate": "1766005702"
        }
}

==== Health Check ====
status=service:enabled;nft:ok;tc:ok;config:ok;packages:ok;BACKEND_integrity:ok;FRONTEND_integrity:ok;;errors=0

==== Flow Offloading Check ====
Flow offloading is disabled (compatible with qosmate).

==== WAN Interface Information ====
        "l3_device": "pppoe-wan",
        "device": "eth1.6",

==== QoSmate Configuration ====

config global 'global'
        option enabled '1'

config settings 'settings'
        option WAN 'pppoe-wan'
        option DOWNRATE '750000'
        option UPRATE '750000'
        option ROOT_QDISC 'cake'

config advanced 'advanced'
        option PRESERVE_CONFIG_FILES '1'
        option WASHDSCPUP '1'
        option WASHDSCPDOWN '1'
        option BWMAXRATIO '20'
        option UDP_RATE_LIMIT_ENABLED '0'
        option TCP_UPGRADE_ENABLED '1'
        option TCP_DOWNPRIO_INITIAL_ENABLED '1'
        option TCP_DOWNPRIO_SUSTAINED_ENABLED '1'
        option MSS '536'
        option NFT_HOOK 'forward'
        option NFT_PRIORITY '0'
        option MAX_CONNECTIONS '0'
        option COMMON_LINK_PRESETS 'ethernet'
        option OVERHEAD '44'
        option MPU '96'
        option LINK_COMPENSATION 'noatm'

config hfsc 'hfsc'
        option gameqdisc 'pfifo'
        option nongameqdisc 'fq_codel'
        option nongameqdiscoptions 'besteffort ack-filter'
        option MAXDEL '24'
        option PFIFOMIN '5'
        option PACKETSIZE '450'
        option netemdelayms '30'
        option netemjitterms '7'
        option netemdist 'normal'
        option pktlossp 'none'
        option netem_direction 'both'

config cake 'cake'
        option PRIORITY_QUEUE_INGRESS 'diffserv4'
        option PRIORITY_QUEUE_EGRESS 'diffserv4'
        option HOST_ISOLATION '1'
        option NAT_INGRESS '1'
        option NAT_EGRESS '1'
        option ACK_FILTER_EGRESS 'auto'
        option AUTORATE_INGRESS '0'

config custom_rules 'custom_rules'

config rule
        option name 'PS5_COD_UDP_DEST'
        option proto 'udp'
        list dest_ip '192.168.1.3'
        list dest_port '3074'
        option class 'cs5'
        option counter '1'
        option trace '0'
        option enabled '1'

config rule
        option name 'PS5_COD_UDP_SOURCE'
        option proto 'udp'
        list src_ip '192.168.1.3'
        list src_port '3074'
        option class 'cs5'
        option counter '1'
        option trace '0'
        option enabled '1'

==== Package Status ====
All required packages are installed.

==== Detailed Technical Information ====
Traffic Control (tc) Queues:
qdisc noqueue 0: dev lo root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc mq 0: dev eth0 root
 Sent 68399311 bytes 95051 pkt (dropped 0, overlimits 0 requeues 87)
 backlog 0b 0p requeues 87
qdisc fq_codel 0: dev eth0 parent :10 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :f limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :e limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :d limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :c limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :b limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :a limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :9 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 68397599 bytes 95035 pkt (dropped 0, overlimits 0 requeues 87)
 backlog 0b 0p requeues 87
  maxpacket 1510 drop_overlimit 0 new_flow_count 110 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :8 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :7 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :6 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :5 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 1712 bytes 16 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :3 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :1 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev eth1 root
 Sent 112336895 bytes 601698 pkt (dropped 0, overlimits 0 requeues 158)
 backlog 0b 0p requeues 158
qdisc fq_codel 0: dev eth1 parent :10 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :f limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :e limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :d limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :c limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :b limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :a limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :9 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :8 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :7 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :6 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :5 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 112336895 bytes 601698 pkt (dropped 0, overlimits 0 requeues 158)
 backlog 0b 0p requeues 158
  maxpacket 1514 drop_overlimit 0 new_flow_count 195 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc noqueue 0: dev lan2 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan3 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan4 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan5 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev br-lan root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev eth1.6 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy1-ap0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 1: dev pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-srchost nat wash no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 4013398 bytes 18986 pkt (dropped 0, overlimits 598 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 136Kb of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           29 /    1492
 min/max overhead-adjusted size:       96 /    1536
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          0us         11us         25us         14us
  av_delay          0us          3us          4us          3us
  sp_delay          0us          2us          1us          2us
  backlog            0b           0b           0b           0b
  pkts                0         2764         9774         6448
  bytes               0       320619      2487878      1204901
  way_inds            0            0           13           11
  way_miss            0          400          458           63
  way_cols            0            0            0            0
  drops               0            0            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            5            2            1
  bk_flows            0            0            0            0
  un_flows            0            0            0            0
  max_len             0         3961        38448         1238
  quantum          1430         1514         1514         1514

qdisc ingress ffff: dev pppoe-wan parent ffff:fff1 ----------------
 Sent 16145794 bytes 20677 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8032: dev ifb-pppoe-wan root refcnt 2 bandwidth 750Mbit diffserv4 dual-dsthost nat wash ingress no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 96
 Sent 16144302 bytes 20676 pkt (dropped 1, overlimits 11424 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 102Kb of 15140Kb
 capacity estimate: 750Mbit
 min/max network layer size:           40 /    1492
 min/max overhead-adjusted size:       96 /    1536
 average network hdr offset:            0

                   Bulk  Best Effort        Video        Voice
  thresh      46875Kbit      750Mbit      375Mbit   187500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay          2us        191us         43us         17us
  av_delay          0us         66us         12us          4us
  sp_delay          0us          2us          1us          3us
  backlog            0b           0b           0b           0b
  pkts                3         2878        11795         6001
  bytes             132      3412601      9473924      3259137
  way_inds            0            0           13            9
  way_miss            2          429          430           70
  way_cols            0            0            0            0
  drops               0            0            1            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            9            1            0
  bk_flows            0            0            0            1
  un_flows            0            0            0            0
  max_len            52         1492         1492         1301
  quantum          1430         1514         1514         1514


==== Nftables Ruleset (dscptag) ====
        chain dscptag {
                type filter hook forward priority filter; policy accept;
                iif "lo" accept
                iifname "pppoe-wan" accept
                meta length < 100 tcp flags ack add @xfst4ack { ct id . ct direction limit rate over 3750000/second burst 5 packets } counter packets 0 bytes 0 jump drop995
                meta length < 100 tcp flags ack add @fast4ack { ct id . ct direction limit rate over 375000/second burst 5 packets } counter packets 0 bytes 0 jump drop95
                meta length < 100 tcp flags ack add @med4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 77 bytes 4244 jump drop50
                meta length < 100 tcp flags ack add @slow4ack { ct id . ct direction limit rate over 37500/second burst 5 packets } counter packets 36 bytes 1948 jump drop50
                meta l4proto tcp ct bytes < 46875000 jump mark_500ms
                meta l4proto tcp ct bytes > 937500000 jump mark_10s
                meta l4proto tcp ip dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip dscp set af42 counter packets 7715 bytes 2140107
                meta l4proto tcp ip6 dscp != cs1 add @slowtcp { ct id . ct direction limit rate 150/second burst 150 packets } ip6 dscp set af42 counter packets 1592 bytes 323035
                udp dport 3074 ip daddr 192.168.1.3 ip dscp set cs5 counter packets 0 bytes 0 comment "ipv4_PS5_COD_UDP_DEST"
                udp sport 3074 ip saddr 192.168.1.3 ip dscp set cs5 counter packets 6428 bytes 1201038 comment "ipv4_PS5_COD_UDP_SOURCE"
                meta priority set ip dscp map @priomap counter packets 15006 bytes 3502110
                meta priority set ip6 dscp map @priomap counter packets 3211 bytes 453556
                ct mark set ip dscp | 0x80 counter packets 15006 bytes 3502110
                ct mark set ip6 dscp | 0x80 counter packets 3211 bytes 453556
        }
}

==== Custom Rules Table Status ====
Custom rules table (qosmate_custom) is not active or doesn't exist.

==== Inline Rules Status ====
No inline rules configured.

Everything looks to be fine as both upload and download voice tins fill, however I still have some questions (hopefully not issues lol)

you said I only need the rule where I specify the source ip of my ps5 together with the UDP port, I'm wondering why not to include the destination port and ip as well in the second rule that I put (I think this rule is also why the voice tin fills in the download section right or not?), is this because I'm on console as in one of your scripts you do put the destination port and ip in the rules. Another question I have is that in the connections tab only the source ip and port, ie tagged upload packets (if I am saying this correctly), are shown regardless of their dscp tag (doesnt matter if its cs5, cs0 etc), I know the washdown function is enabled but shouldnt that mean that my ps5s local ip should also show up in the destination ip tab as well when playing a game (no matter if we wash because then it might be CS0)? Besides that I also see uploaded traffic tagged coming from my ps5s ip (source) with AF42 even though I don't specify these tags anywhere in the rules and washup/down are enabled. These AF42 tags are mainly coming from TCP 448 ports, and I think they are actually ending up in the video tin instead of the best effort tin as well. Hopefully I'm not too much of a burden asking these maybe trivial things to most people here

Again trivial sorry my bad for this particular question, it stems from boost low volume TCP traffic

1 Like

No problem, glad we could get the issue sorted out.

Qosmate writes the dscp into conntrack on egress and restores it on ingress. In combination with other techniques the advantage of this approach is that you can, for example, use DSCP washing (via nftables rules) while still seeing the correct DSCP value in conntrack (for inspection with tcpdump you would have to disable washing), which is what the connections tab is based on.

Because the dscp is restored on ingress and the connection state is stored in conntrack in the background, you usually only need a single rule. The dual-rule examples in the README are mostly legacy from earlier versions.
In the past, there was a visual bug where, even though packets were restored correctly on ingress, the dscp would still show as CS0 unless both directions were marked.

To avoid confusing users, I used to recommend adding both rules as a safety measure. This issue was fixed some time ago, but I haven’t yet gotten around to removing the now-redundant rules from the README.

Most of these concepts (such as DSCP washing) are already explained in the README, so it’s definitely worth taking a look.

2 Likes

Thank you very much, I tried the single rule and it looks like the voice tin is still being filled on both the ingress and egress so it seems to be working! I still notice on the egress side some packets still end up in the video tin, even with boost low TCP disabled, although they are extremely few, is this maybe normal behaviour as only so little end up there?

If I understand this correctly the packets are dscp tagged on ingress and the connection state refers to which way the packets are sent, in this case ingress, which allows conntrack to basically apply this one rule in both directions (egress and ingress).

I know this might speak for itself but does this mean the links shown in the connections tab with the ips and UDP ports is bi-directional and the in packets/bytes/.. are the ingress packets and out packets/bytes/.. are the egress packets? The reason I'm asking is because the wording of source IP and destination IP kind of confused me as I wonder why my ps5s IP is always the source IP and never the destination IP in the connections tab, as traffic should also be sent to my ps5 (ingress) instead of my ps5 just generating traffic (egress), or is this naming like a standard convention

This issue seems to be fixed as I uninstalled the SQM QoS from luci-sqm and afterwards uninstalled qosmate and then reinstalled it. Also the first time I installed qosmate I also installed the frontend first and then the backend by mistake because I read it wrong, doubt this messed anything up but now I did it the correct way (backend first then frontend) as described in the manual.

1 Like

Looks like there is again some traffic ending up in the video tin:

it says eth1 after the cake egress/ingress statistics while the WAN interface should be pppoe-wan (the selected one) and it probably also is maybe the eth1 is a visual idk, it says when doing qosmate status that the wan interface is pppoe-wan. This is only happening when running cake as sqm in the settings tab (that some traffic ends up in the video tin, mostly egress), when using HSFC this is not the case. Boost low TCP is disabled