Определение
Loopback-detection – это механизм, предотвращающий появление в сети зацикленных путей передачи пакетов
Как работает?
- Для начала необходимо настроить механизм Loopback-detection на портах (см.раздел 3)
- После минимальной настройки коммутатор начинает отправлять в настроенные порты с определённым интервалом по два служебных пакета за цикл. Loopback-detection работают поверх канального уровня и имеет структуру: Ethernet - [802.1q - метка появляется в зависимости от настройки порта] – Data. Основные поля кадра:
- Source Mac-address (в Ethernet-заголовке). Коммутатор устанавливает свой CPU MAC-address
- Destination Mac-address (в Ethernet-заголовке). Коммутатор отправляет по 2 пакета за один цикл, в одном пакете в качестве Destination Mac-address вставляется multicast mac-address (01:80:c2:00:00:05), в другом – неиспользуемый mac-adress (f8:f0:82:10:00:03 - первая часть мак-адреса обозначает принадлежность адреса Nagtech), который бродкастого распространится по сети.
- Vlan (В 802.1q + в полезной нагрузке пакета, т.е. в Loopback-detection Data)
- Номер порта (в полезной нагрузке пакета) - Если в сети, в которой находится коммутатор, есть кольцо, то служебный пакет вернётся на коммутатор
- В заголовке Ethernet коммутатор видит:
- EtherType 0xdc09
- Собственный MAC-address в поле Source MAC-address - И понимает, что на участке сети со стороны порта, на который пришёл этот пакет, есть кольцо или другая неисправность, образующая зацикленный путь
- Коммутатор применяет ограничение на этот порт (block или shutdown). Для понимания: этот самый пакет мог быть запушен коммутатором через один порт, а вернуться через совершенно другой. Заблокирован будет 2-ой, если на нём запущен loopback-detection в нужном vlan. Это нужно понимать, потому что в том случае, когда на коммутатор придёт пакет loopback-detection, по которому коммутатор поймёт, что это он же его и отправил, это будет означать, что за портом есть неисправность, но на на этом порту не настроен loopback-detection в нужном vlan, то сообщения о кольце будут появляться в терминале, но никаких действий с портом произведено не будет
а) Если применено ограничение shutdown, то порт будет разблокирован через время таймера control-recovery timeout, а после придёт в нормальное состояние. Далее работа loopback-detection возвращается ко 2-му шагу
б) Если применено ограничение block, то коммутатор отсчитает таймер для режима block, снимет ограничение с порта и отправит в него пакет Loopback-detection и работа возвращается на 2-ой шаг
Настройка
В режиме глобальной конфигурации:
- loopback-detection control-recovery timeout <timeout 0-3600s>
Таймер, который запускается после того, как loopback-detection обнаружил аварийную ситуацию, кольцо, и применил ограничение shutdown. По истечению таймера ограничение с порта снимается и порт поднимается. Настройка таймера производится в Global режиме, нельзя настроить отдельно для каждого порта - loopback-detection interval-time <Loopback interval time range 5-300s> <No loopback interval time range 1-30s>
Два таймера, означающие интервал времени отправки спец.сообщений механизма loopback-detection. Описание таймеров:
- Loopback interval time range 5-300s - таймер запускается тогда, когда механизм loopback-detection обнаружил проблему и применил ограничение block на порт, и порт находится в состоянии block. Аналог control-recovery timeout, но для режима block
- No loopback interval time range 1-30s - таймер используется в том случае, когда на порту нет ограничений со стороны механизма loopback-detection, т.е. таймер для отправки обычных служебных сообщений loopback-detection, когда порт не заблокирован - loopback-detection trap enable
Разрешаем отправку SNMP Trap сообщений для loopback-detection
В режиме конфигурации интерфейса:
- loopback-detection control block
Режим ограничения для порта, при котором входящие пакеты отбрасываются и не отправляются - loopback-detection control shutdown
Режим ограничения для порта, при котором порт переходит в режим shutdown - loopback-detection send packet number <Detection packet number 1-10>
Число пар служебных пакетов loopback-detection, которые за один раз отправляются в порт - loopback-detection specified-vlan <Vlan ID>
Vlan, в котором запускается служба loopback-detection. Применённый на порту режим block должен отбрасывать пакеты в настроенных vlan'ах, но для этого необходимы дополнительные настройки, см.раздел 4
Проблема отброса всех пакетов в режиме block
Существует проблема, возникающая в условиях, когда loopback-detection наложил ограничение на порт в виде block, обнаружив проблему во vlan N, но при этом перестают через порт пропускать кадры и других vlan’ов. Что делать в таком случае?
Для решения проблемы необходимо:
- Разделить vlan’ы на MST Instance:
spanning-tree mst configuration
instance <instance num 1> vlan <VID 1>
instance <instance num 2> vlan <VID 2> - Перезагрузить коммутатор
Пример:
- На верхнем коммутаторе порты eth1/0/1 и eth1/0/3 настроены в режиме trunk
- На оба порта в режиме trunk добавлены vlan 100 и 200
- На обоих портах настроен loopback-detection для vlan 100 и 200 с режимом ограничения block:
Interface Ethernet1/0/1
loopback-detection specified-vlan 100,200
loopback-detection control block
...
Interface Ethernet1/0/3
loopback-detection specified-vlan 100,200
loopback-detection control block
...
- На порт eth1/0/3 вернулся служебный пакет loopback-detection во vlan 100
- Коммутатор перевёл порт eth1/0/3 в режим block
Через порт перестали проходить пакеты, принадлежащие и vlan 100, и vlan 200 Однако пакеты во vlan 200 должны пропускаться
- Разделяем vlan на mst instance:
spanning-tree mst configuration
Instance 0 vlan <остальные vlan>
instance 1 vlan 100
instance 2 vlan 200
- Сохраняемся и перезагружаем коммутатор
- Теперь, если на коммутаторе сработает Loopback-detection, будут блокироваться пакеты только во vlan, в котором обнаружена проблема, остальные пакеты будут пропускаться