Оборудование 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:4, 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 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 (одеть).

Далее, мы создадим таблицу 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



С этим все.

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
Поделиться с друзьями
-->

Комментарии (7)


  1. ayurtaykin
    21.10.2016 16:29

    А на RB2011UAS-2HnD заработает такое? В смысле гибридный порт на мозгах чипа коммутации?


  1. MagicGTS
    21.10.2016 16:36

    Если верить офф. Wiki, то там написано следующие:

    Atheros 8327 представлен в платах серии RB2011 (ether1-ether5+sfp1), RB750GL, RB751G-2HnD, а также в RB1100AH и RB1100AHx2 (ether1-ether5, ether6-ether10).
    Atheros8227 представлен в платах серии RB2011 (ether6-ether10).

    Нас интересует Atheros 8327, который поддерживает назначение правил.


    1. ayurtaykin
      21.10.2016 17:14

      О! т.е. половина портов таки может) надеюсь сегодня попробовать! =)

      К стати в английской версии все гораздо понятнее — http://wiki.mikrotik.com/wiki/Manual:Switch_Chip_Features

      И спасибо вам за статью!


      1. MagicGTS
        21.10.2016 18:00

        Разве что, там больше чипов указано ;)
        Так ребята из Mikrotik реально не успевают вести подробную документацию. Я потратил около получаса, разбираясь, почему пример для CRS не работает, оказалось, что для ingress-vlan-translation они пример написали, а для egress-vlan-translation нет. Поэтому сделал полностью рабочий пример.


  1. Ivan_83
    22.10.2016 01:39
    -3

    Раздеть = strip, очевидно что это сленг из другой области, ты точно «Системный Администратор Linux (RHCE) и Windows» а не монтажник?)

    Применительно к vlan используется либо тэгировать/растегировать (tag/untag, в том же длинке, вроде в кошках), либо навесить/снять тэг (отечественное) либо инкапсулировать/декапсулировать (в ядре FreeBSD и хз где ещё), иногда ещё говорят завернуть в тэг.

    Про чипы и всякие xMII интерфейсы видимо тоже не знаешь поэтому объяснение работы на уровне чёрной магии виндузятников сдавших на сертификат: туда тыкай как на картинке а сюда не тыкай: пакет в башка не попадёт.

    На самом деле всё устроено примерно так.
    Есть некоторый свич чип, который подключён к эзернет портам через трансформаторные развязки и через одну из разновидностей MII интерфейса к CPU.
    Для ОС оно по сути как один сетевой адаптер. Всё разделение трафика внутри делается настройкой вланов.
    Да да, когда вы типа отделяете порты друг от друга им просто навешиваются разные вланы, те пакет приходит на порт без влана, дальше чип заворачивает его в влан и пересылает в MII и на другие порты с этим же вланом (типа в той же группе) (конечно свич чип при этом смотрит в таблицу коммутации/на тип пакета юникаст/мультикаст, броадкаст).
    Чипы бывают разные: по скоростям портов, типу MII интерфейса, фичам, размера буферов, размеру хэш таблицы и типу хэш функции.
    Сейчас наверное уже нет чипов без мультикаст снупинга, но микротик никак не осилит эту простую фичу.
    Аналогично с кабель тестером, который есть даже в матерях/утилитах к сетевухам.
    Ещё есть аппаратные ACL — это такие фильтры пакетов но на уровне самого чипа, чтобы совсем в проц и другие порты группы=влана не попадало то что не надо.
    И ещё 100500 фич которые есть в типа взрослых и подростковых (офисных) управляемых свичах построенных на почти тех же свич чипах.

    Резюмируя: в микротике всё очень уныло в плане работы с железом, как со свич чипами так и с фичами в самих процах: я про аппаратные NAT которые много где нынче есть.
    Разрабам выгоднее пилить софтварные фичи ибо они разом пригодны для всех платформ, а ресурсов/желания на допил под отдельные платформы у них нет, в итоге какой нибудь тплинк на стоковой прошивке или опенврт рвёт как тузик грелку микротик на таком же атеросе в пропускной способности NAT.


    1. MagicGTS
      22.10.2016 06:36
      +1

      Уважаемый, сленг, это то, что можно использовать как угодно. Если не совпало с вашим, то так бывает, для однозначного понимания придумана терминология. Для этой статьи — главное, что отражает суть вопроса и уместен в качестве незатейливого юмора. Вам не смешно? Так не ходите на мои концерты.
      Статья: туториал. По совершенно конкретной фишке, конкретного оборудования. То, что вам оборудование не нравится, ваша, проблема, пишите свою статью, где объясняйте, чем и почему все в *****, а выбранное вами — белое.


  1. erazel
    22.10.2016 11:34

    Del.