After having this run all night, there is a counter that stands out as peculiar to me.
Ruleset:
Summary
...
chain in_dscp {
type filter hook postrouting priority filter; policy accept;
oifname "eth0" ct mark & 0x01c00000 == 0x00000000 counter packets 1173134 bytes 698031751 jump qos_sqm
}
chain qos_sqm {
ct mark & 0x02000000 == 0x00000000 counter packets 12775 bytes 1112306 goto cttags
}
chain qos_sqm_remap {
ct mark set (@nh,8,8 & 252) >> 2 counter packets 264 bytes 17952
ct mark set @nh,0,16 & 4032 >> 6 counter packets 0 bytes 0
ct mark set ct mark << 26 | 0x03000000
}
chain cttags {
ip dscp != cs0 counter packets 264 bytes 17952 goto qos_sqm_remap
ip6 dscp != cs0 counter packets 0 bytes 0 goto qos_sqm_remap
ip daddr @bulk4 ip dscp set cs1 counter packets 278 bytes 17792 comment "bulk4 to CS1"
ip6 daddr @bulk6 ip6 dscp set cs1 counter packets 36 bytes 3024 comment "bulk6 to CS1"
ip daddr @besteffort4 ct mark set 0x01000000 counter packets 19 bytes 1216 comment "besteffort4 to CS0"
ip6 daddr @besteffort6 ct mark set 0x01000000 counter packets 61 bytes 15861 comment "besteffort6 to CS0"
ip daddr @video4 ip dscp set cs3 counter packets 4 bytes 256 comment "video4 to CS3"
ip6 daddr @video6 ip6 dscp set cs3 counter packets 461 bytes 104762 comment "video6 to CS3"
ip daddr @voice4 ip dscp set cs4 counter packets 0 bytes 0 comment "voice4 to CS4"
ip6 daddr @voice6 ip6 dscp set cs4 counter packets 0 bytes 0 comment "voice6 to CS4"
ip daddr 17.0.0.0/8 tcp dport { 993, 5223 } ip dscp set cs0 counter packets 13 bytes 832 comment "Apple Mail and APNS CS0"
udp sport { 3478-3497, 16384-16387, 16393-16402 } udp dport { 3478-3497, 16384-16387, 16393-16402 } ip dscp set cs4 counter packets 0 bytes 0 comment "Facetime CS4"
udp sport { 3478-3497, 16384-16387, 16393-16402 } udp dport { 3478-3497, 16384-16387, 16393-16402 } ip6 dscp set cs4 counter packets 0 bytes 0 comment "Facetime CS4"
ip daddr @zoom4 udp dport 8801-8810 ip dscp set cs4 counter packets 0 bytes 0 comment "Zoom CS4"
ip6 daddr @zoom6 udp dport 8801-8810 ip6 dscp set cs4 counter packets 0 bytes 0 comment "Zoom CS4"
udp sport 4500 udp dport 4500 ip dscp set cs4 counter packets 1 bytes 396 comment "VZW WiFi Calling CS4"
udp sport 4500 udp dport 4500 ip6 dscp set cs4 counter packets 0 bytes 0 comment "VZW WiFi Calling CS4"
ip daddr @webex4 tcp dport { 444, 5004, 33434 } ip dscp set cs4 counter packets 216 bytes 13824 comment "WebEx TCP CS4"
ip6 daddr @webex6 tcp dport { 444, 5004, 33434 } ip6 dscp set cs4 counter packets 0 bytes 0 comment "WebEx TCP CS4"
ip daddr @webex4 udp dport { 5004, 9000, 33434-33598 } ip dscp set cs4 counter packets 0 bytes 0 comment "WebEx UDP CS4"
ip6 daddr @webex6 udp dport { 5004, 9000, 33434-33598 } ip6 dscp set cs4 counter packets 0 bytes 0 comment "WebEx UDP CS4"
tcp sport != 2049 ip dscp < cs4 ct bytes >= 35000000 counter packets 0 bytes 0 ip dscp set cs1
tcp sport != 2049 ip6 dscp < cs4 ct bytes >= 35000000 counter packets 0 bytes 0 ip6 dscp set cs1
ip dscp < cs5 udp dport != { 53, 80, 443 } udp sport != { 53, 80, 443 } meter udp4meter size 65535 { ip saddr . ip daddr . udp sport . udp dport limit rate over 200/second burst 100 packets } counter packets 0 bytes 0 ct mark set 0x00000055
ip6 dscp < cs5 udp dport != { 53, 80, 443 } udp sport != { 53, 80, 443 } meter udp6meter size 65535 { ip6 saddr . ip6 daddr . udp sport . udp dport limit rate over 200/second burst 100 packets } counter packets 0 bytes 0 ct mark set 0x00000055
ct mark 0x00000055 numgen random mod 10000 < 50 ct mark set 0x00000000 counter packets 0 bytes 0 comment "small probability to unmark over-threshold connections"
ct mark != 0x00000055 ip dscp < cs5 udp dport != { 53, 80, 443 } udp sport != { 53, 80, 443 } ct avgpkt 0-450 counter packets 167 bytes 42581 ip dscp set cs4
ct mark != 0x00000055 ip6 dscp < cs5 udp dport != { 53, 80, 443 } udp sport != { 53, 80, 443 } ct avgpkt 0-450 counter packets 92 bytes 25045 ip6 dscp set cs4
ct mark set (@nh,8,8 & 252) >> 2 counter packets 7746 bytes 527040
ct mark set @nh,0,16 & 4032 >> 6 counter packets 4765 bytes 567314
ct mark set ct mark << 26 | 0x02000000 counter packets 12511 bytes 1094354
}
The nonexistent IPv6 remapped packets is what stands out to me. I am wondering if the first of these two lines in cttags
is catching IPv6 as well?
ip dscp != cs0 counter packets 264 bytes 17952 goto qos_sqm_remap
ip6 dscp != cs0 counter packets 0 bytes 0 goto qos_sqm_remap
I may try adding meta nfproto
to these two lines to see if that helps. But I'm certainly open to other thoughts/suggestions.
On a separate note, given that I run a NextDNS client on my OpenWRT host for all DNS on my subnets, where would be the right place to add a rule to prioritize just its traffic? It is DoH, so I realize that will be prioritizing :443, but ideally it would be just for connections initiated from the OpenWRT box. Would I need to match on lo
?