Stp или rstp что лучше
Русские Блоги
STP、RSTP、MSTP
STP (протокол связующего дерева, протокол связующего дерева) устанавливается в соответствии со стандартом IEEE 802.1D и используется для устранения физического звена канального уровня в локальной сети. Устройства, использующие этот протокол, обнаруживают петли в сети, обмениваясь информацией друг с другом, и выборочно блокируют определенные порты. Непрерывное распространение и бесконечный цикл в дорожной сети, чтобы избежать проблемы, связанной с тем, что емкость обработки сообщений устройства уменьшается из-за повторного приема того же сообщения.
Пакеты протокола, используемые STP, представляют собой BPDU (блок данных протокола моста), также известный как сообщения конфигурации. BPDU содержит достаточно информации, чтобы гарантировать, что устройство завершает процесс вычисления связующего дерева. STP предназначен для определения топологии сети путем передачи BPDU между устройствами.
BPDUФормат и описание поля
Для реализации функции связующего дерева сообщения BPDU передаются между коммутаторами для осуществления обмена информацией.Все коммутаторы, поддерживающие протокол STP, будут принимать и обрабатывать полученные сообщения. Сообщение содержит всю полезную информацию для расчета связующего дерева в области данных.
Формат кадра стандартного связующего дерева BPDU и описание полей:
Protocol identifier: Логотип соглашения
Version: Версия протокола
Message type: Тип BPDU
Flag: Флаг
Root ID: Идентификатор корневого моста, состоящий из двух байтов приоритета и 6 байтов MAC-адреса
Root path cost: Стоимость корневого пути
Bridge ID: Идентификатор моста, указывающий идентификатор моста, отправляющего BPDU, состоящий из 2 байтов приоритета и 6 байтов MAC-адреса
Port ID: Идентификатор порта, который идентифицирует порт, который отправил BPDU
Message age: БПДУ время жить
Maximum age: Текущее время устаревания BPDU, то есть максимальное время, в течение которого порт сохраняет BPDU
Hello time: Период, за который корневой мост отправляет BPDU
Forward delay: Указывает время, в течение которого коммутатор остается в состоянии мониторинга и обучения до отправки пакетов данных после изменения топологии
STPОсновная концепция
Корневой мост(Root Bridge): коммутатор с наименьшим идентификатором моста является корневым мостом. Пожалуйста, установите лучший из всех коммутаторов в контуре в качестве коммутатора корневого моста, чтобы обеспечить наилучшую производительность и надежность сети.
Назначенный мост(Назначенный мост): В каждом сегменте сети мост с наименьшей стоимостью пути к корневому мосту станет назначенным мостом, и пакет данных будет переадресован в сегмент сети через него. Когда все коммутаторы имеют одинаковую стоимость корневого пути, коммутатор с наименьшим идентификатором моста выбирается в качестве назначенного моста.
Стоимость корневого пути(Стоимость корневого пути). Стоимость корневого пути коммутатора является суммой стоимости пути корневого порта и стоимости корневого пути всех коммутаторов, через которые проходит пакет данных. Стоимость корневого пути корневого моста равна нулю.
Приоритет моста(Приоритет моста): это параметр, который пользователь может установить, и диапазон значений составляет от 0 до 32768. Чем меньше установленное значение, тем выше приоритет. Чем выше приоритет моста коммутатора, тем более вероятно, что он станет корневым мостом.
Корневой порт(Корневой порт): порт, ближайший к корневому мосту на коммутаторе некорневого моста, отвечает за связь с корневым мостом. Стоимость пути от этого порта до корневого моста самая низкая. Когда несколько портов имеют одинаковую стоимость пути к корневому мосту, порт с наивысшим приоритетом порта становится корневым портом.
Назначенный порт(Назначенный порт): указывает порт на мосту, который передает данные на этот коммутатор.
Приоритет порта(Приоритет порта): значение варьируется от 0 до 255. Чем меньше значение, тем выше приоритет порта. Чем выше приоритет порта, тем более вероятно, что он станет корневым портом.
Стоимость пути(Стоимость пути): протокол STP используется для выбора эталонного значения ссылки. Протокол STP вычисляет стоимость пути, выбирает «более сильную» ссылку, блокирует дополнительные ссылки и объединяет сеть в древовидную структуру без петель.
Схема сети базовой концепции связующего дерева показана на рисунке. Коммутаторы A, B и C. подключены последовательно. После расчета STP коммутатор A выбирается в качестве корневого моста, и линия между портом 2 и портом 6 блокируется.
Порты: порт 3 и порт 5 являются корневыми портами коммутатора B и коммутатора C соответственно, порт 1 и порт 4 являются назначенными портами коммутатора A и коммутатора B, порт 6 является заблокированным портом коммутатора C.
STPтаймер
Время контакта(Hello Time):
Значения варьируются от 1 до 10 секунд. Указывает на интервал времени для корневого моста для отправки пакетов данных BPDU всем другим коммутаторам, который используется коммутатором для обнаружения неисправности канала.
Время старения(Max. Age):
Значения варьируются от 6 до 40 секунд. Если пакет данных BPDU, отправленный корневым мостом, не был получен после превышения времени устаревания, коммутатор отправит пакеты данных BPDU всем другим коммутаторам и пересчитает связующее дерево.
Задержка передачи(Forward Delay):
Значения варьируются от 4 секунд до 30 секунд. Указывает на время, необходимое для миграции состояния порта коммутатора.
Когда сбой сети вызывает пересчет связующего дерева, структура связующего дерева будет соответственно изменяться. Однако пересчитанные новые сообщения конфигурации не могут быть немедленно распространены по всей сети.Если состояние порта изменяется немедленно, может возникнуть временная петля. С этой целью протокол связующего дерева использует механизм перехода между состояниями. Новый корневой порт и назначенный порт должны дважды пропускать задержку передачи перед началом пересылки данных. Эта задержка гарантирует, что новые сообщения конфигурации были переданы по всей сети.
STPРежим БПДУПринцип сравнения приоритетов
Предполагая, что есть два BPDU X и Y, тогда:
Если идентификатор корневого моста X меньше, чем идентификатор корневого моста Y, то X лучше, чем Y
Если идентификаторы корневого моста X и Y одинаковы, но стоимость корневого пути X меньше, чем Y, то X лучше, чем Y
Если идентификатор корневого моста и стоимость корневого пути X и Y одинаковы, но идентификатор моста X меньше, чем Y, то X лучше, чем Y
Если идентификатор корневого моста, стоимость корневого пути и идентификатор моста X и Y совпадают, но идентификатор порта X меньше, чем Y, то X лучше, чем Y
STPПроцесс расчета
Выбор оптимального BPDU: каждый коммутатор отправляет свой собственный BPDU наружу, а также получает BPDU, отправленные другими коммутаторами. Процесс сравнения описан в следующей таблице:
Выбор корневого моста: обмениваясь сообщениями конфигурации, идентификаторы корневого моста сравниваются между устройствами, и в качестве корневого моста выбирается устройство с наименьшим идентификатором корневого моста в сети.
Процесс выбора корневого порта и назначенного порта описан в следующей таблице:
RSTP
RSTP (Rapid Spanning Tree Protocol, Rapid Spanning Tree Protocol) является оптимизированной версией STP, которая значительно сокращает задержку перехода порта в состояние пересылки, тем самым сокращая время, необходимое для того, чтобы сеть в конечном итоге достигла топологической стабильности. Предпосылка состояния порта RSTP для достижения быстрой миграции заключается в следующем:
Условия для быстрого перехода состояния порта корневого порта: старый корневой порт на устройстве прекратил пересылку данных, а назначенный порт выше по потоку начал пересылку данных.
Условия для быстрого перехода статуса порта назначенного порта: назначенный порт является пограничным портом или назначенный порт подключен к двухточечной линии связи. Если назначенный порт является пограничным портом, назначенный порт может напрямую переходить в состояние пересылки, а если назначенный порт подключен к двухточечной линии связи, устройство может переходить в состояние пересылки сразу после получения ответа путем рукопожатия с нисходящим устройством.
RSTPОсновная концепция
Пограничный порт(Edge Port): порт, напрямую подключенный к терминалу, а не к другим коммутаторам.
Двухточечная связь: Это ссылка, напрямую соединенная между двумя коммутаторами.
MSTP
Характеристики MSTP следующие:
MSTP использует таблицу сопоставления экземпляров VLAN для связи VLAN и связующих деревьев, объединения нескольких VLAN в экземпляр и реализации балансировки нагрузки на основе экземпляра.
MSTP делит сеть связующего дерева на несколько доменов, каждый из которых образует множество внутренних связующих деревьев, и каждое связующее дерево не зависит друг от друга.
MSTP реализует распределение нагрузки данных VLAN во время пересылки данных.
MSTP совместим с STP и RSTP.
MSTPОсновная концепция
MSTдомен(Область с несколькими связующими деревьями): состоит из коммутаторов с одинаковой конфигурацией домена и одинаковыми отношениями сопоставления экземпляра VLAN.
IST(Внутреннее связующее дерево): связующее дерево в регионе MST.
CST(Общее связующее дерево, общее связующее дерево): единственное связующее дерево, которое соединяет все области MST в сети.
CIST(Общее и внутреннее связующее дерево): единственное связующее дерево, соединяющее все устройства в сети, состоящее из IST и CST.
Сетевая диаграмма базовой концепции MSTP показана на рисунке.
MSTPОсновной принцип
MSTP делит всю сеть на несколько областей MST, и CST генерируется путем вычисления между каждой областью, множественные связующие деревья генерируются вычислением внутри области, и каждое связующее дерево называется множественным экземпляром связующего дерева. MSTP, как и STP, использует BPDU для расчета связующего дерева, за исключением того, что BPDU переносят информацию о конфигурации MSTP.
MSTPРежим БПДУПринцип сравнения приоритетов
Предполагая, что есть два BPDU MSTP X и Y, тогда:
Если общий корневой идентификатор X меньше общего корневого ID Y, то X лучше Y
Если общие корневые идентификаторы X и Y одинаковы, но стоимость внешнего пути X меньше, чем Y, то X лучше, чем Y
Если общий корневой идентификатор X и Y такой же, как стоимость внешнего пути, но корневой идентификатор домена X меньше, чем корневой идентификатор домена Y, тогда X лучше, чем Y
Если общий корневой идентификатор, стоимость внешнего пути и корневой идентификатор домена для X и Y совпадают, но стоимость внутреннего пути для X меньше, чем Y, то X лучше, чем Y
Если общий идентификатор корня, стоимость внешнего пути, идентификатор корневого домена и стоимость внутреннего пути для X и Y одинаковы, но идентификатор моста для X меньше, чем Y, то X лучше, чем Y
Если общий идентификатор корня, стоимость внешнего пути, идентификатор корневого домена, стоимость внутреннего пути и идентификатор моста X и Y совпадают, но идентификатор порта X меньше, чем Y, то X лучше, чем Y
Статус порта
В MSTP, в зависимости от того, пересылает ли порт данные и как обрабатывать пакеты BPDU, статус порта можно разделить на следующие четыре типа:
Пересылка: получение и пересылка данных, получение и отправка сообщений BPDU, а также изучение адресов.
Обучение: не получать и не пересылать данные, получать и отправлять сообщения BPDU и выполнять изучение адресов.
Блокировка: не принимает и не пересылает данные, принимает, но не отправляет пакеты BPDU и не выполняет изучение адресов.
Отключено: физическое соединение отключено.
Роль порта
Роли порта MSTP подразделяются на следующие типы:
Корневой порт. Порт с наименьшей стоимостью пути к корневому мосту отвечает за пересылку данных на корневой мост.
Назначенный порт: порт, отвечающий за пересылку данных в нисходящий сегмент сети или устройство.
Главный порт: порт, соединяющий регион MST с корнем, расположенный на кратчайшем пути от всего региона до корня.
Порт замены: резервный порт корневого порта и мастер-порта.
Резервный порт: резервный порт назначенного порта.
Отключенный порт: порт, где физическое соединение отключено.
Rapid STP
Протоколы семейства STP обычно несильно будоражат умы инженеров. И в большинстве своём на просторах интернета чаще всего сталкиваешься с деталями работы максимум протокола STP. Но время не стоит на месте и классический STP всё реже встречается в работе и в различных материалах вендоров. Возникла идея сделать небольшой обзор ключевых моментов RSTP в виде FAQ. Всем, кому интересен данный вопрос, прошу под кат.
Что настраивать STP, RSTP или MST?
В современных стандартах протокол STP уже нигде не фигурирует. Известный всем 802.1d в последней редакции (802.1d-2004) описывает протокол RSTP. При этом MST перекочевал в 802.1q (802.1q-2014). Как мы помним, ранее RSTP описывался стандартом 802.1w, а MST — 802.1s.
RSTP и MST имеют существенно меньшее время сходимости. Они намного быстрее перестраивают топологию сети в случае отказа оборудования или каналов связи. Время сходимости для ряда отказов этих протоколов меньше 1 секунды против 30+ секунд в случае STP. Поэтому классический STP рекомендуется использовать только там, где задействуется старое оборудование, не поддерживающее более современные протоколы.
MST в своей работе использует алгоритмы RSTP. Но в отличие от RSTP, MST позволяет создавать отдельную топологию (instance) STP для группы VLANов. В случае обычного RSTP у нас на все VLANы одна общая топология. Это не очень удобно, так как не позволяет даже в ручном режиме балансировать трафик по разным каналам. А значит, мы теряем, как минимум половину пропускной способности в случае наличия избыточных путей.
Некоторые вендоры (в частности Cisco) предлагают ещё одну разновидность быстрого протокола STP – Rapid Per-VLAN Spanning Tree (PVRST+). В этом случае для каждой виртуальной сети строится своя топология, что позволяет более эффективно утилизировать каналы. Основной минус такого подхода – это ограничение на максимальное количество таких топологий. Для обеспечения работы каждой топологии устройство тратит аппаратные ресурсы. А они не безграничны. Например, в коммутаторах Cisco 2960 поддерживается максимум 128 «инстансов» STP.
Таким образом, MST является хорошей альтернативой между стандартным RSTP и проприетарным PVRST+. Особенно если наша сеть построена на базе коммутаторов разных производителей. Стоит заметить, что все три вариации быстрого STP совместимы друг с другом.
В дальнейшем, упоминая RSTP, мы будем подразумевать в том числе и его расширения MST/PVRST+.
Какие технологии обеспечивают быстроту реакции в работе RSTP?
RSTP в первую очередь опирается на работу механизмов, не привязанных к стандартным таймерам. Именно поэтому он позволяет получить существенно меньшее время сходимости сети. Можно выделить следующие улучшения в работе RSTP по сравнению с классическим STP:
В классическом варианте BPDU «генерит» в сети только корневой коммутатор. Все остальные устройства лишь ретранслируют его. Таким образом, отсутствие BPDU от вышестоящего устройства значит, что проблема может быть в любом месте между данным устройством и корневым коммутатором. Поэтому приходилось ждать достаточно долго (MaxAge=20 сек) прежде чем, смириться с тем, что что-то пошло не так и нужно перестраивать топологию.
В случае RSTP сообщения BPDU стали выполнять роль Hello-пакетов. Теперь потеря трёх таких пакетов (а это 2*3=6 сек) означает, что пора задуматься об изменениях в топологии.
В классическом STP порт, который должен стать корневым, проходит все стадии по переходу в режим передачи (Listening → Learning → Forwarding), что занимает более 30 секунд.
Прежде чем коснуться механизма Proposal/Agreement, нужно отметить два разных типа портов в RSTP: пограничный порт (Edge port) и не пограничный (non-Edge port). В Edge порт подключаются оконечные устройства (ПК, серверы, в ряде случаев маршрутизаторы и пр.). В не Edge-порт подключаются другие коммутаторы, участвующие в топологии STP.
Тип порта Edge задаётся вручную. Коммутатор не может быстро определить, кто к нему подключен: обычный хост или коммутатор. Конечно, он мог бы ориентироваться на наличие BPDU на этом порту. Но по стандарту коммутатор должен обязательно подождать минимум 15 секунд (Forward delay) прежде, чем решить, что на его порт так и не пришло ни одно сообщение. А это слишком долго. Поэтому право определить, что подключено к порту, доверили человеку.
На коммутаторах Cisco тип порта Edge задаётся командой spanning-tree portfast.
RSTP использует механизм Proposal/Agreement для быстрого переходя портов из состояния Discarding в состояние Forwarding. Этот механизм запускается, когда у коммутатора меняется Root Port (как минимум при включении в сеть). В этом случае он выключает все порты, не являющиеся Edge-портами. Об этом оповещает вышестоящий коммутатор (куда как раз смотрит Root port), после чего включает в режим Forwarding только Root port. Остальные порты (не Edge) находятся в заблокированном состоянии, пока не произойдёт одно из двух:
RSTP отличается от STP тем, что состояние порта отвязали от его роли. Это позволило описать роль порта в топологии сети без оглядки на его состояние. А значит, обладать лучшим видение топологии сети и возможностью оперативно реагировать на изменения в ней. Так появились альтернативный (alternative) и резервный (backup) порты. Альтернативный порт – замена корневому. Через него может быть достигнут корневой коммутатор, но при этом данный порт не имеет роли корневого (т.е. получает BPDU c худшей метрикой) и не является назначенным (т.е. не является лучшим в данном сегменте сети для достижимости корневого устройства).
В протоколе RSTP альтернативный порт переходит в состояние передачи сразу же после того, как откажет корневой. Такого же поведения можно добиться в классическом STP, используя проприетарные доработки. Например, Cisco предлагает для этих целей технологию UplinkFast.
В такой ситуации, если у устройства есть другой маршрут к корневому коммутатору, в классическом STP порт, который ранее был заблокирован, пройдёт все стадии и переключится в режим передачи только через 50 секунд (MaxAge + 2x Forward Delay).
В случае RSTP коммутатор немедленно оценит полученный BPDU (в RSTP нет MaxAge таймера) и начнёт передавать свои, выставив флаг Proposal. Получив такое BPDU, коммутатор, потерявший связь с «рутом», примет участие в механизме Proposal/Agreement, так как у него сменился корневой порт. А дальше достаточно оперативно порты на обоих коммутаторах перейдут в состояние передачи.
Классический STP считает, что топология изменилась, если порт перешёл из состояния заблокированный в состояние передачи или наоборот. Так как изменение топологии может привести к тому, что MAC адреса станут доступны через другие порты (а значит, коммутатор будет слать пакеты не туда), запускается процедура оповещения всех устройств о таком событии. Для этого рассылается сообщение Topology Change Notification (TCN). Получив которое, коммутатор меняет время старения MAC адресов со значения по умолчанию (300 сек) на 15 сек (Forward Delay). Сообщение TCN рассылается в два этапа. Сначала коммутатор, обнаруживший изменения в топологии, отправляет его в сторону корневого коммутатора. Далее корневой коммутатор, получив такое сообщение, узнаёт об изменении в сети и рассылает TCN сообщение (BPDU с соответствующим флагом) уже всем остальным. Двухуровневая схема необходима, так как BPDU в классическом варианте отправляется только корневым коммутатором.
В случае RSTP изменением в топологии считается только переход порта в режим передачи. Причём учитываются порты, которые не являются пограничным (non-edge port). Это и логично, так как переход порта в заблокированное состояние автоматически делает MAC адреса за ним больше не доступными. Как только обнаружено изменение топологии, коммутатор рассылает через все порты (корневой и назначенные) BPDU c флагом TC. Такое сообщение быстро распространяется по сети. Получив его, коммутаторы удаляют из таблицы все MAC адреса доступные через не edge порты, за исключением того, где был получен BPDU c флагом TC.
Edge порт никогда не вызывает изменений в топологии, а также для такого порта не сбрасываются MAC адреса в случае получения BPDU c флагом TC.
Почему RSTP иногда «тормозит» и переводит порт в режим передачи трафика только через несколько десятков секунд?
RSTP в своей работе использует обычные таймеры в следующих случаях:
Деление на порты Edge и non-Edge характерно не только для RSTP, но и для STP. Но в случае STP – это вендорная доработка протокола, нежели требования стандарта.
Основные «ЗА» включения на порту режима Edge (для оборудования Cisco – это portfast) в случае использования протокола STP:
С настройкой порта в режиме Edge нужно быть аккуратными.
Давайте посмотрим на поведение коммутатора Cisco с портом в режиме portfast (Edge). Порт сразу переходит в режим передачи. Но он продолжает участвовать в передаче BPDU и главное продолжает слушать сеть на наличие BPDU от других устройств, на случай если по ошибке к нему подключили другой коммутатор. Если вдруг приходит BPDU, порт теряет свое состояние portfast и проходит стандартные фазы RSTP. Так в чём же может быть проблема?
BPDU отправляются в диапазоне от 0 до 2 секунд после включения порта. Плюс можно добавить к этому время распространения BPDU по сети (актуально для STP). Поэтому в течение нескольких секунд в сети может быть петля. Если трафика будет очень много, этих секунд может оказаться достаточно, чтобы широковещательный шторм, порождённый петлёй, «убил» control-plane нашего коммутатора. Чтобы этого не допустить рекомендуется portfast настраивать в связке с дополнительными технологиями, например: BPDU Guard и storm-control.
Если сеть многовендорная, причём часть оборудования вообще не поддерживает STP ни в каком виде, всё будет плохо?
Это вопрос не совсем связан с работой RSTP, но всё же я решил его включить. Как это ни странно, подобные вопросы периодически возникают у наших заказчиков. Поэтому есть смысл на нём остановиться.
Если коммутатор не поддерживает STP ни в каком виде, что же он будет делать с BPDU пакетами? Ответ прост – передавать такие пакеты через все порты. В качестве MAC адреса назначения BPDU пакета STP и RSTP устанавливают адрес 0180.C200.0000, который является multicast адресом. Такой BPDU пакет передаётся в рамках VLAN 1.
Протокол MST данные обо всех топологиях упаковывает в один BPDU (кстати, именно поэтому максимальное количество инстансов для MST — 64). В качестве адреса назначения используется стандартный MAC-адрес 0180.C200.0000.
Протоколы PVST+ и PVRST+ в своей работе используют два типа BPDU:
Ещё один занятный момент связан с тем, что даже если мы исключим VLAN 1 из транка между коммутаторами, BPDU для первого VLAN всё равно будут передаваться.
В итоге, если в нашей топологии будет коммутатор, не поддерживающий STP, он будет выглядеть для топологии STP, как обычный канал связи.
А что произойдёт, если соединить два порта между собой на коммутаторе SW1 (т.е. сделать кольцо). Наша сеть погибнет? Есть большой шанс, что нет. В этом случае Root SW получит собственный BPDU на тот же порт, с которого его отправил. После этого он сразу же его заблокирует. И петля останется «жить» только в пределах коммутатора SW1. Но положительный исход возможен, только если Root SW раньше времени не «захлебнётся» от широковещательного шторма, появившегося вследствие петли на SW1. Поэтому лучше не использовать в сети коммутаторы, не поддерживающие STP.
Нужен ли STP/RSTP/MST/… в сети, если там нет петель?
Безусловно. Если петли нет сейчас, не факт, что она не появится в будущем. Например, из-за простой человеческой ошибки, когда один access-порт коммутатора подключается к другому access-порту того же устройства.
Данный FAQ не претендует на полноту. Он носит скорее ознакомительный характер и задаёт некий вектор дальнейших изысканий по тому или иному вопросу, связанному с работой современных протоколов семейства STP.