Ookla downloads slow - how to diagnose?

Hello, I think I experience somthing similiar, cloudflare and browser downloads are fine, only ookla and steam sucks. Did you ever solve this for you ?

Then it's probably an upstream issue ?

But if i download anything else, like a big iso i get 30-40 MBs, with steam i get max 4 MBs I dont think its the upstream or did i misunderstand you?

It could be a DNS issue, where you're not being pointed towards the closest CDN.

or they took it down.
or it never existed.
or it could be caused by you switching to some 3rd party DNS.

If every other site works fine, what makes you think it'd be an Openwrt issue ?

What a response. I tried multiple DNS and the fact that everything works fine on my mesh master but not on my mesh APs makes me think that. Sorry for searching for help...

Although I think it's a batman-adv or maybe even firmware issue because I have not so well tested Asus BT8 devices

what kind of responses are you expecting when reporting "it doesn't work" ?

@tlamadon did you ever solve your issue ?

Maybe asking politely for more information or so, really I just searched for help in a Thread which seemed to have similar issues but in the end I just wanted to know if the other user did solve the issue and if that could help me maybe... But yeah seems my weeklong search will continue. Thank you anyways.

@SufficentMuffin -

I've moved your issue to a new thread because it's unlikely that it is related to the same issues that were present in the previous one.

That said, let's start by learning a bit about your topology and under what circumstances you are seeing slow downloads.

Do you have just a single router, or do you also have additional/outboard access points? If so, how are they connected? (a topology diagram can be really useful here.)

Do you experience the same issue when ethernet connected as via wireless?

Have you tried directly connecting a computer to the upstream connection without the router in place and then running the same tests? (this will help rule in/out issues that appear to be related to the upstream vs the router).

Let's review the config of your main router...

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

Hello @psherman,

thank you very much for your response!

And sure, I think I do not have the most special setup but every bit counts for diagnosing my issue:

When downloading let´s say an ubuntu-desktop.iso I will get >20 MB/s ( or ~200Mbit/s) for Google Speedtest this is similar.

When starting a download with Steam I will peak at 4 - 5 MB/s ( or roughly 40 - 50 Mbit/s) which only is worse with Ookla Speedtest where I often do not exceed the 20 Mbit/s.

My Setup:

4x Asus ZenWifi BT8 on OpenWRT 25.12.5 (I also tried a snapshot already)

One Mesh Master / Gateway + Three Mesh Nodes / APs

batman-adv + VLANs

6 GHz dedicated wireless backend

The behaviour only appears on the APs not on the Master. So it should not be the upstream I think.

I tested every AP one by one both wired and wireless, its always the same.

Iperf3 results show no issues at all.

This is my ubus call:

{
        "kernel": "6.12.94",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 0",
        "model": "ASUS ZenWiFi BT8",
        "board_name": "asus,zenwifi-bt8",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "25.12.5",
                "firmware_url": "https://downloads.openwrt.org/",
                "revision": "r33051-f5dae5ece4",
                "target": "mediatek/filogic",
                "description": "OpenWrt 25.12.5 r33051-f5dae5ece4",
                "builddate": "1782737960"
        }
}

Since I use a selfmade template there are only two configs one for the master and one for the APs.

DHCP, firewall and dnsmasq are disabled on the APs.

network (master):


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	list ipaddr '127.0.0.1/8'

config globals 'globals'
	option dhcp_default_duid 'XXX'
	option packet_steering '1'

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'

config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'
	option reqaddress 'try'
	option reqprefix 'auto'

config interface 'bat0'
	option proto 'batadv'
	option routing_algo 'BATMAN_IV'
	option gw_mode 'off'
	option aggregated_ogms '1'
	option ap_isolation '0'
	option bonding '0'
	option bridge_loop_avoidance '1'
	option distributed_arp_table '1'
	option fragmentation '1'
	option hop_penalty '30'
	option isolation_mark '0x00000000/0x00000000'
	option log_level '0'
	option multicast_mode '1'
	option multicast_fanout '16'
	option network_coding '0'
	option orig_interval '1000'

config interface 'batmesh'
	option proto 'batadv_hardif'
	option master 'bat0'
	option mtu '1536'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '100'
	option name 'bat0.100'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '200'
	option name 'bat0.200'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '300'
	option name 'bat0.300'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '400'
	option name 'bat0.400'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '500'
	option name 'bat0.500'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '600'
	option name 'bat0.600'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '1337'
	option name 'bat0.1337'

config device
	option type 'bridge'
	option name 'br-lan'
	list ports 'bat0.100'
	list ports 'lan2'

config device
	option type 'bridge'
	option name 'br-dmz'
	list ports 'bat0.200'
	list ports 'lan1.200'

config device
	option type 'bridge'
	option name 'br-srv'
	list ports 'bat0.300'
	list ports 'lan1.300'

config device
	option type 'bridge'
	option name 'br-iot'
	list ports 'bat0.400'
	list ports 'lan1.400'

config device
	option type 'bridge'
	option name 'br-guest'
	list ports 'bat0.500'
	list ports 'lan3'

config device
	option type 'bridge'
	option name 'br-work'
	list ports 'bat0.600'

config device
	option type 'bridge'
	option name 'br-mgmt'
	list ports 'bat0.1337'
	list ports 'lan1'

config device
	option type 'bridge'
	option name 'br-emerg'
	list ports 'lan1.911'
	list ports 'lan2.911'
	list ports 'lan3.911'

config interface 'lan'
	option proto 'static'
	option device 'br-lan'
	option ipaddr '10.1.0.1'
	option netmask '255.255.255.0'

config interface 'dmz'
	option proto 'static'
	option device 'br-dmz'
	option ipaddr '10.2.0.1'
	option netmask '255.255.255.0'
	option ip6assign '64'
	option ip6hint '2'

config interface 'srv'
	option proto 'static'
	option device 'br-srv'
	option ipaddr '10.3.0.1'
	option netmask '255.255.255.0'

config interface 'iot'
	option proto 'static'
	option device 'br-iot'
	option ipaddr '10.4.0.1'
	option netmask '255.255.255.0'

config interface 'guest'
	option proto 'static'
	option device 'br-guest'
	option ipaddr '10.5.0.1'
	option netmask '255.255.255.0'

config interface 'work'
	option proto 'static'
	option device 'br-work'
	option ipaddr '10.6.0.1'
	option netmask '255.255.255.0'

config interface 'mgmt'
	option proto 'static'
	option device 'br-mgmt'
	option ipaddr '10.0.0.1'
	option netmask '255.255.255.0'
	list dns '10.3.0.100'

config interface 'emergency'
	option proto 'static'
	option device 'br-emerg'
	option ipaddr '10.99.99.1'
	option netmask '255.255.255.0'

wireless (master+ap):


config wifi-device 'radio0'
	option type 'mac80211'
	option path 'soc/11300000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option radio '0'
	option band '2g'
	option channel '11'
	option htmode 'EHT40'
	option country 'DE'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'soc/11300000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option radio '1'
	option band '5g'
	option channel '36'
	option htmode 'EHT80'
	option country 'DE'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'soc/11300000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option radio '2'
	option band '6g'
	option channel '61'
	option htmode 'EHT160'
	option country 'DE'

config wifi-iface 'wifinet0'
	option device 'radio2'
	option mode 'mesh'
	option mesh_id 'matrix'
	option encryption 'sae'
	option key 'XXX'
	option network 'batmesh'
	option mesh_fwding '0'
	option mesh_ttl '1'
	option mcast_rate '24000'

config wifi-iface 'wifinet1'
	option device 'radio0'
	option mode 'ap'
	option ssid 'SKyNET'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'lan'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0100'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'ap'
	option ssid 'SKyNET'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'lan'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0100'

config wifi-iface 'wifinet3'
	option device 'radio0'
	option mode 'ap'
	option ssid 'iot'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'iot'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0400'
	option hidden '1'

config wifi-iface 'wifinet4'
	option device 'radio1'
	option mode 'ap'
	option ssid 'iot'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'iot'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0400'
	option hidden '1'

config wifi-iface 'wifinet5'
	option device 'radio0'
	option mode 'ap'
	option ssid 'SKyNET Guest'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'guest'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0500'
	option isolate '1'

config wifi-iface 'wifinet6'
	option device 'radio1'
	option mode 'ap'
	option ssid 'SKyNET Guest'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'guest'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0500'
	option isolate '1'

config wifi-iface 'wifinet7'
	option device 'radio0'
	option mode 'ap'
	option ssid 'work'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'work'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0600'
	option hidden '1'

config wifi-iface 'wifinet8'
	option device 'radio1'
	option mode 'ap'
	option ssid 'work'
	option encryption 'sae-mixed'
	option key 'XXX'
	option network 'work'
	option ieee80211r '1'
	option ft_over_ds '0'
	option mobility_domain '0600'
	option hidden '1'

dhcp (master):


config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

config odhcpd 'odhcpd'
	option leasefile '/tmp/odhcpd.leases'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piodir '/tmp/odhcpd-piodir'
	option hostsdir '/tmp/hosts'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config dhcp 'wan6'
	option interface 'wan6'
	option ignore '1'

config dhcp 'lan'
	option interface 'lan'
	list dhcp_option ' 6,10.3.0.100,9.9.9.9'
	option dhcpv4 'server'

config dhcp 'dmz'
	option interface 'dmz'
	list dhcp_option '6,10.3.0.100,9.9.9.9'
	option ra 'server'
	option dhcpv6 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option dhcpv4 'server'

config dhcp 'srv'
	option interface 'srv'
	list dhcp_option '6,10.3.0.100,9.9.9.9'
	option dhcpv4 'server'

config dhcp 'iot'
	option interface 'iot'
	list dhcp_option '6,10.3.0.100,9.9.9.9'
	option dhcpv4 'server'

config dhcp 'work'
	option interface 'work'
	list dhcp_option '6,10.3.0.100,9.9.9.9'
	option dhcpv4 'server'

config dhcp 'guest'
	option interface 'guest'
	list dhcp_option '6,10.3.0.100,9.9.9.9'
	option dhcpv4 'server'

config host
	option name 'Pixel9a'
	list mac 'XXX'
	option ip '10.1.0.212'

config host
	option name 'websrv'
	option ip '10.2.0.100'
	list mac 'XXX'
	option leasetime '12h'

config host
	option name 'jellyfin'
	list mac 'XXX'
	option ip '10.3.0.102'

config host
	option name 'homeassistant'
	list mac 'XXX'
	option ip '10.4.0.100'

config host
	option name 'BambuLabP1X'
	list mac 'XXX'
	option ip '10.4.0.132'

config host
	option name 'SnapmakerU1'
	list mac 'XXX'
	option ip '10.4.0.133'

config host
	option name 'HP'
	option ip '10.4.0.154'
	list mac 'XXX'

config host
	option name 'Shield'
	list mac 'XXX'
	list mac 'XXX'
	option ip '10.4.0.192'

config host
	option name 'XperiaXZ1'
	list mac 'XXX'
	option ip '10.4.0.225'

config host
	option name 'FireTV'
	list mac 'XXX'
	option ip '10.5.0.175'

config host
	option name 'NintendoSwitchV1'
	list mac 'XXX'
	option ip '10.5.0.201'

config host
	option name 'OnePlus3'
	list mac 'XXX'

config host
	option name 'DishwasherNeff'
	list mac 'XXX'

config host
	option name 'GalaxyWatch5Pro'
	list mac 'XXX'
	option ip '10.1.0.181'

config host
	option name 'GalaxyS23'
	list mac 'XXX'

config host
	option name 'BluelabGuardian'
	list mac 'XXX'

firewall (master):



config defaults
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	option synflood_protect '1'
	option drop_invalid '1'

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

config forwarding
	option src 'lan'
	option dest 'wan'

config zone
	option name 'dmz'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'dmz'

config forwarding
	option src 'dmz'
	option dest 'wan'

config zone
	option name 'srv'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'srv'

config forwarding
	option src 'srv'
	option dest 'wan'

config zone
	option name 'iot'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'iot'

config forwarding
	option src 'iot'
	option dest 'wan'

config zone
	option name 'guest'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'guest'

config forwarding
	option src 'guest'
	option dest 'wan'

config zone
	option name 'work'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'work'

config forwarding
	option src 'work'
	option dest 'wan'

config zone
	option name 'mgmt'
	option input 'DROP'
	option output 'ACCEPT'
	option forward 'DROP'
	list network 'mgmt'

config forwarding
	option src 'mgmt'
	option dest 'wan'

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

config rule
	option name 'DROP | ANY>WAN | HP'
	option src '*'
	list src_mac 'XXX'
	option dest 'wan'
	option target 'DROP'

config rule
	option name 'DROP | ANY>WAN | IP Webcam'
	option src '*'
	option dest 'wan'
	option target 'DROP'
	list src_mac 'XXX'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'DROP | ANY>WAN | P1X'
	option src '*'
	option dest 'wan'
	option target 'DROP'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'DROP | ANY>WAN | Shelly'
	option src '*'
	option dest 'wan'
	option target 'DROP'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'DROP | ANY>WAN | Sleeping Time'
	option src '*'
	option dest 'wan'
	option target 'DROP'
	option start_time '23:00:00'
	option stop_time '00:00:00'
	list src_mac 'XXX'
	option weekdays 'Sun Mon Tue Wed Thu'
	option enabled '0'

config rule
	option name 'ALLOW | WAN>INPUT | DHCP Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'ALLOW | WAN>INPUT | Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | WAN>INPUT | IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'ALLOW | WAN>INPUT | DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | WAN>INPUT | 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'

config rule
	option name 'ALLOW | WAN>INPUT | ICMPv6'
	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'

config rule
	option name 'ALLOW | WAN>DMZ | Proxy IPv6'
	list dest_ip '2a0d:3344:1524:1202:be24:11ff:fe22:d12f'
	option dest_port '80 443'
	option target 'ACCEPT'
	option dest 'dmz'
	option family 'ipv6'
	option src 'wan'

config rule
	option name 'ALLOW | WAN>MGMT | IPSec ESP'
	option src 'wan'
	option dest 'mgmt'
	option proto 'esp'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'ALLOW | WAN>MGMT | ISAKMP'
	option src 'wan'
	option dest 'mgmt'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'ALLOW | WAN>ANY | ICMPv6'
	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 | LAN>INPUT | Router'
	option src 'lan'
	option target 'ACCEPT'
	list dest_ip '10.0.0.1'
	list src_mac 'XXX'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'ALLOW | LAN>DMZ | OnlyOffice Intern'
	option src 'lan'
	option dest 'dmz'
	list dest_ip '10.2.0.100'
	option dest_port '80 443 7912'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | LAN>SRV | AdGuard'
	option src 'lan'
	list src_mac 'XXX'
	option dest 'srv'
	option dest_port '443 90'
	option target 'ACCEPT'
	list dest_ip '10.3.0.100'

config rule
	option name 'ALLOW | LAN>SRV | RDP'
	option src 'lan'
	option dest 'srv'
	list dest_ip '10.3.0.102'
	option dest_port '3389'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | LAN>IOT | Shelly Webcam'
	option src 'lan'
	option dest 'iot'
	option target 'ACCEPT'
	list src_mac 'XXX'
	list dest_ip '10.4.0.117'
	list dest_ip '10.4.0.225'
	list dest_ip '10.4.0.129'
	list dest_ip '10.4.0.107'

config rule
	option name 'ALLOW | LAN>GUEST | PC'
	option src 'lan'
	list src_mac 'XXX'
	option dest 'guest'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | LAN>MGMT | Admin'
	option src 'lan'
	option dest 'mgmt'
	option target 'ACCEPT'
	list src_mac 'XXX'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'ALLOW | LAN>ANY | SSH'
	option src 'lan'
	option dest '*'
	option target 'ACCEPT'
	option dest_port '22'
	list src_mac 'XXX'
	list src_mac 'XXX'

config rule
	option name 'ALLOW | DMZ>INPUT | ICMPv6 Proxy'
	list proto 'icmp'
	option src 'dmz'
	option target 'ACCEPT'
	list src_ip '2a0d:3344:1524:1202:be24:11ff:fe22:d12f'
	list src_ip 'fe80::be24:11ff:fe22:d12f'

config rule
	option name 'ALLOW | DMZ>SRV | Grocy'
	option src 'dmz'
	option dest 'srv'
	list dest_ip '10.3.0.100'
	option dest_port '80'
	option target 'ACCEPT'
	list src_ip '10.2.0.100'

config rule
	option name 'ALLOW | DMZ>SRV | Nextcloud'
	option src 'dmz'
	option dest 'srv'
	option target 'ACCEPT'
	list src_ip '10.2.0.100'
	option dest_port '80 90 8000'
	list dest_ip '10.3.0.101'

config rule
	option name 'ALLOW | DMZ>SRV | Jellyfin'
	option src 'dmz'
	list src_ip '10.2.0.100'
	option dest 'srv'
	list dest_ip '10.3.0.102'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | DMZ>IOT | Home Assistant'
	option src 'dmz'
	list src_ip '10.2.0.100'
	option dest 'iot'
	list dest_ip '10.4.0.100'
	option dest_port '8123 7912'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | DMZ>IOT | Proxy Webcam'
	option src 'dmz'
	list src_ip '10.2.0.100'
	option dest 'iot'
	option dest_port '8080'
	option target 'ACCEPT'
	list dest_ip '10.4.0.225'
	list dest_ip '10.4.0.107'

config rule
	option name 'ALLOW | SRV>DMZ | OnlyOffice'
	option src 'srv'
	option dest 'dmz'
	list dest_ip '10.2.0.100'
	option dest_port '80 443'
	option target 'ACCEPT'
	list src_ip '10.3.0.101'

config rule
	option name 'ALLOW | IOT>DMZ | Jellyfin Shield'
	option src 'iot'
	list src_ip '10.4.0.192'
	option dest 'dmz'
	list dest_ip '10.2.0.100'
	option dest_port '80 443'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | IOT>SRV | AdGuard HA'
	option src 'iot'
	list src_ip '10.4.0.100'
	option dest 'srv'
	list dest_ip '10.3.0.100'
	option dest_port '443'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>INPUT | DHCP'
	option src '*'
	option dest_port '67 68 546 547'
	list proto 'udp'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>INPUT | ICMPv6'
	list proto 'icmp'
	option src '*'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'ALLOW | ANY>INPUT | Emergency'
	option src '*'
	list dest_ip '10.99.99.1'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>LAN | S23 Ftp'
	option src '*'
	option dest 'lan'
	list dest_ip '10.1.0.228'
	option dest_port '2222 2121 50678'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>SRV | DNS'
	option src '*'
	option dest 'srv'
	list dest_ip '10.3.0.100'
	option dest_port '53 853'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>IOT | Bambu'
	option src '*'
	option dest 'iot'
	option target 'ACCEPT'
	list dest_ip '10.4.0.132'
	list dest_ip '10.4.0.133'

config rule
	option name 'ALLOW | ANY>IOT | Shield'
	option src '*'
	option dest 'iot'
	option target 'ACCEPT'
	list dest_ip '10.4.0.192'

config rule
	option name 'ALLOW | ANY>IOT | Print'
	option src '*'
	option dest 'iot'
	list dest_ip '10.4.0.154'
	option target 'ACCEPT'

config rule
	option name 'ALLOW | ANY>IOT | Ownfoil'
	option src '*'
	option dest 'iot'
	option target 'ACCEPT'
	list dest_ip '10.4.0.101'

config rule
	option name 'ALLOW | ANY>GUEST | Switch FTP'
	option src '*'
	option dest 'guest'
	list dest_ip '10.5.0.201'
	option target 'ACCEPT'
	option enabled '0'

network (ap):


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	list ipaddr '127.0.0.1/8'

config globals 'globals'
	option dhcp_default_duid 'XXX'
	option packet_steering '1'

config interface 'bat0'
	option proto 'batadv'
	option routing_algo 'BATMAN_IV'
	option gw_mode 'off'
	option aggregated_ogms '1'
	option ap_isolation '0'
	option bonding '0'
	option bridge_loop_avoidance '1'
	option distributed_arp_table '1'
	option fragmentation '1'
	option hop_penalty '30'
	option isolation_mark '0x00000000/0x00000000'
	option log_level '0'
	option multicast_mode '1'
	option multicast_fanout '16'
	option network_coding '0'
	option orig_interval '1000'

config interface 'batmesh'
	option proto 'batadv_hardif'
	option master 'bat0'
	option mtu '1536'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '100'
	option name 'bat0.100'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '200'
	option name 'bat0.200'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '300'
	option name 'bat0.300'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '400'
	option name 'bat0.400'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '500'
	option name 'bat0.500'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '600'
	option name 'bat0.600'

config device
	option type '8021q'
	option ifname 'bat0'
	option vid '1337'
	option name 'bat0.1337'

config device
	option type 'bridge'
	option name 'br-lan'
	list ports 'bat0.100'

config device
	option type 'bridge'
	option name 'br-dmz'
	list ports 'bat0.200'

config device
	option type 'bridge'
	option name 'br-srv'
	list ports 'bat0.300'

config device
	option type 'bridge'
	option name 'br-iot'
	list ports 'bat0.400'

config device
	option type 'bridge'
	option name 'br-guest'
	list ports 'bat0.500'
	list ports 'lan1'	
	list ports 'lan2'	
	list ports 'lan3'
	list ports 'wan'

config device
	option type 'bridge'
	option name 'br-work'
	list ports 'bat0.600'

config device
	option type 'bridge'
	option name 'br-mgmt'
	list ports 'bat0.1337'

config device
	option type 'bridge'
	option name 'br-emerg'
	list ports 'lan1.911'
	list ports 'lan2.911'
	list ports 'lan3.911'

config interface 'lan'
	option proto 'none'
	option device 'br-lan'
 
config interface 'dmz'
	option proto 'none'
	option device 'br-dmz'
 
config interface 'srv'
	option proto 'none'
	option device 'br-srv'
 
config interface 'iot'
	option proto 'none'
	option device 'br-iot'
 
config interface 'guest'
	option proto 'none'
	option device 'br-guest'
 
config interface 'work'
	option proto 'none'
	option device 'br-work'
 
config interface 'mgmt'
	option proto 'static'
	option device 'br-mgmt'
	option ipaddr '10.0.0.X'
	option netmask '255.255.255.0'
	option gateway '10.0.0.1'
	list dns '10.3.0.100'
 
config interface 'emergency'
	option proto 'static'
	option device 'br-emerg'
	option ipaddr '10.99.99.1'
	option netmask '255.255.255.0'
	option netmask '255.255.255.0'

If anything else is needed I am happy to provide it !

Thanks in advance for looking into it!

I could also provide an config where I think I used an more modern approach of combining all bridges into one which would have looked something like this:

...

config device
	option type 'bridge'
	option name 'VLAN'
	list ports 'bat0.100'
	list ports 'bat0.200'
	list ports 'bat0.300'
	list ports 'bat0.400'
	list ports 'bat0.500'
	list ports 'bat0.600'
	list ports 'bat0.1337'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'

config bridge-vlan
	option device 'VLAN'
	option vlan '100'
	list ports 'bat0.100'
	list ports 'lan1:t'

config bridge-vlan
	option device 'VLAN'
	option vlan '200'
	list ports 'bat0.200'
	list ports 'lan1'

....

try connecting a client directly to your master GW device first either if using mobile or wired if using a laptop and retesting the speedtest. If that returns the proper download speeds as expected then it's related to MTU between your GW and APs.

Yes that's the case already tested this with Laptop and Mobile devices on all APs. As soon as I connect to the AP the download speed drops for steam (although regular downloads are still fast) when I connect to the gateway everything is fine.

I can share some screenshots if you want later, connected to different Routers doing some speed / download test if you want.

What really is strange i could not really reproduce it with iperf3 in no direction with different flags. Really the only thing I could find is a HUGE amount of TX retries and TX failes on the Gateway for the nodes:

Every 0.5s: iw dev $(iw dev | awk "/Interface/&&/mesh/{print \$2}") station dump | ... OpenWrt: Mon Jul 20 19:10:43 2026
                                                                                                           in 0.068s (0)
        tx retries:     26861
        tx failed:      26861
        tx bitrate:     864.7 MBit/s 160MHz EHT-MCS 3 EHT-NSS 3 EHT-GI 0
        tx retries:     27969
        tx failed:      27969
        tx bitrate:     3602.9 MBit/s 160MHz EHT-MCS 11 EHT-NSS 3 EHT-GI 0
        tx retries:     76997
        tx failed:      77005
        tx bitrate:     1441.3 MBit/s 160MHz EHT-MCS 7 EHT-NSS 2 EHT-GI 0

So you think it's the MTU, i also played around with that but maybe not at the right places. Where would I have to change the MTU ?

Time for packet captures... I guess, and potentially tcptrace analysis...

try:

ip link set mtu 2304 radio2

where radio2 is your batmesh backhaul trunk line on the GW and all your APs.

Hello @papdee thank you for the suggestion i tried it but unfortunatly its still the same here some pictures:

Master:

Nearest AP:

But could you explain to me what the difference is beteween setting it in /etc/config/network and this way?

@moeller0 sure but i did not use this tools so much yet, could you tell me what to capture exactly, and what to trace? Thank you !

So the easiest would be to use wireshark on your end device and capture one of the problematic speedtests from master and one of the APs... then look into the captures or share these for analysis.

there is no option to set the MTU on the radio in /etc/config/wireless. Are you sure you set the MTU on the wireless interface?