Перейти к основному содержимому

20.2 Описание принципов работы

20.2.1 Основные понятия

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

Идентификатор устройства

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

Роль

Отдельный коммутатор в стеке называется коммутатором-участником. В зависимости от выполняемых функций он может иметь одну из следующих ролей:

  • Ведущее устройство: Участник стека, который управляет всем стеком. В стеке в любой момент времени может быть только одно ведущее устройство.

  • Ведомое устройство: Участник стека, подчиненный ведущему устройству и функционирующий как его член. За исключением ведущего устройства, все остальные устройства в стеке являются ведомыми. В стеке может быть несколько ведомых устройств.

Участник стека

Понятие, используемое для идентификации и управления коммутаторами-участниками. ID участника стека является уникальным для всех коммутаторов в стеке.

Приоритет стека

Приоритет стека — это атрибут коммутатора-участника, который в основном используется для определения его роли в процессе выбора ролей (ролевых выборов). Большее значение приоритета указывает на более высокий приоритет и большую вероятность быть избранным в качестве ведущего коммутатора.

Физический порт участника стека

Физический порт участника стека — это физический порт, сконфигурированный в режиме стекирования. Он используется для соединения коммутаторов-участников стека.

Порт стека

Порт стека — это логический порт, предназначенный исключительно для стекирования. Он должен быть привязан к одному или нескольким физическим портам участника стека для увеличения пропускной способности и надежности канала связи. Каждое устройство поддерживает два порта стека.

Канал стека

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

Домен стека

Домен стека определяется идентификатором домена. Система стекирования может быть построена между устройствами с одинаковым ID домена, но не между устройствами с разными ID доменов.

MAC-адрес системы стека

Система стекирования представляется внешней сети как одно сетевое устройство, участвующее в сетевом взаимодействии, и обладает уникальным MAC-адресом, который называется MAC-адресом системы стека.

20.2.2 Формирование стека

Подключение и топология

Для корректной работы стека устройства-участники должны быть сначала физически соединены. Физический порт на устройстве, используемый для подключения стека, называется физическим портом стека. Физический порт стека может быть сконфигурирован как порт стека, который является логическим интерфейсом. Порт стека может соответствовать одному физическому порту стека, а также может быть образован агрегацией нескольких физических портов стека (что называется агрегированным портом стека) для достижения эффекта резервирования каналов.

Физические порты стека поддерживают использование обычных (Ethernet) портов и не требуют специальных кабелей для стекирования (или карт стекирования).

Существует две топологии соединения через физические порты стека:

  • Линейная топология: Используя штатные кабели, левый порт (правый порт) одного устройства соединяют с правым портом (левым портом) другого устройства и так далее. Правый порт (левый порт) первого устройства не соединяется штатным кабелем с левым портом (правым портом) последнего устройства. Такой способ соединения называется линейной топологией, как показано на левой части рисунка ниже.

  • Кольцевая топология: при соединении правого порта (левого порта) первого устройства и левого порта (правого порта) последнего устройства в линейной топологии, такой способ соединения называется кольцевой топологией, как показано на правой части рисунка ниже. Кольцевая топология является более надежной по сравнению с линейной. При отказе одного канала в топологии «кольцо» система стека может продолжать нормальную работу; при отказе канала в топологии «цепь» это может привести к разделению стека на части.

Рисунок 20-2: Схема физического подключения стека

Рисунок 20-2: Схема физического подключения стека

Обнаружение топологии

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

Каждое устройство-участник хранит известную ему информацию о топологии локально. Изначально участник записывает только данные о своей собственной топологии. Когда состояние порта стека изменяется на «up» (рабочее), устройство-участник начинает периодически отправлять известную ему информацию о топологии через этот активный порт стека. Получив информацию от непосредственного соседа, устройство-участник обновляет свои локально сохраненные данные. После определенного периода сбора все устройства получат полную информацию о топологии (это состояние называется сходимостью топологии). В этот момент начнется этап выбора ролей.

Выбор ролей

Система стека состоит из нескольких устройств-участников, каждое из которых выполняет определенную роль — Master или Slave. Процесс определения роли устройства-участника называется выбором ролей.

Выбор ролей происходит при изменении топологии, например, при создании стека, добавлении нового устройства, разделении стека. Правила выбора ролей следующие (оценка начинается с первого правила. Если несколько участников соответствуют критерию, производится проверка по следующему правилу, и так до тех пор, пока не будет найден единственный оптимальный участник, после чего выборы прекращаются. Этот оптимальный участник становится ведущим устройством стека, а все остальные устройства — ведомыми):

  • Первыми рассматриваются участники с более высоким значением приоритета.
  • Если приоритеты равны, преимущество имеют участники с меньшим номером слота.

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

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

Рисунок 20-3: Схема работы стека моноблочных устройств

Рисунок 20-3: Схема работы стека моноблочных устройств

20.2.3 Управление стеком

Виртуальное устройство, образованное с помощью стекирования, может управляться как единый объект. Администратор может подключиться к любому устройству-участнику в стеке через Console-порт или с помощью Telnet. Настройка стека осуществляется через ведущее устройство (Master).

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

Система стекирования использует ID слота в качестве идентификатора участника для идентификации и управления устройствами-участниками. ID участника является уникальным для всех устройств в стеке.

Идентификатор участника вводится в номер порта. Первая часть номера интерфейса указывает ID участника устройства, на котором расположен этот интерфейс, что удобно для настройки и идентификации интерфейсов на различных устройствах стека.

Идентификатор участника также используется в управлении файловой системой. Например, путь slot2#flash:/test.cfg указывает, что в корневом каталоге Flash на устройстве-участнике (с ID участника 2) существует файл с именем test.cfg. Ведущее устройство имеет прямой доступ к каталогам Flash всех устройств-участников.

20.2.4 Обслуживание стека

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

Подключение устройства-участника

  • В процессе обслуживания стека обнаружение топологии продолжается постоянно. При обнаружении нового устройства-участника выполняется различная обработка в зависимости от состояния добавляемого устройства:

  • Если добавляемое устройство само не сформировало стек (например, устройство было сконфигурировано с функцией стекирования, затем обесточено, подключено к работающей системе стека, после чего включено и перезагружено), оно будет определено в качестве ведомого.

  • Если добавляемое устройство уже сформировало собственную систему стека (например, оно было сконфигурировано для стекирования и затем подключено к существующей системе стека), это эквивалентно слиянию двух стеков (обратите внимание, что такой способ формирования стека, как правило, не рекомендуется). В этом случае между двумя стеками проводятся выборы стека. Все устройства-участники проигравшего стека должны быть перезагружены, после чего они все присоединятся к победившему стеку в качестве ведомых устройств.

Если устройство-участник успешно присоединяется, это эквивалентно увеличению портовых ресурсов интерфейсных плат для стекированной системы.

Возможными причинами подключения устройств-участников являются: ручное добавление членов в систему стека; восстановление после сбоя. Когда устраняется отказ устройства или канала связи, восстановившееся устройство заново присоединится к стеку.

Отключение устройства-участника

В процессе обслуживания стека для определения факта отключения устройства-участника используются два следующих метода:

  • При нормальной работе непосредственно соединенные устройства-участники обмениваются Hello-сообщениями каждую секунду. Если Hello-сообщения от непосредственного соседа не поступают в течение трех последовательных циклов, считается, что устройство-участник покинуло систему стека, и стек исключит это устройство из топологии.

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

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

Возможными причинами отключения устройства-участника являются: плановое изменение топологии и извлечение устройства; отказ устройства-участника; потеря соединения (сбой канала).

Обновление топологии

Простое изменение топологии — это изменение топологии устройства с кольцевой на линейную или с линейной на кольцевую. Например, для устройств, соединенных по топологии «кольцо», при отказе канала связи топология может стать линейной. Другой пример: при добавлении устройства первоначальную кольцевую топологию необходимо временно изменить на линейную, чтобы подключить новое устройство.

При простых изменениях топологии состав участников стека и роль ведущего устройства не изменяются. Маршрут пересылки трафика будет автоматически изменен только при необходимости, что не повлияет на нормальную работу устройства.

20.2.5 Разделение стека и обнаружение двойной активности (Dual-Active Detection)

Разделение стека

Разделение стека — это ситуация, при которой часть коммутаторов-участников физически отделяется от стабильно работающей системы стека или происходит отказ канала стекирования, в результате чего одна система стека разделяется на несколько независимых систем.

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

Как показано на рисунке ниже, после разделения стека исходный ведущий коммутатор Switch A удаляет информацию о топологии коммутаторов Switch D и Switch E и синхронизирует новую топологическую информацию с коммутаторами Switch B и Switch C. После перезагрузки коммутаторы Switch D и Switch E формируют новую систему стека, в которой Switch D становится новым ведущим коммутатором.

Рисунок 20-4: Схема разделения стека

Рисунок 20-4: Схема разделения стека

Обнаружение двойной активности (Dual-Active Detection)

Протокол обнаружения двойной активности (Dual-Active Detect, DAD) предназначен для обнаружения и обработки ситуации разделения стека. Он позволяет выявлять факт разделения, разрешать конфликты и восстанавливать работоспособность, тем самым сводя к минимуму влияние разделения стека на бизнес-процессы.

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

Рисунок 20-5: Схема обнаружения двойной активности (DAD) через прямое подключение рабочих портов

Рисунок 20-5: Схема обнаружения двойной активности (DAD) через прямое подключение рабочих портов

При использовании метода прямого подключения через рабочие порты сообщения DAD используют формат BPDU-сообщений. Следовательно, канал для прямого обнаружения может также проходить через промежуточные устройства, которые должны быть настроены на прозрачную передачу BPDU-сообщений. Рекомендуется использовать схему полносвязной топологии между устройствами-участниками стека (т.е. каждое устройство должно быть соединено с каждым).

После настройки обнаружения двойного мастера ведущий коммутатор отправляет конкурентные сообщения DAD по каналу обнаружения DAD. После разделения стека образовавшиеся независимые системы стека начинают обмениваться этими конкурентными сообщениями и сравнивать полученную информацию со своей собственной. Если собственные параметры выигрывают, система не выполняет никаких действий, сохраняет рабочее состояние и продолжает штатную передачу трафика. Если собственные параметры проигрывают, все рабочие порты (за исключением специально зарезервированных) переводятся в состояние Error-Down, переходя в нерабочий режим и прекращая передачу трафика.

После устранения неисправности канала стекирования разделенные системы стека объединяются. Коммутаторы, находившиеся в нерабочем режиме, будут перезагружены, а их порты, переведенные в Error-Down, восстановятся в нормальное состояние. Вся система стека будет восстановлена.

Правила конкурентного выбора DAD следующие (проверка выполняется последовательно, начиная с первого правила, до нахождения оптимального коммутатора, после чего сравнение прекращается):

  1. При сравнении приоритетов стека преимущество в конкурентной борьбе имеют коммутаторы с более высоким приоритетом стека, которые и выигрывают.

  2. При сравнении номеров слотов оборудования преимущество имеют коммутаторы с меньшим номером слота, которые с большей вероятностью выигрывают.

  3. При сравнении MAC-адресов устройств преимущество имеют коммутаторы с меньшим значением MAC-адреса, которые с большей вероятностью выигрывают.

20.2.6 Принцип пересылки пакетов в стеке

Стек использует технологию распределенной эластичной пересылки для реализации пересылки сообшений на 2-м и 3-м уровне модели OSI, максимально задействуя вычислительные мощности каждого участника.

Каждое устройство-участник в системе стека обладает полноценными возможностями пересылки на уровнях 2 и 3. Получив кадр или пакет для пересылки, оно может обратиться к локальной таблице коммутации/маршрутизации, чтобы определить исходящий интерфейс (и следующий хоп) для этого сообщения, а затем отправить его через соответствующий интерфейс. Этот исходящий интерфейс может находиться на самом локальном устройстве или на другом устройстве-участнике стека. Передача сообщения с локального устройства на другой участник является внутренней реализацией, которая полностью прозрачна и незаметна для внешней сети. То есть, для пакета 3-го уровня, независимо от того, через сколько устройств-участников он проходит внутри системы стека, счетчик TTL (число хопов) увеличивается только на 1, что внешне выглядит как прохождение всего через одно сетевое устройство.

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

Рисунок 20-6: Пересылка unicast-сообщений внутри устройства (в пределах одного участника стека)

Рисунок 20-6: Пересылка unicast-сообщений внутри устройства (в пределах одного участника стека)

Как показано на рисунке ниже, входящий и исходящий интерфейсы пересылаемого сообщения находятся на разных устройствах-участниках. Когда Slave 1 получает сообщение, оно ищет в своей локальной таблице пересылки и определяет, что исходящий интерфейс находится на ведущем устройстве (Master). Slave 1 пересылает сообщение мастеру по оптимальному внутреннему пути, а мастер направляет сообщение конечному пользователю через исходящий интерфейс.

Рисунок 20-7: Межблочная пересылка unicast-сообщений (между устройствами стека)

Рисунок 20-7: Межблочная пересылка unicast-сообщений (между устройствами стека)

На следующем рисунке показана схема обработки мультикаст-сообщений в стеке. Когда Slave 1 получает мультикаст-сообщение, оно сначала ищет в своей локальной таблице мультикаст-рассылки. Если локальный получатель существует, сообщение сразу отправляется локальному участнику мультикаст-группы. Затем Slave 1 пересылает мультикаст-сообщение на Master и Slave 2. Master и Slave 2 также сначала проверяют свои локальные таблицы мультикаст-рассылки, а затем пересылают сообщение соседнему устройству-участнику стека с другой стороны. Благодаря механизму защиты от петель (loop protection mechanism) Slave 3 отбрасывает мультикаст-сообщение, пришедшее от Slave 2. Таким образом, для мультикаст-сообщений каждое устройство-участник копирует сообщение только при необходимости, что гарантирует передачу только одной копии сообщения между устройствами.

Рисунок 20-8: Пересылка мультикаст-сообщений

Рисунок 20-8: Пересылка мультикаст-сообщений