Разработчики RoS уже достаточно давно анонсировали изменения в работе мостов (bridge), и включили эту новую функциональность в Release Candidate ветку, вот теперь они внесли это и в Current.
Что нового?
Теперь, нет необходимости заниматься хитростями, на подобие этих: Mikrotik: маленькая хитрость switch chip. ВНИМАНИЕ! Читаем предупреждение в Release Notes!!!
Теперь настроить VLAN можно непосредственно в Bridge, при этом при наличие аппаратной поддержки, чип коммутации возьмет на себя работу с VLAN и пересылкой трафика между портами (Список поддерживаемых устройств: Bridge Hardware Offloading).
Практическая часть
Обратимся к руководству и моей предыдущей статье. Задача сделать мост для интернета с ТВ-приставкой и остальной сети.
Использование хитрости с VLAN на чипе коммутации позволяло снять нагрузку с CPU роутера по пересылке пакетов в рамках одной группы коммутации (эмулировали несколько групп с помощью VLAN). Но такая задача решается в принципе теперь элементарно, так как мост поддерживает hw-offload, и все сводится к добавлению портов в соответсвующий мост, всё!
Поэтому усложним задачу. У меня кроме RB951G используется RBmAP2nD (оба устройства не поддерживают аппаратную разгрузку), который кроме основной WiFi держит еще и гостевую сеть. Поэтому, до него у меня будет идти тегированный трафик обычной локалки и гостевой.
Начинается все довольно очевидно, нам нужно три моста:
/interface bridge
add name=B-EXT pvid=2 vlan-filtering=no
add comment=defconf name=B-LAN pvid=3 vlan-filtering=no
add arp=reply-only name=B-WG
бращаем внимание на опцию vlan-filtering, её не стоит включать до завершения остальных настроек, иначе роутер станет недоступен. Опция pvid задает VLAN по умолчанию для всего моста.
Задаем VLAN, которые будут обслуживаться на мостах.
/interface bridge vlan
add bridge=B-EXT untagged=ether1,ether3 vlan-ids=2
add bridge=B-LAN tagged=ether2 untagged=ether4,ether5 vlan-ids=3
add bridge=B-LAN tagged=ether2 vlan-ids=4
Тут можно видеть, что мы в явном виде, непосредственно в мосте указываем, какие порты тегировать, а какие нет.
И создадим VLAN гостевой сети:
/interface vlan
add interface=B-LAN name=V-GST vlan-id=4
Добавим нужные нам порты в мосты:
/interface bridge port
add bridge=B-LAN comment=defconf interface=ether2 pvid=3
add bridge=B-EXT comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=ether3 pvid=2
add bridge=B-LAN comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=ether4 pvid=3
add bridge=B-LAN comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=ether5 pvid=3
add bridge=B-LAN comment=defconf frame-types=admit-only-untagged-and-priority-tagged interface=wl-2ghz pvid=3
add bridge=B-EXT frame-types=admit-only-untagged-and-priority-tagged interface=ether1 pvid=2
add bridge=B-WG interface=V-GST
add bridge=B-WG interface=wlg-2ghz
Указывая опцию pvid, мы указываем vlan по умолчанию для этого порта. Так-же, с помощью frame-types, мы задаем, какие пакеты мы собираемся принимать на порту.
Теперь включаем vlan-filtering=yes и все работает!
По мне, такая конфигурация нагляднее, так как не требует лезть в настройки чипа, и как-то «догонять» как они связанны с настройками интерфейсов и мостов, но не поддерживается во всех домашних моделях.