Суть - простая.
Стп всегда шлёт бпду. В бпду содержится бридж-идентификатор корня.
При подключении коммутатора к коммутатору оба коммутатора шлют друг другу этим самые бпду, подставляя свои бридж-ид. Выигрывает наименьший бридж-ид(бывают случаи, когда он одинаковый, тогда ещё сравниваем маки). После этого выигравший становится рутом, и теперь только он шлёт бпду, а остальные - пересылают, добавляя в бпду стоимость пути до рут бриджа. Таким образом, каждое бпду пересылается далее с добавлением стоимости пути.
В конце кольца коммутатор также проводит выборы. Он отсылает свои бпду, но выборы проигрывает так как с двух портов ему прилетают бпду с меньшим бридж-ид. И тут срабатывает суть стп. Стп не позволяет иметь на одном бридже более одного порта, с которого приходит бпду, поэтому активным останется тот, у которого стоимость пути до корневого бриджа меньше. При условии получения одинакового бпду с одинаковой стоимостью на разных портах, в расчет идёт идентификатор моста переправившего свитча - меньше - лучше. Если и это один и тот же бридж - тогда смотрится значение порт приорити, и напоследок - номер порта.
После этого один рут станет активным, а второй будет заблокирован.