Stp для чего нужен

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Протокол Spanning Tree – самое важное

Протокол Spanning Tree (STP) обеспечивает отсутствие петель в топологии любой сети. Помимо предотвращения петель, STP изолирует угрозу от широковещательного шторма в сетях на втором уровне модели OSI (L2). Разберемся в терминах:

Полный курс по Сетевым Технологиям

В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Какие бывают порты?

Можно смело выделить 3 вида портов в рамках протокола Spanning Tree. А именно:

Статусы портов

Порт коммутатора может находиться в различных статусах, в зависимости от результата сходимости Spanning Tree:

BPDU (Bridge Protocol Data Unit) это фреймы, необходимые для обмена сообщениями между коммутаторами для выбора корневого (root) устройства в рамках механизма протокола STP (Spanning Tree Protocol).

Этапы протокола STP
Выбор корневого коммутатора

Например: 24577.00:00:00:00:00:01 / Приоритет. MAC – адрес

В процессе выбора корневого коммутатора, первым делом сравнивается приоритет. Если у двух коммутаторов одинаковых приоритет, то выбор базируется на MAC – адресе устройства.

Выбор корневого порта

Корневой порт выбирается на основании наименьшей «стоимости» пути к корневому коммутатору. Стоимость пути выражается из стоимости линков, ведущих к корневому коммутатору.

Выбор назначенного порта

Если два порта имеют одинаковую стоимость, сначала учитывается идентификатор устройства (Bridge ID), а затем идентификатор порта (Port ID).

Все остальные порты переходят в альтернативный статус и блокируются.

До запуска алгоритма Spanning Tree:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Полный курс по Сетевым Технологиям

В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Полезно?

Почему?

😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Источник

Протокол покрывающего дерева (STP)

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

STP, что означает протокол связующего дерева, — это протокол сетевого уровня, который помогает в построении логической топологии без петель для сетей Ethernet. Многие улучшенные версии STP продолжали поступать на рынок со временем, внося новые улучшения в этот протокол:

Вы можете видеть, что Cisco сделала много улучшений в этой области. Давайте вернемся к основам и рассмотрим причину, почему STP был необходим в первую очередь.

Прежде чем мы рассмотрим потребность в STP, давайте кратко рассмотрим, как работает уровень 2, когда ему нужно узнать адрес конкретного хоста.

Когда коммутатор получает пакет, но у него нет MAC-адреса узла назначения в его таблице, он транслирует сообщения на все узлы, кроме тех, от которых он получает. Если вы хотите узнать больше об этом, пожалуйста, обратитесь к этой статье на ARP.

Сценарий 1: широковещательный шторм

Давайте посмотрим на сценарий ниже:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Допустим, в сети есть три коммутатора, как показано выше. Все переключатели связаны друг с другом. Коммутатор B отправляет широковещательную рассылку, а коммутатор A и коммутатор C принимают ее. Они не находят адрес и повторно транслируют сообщение.

Коммутатор B снова получает ретранслируемое сообщение от коммутатора A и коммутатора C. Думая об этой трансляции как о новой трансляции, коммутатор B снова транслирует те же сообщения, которые уже транслировались ранее. Таким образом, широковещательный шторм имеет место. Это продолжается до тех пор, пока порты не выйдут из строя или не произойдет сбой коммутатора.

Сценарий 2: дубликаты пакетов

Рассмотрим ту же архитектуру сети, которая приведена в сценарии выше. Здесь есть небольшой поворот. На этот раз коммутатор C подключен к хосту назначения, который искал коммутатор B. Что теперь?

Переключатель B будет транслироваться снова. Трансляция также достигает коммутатора C и коммутатора A. Коммутатор C просматривает пакет и доставляет пакет на хост назначения.

Однако на другой параллельной стороне коммутатор A также проверил свою таблицу и не смог найти хост назначения. Таким образом, он также транслировал сообщение, и коммутатор C снова получил тот же пакет. Таким образом, он просматривает пакет и снова доставляет его на хост назначения.

В чем здесь проблема? Можете ли вы угадать, не читая дальше?

Самая большая проблема здесь — двойная доставка и потеря пропускной способности.

Теперь давайте выясним решение для сценария 2. Одним из лучших и самых простых решений было бы отключить коммутатор B от коммутатора C, чтобы не было дублирования пакетов. Потому что, в любом случае, коммутатор A будет транслировать пакет на коммутатор C, если хост назначения не найден в списке коммутатора A. Теперь это выглядит примерно так:

Если вы снова посмотрите на определение, теперь вы узнаете, почему STP был изобретен в первую очередь.

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Хотя мы нашли решение, мы, тем не менее, не уверены, что блокировка соединения между B и C была более выгодной, или блокирование того же между коммутатором B и A. Давайте рассмотрим все это подробнее.

Какой порт заблокировать в STP?

STP выполняет ряд простых шагов, которые помогают STP решать многие проблемы, в том числе блокировать порт. Но, перед этим, вот некоторые термины, которые могут быть вам полезны:

Корневой мост

Как и «Корень» в древовидной структуре, Корневой мост является основным коммутатором или мостом на графике, где разные узлы представляют все другие мосты. Корневой мост управляет топологией связующего дерева.

Назначенный мост

Назначенный мост — это коммутатор, ближайший к корневому мосту, через который кадры будут перенаправлены на корневой мост.

Альтернативный мост

Это альтернативный путь к корневому коммутатору, но он отличается от пути к корневому мосту.

Резервный мост

Это резервный путь к сегменту, хотя будет другой существующий путь.

Порты, которые отключены.

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

Порт экспедирования

Порт, который полноценно работает.

Порт обучения

Порт, который не пересылает кадры, но изучает MAC-адреса.

Порт прослушивания

Порт, который не пересылает кадры и не изучает MAC-адреса.

Отбрасывание порта

Порт, который не передает никаких данных.

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

Вот очень красивый пример из Википедии.

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

RP: корневой порт
DP: назначенный порт
BP: заблокированный порт

В целом весь процесс может выглядеть проще, но алгоритм работы за сценой сложен. Чем больше сеть, тем больше времени требуется алгоритму, чтобы расставить все по местам.

Операция протокола связующего дерева

Происходит следующий набор операций.

Определение корневого моста

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

Чтобы подтвердить утверждение, все коммутаторы должны транслировать свой идентификатор моста (BID), используя BPDU (блоки данных протокола моста). Общий идентификатор моста составляет 8 байтов, из которых 2 байта зарезервированы для приоритета моста, а остальные 6 байтов зарезервированы для MAC-адреса.

Идентификатор моста представляет собой комбинацию приоритета моста и MAC-адреса. За кулисами BID представляет собой сцепленную версию приоритета моста и MAC-адреса коммутатора / моста. По умолчанию каждый мост будет иметь идентификатор моста 32768, а каждый идентификатор моста будет кратен 4096.

Как определяется корневой мост?

После передачи широковещательного сообщения каждому мосту мост с минимальным значением BID становится корневым мостом. Если в обоих случаях приоритет моста одинаков, победителем будет самый низкий Mac-адрес.

Пример:

Допустим, есть связь между двумя мостами с BID:

Мост A: 32768.df56.6765.7876 и,
Мост B: 32768.df56.6765.7875

Теперь у вас есть вопрос — какой мост станет здесь корневым мостом? Если вы догадались, что это Мост B, значит, вы были правы.

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Давайте посмотрим, как эти отдельные коммутаторы реагируют на BPDU:

В тот момент, когда все коммутаторы включены, все коммутаторы, как упоминалось ранее, объявляют, что они являются корневым мостом, отправляя свой идентификатор моста в пакете приветствия.

Переключатель 1:

Когда коммутатор 1 получает приветственные BPDU от коммутатора 2 и коммутатора 3, он сравнивает значения идентификатора моста. В этой ситуации у коммутатора 1 самый низкий BID. Таким образом, коммутатор 1 отбрасывает пакеты приветствия, полученные от остальных коммутаторов, и продолжает объявлять себя корневым мостом.

Переключатель 2:

Здесь коммутатор 2 получает приветственные BPDU от обоих коммутаторов, то есть от коммутатора 1 и коммутатора 3. Давайте посмотрим, как коммутатор 2 реагирует на оба BPDU.

Когда Коммутатор 2 получает пакет от Коммутатора 1, он сравнивает значения BID и, безусловно, приветственный пакет BPDU от Коммутатора 1 заменяет его BID. Таким образом, коммутатор 2 изменяет свой BID на коммутатор 1. Когда он также получает BPDU от коммутатора 3, он будет сравнивать значения и будет продолжать отбрасывать BPDU из коммутатора 3.

Переключатель 3:

Допустим, коммутатор 3 сначала получает BPDU от коммутатора 2. Таким образом, он меняет свой BID на тот, что у коммутатора 2. Но когда он дополнительно получает BPDU от коммутатора 1, он снова меняет его на коммутатор 1.

В этот момент все коммутаторы получили BPDU друг друга и согласились с тем, что коммутатор 1 имеет самое низкое значение BID и, следовательно, является подходящим кандидатом на роль корневого моста сети.

После определения корневого моста коммутатор 2 и коммутатор 3 начинают организовывать свои соответствующие связи в корневые порты и назначенные порты, как обсуждалось в начале статьи.

Но выбор корневого моста — это не конец игры. Это только начало. И игра следует за: —

Определение маршрута с наименьшей стоимостью до корневого моста

Если вам известно о связующем дереве из теории графов, вы можете объяснить, почему мы говорим о расчете маршрута с наименьшей стоимостью до корневого моста.

В теории графов остовное дерево является подмножеством графа. Остовное дерево позволяет покрыть все вершины графа с минимально возможным числом ребер. Следовательно, остовное дерево не имеет петли, и, кроме того, оно также не может быть отключено.

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

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

В качестве первого шага Root Bridge отправляет поток BPDU всем остальным коммутаторам. Корневая стоимость определяется путем суммирования затрат сегментов на пути, по которому он прошел пакет BPDU для прохождения от корневого моста к узлу.

Стоимость сегмента также зависит от скорости соединения конкретного сегмента. Вот диаграмма того же самого.

Пропускная способностьЗатраты
10 Mbit100
100 Mbit19
1000 Mbit4

Иногда эти затраты на соединение возникают в захватывающих ситуациях, связанных с наименьшей стоимостью пути к корневому мосту. Посмотрите на картинку ниже: —

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Можете ли вы угадать корневой порт для коммутатора 3 на рисунке выше?

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

Вы можете догадаться, почему? В соответствии с таблицей выше, вот расходы.

Переключатель 3 на Root Bridge напрямую равен 100 из-за его канала 10 Мбит / с. Но если мы вычислим путь, как сказано выше, он будет (19 + 19 +4 = 42).

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

Далее все ссылки, подключенные напротив корневого порта, помечаются как назначенный порт. Также определяются заблокированные порты. Однажды все помечено и исправлено; сеть будет иметь полностью оптимизированную версию протокола связующего дерева.

Там могут быть другие условия. В случае большой сети в стоимости ссылки будет указана связь. В этом случае стоимость сети рассчитывается как часть Advanced STP. Advanced STP также говорит о том, что происходит в случае сбоя соединения.

Источник

Принцип работы протокола STP

Причина создания STP

Причиной создания протокола STP стало возникновение петель на коммутаторах. Что такое петля? Определение петли звучит так:

Петля коммутации (Bridging loop, Switching loop) — состояние в сети, при котором происходит бесконечная пересылка фреймов между коммутаторами, подключенными в один и тот же сегмент сети.

Из определения становится ясно, что возникновение петли создает большие проблемы — ведет к перегрузке свитчей и неработоспособности данного сегмента сети. Как возникает петля? На картинке ниже приведена топология, при которой будет возникать петля при отсутствии каких-либо защитных механизмов:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Возникновение петли при следующих условиях:

1. Какой-либо из хостов посылает бродкаст фрейм:

2. Также петля может образоваться и без отправки бродкаст фрейма.

Основы STP

Принцип работы данного протокола построен на том, что все избыточные каналы между коммутаторами логически блокируются и трафик через них не передается. Для построения топологии без избыточных каналов строится дерево (математический граф). Чтобы построить такое дерево вначале необходимо определить корень дерева, из которого и будет строиться граф. Поэтому первым шагом протокола STP является определение корневого коммутатора (Root Switch). Для определения Root Switch-a, коммутаторы обмениваются сообщениями BPDU. В общем, протокол STP использует два типа сообщений: BPDU — содержит информацию о коммутаторах и TCN — уведомляет о изменении топологии. Рассмотрим BPDU более детально. Про TCN более подробно поговорим ниже. При включении STP на коммутаторах, коммутаторы начинают рассылать BPDU сообщения. В данных сообщениях содержится следующая информация:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Фрейм BPDU имеет следующие поля:

Вот вывод информации о Bridge ID с коммутатора Switch1 из первой картинки. Priority — 32769 ( по умолчанию 32768 + Vlan Id), MAC-адреса — Address 5000.0001.0000:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Представим картину, коммутаторы только включились и теперь начинают строить топологию без петель. Как только коммутаторы загрузились, они приступают к рассылке BPDU, где информируют всех, что они являются корнем дерева. В BPDU в качестве Root Bridge ID, коммутаторы указывают собственный Bridge ID. Например, Switch1 отправляет BPDU коммутатору Switch3, а Switch3 отправляет к Switch1. BPDU от Switch1 к Switch3:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

BPDU от Switch3 к Switch1:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Как видим из Root Identifier, оба коммутотара друг другу сообщают, что именно он является Root коммутатором.

Выбор корневого коммутатора

Пока топология STP не построена, обычный трафик не передается из-за специальных состояний портов, о которых будет сказано ниже. Итак, Switch3 получается BPDU от Switch1 и изучает данное сообщение. Switch3 смотрит в поле Root Bridge ID и видит, что там указан другой Root Bridge ID, чем в том сообщении, которое отправил сам Switch3. Он сравнивает Root Bridge ID в данном сообщении со своим Root Bridge ID и видит, что хоть Priority одинаковые, но MAC-адрес данного коммутатора (Switch1) лучше (меньше), чем у него. Поэтому Switch3 принимает Root Bridge ID от Switch1 и перестает отправлять свои BPDU, а только слушает BPDU от Switch1. Порт, на котором был получен наилучший BPDU становится Root Port-ом. Switch1 также получив BPDU от Switch3, проводит сравнение, но в этом случае поведение Switch1 не меняется, так как полученный BPDU содержит худший Root Bridge ID, чем у Switch1. Таким образом, между Switch1 и Switch3 был определен корневой коммутатор. По аналогичной схеме происходит выбор корневого коммутатора между Switch1 и Switch2. Порты Gi0/0 на Switch2 и Switch3 становятся Root Port — порт, который ведет к корневому коммутатору. Через данный порт коммутаторы Switch2 и Switch3 принимают BPDU от Root Bridge. Теперь разберемся, что произойдет с каналом между Switch2 и Switch3.

Блокирование избыточных каналов

Как мы видим из топологии, канал между Switch2 и Switch3 должен быть заблокирован для предотвращения образования петель. Как STP справляется с этим?

После того, как выбран Root Bridge, Switch2 и Switch3 перестают отправлять BPDU через Root Port-ы, но BPDU, полученные от Root Bridge, они пересылают через все свои остальные активные порты, при этом изменив в данных BPDU только следующие поля:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен
А Switch3 от Switch2 получает такой BPDU:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

После обмена такими BPDU, Switch2 и Switch3 понимают, что топология избыточна. Почему коммутаторы понимают, что топология избыточна? И Switch2, и Switch3 в своих BPDU сообщают об одном и том же Root Bridge. Это означает, что к Root Bridge, относительно Switch3, существует два пути — через Switch1 и Switch2, а это и есть та самая избыточность против которой мы боремся. Также и для Switch2 два пути — через Switch1 и Switch3. Чтоб избавиться от этой избыточности
необходимо заблокировать канал между Switch3 и Switch2. Как это происходит?

Выбор на каком коммутатоторе заблокировать порт происходит по следующей схеме:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Здесь как оказалось заблокируется порт Gi 0/1 на коммутаторе Sw2. В данном голосовании определяющим становится Root Path Cost. Вернемся к нашей топологии. Так как путь до Root Bridge одинаковый, то в данном выборе побеждает Switch2, так как его priority равны, сравниваются Bridge ID. У Switch2 — 50:00:00:02:00:00, у Switch3 — 50:00:00:03:00:00. У Switch2 MAC-адрес лушче (меньше). После того, как выбор сделан, Switch3 перестает переслать какие-либо пакеты через данный порт — Gi1/0, в том числе и BPDU, а только слушает BPDU от Switch2. Данное состояние порта в STP называется Blocking(BLK). Порт Gi1/0 на Switch2 работает в штатном режиме и пересылает различные пакеты при необходимости, но Switch3 их сразу отбрасывает, слушая только BPDU. Таким образом, на данном примере мы построили топологию без избыточных каналов. Единственный избыточный канал между Switch2 и Switch3 был заблокирован при помощи перевода порта Gi1/0 на Switch3 в специальное состояние блокирования — BLK. Теперь более детально разберем механизмы STP.

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

Мы говорили выше, что, например, порт Gi1/0 на Switch3 переходит в специальное состояние блокирования — Blocking. В STP существуют следующие состояния портов:

Blocking — блокирование. В данном состоянии через порт не передаются никакие фреймы. Используются для избежания избыточности топологии.

Listening — прослушивание. Как мы говорили выше, что до того, пока еще не выбран корневой коммутатор, порты находятся в специальном состоянии, где передаются только BPDU, фреймы с данными не передаются и не принимаются в этом случае. Состояние Listening не переходит в следующее даже, если Root Bridge определен. Данное состояние порта длится в течении Forward delay timer, который, по умолчанию, равен 15. Почему всегда надо ждать 15 секунд? Это вызвано осторожностью протокола STP, чтоб случайно не был выбран некорректный Root Bridge. По истечению данного периода, порт переходит в следующее состояние — Learning.

Learning — обучение. В данном состояние порт слушает и отправляет BPDU, но информацию с данными не отправляет. Отличие данного состояния от Listening в том, что фреймы с данными, который приходят на порт изучаются и информация о MAC-адресах заносится в таблицу MAC-адресов коммутатора. Переход в следующее состояние также занимает Forward delay timer.

Forwarding — пересылка. Это обычное состояние порта, в котором отправляются и пакеты BPDU, и фреймы с обычными данными. Таким образом, если мы пройдемся по схеме, когда коммутаторы только загрузились, то получается следующая схема:

Роли портов

Помимо состояний портов, также в STP нужны определить портам их роли. Это делается для того, чтоб на каком порте должен ожидаться BPDU от корневого коммутатора, а через какие порты передавать копии BPDU, полученных от корневого коммутатора. Роли портов следующие:

Root Port — корневой порт коммутатора. При выборе корневого коммутатора также и определяется корневой порт. Это порт через который подключен корневой коммутатор. Например, в нашей топологии порты Gi0/0 на Switch2 и Switch3 являются корневыми портами. Через данные порты Switch2 и Switch3 не отправляют BPDU, а только слушают их от Root Bridge. Возникает вопрос — как выбирается корневой порт? Почему не выбран порт Gi1/0? Через него ведь тоже можно иметь связь с коммутатором? Для определения корневого порта в STP используется метрика, которая указывает в поле BPDU — Root Path Cost (стоимость маршрута до корневого свича). Данная стоимость определяется по скорости канала.

Switch1 в своих BPDU в поле Root Path Cost ставит 0, так как сам является Root Bridge. А вот, когда Switch2, когда отправляет BPDU к Switch3, то изменяет данное поле. Он ставит Root Path Cost равным стоимости канала между собой и Switch1. На картинке BPDU от Switch2 и Switch3 можно увидеть, что в данном поле Root Path Cost равен 4, так как канал между Switch1 и Switch2 равен 1 Gbps. Если количество коммутаторов будет больше, то каждый следующий коммутатор будет суммировать стоимость Root Path Cost. Таблица Root Path Cost.

Designated Port — назначенный порт сегмента. Для каждого сегмента сети должен быть порт, который отвечает за подключение данного сегмента к сети. Условно говоря, под сегментом сети может подразумеваться кабель, который осуществляет подключение данного сегмента. Например, порты Gi0/2 на Switch1, Switch3 подключают отдельные сегменты сети, к которым ведет только данный кабель. Также, например, порты на Root Bridge не могут быть заблокированы и все являются назначенными портами сегмента. После данного пояснения можно дать более строгое определения для назначенных портов:
Designated Port (назначенный) — некорневой порт моста между сегментами сети, принимающий трафик из соответствующего сегмента. В каждом сегменте сети может быть только один назначенный порт. У корневого коммутатора все порты — назначенные.

Также важно заметить, что порт Gi1/0 на Switch2 также является назначенным, несмотря на то, что данный канал связи заблокированным на Switch3. Условно говоря, Switch2 не имеет информации о том, что на другом конце порт заблокирован.

Nondesignated Port — неназначенный порт сегмента. Non-designated Port (неназначенный) — порт, не являющийся корневым, или назначенным. Передача фреймов данных через такой порт запрещена. В нашем примере, порт Gi1/0 является неназначенным.

Disabled Port — порт который находится в выключенном состоянии.

Таймеры и сходимость протокола STP

После того, как STP завершил построение топологии без петель, остается вопрос — Как определять изменения в сети и как реагировать на них? Сообщения BPDU при помощи которых работает STP, рассылаются Root Bridge каждые 2 секунды, по умолчанию. Данный таймер называется Hello Timer. Остальные коммутаторы получив через свой root port данное сообщение пересылают его дальше через все назначенные порты. Выше сказано более подробно какие изменения происходят с BPDU при пересылки его коммутаторов. Если в течении времени, определенным таймером Max Age (по умолчанию — 20 секунд), коммутатор не получил ни одного BPDU от корневого коммутатора, то данное событие трактуется как потеря связи с Root Bridge. Для того, чтобы более корректно описать сходимость протокола необходимо изменить нашу топологию и поставить между коммутаторами хабы. Мы добавили хабы, чтоб при выходе из строя одного из коммутаторов или выхода из строя линка, другие коммутаторы не определяли это по падению линка, а использовали таймеры:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

Перед тем, как начать также важно рассказать подробнее о другом типе сообщения STP — TCN. TCN рассылается коммутаторами в случае изменения топологии — как только на каком-либо коммутаторе изменилась топология, например, изменилось состояние интерфейса. TCN отправляется коммутатором только через Root Port. Как только корневой коммутатор получит TCN, он сразу меняет параметр времени хранения MAC-адресов в таблице с 300 секунд до 15 (для чего это делается будет сказано ниже) и в следующем BPDU, Root Switch проставляет флаг — TCA ( Topology Change Acknledgement ), который отправляется коммутатору отправившем TCN для уведовления о том, что TCN был получен. Как только TCN достигает Root Bridge, то он рассылает специальный BPDU, который содержится TCN флаг по всем остальным интерфейсам к другим коммутаторам. На картинке показана структура TCN:

Stp для чего нужен. Смотреть фото Stp для чего нужен. Смотреть картинку Stp для чего нужен. Картинка про Stp для чего нужен. Фото Stp для чего нужен

TCN был включен в STP, чтоб некорневые коммутаторы могли уведовлять об изменении в сети. Обычными BPDU они этого делать не могут, так как некорневые коммутаторы не отправляют BPDU. Как можно заметить структура TCN не несет в себе никакой информации о том, что именно и где изменилось, а просто сообщает что где-то что-то изменилось. Теперь перейдем к рассмотрению вопроса о сходимости STP.

Посмотрим, что произойдет если мы отключим интерфейс Gi0/1 на Switch1 и посмотрим при помощи каких механизмов перестроится дерево STP. Switch2 перестанет получать BPDU от Switch1 и не будет получать BPDU от Switch3, так как на Switch3 данный порт заблокирован. У Switch2 уйдет 20 секунд ( Max Age Timer ), чтоб понять потерю связи с Root Bridge. До этого времени, Gi0/0 на Switch2 будет находится в состоянии Forwarding с ролью Root Port. Как только истечет Max Age Timer и Switch2 поймет потерю связи, он будет заново строить дерево STP и как это свойственно STP начнет считать себя Root Bridge. Он отправит новый BPDU, где укажет самого себя в качестве Root Bridge через все активные порты, в том числе и на Switch3. Но таймер Max Age, истекший на Switch2 также истек и на Switch3 для интерфейса Gi1/0. Данный порт уже 20 секунд не получал BPDU и данный порт перейдет в состояние LISTENING и отправит BPDU c указанием в качестве Root Bridge — Switch1. Как только Switch2 примет данный BPDU, он перестанет считать себя Root Bridge и выберет в качестве Root Port — интерфейс Gi1/0. В этот момент Switch2 также отправит TCN через Gi1/0, так как это новый Root Port. Это приведет к тому, что время хранения MAC-адресов на коммутаторах уменьшится с 300 секунд до 15. Но на этом работоспособность сети не восстановится полностью, необходимо подождать пока порт Gi1/0 на Switch3 пройдет состояние Listening, а затем Learning. Это займет время равное двум периодам Forward delay timer — 15 + 15 = 30 секунд. Что мы получаем — при потери связи Switch2 ждет пока истечет таймер Max Age = 20 секунд, заново выберает Root Bridge через другой интерфейс и ждет еще 30 секунд пока ранее заблокированный порт перейдет в состояние Forwarding. Суммарно получаем, что связь между VPC5 и VPC6 прервется на 50 секунд. Как было сказано несколькими предложениями выше при изменение Root Port с Gi0/0 на Gi1/0 на Switch2 был отправлен TCN. Если бы этого не произошло, то все MAC-адреса, изученные через порт Gi 0/0, оставались бы привязаны к Gi0/0. Например, MAC-адрес VPC5 и VPC7 несмотря на то, что STP завершит сходимость через 50 секунд, связь между VPC6 и VPC5, VPC7 не была бы восстановлена, так как все пакеты предназначенные VPC5, VPC7 отправлялись через Gi0/0. Надо было бы ждать не 50 секунд, а 300 секунд пока таблица MAC-адресов перестроится. При помощи TCN, время хранение изменилось с 300 секунд до 15 и пока интерфейс Gi1/0 на Switch3 проходил состояния Listening, а затем Learning и данные о MAC-адресах обновятся.

Также интересен вопрос, что произойдет, если мы заново включим интерфейс Gi0/1 на Switch1? При включение интерфейса Gi0/1, он, как и подобает, перейдет в состояние Listening и начнет рассылать BPDU. Как только Switch2 получит BPDU на порту Gi0/0, то сразу перевыберет свой Root Port, так как тут Cost будет наименьшем и начнет пересылать траффик через интерфейс Gi0/0, но нам необходимо подождать пока интерфейс Gi0/1 пройдет состояния Listening, Learning до Forwarding. И задержка будет уже не 50 секунд, а 30.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *