Pull to refresh

Mikrotik: VLAN с использованием чипа коммутации

Reading time 5 min
Views 88K
Оборудование Mikrotik богато возможностями, но к сожалению, разработчики не всегда успевают держать Wiki с документацией в актуальном состоянии, иногда информация относится к уже устаревшей версии RouterOS или в ней не раскрыты маленькие тонкости. Сегодня я хочу немного дополнить официальную Wiki, рассказав о настройке встроенного чипа коммутации, для работы с VLAN. В качестве подопытных у нас: RB951Ui-2HnD и CRS125-24G-1S-2HnD. Все проделано на RouterOS 6.37.1

Вступление


Итак, вокруг множество статей, где с VLAN работаю на CPU (объявляют VLAN на интерфейсе и помещают его в Bridge). Такая связка имеет право на жизнь, но в её работе мы расходуем ресурс CPU, который может быть очень ценным. Два разных устройства представляют различные механизмы настройки для чипа коммутации, так как они сильно разные в техническом плане.

Реализовывать будем некоторые примеры из официальной Wiki:

Port Based VLAN


image

Поясним картинку: На порт 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)




Тут мы рассмотрим только 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
Tags:
Hubs:
+8
Comments 17
Comments Comments 17

Articles