Привет, Хабр! Недавно мы опубликовали статью про сетевое резервирование в дата-центрах Selectel. Увидели, что текст вам понравился и написали продолжение.

По мотивам выступления Кирилла Малеванова, технического директора Selectel,
рассказываем о технологиях физического резервирования коммутаторов. Что такое Stack и MLAG, как они помогают в L2-резервировании и какую технологию выбрать.

Где используют стекирование


Иногда клиенты запрашивают резервированное соединение (резервирование канала). В таком случае подключение их сервера происходит с помощью:

  • двух физически разных линков,
  • двух коммутаторов,
  • агрегированного интерфейса из двух портов сетевых карт на стороне сервера.


Схема резервированного включения сервера в сеть

Для «синхронизации» двух или более коммутаторов используют технологии стекирования — Stack или MLAG. В результате для вышестоящего устройства или подключенного сервера объединенные коммутаторы представляются одним устройством. Такой подход к резервированию применяется в услуге Colocation.

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

Для описания связи «сервер-интернет» принято использовать модель link aggregation. Это, по сути, «свернутая» схема L2-фабрики.


Модель link aggregation

Об этом говорили в статье о резервировании в дата-центрах Selectel. Теперь углубимся в технологии физического резервирования.

Stack и его недостатки


Стекирование и L2-резервирование пришли в повседневную практику из бизнеса. Впервые стекирование широко распространилось на коммутаторах типа Cisco Catalyst 3750.

Благодаря технологии Cisco StackWise можно было объединять до девяти коммутаторов Catalyst 3750 в один логический. Притом с высокой производительностью — от 32 Гбит/c до 128 Гбит/c, что и по современным меркам неплохо.


Catalyst 3750 (источник)

Постепенно технология набирала популярность и получила реализацию у разных вендоров. Но не у всех.


Как называется Stack у разных вендоров

В таблице «забыли» упомянуть Arista. Как называется технология стекирования у них — напишите в комментариях.

Плюсы стекирования


Стекируемые коммутаторы у каждого вендора свои, но для всех можно выделить следующие плюсы:

  1. Соединение от 2 до 10 коммутаторов.
  2. Единый адрес управления — общий control plane. Не нужно управлять десятью коммутаторами. Достаточно подключиться к одному и ввести нужную команду.
  3. Экономия uplink-портов. Это сейчас на каждом коммутаторе по четыре uplink-порта. Но раньше их было по два, и этого не хватало. Для стекирования можно использовать отличные от uplink выделенные порты.

На этом плюсы заканчиваются. Более того, некоторые из них несут «переменный» характер. Расшифруем.


Минусы стекирования


Общий control plane

Один из главных плюсов Stack — это и его проклятие. Если отключается master — коммутатор, через который происходит управление стеком, — могут пострадать все остальные коммутаторы.

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

Сложность подбора нужных stack-кабелей

Способ стекирования зависит от модели используемых коммутаторов:

  • Первый вариант — при помощи специально выделенных портов.
  • Второй вариант — через медные патч-корды Ethernet и соединяемые этим способом порты, которые предварительно объявляются портами для стекирования.
  • Третий вариант — при помощи кабелей с разъемами GBIC, SFP и пр.

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

При этом важно не ошибиться с длинами каждого из них. Они могут различаться в зависимости от размера стека. Например, чтобы соединить нулевой коммутатор с «верхним», нужен кабель большей длины, чем для линка между первым и вторым устройствами. Вдобавок stack-кабели толстые, и их сложно «втиснуть» в стойки.


Stack, вид сзади (источник)

Второй и третий варианты лишены этих проблем еще на стадии проектирования. Не нужно держать stack-кабели в ЗИПе. Можно использовать обычные трансиверы и оптические патч-корды, которые нужны для включения клиентских линков в коммутаторы. Более того, можно размещать устройства на расстоянии более 5 метров. Это полезно, когда нужно расположить коммутаторы в разных точках дата-центра.

Сложный процесс обновления ПО на коммутаторах

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

Например, на коммутаторах Cisco каждое из устройств поочередно обновляется и уходит в reboot. То есть остаются коммутаторы, которые продолжают обслуживать клиентов.

Аналогичная технология реализована у Juniper, но есть вендоры или модели, где перезагрузка всех коммутаторов в стеке происходит одновременно.

Высокая вероятность split-brain

Представьте, что стек состоит из двух коммутаторов. Между ними протянуты stack-кабели. В случае повреждения порта или линка может возникнуть ситуация — первый коммутатор считает, что упал второй, а второй коммутатор — что упал первый. Хотя оба они работают. Из-за этого появляется лишний master стека, и все начинает сбоить.


Чтобы избавиться от всех минусов, «сетевики» придумали MLAG.

Что такое MLAG и чем он лучше Stack


MLAG/MC-LAG (Multi-Chassis Link Aggregation) — это технология объединения data plane нескольких коммутаторов в один логический data plane, но с сохранением раздельного control plane на каждом из коммутаторов. Как и Stack, технология проприетарна — нельзя создавать пары из коммутаторов от разных вендоров.


Резервированное подключение по MLAG (источник)

Технология MLAG может быть знакома под разными названиями.


Как называется MLAG у разных вендоров

В большинстве случаев за MLAG скрывается резервирование двух «коробок» (коммутаторов), которые соединяются одним или несколькими кабелями. Все вендоры рекомендуют использовать минимум два кабеля для резервирования, чтобы можно было, например, спокойно почистить оптику или переобжать основной кабель.


Порты для подключений линков на схемах обозначают как peer-link.

Если вам интересна тема дата-центров, читайте другие наши тексты:

Сетевое резервирование в дата-центрах: решаем задачку про двух велосипедистов
Зачем мы установили беспроводные датчики мониторинга напряжения стоек и в чем профит для клиентов дата-центра
Как показаны дата-центры в кино и как они выглядят в жизни? 6 примеров из фильмов и сериалов

Подчищаем за Stack


Сегодня MLAG — это новый Stack, широко распространенный в дата-центрах и в сетях операторов связи.

MLAG лишен всех недостатков Stack. Например, проблему с общим control plane MLAG решает через объявление двух master-устройств. В случае падения первого мастера стек не развалится, а просто делегирует функции первого на второй «главный» коммутатор.
Примечание: На самом деле иерархия на программном уровне никуда не делась. Среди двух мастеров есть главный (primary) и подчиненный — slave-коммутатор (secondary).


Конфигурации MLAG-пары

Проблема с обновлением софта тоже решена. Так как в MLAG-стеке каждое устройство самостоятельно, можно обновлять их по отдельности. Во время обновления коммутаторы будут работать на разных версиях ПО (старой и новой). Однако версии софта на коммутаторах одного стека не могут различаться на условные 10 релизов. Обновляться нужно постепенно.

Надежность: зачем подключать третий линк


Единственное, что нельзя убрать полностью, — риски split-brain. Но их можно свести к минимуму, добавив в схему подключений keepalive link.


Он включается, как правило, в менеджмент-порты (out of band). Через них происходит управление и контроль: коммутаторы проверяют состояние друг друга с помощью keepalive-запросов.

Keepalive link позволяет убедиться, что соседний коммутатор действительно перестал работать. В случае если упал только peer-link и оба коммутаторы «живы», slave-коммутатор «гасит» свои порты. Таким образом, риски split-brain сводятся к минимуму.

Стоит добавить, что в MLAG нет проблем с подбором кабелей: он перенял от Stack третий вариант стекирования, при помощи кабелей с разъемами GBIC, SFP и пр.

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


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

  1. Прямой доступ от сервера к интернету. Например, от сервера B через первый коммутатор. При условии, что между ними есть живой линк (первая схема).
  2. Финт через второй коммутатор. Если между сервером B и первым коммутатором линк все же упал, трафик пойдет через вторую «коробку» и peer-link (вторая схема).
  3. Доступ через peer-link. Может быть и такое, что трафик, который должен попасть на сервер D через второй коммутатор, почему-то «свалился» на первый коммутатор (например, могла не сойтись хеш-функция). В таком случае активируется peer-link и трафик совершает финт через второй коммутатор (третья схема).
  4. Соединение между серверами A и D. Горизонтальный обмен трафиком между двумя серверами (четвертая схема).

Вендорская реализация MLAG


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

Если вам интересно, как реализован MLAG у разных вендоров: Arista, Huawei, H3C, Cisco, Juniper — погружайтесь в видео.

Таймкоды докладов про релизы MLAG:

  • Кирилл Малеванов. Реализация у вендоров Arista1:01:20
  • Евгений Никифоров. Китайские товарищи: Huawei + H3C1:06:30
  • Никита Степанов. «Наше все»: Cisco + Juniper1:17:08

Задавайте вопросы по докладам и делитесь мнением о статье в комментариях.

Комментарии (15)


  1. kterik
    13.07.2022 22:17

    Предупрежу, что не использовал MLAG в работе, только интересовался.

    Есть вопрос по картинке №4 на последней схеме. Раньше мне казалось, что peer-link резервируется исключительно под передачу трафика агрегированных каналов, явным образом объявленных в качестве членов групп MLAG/VPC. А на деле же нижестоящее устройство может быть подключено одиночным линком?

    Второй вопрос: часто ли встречается у коммутаторов разных прозводителей ограничение в виде возможности одновременно либо использовать стек, либо MLAG, но не то и другое сразу?


    1. Doctor_IT Автор
      14.07.2022 14:48

      Здравствуйте!

      вопрос по картинке №4 на последней схеме. Раньше мне казалось, что peer-link резервируется исключительно под передачу трафика агрегированных каналов, явным образом объявленных в качестве членов групп MLAG/VPC. А на деле же нижестоящее устройство может быть подключено одиночным линком?

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

      Но чтобы получить резервируемую схему, нужно включаться минимум двумя портами (по одному в каждое устройство MLAG). 

      часто ли встречается у коммутаторов разных прозводителей ограничение в виде возможности одновременно либо использовать стек, либо MLAG, но не то и другое сразу?

      Вы про то, чтобы собрать MLAG из пары стеков?


      1. kterik
        14.07.2022 15:09

        Вы про то, чтобы собрать MLAG из пары стеков?

        Да. Иногда может быть удобно собрать в стек пару коммутаторов: один с медными портами, второй с оптическими — и эти пары объединять в группы MLAG.

        У некоторых производителей стекирование и MLAG взаимоисключают друг друга (например, это коммутаторы серии 23xx, 33xx Eltex).


        1. Doctor_IT Автор
          14.07.2022 17:04

          Не рассматривали такой кейс. По нашему дизайну получилось бы две MLAG пары — медная и оптическая.


          1. kterik
            14.07.2022 17:45

            Тестировали ли вы взаимодействие MLAG с процессом STP той или иной разновидности? Например, если у нижестоящих двух коммутаторов окажется собственная связь, образующая петлю трафика, то MLAG пара детектирует петлю и что-нибудь отрубит? Или забота о разрыве петли лежит только на "клиентах" MLAG?


            1. Doctor_IT Автор
              15.07.2022 22:38

              У многих вендоров STP в MLAG-паре работает как на «обычном» свитче. Т.е. в описанном вами сценарии петля будет детектирована и разорвана.


  1. Maksim4
    14.07.2022 10:11

    из текста "агрегированного интерфейса из двух портов сетевых карт на стороне сервера" со стороны сервера ставится две сетевых карты или можно использовать два порта на сетевой карте?


    1. RemB
      14.07.2022 11:15
      +1

      Можно и две карты и два порта на карте. Это все равно два разных сетевых интерфейса для ОС.


  1. Wert_Ant
    14.07.2022 13:19

    В защиту стека могу сказать, что при выборе топологии ring (например SW1-SW2-SW3-SW1) избыточный линк даёт устойчивость стека от обрыва линка, а при наличии standby мастера получаем устойчивость от отключения основного мастера. При этом на тех же Cisco Small Business есть стек, но нет mlag.


  1. chaynick
    14.07.2022 14:03

    Я конечно все понимаю но...

    1. В вендорских реализациях стэка бывает и обмен питанием, то есть если отвалился блок питания коммутатора то его будут питать другие, в *LAG - нет.

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

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

    4. Называть недостатком технологии что инженер не может подобрать длину кабеля из фиксированных величин... Ну не знаю, откажитесь в своем ДЦ еще и от оптики, там мало того что длину надо рассчитывать но и иногда и аттенюаторы надо ставить, такие инженеры точно не справятся.

    5. Представьте, что стек состоит из двух коммутаторов. Между ними протянуты stack-кабели. В случае повреждения порта или линка может

      Во первых между двумя коммутаторами будет два стэковых кабеля, сплит будет при повреждении обоих. Во-вторых представьте что у вас *LAG на оптике с unidirectional link... Или субоптимальный свичинг. И много чего еще.


    1. DaemonGloom
      14.07.2022 19:59

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


    1. Doctor_IT Автор
      15.07.2022 18:02

      Здравствуйте!
      1. Бывает. Но если мы говорим о резервируемой схеме, то лучше использовать по два БП в каждом из коммутаторов MLAG-пары. 
      2. В случаях, когда peer-link «толще» (например, 100Г) линий в сторону клиентов (10/25Г), проблемы с недостатком пропускной способности матрицы не будет. 
      3. Действительно, у каждого вендора могут быть свои «фишки», помогающие сделать стек более отказоустойчивым. Но наш опыт эксплуатации показывает, что MLAG более устойчив к проблемам. 
      4. Имелась ввиду проблема с ограничениями стек-кабелей по длине. В противовес этому — стекирование через *SFP порты, в которых можно использовать одномодовые кабели произвольной длины, ограниченной оптическим бюджетом трансивера.
      5. Действительно, в Stack и MLAG должно быть минимум два линка между устройствами. И в обоих случаях существует пусть и маленькая, но вероятность отказа двух линков. В MLAG для уменьшения рисков split brain используется keepalive link.


  1. ammo
    15.07.2022 00:44

    >Какой технологии вы отдаете предпочтение?

    EVPN All-Active


  1. navion
    15.07.2022 19:42
    +1

    У Arista нет стэка, но даже кампусные свитчи умеют в MLAG и EVPN, а для синхронизации настроек предлагают использовать оркестратор.


  1. navion
    15.07.2022 19:52

    Есть ещё недостэк в AOS-S (Aruba/HPE 2530-2540), который даёт лишь единый IP для аутентификации и подключения к отдельным коммутаторам без создания общего плейна.