У меня есть 2 совершенно новых, не настроенных коммутатора CRS326-24S+2Q+RM с версией v7.9.1 stable, и я пытался настроить MLAG. Я следовал инструкции здесь: https://help.mikrotik.com/docs/display/ROS/Multi-chassis+Link+Aggregation+Group, но полученная конфигурация получалась очень нестабильной. При постоянной пинге между двумя хостами я пробовал отключать и подключать случайные порты — иногда работало, иногда нет. В конце концов мне удалось найти конфигурацию, которая, кажется, работает на 100%. Главное оказалось создавать уникальный MLAG ID для каждого клиентского бонда, а не использовать один и тот же для всех. С этой конфигурацией я могу подключать и отключать любые хосты на любые порты с полной резервированностью, но у меня есть два вопроса: корректна ли такая конфигурация? В текущей настройке я использую порт qsfpplus1-1 как uplink/peer порт (40 Гбит/с). На самом деле я хотел бы создать LACP бонд из портов qsfpplus1-1 и qsfpplus2-1 и использовать этот бонд как uplink peer. Но если я это делаю, MLAG перестаёт работать. Ниже приведена моя рабочая конфигурация. Может ли кто-то подтвердить, что она правильная, и объяснить, почему не работает, если я делаю LACP на peer-портах? Для информации: хосты — Proxmox (Linux) с двумя портами в LACP. Спасибо.
Мне удалось заставить это работать (по крайней мере, кажется, что работает!). Нужно изменить приоритет MLAG на одном из пиров, чтобы они не совпадали. Тогда один из них станет основным.
Шаги: Установите на обоих коммутаторах пустую конфигурацию. Подключаюсь к первому медному Ethernet-порту на каждом через Winbox, чтобы поддерживать соединение во время настройки коммутаторов. Если хотите скорость между коммутаторами больше чем 1/10/40 Гбит/с, создайте агрегированный интерфейс (bond) из двух, трёх, четырёх и т.д. физических интерфейсов, которые хотите объединить. Сделайте настройки одинаковыми с обеих сторон: 802.3ad, тайминг LACP 1 с (30 с тоже подойдет, но я использую 1 с) и хэширование на уровнях 3 и 4 (так балансировка нагрузки лучше). Создайте мост (bridge), затем включите MLAG на обоих коммутаторах, используя выбранный порт для пира: обычно это самый быстрый физический порт или LACP-агрегат (созданный на шаге 2). Добавьте пир-порт в мост, причем PVID пир-порта НЕ должен быть VLAN 1 (любой другой, кроме 1, отлично подойдет). Обязательно установите для пир-порта разрешение всех типов кадров (как с тегами, так и без). Пропишите тег VLAN 1 на пир-порту с обеих сторон, чтобы нетегированный трафик проходил корректно. НИКОГДА не используйте тег VLAN, который вы выбрали как PVID пир-порта, ни для каких других портов. Убедитесь, что настройки STP на обоих мостах идентичны. Добавляйте остальные порты в мост по мере необходимости, обязательно назначая теги VLAN нужным физическим портам и ВСЕГДА пир-порту. Если вы добавляете LAG к стеку MLAG (а это как раз суть), как понял автор темы, MLAG-ID должен быть УНИКАЛЬНЫМ для каждого LAG-клиента. Вы можете иметь любое количество ссылок в одном LAG, при условии, что у них одинаковый ID, но у разных клиентов ID должен отличаться. Лично у меня были проблемы при использовании более двух ссылок (по одной на каждый коммутатор) на версиях между 7.15.3 и 7.19.x, поэтому для максимальной стабильности рекомендую использовать 7.15.3 или 7.19.3. У меня на этих версиях есть устройства с четырьмя ссылками (по две на коммутатор) в некоторых стэках MLAG — и всё работает отлично. Не обязательно иметь по две ссылки на каждое подключенное устройство. Одна ссылка сработает, но тогда не будет резервирования, если коммутатор, к которому подключено устройство, выйдет из строя. Хотя для 99 % домашних лабораторий этого более чем достаточно. Это же коммутаторы. Не пытайтесь делать сложную маршрутизацию или дополнительную нагрузку на процессор (если только не используете MLAG с парой устройств 2116/2216, но даже тогда это усложняет работу, и L3HW offload с MLAG не поддерживается). Это скорее запутает и нарушит принцип разделения функций. Используйте маршрутизаторы для маршрутизации, а коммутаторы — для коммутации, даже в домашней лаборатории.
Это пример из пары коммутаторов с MLAG, у которых есть порты и QSFP+, и SFP+. В основном конфигурация на обоих коммутаторах в стеке будет одинаковой, за исключением устройств, у которых есть только одна ссылка в стек. # Конфигурация bond может/должна быть почти идентичной # MLAG-ID — это способ, с помощью которого два коммутатора определяют, какие подключения принадлежат каким устройствам # Я использую 1-секундный интервал LACP и хэширование по уровням 3-4, по умолчанию 30 секунд и уровень 2
Шаг 7 из вышеуказанного: добавляем порты коммутатора в мост/MLAG /interface bridge port # PVID должен совпадать с VLAN MLAG-пира # Можно использовать любой действующий VLAN ID; я не использую 2-10 нигде в своих сетях add bridge=bridge interface=qsfpplus2-mlag-peer pvid=2 # Если не указывать, PVID по умолчанию 1 add bridge=bridge interface=bond-1-router add bridge=bridge interface=bond-2-server
# Эти два — только на Switch 1: add bridge=bridge interface=sfp-sfpplus3-lone-device # Для этого устройства нельзя допускать native VLAN add bridge=bridge interface=sfp-sfpplus8-macpro-esxi frame-types=admit-only-vlan-tagged
Тегируем VLAN’ы на соответствующие порты /interface bridge vlan # VLAN 1: нетегированный на тех портах, которые вы хотите видеть как "нэйтивный" VLAN, # и тегированный через MLAG peer link add bridge=bridge vlan-ids=1 tagged=qsfpplus2-mlag-peer untagged=bridge,bond-1-router,bond-2-server,sfp-sfpplus3-lone-device
# VLAN 2: VLAN MLAG-пира, нетегированный на peer link, нигде больше не тегируется add bridge=bridge vlan-ids=2 untagged=qsfpplus2-mlag-peer
# Пример VLAN’ов: 981-985 нужны для связи Mac Pro с ESXi и Linux-сервера с LAG в стеке
# На Switch 1: у Mac Pro ESXi только один порт, который подключен именно к этому коммутатору; # тегируем его порт, peer порт и порт другого сервера add bridge=bridge vlan-ids=981-985 tagged=qsfpplus2-mlag-peer,bond-2-server,sfp-sfpplus8-macpro-esxi
# На Switch 2: только сервер имеет связь с обоими коммутаторами, поэтому тегируем только peer и сервер add bridge=bridge vlan-ids=981-985 tagged=qsfpplus2-mlag-peer,bond-2-server
Думаю, я следую твоему примеру. Вот конфигурация с одного из коммутаторов. Правильно ли это выглядит? Что-то упустил? Кажется, что работает. У меня 5 серверов, подключённых к 2 коммутаторам CRS520-4XS-16Q-RM 100 Gb. VLAN, кроме 99 PVID на ICCP-ссылке, нет.
/interface bridge add name=bridge vlan-filtering=yes /interface ethernet #ПОРТЫ СЕРВЕРОВ set [ find default-name=qsfp28-1-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 set [ find default-name=qsfp28-2-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 set [ find default-name=qsfp28-3-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 set [ find default-name=qsfp28-4-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 set [ find default-name=qsfp28-5-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 #ПОРТЫ ICCP set [ find default-name=qsfp28-15-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000 set [ find default-name=qsfp28-16-1 ] fec-mode=fec91 l2mtu=9000 mtu=9000
Думаю, что устройства CRS с коммутаторными чипами Marvell Prestera все имеют ограничение L2MTU на уровне 10218 (можно проверить через /interface print и столбец MAX-L2MTU). Согласно видео MikroTik про L2MTU, скорее всего, нет никакой разницы в использовании аппаратных ресурсов между установкой l2mtu=9000 и l2mtu=10218 (используется одинаковое количество буферной памяти). Однако, если ограничить L2MTU на портах qsfp28 до 9000, как у тебя в текущей конфигурации, а потом сделать VLAN на этих портах, то эти VLAN не смогут работать с MTU 9000. Возможно, будет лучше установить l2mtu=10218 для портов через /interface ethernet.
Суть в том, чтобы установить их максимально высоко, насколько позволяет железо, чтобы пакеты размером 9000 байт проходили через стек MLAG. Если поставить значение больше, чем поддерживает оборудование, оно автоматически подстроит его под максимум. Я обычно ставлю 12000 — этого хватает для всего, что выпускает MikroTik.