Question

Sonos, Cisco, STP, MST, and Spanning Trees

  • 2 May 2017
  • 6 replies
  • 4226 views

Hi all,

I'm wrestling with an STP issue on some Cisco switches and I'm hoping for some advice. I have two cascaded switches, and I've configured STP (actually, MST, since that seems to work with the Sonos devices). When I only have players wired to the core switch, things work as expected. However, when I connect a player to the cascaded switch, that player completely loses its connection to the network. I cannot ping it.

In both cases, STP looks fine. I can also see the MAC address of the player on the correct port on the cascaded switch. Does anyone have any ideas?

Detailed config:

-----------------------
--- Main switch ---
! Relevant parts of config:
spanning-tree mode mst
spanning-tree etherchannel guard misconfig
spanning-tree extend system-id
!
spanning-tree mst configuration
name michael-sf
!
spanning-tree mst 0 priority 4096
spanning-tree mst 1-4094 priority 24576
spanning-tree vlan 1-4094 priority 4096

! ports for players
interface GigabitEthernet0/11
description ATTN--Port configured for Sonos!!! See spanning-tree settings
switchport access vlan 5
spanning-tree bpdufilter disable
spanning-tree bpduguard disable
spanning-tree guard none
spanning-tree cost 10
!
interface GigabitEthernet0/12
description ATTN--Port configured for Sonos!!! See spanning-tree settings
switchport access vlan 5
spanning-tree bpdufilter disable
spanning-tree bpduguard disable
spanning-tree guard none
spanning-tree cost 10
!
! port for cascaded switch
interface GigabitEthernet0/21
switchport trunk encapsulation dot1q
switchport trunk native vlan 15
switchport mode trunk
spanning-tree bpdufilter disable
spanning-tree bpduguard disable
!

core-switch#show spanning-tree vlan 5

MST0
Spanning tree enabled protocol mstp
Root ID Priority 4096
Address e05f.b916.3880
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 4096 (priority 4096 sys-id-ext 0)
Address e05f.b916.3880
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/1 Desg FWD 20000 128.1 P2p Edge
Gi0/2 Desg FWD 20000 128.2 P2p Edge
Gi0/3 Desg FWD 200000 128.3 P2p Edge
Gi0/4 Desg FWD 20000 128.4 P2p Edge
Gi0/5 Desg FWD 20000 128.5 P2p Edge
Gi0/8 Desg FWD 20000 128.8 P2p Edge
Gi0/10 Desg FWD 20000 128.10 P2p Edge
Gi0/11 Desg FWD 10 128.11 P2p Bound(STP)
Gi0/12 Desg FWD 10 128.12 P2p Bound(STP)
Gi0/13 Desg FWD 200000 128.13 P2p Edge
Gi0/15 Desg FWD 200000 128.15 P2p Edge
Gi0/16 Desg FWD 20000 128.16 P2p Edge
Gi0/17 Desg FWD 20000 128.17 P2p Edge
Gi0/21 Desg FWD 20000 128.21 P2p
Gi0/23 Desg FWD 20000 128.23 P2p
Gi0/24 Desg FWD 20000 128.24 P2p
Gi0/26 Desg FWD 20000 128.26 P2p


------------------------------
--- Cascaded switch ---
! relevant parts of config
!
spanning-tree mode mst
spanning-tree extend system-id
!
spanning-tree mst configuration
name michael-sf
!
spanning-tree mst 0 priority 8192

! Port for Sonos player
interface GigabitEthernet0/8
description ATTN--Port configured for Sonos!!! See spanning-tree settings
switchport access vlan 5
spanning-tree bpdufilter disable
spanning-tree bpduguard disable
spanning-tree link-type point-to-point
spanning-tree cost 10
!
! Port to core switch
interface GigabitEthernet0/9
switchport trunk native vlan 15
no keepalive
spanning-tree bpdufilter disable
spanning-tree bpduguard disable
spanning-tree link-type point-to-point
spanning-tree vlan 5 cost 10
spanning-tree cost 10
ip dhcp snooping trust
!

cascaded-switch#sho spanning-tree vlan 5

MST0
Spanning tree enabled protocol mstp
Root ID Priority 4096
Address e05f.b916.3880
Cost 0
Port 9 (GigabitEthernet0/9)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 8192 (priority 8192 sys-id-ext 0)
Address 006c.bc96.0900
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/8 Desg FWD 10 128.8 P2p Bound(STP)
Gi0/9 Root FWD 10 128.9 P2p

This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

6 replies

Userlevel 7
Badge +21
Having the cost of 20000 on the link to the cascaded switch is likely putting the cost value to the players on the second switch too high. Cost is an additive value, so a link from one Sonos player on the core switch to a Sonos player on the cascaded switch will have a cost of 20020 (2 x 10, 1 x 20000). If the Sonos devices are even remotely within wireless range of each other, they would likely be trying to use the SonosNet wireless connection instead of the wired connection, because of the cost value on the switch-to-switch link being so high.

Hence the need to use Classic STP with short path cost values on the switches... so that all devices will be using cost values in the same range.

! port for cascaded switch
interface GigabitEthernet0/21
...
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
...
Gi0/21 Desg FWD 20000 128.21 P2p
Thanks for the eagle eye, MikeV. I set the path cost to 10, but the behavior is still the same.
Gi0/21 Desg FWD 10 128.21 P2p

The strange this is that is just completely falls off the network. Also, if it is acting as a proxy for other nodes, it takes them with it. Does it have any kind of troubleshooting tools to inspect its state? I suppose I can set up a span on that port and sniff the traffic, but that won't give me any insight into the internal state of the Sonos device.
Userlevel 7
Badge +21
Actually, for a gig link, the short path cost value would be 4 (I assume your switches are linked to each other at 1 Gbps)... 🙂

The most common short path cost values are...
1 Gbps = 4
100 Mbps = 10 (newer STP implementations may use 19; not much difference though)
10 Mbps = 100

Probably the best page to look at for Sonos troubleshooting info would be the general "Support Review" page... browse to http://x.x.x.x:1400/support/review (where x.x.x.x is the IP address of one of your Sonos players). It will retrieve the data for as many players as it can. Be patient while it loads, it collects a good amount of info from each player.

The resulting page will list the players... click one to reveal a whole bunch of info related to that player. The most relevant info for STP would be /usr/sbin/brctl showstp br0 which will show the Spanning Tree info for that device. Remember that the wireless side of Sonos is a mesh, so each player keeps track of all wireless devices within range so that if a change should occur, it can re-converge itself quickly. So you'll see info on the wireless links to each device, as well as the wired interface(s) available.
Userlevel 4
You can also watch http://x.x.x.x:1400/status/dmesg for spanning tree updates, just keep refreshing. Typical symptom is frequent topology changes as Sonos's questionable STP configuration spasms every timer, although YMMV.

I just turn disable the wireless on all fixed-wire Sonos units (google it) and save myself the headache. Sonos's STP instability & compatibility issues have been done to death on this forum already and Sonos are showing no signs of addressing them.
Here's the bizarre thing: even with the lower cost, the player just falls off the network when I enable the port. And I mean completely: it doesn't show up in the Network Matrix, so I have no way to see what it's doing. Maybe I can connect to the second ethernet port on the device and talk to it that way. I'm not sure if it retains its DHCP lease during a port transition, though.

I can disable the wireless on the device, but it's in the perfect position to provide coverage to some further speakers that aren't near a wired jack.

Yes, I agree that the STP implementation seems pretty poor, especially when I have the full power of a modern STP stack on the Cisco switches. That's the thing that's frustrating here: I have enterprise grade equipment and I can control many aspects of the network, but the Sonos device is just an opaque box. (Or, if I can find a way to see in the box, I have no way to configure it correctly.)
Userlevel 4
You can always run your own DHCP service for debug purposes.

Have you considered joining the more distant players to regular wifi instead of SonosNet? It's on my list of "things to try". Or - if your "further devices" are sub+rears for a Playbar in 5.1 mode - then note I've successfully left one (1) playbar with wireless still enabled, with fixed-wire connection to the main network and joining the surround speakers via sonosnet, whilst turning off for the wireless on every other player. Don't send the playbar any BPDUs 🙂