Определение
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, с которым коммутатор ассоциирует пакет (тэг, с которым пришёл пакет, если режим порта trunk, или native/access vlan, если пакет без тега), далее для удобства буду называть номер этого vlan "внешним тэгом"
- Номер vlan, помещённый в полезной нагрузке пакета, т.е. в Loopback-detection Data, далее для удобства буду называть номер этого vlan "внутренним тэгом" - Если в сети, в которой находится коммутатор, есть кольцо, то служебный пакет вернётся на коммутатор
- В заголовке Ethernet коммутатор видит:
- EtherType 0xdc09
- Собственный MAC-address в поле Source MAC-address
Коммутатор узнаёт свой служебный пакет, по кадру и настройке порта коммутатор определяет:
- Внутренний тэг
- Внешний тэг - Если выполняются оба следующих условия:
1) Внутренний тэг совпадает с внешним тэгом
2) На порту, на который пришёл пакет, выполнена команда "loopback-detection control (block | shutdown)"
то коммутатор применяет соответствующее ограничение - shutdown или block.
Если 1-ое условие не выполняется и внутренний тег не совпадает с внешним, то в debug'е ("debug loopback-detection" + "ter mon") можно увидеть такие сообщения:
Port Ethernet1/0/17 a loopback-detection packet, tag is 100, inner-vlan is 200 (Внешний тег - 100, внутренний - 200)
Однако коммутатор в таком случае ничего не делает
а) Если применено ограничение 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, в котором обнаружена проблема, остальные пакеты будут пропускаться