Low upload speed, but good download. X86 mini-pc issue

Hello! I can say that i am newbie, so sorry if i did something wrong.

I have 300/300 mbps internet from wired ISP (PON)

But i getting by download 300mbps and by upload only 20-60 mbps, while if i connect directly to PON terminal from notebook i will get 300/300.

I tried:

  • Playing with MTU on LAN, WAN, br-lan. Nothing helps.
  • Software offload and hardware offload won't help.
  • Packet steering do nothing.

Also i should mention that i have install PBR, Wireguard, DoH and have many VLANs.

With VPN and without i getting almost same numbers: 300 download and 20-60 upload.

OpenWRT 23.05.3

pause frames ethtool -a / -A

Sorry I do not understand. What should I do with these commands?

I have eth0 as my WAN and eth1,2,3 for home network.

i guess i understand what you mean
ethtool -a eth0
Pause parameters for eth0:
Autonegotiate: on
RX: on
TX: off

so when i enable
ethtool -A eth0 tx on

internet disappears and after few seconds TX again in off state and internet works again

yes, switch it off for good.

When i do this it's always switch back. No matter on/off

root@MainRouter:~# ethtool -a eth0
Pause parameters for eth0:
Autonegotiate:  on
RX:             on
TX:             off

root@MainRouter:~# ethtool -A eth0 rx off
root@MainRouter:~# ethtool -a eth0
Pause parameters for eth0:
Autonegotiate:  on
RX:             on
TX:             on

root@MainRouter:~# few seconds later
-ash: few: not found
root@MainRouter:~# ethtool -a eth0
Pause parameters for eth0:
Autonegotiate:  on
RX:             on
TX:             off

root@MainRouter:~# 

Okay, i got it. So to able make switch rx/tx i should disable autoneg

But even if i disable autoneg and rx/tx its doesn't help :frowning:

Probably you need to ethtool -r to renegotiate link after disabling all.
ethtool -S eth0 may show something about errors etc.

what kind of x86 hw are you using ? please be specific.

1 Like

This is ethtool -S eth0 right after boot:

root@MainRouter:~# ethtool -S eth0
NIC statistics:
     rx_packets: 2325
     tx_packets: 3197
     rx_bytes: 762472
     tx_bytes: 555262
     rx_broadcast: 0
     tx_broadcast: 3
     rx_multicast: 2
     tx_multicast: 7
     multicast: 2
     collisions: 0
     rx_crc_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 4
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 762472
     tx_dma_out_of_sync: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
     os2bmc_rx_by_bmc: 0
     os2bmc_tx_by_bmc: 0
     os2bmc_tx_by_host: 0
     os2bmc_rx_by_host: 0
     tx_hwtstamp_timeouts: 0
     tx_hwtstamp_skipped: 0
     rx_hwtstamp_cleared: 0
     tx_lpi_counter: 0
     rx_lpi_counter: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_frame_errors: 0
     rx_fifo_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_queue_0_packets: 520
     tx_queue_0_bytes: 84271
     tx_queue_0_restart: 0
     tx_queue_1_packets: 815
     tx_queue_1_bytes: 132758
     tx_queue_1_restart: 0
     tx_queue_2_packets: 1187
     tx_queue_2_bytes: 213107
     tx_queue_2_restart: 0
     tx_queue_3_packets: 675
     tx_queue_3_bytes: 112248
     tx_queue_3_restart: 0
     rx_queue_0_packets: 1892
     rx_queue_0_bytes: 560086
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 0
     rx_queue_0_alloc_failed: 0
     rx_queue_1_packets: 103
     rx_queue_1_bytes: 47639
     rx_queue_1_drops: 0
     rx_queue_1_csum_err: 0
     rx_queue_1_alloc_failed: 0
     rx_queue_2_packets: 278
     rx_queue_2_bytes: 127944
     rx_queue_2_drops: 0
     rx_queue_2_csum_err: 0
     rx_queue_2_alloc_failed: 0
     rx_queue_3_packets: 52
     rx_queue_3_bytes: 17503
     rx_queue_3_drops: 0
     rx_queue_3_csum_err: 0
     rx_queue_3_alloc_failed: 0

Also ethtool -r doesn't help

This thing (Aliexpress)

j4125 2,5G 4/64

Also currently my sqm disabled but tc qdisc is full of something

may this problem?

root@MainRouter:~# tc qdisc
qdisc noqueue 0: dev lo root refcnt 2 
qdisc mq 0: dev eth0 root 
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth0 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth0 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth0 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc mq 0: dev eth1 root 
qdisc fq_codel 0: dev eth1 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth1 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth1 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth1 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc mq 0: dev eth2 root 
qdisc fq_codel 0: dev eth2 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth2 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth2 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth2 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc mq 0: dev eth3 root 
qdisc fq_codel 0: dev eth3 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth3 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth3 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev eth3 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc noqueue 0: dev br-lan root refcnt 2 

And btw im using cake/cake in sqm and using it only for one vpn interface

how about you disable all extras, or boot a clean openwrt image from a flash drive (to keep the installed one intact), and repeat the speed tests ?

1 Like

Well, to boot from usb i guess me need connect monitor to router, but i don't have monitor right here, maybe me need to buy it. How can i disable all extras? you mean services?

my services:

root@MainRouter:/etc/rc.d# service 
Usage: service <service> [command]
/etc/init.d/boot                   enabled         stopped
/etc/init.d/cron                   enabled         stopped
/etc/init.d/dnsmasq                enabled         running
/etc/init.d/done                   enabled         stopped
/etc/init.d/dropbear               enabled         running
/etc/init.d/etherwake              enabled         stopped
/etc/init.d/firewall               enabled         stopped
/etc/init.d/gpio_switch            enabled         stopped
/etc/init.d/https-dns-proxy        enabled         running
/etc/init.d/led                    enabled         stopped
/etc/init.d/log                    enabled         running
/etc/init.d/network                enabled         running
/etc/init.d/odhcpd                 enabled         running
/etc/init.d/packet_steering        enabled         stopped
/etc/init.d/pbr                    enabled         stopped
/etc/init.d/rpcd                   enabled         running
/etc/init.d/sqm                    enabled         stopped
/etc/init.d/sysctl                 enabled         stopped
/etc/init.d/sysfixtime             enabled         stopped
/etc/init.d/sysntpd                enabled         running
/etc/init.d/system                 enabled         stopped
/etc/init.d/ucitrack               enabled         stopped
/etc/init.d/uhttpd                 enabled         running
/etc/init.d/umount                 enabled         stopped
/etc/init.d/urandom_seed           enabled         stopped
/etc/init.d/urngd                  enabled         running

Not really.

One of the ports will be LAN, another WAN.
Two will be unassigned/inactive.

Trial and error.

1 Like

you need irqbalance to spread network queues among cores.
have to enable it in config file to run/

Am i right that to boot OWRT i should write USB with balena, insert in USB, and by blind choose select boot from usb from bios then do minimal setup and test performance?

I should install irqbalance, enable it and make sure it's running and enabled and test again? without any anothers options? like ethtool something

upd: installing and enabling irqbalance do nothing

Do you get full speed bypassing OpenWRT with same cleint machine?

yes, getting