Метка: 88a8

  • QinQ на MikroTik RouterOS: EtherType 0x88A8

    QinQ на MikroTik добавляет внешнюю сервисную VLAN-метку к клиентскому VLAN-трафику. В bridge RouterOS для этого важны EtherType 0x88A8, PVID, tag stacking и таблица VLAN.

    Поддержка аппаратного ускорения зависит от switch chip. Включение vlan-filtering может разорвать управление, поэтому применяйте схему через отдельный порт или консоль и заранее добавьте management VLAN.

    Васильев Кирилл настройка vlan qinq

    Пояснительная записка к нашей сети.

    Коммутаторы, которые имеют имя SW-# это коммутаторы «уровня доступа» к ним подключается конечное оборудование.

    Коммутаторы QSW-# — коммутаторы, которые должны оборачивать весь трафик в 88a8 q-irouterosn-q с портов от коммутаторов «уровня доступа».

    Номер метки STAG 100 q-in-q.

    • Зелёный — сервера находятся в vlan 200.
    • Красный — сервера находятся в vlan 300.

    Всё сервера подключены в access порты, т.е.фреймы сервера отправляют без тега.

    Синий vlan 400 управления, он должен быть на каждом коммутаторе как логический интерфейс, а также тэгом отправляться на SRV-4 предполагаем, что на данном сервере запущенна система мониторинга, которая собирает какие-то метрики с коммутаторов или там живёт наш админ =).

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

    /interface bridge add name=br
    /interface bridge port add bridge=br interface=ether1
    /interface bridge port add bridge=br interface=ether2
    /interface bridge set vlan-filtering=yes
    

    И так далее на каждом коммутаторе, меняем только количество и имена интерфейсов.

    На всех коммутаторах подготовим интерфейс управления отдельный и единственный sub interface vlan

    /interface vlan add name=br.400 vlan-id=400 interface=br comment=Mgmt
    

    Да, да, я именую интерфейсы vlan через точку, где перед номером тега указываю имя интерфейса родителя.

    Ну а теперь начнём, настраивать коммутаторы с пояснением.

    SW-1

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq

    Нам необходимо, указать, следующее:

    При входе (ingress-filter) трафика без тега с первого интерфейса мы должны на такой трафик повесить метку 200. При выходе (egress-filter) трафика с 200 меткой c ether1, мы эту метку должны снять и отправить обычный ethernet.

    Делается это одной командой просто устанавливаем pvid на данный интерфейс.

    /interface bridge port 
    set pvid=200 [find interface=ether1]
    

    Далее нам необходимо, 200 vlan отправить с тегом в ether2, опять же делается одной командой.

    /interface bridge vlan 
    add bridge=br vlan-ids=200 tagged=ether2
    

    Также на этом коммутаторе у нас есть 400 vlan управления, так как получить доступ надо к IP (читай CPU) указываем помимо ether2 также порт сам bridge.А также так как мы должны в первой порт отправлять данный трафик с тегом, указываем ещё и ether1

    /interface bridge vlan 
    add bridge=br vlan-ids=400 tagged=ether2,br,ether1
    

    SW-2

    По аналогии с SW-1

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq

    Создаём access порты доступа или просто untagged

    /interface bridge port 
    set pvid=200 [find interface=ether2]
    set pvid=300 [find interface=ether1]
    

    Заполняем таблицу VLAN тегированным портами.

    /interface bridge vlan 
    add bridge=br vlan-ids=200 tagged=ether3
    add bridge=br vlan-ids=300 tagged=ether3
    add bridge=br vlan-ids=400 tagged=ether3,br
    

    SW-3

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq

    По аналогии с SW-1 и SW-2 Создаём access порты доступа или просто untagged

    /interface bridge port 
    set pvid=300 [find interface=ether1]
    

    Заполняем таблицу VLAN тегированным портами.

    /interface bridge vlan 
    add bridge=br vlan-ids=300 tagged=ether2
    add bridge=br vlan-ids=400 tagged=ether2,br
    

    Переходим непосредственно к Q-in-Q

    На всех коммутаторах QSW сменим тип ethernet

    /interface bridge set ether-type=0x88a8
    

    А теперь по всем коммутаторам

    QSW-3

    Заполним таблицу vlan

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq
    /interface bridge vlan 
    add bridge=br vlan-ids=200 tagged=ether2
    add bridge=br vlan-ids=300 tagged=ether2
    add bridge=br vlan-ids=400 tagged=ether2,br
    add bridge=br vlan-ids=100 tagged=ether1
    

    обратите внимание, что мы добавили, 100 vlan.

    Но появляется проблема, в том, что SW-2 нам шлёт трафик с типом ethernet 8100, а наш коммутатор (bridge) работает 88a8, мы должны каким-то образом указать коммутатору, что в данном порту что-то другое.

    Нам необходимо указать, что весь трафик с ether2 оборачивать меткой 100, мы уже знаем, что это делается с помощью pvid, но для того, что коммутатор понимал, что он должен ожидать не 88a8, а 8100 мы должны указать tag-stacking=yes

    Делаем

    /interface bridge port
    set pvid=100 tag-stacking=yes [find interface=ether2]
    

    QSW-2

    Вообще без комментариев, так как всё понятно

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq
    /interface bridge vlan 
    add bridge=br vlan-ids=200 tagged=ether2
    add bridge=br vlan-ids=300 tagged=ether2
    add bridge=br vlan-ids=400 tagged=ether2,br
    add bridge=br vlan-ids=100 tagged=ether1,ether3
    
    /interface bridge port 
    set pvid=100 tag-stacking=yes [find interface=ether2]
    

    QSW-1

    Так же без комментариев.

    Васильев Кирилл MikroTik Vasilev Kirill настройка vlan qinq
    /interface bridge vlan 
    add bridge=br vlan-ids=200 tagged=ether2
    add bridge=br vlan-ids=400 tagged=ether2,br
    add bridge=br vlan-ids=100 tagged=ether1
    
    /interface bridge port
    set pvid=100 tag-stacking=yes [find interface=ether2]
    

    Management на QSW

    И осталось небольшой момент, который надо исправить у нас management трафик в 400 vlan бегает только между SW коммутаторами, но не доступны QSW, дело в том, что интерфейс который мы создавали пробовать «поймать» 400ую метку на интерфейсе CPU, но она обёрнута 100 меткой и чтобы наш 400ый мог достучаться, нам надо отправить трафик без метки в CPU т.е в сам bridge, делается это с помощью всё того же пресловутого pvid на самом интерфейсе бриджа и естественно мы должны указать как pvid 100, метка которая оборачивает наш 400ый vlan.

    На всех коммутаторах QSW выполняем

    /interface bridge set pvid=100 [find name=br]
    

    Соответственно если у вас в разрыве будет стоять коммутаторы, которые будет через себя «таскать» только q-in-q ваша задача перевести коммутатор в 88a8 и работать как с обычным vlan, но только с верхней меткой, в нашем случае 100, а на внутренние метки не обращать внимания.

    Я знаю, я много не договорил и многое не описал, многие термины я специально упустил и постарался объяснить простыми словами.

    Как проверить результат

    • Проверьте ingress/egress VLAN table на каждом bridge.
    • Снимите кадр на тестовом порту и подтвердите порядок S-TAG и C-TAG.
    • Проверьте доступ management VLAN и изоляцию клиентских VLAN.

    Источники и связанные материалы

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