hAPs are acting as AP/bridges (no L3). There are several VLANs on them, each w/ different SSID
CRS is acting as switch/L3 router and DHCP relay. HW offloading and L3 routing is enabled here between above VLANS
RB450 is acting as DHCP server and Internet GW
So basic DHCP works. Clients are getting IP addresses and they are keeping them. However when I enable debug on DHCP server I’m seeing a lot of
2025-10-03 12:11:26 dhcp,debug received request from 78:8C:77:C2:XX:XX with unknown giaddr 0.0.0.0
Sniffer launched on DHCP server interfaces shows that those events are triggered by the unicast packets between DHCP client and DHCP server with DHCP REQUEST inside (after half of lease time has passed). Since those packets are ignored by RB450, at some point the DHCP client falls back to DHCP REQUEST sent towards broadcast. At this point DHCP server accepts the request and extends the DHCP lease.
What I think is happening under the hood:
the broadcast DHCP packets are handled via switch CPU and giaddr field is populated (as expected from the DHCP relay)
the unicast packets are offloaded and are bypassing CPU and nogiaddr field is populated (thus 0.0.0.0 )
since DHCP server is expecting in each renewal the giaddr field populated, it treats DHCP REQUESTs as invalid packets.
Question: I’m thinking correctly here? What are my options (without disabling HW offload on the switch). It looks like some sort of MT bug to be honest.
Could you use a switch rule to punt matching packets to CPU to see if that helps?
Something like this?
It might at least prove/disprove your idea about it not working because it bypasses the CPU. You could also temporarily disable L3HWOffload to prove a point...or not.
I’ve tried that but that rule alone does not work (as expected). Packet gets dropped for some reason.
I believe I need to add either /interface/bridge/nat add action=redirect... or /ip firewall nat add action=redirect...but I couldn’t find any documentation why that part is needed. ( see switch - rule - redirect to cpu issue? )
Although this is a home infrastructure its treated as production environment (we work from home) so disruptive config changes can be done in “maintenance window” (next weekend most likely).
So I’m mostly interested if someone encountered similar behavior or if my way of thinking is correct.
I'll be honest, I'd be stabbing in the dark at that point. I've got switch rules succesfully dropping traffic by setting the destination ports as null but haven't gathered the will to do battle and improve it so that it can be logged as dropped rather than just silently dropped.
I’ve made the IP mask between the switch and DHCP server shorter (/24 instead of /30) then used macvlan interfaces and set relay to magic value 255.255.255.255 (any address). So now each DHCP pool is using different interface (new config below):