Setup: CRS328-24P-4S+ (Marvell 98DX3236), RouterOS 7.23.1 stable, factory 6.47.4. One bridge, hardware offload on all 26 active ports, vlan-filtering=no, ~49 VLAN interfaces on the bridge, ageing-time=5m, max-learned-entries=auto. Role: FWA aggregation switch — Cambium ePMP and Ubiquiti airMAX APs on the access ports, PoP router on sfp-sfpplus1. L3 offload off.
Symptom: After a reboot, /interface bridge host print count-only starts in the hundreds and climbs steadily (~5–30 new entries/min) until it plateaus at ~13,700 about 2–3 days later. At that point learning fails — destinations with heavy live traffic are absent from the table (find mac-address= returns nothing) and their unicast is flooded out every port. Captured on an AP's radio interface: ~8,000 pps of other customers' downloads being transmitted over the air. Customers on the weakest/furthest APs lose service. Reboot clears it; cycle repeats.
What I tested:
- At ~13.6k entries, set
ageing-time=1m: count moved 13,643 → 13,566 in 2+ minutes. Essentially nothing aged. - Fresh after reboot at 771 entries, set
ageing-time=15s: 771 → 645 within 60 s. Ageing works when the table is small. print count-only where aged= 0 at all times.- Growth rate vs. size: a live population needing 13k entries at 5m ageing would require ~2,600 new MACs/min; observed arrivals are ~5–30/min. Consistent with accumulation without expiry, not a large live population.
- ~50% of accumulated entries have the locally-administered bit set — looks like random transient MACs that should have expired long ago.
- CPU is single-core ARM 800 MHz; idle ~15–25%, but
/exportpushes it to 99% for several seconds. Memory fine (420+ MiB free).
Questions:
- Is hardware FDB ageing on CRS3xx known to stall as the table grows on 7.2x? Any version where this was fixed or regressed?
- Is ageing on 98DX3236 done by the chip or software-assisted on this platform?
- Any way to flush hardware host entries per port without a reboot, or to cap learning per port?
Current workaround: scheduled nightly reboot. Happy to provide supout.rif.