n8v8r, thanks for the info! Setting age time to 16s would improve, but not solve the issue.
AFAIK something wrong with the switch because it should update fdb when receiving a packet with known mac address from unexpected port, but looks like it doesn’t.
Omnia <-lan4-> Server
<-lan1-> Secondary AP < WiFi >
< WiFi >
WiFi set to the same SSID, so clients can easily roam between Secondary AP and Omnia.
Packet flow, as far as I understand it:
Laptop connected to a secondary AP, sends packets to a server. Omnia’s switch learns that laptop’s mac is on
lan1, server mac is on
lan4 and deliver the packets without even showing them to Omnia’s CPU. When laptops reconnects to Omnia’s WiFi directly and tries to send a packet to the server (it’s ARP first, as on laptop reconnect ARP table flushes), the packet gets delivered correctly, and I expected at this point that the switch learns that laptop mac is now on
eth0 (port 6) instead of
lan1, but it doesn’t happen. So server’s ARP reply goes to
lan1 and never reaches the laptop.
Omnia doesn’t see that ARP reply, as it never reaches CPU.
And this continues until aging happens.
Changing Age Time from ~250 to 16s would help a bit, but still would cause broken TCP sessions, I think. At this point I’d prefer if all the traffic would go through CPU to have seamless migration between WiFis.