Поделитесь пожалуйста ► Первой частью курса. В первой лекции упоминается, цитирую: "В первой части настоящего курса отмечалось, что соединение локальных сетей LAN..." |
Коммутируемые сети
6.4. Протокол охватывающего дерева STP
Многоуровневая схема сети ( рис. 6.1в) характеризуется избыточными устройствами и соединениями, что обеспечивает высокую надежность. Однако избыточные соединения могут приводить к образованию маршрутных петель, что, в свою очередь, может привести к зацикливанию передаваемых пакетов, широковещательному шторму и падению сети.
Из рис. 6.7 следует, что от узла Hosti до Hostj существует 5 различных путей (1, 2, 3, 4, 5).
Множество путей могут образовывать маршрутные петли ( рис. 6.8), приводящие к зацикливанию кадров в какой-либо петле.
Поэтому к топологии сети предъявляются два противоположных требования:
- с одной стороны, для повышения надежности необходимы избыточные устройства и маршруты (соединения);
- с другой стороны, топология сети должна быть древовидной, т.е. не должна иметь маршрутных петель.
Для разрешения этих противоречивых требований был разработан протокол охватывающего (покрывающего) дерева (Spanning-Tree Protocol - STP), который при наличии избыточных физических соединений прокладывает логические маршруты так, чтобы топология сети была древовидной. Алгоритм STA, реализующий протокол STP, автоматически выключает избыточные маршруты, образующие маршрутные петли. Избыточные соединения могут быть автоматически активизированы при выходе из строя соединений основного маршрута.
Таким образом, коммутаторы используют алгоритм STA, чтобы перевести в резервное состояние избыточные пути, которые не соответствуют иерархической древовидной топологии. Запасные избыточные пути задействуются, если основные выходят из строя. Протокол STP используется для создания логической иерархии без петель, т.е. при наличии физических петель, логические петли отсутствуют ( рис. 6.9).
При этом топология сети будет древовидной и каждый конечный узел будет характеризоваться единственным путем до главного или корневого (root) коммутатора К ( рис. 6.9). Причем, расстояние от каждого узла до корневого коммутатора будет минимальным.
Для работы STP каждый коммутатор периодически каждые 2 секунды рассылает служебные Hello-кадры (Bridge Protocol Data Unit - BPDU) во все свои порты, чтобы позволить другим коммутаторам знать о его существовании. Кадры BPDU содержат идентификаторы коммутаторов (bridge ID - BID) и портов, эта информация используется, чтобы выбрать корневой коммутатор сети. Расстояние до корневого коммутатора также передается в кадрах BPDU. Для выбора корневого коммутатора администратор может устанавливать коммутаторам приоритет (также как в протоколе OSPF при выборе маршрутизатора DR). При одинаковых приоритетах выбор производится на основании идентификаторов BID. Коммутатор с наименьшим значением BID становится корневым.
В исходном состоянии каждый коммутатор считает себя корневым. Когда приходит служебный Hello-кадр BPDU с меньшим (с лучшим) значением идентификатора BID, коммутатор обновляет свое состояние и рассылает обновленные кадры BPDU другим коммутаторам. Если же приходит кадр BPDU с худшим (с большим) значением BID, то кадр отбрасывается, состояние коммутатора не модифицируется.
Идентификатор коммутатора BID представляет собой число размером 8 байт, где 6 младших байт отображают МАС-адрес блока управления коммутатора, а два старших байта - задаваемый администратором приоритет, который может изменяться от 1 до 65536 (по умолчанию 32768). Причем, при использовании виртуальных локальных сетей VLAN два старших байта приоритета разделены на два поля: поле собственно приоритета и поле расширения идентификатора ID ( рис. 6.10).
Поле расширения идентификатора ID размером в 12 бит служит для идентификации VLAN. При этом общее значение приоритета (два старших байта) изменяется кратно 4096. Таким образом, задав приоритет, администратор определит корневой коммутатор. При одинаковых значениях приоритета и одинаковых расширениях ID идентификатора BID будет определяться МАС-адресом блока управления коммутатора. С учетом того, что по умолчанию управляющей является VLAN1, то приоритет по умолчанию будет 32769.
Задание приоритета некоторому коммутатору Switch-A1, который администратор решает сделать корневым, производится по команде:
Switch-A1(config)#spanning-tree vlan 1 priority 24576
Корневым можно сделать коммутатор также по следующей команде:
Switch-A1(config)#spanning-tree vlan 1 root primary.
Проверить состояние коммутатора можно по команде:
Switch-A1#show spanning-tree.
Для описания топологии локальной сети ( рис. 6.7 - рис. 6.9) введены понятия корневой порт (root port) и назначенный порт (designated port). Корневой порт некорневого коммутатора характеризуется кратчайшим расстоянием до любого порта корневого коммутатора, на рис. 6.9 корневые порты помечены квадратиками и символом R. Назначенный порт помечен полукругом, через него реализуется связь коммутатора более высокого уровня с коммутатором более низкого уровня иерархии.
На рис. 6.11 показан фрагмент схемы локальной сети рис. 6.9.
Из схемы следует, что корневой коммутатор автоматически сконфигурировал все свои порты в качестве назначенных (designated). Другие коммутаторы (не корневые) конфигурируют порты с кратчайшим расстоянием до корневого коммутатора в качестве корневых (root port), а остальные порты - как не назначенные, которые блокируются и в передаче данных не участвуют. Например, соединение портов коммутаторов A2 и D2 образует сегмент сети, в котором оба коммутатора имеют одинаковый приоритет. В сегменте может быть только один назначенный порт.
При выборе назначенного и не назначенного порта основным приоритетом является расстояние (метрика) до корневого коммутатора. Вторым приоритетным параметром является МАС-адрес. Порт, у которого большее значение МАС-адреса станет не назначенным (non-designated port). Не назначенный порт иногда называют дополнительным. Кроме того, порты коммутатора могут находиться в неработающем запрещенном состоянии (disabled port). Протокол STP в процессе работы определяет роль каждого порта: корневой, назначенный, не назначенный (не работающий).
Расстояние от произвольного коммутатора до корневого оценивается в соответствии с метрикой, в качестве которой обычно используется величина обратная скорости передачи данных по сегменту. Согласно стандарта 802.1D-2004 скоростям технологий Ethernet и более высокоскоростных технологий соответствуют новые значения метрики, приведенные в третьей строке табл. 6.1. В четвертой стоке приведены старые значения метрики по умолчанию.
Технология | - | - | 10GEthernet | GEthernet | FastEthernet | Ethernet |
---|---|---|---|---|---|---|
Мбит/с | 10000 | 1000 | 100 | 10 | ||
Метрика новая | 2 | 200 | 2000 | 20 000 | 200 000 | |
Метрика стар. | - | - | 2 | 4 | 19 | 100 |
Значение метрики на каждом из портов коммутатора можно сконфигурировать. Например, для порта F0/1 некоторого коммутатора Switch-A1 можно задать значение метрики в диапазоне от 1 до 200 000 000:
Switch-A1(config)#int f0/1 Switch-A1(config-if)#spanning-tree cost 200
Вернуться к значению по умолчанию можно, используя команду no spanning-tree cost.
По значению метрики алгоритм STA оценивает расстояние от каждого коммутатора до корневого. Если существует несколько маршрутов, то STA определяет единственный корневой порт, выбирая путь до корневого коммутатора с наименьшим значением метрики.
При наличии нескольких портов с одинаковым значением метрики корневой порт определяется по значению идентификатора. Размер идентификатора порта - 2 байта, где младший байт отображает порядковый номер порта коммутатора, а старший байт - задаваемый администратором приоритет (по умолчанию - 128). Приоритет может изменяться в диапазоне от 0 до 240 с шагом 16. Значение приоритета порта можно задать в режиме конфигурирования интерфейса по команде:
Switch-A1(config-if)#spanning-tree port-priority 96
Значение собственного идентификатора коммутатора и его составляющих (адрес, метрика, значение Hello интервала), а также идентификатора корневого коммутатора можно посмотреть по команде show spanning-tree.
Таким образом, в процессе работы STP производится:
- Выбор корневого коммутатора (root bridge).
- Выбор корневых портов (root ports).
- Выбор назначенных и не назначенных портов (designated,non-designated ports).
Каждый порт коммутатора, который использует протокол STP, находится в одном из следующих 5 состояний:
- Блокировка (Blocking)
- Прослушивание (Listening)
- Обучение (Learning)
- Продвижение (Forwarding)
- Запрещенное (Disabled)
При инициализации коммутатора все порты, за исключением находящихся в запрещенном не работающем состоянии (Disabled), переводятся в состояние блокировки Blocking.
В состоянии блокировки (Blocking) порты коммутатора принимают и обрабатывают уведомления BPDU протокола STP, чтобы определить корневой коммутатор, но не передают информационные данные.
В состояние прослушивания (Listening) коммутатор переходит на время, определяемое таймером и составляющее 15 сек. В этом состоянии коммутатор не только принимает уведомления BPDU, но и отправляет собственные. При этом формируются корневые и назначенные порты, остальные порты блокируются, т.е. создается древовидная топология сети. Если за время работы таймера порт получит уведомление STP с лучшей чем его метрикой, то он перейдет в состояние блокировки Blocking. Если принятая метрика хуже его собственной, то уведомление отбрасывается.
После 15 секунд состояния прослушивания коммутатор перейдет в состояние обучения (Learning), чтобы принимать, но еще не продвигать пакеты данных и создавать адресную таблицу коммутации. Длительность состояния Learning в 15 секунд также задается таймером. При получении уведомления BPDUс лучшей, чем его собственная, метрикой порт переходит в состояние блокировки.
После окончания заданного таймером времени порт коммутатора переходит в состояние продвижения (Forwarding), т.е. начинается полноценная коммутация пакетов в соответствии с созданной таблицей. При этом корневой коммутатор генерирует и передает служебные пакеты Hello. Остальные коммутаторы принимают пакеты Hello на корневые порты и ретранслируют пакеты через назначенные порты.
Если в течение 20 секунд (10 интервалов по умолчанию) корневой порт любого коммутатора не получает пакет Hello, то он считает, что корневой коммутатор вышел из строя. При этом коммутатор считает себя корневым и рассылает уведомления BPDU через все свои порты. Начинается новый процесс протокола STP по созданию древовидной топологии сети.
Переход порта в состояние запрещения (Disabled) и выход из него реализуется по командам конфигурирования.
Таким образом, протокол STP для реализации работы алгоритма использует три таймера:
- таймер периодичности Hello пакетов (Hello time) может изменять свои значения от 1 до 10 секунд. По умолчанию - 2 сек.;
- таймер состояний прослушивания и обучения (Forward delay) может быть настроен на значения от 4 до 30 секунд. По умолчанию отсчитывает два периода по 15 сек.;
- таймер сохранения текущей конфигурации при отсутствии Hello пакетов (Maximum age) формирует длительность от 6 до 40 секунд. По умолчанию - 20 сек.