Mikrotik is halving my wan speed

Hello, how are you, I have a hEX rb750gr3 as a router. All connections are via cat6 ethernet cable but I have certain problems when using the internet.

  1. I have contracted an internet speed of 600mbps with the ISP, but when I connect through the hEX rb750gr3 the speed does not exceed 250 Mbps.
  2. On the contrary, if I connect directly to the ISP’s modem and do the speed test, it shows me more than 550 Mbps, which should be normal. At first I had contracted 200mbps and everything worked normally, I had the speed that it was supposed to have.
    I would like to know what is happening and if there is any configuration that can be done so that the Mikrotik is not limiting my internet speed by half. Thank you very much in advance for taking the time to answer.

Can you copy/paste your config?

Since the original request is from a brand new person so likely has not idea how to copy and past the configuration, try these:
To export and paste your configuration (and I’m assuming you are using WebFig or Winbox), open a terminal window, and type (without the quotes) “/export hide-sensitive file=any-filename-you-wish”. Then open the files section and right click on the filename you created and select download in order to download the file to your computer. It will be a text file with whatever name you saved to with an extension of .rsc. Suggest you then open the .rsc file in your favorite text editor and redact any sensitive information. Then in your message here, click the code display icon in the toolbar above the text entry (the code display icon is the 7th one from the left and looks like a square with a blob in the middle). Then paste the text from the file in between the two code words in brackets.

That’s a pretty complicated setup in terms of CPU load. When doing your speedtests is your CPU at 100%?

You have a lot of mangle and a lot of queues, this means nothing will be going via fastpath and everything will be going via CPU, which will heavily bind your available speed.
With a complicated setup like that, hEX probably no longer suitable and you should move up to something bigger with a bit more CPU.

Edit: Looks like you deleted the config post, but I had a good look over before you did and you are running hotspot with multiple simple queues and multiple route tables with mangle rules to define traffic to the vrf/route table.

# jul/09/2022 18:56:03 by RouterOS 6.49.6
# software id = 
#
# model = RB750Gr3
# serial number = 
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip hotspot profile
add dns-name= ZZZ hotspot-address=192.168.100.1 \
    html-directory=flash/hotspot name=hsprof1
/ip pool
add name=hs-pool-3 ranges=192.168.100.2-192.168.100.254
/ip dhcp-server
add address-pool=hs-pool-3 disabled=no interface=ether3 lease-time=1h name=\
    dhcp1
/ip hotspot
add address-pool=hs-pool-3 disabled=no interface=ether3 name=hotspot1 \
    profile=hsprof1
/queue simple
add max-limit=990M/990M name=0 target=192.168.2.50/32
add max-limit=500M/500M name=1 target=192.168.2.101/32
add max-limit=500M/500M name=2 target=192.168.2.110/32
add max-limit=500M/500M name=3 target=192.168.2.120/32
add max-limit=500M/500M name=4 target=192.168.2.126/32
add max-limit=500M/500M name=5 target=192.168.2.127/32
add max-limit=500M/500M name=6 target=192.168.2.129/32
add max-limit=500M/500M name=7 target=192.168.2.130/32
add max-limit=500M/500M name=8 target=192.168.2.132/32
add max-limit=500M/500M name=9 target=192.168.2.131/32
add max-limit=500M/500M name=10 target=192.168.2.128/32
add max-limit=500M/500M name=11 target=192.168.2.125/32
add max-limit=500M/500M name=12 target=192.168.2.124/32
add max-limit=500M/500M name=13 target=192.168.2.123/32
add max-limit=500M/500M name=14 target=192.168.2.122/32
add max-limit=500M/500M name=15 target=192.168.2.121/32
add max-limit=500M/500M name=16 target=192.168.2.119/32
add max-limit=500M/500M name=17 target=192.168.2.118/32
add max-limit=500M/500M name=18 target=192.168.2.117/32
add max-limit=500M/500M name=19 target=192.168.2.116/32
add max-limit=500M/500M name=20 target=192.168.2.115/32
add max-limit=500M/500M name=21 target=192.168.2.114/32
add max-limit=500M/500M name=22 target=192.168.2.113/32
add max-limit=500M/500M name=23 target=192.168.2.112/32
add max-limit=500M/500M name=24 target=192.168.2.111/32
add max-limit=500M/500M name=25 target=192.168.2.109/32
add max-limit=500M/500M name=26 target=192.168.2.108/32
add max-limit=500M/500M name=27 target=192.168.2.107/32
add max-limit=500M/500M name=28 target=192.168.2.106/32
add max-limit=500M/500M name=29 target=192.168.2.105/32
add max-limit=500M/500M name=30 target=192.168.2.104/32
add max-limit=500M/500M name=31 target=192.168.2.103/32
add max-limit=500M/500M name=32 target=192.168.2.102/32
/user group
set full policy="local,telnet,ssh,ftp,reboot,read,write,policy,test,winbox,pas\
    sword,web,sniff,sensitive,api,romon,dude,tikapp"
/ip neighbor discovery-settings
set discover-interface-list=!dynamic
/ip address
add address=192.168.0.2/24 interface=ether1 network=192.168.0.0
add address=192.168.1.2/24 interface=ether2 network=192.168.1.0
add address=192.168.2.1/24 interface=ether5 network=192.168.2.0
add address=192.168.100.1/24 comment="hotspot network" interface=ether3 \
    network=192.168.100.0
/ip dhcp-server network
add address=192.168.100.0/24 comment="hotspot network" gateway=192.168.100.1
/ip dns
set allow-remote-requests=yes servers=208.67.222.222,208.67.220.220
/ip firewall filter
add action=passthrough chain=unused-hs-chain comment=\
    "place hotspot rules here" disabled=yes
/ip firewall mangle
add action=mark-routing chain=prerouting dst-port=80 new-routing-mark=x1 \
    passthrough=yes protocol=tcp
add action=mark-routing chain=prerouting dst-port=443 new-routing-mark=x2 \
    passthrough=yes protocol=tcp
add action=mark-routing chain=prerouting dst-port=443 new-routing-mark=x3 \
    passthrough=yes protocol=udp
add action=mark-routing chain=prerouting dst-port=53 new-routing-mark=x4 \
    passthrough=yes protocol=udp
add action=mark-routing chain=prerouting dst-port=50000-50009 \
    new-routing-mark=discord passthrough=yes protocol=udp
add action=mark-routing chain=prerouting dst-port=1935 new-routing-mark=cam \
    passthrough=yes protocol=tcp
/ip firewall nat
add action=passthrough chain=unused-hs-chain comment=\
    "place hotspot rules here" disabled=yes
add action=masquerade chain=srcnat out-interface=ether1
add action=masquerade chain=srcnat out-interface=ether2
add action=masquerade chain=srcnat comment="masquerade hotspot network" \
    src-address=192.168.100.0/24
/ip hotspot ip-binding
add comment=01 mac-address=8A:E3:5F:55:82:63 server=hotspot1 type=\
    bypassed
add comment=02 mac-address=AA:B8:D3:BF:FF:5A server=hotspot1 type=\
    bypassed
add comment=03 mac-address=1C:5A:6B:D3:D7:E6 server=hotspot1 type=\
    bypassed
add comment=04 mac-address=32:76:CC:79:14:32 server=hotspot1 type=bypassed
add comment=05 mac-address=7C:89:56:D4:62:A0 server=hotspot1 type=bypassed
add comment=06 mac-address=DA:E3:D2:5B:77:50 server=hotspot1 type=bypassed
add comment=07 mac-address=00:3D:E8:E1:75:06 server=hotspot1 type=\
    bypassed
add comment=08 mac-address=FC:19:99:DF:AE:DB server=hotspot1 type=bypassed
add comment=09 mac-address=A6:5A:B4:FE:D6:5A server=hotspot1 type=bypassed
add comment=10 mac-address=A4:9B:4F:B9:D0:26 server=hotspot1 \
    type=bypassed
/ip hotspot user
add name=admin
/ip route
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x1
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x2
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x3
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x4
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x5
add check-gateway=ping distance=2 gateway=192.168.0.1 routing-mark=x6
add check-gateway=ping distance=1 gateway=192.168.1.1
add check-gateway=ping distance=2 gateway=192.168.0.1
/ip ssh
set allow-none-crypto=yes forwarding-enabled=remote

sometimes with hEX RB750Gr3, hEX S RB760iGS and other based on MediaTek MT7621A CPU CPU total average usage shows values below 50% when its fully maxed out, that’s because this is the only CPU used by MikroTik which has 2 threads per cpu core, that is 2 cores = 4 threads, in theory this can improve multi-thread performance a little but this modify the average CPU result calculation

because of that is not easy to spot high cpu in this device, i recommend to check in Winbox system->resources->CPU to see if some thread is most busy than the other 3 and is beyond 80% or if you have all 4 threads almost equally busy and beyond 40%, in any of this conditions you can be reaching the limit of the CPU

I’ve been watching the cpu for a long time and it never goes above 40% on any of the cores. I was even doing speed tests on Speedtest.net and it didn’t even exceed 60% in any core.

You could still be hitting a bottle neck (on a single core).

Try backing up your config, or if you have 2nd of same device, and set it up as basic as possible using WAN, NAT, LAN and see if the device itself can do your 600mbps, this will tell you if the device is capable, and if your complex setup is limiting its throughput.

600mbps hotspot, I would really recommend a bigger router though.

if you have 2 threads which belong to the same core (0 -1 or 2 - 3) at 50-60% that core is maxed out

I understand, then I should do an upgrade. What would be a good option? In the future I am thinking of increasing my speed to 1gbps

RB3011 likely OK, RB1100 even better, then start moving into cloud cores. You’ll have to do some research on mikrotik.com through the different offerings.

Thank you all very much for your help and your time.

info about routers performance

http://forum.mikrotik.com/t/best-mikrotik-router-for-1gbs-pppoe-wan/159302/1