Что такое loopback detection
Loopdetect своими руками
Суть проблемы
Одним из самых страшных бичей сети ethernet являются, так называемые, петли. Они возникают когда (в основном из-за человеческого фактора) в топологии сети образуется кольцо. К примеру, два порта коммутатора соединили патч-кордом (часто бывает когда два свича заменяют на один и не глядя втыкают всё, что было) или запустили узел по новой линии, а старую отключить забыли (последствия могут быт печальными и трудно выявляемыми). В результате такой петли пакеты начинают множиться, сбиваются таблицы коммутации и начинается лавинообразный рост трафика. В таких условиях возможны зависания сетевого оборудования и полное нарушение работы сети.
Помимо настоящих петель не редки случаи когда при выгорания порта (коммутатора или сетевой карты) он начинает возвращать полученные пакеты назад в сеть, при этом чаще всего соединение согласовывается в 10M, а линк поднимается даже при отключенном кабеле. Когда в сегменте такой порт только один, последствия могут быть не столь плачевными, но всё же весьма чувствительны (особенно сильно страдают пользователи висты и семёрки). В любом случае с такими вещами нужно нещадно бороться и понимать тот факт, что намеренно или случайно создавая петлю, пусть и на небольшой период времени, можно отключить целый сегмент сети.
Матчасть
К счастью большинство современных управляемых коммутаторов, в том или ином виде, имеют функции выявления петель (loopdetect, stp), и даже более того, семейство протоколов stp позволяет специально строить кольцевую топологию (для повышения отказоустойчивости и надёжности). Но тут есть и обратная сторона медали, не редко случается так, что один сгоревший порт может оставить без связи целый район. Или скажем у того же stp перестроение топологии происходит далеко не мгновенно, связь в этот момент, естественно, оставляет желать лучшего. Кроме того, некоторые производители весьма халатно относятся к реализации протоколов обнаружения петель, скажем DES-3016 (глинк) вообще не может определить петлю если просто соединить два его порта.
Принципы выявления
Принцип обнаружения петель (loopdetect) довольно простой. В сеть отправляется специальный пакет с броадкаст адресом (предназначен всем) и если он вернулся назад, считаем, что сеть за этим интерфейсом закольцована. Дальнейшие действия зависят от типа оборудования и настроек. Чаще всего порт полностью или частично (в отдельном vlan) блокируется, событие записывается в логи, отправляются snmp-трапы. Тут в дело вступают системные администраторы и аварийная служба.
Если вся сеть управляемая, то выявить и устранить петлю довольно не сложно. Но не так уж мало сетей где к одному порту подключена цепочка из 5 — 6 неуправляемых коммутаторов. Устранение такой петли может занять немало времени и сил. Процесс поиска же сводится к последовательному отключению (включению) портов. Для определения наличия петли используется либо вышестоящий управляемый коммутатор, либо какой-нибудь снифер (wireshark, tcpdump). Первый способ весьма опасен в следствие наличия задержки между включением и выключением блокировки, в лучшем случае у пользователей просто будут лаги, а в худшем — сработает loopdetect выше по линии и отвалится уже куда больший сегмент. Во втором случае опасности для пользователей нет, но зато намного сложнее определять наличие петли (особенно в небольшом сегменте, где мало броадкаст трафика), всё-таки снифер вещь, по определению, пассивная.
Своими руками
Как было сказано выше, аппаратных реализаций поиска петель хватает с лихвой. Так что не долго думая, включаю wireshark настраиваю фильтр и смотрю, что и как делает коммутатор. Собственно всё просто: в порт отправляется пакет ethernet с адресом назначения cf:00:00:00:00:00, типом 0x9000 (CTP) и c неведомым номером функции 256 (в найденной мной документации описаны только две). Адрес назначение является броадкастовым, так что при наличии в сети петли назад должно вернутся несколько копий этого пакета.
С получившимся скриптом можно ознакомится далее.
03. Loopback detection
3.2. Конфигурация Loopback detection
Включить функцию Loopback detection;
Настроить действие при обнаружении петли;
Отобразить информацию о конфигурации и отладочную информацию;
Включить отправку trap.
Команда
Описание
no loopback-detection interval-time
! В режиме глобальной конфигурации
loopback-detection control-recovery timeout
! В режиме глобальной конфигурации
Задать время восстановления после выключена порта при обнаружении петли. После применения значения 0 восстановление не происходит автоматически (по-умолчанию).
2.Включить функцию Loopback detection:
Команда
Описание
no loopback-detection specified-vlan
! В режиме конфигурации интерфейса
Задать VLAN для которых будет проверяться наличие петли. Команда no удаляет эту конфигурацию.
3.Настроить действие при обнаружении петли:
Команда
Описание
no loopback-detection control
! В режиме конфигурации интерфейса
Выбрать действие при обнаружении петли. Команда no удаляет эту конфигурацию.
4. Отобразить информацию о конфигурации и отладочную информацию:
Команда
Описание
no debug loopback-detection
! В Admin режиме
Выводить отладочную информацию. Команда no отменяет вывод отладочной информации.
show loopback-detection [interface ]
Вывести информацию и состоянии и конфигурации Loopback-detection. Если указан параметр interface информация будет выведена только для указанного интерфейса.
5.Включить отправку trap:
Команда
Описание
loopback-detection trap enable
no loopback-detection trap enable
! В режиме глобальной конфигурации
Включить отправку SNMP trap при обнаружении петли. Команда no отключает эту функцию.
3.3. Пример конфигурации Loopback detection
Чтобы защитить сеть от последствий возникновения петли коммутации из-за ошибки пользователя, неиcправности линии или оборудования, подключенных к порту 1/0/1 коммутатора Switch, необходимо настроить функцию loopback-detection.
Конфигурация коммутатора будет выглядеть следующим образом:
Пример конфигурации MST Instance:
3.4. Решение проблем с конфигурацией Loopback detection
Убедитесь, что оборудование, подключенное к интерфейсу с loopback detection, прозрачно пропускает Loopback-detection BPDU, иначе функция не будет работать;
Рекомендуется использовать Loopback-detection только на портах в сторону неконтролируемого участка сети (порты доступа, сегменты с неуправляемыми коммутаторами);
Не рекомендуется использовать loopback-detection на одном порту с протоколами STP, так как это может повлечь за собой некорректную работу STP или Loopback-detection;
Функции повышения надежности и производительности
Дополнительные функции защиты от петель
В отличие от STP LoopBack Detection функция LoopBack Detection Independent STP не требует настройки протокола STP на портах, на которых необходимо определять наличие петли. В этом случае наличие петли обнаруживается путем отправки портом специального служебного кадра ECTP ( Ethernet Configuration Testing Protocol ). При получении кадра ECTP этим же портом он блокируется на указанное в таймере время.
Следует отметить, что функция LoopBack Detection Independent STP версии 4.03 также может определять петли, возникающие между портами одного коммутатора.
В режиме Port-Based при обнаружении петли происходит автоматическая блокировка порта, и никакой трафик через него не передается.
Настройка функции LoopBack Detection
Настройка функции STP LoopBack Detection
Настройка функции LoopBack Detection Independent STP (Port-Based)
Настройка функции LoopBack Detection Independent STP (VLAN-Based)
loopdetect interval — временной интервал в секундах между отсылаемыми кадрами ECTP (Ethernet Configuration Testing Protocol).
Функции безопасности STP
Из-за ошибок в конфигурации или вредоносных атак в сети может возникнуть ситуация, когда корневой мост получит кадр BPDU, содержащий лучший приоритет, и потеряет свою позицию. При настройке протоколов RSTP или MSTP на управляемых коммутаторах, расположенных на границе сети, с помощью параметра restrictedrole можно ограничить роли выполняемые портом в активной топологии. При активизации этого параметра порт не будет выбран в качестве корневого порта даже в том случае, если получит BPDU с наилучшим приоритетом. После выбора корневого порта этот порт будет выбран в качестве альтернативного. По умолчанию функция restrictedrole отключена.
Защита от штормов и петель на коммутаторах SNR
В рамках данной статьи мы рассмотрим функционал для защиты от петель и различных видов штормов на коммутаторах SNR.
Loopback-detection
Настройка Loopback-detection
Для включения функционала необходимо в режиме конфигурирования порта задать VLAN, для которых будет проверяться наличие петли, а также действие при ее обнаружении:
В глобальном режиме можно настроить время восстановления после отключения порта по причине петли:
По умолчанию коммутатор отправляет 2 LBD-пакета в каждый specified-vlan в промежуток interval-time. Данные значения можно изменить. Значение interval-time меняется также в глобальном режиме. Сначала указывается интервал отправки LBD-пакетов при обнаружении петли, затем, в случае, если петля отсутствует:
Количество отправляемых копий LBD-пакетов можно задать в режиме конфигурирования порта:
Также в глобальном режиме можно включить отправку SNMP Trap-сообщений при обнаружении петли:
При обнаружении петли за каким-либо портом отправляется SNMP Trap с OID 1.3.6.1.4.1.40418.7.101.112.1.
Storm-control
Для ограничения широковещательного трафика в сети можно воспользоваться функционалом Storm-control, который отбрасывает входящий трафик, превышающий установленный лимит. Функционал полностью аппаратный и выполняется на уровне ASIC без участия CPU, поэтому логирование отсутствует.
Настройка Storm-control
Также можно настроить протоколы, на пакеты которых функционал реагировать не будет. Данная настройка также производится в глобальном режиме:
Пороговое значение для каждого типа трафика настраивается отдельно для каждого порта в режиме его конфигурирования:
Rate-violation
Расширенные возможности для ограничения широковещательного трафика в сети имеет Rate-violation, который также отбрасывает входящий трафик, превышающий установленный лимит. В отличие от Storm-control, данный функционал задействует ресурсы CPU и является софтовым. При превышении порога действие записывается в лог, отправляется соответствующий SNMP Trap.
Настройка Rate-violation
Все настройки Rate-violation применяются в режиме конфигурирования порта.
Пороговое значение задается для выбранного типа трафика и может быть задано только в pps:
В качестве действия при превышении порога широковещательным трафиком может быть выбрано либо отключение порта, либо блокировка всего трафика на порте. При отключении порта также может быть выбрано время восстановления, после которого порт будет включен обратно:
Flood-control
Кроме ограничения входящего широковещательного трафика, на коммутаторах SNR существует возможность ограничить исходящий широковещательный трафик. Для этого используется Flood-control. Механизм, как и Storm-control, является аппаратным и полностью ограничивает передачу определенного типа широковещательного трафика в выбранный порт.
Настройка Flood-control
Функция предотвращения петлеобразования (LoopBack Detection)
В режиме Port-Based при обнаружении петли происходит автоматическая блокировка порта и никакой трафик через него не передается.
Цель: Понять способы работы LBD-алгоритма в различных режимах функционирования.
DES-3200-28 | 2 шт. |
DES-1005D | 1 шт. |
Рабочая станция | 4 шт. |
Кабель Ethernet | 7 шт. |
Консольный кабель | 2 шт. |
Перед выполнением задания необходимо сбросить настройки коммутатора к заводским настройкам по умолчанию командой
Настройка LoopBack Detection Independent STP в режиме Port-Based
Настройка DES-3200-28
В данном задании рассматривается блокирование порта управляемого коммутатора при обнаружении петли в подключенном сегменте.
Включите функцию LBD глобально на коммутаторе
Активизируйте функцию LBD на всех портах коммутатора
Сконфигурируйте режим Port-Based, чтобы при обнаружении петли отключался порт
Упражнения
Проверьте текущую конфигурацию функции LBD
Что вы наблюдаете, запишите:
Посмотрите, обнаружена ли петля на коммутаторе
Что вы наблюдаете, запишите:
Проверьте, выполнил ли коммутатор блокировку порта
Отключите неуправляемый коммутатор с петлей от коммутатора DES-3200-28.