Iperf3 router and device slow, but faster when device to device with router in between

Router in question is Belkin RT3200 IP is 1
I have iperf3 server running on a VM inside proxmox. IP is 163

I noticed that the over wifi (AX) sitting right next to router I am getting only around 260Mbps in iperf3 test from my M1 Mac laptop and also the iperf3 app on phone.

I then re-ran the test with router as client by ssh ing into the router. basically the same speed ~260Mbps.

Now I disconnect the wifi and connect my laptop directly to router.
with 163 as server and laptop as client, I am now getting ~860Mbps.
I thought okay, so wifi was the issue.

I then ran the same test with router as the server and laptop as client.
I am now getting same old ~260Mbps.
Now I am confused.

I did the test again with 163 as server and router as client.
Speed is ~260Mbps.

To summarize:
laptop -> lan -> router -> lan -> proxmox vm gives me 850+ Mbps
laptop -> wifi -> router -> lan -> proxmox vm is 260Mbps
router -> lan -> proxmox vm is 260Mbps
laptop -> lan -> router is 260Mbps

Any idea what is going on here?
Doesnt seem like a cable issue, but I swapped out the lan cables anyway and the results didnt change.

Without describing the WiFi connection, looks OK.

Can you show the network and wireless config?

Always check the cpu utilization while running those tests. It is usually the bottleneck.
Also when the client or server of iperf is the router, this adds extra load on its cpu.

2 Likes

Thanks. I did check the CPU utilization.
The system load is only 0.2 during these tests.
And each CPU is under 50%

What "Can you show the network and wireless config?" means:

  • Output from cat /etc/config/network
  • Output from cat /etc/config/wireless
  • Output from cat /etc/config/dhcp
  • Output from cat /etc/config/firewall

Just like in this comment: Archer A7 uploads at 2x speed compared to download

I'm not sure if you're:

  • asking me what they are or where to locate them (since you're not the Original Poster)
  • or if you're tying to say that someone else's configs are the same?

In any case, yes - those are the config files in OpenWrt.

@lleachii i was just trying to follow up to your question towards the original poster (@Reconvene9657) of this thread, as the last response failed to provide the information you asked for, so I thought maybe Reconvene9657 does not know how and in what form the wireless configuration can be provided to you. That's all. No deeper meaning.

2 Likes

Thank you @ThiloteE and @lleachii

Output from 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 device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

config interface 'lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option ipaddr '10.1.1.1'
	option device 'br-lan.1'

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'
	list dns '8.8.8.8'
	list dns '8.8.4.4'
	option peerdns '0'

Output from cat /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/18000000.wmac'
	option band '2g'
	option htmode 'HT20'
	option cell_density '0'
	option channel '1'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Redacted'
	option encryption 'psk-mixed'
	option key 'Redacted'

config wifi-device 'radio1'
	option type 'mac80211'
	option path '1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option band '5g'
	option country 'US'
	option cell_density '0'
	option he_bss_color '8'
	option he_su_beamformee '1'
	option htmode 'HE80'
	option channel '40'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'Redacted'
	option encryption 'sae-mixed'
	option key 'Redacted'

config wifi-iface 'wifinet2'
	option device 'radio0'
	option mode 'ap'
	option ssid 'Redacted'
	option encryption 'psk-mixed'
	option key 'Redacted'
	option network 'VLAN90'

Output from cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	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'
	option cachesize '1000'
	option rebind_protection '0'
	list server '10.1.1.1'
	option port '54'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	list dhcp_option '6,10.1.1.1'
	list dhcp_option '3,10.1.1.1'

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

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

Output from cat /etc/config/firewall

config defaults
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'
	option flow_offloading '1'
	option flow_offloading_hw '1'

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

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

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

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

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'

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'

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'

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'

config include 'bcp38'
	option type 'script'
	option path '/usr/lib/bcp38/run.sh'
	option family 'IPv4'
	option reload '1'

1 Like