DHCP Issue across switches
My network has 3 VLANs:
- VLAN 10 (192.168.10.0/24): Servers/Management Network - Omada's Mgmt IP addresses/interfaces are on this network along with the Windows DHCP Server (192.168.10.12)
- VLAN 11 (192.168.11.0/24): Clients Network
- VLAN 13 (192.168.13.0/24): IoT/Guests Network
I have 3 switches in my network, connected in series:
- Switch 1: TL-SG3452XP, my core switch which connects directly to the DHCP Server on VLAN 10 and on which I have also set up VLAN Interfaces (switch has been assigned the 192.168.X.1 IP address on each of the 3 VLAN, plus DHCP helper IP address of 192.168.10.12)
- Switch 2: TL-SX3008F, on which both Switch 1 and Switch 3 are connected, via trunk ports (VLAN 10: untagged/native, VLAN 11 & 13: tagged)
- Switch 3: TL-SG2210MP, connected to Switch 2 via a trunk port (VLAN 10: untagged/native, VLAN 11 & 13: tagged).
The issue is, if I connect a client on a port on Switch 3 (e.g. VLAN 11 or 13 untagged), the client cannot obtain a DHCP address. While if I connect the same client on Switch 1, the client will obtain an IP address. It seems that the DHCP broadcast packets do not reach Switch 1 from Switch 3.
If I assign the client a static IP while it is plugged on Switch 3, then it works normally. This means that Switch 3 only fails to forward DHCP/Broadcast Packets to Switch 1.
If I set up Switch's 3 VLAN interfaces with IP addresses and DHCP relay, then the Client receives a DHCP address. However this is not the expected behavior. Since there's a trunk port between Switch 1 > Switch 2 > Switch 3, Switch 2 & 3 should act as "dump" L2 switches and just forward all trafic to Switch 1 which should be assigning DHCP addresses via the DHCP relay configured on it.
My expectation is that Switch 2 & 3 would act as dumb extensions of Switch 1, which means that the behavior for all clients connected to Switch 2 & 3 would be the same as if they were connected to Switch 1. This is not the case and it's the first time I am facing this issue among different vendors. Am I doing something wrong? Is this a bug?