Коммутация LAN : Протокол STP

Общее описание и настройка функции протокола ULDP

22 сентября 2010 - Перевод, выполненный профессиональным переводчиком
Другие версии: PDF-версия:pdf | Машинный перевод (28 июля 2013) | Английский (9 июля 2007) | Отзыв

Содержание

Введение
Предварительные условия
      Требования
      Используемые компоненты
      Условные обозначения
Определение проблемы
Принципы работы протокола UDLD
Режимы работы протокола UDLD
Доступность
Настройка и мониторинг
Связанные обсуждения сообщества поддержки Cisco
Дополнительные сведения

Введение

В данном документе описывается порядок использования протокола UDLD (Unidirectional Link Detection) для предотвращения возникновения циклов пересылки и поглощения трафика в коммутируемых сетях.

Предварительные условия

Требования

Для этого документа отсутствуют особые требования.

Используемые компоненты

Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Условные обозначения технических терминов Cisco.

Определение проблемы

Протокол STP (Spanning-Tree Protocol) преобразует избыточную физическую топологию в топологию без петель с пересылкой по типу дерева.

Эта задача решается путем блокировки одного или нескольких портов. Такой подход гарантирует отсутствие петель в топологии пересылки. Протокол STP функционирует на основе приема и передачи блоков данных протокола моста (Bridge Protocol Data Units — BPDU). Если процесс STP, выполняющийся на коммутаторе с блокирующим портом, прекращает принимать блоки BPDU от коммутатора более высокого уровня (назначенного) на порту, информация STP для этого порта в конечном итоге устаревает и переходит в состояние пересылки. В результате создается цикл пересылки или петля STP.

Пакеты начинают бесконечно циркулировать по замкнутому пути и потребляют все больше ресурсов полосы пропускания. Это может привести к выходу сети из строя.

Почему коммутатор прекращает получение блоков BPDU, хотя порт в рабочем состоянии? Причиной является однонаправленный канал. Канал считается однонаправленным, когда выполняются следующие условия.

  • Канал работает на обоих концах соединения. Локальная сторона не получает пакеты, отправленные удаленной стороной, в то время как удаленная сторона получает пакеты, отправленные локальной стороной.

Рассмотрим следующий сценарий. Стрелки показывают поток блоков BPDU протокола STP.

77a.gif

В обычном режиме мост B назначен для канала B-C. Мост B отправляет блоки BPDU на C, который блокирует порт. Порт заблокирован, хотя С фиксирует блоки BPDU, поступающие от В, на этом канале.

Теперь рассмотрим, что происходит в случае сбоя канала B-C в направлении С. C перестанет получать трафик от B, однако B будет по-прежнему получать трафик от C.

C прекращает прием блоков BPDU по каналу B-C, и информация, полученная с последним пакетом BPDU, становится устаревшей. Это занимает до 20 секунд в зависимости от таймера STP maxAge. Как только информация STP на порту устаревает, этот порт переходит из состояния блокировки в состояние прослушивания,обучения и в конечном итоге в состояние пересылки. В результате создается цикл пересылки, поскольку в треугольнике А-В-С нет блокирующего порта. Пакеты циркулируют по контуру (В по-прежнему получает пакеты от С), занимая дополнительную полосу пропускания до тех пор, пока каналы не будут полностью заполнены. Тогда сеть выходит из строя.

77b.gif

Другая проблема, которая может возникнуть вследствие однонаправленного канала, — это поглощение трафика.

Принципы работы протокола UDLD

Чтобы обнаружить однонаправленные каналы до формирования цикла пересылки, компанией Cisco разработан и внедрен протокол UDLD.

UDLD — протокол уровня 2, который работает с механизмами уровня 1 для определения физического состояния канала. На уровне 1 автосогласование используется для физической передачи сигнала и обнаружения неисправностей. UDLD выполняет функции, которые не может выполнять автосогласование, например определение идентификационных данных соседних устройств и закрытие неправильно подключенных портов. Когда включены и автосогласование, и UDLD, взаимодействие механизмов обнаружения уровней 1 и 2 предотвращает возникновение физических и логических однонаправленных соединений и сбои в других протоколах.

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

Каждый порт коммутатора, настроенный для поддержки UDLD, отправляет пакеты протокола UDLD с собственными идентификаторами устройства/порта, а также идентификаторами соседнего устройства/порта, которые UDLD может считывать на этом порту. Соседние порты должны считывать свои собственные идентификаторы устройства/порта (принцип эха) в пакетах, полученных от другой стороны.

Если в течение определенного промежутка времени порт не видит собственный идентификатор устройства/порта в поступающих пакетах UDLD, канал считается однонаправленным.

Данный алгоритм с использованием эха позволяет обнаруживать следующие проблемы.

  • Канал работоспособен с обеих сторон, но пакеты принимаются только одной из сторон.

  • Ошибки монтажа — принимающий и передающий оптоволоконные кабели подключены к разным портам на удаленной стороне.

Как только UDLD обнаружит однонаправленный канал, соответствующий порт будет отключен и на консоли появится следующее сообщение:

UDLD-3-DISABLE: на порту 1/2 обнаружен однонаправленный канал. Порт отключен

Порт, закрытый UDLD, остается отключенным, пока пользователь не подключит его вручную либо не истечет время ожидания errdisable (при соответствующей настройке).

Режимы работы протокола UDLD

UDLD может работать в двух режимах: обычном и агрессивном.

В обычном режиме, если канал порта был определен как двусторонний и время ожидания информации UDLD истекло, UDLD не выполняет никаких действий. Состояние порта для UDLD помечается как undetermined (неопределенное). Порт будет работать в соответствии с состоянием STP.

В агрессивном режиме, если канал порта был определен как двусторонний и время ожидания информации UDLD истекло, а канал на порту остается в рабочем состоянии, UDLD пытается заново установить состояние порта. В случае неудачи порт переводится в состояние errdisable.

Информация UDLD устаревает, когда порт, использующий UDLD, не получает пакеты UDLD с соседнего порта на протяжении периода удержания. Удаленный порт устанавливает для порта время удержания, которое зависит от интервала между сообщениями на удаленной стороне. Чем короче интервал между сообщениями, тем меньше время удержания и быстрее обнаружение. Последние реализации протокола UDLD позволяют настраивать интервал между сообщениями.

Информация UDLD может устареть вследствие большого количества ошибок на порту, вызванных какой-либо физической неполадкой или несогласованностью дуплексных параметров. Такое отбрасывание пакета не означает, что канал однонаправленный и UDLD в обычном режиме не отключит этот канал.

Важно правильно установить интервал между сообщениями, чтобы получить адекватное время обнаружения. Интервал между сообщениями должен быть достаточно коротким, чтобы обнаружить однонаправленный канал до того, как будет создан цикл пересылки, однако, он не должен перегружать ЦП коммутатора. Стандартный интервал между сообщениями составляет 15 секунд — этого достаточно, чтобы обнаружить однонаправленный канал до того, как будет создан цикл пересылки, при использовании стандартных таймеров STP. Время обнаружения приблизительно в три раза больше интервала между сообщениями.

Например: Tобнаружения ~ интервал_между_сообщениями x3

Это приблизительно 45 секунд при стандартном интервале между сообщениями (15 секунд).

В случае сбоя однонаправленного канала для восстановления сходимости потребуется Tвосстановления сходимости=max_age + 2x forward_delay. При использовании стандартных таймеров это займет 20+2x15=50 секунд.

Рекомендуется поддерживать соотношение Tобнаружения < Tвосстановления сходимости, выбирая подходящий интервал между сообщениями.

Когда при работе в агрессивном режиме информация устаревает, UDLD пытается повторно установить состояние канала, отправляя пакеты каждую секунду в течение восьми секунд. Если состояние канала по-прежнему не определено, он будет отключен.

Агрессивный режим позволяет дополнительно обнаруживать следующие ситуации.

  • Порт «завис» (с одной стороны порт не передает и не получает данные, однако канал работоспособен с обеих сторон).

  • Канал работоспособен с одной стороны, но не работает с другой. Эта проблема может возникать на оптоволоконных портах. Когда передающий оптоволоконный кабель отключен на локальном порту, канал остается в рабочем состоянии на локальной стороне. Однако, на удаленной стороне канал не работает.

В последних оптоволоконных реализациях FastEthernet используются функции Far End Fault Indication (индикация ошибок на удаленной стороне — FEFI), которые в подобных ситуациях переводили канал в нерабочее состояние на обеих сторонах. Для Gigabit Ethernet в основе аналогичной функции лежит согласование канала. Для медных портов проблемы такого рода не характерны, поскольку в них для мониторинга канала используются канальные импульсы Ethernet. Важно отметить, что в обоих случаях циклы пересылки не возникают, поскольку между портами нет связи. Однако, если канал работает на одной стороне и не работает на другой, то возможно поглощение трафика. Предотвратить это помогает агрессивный режим UDLD.

Доступность

Протокол UDLD в обычном режиме доступен:

  • для операционных систем Catalyst версии 5.1.1 и выше на коммутаторах Catalyst серий 4500/4000, 5500/5000 и 6500/6000;

  • для программного обеспечения Cisco IOS® версии 12.0(5)XU и выше на коммутаторах Catalyst 2900XL и 3500XL;

  • для программного обеспечения Cisco IOS версии 12.1(13)AY и выше на коммутаторах Catalyst 2940;

  • для программного обеспечения Cisco IOS версии 12.0(5)WC(1) или выше на коммутаторах Catalyst 2950;

  • для программного обеспечения Cisco IOS версии 12.1(12c)EA1 или выше на коммутаторах Catalyst 2955;

  • для программного обеспечения Cisco IOS версии 12.1(11)AХ или выше на коммутаторах Catalyst 2970;

  • для программного обеспечения Cisco IOS версии 12.1(4)EA1 или выше на коммутаторах Catalyst 3550;

  • для программного обеспечения Cisco IOS версии 12.1(19)EA1 или выше на коммутаторах Catalyst 3560;

  • для программного обеспечения Cisco IOS версии 12.1(11)AХ или выше на коммутаторах Catalyst 3750;

  • для программного обеспечения Cisco IOS версии 12.1(2)E и выше на коммутаторах Catalyst 6500/6000 под управлением системного программного обеспечения Cisco IOS;

  • для программного обеспечения Cisco IOS версии 12.1(8a)EW и выше на коммутаторах Catalyst 4500/4000 под управлением Cisco IOS.

Агрессивный режим вводится начиная со следующих версий программного обеспечения:

  • операционные системы Catalyst версии 5.4.3 и выше на коммутаторах Catalyst серий 4500/4000, 5500/5000 и 6500/6000;

  • программное обеспечение Cisco IOS версии 12.1(3a)E3 и выше на коммутаторах Catalyst 6500/6000 под управлением системного программного обеспечения Cisco IOS;

  • программное обеспечение Cisco IOS версии 12.1(6)EA2 или выше на коммутаторах Catalyst 2950;

  • программное обеспечение Cisco IOS версии 12.1(12c)EA1 или выше на коммутаторах Catalyst 2955;

  • программное обеспечение Cisco IOS версии 12.1(11)AХ или выше на коммутаторах Catalyst 2970;

  • программное обеспечение Cisco IOS версии 12.1(4)EA1 или выше на коммутаторах Catalyst 3550;

  • программное обеспечение Cisco IOS версии 12.1(11)AХ или выше на коммутаторах Catalyst 3750.

Настройка и мониторинг

Приведенные ниже команды предназначены для настройки UDLD на коммутаторах Catalyst под управлением CatOS. Необходимо сначала включить UDLD глобально (по умолчанию протокол отключен) при помощи следующей команды:

Vega> (enable) set udld enable
UDLD enabled globally

Введите следующую команду, чтобы проверить, включен ли UDLD:

Vega> (enable) show udld
UDLD:  enabled
Message Interval: 15 seconds

Необходимо также включить UDLD на нужных портах при помощи следующей команды:

Vega> (enable) set udld enable 1/2
UDLD enabled on port 1/2

Введите команду show udld port, чтобы узнать, включен или отключен UDLD на порту и каково состояние канала:

Vega> (enable) show udld port
UDLD              : enabled
Message Interval  : 15 seconds

Port      Admin Status  Aggressive Mode  Link State
--------  ------------  ---------------  ----------------
 1/1      enabled       disabled         undetermined
 1/2      enabled       disabled         bidirectional

Для включения UDLD в агрессивном режиме на отдельных портах используется команда set udld aggressive-mode enable <модуль/порт>:

Vega> (enable) set udld aggressive-mode enable 1/2
Aggressive UDLD enabled on port 1/2.
Vega> (enable) show udld port 1/2
UDLD              : enabled
Message Interval  : 15 seconds

Port      Admin Status  Aggressive Mode  Link State
--------  ------------  ---------------  ----------------
 1/2      enabled       enabled         undetermined

Чтобы изменить интервал между сообщениями, введите следующую команду:

Vega> (enable) set udld interval 10
UDLD message interval set to 10 seconds

Интервал может составлять от 7 до 90 секунд, по умолчанию — 15 секунд.

Дополнительные сведения о настройке UDLD в IOS см. в следующих документах:


Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения


Document ID: 10591