Кнопки и переключатели

Широковещательный шторм – передача большого количества пакетов в сети, часто с последующим увеличением их количества. Причины широковещательного шторма:

  • Петли коммутации
  • Атаки на сеть
  • Неисправная сетевая карта

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

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

STP (Spanning Tree Porotocol) – сетевой протокол, предназначенный для автоматического удаления циклов (петель коммутации) из топологии на канальном уровне в Ethernet сетях. Протокол работает на канальном уровне. STP позволяет сделать топологию избыточной на физическом уровне, но при этом логически блокировать петли. Достигается это за счет того, что STP отправляет сообщения BPDU и обнаруживает фактическую топологию сети. А затем, определяя роли коммутаторов и портов, часть портов блокирует так, чтобы в итоге получить топологию без петель.

Для того, чтобы определить какие порты заблокировать, а какие будут передавать данные, STP выполняет следующее:

  • Выбирается корневой мост (Root Bridge)
  • Далее каждый коммутатор просчитывает ближайший путь к корневому. Соответствующий порт называется корневым портов (Root Port)
  • После этого для каждого сегмента сети, к которому присоединен более чем один мост, просчитывается кратчайший путь к корневому мосту (порту). Мост, через который проходит этот путь, становится назначенным мостом (Designed Bridge), а соответствующий порт – назначенным портом (Designed Port)
  • Далее во всех сегментах, с которыми соединены более одного порта, все мосты блокируют все порты, не являющиеся корневыми и назначенными

В итоге получается древовидная структура (математический граф) с вершиной в виде корневого коммутатора. Ранее было упомянуто, что коммутаторы обмениваются между собой пакетами BPDU. BPDU (Bridge Protocol Data Unit) – фрейм протокола управления сетевыми мостами.

Рассмотрим формат пакета:

  • Protocol Identifier – идентификатор протокола
  • Protocl Version – версия протокола
  • BPDU Type – тип BPDU. Существует два типа – конфигурационный и уведомление о реконфигурации
  • Flags – флаги. В поле Flag используется только два бита: бит 1 является флагом изменения топологии (Topology Change), бит 8 является флагом подтверждения смены топологии (Topology Change Acknowledgement)
  • Root ID – идентификатор корневого моста
  • Root Path Cost – стоимость пути до корневого моста
  • Bridge ID – идентификатор моста. Состоит из поля приоритета (2б) и MAC-адреса (6б). Root Priority = N * 4094, где N – назначается администратором.
  • Port ID – идентификатор порта
  • Message Age – время жизни сообщения
  • Max Message Age – максимальное время жизни сообщения. Если пакет превысил это значение, то он игнорируется коммутаторами
  • Hello Time – интервал hello, через который посылаются пакеты BPDU
  • Forward Delay – задержка смены состояний. Минимальное время перехода моста в активное состояние.

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

Построение дерева:

  • В начале каждый коммутатор считает себя корневым (root)
  • Каждый коммутатор посылает Hello BPDU через интервал 2 секунды
  • Если мост получает BPDU с Bridge ID меньше, чем свой, он транслирует этот BPDU, а свой прекращает
  • В конце остается только один мост, который продолжает генерировать и передавать свои BPDU. Этот мост и будет считаться корневым Root Bridge
  • На основании меньшего Root Path Cost выбираются корневые порты у оставшихся коммутаторов. Если Root Path Cost совпадает, то порт выбирается на основе меньшего Bridge ID. Если и Bridge ID совпало, то выбираем на основе меньшего Port ID
  • Коммутатор в сети имеющий наименьшее расстояние до корневого является назначенным. Сегменты, подключенные к этому коммутатору через назначенные порты.

Изменение топологии:

  • При обнаружении изменения в сети коммутатор отравляет BPDU, у которого установлен Flag Topology Change = 1. BPDU рассылается каждый hello-интервал в направлению к корневому коммутатору.
  • Следующий коммутатор (на пути к Root Bridge), получив BPDU с Topology Change = 1 отправляет обратно BPDU с подтверждением Topoly Change Acknowledgement = 1.
  • Остальные коммутаторы, для которых для данного сегмента порт работает в режиме Designed port, повторяют первые два шага и отправляют в направлении к Root Bridge BPDU с Topology Change = 1.
  • Как только корневой коммутатор получает уведомление об изменении топологии, он отправляет hello с флагом Topology Change Acknowledgement =1 всем коммутаторам. Коммутатор, получив сообщение hello, использует таймер Forward Delay Time для того, чтобы обновить записи в своей таблице коммутации.

Настройка STP на управляемом коммутаторе Dlink DES-3528

В коммутационном шкафу была собрана схема для изучения протокола STP.

После сборки схемы была замечена высокая интенсивность мигания индикаторов портов, обусловленная тем что через порты коммутатора проходит большой трафик. На компьютере PC5 в диспетчере задач отмечалась высокая загрузка ЦП.

Предполагалось, что причиной такой нагрузки на коммутаторы и ЦП компьютеров является широковещательный шторм, связанный с намеренно созданными петлями коммутации.

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

На коммутаторе SW5 командой show stp проверялся статус протокола STP – включен или выключен.

Выяснилось, что протокол STP на коммутаторах SW1 – SW5 был выключен. Командой enable stp включаем протокол STP на всех коммутаторах и проверяем загрузку ЦП компьютера.

Загрузка ЦП упала после включения протокола STP. Отсюда можно сделать вывод, что высокая нагрузка на процессор была связана с широковещательным штормом, а протокол STP устранил эту проблему.
При просмотре статуса STP show stp была выведена следующая информация:

  • STP Status : Enabled – STP включен
  • STP Version: RSTP – версия RSTP (Rapid spanning tree protocol)
  • Maxe Age: 20 – время жизни пакета 20 с
  • Hello time: 2 – время отклика 2 с
  • Forward Delay: 15 – обновления записей в таблице коммутатора через 15 с
  • Max Hops: 20 – максимальное количество хопов 20
  • Tx Hould Count: 6 – максимальное количество шагов прохождения пакета
  • Forwading BPDU: Disabled – посылка фрейма для устранения петель

С помощью команды show stp instance 0 выведем информацию о дереве протокола STP.

Команда выводит следующие поля:

  • Instance Type: CIST – тип используемой конфигурации
  • Instance Status: Enabled – статут конфигурации (включен)
  • Instance Priority: 32768 – приоритет коммутатора
  • Designed Root Bridge: 00-22-B0-B4-4A-E0 – назначенный корневой коммутатор (MAC-адрес назначенного коммутатора)
  • External Root Cost: 200000 – сумма пути до корневого коммутатора
  • Regional Root Bridge: 00-22-B0-B4-5D-D0 – региональный коммутатор
  • Internal Root Cost: 0 – сумма пути до регионального коммутатора
  • Designated Bridge: 00-22-B0-B4-4A-E0 – назначенный коммутатор
  • Root Port: 4 – порт, по которому подключён корневой коммутатор
  • Last Topology Change: 357 – время, в котором произошло последнее изменение топологии прохождения пакета
  • Topology Change Count: 9 – общее количество раз, когда топология изменилась

С помощью команды show stp port 1-7 просмотрим информацию по всем портам коммутатора.

Информация о портах

  • MSTI – код дерева
  • Designated Bridge – назначенный коммутатор с идентификатором
  • Internal PathCost – стоимость пути до корня
  • Prio – приоритет
  • Status – состояние порта
  • Role – роль порта
  • Port Index – индекс порта
  • Hello Time – время приветствия

По полученным данным можно построить логическую топологию сети. Из рисунков выше видно, что порт 1 и 6 являются назначенным (Designed), порт 5 альтернативный (Alternative), порт 4 корневой (Root). Помимо ролей портов, можно также узнать их состояние. Порты 1,4,6 находятся в состоянии пересылки (Forwarding) – то есть в данный момент они в работе. Порт 5 находится в состоянии блокировки (Discarding). Получается альтернативный порт в данный момент заблокирован и через него не будут передаваться кадры. Порты 2, 3, 6, 7 не показаны на скриншотах так как они находятся в состоянии Disabled – выключены. Иными словами, данные порты не задействованы в схеме.

В итоге, получив аналогичную информацию со всех остальных коммутаторов SW1, SW2, SW3, SW4, мы можем воспроизвести текущую топологию сети и построить дерево STP.

Настройка приоритетов на коммутаторах Dlink DES-3528

Настроим приоритеты на коммутаторах таким образом, чтобы при отключении корневого коммутатора SW2 корневым стал SW4. После чего при отключении SW4 корневым стал SW3. При настройке приоритетов учитывалось два обстоятельства: во-первых чем ниже приоритет коммутатора, тем выше вероятность того, что он станет корневым; во-вторых приоритетность коммутатора должны быть кратна 4096. Исходя из поставленной задачи и учитывая тот факт, что на всех коммутаторах стоит приоритетность по умолчанию, равная 32768, было сделано следующее.

Настроим приоритет коммутатора командой config stp priority. Для SW2 зададим самый низкий приоритет, для SW4 приоритет 8192, для SW3 оставим приоритет по-умолчанию 16384.

SW2 > config stp priority 4096

SW4 > config stp priority 8192

Выведем информацию о приоритете коммутаторов SW2, SW4.

В результате отключения коммутатора SW2 произошло перенаправление корневых портов в соответствии с приоритетами коммутаторов. Корневым коммутатором стал SW4. На SW5 корневым портом был назначен порт 6.

Описание

Состояние петли формируется следующим образом:

  1. Компьютер PC-1 отправляет фрейм компьютеру PC-4;
  2. Коммутатор А первым получает фрейм и заносит в таблицу коммутации адрес компьютера PC-1 с исходящим портом 1/1;
  3. Так как коммутатор А не знает местоположение(порт подключения) получателя фрейма, он рассылает фрейм через все свои активные порты, кроме порта, из которого этот фрейм был получен;
  4. Коммутатор В получает фрейм от компьютера PC-1 и производит аналогичные манипуляции;
  5. Компьютер PC-4 получает две копии фрейма — один от коммутатора А, другой от В;
  6. Одновременно с этим, копию фрейма от коммутатора А через сегмент B получает коммутатор В. Так как для В полученная копия является «новым» фреймом, то он производит стандартный процесс коммутации фрейма:
    1. Так как MAC-адрес источника идентичен предыдущему фрейму из сегмента А, он удаляет из своей таблицы коммутации запись для компьютера PC-1 с портом 1/1 и добавляет новую запись для PC-1 с портом 2/1;
    2. Рассылает фрейм по всем активным портам, кроме порта, из которого фрейм был получен(2/1);
  7. Аналогичная ситуация происходит на коммутаторе А, когда он получает копию фрейма от коммутатора В;

Тем самым происходит бесконечное циркулирование фрейма между сегментами сети.

Широковещательный шторм в состоянии петли

Предположим, что компьютер PC-1 посылает фрейм с широковещательным адресом назначения. В такой ситуации на все компьютеры сети будут бесконечно рассылаться копии фрейма.

Методы предотвращения

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

Канальный уровень
Основные понятия Коммутация • MAC-адрес • Сетевой интерфейс • CAM-таблица • VLAN • Broadcast • Multicast • Unicast • ifconfig • QinQ
Петли коммутации и борьба с ними
Ключевые понятия Широковещательный шторм • Петля коммутации • Остовное дерево
Протоколы STP • RSTP • MSTP • PVST • PVST+
Настройка STP на коммутаторах Cisco • коммутаторах ProCurve
Агрегирование каналов
Ключевые понятия Агрегирование каналов • EtherChannel
Протоколы LACP • PAgP
Настройка в Linux • FreeBSD • NetBSD • OpenBSD • Mac OS X • Solaris • Windows • маршрутизаторах Cisco • коммутаторах Cisco • коммутаторах ProCurve
Протокол ARP
Ключевые понятия Протокол ARP • ARP-таблица • Статический ARP • Proxy ARP
Программы arp • arping • arp-sk • arpmap
Виртуальные и программные коммутаторы, мосты и сетевые интерфейсы
Компоненты tap-интерфейс • dummy-интерфейс • Мост в Linux • Мост в FreeBSD • vde • OpenVPN Bridge
Программы brctl (man) • ebtables
Безопасность
Программы и библиотеки Wireshark • Scapy
MAC MAC-spoofing • Port security • Поиск по MACу • MAC-spoofing в виртуальной машине
ARP ARP-spoofing • ettercap • arpwatch (man) • remarp • Dynamic ARP Protection

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

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