Page tree
Skip to end of metadata
Go to start of metadata

Определение

Loopback-detection – это механизм, предотвращающий появление в сети зацикленных путей передачи пакетов

Как работает алгоритм LBD?

  1. Для начала необходимо настроить механизм loopback-detection на портах (см.раздел 3)
  2. После минимальной настройки коммутатор начинает отправлять в настроенные порты с определённым интервалом по два служебных пакета за цикл. Loopback-detection работает поверх канального уровня и имеет структуру кадра: Ethernet - [802.1q - метка появляется в зависимости от настройки порта] – loopback-detection 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 "внутренним тегом"
  3. Если в сети, в которой находится коммутатор, есть кольцо, то служебный пакет вернётся на коммутатор
  4. В заголовке Ethernet коммутатор видит:
    - EtherType 0xdc09
    - Собственный MAC-address в поле Source MAC-address
    Коммутатор узнаёт свой служебный пакет loopback-detection, по кадру и настройке порта коммутатор определяет:
    - Внутренний тег
    - Внешний тег
  5. Если выполняются оба следующих условия:
    1) Внутренний тег совпадает с внешним тегом
    2) На порту, на который пришёл пакет, выполнена команда "loopback-detection control (block | shutdown)"
    то коммутатор применяет соответствующее ограничение: shutdown или block

    Если внутренний тег не совпадает с внешним, то в debug'е ("debug loopback-detection" + "ter mon") можно увидеть такие сообщения: 
    Port Ethernet1/0/17 a loopback-detection packet, tag is 100, inner-vlan is 200 (Внешний тег - 100, внутренний - 200)
    Однако коммутатор в таком случае ничего не делает
  6. Неполадки в сети, образовавшие петлю, могли быть исправлены и поэтому необходим механизм, который бы снимал ограничения с порта:
    а) Если применено ограничение shutdown, то порт будет разблокирован через время таймера control-recovery timeout

    Внимание

    control-recovery timeout по умолчанию присвоено значение 0, при этом значении коммутатор не будет пытаться поднять линк и потребуется ручное включение порта


    б) Если применено ограничение block, то коммутатор отсчитает таймер для режима block и снимет ограничение с порта

  7. Алгоритм работы возвращается к шагу 2

Настройка LBD

В режиме глобальной конфигурации:

  1. loopback-detection control-recovery timeout <timeout 0-3600s>
    Таймер, который запускается после того, как loopback-detection обнаружил аварийную ситуацию, кольцо, и применил ограничение shutdown. По истечению таймера ограничение с порта снимается и порт поднимается. Настройка таймера производится в Global режиме, нельзя настроить отдельно для каждого порта
  2. 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, когда порт не заблокирован
  3. loopback-detection trap enable
    Разрешаем отправку SNMP Trap сообщений для loopback-detection. При обнаружении петли за каким-либо портом отправляется SNMP Trap с OID 1.3.6.1.4.1.40418.7.101.112.1

В режиме конфигурации интерфейса:

Важно! Минимальные настройки выделены зеленом цветом.
  1. loopback-detection control (block | shutdown)
    Выбор режима ограничения для порта:
      block - работает для VLAN, в котором обнаружена петля, входящие пакеты отбрасываются, исходящие не отправляются (чтобы ограничение работало корректно для одного VLAN, см.раздел "Проблема отброса всех пакетов в режиме block")
      shutdown - порт переходит в режим shutdown

    Если на порт пришёл loopback-detection пакет и внешний тег и внутренний тег совпадают, то будет применено ограничение. При этом вторая команда минимальной настройки с указанием VLAN (команда под номером 3) не обязательна, т.к. она ответственна за отправку пакетов, а за приём и последующие действия ответственна исключительно команда loopback-detection control.
  2. loopback-detection send packet number <Detection packet number 1-10>
    Число пар служебных пакетов loopback-detection, которые за один раз отправляются в порт. По умолчанию установлено значение 1 - будет отправлено 2 LDB-пакета, при значении 2 - 4 LBD-пакета и т.д.
  3. loopback-detection specified-vlan <VLAN ID>
    Команда указывает VLAN, в котором запускается служба loopback-detection. Т.е. команда отвечает за отправку служебных пакетов loopback-detection в порт в настроенных VLAN.

Проблема отброса всех пакетов в режиме block

Существует проблема, возникающая в условиях, когда loopback-detection наложил ограничение на порт в виде block, обнаружив проблему во VLAN N, но при этом коммутатор перестаёт через порт пропускать кадры и других VLAN’ов. Что делать в таком случае?

Для решения проблемы необходимо:

  1. Разделить VLAN’ы на MST Instance:
    spanning-tree mst configuration
      instance <instance num 1> vlan <VID 1>
      instance <instance num 2> vlan <VID 2>
  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, в котором обнаружена проблема, остальные пакеты будут пропускаться