10.2. Инициализация топологии
Для автоматического определения начальной активной конфигурации дерева все мосты сети после их инициализации начинают периодически обмениваться специальными пакетами, называемыми протокольными блоками данных моста - BPDU (Bridge Protocol Data Unit).
Пакеты BPDU помещаются в поле данных кадров канального уровня, например, кадров Ethernet. Все мосты должны поддерживать общий групповой адрес, с помощью которого кадры, содержащие пакеты BPDU, передаются одновременно всем мостам сети.
Пакет BPDU имеет следующие поля:
- Идентификатор версии протокола STA - 2 байта. Мосты должны поддерживать одну и ту же версию протокола STA, иначе может установиться активная конфигурация с петлями.
- Тип BPDU - 1 байт. Существует два типа BPDU - конфигурационный BPDU, то есть заявка на возможность стать корневым мостом, на основании которой происходит определение активной конфигурации, и BPDU уведомления о реконфигурации, которое посылается мостом, обнаружившим событие, требующее проведение реконфигурации - отказ линии связи, отказ порта, изменение приоритетов моста или портов.
- Флаги - 1 байт. Один бит содержит флаг изменения конфигурации, второй бит - флаг подтверждения изменения конфигурации.
- Идентификатор корневого моста - 8 байтов.
- Расстояние до корня - 2 байта.
- Идентификатор моста - 8 байтов.
- Идентификатор порта - 2 байта.
- Время жизни сообщения - 2 байта. Измеряется в единицах по 0.5 с, служит для выявления устаревших сообщений. Когда пакет BPDU проходит через мост, тот добавляет ко времени жизни пакета время его задержки данным мостом.
- Максимальное время жизни сообщения - 2 байта. Если пакет BPDU имеет время жизни, превышающее максимальное, то он игнорируется мостами.
- Интервал hello, через который посылаются пакеты BPDU.
- Задержка смены состояний - 2 байта. Минимальное время перехода портов моста в активное состояние. Такая задержка необходима, чтобы исключить возможность временного возникновения альтернативных маршрутов при неодновременной смене состояний портов во время реконфигурации.
У пакета BPDU уведомления о реконфигурации отсутствуют все поля, кроме двух первых.
После инициализации каждый мост сначала считает себя корневым. Поэтому он начинает через интервал hello генерировать через все свои порты сообщения BPDU конфигурационного типа. (Далее под BPDU понимается везде конфигурационный BPDU, если тип BPDU точно не указан.) В них он указывает свой идентификатор в качестве идентификатора корневого моста (и в качестве данного моста также), расстояние до корня устанавливается в 0, а в качестве идентификатора порта указывается идентификатор того порта, через который передается BPDU.
В исходном состоянии каждый мост не только передает BPDU через все свои порты, но и принимает через все порты BPDU, передаваемые другими мостами. Мост в течение интервала установления начальной конфигурации фиксирует значения нескольких своих внутренних переменных:
- RI (Root Identifier) - идентификатор корневого моста, в начальный момент работы алгоритма STA каждый мост присваивает этой переменной свой собственный идентификатор.
- minRPCi (min Root Path Cost) - наименьшее значение расстояния до корня, встретившееся в пакетах BPDU, принятых от корневого моста по i-му порту. Для каждого порта моста имеется своя переменная minRPCi, начальное значение этой переменной равно максимально допустимому значению расстояния, определяемому форматом переменной.
- minBi и minPi - идентификаторы моста и порта, от которого поступил пакет, на основании которого присвоено значение расстояния до корня переменной minRPCi - по две переменные на каждый порт.
Мост обрабатывает поступающие на порты сообщения BPDU следующим образом.
Сначала мост сравнивает значение идентификатора корневого моста из BPDU с текущим значением переменной RI.
Если это значение больше текущего значения RI, то принятый пакет просто уничтожается, так как он не несет никакой информации о расстоянии до корневого моста - он пришел от моста, который не является корневым.
Если оно равно текущему значению RI, то значит принят пакет от уже известного корня. Находящееся в пакете расстояние до корня сравнивается с найденным ранее минимальным расстоянием minRPCi, и если новое значение меньше, то оно переписывается в переменную minRPCi данного порта. Затем мост наращивает значение поля расстояния до корня на величину условного времени сегмента, по которому пришел пакет, помещает в поле идентификатора моста свой идентификатор и передает этот пакет на все свои порты, кроме того порта, от которого получен пакет. В переменные minBi и minPi записываются идентификаторы моста, от которого получен пакет BPDU, и его порта.
Если же значение идентификатора корневого моста у принятого BPDU меньше текущего, то это значит, что обнаружен мост, у которого больше прав претендовать на звание корневого. Его идентификатор фиксируется в переменной RI, а все значения переменных minRPCi устанавливаются в исходное значение, так как они были вычислены ранее на основании расстояний до моста, на самом деле корнем не являющегося. Затем пакет BPDU обрабатывается точно по тому же алгоритму, что и в предыдущем случае.
По мере распространения пакетов BPDU по всей сети у всех мостов накапливается информация, необходимая для фиксации корневого моста, а также для определения того, какой из портов моста является корневым портом, какие порты являются назначенными для сегментов, а какие не входят ни в первую, ни во вторую категории.
После истечения времени установления активной конфигурации у всех мостов происходит фиксация идентификатора корневого моста. Мост, который в течение всего времени процесса установления конфигурации считал себя корневым, окончательно удостоверяется в этом. Все его порты устанавливаются в состояние назначенных.
Мосты, знающие, что они не корневые, определяют свой корневой порт как порт, имеющий минимальное расстояние до корневого моста. Для этого для каждого порта вычисляется расстояние RPCi как сумма переменной minRPCi и условного времени сегмента, с которым связан данный порт, так как в переменной minRPCi это время учтено не было. Затем выбирается корневой порт, как порт с минимальным значением RPCi. После этого данное значение называется расстоянием до корня данного моста - RPC.
Затем мост проверяет все оставшиеся порты как претендентов на звание назначенных портов сегментов, к которым они подключены. Он сравнивает значение minRPCi данного порта со значением RPC, то есть сравнивает расстояния до корня от других мостов данного сегмента со своим собственным. Если его собственное расстояние оказывается меньше по каждому порту, то он фиксируется как назначенный. Если же оно больше, то порт переводится в заблокированное состояние, в котором он не будет ни принимать, ни передавать информационные пакеты в рабочем режиме, после установления активной конфигурации. Если же расстояния оказываются равными, то мост сравнивает сначала свой идентификатор с идентификатором minBi моста-конкурента, а если и они равны (то есть конкурируют его собственные порты), то сравниваются в конце концов идентификаторы портов.
После того, как все мосты определяют статус своих портов, процесс установления активной конфигурации завершен. Корневые и назначенные порты начинают участвовать в передаче кадров протокола канального уровня, то есть для них устанавливается активное состояние, в отличие от заблокированных портов.
Назад | Содержание | Вперед