воскресенье, 25 марта 2012 г.

STP (Spanning Tree Protocol)

Spanning Tree Protocol (сокращённо STP)(протокол остовного дерева) — сетевой протокол, работающий на втором уровне модели OSI. Основан на одноимённом алгоритме, который разработала Радья Перлман (англ. Radia Perlman)
Основное назначение протокола Spanning Tree - построение топологии ЛВС без избыточного дублирования соединений или закольцовывания, недопустимых в силу логики построения ЛВС. STP позволяет организовать в сети, построенной при помощи мостов (bridges), отказоустойчивую архитектуру.
Используя STP, вы можете построить сеть, в которой существует несколько параллельных путей, и гарантировать при этом, что:
резервные пути прохождения трафика при нормальном функционировании основного пути заблокированы;
один из резервных путей активизируется при нарушении основного пути.
Например, на рисунке 1 показана сеть, построенная на четырех коммутаторах, поддерживающих протокол STP. Это обстоятельство позволяет соединить их избыточным количеством линков, которые в обычных условиях создали бы петли и привели к неработоспособности сети. Однако, при инициализации сети STP обнаруживает дублирующие пути и оставляет на каждое направление только один, переводя остальные задействованные в линках порты в состояние "blocking" (на рисунке соответствующие линки зачеркнуты). При нарушении основного канала передачи (например, в следствие отключения одного из коммутаторов), STP обнаруживает этот факт и задействует запасной маршрут.

Протокол разработан в начале 90-х годов XX века (ANSI/IEEE 802.1D 1993 Edition) и дорабатывался в 1996 и 1998 годах. В качестве модели используется граф в виде дерева. Построение дерева сети начинается с корня (root) -- устройства, выигравшего выборы корневого (designated root). Designated root -- это просто отправная точка для построения активной незакольцованной топологии, в которой физические кольца не дают логических колец. Иными словами, это логическое понятие.

 Важно заметить, что Spanning Tree Protocol определен для различных сред передачи данных (MAC, Media Access Control). Далее в тексте рассматриваются примеры сетей в основном на базе Ethernet, как наиболее распространенной.
 BPDU - это именно пакеты, а не фреймы. Это ясно из BPDU пакеты инкапсулируются в используемый данной топологией тип фрейма с мультикастным MAC адресом в поле назначения, что обуславливает передачу этих пакетов через неинтеллектуальное оборудование, не знающее о существовании Spanning Tree.
Работа STP подразумевает выполнение следующих условий:
Возможность передачи информации между мостами, что осуществляется путем передачи каждым STP-совместимым устройством специальных блоков данных - Bridge Protocol Data Units (BPDU). Эти блоки данных передаются в пакетах с определенным групповым адресом назначения (multicast address), зарезервированным в
Один из мостов функционирует как "ведущее" устройство, называемое Designated Root Bridge.
Designated root присутствует всегда, даже когда топология не содержит физических колец. Если в сети только одно STP-совместимое устройство - до тех пор, пока STP не выключен, оно будет анонсировать себя. Каждое STP-совместимое устройство начинает работу, считая себя designated root, так что в сети с единственным STP-совместимым устройством оно и является Designated Root Bridge.
Если же в сети присутствует более устройства, поддерживающего STP, то Designated Root Bridge выбирается путем голосования (выборов) на основе значения параметра Bridge Identifier, обычно являющегося комбинацией уникального MAC-адреса моста и устанавливаемого для моста приоритета. На роль Designated Root Bridge назначается мост с наименьшим значением Bridge Identifier.
 Для всех остальных мостов в сети определяется Root Port, т.е. порт моста, ближайший к Root Bridge. От других портов, соединенных с root bridge непосредственно или через другие мосты, он отличается своим идентификатором, который содержит его номер и "вес", который может быть задан администратором.
 Другой величиной, влияющей на процесс выборов, является Root Path Cost. Она состоит из стоимости пути до Root Port данного моста плюс стоимость путей до Root Port мостов по всему маршруту до Root Bridge.
 Помимо Designated Root Bridge в STP вводится логическое понятие Designated Bridge. Владелец этого статуса считается главным в обслуживании данного сегмента ЛВС. Статус Designated Bridge также является выборным и может переходить от одного устройства к другому.
 Аналогичным образом вводится выборное логическое понятие Designated Port - порта, который обслуживает данный сегмент сети. Для Designated Port вводится понятие Designated cost, описывающее стоимость пути.
В зависимости от содержимого получаемых от соседних устройств конфигурационных пакетов то или иное устройство перестает оспаривать статус Designated Root Bridge и начинает анонсировать устройство, выигравшее этот статус в процессе выборов. Так происходит до тех пор, пока ситуация не придет к завершающей стадии, которая характеризуется следующим образом:
В сети только одно устройство, считающее себя корнем, а остальные устройства периодически анонсируют его как корень, что поддерживает статус кво, обновляя таймеры на всех STP-совместимых устройствах.
Root Bridge периодически посылает во все свои порты пакеты с BPDU. Интервал времени, через который происходит посылка, называется Hello Time.
В каждом сегменте сети имеется единственный Designated Bridge Port - порт, через который проходит обмен трафиком с Root Bridge. Этот порт имеет наименьшее значение Root Path Cost по сравнению с другими портами в сегменте, либо меньший bridge ID.
BPDU принимаются и отправляются STP-совместимым устройством на всех его портах, даже на тех, которые были "выключены" работой STP. Однако BPDU не принимаются на портах, которые были "выключены" администратором.
Каждый мост осуществляет пересылку (forwarding) пакетов только между Root Port и портами, которые являются Designated Bridge Port для соответствующего сегмента. Все остальные порты находятся в состоянии "Blocking".
 Как уже говорилось, корень не несет на себе иных обязанностей, кроме анонса своих параметров согласно спецификации Spanning Tree протокола, а это, в частности, значит, что в сети, не содержащей физических колец или избыточных соединений, от изменения владельца статуса Designated Root Bridge пути пакетов, пересылаемых между двумя произвольными станциями не изменится.
 Спецификация протокола не накладывает ограничений на время, в которое могут начаться выборы того или иного параметра, а лишь описывает необходимые для этого условия.

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

В качестве параметров при выборах используются следующие величины:
Постоянные величины:
root path cost
стоимость пути к корневому устройству. Чем меньше значение, тем выше приоритет
bridge identifier
идентификатор устройства. Чем меньше значение, тем больше приоритет
port identifier
идентификатор порта. Чем меньше значение, тем выше приоритет
Выборные величины:
designated port
назначенный порт
designated root
назначенный корень
designated cost
назначенная стоимость

Величины bridge identifier и port identifier являются составными и образуются из поля приоритета (может устанавливаться администратором) и поля, присваиваемого производителем (некоторые устройства могут поддерживать установку этих идентификаторов целиком).
В момент обновления конфигурации STP-совместимое устройство изменяет состояние своих портов - они поочередно принимают одно из следующих возможных значений:
блокирован (Blocking)
Заблокирован. Однако, фреймы содержащие STP пакеты (bpdu), принимаются и обрабатываются, в отличие от пользовательских фреймов;
слушает (Listening)
Первый этап подготовки к состоянию Forwarding. Фреймы, содержащие STP пакеты (bpdu), принимаются и обрабатываются, в отличие от пользовательских фреймов;
обучается (Learning)
Второй этап подготовки к состоянию Forwarding. Фреймы, содержащие STP пакеты (bpdu), принимаются и обрабатываются, в отличие от пользовательских фреймов;
передает (forwarding)
Рабочее состояние портов устройства. Передаются как фреймы, содержащие STP пакеты, так и фреймы пользовательских протоколов.
 Время, на которое порт попадает в то или иное состояние, определяется значениями пауз, которые передаются посредством C-BPDU вместе с остальными параметрами.
 Согласно стандарту, во время нахождения в состояниях Blocking, Listening и Learning пересылка не-STP пакетов не разрешена. В то же время, bpdu-пакеты не обрабатываются только в случае если порт выключен администратором. Это говорит о том, что если порты находятся в режимах Blocking, Listening или Learning - сеть работает только на STP протокол, но не на пользователя. Этим можно воспользоваться для организации атаки "отказ в обслуживании" (Denial of Service, DoS), в терминах.
 Собственно, причина, по которой протокол работает именно таким образом, проста - все так организовано для того, чтобы избежать хаотичного дублирования и/или размножения пакетов в различные сегменты сети в момент перестройки ее топологии. Дублирование и/или размножение пакетов возможно, например, за счет возникновения временных колец, возникающих в процессе переключения состояния того или иного линка.
 В силу того, что топология сети определяется при участии протокола STP возможна атака по схеме ложный объект РВС с навязыванием ложного пути.
 Следует отметить, что стандарт не уточняет термин LAN-сегмент в данном контексте, что еще раз указывает, что это вещь весьма относительная, так что состав соответствующих сетей будет меняться в зависимости от выбранной точки подключения.
 Вообще говоря, описываемые на примере Ethernet уязвимости протокола относятся (часть может быть применена практически без изменений алгоритма) к любым топологиям, на которых может работать STP. Как следствие, протокол и рассматриваемые атаки, требующие включенной поддержки STP, могут быть применены на любых сетевых топологиях, не допускающих логических колец). В специально обращено внимание на то, что STP может ходить не только поверх Ethernet, но и поверх других сетей с другим принципом MAC.
Для большей наглядности и лучшего понимания работы STP авторы включили примеры, изображенные на рисунках 1 и 4. Комментарии к рисунку 1 расположены в самом начале этой главы. Рассмотрим теперь работу STP более подробно, для чего обратимся к рисунку 2.

Каждый порт каждого моста имеет свою величину Path Cost, обозначенную как PC=XXX. Мост A является Root Bridge, т.к. имеет наименьшее значение Bridge Identifier. Для сети A (LAN A) Designated Bridge Port является порт 1 моста А. Один из портов каждого из четырех оставшихся мостов является Root Port (это порт, ближайший к Root Bridge).
 Мосты X и B предоставляют доступ к сети B с одинаковым параметром Path Cost. Однако, в данном случае, порт моста B выбран в качестве Designated Bridge Port, т.к. этот мост имеет меньшее значение Bridge Identifier.
 Порт моста C выбран в качестве Designated Bridge Port для сети C, т.к. он предоставляет более "дешевый" доступ к этой сети (стоимость пути через мосты C и B равна 200, а через мосты Y и B - 300).
В стабильном состоянии все мосты ожидают периодической посылки Root Bridge специальных пакетов - Hello BPDU. Если в течение промежутка времени, определяемого значением Max Age Time, таких пакетов от Root Bridge не поступает, мост считает, что либо между ним и Root Bridge нарушена связь, либо последний отключен. В этом случае мост инициирует реконфигурацию топологии сети. Путем установки соответствующих параметров можно регулировать, насколько быстро мосты будут обнаруживать изменения в топологии и задействовать запасные маршруты. На практике с регулировкой значений STP приходится сталкиваться в основном в двух случаях - если в силу обстоятельств STP переводит в режим "запасного" более быстрый линк и если сеть имеет плохую сходимость на значениях по умолчанию из-за большого количества устройств.

Комментариев нет:

Отправить комментарий