How to Set DSCP tagging and Autorate

Do you dig the concept of web links?

I’m not at my setup so can’t do that but I’ve given the results with my Sqm and without

https://www.waveform.com/tools/bufferbloat?test-id=31975601-8af5-410a-a55f-54ec51868092

https://www.waveform.com/tools/bufferbloat?test-id=7b5e2560-93d4-4412-80ae-ed312e222c67this

root@OpenWrt:~# ubus call system board
at /etc/config/f{
        "kernel": "6.6.93",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 1",
        "model": "Raspberry Pi 5 Model B Rev 1.0",
        "board_name": "raspberrypi,5-model-b",
        "rootfs_type": "ext4",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.2",
                "revision": "r28739-d9340319c6",
                "target": "bcm27xx/bcm2712",
                "description": "OpenWrt 24.10.2 r28739-d9340319c6",
                "builddate": "1750711236"
        }
}
root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd5a:5152:a232::/48'
        option packet_steering '2'

config device
        option name 'br-lan'
        option type 'bridge'
        option ipv6 '0'
        list ports 'eth0'
        list ports 'eth1'
        option bridge_empty '1'
        option stp '1'
        option igmp_snooping '1'

config interface 'lan'
        option device 'br-lan'
        option proto 'dhcp'
root@OpenWrt:~# cat /proc/net/softnet_stat
0000004c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000 00000000
000003ca 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000014a 00000000 00000000 00000001 00000000 00000000
0000006b 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000002d 00000000 00000000 00000002 00000000 00000000
00000106 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000067 00000000 00000000 00000003 00000000 00000000
root@OpenWrt:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 13:       2577       2236       1628       1710     GICv2  26 Level     arch_timer
 14:        440          0          0          0     GICv2  65 Level     107c013880.mailbox
 15:          8          0          0          0     GICv2 152 Level     uart-pl011
 21:          0          0          0          0     GICv2 119 Level     DMA IRQ
 22:          0          0          0          0     GICv2 120 Level     DMA IRQ
 32:       1780          0          0          0     GICv2 305 Level     mmc0
 33:       7088          0          0          0     GICv2 306 Level     mmc1
 34:          0          0          0          0     GICv2 261 Level     PCIe PME, aerdrv
102:        808          0          0          0  rp1_irq_chip   6 Level     eth0
127:        800          0          0          0  rp1_irq_chip  31 Edge      xhci-hcd:usb1
132:          0          0          0          0  rp1_irq_chip  36 Edge      xhci-hcd:usb3
157:          0          0          0          0     GICv2 150 Level     107d004000.spi
IPI0:       898        670        716        862       Rescheduling interrupts
IPI1:      1886       8113       2475       2431       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:       624        395        438        339       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
root@OpenWrt:~# cat /etc/config/firewall
config defaults
        option syn_flood        1
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
# Uncomment this line to disable ipv6 rules
#       option disable_ipv6     1

config zone
        option name             lan
        list   network          'lan'
        option input            ACCEPT
        option output           ACCEPT
        option forward          ACCEPT

config zone
        option name             wan
        list   network          'wan'
        list   network          'wan6'
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
        option masq             1
        option mtu_fix          1

config forwarding
        option src              lan
        option dest             wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
        option name             Allow-DHCP-Renew
        option src              wan
        option proto            udp
        option dest_port        68
        option target           ACCEPT
        option family           ipv4

# Allow IPv4 ping
config rule
        option name             Allow-Ping
        option src              wan
        option proto            icmp
        option icmp_type        echo-request
        option family           ipv4
        option target           ACCEPT

config rule
        option name             Allow-IGMP
        option src              wan
        option proto            igmp
        option family           ipv4
        option target           ACCEPT

# Allow DHCPv6 replies
# see https://github.com/openwrt/openwrt/issues/5066
config rule
        option name             Allow-DHCPv6
        option src              wan
        option proto            udp
        option dest_port        546
        option family           ipv6
        option target           ACCEPT

config rule
        option name             Allow-MLD
        option src              wan
        option proto            icmp
        option src_ip           fe80::/10
        list icmp_type          '130/0'
        list icmp_type          '131/0'
        list icmp_type          '132/0'
        list icmp_type          '143/0'
        option family           ipv6
        option target           ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Input
        option src              wan
        option proto    icmp
        list icmp_type          echo-request
        list icmp_type          echo-reply
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        list icmp_type          router-solicitation
        list icmp_type          neighbour-solicitation
        list icmp_type          router-advertisement
        list icmp_type          neighbour-advertisement
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Forward
        option src              wan
        option dest             *
        option proto            icmp
        list icmp_type          echo-request
        list icmp_type          echo-reply
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

config rule
        option name             Allow-IPSec-ESP
        option src              wan
        option dest             lan
        option proto            esp
        option target           ACCEPT

config rule
        option name             Allow-ISAKMP
        option src              wan
        option dest             lan
        option dest_port        500
        option proto            udp
        option target           ACCEPT


### EXAMPLE CONFIG SECTIONS
# do not allow a specific ip to access wan
#config rule
#       option src              lan
#       option src_ip   192.168.45.2
#       option dest             wan
#       option proto    tcp
#       option target   REJECT

# block a specific mac on wan
#config rule
#       option dest             wan
#       option src_mac  00:11:22:33:44:66
#       option target   REJECT

# block incoming ICMP traffic on a zone
#config rule
#       option src              lan
#       option proto    ICMP
#       option target   DROP

# port redirect port coming in on wan to lan
#config redirect
#       option src                      wan
#       option src_dport        80
#       option dest                     lan
#       option dest_ip          192.168.16.235
#       option dest_port        80
#       option proto            tcp

# port redirect of remapped ssh port (22001) on wan
#config redirect
#       option src              wan
#       option src_dport        22001
#       option dest             lan
#       option dest_port        22
#       option proto            tcp

### FULL CONFIG SECTIONS
#config rule
#       option src              lan
#       option src_ip   192.168.45.2
#       option src_mac  00:11:22:33:44:55
#       option src_port 80
#       option dest             wan
#       option dest_ip  
#       option dest_port        120
#       option proto    tcp
#       option target   REJECT

#config redirect
#       option src              lan
#       option src_ip   192.168.45.2
#       option src_mac  00:11:22:33:44:55
#       option src_port         1024
#       option src_dport        80
#       option dest_ip  
#       option dest_port        120
#       option proto    tcp
root@OpenWrt:~#

Result is quite good? You can try to rise bandwidth a bit towards subscribed, then step back when latency grows, starting with upload direction.

As told already rising priority will have no effect outside your network - ie will trim those 1-2 ms of local latency from the gaming device.

Also my ISP speeds vary constantly so I pay for 900 symmetrical but as we see in the results etc a lot of time I get 600-700 , but sometimes the full 900 should I adjust based on my average speed as currently I have set SQM to 850 both ?

I’m guessing this is part of the problem as I can’t keep changing the SQM speeds so rather have a lower baseline losing out on some bandwidth and have a consistent experience .

It is either

  • trade opportunistic bw for ideal latency
  • trade ideal latency for max bandwidth.

You certainly should try cake-autorate, if bandwidth fluctuates 1.5x the latency outbursts when adapting will be probably negligible.

Default fq_codel operates on bits and milliseconds not needing any bandwith as input.

If I use Cake autorate What range of qlimit do you think will be suitable for my latency needs also the polling interval rate ? I’m using 45 q limit and 3 second polling interval is this too low or high ?

Something like 500 to 950 ie dlightly above and below real life observation.