Troubleshooting basic office router setup

While I’m new to Mikrotik I have a fair amount of networking experience, it’s just a little old now. I’ve only done higher level networking operations over the last 10 years or so, and apparently I’m a little rusty. Trying to reconcile the terminology between vendors isn’t making it any easier. If anyone has some time to look over what I’m doing here on the Mikrotik side and let me know if there’s something I’m still not getting I’d appreciate it.

This is an office with less than 50 users at peak, with very slow predictable growth. There are phones (voip) and a lot of BYOD activity (phones and more), but it’s generally a small network with relatively predictable usage patterns. The biggest challenge for this network is that it makes fairly heavy use of video chat – which is why we’re actually migrating to this new setup vs the off-the-shelf hardware that was in use before. Because of this, I am trying to keep the design as simple as possible.
Office Network Plan.png
My hope was that I could create a small “switch” between the two trunked uplinks from the ProCurve switches for local traffic, while allowing traffic destined out of the network to go directly out. (I don’t have stacking modules for the ProCurves). I configured the router like so:

/interface bridge
add name=br-internet
add name=br-legacy priority=0xC8
add name=br-office-lan priority=0x64
/interface vlan
add interface=br-legacy l2mtu=65527 name=DEFAULT vlan-id=1
add interface=br-office-lan l2mtu=65519 name=OFFICE vlan-id=2
add interface=br-office-lan l2mtu=65519 name=VOICE vlan-id=4
/interface bonding
add mode=802.3ad name=ProCurve1 slaves=sfp3,sfp4
add mode=802.3ad name=ProCurve2 slaves=sfp5,sfp6
/interface bridge port
add bridge=br-legacy interface=sfp1
add bridge=br-legacy interface=DEFAULT
add bridge=br-office-lan interface=OFFICE
add bridge=br-office-lan interface=VOICE
add bridge=br-office-lan interface=ProCurve1
add bridge=br-office-lan interface=ProCurve2
add bridge=br-office-lan interface=sfp12
add bridge=br-internet interface=sfp2
/ip address
add address=10.0.0.1/23 interface=DEFAULT network=10.0.0.0
add address=10.0.2.1/23 interface=OFFICE network=10.0.2.0
add address=10.0.4.1/23 interface=VOICE network=10.0.4.0
/ip dhcp-client
dhcp-options=hostname,clientid interface=br-internet
/ip firewall nat
add action=masquerade chain=srcnat out-interface=br-internet src-address=10.0.0.0/23
add action=masquerade chain=srcnat out-interface=br-internet src-address=10.0.2.0/23
add action=masquerade chain=srcnat out-interface=br-internet src-address=10.0.4.0/23

As I understand it, this should create a small switch between the two trunks on 3&4 and 5&6 that will carry tagged traffic for the relevant VLANs between them, as anytime a packet comes in destined for the other trunk it’ll end up going out a VLAN interface, so it’ll be tagged for that VLAN. So, SFP12 should also function as an access port for those VLANs.

Have I understood this correctly? I suspect my problem is probably on the ProCurve side, so I want to eliminate the router as a possible cause. Specifically right now, I have only the one switch (SFP3&4) hooked up, and I cannot ping the router from the switch through the bonded ports (even though both sides show those ports and the LACP as up).

After doing some more reading and testing I made some changes. I reworked the setup so that I have a VLAN interface for each of the bonded ports, which are then each in a bridge, with ip addresses defined on the bridge interface.

/int bridge
add name=br-legacy
add name=br-voice-vlan
add name=br-data-vlan
/int bonding
add mode=802.3ad name=ProCurve1 slaves=sfp3,sfp4
add mode=082.3ad name=ProCurve2 slaves=sfp5,sfp6
/int vlan
add interface=ProCurve1 name=VLAN_DATA_PROCURVE1 vlan-id=2
add interface=ProCurve1 name=VLAN_DATA_PROCURVE2 vlan-id=2
add interface=ProCurve1 name=VLAN_VOICE_PROCURVE1 vlan-id=4
add interface=ProCurve1 name=VLAN_VOICE_PROCURVE2 vlan-id=4
/int bridge port
add bridge=br-legacy interface=DEFAULT_VLAN 
add bridge=br-data-vlan interface=VLAN_DATA_PROCURVE1
add bridge=br-data-vlan interface=VLAN_DATA_PROCURVE2
add bridge=br-data-vlan interface=sfp12
add bridge=br-voice-vlan interface=VLAN_VOICE_PROCURVE1
add bridge=br-voice-vlan interface=VLAN_VOICE_PROCURVE2
/ip address
add address=10.0.0.1/23 interface=br-legacy network=10.0.0.0
add address=10.0.2.1/23 interface=br-data-vlan network=10.0.2.0
add address=10.0.4.1/23 interface=br-voice-vlan network=10.0.4.0

Still couldn’t talk between the router and the ProCurve switch on 10.0.2.5. So, I disabled SFP4 on both the router and switch side, and then disabled spanning tree on both sides. Now I can ping it. So it would seem to be a spanning tree issue at this point, although there is no indication of that on either side either in the status output or in the logs.

If anyone has suggestions on why that might be I’d love to hear them.

That change did it eventually. After disabling spanning tree and resetting all the counters and such on both sides, and then turning spanning tree back on everything was working.

Note that this is specifically the right path in this case because it’s a CCR, which doesn’t have a switch CPU.

If you are using a CSR, or other device with a switching CPU you’ll want to read this thread where kaldek explains how to configure using the switch-port for best performance on those devices.

Hi, maybe you could try this:
vlan.PNG
You could bond sfp 3&4, 5&6.
Create a bridge and add those bonded interfaces to the bridge.
Create two VLAN interfaces on the bridge.
Assign IP adresses to the VLAN interfaces.

I can’t test this config but maybe it will help you. =)