RSTP Issue

Hello all,

I have a CCR as my root bridge and 2 CRS switches connected to it. The CRS switches are not connected to each other.

Both CRS switches have a port-channel (bond) to the CCR. When 1 crs switch is connected to the ccr only, connectivity is fine. As soon as I connect the 2nd crs switch to the CCR, STP starts discarding traffic, then listens and forwards. It just goes in a constant circle. There is no physical loop so I’m not sure what is going on.

I do have the bridge priority set on the CCR so that it becomes the root bridge but I don’t believe anything else needs to be done.

Can anyone give some insight?

Screenshots attached showing the packetloss at the exact same time as well as the log showing the stp states.
Screenshot 2025-01-31 190023.png
Screenshot 2025-01-31 185955.png

Quick update:

I removed the bond on the 2nd crs switch that goes to the CCR. Then things started working properly and spanning tree wasn’t discarding traffic anymore…

Does mikrotik not like having more than one bond?

The CCR is currently on 7.8 and CRS’s on 6.49.17.

Genrally multiple bonds work fine on ROS devices. So it might be domething about how you set them up … both on CCR and both CRSes.

If you post config from all 3 devices (the /interface part will probably be enough), we may spot domething off …

CCR Interface export when both bonds were active and causing issues

/interface/bridge> print
Flags: X - disabled, R - running 
 0 R name="bridge" mtu=auto actual-mtu=1500 l2mtu=1596 arp=enabled arp-timeout=auto mac-address=18:FD:74:B3:3C:BC protocol-mode=rstp fast-forward=yes 
     igmp-snooping=no auto-mac=yes ageing-time=5m priority=0x8000 max-message-age=20s forward-delay=15s transmit-hold-count=6 vlan-filtering=yes 
     ether-type=0x8100 pvid=1 frame-types=admit-all ingress-filtering=yes dhcp-snooping=no 

/interface bridge
add name=bridge vlan-filtering=yes

/interface bonding
add mode=802.3ad name=Po1 slaves=ether15,ether16
add mode=802.3ad name=Po2 slaves=ether13,ether14

/interface bridge port
add bridge=bridge interface=sfp-sfpplus1
add bridge=bridge interface=sfp-sfpplus2
add bridge=bridge interface=Po1
add bridge=bridge interface=Po2

CRS #1 Interface export

 /interface bridge print
Flags: X - disabled, R - running 
 0 R name="bridge" mtu=auto actual-mtu=1500 l2mtu=1584 arp=enabled arp-timeout=auto mac-address=DC:2C:6E:BA:22:9C protocol-mode=rstp fast-forward=yes igmp-snooping=no auto-mac=yes ageing-time=5m priority=0xFFFF max-message-age=20s forward-delay=15s 
     transmit-hold-count=6 vlan-filtering=yes ether-type=0x8100 pvid=1 frame-types=admit-all ingress-filtering=no dhcp-snooping=no
     
/interface bonding
add mode=802.3ad name=Po1 slaves=ether23,ether24

CRS #2 Interface export

 /interface bridge print
Flags: X - disabled, R - running 
 0 R ;;; defconf
     name="bridge" mtu=auto actual-mtu=1500 l2mtu=1592 arp=enabled arp-timeout=auto mac-address=48:A9:8A:21:8A:1A protocol-mode=rstp fast-forward=yes igmp-snooping=no auto-mac=no admin-mac=48:A9:8A:21:8A:1A ageing-time=5m priority=0xFFFF 
     max-message-age=20s forward-delay=15s transmit-hold-count=6 vlan-filtering=yes ether-type=0x8100 pvid=1 frame-types=admit-all ingress-filtering=no dhcp-snooping=no 

/interface bonding
add mode=802.3ad name=Po1 slaves=ether23,ether24

Why is the CRS priority set to 0xFFFF? The standard requires the lower 12 bits to be zero, e.g. 0xF000 to be the lowest priority.