Hello,
I have a Mikrotik hEX PoE running the latest 7.16 RouterOS version and I have noticed a weird behaviour (frame leaking between vlans for limited time after connection).
I have created 2 vlans. A VLAN 90 for the internal networking and a VLAN 100 for some CCTV stuff.
I believe this is what I have configured:
- Ether1: access port in vlan 90 (192.168.123.0/24)
- Ether2: access port in vlan 100 (172.16.100.0/24)
- Ether3: access port in vlan 100 (172.16.100.0/24)
- Ether4: access port in vlan 100 (172.16.100.0/24)
- Ether5: access port in vlan 100 (172.16.100.0/24)
I’ve noticed some strange behavior. When my laptop isn’t connected to the network, I start Wireshark and begin monitoring the wired port. Then, I connect this port to an access port in VLAN 100 (like ether2). For the first 5 seconds, I see packets with a dot1q tag of 90 in my capture! It seems like the switch is leaking tagged frames from another VLAN into my access port.
All the tagged packets I can see on my vlan100 accessport appear to be multicast/broadcasts in VLAN90 (they are always visible ± 5 first seconds of the capture (total capture time 20s)):

This is the config on my switch that I believe is relevant for this issue:
/interface bridge
add admin-mac=D4:01:C3:96:3E:3D auto-mac=no name=bridge1 port-cost-mode=short
/interface bridge port
add bridge=bridge1 ingress-filtering=no interface=ether1 internal-path-cost=10 path-cost=10
add bpdu-guard=yes bridge=bridge1 edge=yes ingress-filtering=no interface=ether2 internal-path-cost=10 path-cost=10
add bpdu-guard=yes bridge=bridge1 edge=yes ingress-filtering=no interface=ether3 internal-path-cost=10 path-cost=10
add bpdu-guard=yes bridge=bridge1 edge=yes ingress-filtering=no interface=ether4 internal-path-cost=10 path-cost=10
add bpdu-guard=yes bridge=bridge1 edge=yes ingress-filtering=no interface=ether5 internal-path-cost=10 path-cost=10
/interface vlan
add interface=bridge1 name=CCTV_VLAN vlan-id=100
add interface=bridge1 name=INTERNAL_VLAN vlan-id=90
/ip address
add address=192.168.123.101/24 interface=INTERNAL_VLAN network=192.168.123.0
add address=172.16.100.254/24 interface=CCTV_VLAN network=172.16.100.0
/interface ethernet switch port
set 0 default-vlan-id=90 vlan-mode=secure
set 1 default-vlan-id=100 vlan-mode=secure
set 2 default-vlan-id=100 vlan-mode=secure
set 3 default-vlan-id=100 vlan-mode=secure
set 4 default-vlan-id=100 vlan-mode=secure
set 5 vlan-mode=secure
/interface ethernet switch vlan
add independent-learning=yes ports=ether1,switch1-cpu switch=switch1 vlan-id=90
add independent-learning=yes ports=ether2,ether3,ether4,ether5,switch1-cpu switch=switch1 vlan-id=100
Note that you would expect an “always-strip” on the ethernet switch ports. However, as the hEX PoE is using the QCA8337 switchchip, it doesn’t matter according to the doc:
QCA8337 and Atheros8327 switch chips ignore the vlan-header property and uses the default-vlan-id property to determine which ports are access ports. The vlan-header is set to leave-as-is and cannot be changed while the default-vlan-id property should only be used on access ports to tag all ingress traffic.
On QCA8337 and Atheros8327 switch chips, a default vlan-header=leave-as-is property should be used. The switch chip will determine which ports are access ports by using the default-vlan-id property. The default-vlan-id should only be used on access/hybrid ports to specify which VLAN the untagged ingress traffic is assigned to.
In QCA8337 and Atheros8327 chips when vlan-mode=secure is used, it ignores switch port vlan-header options. VLAN table entries handle all the egress tagging/untagging and works as vlan-header=leave-as-is on all ports. It means what comes in tagged, goes out tagged aswell, only default-vlan-id frames are untagged at the egress port.
When I do put the ‘always strip’ on ether1 to ether5. I still see the ARPs etc from vlan90 on my accessport in vlan100. But this time without the dot1Q tag 90
. This is a bug right?
Anybody ever noticed something similar or can explain this behaviour? It feels like a bug to me. What do you think?

