Hello *,
today I would like to provide and share some information, findings and "heuristics" about working STP settings for my Sonos installation that's cabled for all (20) but one player device (PLAY:5) and two SonosNet wireless extenders (CONNECT) with structured CAT 7 home network cabeling infrastructure.
The Sonos spanning tree is absolutely stable with no STP TCN messages / no topology changes.
Each cabled player is connected to a Cisco SG300-52 managed switch that plays the role of the Root Bridge for the Sonos network. Even while the following params are derived from the SG300-52 settings, they may be adapted to switch hardware of other vendors, too.
My Sonos network works fine without any drop outs, network broadcast storms or configuration issues including a zoo of heterogenous controllers by utilizing the following settings:
Global Settings
Spanning Tree State: Enable
STP Operation State: Classic STP
BPDU Handling: Flooding
Path Cost Default Values: Short
Bridge Settings
Priority: 4096
Hello Time: 2
Max Age: 20
Forward Delay: 15
STP Interface Settings
For each network port with a Sonos player being connected with its 100 Mbit/s port type *or* any other device with a 100 Mbit/s port type connection, the following settings apply:
STP: Enable
Edge Port: Auto
Root Guard: Disable
BPDU Guard: Disable
BPDU Handling: Use Global Settings
Path Cost: User Defined 10
Priority: 128
All other network devices that don't participate in the Sonos player spanning tree *and* are not connected by a 100 Mbit/s port type may be set up like this:
STP: Enable
Edge Port: Auto
Root Guard: Disable
BPDU Guard: Disable
BPDU Handling: Use Global Settings
Path Cost: Use Default
Priority: 128
It's important that the path costs do match for *all* ports with the same network speed for both Sonos players and non Sonos devices that are connected to the managed switches / routers. As the initial IEEE 802.1D-1990 standard maps switch port interface speed to STP path costs with 10 Mbit/s to 100, port speed of 100 Mbit/s to 10 and port speed of 1 Gbit/s to 5, every managed switch port may be "tweaked" manually instead of defining "Use Default" cost settings to map these STP path costs to the corresponding switch port speed respecting the connection speed of every single linked network device.
If you apply the custom STP path cost settings as suggested above, you'll get the following modified path cost table that is based on the default mappings as chosen above with "Use Default" of IEEE 802.1D-1998 that has superseeded the IEEE 802.1D-1990 standard:
4 Mbit/s - 250
10 Mbit/s - 100
16 Mbit/s - 62
100 Mbit/s - 10 - instead of 19 (modified for Sonos STP)
1 Gbit/s - 4
2 Gbit/s - 3
10 Gbit/s - 2
Sonos utilizes the initial IEEE 802.1D-1990 standard as "Classic STP" but unfortunately most managed switches / routers today only do support the IEEE 802.1D-1998 standard as "Classic STP". This is the main reason why the IEEE 802.1D-1998 path cost tables have to be modified to match the older and superseeded IEEE 802.1D-1990 standard where both do only support 16 bit values for path costs.
Just as an observation as I'm not a network engineer in any kind it seems to me that both "STP: Enable" or "STP: Disable" *do* work for all non Sonos ports.
As I can remember of an important warning I've read in a recent technote Cisco doesn't suggest to disable the STP option on single switch ports because "non network experienced people" will probably get into trouble with various flavours of possible and very difficult to diagnose loop and broadcast storm issues quickly!
In another thread "ratty" mentioned to set "STP: Disable" and "Edge Port: Enable" to activate "Fast Forward" for all non Sonos ports but in my personal opinion this doesn't alyways work if there are network devices connected to the switch(es) with more than one physical cabeling connection utilizing port bundling or link aggregation - e.g. a NAS or additional switches are connected via LAG - or if you've set up a switch hierarchy. So at least be careful to set everything outside the Sonos spanning tree to edge ports - e.g. "Edge Port: Enable" that will enable "Fast Forward" on all other network ports.
Also IGMP snooping works fine and has to be enabled with Multicast filtering enabled, too, to lower the overall network load:
Multicast Settings
Bridge Multicast Filtering Status: Enable
VLAN ID: your ID - e.g. 1
Forwarding method for IPv4/v6: MAC Group Address
IGMP Snooping Status: Enable
Make sure that your router provides support for Multicast traffic pass through and has implemented an IGMP querier - e.g. IGMP v2 compatible. You don't have to elect an available IGMP querier by yourself. This will be done by the Multicast handling network devices (router, switches) automatically.
Concerning the Cisco SG300-52 switch hardware it's absolutely essential that you disable (and apply) the "Spanning Tree State" after you've done changes to the "STP Interface Settings" and enable (and apply) "Spanning Tree State" again, or the spanning tree won't be rebuilt and run correctly. Because of this issue I've wasted hours of hassle time to ask myself and the cisco community, why my STP settings didn't work.
Hope that helps starting to get up and running a cabled and error-free playing Sonos network.
Best regards from Germany
Matthias