Я много читал о STP. Возможно, еще недостаточно, но становится трудно получить детали.
Я понял механизм, как все мосты выбирают свой корневой порт.После обмена достаточным количеством BPDU, содержащих информацию о потенциальных корневых мостах, информация о реальном корневом мосте просачивается через сеть, предоставляя каждому мосту информацию о стоимости пути к корневому мосту. Затем каждый мост установит свой корневой порт на порт с наименьшей стоимостью пути.
Но это само по себе ничего не делает, чтобы предотвратить петлю.
Из всех других своих портов мост должен установить некоторые из назначенных, а некоторые — не назначенные роли. Последние останутся заблокированными, а назначенные в конечном итоге перейдут в режим переадресации.
Я не понимаю, как делается различие между назначенными и не назначенными портами. На мой взгляд, должна быть какая-то информация о другом направлении.
Предположим, что мост A находится довольно далеко от корневого моста, а мост B равноправен мосту A. В какой-то момент мост A должен сообщить мосту B: «Эй, мой корневой порт теперь указывает на вас, так что вы должны сделать противоположный порт твой назначенный».
Но я не нашел никакой ссылки, и, насколько я вижу, в BPDU нет информации по этому вопросу. Однако должен быть механизм, но я пока его не вижу.
Редактировать
Чтобы сделать это более кратким: в сегменте сети может быть много портов многих подключенных мостов. На мост, подключенный к этому сегменту, может приходиться 0 или 1 корневой порт. И как только к этому сегменту подключен один-единственный корневой порт, ровно один порт другого моста должен быть превращен в назначенный порт. Я это прекрасно понимал, однако чувствовал, что должен написать яснее.
Мой вопрос по-прежнему: как определяется, какой порт в этом сегменте будет превращен в назначенный порт? Какая часть алгоритма STP принимает это решение и как?
Редактировать
Я добавил образец изображения, чтобы сделать проблему еще раз заметной.
Допустим, есть сегмент, в котором два коммутатора A и G в верхней половине имеют минимальную стоимость пути для каждого из портов, направленных вверх.Следовательно, их интерфейсы с проверяемым сегментом могут быть только назначенными или не назначенными. У нас есть один или несколько других коммутаторов ниже, у которых есть порт в сети, выбранный ими в качестве корневого порта.
Я понял, что коммутаторы ниже, включая B, отправляют BPDU, которые ясно показывают, что к сегменту подключен как минимум один корневой порт. Это ясно показывает, что для обеспечения связи корневых портов B и других требуется ровно один назначенный порт. Однако, поскольку BPDU являются многоадресными, такого понятия, как «партнер по каналу», не существует.
Как A и G узнают, какой из них должен сделать свой порт назначенным или не назначенным?