Hi,
I have a 10 Gbps fiber connection at home and a CRS328-24P-4S+ router/switch.
When connected directly on the modem with my laptop and a 1 Gbps Ethernet adaptor, I get around 1.2 Gbps when testing with fast.com.
When connected directly on the switch, I get around only 600-700 Mbps and CPU usage on the switch reaches 100%.
The switch is connected through a 10 Gbps SFP+ to the modem. The bridge on the switch has various VLANs and has “vlan-filtering=yes”.
The CRS328-24P-4S+ and all the APs were on 6.x long-term. I read this post about http://forum.mikrotik.com/t/fastpath-fasttrack-l2hw-l3hw-clarification/155333/1 6x not having support for fast-path, so I upgraded everything to 7.15.
After reading https://help.mikrotik.com/docs/display/ROS/L3+Hardware+Offloading, I set “l3-hw-offloading=yes” on the switch chip and on all the port EXCEPT the WAN port because I enable it there, Internet access doesn’t work anymore (websites just hang).
I’m still seeing high CPU usage when testing with fast.com and I’m still around 600-700 Mbps. The fast-path stats on the bridge are not zero anymore contrary to RouterOS 6.x, however, they are not increasing when testing with fast.com, so clearly the WAN connections are not fast-path’ed. However, the fast track counters on the firewall appear to show that fast.com is being fast-tracked.
What am I doing wrong? Why are all the packets still going through the CPU once a connection LAN ↔ WAN has been established by the firewall?
Thank you so much for your help!
PS: Here are all the relevant parts in the config:
# 2024-06-03 11:29:04 by RouterOS 7.15
# software id = HZIZ-7WJZ
#
# model = CRS328-24P-4S+
/interface bridge
add admin-mac=2C:C8:1B:38:B5:21 arp=proxy-arp auto-mac=no igmp-snooping=yes ingress-filtering=no name=LAN vlan-filtering=yes
/interface ethernet
set [ find default-name=sfp-sfpplus1 ] name=WAN
set [ find default-name=ether2 ] name=ether2-hAP-AC3
set [ find default-name=ether3 ] name=ether3-cAP-AC
set [ find default-name=ether4 ] name=ether4-cAP-AC
set [ find default-name=ether5 ] name=ether5-cAP-AC
set [ find default-name=ether6 ] name=ether6-cAP-XL-AC
set [ find default-name=ether7 ] name=ether7-cAP-AC
set [ find default-name=ether8 ] name=ether8-wAP-AC
set [ find default-name=ether10 ] name=ether10-cAP-AC
set [ find default-name=ether11 ] name=ether11-IOT
set [ find default-name=ether12 ] name=ether12-cAP-Lite
set [ find default-name=ether13 ] name=ether13-SECURE
set [ find default-name=ether14 ] name=ether14-IOT-GS116PP
set [ find default-name=ether15 ] name=ether15-IOT
set [ find default-name=ether16 ] name=ether16-IOT
set [ find default-name=ether18 ] name=ether18-IOT
set [ find default-name=ether19 ] name=ether19-SECURE poe-out=off
set [ find default-name=ether20 ] name=ether20-IOT
set [ find default-name=ether21 ] name=ether21-IOT
set [ find default-name=ether22 ] name=ether22-IOT
set [ find default-name=ether23 ] name=ether23-IOT
set [ find default-name=ether24 ] name=ether24-IOT
set [ find default-name=sfp-sfpplus2 ] disabled=yes
set [ find default-name=sfp-sfpplus3 ] disabled=yes
set [ find default-name=sfp-sfpplus4 ] disabled=yes
/interface vlan
add interface=LAN name=GuestNet vlan-id=100
add interface=LAN name=IOTNet vlan-id=200
add interface=LAN name=SecureNet vlan-id=250
/interface ethernet switch port
set 24 l3-hw-offloading=no
/ip pool
add name=LAN ranges=192.168.2.150-192.168.2.250
add name=GuestNet ranges=192.168.100.150-192.168.100.250
add name=IOTNet ranges=192.168.200.150-192.168.200.250
add name=SecureNet ranges=192.168.250.150-192.168.250.250
/ip dhcp-server
add address-pool=LAN authoritative=after-2sec-delay bootp-support=none interface=LAN lease-time=1h name=LAN
add address-pool=GuestNet authoritative=after-2sec-delay bootp-support=none interface=GuestNet lease-time=1h name=GuestNet
add address-pool=IOTNet authoritative=after-2sec-delay bootp-support=none interface=IOTNet lease-time=1h name=IOTNet
add address-pool=SecureNet authoritative=after-2sec-delay bootp-support=none interface=SecureNet lease-time=1h name=SecureNet
/interface bridge filter
(There are 8 filters here, but all disabled)
/interface bridge port
add bridge=LAN ingress-filtering=no interface=ether3-cAP-AC
add bridge=LAN ingress-filtering=no interface=ether4-cAP-AC
add bridge=LAN ingress-filtering=no interface=ether5-cAP-AC
add bridge=LAN ingress-filtering=no interface=ether6-cAP-XL-AC
add bridge=LAN ingress-filtering=no interface=ether7-cAP-AC
add bridge=LAN ingress-filtering=no interface=ether8-wAP-AC
add bridge=LAN ingress-filtering=no interface=ether9
add bridge=LAN ingress-filtering=no interface=ether10-cAP-AC
add bridge=LAN ingress-filtering=no interface=ether11-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether12-cAP-Lite
add bridge=LAN ingress-filtering=no interface=ether13-SECURE pvid=250
add bridge=LAN ingress-filtering=no interface=ether14-IOT-GS116PP pvid=200
add bridge=LAN ingress-filtering=no interface=ether15-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether16-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether17
add bridge=LAN ingress-filtering=no interface=ether18-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether19-SECURE pvid=250
add bridge=LAN ingress-filtering=no interface=ether20-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether21-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether22-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether23-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether24-IOT pvid=200
add bridge=LAN ingress-filtering=no interface=ether2-hAP-AC3
add bridge=LAN ingress-filtering=no interface=ether1
/interface ethernet switch l3hw-settings
set autorestart=yes
/ip firewall connection tracking
set udp-timeout=10s
/ip settings
set max-neighbor-entries=8192 rp-filter=strict
/ipv6 settings
set disable-ipv6=yes
/interface bridge vlan
add bridge=LAN tagged=LAN,ether2-hAP-AC3,ether3-cAP-AC,ether4-cAP-AC,ether5-cAP-AC,ether6-cAP-XL-AC,ether7-cAP-AC,ether8-wAP-AC,ether10-cAP-AC,ether12-cAP-Lite untagged=\
ether11-IOT,ether14-IOT-GS116PP,ether15-IOT,ether16-IOT,ether18-IOT,ether20-IOT,ether21-IOT,ether22-IOT,ether23-IOT,ether24-IOT vlan-ids=200
add bridge=LAN tagged=LAN,ether2-hAP-AC3,ether3-cAP-AC,ether4-cAP-AC,ether5-cAP-AC,ether6-cAP-XL-AC,ether7-cAP-AC,ether8-wAP-AC,ether10-cAP-AC,ether12-cAP-Lite vlan-ids=100
add bridge=LAN tagged=LAN untagged=ether19-SECURE,ether13-SECURE vlan-ids=250
/interface ethernet switch
set 0 l3-hw-offloading=yes
/ip address
add address=192.168.2.1/24 interface=LAN network=192.168.2.0
add address=192.168.100.1/24 interface=GuestNet network=192.168.100.0
add address=192.168.200.1/24 interface=IOTNet network=192.168.200.0
add address=10.0.2.1/30 interface=ipip-lausanne network=10.0.2.0
add address=192.168.250.1/24 interface=SecureNet network=192.168.250.0
add address=192.168.0.2/30 interface=WAN network=192.168.0.0
/ip dhcp-server network
add address=192.168.2.0/24 comment=LAN dns-server=192.168.2.1 gateway=192.168.2.1 netmask=24
add address=192.168.100.0/24 comment=GuestNet dns-server=192.168.100.1 gateway=192.168.100.1 netmask=24
add address=192.168.200.0/24 comment=IOTNet dns-server=192.168.200.1 gateway=192.168.200.1 netmask=24
add address=192.168.250.0/24 comment=SecureNet dns-server=192.168.250.1 gateway=192.168.250.1 netmask=24
/ip firewall filter
add action=accept chain=input comment="Accept established and related connections" connection-state=established,related
add action=drop chain=input comment="Drop invalid connections" connection-state=invalid log=yes log-prefix=INVALID
add action=drop chain=input comment="Drop broadcast packets" dst-address=255.255.255.255
add action=drop chain=input comment="Drop packets which are not destined to local addresses" dst-address-type=!local log=yes log-prefix=NOT_LOCAL
add action=accept chain=input comment="Accept packets from LAN" in-interface=LAN
add action=accept chain=input comment="Accept packets from GuestNet" in-interface=GuestNet
add action=accept chain=input comment="Accept packets from IOTNet" in-interface=IOTNet
add action=accept chain=input comment="Accept packets from PPP" in-interface=all-ppp
add action=accept chain=input comment="Allow packets from IPIP tunnel" in-interface=ipip-lausanne
add action=drop chain=input comment="Drop packets from WAN which should not exist in public network" in-interface=WAN log=yes log-prefix=FROM_WAN_NOT_PUBLIC src-address-list=NOT_PUBLIC
add action=accept chain=input comment="Allow SSH from WAN" dst-port=7513 in-interface=WAN protocol=tcp
add action=accept chain=input comment="Allow IPSec (IKE) from WAN" dst-port=500 in-interface=WAN protocol=udp
add action=accept chain=input comment="Allow IPSec (NAT-Traversal) from WAN" dst-port=4500 in-interface=WAN protocol=udp
add action=accept chain=input comment="Allow IPSec (ESP) from WAN" in-interface=WAN protocol=ipsec-esp
add action=accept chain=input comment="Allow L2TP over IPSec from WAN" dst-port=1701 in-interface=WAN ipsec-policy=in,ipsec protocol=udp
add action=accept chain=input comment="Allow IPIP from WAN (lausanne.latour.info only)" in-interface=WAN protocol=ipencap src-address-list=lausanne.latour.info
add action=drop chain=input comment="Drop Bittorrent UDP traffic for Download Station" dst-port=16881 in-interface=WAN protocol=udp
add action=drop chain=input comment="Drop everything else" log=yes log-prefix=INPUT
add action=fasttrack-connection chain=forward comment="Fasttrack established and related connections" connection-state=established,related hw-offload=yes
add action=accept chain=forward comment="Accept established and related connections" connection-state=established,related
add action=drop chain=forward comment="Drop invalid connections" connection-state=invalid log=yes log-prefix=INVALID_CONNECTION
add action=drop chain=forward comment="Drop new connections from WAN which are not dst-natted" connection-nat-state=!dstnat connection-state=new in-interface=WAN log=yes log-prefix=NOT_DST_NATTED
add action=accept chain=forward comment="Allow packets from LAN to modem" dst-address=192.168.0.1
add action=drop chain=forward comment="Drop packets to WAN which should not exist in public network" dst-address-list=NOT_PUBLIC log=yes log-prefix=TO_WAN_NOT_PUBLIC out-interface=WAN
add action=accept chain=forward comment="Allow packets from GuestNet to WAN" in-interface=GuestNet out-interface=WAN
add action=reject chain=forward comment="Reject packets from GuestNet" in-interface=GuestNet log=yes log-prefix=GUEST_NET reject-with=icmp-network-unreachable
add action=accept chain=forward comment="Allow packets from IOTNet to WAN" in-interface=IOTNet out-interface=WAN
add action=accept chain=forward comment="Allow packets from IOTNet to SecureNet" in-interface=IOTNet out-interface=SecureNet
add action=reject chain=forward comment="Reject packets from IOTNet" in-interface=IOTNet log=yes log-prefix=IOT_NET reject-with=icmp-network-unreachable
add action=accept chain=forward comment="Allow packets from SecureNet to WAN (NTP only)" dst-port=123 in-interface=SecureNet protocol=udp
add action=reject chain=forward comment="Reject packets from SecureNet" in-interface=SecureNet log=yes log-prefix=SECURE_NET reject-with=icmp-network-unreachable
/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ipip-lausanne new-connection-mark=ipip-lausanne-IN passthrough=no
add action=mark-connection chain=postrouting new-connection-mark=ipip-lausanne-OUT out-interface=ipip-lausanne passthrough=no
add action=mark-connection chain=prerouting in-interface=IOTNet new-connection-mark=IOTNet-IN passthrough=no
add action=mark-connection chain=postrouting new-connection-mark=IOTNet-OUT out-interface=IOTNet passthrough=no
add action=mark-connection chain=prerouting in-interface=SecureNet new-connection-mark=SecureNet-IN passthrough=no
add action=mark-connection chain=postrouting new-connection-mark=SecureNet-OUT out-interface=SecureNet passthrough=no
/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade everything to WAN" out-interface=WAN
add action=dst-nat chain=dstnat comment="Synology NVR (WebServer - HTTP)" dst-port=80 in-interface=WAN protocol=tcp to-addresses=192.168.200.60
add action=dst-nat chain=dstnat comment="Synology NVR (DSM - HTTPS)" dst-port=443 in-interface=WAN protocol=tcp to-addresses=192.168.200.60 to-ports=5001
add action=dst-nat chain=dstnat comment="Synology NVR (DSM)" dst-port=5000-5001 in-interface=WAN protocol=tcp to-addresses=192.168.200.60
add action=dst-nat chain=dstnat comment="Synology NVR (Download Station - Bittorrent)" dst-port=16881 in-interface=WAN protocol=tcp to-addresses=192.168.200.60
add action=dst-nat chain=dstnat dst-port=6881 in-interface=WAN protocol=udp to-addresses=192.168.200.60
add action=masquerade chain=srcnat comment="Hairpin NAT (Synology NVR DSM)" dst-address=192.168.200.60 dst-port=5000-5001 out-interface=LAN protocol=tcp
add action=dst-nat chain=dstnat dst-address=192.168.2.1 dst-port=5000-5001 in-interface=LAN protocol=tcp to-addresses=192.168.200.60
add action=dst-nat chain=dstnat dst-address=192.168.2.1 dst-port=443 in-interface=LAN protocol=tcp to-addresses=192.168.200.60 to-ports=5001
add action=redirect chain=dstnat comment="Redirect DNS Requests" dst-port=53 in-interface=LAN protocol=udp
add action=redirect chain=dstnat dst-port=53,853 in-interface=LAN protocol=tcp
/ip route
add disabled=no dst-address=192.168.88.0/24 gateway=ipip-lausanne pref-src=192.168.2.1
/routing igmp-proxy interface
add alternative-subnets=0.0.0.0/0 interface=WAN upstream=yes
add alternative-subnets=0.0.0.0/0 interface=LAN
