Эта тема посвящена реакции на многочисленные случаи недоразумений по поводу того, почему "сам мост" (bridge) в некоторых случаях должен быть указан среди тегированных или нетегированных портов VLAN, почему VLAN-интерфейсы должны быть привязаны к "мосту", а не к его составным портам и так далее. То, что в сетевой терминологии слова "интерфейс" и "порт" имеют несколько значений, вносит дополнительную путаницу. В этой теме не рассматриваются детали "нового" способа обработки нескольких VLAN на одном мосту; для этого есть отличная тема от @pcunite. Итак, начнем с картинки аппаратной схемы:

Здесь всё понятно: есть коммутатор, который отвечает за L2-перенаправление и фильтрацию VLAN, и к одному из физических Ethernet-портов этого коммутатора с помощью одного из физических Ethernet-портов роутера подключен сам роутер. Мы можем указать коммутатору, какие VLAN разрешены на каждом порту, другими словами — какие порты входят в каждый VLAN. На коммутаторе может работать какой-то вариант Spanning Tree Protocol, чтобы предотвратить L2-петли из-за неправильного подключения. В продвинутых моделях фильтры могут контролировать передачу кадров с входного (ingress) порта на выходной (egress).
На роутере мы можем назначить IP-адрес напрямую физическому интерфейсу; если хотим, чтобы роутер имел доступ к нескольким VLAN, то можно использовать столько физических интерфейсов, сколько нужно, и подключать каждый к Access-порту соответствующего VLAN на коммутаторе. Но лучше подключить физический интерфейс роутера к trunk-порту коммутатора и для каждого VLAN создать виртуальный VLAN-интерфейс, привязанный к этому физическому интерфейсу. Виртуальный VLAN-интерфейс выбирает из кадров, поступающих через физический интерфейс, те, что с нужным VLAN ID, снимает с них тег и передаёт дальше на движок маршрутизации. В направлении назад (egress) движок маршрутизации посылает кадры через этот интерфейс, они получают нужный VLAN ID, и выходят через физический интерфейс.
Для наглядности можно использовать чуть более абстрактную схему для представления той же архитектуры:

Эта диаграмма всё ещё отражает топологию, показанную на первом рисунке, только с немного иной точки зрения. Абстракция позволяет забыть о физической природе компонентов и сосредоточиться только на их функционале. Даже если большую часть реализации мы сделаем в чистом софте, роли функциональных частей не поменяются: остаётся роутер с одним интерфейсом, подключённым к одному порту коммутатора, сам коммутатор и его другие порты.
Теперь программный модуль под названием "bridge" в RouterOS реализует три вышеперечисленных элемента: интерфейс роутера, направленный на коммутатор, порт коммутатора, направленный на роутер, и сам коммутатор.
Ниже иллюстрация этого:

Пока всё предельно понятно, не так ли? А теперь — о запутанных моментах. Когда вы добавляете "bridge", создаются все три компонента (интерфейс роутера, порт коммутатора и сам коммутатор), взаимосвязь между ними жёстко фиксирована, ни у одного из компонентов нет параметра конфигурации, который бы пересекался с параметрами двух других. Параметры всех трёх элементов собраны в одной строке таблицы /interface bridge.
В частности:
- параметры, совпадающие по названию с параметрами в строках /interface bridge port, например pvid или ingress-filtering, относятся к порту коммутатора, направленному на роутер;
- параметры, совпадающие по названию с параметрами в строках /interface ethernet, например mtu или arp-timeout, относятся к интерфейсу роутера, направленному на коммутатор;
- параметры, которые не подходят ни под одну из двух групп, в основном относятся к виртуальному коммутатору. Исключением являются параметры admin-mac и auto-mac, которые тоже относятся к интерфейсу роутера, направленному на коммутатор.
Параметр name общий для всех трёх элементов.
Поэтому, когда указывают членство порта коммутатора, направленного на роутер, в VLAN, используется одно и то же имя для идентификации и самого виртуального коммутатора, и порта роутера:
/interface bridge vlan add bridge=bridge-row-name vlan-ids=10,… tagged=bridge-row-name,…
В фильтрах моста связь кадра с портом коммутатора, направленным на роутер, определяет, какую цепочку (chain) использовать: input обрабатывает кадры, выходящие из виртуального коммутатора через этот порт, output — кадры, входящие в виртуальный коммутатор через этот порт, а forward — кадры, которые обходят этот порт.

Здесь всё понятно: есть коммутатор, который отвечает за L2-перенаправление и фильтрацию VLAN, и к одному из физических Ethernet-портов этого коммутатора с помощью одного из физических Ethernet-портов роутера подключен сам роутер. Мы можем указать коммутатору, какие VLAN разрешены на каждом порту, другими словами — какие порты входят в каждый VLAN. На коммутаторе может работать какой-то вариант Spanning Tree Protocol, чтобы предотвратить L2-петли из-за неправильного подключения. В продвинутых моделях фильтры могут контролировать передачу кадров с входного (ingress) порта на выходной (egress).
На роутере мы можем назначить IP-адрес напрямую физическому интерфейсу; если хотим, чтобы роутер имел доступ к нескольким VLAN, то можно использовать столько физических интерфейсов, сколько нужно, и подключать каждый к Access-порту соответствующего VLAN на коммутаторе. Но лучше подключить физический интерфейс роутера к trunk-порту коммутатора и для каждого VLAN создать виртуальный VLAN-интерфейс, привязанный к этому физическому интерфейсу. Виртуальный VLAN-интерфейс выбирает из кадров, поступающих через физический интерфейс, те, что с нужным VLAN ID, снимает с них тег и передаёт дальше на движок маршрутизации. В направлении назад (egress) движок маршрутизации посылает кадры через этот интерфейс, они получают нужный VLAN ID, и выходят через физический интерфейс.
Для наглядности можно использовать чуть более абстрактную схему для представления той же архитектуры:

Эта диаграмма всё ещё отражает топологию, показанную на первом рисунке, только с немного иной точки зрения. Абстракция позволяет забыть о физической природе компонентов и сосредоточиться только на их функционале. Даже если большую часть реализации мы сделаем в чистом софте, роли функциональных частей не поменяются: остаётся роутер с одним интерфейсом, подключённым к одному порту коммутатора, сам коммутатор и его другие порты.
Теперь программный модуль под названием "bridge" в RouterOS реализует три вышеперечисленных элемента: интерфейс роутера, направленный на коммутатор, порт коммутатора, направленный на роутер, и сам коммутатор.
Ниже иллюстрация этого:

Пока всё предельно понятно, не так ли? А теперь — о запутанных моментах. Когда вы добавляете "bridge", создаются все три компонента (интерфейс роутера, порт коммутатора и сам коммутатор), взаимосвязь между ними жёстко фиксирована, ни у одного из компонентов нет параметра конфигурации, который бы пересекался с параметрами двух других. Параметры всех трёх элементов собраны в одной строке таблицы /interface bridge.
В частности:
- параметры, совпадающие по названию с параметрами в строках /interface bridge port, например pvid или ingress-filtering, относятся к порту коммутатора, направленному на роутер;
- параметры, совпадающие по названию с параметрами в строках /interface ethernet, например mtu или arp-timeout, относятся к интерфейсу роутера, направленному на коммутатор;
- параметры, которые не подходят ни под одну из двух групп, в основном относятся к виртуальному коммутатору. Исключением являются параметры admin-mac и auto-mac, которые тоже относятся к интерфейсу роутера, направленному на коммутатор.
Параметр name общий для всех трёх элементов.
Поэтому, когда указывают членство порта коммутатора, направленного на роутер, в VLAN, используется одно и то же имя для идентификации и самого виртуального коммутатора, и порта роутера:
/interface bridge vlan add bridge=bridge-row-name vlan-ids=10,… tagged=bridge-row-name,…
В фильтрах моста связь кадра с портом коммутатора, направленным на роутер, определяет, какую цепочку (chain) использовать: input обрабатывает кадры, выходящие из виртуального коммутатора через этот порт, output — кадры, входящие в виртуальный коммутатор через этот порт, а forward — кадры, которые обходят этот порт.

DHCP will work:
Same settings, changing to “tagged only” results in a total connectivity lost :
Now, the ingress-setting filters all tagless/untagged traffic, but the Frames get tagless/untagged forwarded to the Bridge-Interface+CPU-Port (as defined in the first picture). Now we change the VLAN-setting, placing the CPU-Port into tagged state:
At this point the connectivity is lost as well! For my understanding the bridge itself (as Interface AND CPU-Port) can work only untagged . Why was the connectivity lost? Via the PVID the ingressing frame gets its (internal) tag. Via the VLAN-tab the bridge/CPU-Port is egressed tagged as well… I see no other conclusion, the bridge-interface+CPU-Port works only untagged. Now, we enable/create a VLAN-Interface, bound to the bridge:
And suddenly, in a mysterious way, everything works again:
To me, it seems the way you place the bridge/CPU-Port into tagged or untagged state triggers something: CPU-Port/bridge = untagged → in this state, the only working settings (in the bridge/VLAN) menu are “admit all” and “admit only untagged…” . This refers to the Interface and the CPU-Port. CPU-Port/bridge = tagged → in this state, the bridge-interface itself wont work anymore (because the frame to it are tagged). The only working settings are “admit all” and “admit only tagged…”. But they refer to the CPU-Port only (as the Bridge-Interface isnt reachable anymore) → VLAN-Interfaces bound to the bridge.
And this is very confusing to me and to all I have spoken! I dont understand why MT has created such a “Frankenstein-like” monster as their VLAN-Implentation. I have never seen such a complicated way (and undocumented too) by any other vendor. Id recommend simply not to deal with the Bridge as dedicated Interface. Simply create VLAN-interfaces, bound them to the bridge and see the “bridge itself” as CPU-Port (under Bridge → VLAN).