Upload speed on 19.07.3

Hi,

I installed the latest 19.07.3 on D-Link 885L A2. Everything works, the only issue I have and actually I had it with 19.07.1 is that upload speed is 414.77 Mbit/s versus what I expected it to be around 900 Mbit/s. The Download speed is around 900 MBits/s. I am using the Software Offload checkbox which is checked. Does anyone have any suggestions?

I did not enable or configure Qos.

Thank you,

dg

You don't tell us what you're testing to. Is it a server on the net, ie., over your ISP connection or is it to an iperf3 server on your local network.

If the former, I suggest you put an iperf3 server on your local network on the WAN side and test with this. That way you can eliminate the ISP as being the potential source of the problem; it may just be that the speed they're advertising to you is not the speed you're getting rather than a performance issue with the hardware or software.

I am using speedtest-cli, it is FTTH, the ISP is using ADSL(PPPOE). The theoretical expected speed is 1000/940 MBits/s. The test is from a computer cable connected directly to the OpenWRT router. I get similar results with another laptop. The download is fine but the upload is about half.

Your ISP is fiber and DSL???

For DSL!?!?

That is probably FTTH with PPPoE and likely VLAN tagging, both of which require extra CPUs cycles.

What is the CPU usage during download and upload: top -d 1 ?

1 Like

You are not running this on the router, are you?

2 Likes

The ISP is fibre and DSL.

top -d 1 on the router

14 2 root SW 0 0% 0% [ksoftirqd/1]
7 2 root SW 0 0% 0% [ksoftirqd/0]

This two processes during a speed test get to 70-80% of the CPU but that is for a brief 1-2 seconds.

I run the speed test not on the router but on a desktop and top on the router.

When using the original D-link 885 firmware the speed are more consistent with what I expect them to be. Also the CPUs are 2 of these:

model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 1400.00

Can you take a screenshot of the top part of the top output?

Here it is:

3% idle: your router is maxed out.

The stock firmware must be using hardware acceleration, which OpenWRT does not have access to.

Did you enable software flow offloading on the firewall page?

You are so right. CPU tops out exactly during the upload. See the screenshot. Now the question is why does it happened on the upload and not on the download?

Is there something that I can do to optimise and reduce the load?

See my reply above.

Yes, I have it:

PPPoE is not free and if you use VLAN tagging on WAN, it is also not free. Now it is time for you to share your network, firewall, and sqm/qos configs.

1 Like
config defaults
	option syn_flood '1'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option flow_offloading '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'

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 src_ip 'fc00::/6'
	option dest_ip 'fc00::/6'
	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
	option path '/etc/firewall.user'

config redirect
	option dest_port 'xxxx'
	option src 'wan'
	option name 'pick-ssh'
	option src_dport 'xxxx'
	option target 'DNAT'
	option dest_ip 'xxxx'
	option dest 'lan'

config redirect
	option dest_port 'xxxx'
	option src 'wan'
	option name 'pick-https'
	option src_dport 'xxxx'
	option target 'DNAT'
	option dest_ip 'xxxx'
	option dest 'lan'

config redirect
	option dest_port 'xxxx'
	option src 'wan'
	option name 'pick-http'
	option src_dport 'xxxx'
	option target 'DNAT'
	option dest_ip 'xxxx'
	option dest 'lan'

config redirect
	option dest_port 'xxxx'
	option src 'wan'
	option name 'Camera'
	option src_dport 'xxxx'
	option target 'DNAT'
	option dest_ip 'xxxx'
	option dest 'lan'

config rule
	option name 'Allow-NFS-RPC'
	option src 'lan'
	option proto 'tcpudp'
	option dest_port '111'
	option target 'ACCEPT'

config rule
	option name 'Allow-NFS'
	option src 'lan'
	option proto 'tcpudp'
	option dest_port '2049'
	option target 'ACCEPT'

config rule
	option name 'Allow-NFS-Lock'
	option src 'lan'
	option proto 'tcpudp'
	option dest_port '32777:32780'
	option target 'ACCEPT'

network

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

config globals 'globals'
	option ula_prefix 'fd01:ec25:a0b7::/48'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth0.1'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device 'lan_eth0_1_dev'
	option name 'eth0.1'
	option macaddr '40:9b:cd:30:11:b8'

config interface 'wan'
	option ifname 'eth0.35'
	option proto 'pppoe'
	option ipv6 'auto'
	option username 'xxxxxx'
	option password 'xxxxxx'

config device 'wan_eth0_2_dev'
	option name 'eth0.2'
	option macaddr '40:9B:CD:30:11:B8'

config interface 'wan6'
	option proto 'dhcpv6'
	option ifname 'eth0.35'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 5t'

config switch_vlan
	option device 'switch0'
	option vlan '35'
	option ports '4t 5t'

I do not have sqm/qos

Ok, so PPPoE with VLAN tagging and a media converter? I suggest an experiment: Remove the converter and use your ISP’s router to manage the PPPoE session and tagging and plug in your OpenWRT into that router as a DHCP client.
This way you can measure the overhead of pppoe with VLAN.

Yes, it is PPPOE with VLAN tagging and media convertor. The reason I gave up on my ISP provided router, was that every time I was trying to configure it, it would die and not allow me to login again. So, I have a big brick sitting on a self.

The only question left is why is it happening on the upload and not on the download? It is the same PPPOE.

It is and it is not. There could be different amount of effort required to create a packet to send vs process the packet on receive. The test I suggested would help. Otherwise, you should open another topic to understand why sending is more expensive than receiving.

1 Like

Thank you fantom-x.