Оборудование Mikrotik богато возможностями, но к сожалению, разработчики не всегда успевают держать Wiki с документацией в актуальном состоянии, иногда информация относится к уже устаревшей версии RouterOS или в ней не раскрыты маленькие тонкости. Сегодня я хочу немного дополнить официальную Wiki, рассказав о настройке встроенного чипа коммутации, для работы с VLAN. В качестве подопытных у нас: RB951Ui-2HnD и CRS125-24G-1S-2HnD. Все проделано на RouterOS 6.37.1
Итак, вокруг множество статей, где с VLAN работаю на CPU (объявляют VLAN на интерфейсе и помещают его в Bridge). Такая связка имеет право на жизнь, но в её работе мы расходуем ресурс CPU, который может быть очень ценным. Два разных устройства представляют различные механизмы настройки для чипа коммутации, так как они сильно разные в техническом плане.
Реализовывать будем некоторые примеры из официальной Wiki:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/202/103/da4/202103da4320210762449e3afd8f329b.png)
Поясним картинку: На порт ether2 приходят тегированные пакеты (порт транковый), а с портов ether6-ether8 уходят растегированные пакеты (порты доступа — клиентские порты).
Я буду брать конфигурацию с реально работающего устройства, поэтому полного соответствия с картинкой не будет.
Конфигурация: На ether1 приходят тегированные пакеты (VID: 4,5,6,10, 603), с портов ether2-ether4 уходят раздетые VID:10, с ether5 уходит раздетый VID:5, VID:603 сейчас не используется, а особый порт switch1-cpu принимает любые пакеты.
Вначале, создадим группу коммутации, для этого, во всех интерфейсах выставим мастер порт (по умолчанию ether2-master), тем самым мы отдадим эти порты в управление коммутатору.
![](https://habrastorage.org/files/32a/ab9/4e8/32aab94e878b4b89a5a9e48bb5a34a18.PNG)
Аналогично для всех остальных. Не затягивая, на мастер порт (так мы получим доступ к этому VLAN из CPU, по сути мы связываем его с switch1-cpu) подвесим нужные нам VLAN:
![](https://habrastorage.org/files/ce7/c84/7fb/ce7c847fb047416781f5d9e628680d2f.PNG)
Далее зададим политику обработки пакетов на портах (номер VLAN по умолчанию), что отбросить, что раздеть, а где и шарфик повязать:
![](https://habrastorage.org/files/447/537/24c/44753724ca83450da34b5c42eed52ecb.PNG)
О параметрах можно почитать в Wiki в разделе Vlan-таблица.
Далее, мы создадим таблицу VLAN, по которой чип будет работать с тегами:
![](https://habrastorage.org/files/776/02f/02d/77602f02d3c14cddbfbd249b57aab31f.PNG)
Вот и все, теперь VLAN обслуживаются на чипе коммутации, к сожалению, у RB951Ui-2HnD его возможности не очень большие, к примеру он не сможет сделать гибридный порт, тут придется строить лес из костылей на bridge.
Тут чип коммутации совсем другой, и умеет больше, приступим:
Конфигурация: На ether24 приходят тегированные пакеты (VID: 4,5,6,7,16), с портов ether1-ether23 уходят раздетые VID:16 и одетые VLAN:7 (будет для второго примера), а особый порт switch1-cpu принимает любые пакеты.
Вначале, создадим группу коммутации, для этого, во всех интерфейсах выставим мастер порт (по умолчанию ether2-master), тем самым мы отдадим эти порты в управление коммутатору.
Аналогично для всех остальных. На мастер порт подвесим нужные нам VLAN:
Далее, мы создадим таблицу VLAN, по которой чип будет работать с тегами:
![](https://habrastorage.org/files/c8f/d30/3c7/c8fd303c7ab04e888bc6183d867a1aa8.PNG)
Далее зададим политику обработки пакетов на портах, тут уже все побогаче, политика задается раздельно.
Зададим порты, на которых соответсвующий VLAN будет одетым при выходе:
![](https://habrastorage.org/files/716/b70/91d/716b7091d5c54d51bca545710e87b0e3.PNG)
Теперь, на каких портах, выходящий VLAN надо раздеть:
![](https://habrastorage.org/files/85e/e4c/c81/85ee4cc8114f4eb286e543e86a687e54.PNG)
Дословно это описывается так: если VID: 16, порт с 1 по 23, установить новый VID:0 (раздеть).
Теперь, на каких портах, входящий пакет надо одеть в VLAN:
![](https://habrastorage.org/files/6d9/c21/d4d/6d9c21d4dedc4b6a9bb211fd96bc46ec.PNG)
Дословно это описывается так: если VID: 0 (пакет раздетый), порт с 1 по 23, установить новый VID:16 (одеть).
С этим все.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/12d/402/da8/12d402da81c05e214ed55bfefc37e5ed.png)
Тут мы рассмотрим только CRS125-24G-1S-2HnD, к сожалению, RB951Ui-2HnD такое на чипе коммутации уже не умеет.
Итак, возьмем полностью конфу из предыдущего примера, и добавим такое правило:
Вступление
Итак, вокруг множество статей, где с VLAN работаю на CPU (объявляют VLAN на интерфейсе и помещают его в Bridge). Такая связка имеет право на жизнь, но в её работе мы расходуем ресурс CPU, который может быть очень ценным. Два разных устройства представляют различные механизмы настройки для чипа коммутации, так как они сильно разные в техническом плане.
Реализовывать будем некоторые примеры из официальной Wiki:
Port Based VLAN
![image](https://habrastorage.org/getpro/habr/post_images/202/103/da4/202103da4320210762449e3afd8f329b.png)
Поясним картинку: На порт ether2 приходят тегированные пакеты (порт транковый), а с портов ether6-ether8 уходят растегированные пакеты (порты доступа — клиентские порты).
Я буду брать конфигурацию с реально работающего устройства, поэтому полного соответствия с картинкой не будет.
RB951Ui-2HnD
Конфигурация: На ether1 приходят тегированные пакеты (VID: 4,5,6,10, 603), с портов ether2-ether4 уходят раздетые VID:10, с ether5 уходит раздетый VID:5, VID:603 сейчас не используется, а особый порт switch1-cpu принимает любые пакеты.
Вначале, создадим группу коммутации, для этого, во всех интерфейсах выставим мастер порт (по умолчанию ether2-master), тем самым мы отдадим эти порты в управление коммутатору.
/interface ethernet set ether1 master-port=ether2-master
Аналогично для всех остальных. Не затягивая, на мастер порт (так мы получим доступ к этому VLAN из CPU, по сути мы связываем его с switch1-cpu) подвесим нужные нам VLAN:
/interface vlan
add interface=ether2-master \
name=V-210 vlan-id=10
add interface=ether2-master \
name=V-MNGR vlan-id=4
add interface=ether2-master \
name=V-PR1 vlan-id=603
add interface=ether2-master \
name=V-WL vlan-id=5
add arp=enabled arp-timeout=auto disabled=no interface=ether2-master \
loop-protect=default loop-protect-disable-time=5m \
loop-protect-send-interval=5s mtu=1500 name=V-WLG use-service-tag=no \
vlan-id=6
Далее зададим политику обработки пакетов на портах (номер VLAN по умолчанию), что отбросить, что раздеть, а где и шарфик повязать:
/interface ethernet switch port
set ether1 default-vlan-id=10 vlan-header=add-if-missing vlan-mode=secure
set ether2-master default-vlan-id=10 vlan-header=always-strip vlan-mode=secure
set ether3 default-vlan-id=10 vlan-header=always-strip vlan-mode=secure
set ether4 default-vlan-id=10 vlan-header=always-strip vlan-mode=secure
set ether5 default-vlan-id=5 vlan-header=always-strip vlan-mode=secure
set switch1-cpu default-vlan-id=0 vlan-header=leave-as-is vlan-mode=disabled
О параметрах можно почитать в Wiki в разделе Vlan-таблица.
Далее, мы создадим таблицу VLAN, по которой чип будет работать с тегами:
/interface ethernet switch vlan
add ports=ether1,ether2-master,ether3,ether4,ether5,switch1-cpu switch=switch1 vlan-id=10
add ports=ether1,switch1-cpu switch=switch1 vlan-id=4
add ports=ether1,ether5,switch1-cpu switch=switch1 vlan-id=5
add ports=ether1,switch1-cpu switch=switch1 vlan-id=6
add ports=ether1,switch1-cpu switch=switch1 vlan-id=603
Вот и все, теперь VLAN обслуживаются на чипе коммутации, к сожалению, у RB951Ui-2HnD его возможности не очень большие, к примеру он не сможет сделать гибридный порт, тут придется строить лес из костылей на bridge.
CRS125-24G-1S-2HnD
Тут чип коммутации совсем другой, и умеет больше, приступим:
Конфигурация: На ether24 приходят тегированные пакеты (VID: 4,5,6,7,16), с портов ether1-ether23 уходят раздетые VID:16 и одетые VLAN:7 (будет для второго примера), а особый порт switch1-cpu принимает любые пакеты.
Вначале, создадим группу коммутации, для этого, во всех интерфейсах выставим мастер порт (по умолчанию ether2-master), тем самым мы отдадим эти порты в управление коммутатору.
/interface ethernet set ether1 master-port=ether2-master
Аналогично для всех остальных. На мастер порт подвесим нужные нам VLAN:
/interface vlan
add interface=ether2-master \
name=V-MNGR vlan-id=4
add interface=ether2-master \
name=V-WL vlan-id=5
add interface=ether2-master \
name=V-WLG vlan-id=6
Далее, мы создадим таблицу VLAN, по которой чип будет работать с тегами:
/interface ethernet switch vlan
add learn=yes ports="ether24,switch1-cpu" vlan-id=4
add learn=yes ports="ether24,switch1-cpu" vlan-id=5
add learn=yes ports="ether24,switch1-cpu" vlan-id=6
add learn=yes ports="ether1,ether2-mast\
er,ether3,ether4,ether5,ether6,ether7,ether8,ether9,ether10,ether11,ether1\
2,ether13,ether14,ether15,ether16,ether17,ether18,ether19,ether20,ether21,\
ether22,ether23,ether24,switch1-cpu" vlan-id=7
add learn=yes ports="ether1,ether2-mast\
er,ether3,ether4,ether5,ether6,ether7,ether8,ether9,ether10,ether11,ether1\
2,ether13,ether14,ether15,ether16,ether17,ether18,ether19,ether20,ether21,\
ether22,ether23,ether24,switch1-cpu" vlan-id=16
Далее зададим политику обработки пакетов на портах, тут уже все побогаче, политика задается раздельно.
Зададим порты, на которых соответсвующий VLAN будет одетым при выходе:
/interface ethernet switch egress-vlan-tag
add tagged-ports=ether24,switch1-cpu vlan-id=4
add tagged-ports=ether24,switch1-cpu vlan-id=5
add tagged-ports=ether24,switch1-cpu vlan-id=6
add tagged-ports=ether24,switch1-cpu vlan-id=16
Теперь, на каких портах, выходящий VLAN надо раздеть:
/interface ethernet switch egress-vlan-translation
add customer-vid=16 new-customer-vid=0 ports="ether1,ether2-master,ether3,ether4,ether5,ether6\
,ether7,ether8,ether9,ether10,ether11,ether12,ether13,ether14,ether15,ethe\
r16,ether17,ether18,ether19,ether20,ether21,ether22,ether23"
Дословно это описывается так: если VID: 16, порт с 1 по 23, установить новый VID:0 (раздеть).
Теперь, на каких портах, входящий пакет надо одеть в VLAN:
/interface ethernet switch ingress-vlan-translation
add customer-vid=0 new-customer-vid=16 \
ports="ether1,ether2-master,ether3,ether4,ether5,ether6,ether7,ether8,ethe\
r9,ether10,ether11,ether12,ether13,ether14,ether15,ether16,ether17,ether18\
,ether19,ether20,ether21,ether22,ether23"
Дословно это описывается так: если VID: 0 (пакет раздетый), порт с 1 по 23, установить новый VID:16 (одеть).
С этим все.
Example 2 (Trunk and Hybrid ports)
![](https://habrastorage.org/getpro/habr/post_images/12d/402/da8/12d402da81c05e214ed55bfefc37e5ed.png)
Тут мы рассмотрим только CRS125-24G-1S-2HnD, к сожалению, RB951Ui-2HnD такое на чипе коммутации уже не умеет.
Итак, возьмем полностью конфу из предыдущего примера, и добавим такое правило:
/interface ethernet switch egress-vlan-tag
add tagged-ports="ether1,ether2-master,ether3,ether4,ether5,ether6\
,ether7,ether8,ether9,ether10,ether11,ether12,ether13,ether14,ether15,ethe\
r16,ether17,ether18,ether19,ether20,ether21,ether22,ether23,ether24" \
vlan-id=7