Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Протокол SPT для мостов и коммутаторов




Функции обучения, фильтрации и передачи основаны на существовании одного логического пути между любыми двумя узлами сети. Наличие нескольких путей между устройствами, известных также как «активные петли», создает проблемы для сетей, построенных на основе мостов и коммутаторов. Под «активными петлями» понимаются логические и физические петли. Логические петли могут создаваться администратором сети специально для образования резервных связей.

Протокол STP [2] (в некоторых технических документах может встретиться название Spanning Tree Algorithm - STA) был разработан Digital Equipment Corporation, а впоследствии опубликован комитетом IEEE 802 в спецификации IEEE 802.1d. Основная цель разработки протокола была в устранении логических и физических петель в сетях, построенных с использованием мостов. Кроме того, протокол автоматически переконфигурирует сетевую топологию в случае обрывов линий связи или при аппаратных ошибках оборудования.

 

Основные определения

В сети определяется корневой коммутатор (root switch), от которого строится дерево.

Для каждого коммутатора определяется корневой порт (root port) - это порт, который имеет кратчайшее из всех портов данного коммутатора расстояние до корневого коммутатора (точнее, до любого из портов корневого коммутатора).

Расстояние до корня (root path cost) определяется как суммарное условное время на передачу данных от порта данного коммутатора до порта корневого коммутатора. Условное время сегмента (designated cost) рассчитывается как время, затрачиваемое на передачу одного бита информации в 10-наносекундных единицах между непосредственно связанными по сегменту сети портами. Так, для сегмента Ethernet это время равно 10 условным единицам, а для сегмента Token Ring 16 Мб/с - 6.25.

Для каждого логического сегмента сети выбирается так называемый назначенный коммутатор (designated switch), один из портов которого будет принимать пакеты от сегмента и передавать их в направлении корневого коммутатора через корневой порт данного коммутатора, а также принимать пакеты для данного сегмента, пришедшие на корневой порт со стороны корневого коммутатора. Такой порт называется назначенным портом (designated port). Назначенный порт сегмента имеет наименьшее расстояние до корневого коммутатора, среди всех портов, подключенных к данному сегменту. Назначенный порт у сегмента может быть только один. У корневого коммутатора все порты являются назначенными, а их расстояние до корня полагается равным нулю. Корневого порта у корневого коммутатора нет.

Можно доказать, что если определить каким-либо образом корневой коммутатор, то зная пропускную способность каждого сегмента и связи между портами коммутаторов и сегментов, можно однозначно определить по расстоянию до корня корневые порты коммутаторов и назначенные порты сегментов, и если все остальные порты коммутаторов, кроме корневых и назначенных, заблокировать, то получится дерево без петель.

Для того, чтобы коммутаторы могли идентифицировать себя и своих ближних и дальних соседей по сети, каждой коммутатор, поддерживающий STA, имеет уникальный идентификатор. Этот идентификатор состоит из двух частей. Младшую часть составляет MAC-адрес коммутатора (не отдельного порта коммутатора, а всего коммутатора в целом, порты коммутаторов MAC-адресов не имеют), имеющий длину 6 байтов. Старшая часть, имеющая длину 2 байта, является приоритетом данного коммутатора, и его может изменять администратор сети по своему усмотрению (напомним, что MAC-адрес устанавливается производителем для обеспечения его всемирной уникальности).

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

Порты внутри каждого коммутатора также имеют свои идентификаторы. Идентификатор порта состоит из 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 коммутатора-конкурента, а если и они равны (то есть конкурируют его собственные порты), то сравниваются в конце концов идентификаторы портов.

После того, как все коммутаторы определяют статус своих портов, процесс установления активной конфигурации завершен. Корневые и назначенные порты начинают участвовать в передаче кадров протокола канального уровня, то есть для них устанавливается активное состояние, в отличие от заблокированных портов.

 

Принцип действия протокола STP рассмотрим на примере сети на рис. 2.7. Предположим, что станция А генерирует широковещательное сообщение. Оно будет получено коммутаторами Б и В и передано соответственно друг другу, как показано стрелками. После получения сообщения эти коммутаторы вновь перешлют его коммутатору А, и весь цикл повторится вновь. Похожая проблема возникает и в случае не широковещательного трафика, если коммутаторы еще не построили своих адресных таблиц. Решением проблемы является удаление всех петель из сетевой топологии с сохранением только одного пути между каждыми двумя станциями.

В примере коммутаторы Б и В добавляют свои стоимости портов - числа 25 и 30 соответственно - и пересылают сообщения друг другу. После анализа этих сообщений коммутатор с наибольшей стоимостью пути до корня переводит свой порт в блокированное состояние. В примере этим коммутатором является коммутатор В с портом 2. Порт, находящийся в блокированном состоянии, не передает кадры через себя, однако он продолжает принимать и обрабатывать пакеты BPDU. У коммутатора Б порт 2 становится назначенным, и только через него происходит передача кадров в подключенный сегмент сети. Таким образом, хотя коммутатор Б будет продолжать передавать кадры данных через свой порт 2, они не пройдут дальше коммутатора В, который будет их отсекать, устраняя петлю, существовавшую ранее.

Состояния порта

Каждый порт коммутатора, поддерживающего алгоритм STA, может находится в одном из 5 состояний (рис. 66):

· Отключен (disabled) - порт не участвует ни в каких операциях, и может быть выведен из этого состояния только с помощью протокола управления коммутатором (по сети или локально).

· Заблокирован (blocked) - конфигурационные BPDU принимаются, обрабатываются и передаются.

· Прослушивание (listening) - конфигурационные BPDU принимаются, обрабатываются и передаются.

· Обучение (learning) - порт принимает конфигурационные BPDU, обрабатывает их и передает, а также принимает и обрабатывает информационные кадры канального протокола (строит адресную таблицу).

· Трансляция (forwarding) - порт участвует во всех операциях коммутатора - принимает конфигурационные BPDU, обрабатывает их и передает, а также принимает, обрабатывает и передает информационные кадры канального протокола.

Рис. Состояние порта и возможные переходы

За счет наличия промежуточных состояний порта, которые не были учтены при описании процесса установления активной конфигурации для упрощения его понимания, коммутатор не единовременно заканчивает этот процесс и начинает передавать пользовательские кадры, а постепенно, причем по каждому порту индивидуально.

Переходы между состояниями порта вызываются либо получением конфигурационного BPDU или истечением некоторого таймера.

Обычно все порты коммутатора при первом его включении в сеть устанавливаются в отключенное состояние. Переход в заблокированное состояние происходит при выполнении администратором соответствующей операции управления коммутатором (1). Аналогичным образом, администратор может отключить порт (2).

После получения команды на инициализацию от администратора, коммутатор переводит все свои порты в состояние блокировки. Затем начинается описанный процесс установления начальной активной конфигурации. Коммутатор в какой-то момент времени этого процесса может сделать ошибочные заключения о том, какой из его портов является корневым, а какие - назначенными, так как делает выводы на основе конфигурационных BPDU, полученных от коммутатора, который он временно считает корневым, так как конфигурационные BPDU от действительно корневого коммутатора еще до него не дошли. Поэтому для исключения преждевременных решений о том, что некоторые порты нужно перевести в транслирующее состояние, так как они стали либо корневыми, либо назначенными (и, следовательно, для исключения временного образования петель), порт сначала переводится в промежуточное состояние - состояние прослушивания (3). При этом взводится специальный таймер для порта - таймер трансляции. Если его период истекает, а порт все еще остается по результатам обработки поступивших конфигурационных BPDU корневым или назначенным, то он переводится в состояние обучения (5), а таймер взводится снова. Если же его интервал истекает еще раз, то тогда порт переводится в состояние трансляции (5) и начинает активную работу по передаче пользовательских кадров. Если же за период работы таймера трансляции порт перестает быть корневым или назначенным, то он непосредственно переводится в состоянии заблокированного (4).

 

Изменения топологии

Алгоритм STA обеспечивает поддержку резервных связей в сети, и включает, кроме процедуры инициализации активной конфигурации и процедуру изменения конфигурации при отказах элементов сети. Эта процедура называется процедурой изменения топологии.

После установления активной топологии только корневой коммутатор продолжает периодически генерировать пакеты BPDU конфигурационного типа. Остальные коммутаторы продолжают принимать пакеты BPDU на свой корневой порт и распространяют их через свои назначенные порты.

Для того, чтобы коммутаторы могли обнаружить отказ элемента сети, каждый коммутатор имеет таймер возраста сообщения (message age timer). При получении пакета BPDU этот таймер устанавливается в исходное состояние. Если какой-либо назначенный коммутатор, его порт или линия связи отказывают, то пакеты BPDU перестают поступать во все коммутаторы, которые находятся в поддеревьях отказавшего элемента. Вследствие этого, в этих коммутаторах истекает интервал таймера возраста сообщения.

Если у коммутатора истекает значение такого таймера, то вызывается процедура, называемая "установление назначенных портов". Очевидно, что это произойдет во всех коммутаторах, которые пострадали от отказа. После выполнения этой процедуры, которая аналогична описанной процедуре начального выбора корневого и назначенных портов, будут определены новые значения назначенных коммутаторов, корневых портов и назначенных портов. Если же отказал корневой коммутатор, то будет выбран новый корневой коммутатор.

В дополнение к процедуре реакции на отказ, определяется и реакция коммутатора на принудительное изменение администратором статуса порта с заблокированного на активный. При этом посылается BPDU типа "уведомление о реконфигурации" в направлении корневого коммутатора. Все назначенные коммутаторы, находящиеся на пути между данным портом и корневым коммутатором отмечают произошедшее изменение и передают сообщение дальше через свой корневой порт корневому коммутатору. При этом все коммутаторы, на которые влияет такое изменение, оказываются о нем уведомлены и производят переоценку назначенных портов.

При изменении активной конфигурации коммутаторы должны произвести некоторые изменения в своих адресных таблицах, так как некоторым узлам пакеты должны теперь передаваться через другие порты. Вообще говоря, эти изменения в адресных таблицах произойдут автоматически, когда у динамических записей таблицы истечет таймер возраста. Но, так как этот таймер имеет сравнительно большой интервал, то корневой коммутатор посылает уведомление об изменении конфигурации всем коммутаторам, устанавливая флаг изменения конфигурации в текущем BPDU. При получении BPDU с таким флагом, все динамические входы адресной таблицы считаются устаревшими, поэтому они заполняются вновь на основании приходящих пакетов от конечных станций.

Сетевая топология, полученная в результате работы протокола STP на локальной сети приведенного выше примера, показана на рис. 2.9.

Предположим, что произошел обрыв линии связи между коммутаторами А и Б (рис. 2.9). В этом случае коммутатор Б своевременно не получит на свой корневой порт сообщения от корневого коммутатора и активизирует процесс реконфигурации, рассылая пакеты BPDU с содержимым поля «Тип сообщения», равным 80h, означающим реконфигурацию. После этого процессы выбора корневого коммутатора назначенных и блокированных портов коммутаторов повторятся вновь, но уже с учетом отсутствия связи между коммутаторами А и Б. В результате реконфигурации получится последовательное соединение коммутаторов А, В и Б и порт 2 коммутатора Б станет корневым.

Для повышения надежности сетей, построенных на основе коммутаторов, применяют либо метод введения резервных линий связи между коммутаторами, либо метод введения резервных коммутаторов.

В целом протокол STP имеет следующие достоинства:

· позволяет создавать большие, сложные и строить устойчивые к сбоям и отказам локальные сети на коммутаторах;

· предоставляет только один путь передачи данных между любыми двумя станциями, который: а) гарантирует доставку данных в том порядке, в котором они были отправлены; б) устраняет размножение широковещательных пакетов; в) устраняет бесконечную циркуляцию широковещательных пакетов; г) устраняет циркуляцию пакетов с неизвестным адресом назначения;

· работает прозрачно для конечных станций;

· использует небольшой процент полосы пропускания.

В качестве недостатков можно отметить следующие моменты:

· коммутаторы, поддерживающие протокол STP, имеют повышенную стоимость;

· для введения резервных линий связи должны быть задействованы дополнительные порты коммутатора;

· введение резервного оборудования существенно увеличивает стоимость сети в целом;

· в моменты реконфигурации топологии сеть становится неработоспособной;

· между двумя любыми станциями в сети может быть не более семи коммутаторов или мостов (в сетях на базе Ethernet 10 Мбит/с).

 

 

3. Контрольные вопросы

3.1. Объясните основные структурные и функциональные различия между мостом и коммутатором.

3.2. В чем заключается прозрачность моста?

3.3. На каком-либо примере с использованием граф-схемы алгоритма работы моста объясните принцип работы мостов и коммутаторов в режиме обучения, фильтрации, передачи и широковещания.

3.4. Какие способы снижения интенсивности трафика в сети Вы знаете? Объясните эти способы. Ответ проиллюстрируйте временными диаграммами работы коммутаторов.

3.5. При использовании какого из двух способов передачи пакетов коммутаторами: со сквозной обработкой или с буферизацией, повышается надежность сети? За счет чего это достигается?

3.6. Что такое "активные петли" в сети, как они возникают и каким образом их наличие сказывается на функционировании сети?

3.7. Объясните назначение и принцип функционирования протокола канального уровня STP.

3.8. В какие состояния, согласно протоколу STP, в зависимости от ситуации в сети могут переходить порты мостов и коммутаторов? С учетом пребывания портов коммутатора во всех этих состояниях нарисуйте для него конечный автомат.

3.9. Какие параметры служебного пакета BPDU может вручную устанавливать администратор сети?

3.10. Какие действия, согласно протоколу STP, предусмотрены в случаях: а) образования "активной петли"; б) обрыва сетевого кабеля между коммутаторами; в) выхода из строя корневого коммутатора?

 

Лабораторное задние

 

1. Постройте сеть указанную на рисунке 4.1, самостоятельно задав адресацию и настроив сервера.

 

2. Проверьте работоспособность сети.

 

Рисунок 4.1 – Исходная сеть

 

3. Внесите изменения в топологию для обрзования петлей — добавте избыточные линки только между Switch 6, Switch 7 и Switch 8, рис. 4.2.


 

Рисунок 4.2 – Образование петлей

 

Данная программа самостоятельно настраивает работу STP. Для просмотра ее работы зайдите поочередно в СLI Switch 6, Switch 7 и Switch 8 и наберите команду:

 

switch>en

switch #show spanning-tree


Вывод команды:

После того, как коммутаторы выбрали root bridge, каждый из остальных свичей должен найти один, и только один порт, который будет вести к корневому свичу. Такой порт называется корневым портом (Root port). Чтобы понять, какой порт лучше использовать, каждый некорневой свич определяет стоимость маршрута от каждого своего порта до корневого свича. Эта стоимость определяется суммой стоимостей всех линков, которые нужно пройти кадру, чтобы дойти до корневого свича. В свою очередь, стоимость линка определяется просто- по его скорости (чем выше скорость, тем меньше стоимость). Процесс определения стоимости маршрута связан с полем BPDU “Root Path Cost” и происходит.

 

Корневой свич посылает BPDU с полем Root Path Cost, равным нулю

Ближайший свич смотрит на скорость своего порта, куда BPDU пришел, и добавляет стоимость согласно таблице

Скорость порта Стоимость STP (802.1d)
10 Mbps  
100 Mbps  
1 Gbps  
10 Gbps  

Далее этот второй свич посылает этот BPDU нижестоящим коммутаторам, но уже с новым значением Root Path Cost, и далее по цепочке вниз

Если имеют место одинаковые стоимости (как в нашем примере с двумя свичами и двумя проводами между ними — у каждого пути будет стоимость 19) — корневым выбирается меньший порт.

 


Далее выбираются назначенные (Designated) порты. Из каждого конкретного сегмента сети должен существовать только один путь по направлению к корневому свичу, иначе это петля. В данном случае имеем в виду физический сегмент, в современных сетях без хабов это, грубо говоря, просто провод. Назначенным портом выбирается тот, который имеет лучшую стоимость в данном сегменте. У корневого свича все порты — назначенные.

 

Роли портов
Root (корневые) порты
- порты некорневых коммутаторов, через которые проходит трафик в сторону корневого коммутатора. Может быть только один корневой порт у коммутатора. MAC адреса источника фреймов, полученные на этот порт, заносятся в таблицу MAC адресов коммутатора.
Designated (назначенные) порты - могут быть и у корневых, и у некорневых коммутаторов. У корневых - это все порты. У некорневых - все некорневые порты, через которые разрешена передача трафика. В одном сегменте сети может быть только один назначенный порт. MAC адреса источника фреймов, полученные на эти порты, заносятся в таблицу MAC адресов коммутатора.
Non-designated (неназначенные) порты - порты, которые находятся в состоянии блокировки. Трафик через них запрещен.
Disabled (отключенные) порты - порты, которые выключены администратором командой shutdown.

выводит состояние и конфигурацию интерфейса STP

 

4. Поочередно просмотрев работу STP на всех трех коммутаторах отметьте на схеме в протоколе Root порты и выпишите сost для всех портов, определив корневой коммутатор и правильно ли работает STP.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...