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.
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.
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):
-
The
youtubeUnblockservice starts successfully via the/etc/rc.d/S91youtubeUnblockscript and begins listening on Netfilter queue number 537 (Queue 537 started). -
The
/etc/rc.d/S99qosmatescript automatically includes an nftables rules file:'[!] Automatically including '/usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft'. -
Immediately after this, the youtubeUnblock process crashes with an error:
mnl_cb_run: Operation not permittedand the messageProbably 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
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
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.
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.
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






