Sonos and the Spanning Tree Protocol

  • 10 June 2010
  • 60 replies
  • 131611 views

I wanted to post a few clarifications regarding SONOS and Spanning Tree Protocol that have been raised in this thread.

SONOS ZonePlayers use 802.1D Spanning Tree (STP) for loop prevention between wired ZonePlayers and the wireless SonosNet Mesh Network. The Spanning Tree running on ZonePlayers is compliant with IEEE 802.1D and can inter-operate with other IEEE 802.1D and IEEE 802.1w compliant devices. Note: IEEE 802.1w is an updated version of the Spanning Tree protocol called Rapid Spanning Tree. The two types of STP protocols are compatible and 802.1w should revert to inter-operate with 802.1D devices (such as Sonos). Therefore, 802.1w Ethernet switches will work with Sonos ZonePlayers.

SONOS ZonePlayers CAN be connected to Ethernet switches that do NOT support Spanning Tree as long as the Ethernet switches do not interfere with the STP BPDU packets transmitted between ZonePlayers. This is typically never the case and these switches pass the BPDU packets like any other packet.

If the Ethernet switches that Sonos ZonePlayers are wired to DOES support Spanning Tree, the Spanning Tree on those switches must be configured properly. Ethernet switches that support Spanning Tree typically have their STP settings disabled. This also typically means that these switches will block/discard the BPDUs coming from the ZonePlayers. When the ZonePlayers are not able to see BPDUs, they cannot detect there is a shared transmission medium between the Zones and this will typically result in loops in the network. The solution to allow the use of these switches with Sonos is to enable and configure the Spanning Tree on the Ethernet switches. The configuration settings on each switch are different and the appropriate documentation for those products should be consulted. Note: Some switches have a setting that is called Pass BPDUs or equivalent. This setting when present allows the BPDUs between the ZonePlayers to pass freely through the switch without actually enabling STP on the the switch. Typically, setting this function also works, but again please review the switches product documentation.

A good guideline for Ethernet switches is if the switch says it supports Spanning Tree, either 802.1D or 802.1w, then its configuration settings and user documentation should be examined before wiring multiple ZonePlayers to the switch. If the switch does not state it supports Spanning Tree, 802.1D, or 802.1w, it will probably work fine with Sonos.

SONOS ZonePlayers do NOT require a connection to the same Ethernet switch. Different ZonePlayers can be connected to different Ethernet switches which are in turn connected to each other. The only requirement is that Sonos ZonePlayers must be able to actively participate in 802.1D Spanning Tree and not have BPDU transmission blocked between them. There is no Sonos limitation that prevents wiring multiple ZonePlayers to multiple Ethernet switches.

IEEE 802.1D has a recommended bridge span limitation of 7 bridges. This means that the total number of connected bridges from one end of the network to the other should not exceed 7 bridges. This typically only comes into play when daisy chaining Sonos ZonePlayers together by wiring one ZonePlayer to the next. In this case, the guidelines is when daisy chaining ZonePlayers, do not exceed 7 ZonePlayers wired together. If wiring multiple ZonePlayer to a single Ethernet switch, typically the number of spans will only be 3 or 4 (I.e. much less than 7). Except in the daisy-chain configuration, this limit of 7 bridges/7 ZonePlayers, is rarely ever hit.

A number of comments have used the term router and switch interchangeably in regards to this topic. Sonos ZonePlayers in the same HouseHold MUST be connected to the same routed network. A Spanning Tree cannot span two or more routed networks. In addition all Sonos ZonePlayers and Controllers must be on the same routed IP network in order to properly communicate and function. Typically, two or more routed networks are not seen in the household environment except by accident (Example. A carrier provides a new router in a network that already had a router and the original router was not removed).

Hopefully this information has clarified a number of items and not added additional confusion.

Regards, Todd

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.

60 replies

Userlevel 2
Badge
Hi Ratty. Sorry for delayed reply, I didn't receive email notifications of replies.

Anyway, yes it's a ZP120 but I swapped this around for a Connect:Amp and after support altered the STP settings the unit dropped off the network. Only this one dropped off, no others. So both a ZP120 and a Connect:Amp dropped off in the same location so likely interference but baffling as to why the Beam, which is only around 10ft away has no problems. Must be very localised but I can't think of what it would be. The affected unit is under a kitchen unit behind the wooden plinth. Nothing else there and this has been it's location for nearly 10 years. Very odd.

Support certainly caused me huge headaches by fiddling with the switch settings. They were convinced it was related to STP.
The GS748TP settings look okay. Intermittent dropping of a single unit off the network is not usually a symptom of STP configuration. Interference sounds like a more likely candidate. Even possibly hardware issues if it's an old unit. At 10 years old a 'Connect:Amp' is surely an early ZP120, or is it actually a ZP100?
Userlevel 2
Badge
Sorry to drag this up again but I'm pulling what little hair I have left out!!:@

I've just spent over 2 hours on the phone with support and got nowhere. In fact they changed some settings and the system was worse. Here's a summary of the issues and setup.

I have a Netgear GS748TP switch which is the main switch in the house. I have two additional unmanaged switches in two outbuildings hardwired back to the main switch. I have seven SONOS players and a Boost. One SONOS is in one outbuilding and a second in a separate outbuilding. One is hard wired (via unmanaged switch in outbuilding back to main switch in house), the other uses SONOSNet off the other - it has to as it can't connect to any players in the main house. The rest of the players are in the main house. Two on the ground floor with a Boost. They are separated by around 15ft between each player and the Boost. Another player is on the first floor and the final two are on the second floor next to each other. Within the main house, the Boost is hardwired via ethernet back to the GS748TP. Likewise one of the players on the second floor is hard wired to the GS748TP.

The problem is one of the players on the ground floor (Connect:Amp) is dropping off the network. Only a recent problem as the system has been running for nearly 10 years without problems. No changes have been made to the network except adding a Beam and another Connect:Amp recently. I've also been experiencing network problems with slow access. I was advised to swap the problem unit for another and see how that went. I did this and all seemed well but support advised there was still considerable interference in the system. At this stage the swapped unit had been running for several days with no dropouts. Support then changed various settings on the switch which caused the swapped player to dropout again! I've changed things back and the player came back on the network. However I'm not sure where my settings on the GS748TP should be. I've attached a few screenshots. Can anyone help to solve this??
Userlevel 7
Badge +21
A lot of fancy stuff could be done but doing it may mean doing other stuff that more people will want to use has to be left out. Remember that Sonos devices have limited storage and memory (older one even more limited) so you can't have everything and have to prioritize.
@Michael Bender

What problem are you trying to solve? An unstable topology? Although I've seen a few occasions where a central node is hit by a TCN flood they're rare.

SonosNet/STP typically gets things right. It already triggers the blocking of nonviable wireless tunnels, by assigning an artificially high path cost.

Also, don't overlook the fact that the spanning tree is not the only active topology. Direct Routing is used to interconnect grouped/bonded nodes, effectively short-cutting between tree branches.
Userlevel 2
Badge
I don't know if just specifying the interface alone would be sufficient, when using wireless each Sonos device has to pick which peer to connect to in the mesh. It might also be a pain when you go from wired to wireless operation of a speaker when you want sound in a temporary location, I do that often with one of my Play 1s.

I see this advanced mode to be able to specify parameters like mesh peers, and not to make moving a player from wired to wireless ad.hoc. (if one wants to do that, they wouldn't use this mode). While I can only speak for myself, my Sonos players never move once I install them. Of course I've put a player or set of speakers connected to a player in almost every room of the house (including bathrooms and in the backyard) so I never have to move hardware around.
Userlevel 7
Badge +21
I don't know if just specifying the interface alone would be sufficient, when using wireless each Sonos device has to pick which peer to connect to in the mesh. It might also be a pain when you go from wired to wireless operation of a speaker when you want sound in a temporary location, I do that often with one of my Play 1s.
Userlevel 2
Badge
One really great feature that Sonos could add to the product is an advanced mode where the installer/user can specify which network interface each player is going to use, and that setting would override any automatic interface algorithm and would override any route based on path cost, and also disable any STP negotiation. Sometimes the "smart" part of the product may not be as "smart" as you'd like it to be, and the human knows better.
Userlevel 4
Badge +1
I had serious instability problems using a TP-Link switch ( TL-SL3428). What seem to have brought some stability is to increase the Max Learned MAC for the port(s) that have a wired LAN connection to the switch. In the switch web page go to 'switching' -> Port, Port Security tab and increase the max count. I found error messages in the log file indicating that the max no of mac entries was reached in the table for the port connected to the sonos.
If you have a wireless node ( I have a apple time capsule that I use the wireless node from) , increase the max for the port connected to that too.

I wish Sonos would spend a bit more time in qualifying a few major network switch vendors with their STP function and summarise STP config info in a decent white paper.
Userlevel 4
A bad connection could account for the unstable topology. The wired CONNECT should never use anything but the switch as its root path. I would run continuous ping tests to PLAYBAR and CONNECT, and look for packet loss and/or excessive times.


The wiring and switch are fast and stable. Ping floods, large file transfers, streaming 4K video, all no problem. Zero packetloss and low latency even on a long-running ping -f -s 1500.

This workaround is fine, just unsupported.
I am suspicious of Sonos's layer 2 behaviours, but I don't have the time to debug their STP interactions.
At these times I see (via /status/dmesg) the Connect flips between blocking and forwarding on ath0 (its wireless interface) whilst the playbar reports TCNs on both ath0 and eth0.
A bad connection could account for the unstable topology. The wired CONNECT should never use anything but the switch as its root path. I would run continuous ping tests to PLAYBAR and CONNECT, and look for packet loss and/or excessive times.
Userlevel 4
I have a Playbar (with sub & surrounds) and a Connect. Attaching the Playbar and the Connect to a Linksys GS308 (unmanaged) switch results in STP flapping, leading to audio stutter every couple of minutes. At these times I see (via /status/dmesg) the Connect flips between blocking and forwarding on ath0 (its wireless interface) whilst the playbar reports TCNs on both ath0 and eth0.

So the switch is not blocking STP BPDUs. And they show up in tcpdump off another port - in particular I can see both the Playbar and the Connect taking turns to spit topology change notifications at each other. It's not a pretty sight.

Disabling wireless on the Connect solves the problem, eliminates stutter, and leaves the Playbar as the root bridge.
Great news It has solved my problem.
The Matrix was very help full and I was lucky that the 2 players connected on the sonosnet wifi are close.
The Matrix is all green !!!

Love from PARIS to all of you !
Userlevel 7
Badge +21
ok I get it
so on my 5 devices
3 will be only ethernet
1 will be ethernet and wireless
1 will be wireless only
Is that correct ?

This is correct.

And I fixed it because your Sonos players are not connecting to your ORANGE WiFi. They are connecting to each other directly.
ok but if I want to let the wifi on only one I need to do it on the one not ethernet connected

The confusion here is using the term "WiFi" when it really should be "wireless"... SonosNet wireless is not WiFi.

Your Play:1 is not connected to your ORANGE WiFi. It's connected to one of your wired Sonos players. If you disable wireless on all of your wired zones, then the Play:1 is out there on its own. Because you have Sonos zones that are wired to your network, the one wireless zone cannot connect to your ORANGE WiFi network. It will need to connect to another Sonos player. This is why you leave one wired Sonos player with its wireless connection enabled.

gotcha !
so it is not possibile to have only one Sonos player with no ethernet connexion available?
Userlevel 7
Badge +21
ok but if I want to let the wifi on only one I need to do it on the one not ethernet connected

The confusion here is using the term "WiFi" when it really should be "wireless"... SonosNet wireless is not WiFi.

Your Play:1 is not connected to your ORANGE WiFi. It's connected to one of your wired Sonos players. If you disable wireless on all of your wired zones, then the Play:1 is out there on its own. Because you have Sonos zones that are wired to your network, the one wireless zone cannot connect to your ORANGE WiFi network. It will need to connect to another Sonos player. This is why you leave one wired Sonos player with its wireless connection enabled.
ok I get it
so on my 5 devices
3 will be only ethernet
1 will be ethernet and wifi
1 will be wifi only
Is that correct ?
Userlevel 3
Badge
ok but if I want to let the wifi on only one I need to do it on the one not ethernet connected
No, you need ONE Sonos device with both Ethernet and WiFi enabled. The WiFi-only device, of course, needs WiFi enabled. All the other Ethernet-connected devices need WiFi disabled.
Userlevel 3
Badge +1
I have just commissioned a Ubiquiti UniFi UC-CK Hybrid Cloud Key Controller and the first of several UAP-AC-PRO wireless access points. Very impressed, love the Controller software's visibility into my WLAN status, and would aspire to migrate towards a 100% Ubiquiti network solution. That means adding a Gateway (USG or USG-PRO-4) and a Switch. In my case, a US-24-250W model would be good enough. Its PoE+ would provide power for the UAPs, the Cloud Key Controller, and a possible future IP camera. Fans are apparently quite noisy, what say you metamatt?

But like metamatt, I realise that my extensive Sonos (8 zones now, with another unboxed PLAY:1 to add later) is likely to encounter STP issues. For now I have a new Cisco RV325 Router and an SG110-16HP Switch to wire in. Don't anticipate any STP issues arising, as all the wired Sonos ZPs and SUBs will be on the Router's integral "dumb" switch ports. Sonso Support say this will be fine. However I will be monitoring this thread with interest to see if a UniFi workaround emerges!

Might ask Ubiquiti Support exactly what the CLI tweak does. If it simply turns off active STP and enables BPDU flooding instead, I am advised by my friend that this should be OK. The tweak means getting into the switch using ssh, or Secure Socket Shell, a Unix-based command line technique. Not for the faint-hearted I suspect!
ok but if I want to let the wifi on only one I need to do it on the one not ethernet connected
Userlevel 3
Badge
No, you misunderstood my original response then. You disable WiFi on all but one of the wired nodes. Use the network matrix in :1400/support/review to determine which wired node has the strongest wireless signal to the one wireless node Leave WiFi enabled on that device and disable it on all the other wired devices.
I have described my zones in a post above to Mike V.
I have 5 zones :
4 on ethernet
1 on wifi with no possibility to put it on ethernet.
If I disable the wifi on the 4 players connected to ethernet the last one will not be able to get the home wifi ?
Userlevel 3
Badge
Sonos does not support Ethernet and personal WiFi at the same time. E.g., if you have two Sonos devices, and configured Sonos to connect to your home WiFi, and then connect one of them to Ethernet, Sonos will NOT use your personal WiFi. It will turn the device you connected to Ethernet into a SonosNet Bridge and then the other wireless device will attempt to connect to that instead of your personal WiFi. So then the connectivity problems with the wireless node become an issue of how far/what is the signal quality between it and your wired Sonos device? In this case, if you can't get Ethernet to the wireless zone, then you might be better off disconnecting Ethernet from the wired zone and letting them both use your personal WiFi instead of SonosNet, since it sounds like you only have two Sonos devices so WiFi bandwidth shouldn't be an issue.

Or am I still miss-understanding your zone configuration?
Until Sonos brings their STP up to modern standards, the only thing you can really do is disable wireless on nodes connected via Ethernet. Use the network monitor to determine which of your wired nodes has the best wireless coverage to your wireless Sonos devices, and leave wireless enabled on that one device. If it ever has problems, you'll lose all your wireless Sonos devices, but you will know where to look to trouble-shoot.

(This is the approach I have had to take, since Sonos's STP doesn't play nice with the modern STP on my Cisco switches. Only my Playbar has wireless enabled to feed a Play3 that I cannot easily hardwire. The rest of my Sonos devices are connected via Ethernet and have had wireless disabled to get them to work properly.) Disabling wireless also saves a couple watts of power when the unit is 'standby' mode.

Info on disabling wireless here: https://bsteiner.info/articles/disabling-sonos-wifi


Thks but I have only 1 zone with no ethernet so can I let only this Player with wifi and the others disabled ? Would I still be able to manage all the players with the IPAD ?
I am pretty sure that my only player connected to the wifi is connected direclty to the router it is quite close enough
What do you think ?
Userlevel 3
Badge
Until Sonos brings their STP up to modern standards, the only thing you can really do is disable wireless on nodes connected via Ethernet. Use the network monitor to determine which of your wired nodes has the best wireless coverage to your wireless Sonos devices, and leave wireless enabled on that one device. If it ever has problems, you'll lose all your wireless Sonos devices, but you will know where to look to trouble-shoot.

(This is the approach I have had to take, since Sonos's STP doesn't play nice with the modern STP on my Cisco switches. Only my Playbar has wireless enabled to feed a Play3 that I cannot easily hardwire. The rest of my Sonos devices are connected via Ethernet and have had wireless disabled to get them to work properly.) Disabling wireless also saves a couple watts of power when the unit is 'standby' mode.

Info on disabling wireless here: https://bsteiner.info/articles/disabling-sonos-wifi