что такое bpdu пакеты
Принцип работы протокола STP
Причина создания STP
Причиной создания протокола STP стало возникновение петель на коммутаторах. Что такое петля? Определение петли звучит так:
Петля коммутации (Bridging loop, Switching loop) — состояние в сети, при котором происходит бесконечная пересылка фреймов между коммутаторами, подключенными в один и тот же сегмент сети.
Из определения становится ясно, что возникновение петли создает большие проблемы — ведет к перегрузке свитчей и неработоспособности данного сегмента сети. Как возникает петля? На картинке ниже приведена топология, при которой будет возникать петля при отсутствии каких-либо защитных механизмов:
Возникновение петли при следующих условиях:
1. Какой-либо из хостов посылает бродкаст фрейм:
2. Также петля может образоваться и без отправки бродкаст фрейма.
Основы STP
Принцип работы данного протокола построен на том, что все избыточные каналы между коммутаторами логически блокируются и трафик через них не передается. Для построения топологии без избыточных каналов строится дерево (математический граф). Чтобы построить такое дерево вначале необходимо определить корень дерева, из которого и будет строиться граф. Поэтому первым шагом протокола STP является определение корневого коммутатора (Root Switch). Для определения Root Switch-a, коммутаторы обмениваются сообщениями BPDU. В общем, протокол STP использует два типа сообщений: BPDU — содержит информацию о коммутаторах и TCN — уведомляет о изменении топологии. Рассмотрим BPDU более детально. Про TCN более подробно поговорим ниже. При включении STP на коммутаторах, коммутаторы начинают рассылать BPDU сообщения. В данных сообщениях содержится следующая информация:
Фрейм BPDU имеет следующие поля:
Вот вывод информации о Bridge ID с коммутатора Switch1 из первой картинки. Priority — 32769 ( по умолчанию 32768 + Vlan Id), MAC-адреса — Address 5000.0001.0000:
Представим картину, коммутаторы только включились и теперь начинают строить топологию без петель. Как только коммутаторы загрузились, они приступают к рассылке BPDU, где информируют всех, что они являются корнем дерева. В BPDU в качестве Root Bridge ID, коммутаторы указывают собственный Bridge ID. Например, Switch1 отправляет BPDU коммутатору Switch3, а Switch3 отправляет к Switch1. BPDU от Switch1 к Switch3:
BPDU от Switch3 к Switch1:
Как видим из 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 только следующие поля:
А Switch3 от Switch2 получает такой BPDU:
После обмена такими BPDU, Switch2 и Switch3 понимают, что топология избыточна. Почему коммутаторы понимают, что топология избыточна? И Switch2, и Switch3 в своих BPDU сообщают об одном и том же Root Bridge. Это означает, что к Root Bridge, относительно Switch3, существует два пути — через Switch1 и Switch2, а это и есть та самая избыточность против которой мы боремся. Также и для Switch2 два пути — через Switch1 и Switch3. Чтоб избавиться от этой избыточности
необходимо заблокировать канал между Switch3 и Switch2. Как это происходит?
Выбор на каком коммутатоторе заблокировать порт происходит по следующей схеме:
Здесь как оказалось заблокируется порт 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 — TCN. TCN рассылается коммутаторами в случае изменения топологии — как только на каком-либо коммутаторе изменилась топология, например, изменилось состояние интерфейса. TCN отправляется коммутатором только через Root Port. Как только корневой коммутатор получит TCN, он сразу меняет параметр времени хранения MAC-адресов в таблице с 300 секунд до 15 (для чего это делается будет сказано ниже) и в следующем BPDU, Root Switch проставляет флаг — TCA ( Topology Change Acknledgement ), который отправляется коммутатору отправившем TCN для уведовления о том, что TCN был получен. Как только TCN достигает Root Bridge, то он рассылает специальный BPDU, который содержится TCN флаг по всем остальным интерфейсам к другим коммутаторам. На картинке показана структура TCN:
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. Более подробно в данной статье рассматривать их не буду, материалы по поводу них можно найти в избытке на различных сайтах.
Bpdu пакеты что это
Пакеты BPDU (рис.5.18.)содержат основную информацию, необходимую для построения топологии сети без петель:
• Идентификатор коммутатора, на основании которого выбирается корневой коммутатор;
• Расстояние от коммутатора-источника до корневого коммутатора (стоимость корневого маршрута);
• Пакеты BPDU помещаются в поле данных кадров канального уровня, например, кадров Ethernet.
Коммутаторы обмениваются BPDU через равные интервалы времени (обычно 1-4с). В случае отказа корневого моста (что сигнализирует об изменении топологии) соседние коммутаторы, не получив пакет BPDU в течение заданного времени (Max Age), начинают пересчет cвязующего дерева.
Пакет BPDU имеет следующие поля (рис.5.18.)
• Идентификатор (ID) версии протокола STA — 2 байта. Коммутаторы должны поддерживать одну и ту же версию протокола STA, иначе может установиться активная конфигурация с петлями;
ID версии протокола STA | Версия | Тип BPDU | Флаг | ID корневого коммутатора | Расстояние до корня | ID коммутатора | ID порта | Время жизни сообщения | Максимальное время жизни сообщения | Интервал hello | Задержка смены состояния |
Рисунок 5.18. Формат конфигурационного BPDU
• Версия протокола STP – 1 байт;
• Тип BPDU — 1 байт. Существует два типа BPDU — конфигурационный BPDU, то есть заявка на возможность стать корневым коммутатором, на основании которой происходит определение активной конфигурации, и BPDU уведомления о реконфигурации, которое посылается коммутатором, обнаружившим событие, требующее проведения реконфигурации — отказ линии связи, отказ порта, изменение приоритетов коммутатора или портов;
• Флаги — 1 байт. Один бит содержит флаг изменения конфигурации, второй бит — флаг подтверждения изменения конфигурации;
• Идентификатор (ID корневого коммутатора — 8 байтов;
• Расстояние до корня — 2 байта;
• Идентификатор (ID) коммутатора — 8 байтов;
• Идентификатор порта — 2 байта;
• Время жизни сообщения — 2 байта. Измеряется в единицах по 0.5 с, служит для выявления устаревших сообщений. Когда пакет BPDU проходит через коммутатор, тот добавляет ко времени жизни пакета время его задержки данным коммутатором;
• Максимальное время жизни сообщения — 2 байта. Если пакет BPDU имеет время жизни, превышающее максимальное, то он игнорируется коммутаторами;
• Интервал hello (время приветствия), через который посылаются пакеты BPDU корневым коммутатором;
• Задержка смены состояний — 2 байта. Минимальное время перехода портов коммутатора в активное состояние. Такая задержка необходима, чтобы исключить возможность временного возникновения альтернативных маршрутов при неодновременной смене состояний портов во время реконфигурации.
Пакет BPDU уведомления о реконфигурации (см. Рис.5.19) имеет следующие поля:
• Идентификатор версии протокола STA — 2 байта;
• Версия протокола STP – 1 байт;
• Тип BPDU — 1 байт с установленным флагом реконфигурации топологии.
1…2 | ||
Идентификатор версии протокола STA | Версия протокола STP | Тип BPDU |
Рисунок 5.19.Формат пакета BPDU уведомления о реконфигурации
Пример работы STP
Для примера рассмотрены 3 коммутатора, подключенные с образованием петли (см. Рис. 5.20.). Таким образом, в сети могут возникнуть проблемы с зацикливанием пакетов. Например, пусть какой-либо компьютер в сети LAN1 посылает широковещательный пакет. В соответствии с логикой работы коммутаторов, коммутатор А передаст этот пакет во все
подключенные к нему сегменты, за исключением того, из которого он пришел. Коммутатор B получит этот пакет и передаст его коммутатору С. Коммутатор С, также получит широковещательный пакет от коммутатора А и передаст его коммутатору В. Тот в свою очередь, вернет его коммутатору A и так далее. Пакеты могут ходить по сети бесконечно долго, что может привести к нарушению работоспособности сети. В этом примере с помощью STP блокируется соединение между коммутаторами С и B.
Итак, после включения питания и загрузки каждый коммутатор начинает считать себя корневым. Когда он генерирует BPDU (через интервал hello), он помещает свой идентификатор в поле «идентификатор корневого коммутатора», расстояние до корня устанавливается в 0, а в качестве идентификатора порта указывается идентификатор того порта, через который будет передаваться BPDU.
Рисунок 5.20. — Схема перед применением Spanning Tree
Как только коммутатор получает BPDU, в котором имеется идентификатор корневого коммутатора, меньше его собственного, он перестает генерировать свои собственные кадры BPDU, и начинает ретранслировать только кадры нового претендента на звание корневого коммутатора. При ретрансляции кадров он наращивает расстояние до корня, указанное в пришедшем BPDU, на условное время сегмента, через который принят данный кадр. При ретрансляции кадров каждый коммутатор для каждого своего порта запоминает минимальное расстояние до корня. При завершении процедуры установления конфигурации покрывающего дерева, каждый коммутатор находит свой корневой порт — это порт, который ближе других портов находится по отношению к корню дерева.
Рассмотрим выборы корневых портов коммутаторов на примере (см. Рисунок 4). Когда коммутатор A (корневой мост) посылает BPDU, они содержат стоимость пути к корневому мосту равную 0. Когда коммутатор B получает эти BPDU, он добавляет стоимость пути Port 1 (4) к стоимости, указанной в полученном BPDU (0). Коммутатор B затем использует значение 4 и посылает BPDU со стоимостью пути к корню равной 4 через Port 3 и Port 2.
Когда коммутатор C получает BPDU от коммутатора B, он увеличивает стоимость пути к корню до 23 (4 + 19). Однако коммутатор C также получает BPDU от корневого коммутатора А через Port 1. Стоимость пути к корню в этом BPDU равна 0 и коммутатор C увеличивает ее стоимость до 4 (стоимость его Port 1 равна 4). Теперь коммутатор C должен выбрать единственный корневой порт. Коммутатор C выбирает Port 1 в качестве корневого, поскольку его стоимость пути к корню меньше. После этого коммутатор C начинает объявлять стоимость пути до корня равную 4 нижележащим коммутаторам.
Выборы корневого порта коммутатора В происходят аналогично и корневым портом для него становится Port 1 со стоимостью 4.
Итак, после включения питания и загрузки каждый коммутатор начинает считать себя корневым. Когда он генерирует BPDU (через интервал hello), он помещает свой идентификатор в поле «идентификатор корневого коммутатора», расстояние до корня устанавливается в 0, а в качестве идентификатора порта указывается идентификатор того порта, через который будет передаваться BPDU.
Рисунок 5.21. – После применения Spanning Tree
Кроме этого, коммутаторы выбирают для каждого сегмента сети назначенный порт. Для этого они исключают из рассмотрения свой корневой порт, а для всех своих оставшихся портов сравнивают принятые по ним минимальные расстояния до корня с расстоянием до корня своего корневого порта. Если у своего порта это расстояние меньше принятых, то это значит, что он является назначенным портом. Когда имеется несколько портов с одинаковым кратчайшим расстоянием до корневого коммутатора, то для выбора назначенного порта сегмента STP принимает решение на основе последовательного сравнения идентификаторов мостов и идентификаторов портов. Все порты, кроме назначенных переводятся в заблокированное состояние и на этом построение покрывающего дерева заканчивается. На коммутаторе В корневым портом является Port 1 (стоимость 4). Поэтому для сегмента коммутатор А – коммутатор В, назначенным портом будет Port 1 коммутатора А. На коммутаторе С корневым портом является Port 1 (стоимость 4). Поэтому для сегмента коммутатор А – коммутатор С, назначенным портом будет Port 2 коммутатора А. В сегменте коммутатор В – коммутатор С оба порта Port 3 и Port 2 имеют одинаковую стоимость пути, равную 23. В этом случае STP выберет назначенный порт сегмента на основе сравнения идентификаторов мостов. Поскольку идентификатор коммутатора С (20) меньше идентификатора коммутатора В (30), то назначенным портом для этого сегмента станет Port 2 коммутатора С. Port 3 на коммутаторе В заблокируется (см. Рис. 5.21).
Таким образом, в процессе построения топологии сети каждый порт коммутатора проходит несколько стадий (см. Рис.5.22.):
1. Порт активен или инициализация порта;
2. Порт отключен администратором или сбой порта;
3. Порт выбран в качестве корневого или назначенного порта;
4. Порт заблокирован;
5. Истек таймер смены состояний.
Blocking— При инициализации коммутатора все порты (за исключением отключенных) автоматически переводятся в состояние «Заблокирован». В этом случае порт принимает и обрабатывает только пакеты BPDU. Все остальные пакеты отбрасываются.
Рисунок 5.22. – Состояние портов в STP
Listening(прослушивание) — в этом состоянии порт продолжает принимать, обрабатывать и ретранслировать только пакеты BPDU. Из этого состояния порт может перейти в состояние «Заблокирован», если получит BPDU с лучшими параметрами, чем его собственные (расстояние, идентификатор коммутатора или порта). В противном случае, при истечении таймера смены состояний, порт перейдет в следующее состояние «Обучение».
Learning(обучение) – порт начинает принимать все пакеты и на основе адресов источника строить таблицу коммутации. Порт в этом состоянии все еще не продвигает пакеты. Порт продолжает участвовать в работе алгоритма STA, и при поступлении BPDU с лучшими параметрами переходит в состояние «Заблокирован». В противном случае, при истечении таймера смены состояний, порт перейдет в следующее состояние «Продвижение».
Forwarding(продвижение) — в этом состоянии порт может обрабатывать пакеты данных в соответствии с построенной таблицей коммутации. Также продолжают приниматься, передаваться и обрабатываться пакеты BPDU.
Disable(отключен) – в это состояние порт переводит администратор. Отключенный порт не участвует ни в работе протокола STP, ни в продвижении пакетов данных. Порт можно также вручную включить и он сначала перейдет в состояние Blocking. В процессе нормальной работы корневой коммутатор продолжает генерировать служебные пакеты BPDU, а остальные коммутаторы продолжают их принимать своими корневыми портами и ретранслировать назначенными. Если по истечении максимального времени жизни сообщения (по умолчанию — 20 с) корневой порт любого коммутатора сети не получит служебный пакет BPDU, то он инициализирует новую процедуру построения покрывающего дерева. Коммутаторы D-Link также поддерживают протокол Rapid STP (IEEE 802.1w), который обладает лучшим u1074 временем сходимости по сравнению с STP (меньше 1 секунды).
Ограничения в сетях с использованием повторителей, мостов и коммутаторов.
1. Не должно быть петель, т. е. между отправителем и получателем должен быть единственный путь.
2. Сегменты слабо изолированы друг от друга, т. е. не защищены от широковещательных сообщений со стороны отдельных ПК в сети.
3. Нельзя управлять трафиком (т. е. обменом данными) на основании информации, содержащейся в этих данных.
Эти недостатки можно устранить в случае применения маршрутизатора, они используется в больших сетях, которые в свою очередь могут состоять из более мелких составных частей (подсетей).
С применением маршрутизаторов используется специальная адресация, которая позволяет однозначно идентифицировать любой узел (т. е. РС) составной сети. Для этого применяется уникальная нумерация всех подсетей и нумерация всех узлов в пределах каждой подсети. Этот адрес помещается в заголовок пакета данных.
| | следующая лекция ==> | |
Множественные петли | | | Маршрутизатор (Router) |
Дата добавления: 2018-11-25 ; просмотров: 934 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Bpdu — … Википедия
BPDU — Br >Abbreviations dictionary
BPDU — ● ►en sg. f. ►COMM Br >Dictionnaire d’informatique francophone
BPDU — abbr. Br >United dictionary of abbreviations and acronyms
Spanning tree protocol — Détermination d un spanning tree Le Spanning Tree Protocol (aussi appelé STP) est un protocole réseau de niveau 2 permettant de déterminer une topologie réseau sans boucle (appelée arbre) dans les LAN avec ponts. Il est défini dans la norme IEEE… … Wikipédia en Français
Spanning Tree Protocol — Internet protocol suite Application layer BGP DHCP DNS FTP HTTP … Wikipedia
Spanning tree protocol — The Spanning Tree Protocol is an OSI layer 2 protocol that ensures a loop free topology for any br >Wikipedia
Spanning Tree — protocol Le Spanning Tree Protocol (aussi appelé STP) est un protocole réseau permettant une topologie réseau sans boucle dans les LAN avec pont. Il est défini dans la norme IEEE 802.1D. Sommaire 1 Mode de fonctionnement 1.1 Élection d un root br … Wikipédia en Français
Spanning Tree Protocol — Le Spanning Tree Protocol (aussi appelé STP) est un protocole réseau permettant une topologie réseau sans boucle dans les LAN avec pont. Il est défini dans la norme IEEE 802.1D. Sommaire 1 Mode de fonctionnement 1.1 Élection d un root br … Wikipédia en Français
Spanning tree — (Spanning Tree Protocol) (SmmTPr) es un protocolo de red de nivel 2 de la capa OSI, (nivel de enlace de datos). Está basado en un algoritmo diseñado por Radia Perlman mientras trabajaba para DEC. Hay 2 versiones del STP: la original (DEC STP) y… … Wikipedia Español
Пакеты BPDU регулярно посылаются по сети (по умолчанию, каждые 2 секунды), что позволяет коммутаторам постоянно отслеживать изменения в сети и немедленно на них реагировать.
Стабильность работы активной сетевой конфигурации, определяется следующими факторами:
Уникальный идентификатор коммутатора (MAC адрес), ассоциируется с каждым коммутатором.
Вес пути до корневого коммутатора, присваивается каждому порту.
Идентификатор порта (MAC адрес), ассоциируется с каждым портом коммутатора.
Каждый конфигурационный BPDU пакет содержит следующую информацию:
Уникальный идентификатор коммутатора (MAC адрес), который переправляется корневому коммутатору.
Вес пути до корневого коммутатора от отправившего пакет порта.
Идентификатор порта (MAC адрес), отправившего пакет.
Обмен пакетами BPDU приводит к следующим результатам:
Выбирается единственный корневой коммутатор. Если такой коммутатор не настроен вручную, то корневым выбирается коммутатор, с наименьшим MAC адресом.
Высчитывается кратчайшее расстояние, от корневого коммутатора, до каждого коммутатора сети.
Также определяются коммутаторы, расположенные близ корневого, они будут переправлять пакеты на корневой коммутатор.
Выбираются порты коммутаторов, которые менее всего удалены от корневого коммутатора. Если есть несколько эквивалентных путей, то будет выбран порт с наименьшим MAC адресом.
Выбираются порты, отключенные протоколом STP.
Если все коммутаторы сети настроены по умолчанию, то корневым коммутатором будет выбран коммутатор с наименьшим MAC адресом (ID шлюза). Однако, в зависимости от топологии сети, количества портов, типов и скоростей соединений, автоматический выбор корневого коммутатора по наименьшему MAC адресу, не всегда является оптимальным. Можно запустить перерасчет топологии STP заново, чтобы выбрать более подходящий корневой коммутатор, путем повышения его приоритета в сети.
На Рисунке 1 отображен формат пакета BPDU.
Рисунок 1 — Формат пакета BPDU
Таймеры протокола SpanningTree
Таймеры в протоколе SpanningTree, используются для обеспечения стабильности собранной топологии сети, а также для устранения дублирующихся пакетов в сети, перед началом передачи данных по сети. Существует несколько видов таймеров:
Hello — Это время, между отправками на порт пакетов BPDU. По умолчанию, установлен интервал в 2 секунды, но на коммутаторе можно установить значение от 1 до 10 секунд.
Forward delay — Это время, в течение которого порт коммутатора будет находиться в состояниях listening и leaning. По умолчанию, установлено значение в 15 секунд, но на коммутаторе можно установить значение от 4 до 30 секунд.
Maxage- Таймер, контролирующий период времени, через которое порт сохраняет свою конфигурацию BPDU. По умолчанию, установлен интервал в 20 секунд, но на коммутаторе можно установить значение от 6 до 40 секунд.
По умолчанию, значения таймеров, используемые в протоколе SpanningTree, достаточно велики для современных сетей. Например, посчитаем время инициализации порта коммутатора:
20 секунд для Max age + 2 x forward delay (15 секунд на listening/learning) = 50 секунд.
Вес пути напрямую зависит от скорости соединения. Коммутаторы используют путь с наименьшим весом, как основной путь передачи данных. Если существует дублирующий путь, с более высоким весом, то путь не будет использоваться, до тех пор, пока путь с меньшим весом остается доступным. На таблице 1 показано соответствие скорости соединения и веса пути интерфейса.
Таблица 1 — Соответствие скорости соединения и веса пути интерфейса
Оборудование, работающее на втором уровне модели OSI (коммутатор), должно выполнять 3 функции: запоминание адресов, перенаправление (коммутация) пакетов, защита от петель в сети. Разберем по пунктам каждую функцию.
Запоминание адресов и перенаправление пакетов: у каждого коммутатора есть таблица сопоставления MAC-адресов и портов (aka CAM-table- ContentAdresstableMemoryTable). Когда устройство, подключенное к коммутатору, посылает кадр в сеть, коммутаторсмотрит MAC-адрес отправителя и порт, откуда получен кадр, и добавляет эту информацию в свою таблицу. Далее он должен передать кадр получателю, адрес которого указан в кадре. Информацию о порте, куда нужно отправить кадр, он берёт из этой же CAM-таблицы. Но, предположим, что коммутатортолько что включили (таблица пуста), и он понятия не имеет, в какой из его портов подключен получатель. В этом случае он отправляет полученный кадр во все свои порты, кроме того, откуда он был принят. Все конечные устройства, получив этот кадр, смотрят MAC-адрес получателя, и, если он адресован не им, отбрасывают его. Устройство-получатель отвечает отправителю, а в поле отправителя ставит свой адрес, и теперькоммутатор уже знает, что такой-то адрес находится на таком-то порту (вносит запись в таблицу), и в следующий раз уже будет переправлять кадры, адресованные этому устройству, только в этот порт. Чтобы посмотреть содержимое CAM-таблицы, используется команда showmacaddress-table. Однажды попав в таблицу, информация не остаётся там пожизненно, содержимое постоянно обновляется и если к определенному mac-адресу не обращались 300 секунд (по умолчанию), запись о нем удаляется.