Рис. 13.2. Пример сети, иллюстрирующей работу STP
В этом примере сеть построена на восьми коммутаторах, которые имеют идентификаторы
со значениями от 111 до 888. В стандарте в качестве идентификатора коммутатора ис
пользуется его МАС-адрес, к которому добавляются два старших байта, конфигурируемые
вручную, — администратор может использовать их для вмешательства в выбор корневого
коммутатора. Для удобства записи на рисунке указаны сокращенные до трех разрядов
380
Глава 13. Отказоустойчивость и виртуализация локальных сетей
значения МAC-адресов коммутаторов. Все коммутаторы соединены друг с другом двух
точечными связями, которые образуют сегменты
A -N .
Порты 3 и 4 коммутаторов с 555 по
888 соединены с конечными узлами сети, то есть компьютерами (на рисунке не показаны).
Все связи в сети — это связи со скоростью 100 М бит/с (Fast Ethernet).
Алгоритм STA определяет активную конфигурацию сети за три этапа.
1.
Определение корневого коммутатора
,
от которого строится дерево.
В качестве корневого коммутатора выбирается коммутатор с
наименьшим значением
идентификатора.
В исходном состоянии каждый коммутатор считает себя корневым,
поэтому он генерирует и передает своим соседям сообщения Hello, в которых помещает
свой идентификатор в качестве идентификатора корневого коммутатора. Как только
коммутатор получает от соседа сообщение Hello, в котором содержится идентификатор
корневого коммутатора, меньший его собственного, он перестает считать себя корневым
коммутатором и генерировать свои сообщения Hello, но начинает ретранслировать со
общения Hello, получаемые от соседей.
В нашем примере мы предполагаем, что администратор не стал менять старшие байты
коммутаторов, так что у всех коммутаторов они остались равными значению 32 768
(значение, предлагаемое по умолчанию), и корневым коммутатором стал коммутатор
с идентификатором 111.
2.
Выбор корневого порта для каждого коммутатора.
Корневым портом коммутатора является тот порт, расстояние от которого до корневого
коммутатора является минимальным. Сам корневой коммутатор корневых портов не
имеет.
Для определения корневого порта каждый коммутатор использует пакеты Hello,
ретранслируемые ему другими коммутаторами. На основании этих пакетов каждый
коммутатор определяет минимальные расстояния от всех своих портов до корневого
коммутатора и выбирает порт с наименьшим значением в качестве корневого. При ра
венстве расстояний выбирается порт с наименьшим значением идентификатора порта
(это порядковый номер порта в коммутаторе).
Например, у коммутатора 222 порты 1 и 2 находятся на одинаковом расстоянии до
корневого коммутатора 111 — оба эти порта непосредственно связаны через сегменты
А
и
В
с коммутатором 111, а значит, получают пакеты Hello с метрикой, равной 0. Так
как идентификатор порта 1 меньше идентификатора порта 2, то корневым портом
коммутатора 222 выбирается порт 1.
По аналогичной причине корневым портом коммутатора 555 становится порт 1, а не
порт 2. Оба эти порта получают сообщения Hello, генерируемые корневым коммутато
ром 111, с наименьшим значением метрики 200 000. Порт 1 получает такие сообщения
по маршруту: порт 1 коммутатора 111 — сегмент
С
— порт 1 коммутатора 333 — порт 6
коммутатора 333 — сегмент G; соответственно порт 2 получает их по маршруту: порт 3
коммутатора 111 — сегмент
Е —
порт 1 коммутатора 444 — порт 6 коммутатора 444 —
сегмент
I.
3.
Выбор назначенных коммутаторов и портов для каждого сегмента сети.
Назначенным является тот коммутатор (из числа коммутаторов, непосредственно под
ключенных к данному сегменту), у которого расстояние до корневого моста является
минимальным (точнее, расстояние от корневого порта этого коммутатора до корневого
Алгоритм покрывающего дерева
381
коммутатора). Назначенные порты для сегментов исполняют ту же роль, что корневые
порты для коммутаторов, — они находятся на кратчайшем пути до корневого комму
татора.
Как и при выборе корневого порта, здесь используется распределенная процедура. Каж
дый коммутатор сегмента прежде всего исключает из рассмотрения свой корневой порт
(для сегмента, к которому он подключен, всегда существует другой коммутатор, распо
ложенный ближе к корню). Для каждого из оставшихся портов выполняется сравнение
принятых по ним минимальных расстояний до корня (еще до наращивания на метрику
сегмента) с расстоянием до корня корневого порта данного коммутатора. Если все при
нятые на этом порту расстояния оказываются больше, чем расстояние от собственного
корневого порта, значит, для сегмента, к которому подключен порт, кратчайший путь
к корневому коммутатору проходит через него и он становится назначенным. Комму
татор делает все свои порты, для которых такое условие выполняется, назначенными.
Когда имеется несколько портов с одинаковым кратчайшим расстоянием до корневого
коммутатора, выбирается порт с наименьшим идентификатором.
В рассматриваемом примере коммутатор 111 при проверке порта 1 обнаруживает, что
через этот порт принимаются пакеты с минимальным расстоянием 200 ООО (это пакеты
от порта
1
коммутатора
2 2 2
, который ретранслирует через все свои порты сообщения
Hello, полученные от коммутатора 111, но с измененной метрикой, в частности передает
их и коммутатору 111). Так как коммутатор 111 является корневым, то его расстояние
до корневого коммутатора равно нулю, то есть меньше, чем у получаемых через порт
1
сообщений. Поэтому коммутатор 1 объявляет свой порт 1 назначенным для сегмента Л.
Коммутатор 222 не может объявить свой порт 1 назначенным для сегмента
А
, так как
через него он получает сообщения с минимальной метрикой
0
, а у его корневого порта
метрика равна
2 0 0
0 0 0
.
На выполнение всех трех этапов коммутаторам сети отводится по умолчанию 15 секунд.
Эта стадия работы портов называется стадией прослушивания (listening), поскольку порты
слушают только сообщения BPDU и не передают пользовательских кадров. Считается, что
порты находятся в заблокированном состоянии, которое относится только к пользователь
ским кадрам, в то время как кадры BPDU обрабатываются. Предполагается, что в стадии
прослушивания каждый коммутатор получает столько пакетов Hello, сколько требуется
для определения состояния своих портов.
Все остальные порты, кроме корневых и назначенных, каждым коммутатором блокиру
ются и не могут передавать пользовательские кадры. Математически доказано, что при
таком выборе активных портов из сети исключаются петли, а оставшиеся связи образуют
покрывающее дерево
(если оно вообще может быть построено при существующих связях
в сети).
Результат работы протокола STP для нашего примера показан на рис. 13.3.
На рисунке корневые порты коммутаторов отмечены символом
R
, назначенные порты за
крашены, а заблокированные зачеркнуты.
После построения покрывающего дерева коммутатор начинает принимать (но не продви
гать) пакеты данных и на основе их адресов источника строить таблицу продвижения. Это
обычный режим обучения прозрачного моста, который ранее нельзя было активизировать,
так как порт не был уверен в том, что он останется корневым или назначенным и будет
передавать пакеты данных.
Do'stlaringiz bilan baham: |