Прочее:Возможности чипа коммутации

Материал из MikroTik WiKi rus
Перейти к: навигация, поиск

Введение

В этом разделе мы поговорим о возможностях чипа коммутации, которые реализованы в RouterOS.

В настоящее время в наших специализированных платах нами используется несколько типов чипов коммутации, которые обладают различными наборами возможностей. Большинство из них (далее "другие") обладают только базовой возможностью коммутации портов, но некоторые имеют более широкие возможности:

Возможности чипов коммутации:

ВозможностиQCA8337Atheros8327Atheros8316Atheros8227Atheros7240ICPlus175DДругие
Коммутация портовдадададададада
Зеркалирование портовдадададададанет
Таблица MAC-адресов2048 записей2048 записей2048 записей1024 записей2048 записейнетнет
VLAN-таблица4096 записей4096 записей4096 записей4096 записей16 записейнетнет
Таблица правил92 правила92 правила32 правиланетнетнетнет


Платформа RouterBoard Описание чипа коммутации
RB3011 series QCA8337 (ether1-ether5); QCA8337 (ether6-ether10)
RB941-2nD (hAP lite) Atheros8227 (ether1-ether4)
RB951Ui-2nD (hAP); RB952Ui-5ac2nD (hAP ac lite) Atheros8227 (ether1-ether5)
RB750r2 (hEX lite); RB750UPr2 (hEX PoE lite) Atheros8227 (ether1-ether5)
RB750Gr2 (hEX); RB962UiGS-5HacT2HnT (hAP ac) QCA8337 (ether1-ether5)
RB750P r2 Atheros8227 (ether1-ether5)
RB953GS Atheros8327 (ether1-ether3+sfp1)
RB850Gx2 Atheros8327 (ether1-ether5) with ether1 optional
RB2011 series Atheros8327 (ether1-ether5+sfp1); Atheros8227 (ether6-ether10)
RB750GL Atheros8327 (ether1-ether5)
RB751G-2HnD Atheros8327 (ether1-ether5)
RB951G-2HnD Atheros8327 (ether1-ether5)
RB1100AH Atheros8327 (ether1-ether5); Atheros8327 (ether6-ether10)
RB1100AHx2 Atheros8327 (ether1-ether5); Atheros8327 (ether6-ether10)
CCR1009 series Atheros8327 (ether1-ether4)
RB493G Atheros8316 (ether1+ether6-ether9); Atheros8316 (ether2-ether5)
RB435G Atheros8316 (ether1-ether3) with ether1 optional
RB450G Atheros8316 (ether1-ether5) with ether1 optional
RB433GL Atheros8327 (ether1-ether3)
RB750G Atheros8316 (ether1-ether5)
RB1200 Atheros8316 (ether1-ether5)
RB1100 Atheros8316 (ether1-ether5); Atheros8316 (ether6-ether10)
RB750 Atheros7240 (ether2-ether5)
RB750UP Atheros7240 (ether2-ether5)
RB751U-2HnD Atheros7240 (ether2-ether5)
RB951-2n Atheros7240 (ether2-ether5)
RB951Ui-2HnD Atheros8227 (ether1-ether5)
RB433 series ICPlus175D (ether2-ether3); older models had ICPlus175C
RB450 ICPlus175D (ether2-ether5); older models had ICPlus175C
RB493 series ICPlus178C (ether2-ether9)
RB816 ICPlus178C (ether1-ether16)


Настройка с помощью командной строки доступна из меню /interface ethernet switch. Данное меню содержит список всех представленных в системе чипов коммутации, а также некоторые подменю. Через меню /interface ethernet switch выводится список характеристик элемента, являющегося чипом коммутации, представленным в системе:

[admin@MikroTik] /interface ethernet switch> print
Flags: I - invalid
 #   NAME     TYPE         MIRROR-SOURCE   MIRROR-TARGET
 0   switch1  Atheros-8316 ether2          none

В зависимости от типа коммутатора, могут быть доступны или, наоборот, недоступны некоторые возможности настройки.

Возможности

Коммутация портов

Коммутация позволяет достичь проводной скорости обмена данными между портами одной группы, как между портами в обычном Ethernet-коммутаторе. Эта функция может быть настроена посредством задания параметра "master-port" для одного или более портов в меню /interface ethernet. Основной (master) порт будет являться портом, через который RouterOS будет сообщаться со всеми остальными портами данной группы. Интерфейсы, для которых задан master-порт, становятся неактивны – не учитывается поступивший на них трафик, и трафик не может быть с них отправлен.

Например, рассмотрим маршрутизатор с пятью Ethernet-интерфейсами:

[admin@MikroTik] > interface ethernet print
Flags: X - disabled, R - running, S - slave
 #    NAME      MTU   MAC-ADDRESS       ARP        MASTER-PORT      SWITCH
 0 R  ether1    1500  00:0C:42:3E:5D:BB enabled
 1    ether2    1500  00:0C:42:3E:5D:BC enabled    none             switch1
 2    ether3    1500  00:0C:42:3E:5D:BD enabled    none             switch1
 3    ether4    1500  00:0C:42:3E:5D:BE enabled    none             switch1
 4 R  ether5    1500  00:0C:42:3E:5D:BF enabled    none             switch1

И вы настраиваете коммутатор, содержащий три порта: ether3, ether4 и ether5:

[admin@MikroTik] /interface ethernet> set ether4,ether5 master-port=ether3
[admin@MikroTik] /interface ethernet> print
Flags: X - disabled, R - running, S - slave
 #    NAME      MTU   MAC-ADDRESS       ARP        MASTER-PORT      SWITCH
 0 R  ether1    1500  00:0C:42:3E:5D:BB enabled
 1    ether2    1500  00:0C:42:3E:5D:BC enabled    none             switch1
 2 R  ether3    1500  00:0C:42:3E:5D:BD enabled    none             switch1
 3  S ether4    1500  00:0C:42:3E:5D:BE enabled    ether3           switch1
 4 RS ether5    1500  00:0C:42:3E:5D:BF enabled    ether3           switch1

ether3 теперь является master-портом группы. Примечание: вы можете заметить, что ранее подключение было зафиксировано только на интерфейсе ether5, но теперь, т.к. интерфейсу ether3 присвоено значение "master", флаг активности (R) распространяется и на master-порт.

Схема №1 коммутации портов на маршрутизаторе MikroTik

В сущности, данная конфигурация равносильна тому, как если бы ваша RouterBoard имела бы 3 Ethernet-интерфейса, и интерфейс ether3 был бы подключен к Ethernet-коммутатору с четырьмя портами:

Схема №2 коммутации портов на маршрутизаторе MikroTik

Более общая схема RouterBoard с 5-портовым чипом коммутации:

Схема №3 коммутации портов на маршрутизаторе MikroTik

Здесь вы можете увидеть, что пакет, полученный одним из портов, всегда сначала обрабатывается логикой коммутатора (switch logic). Логика коммутатора решает, в какие порты должен быть направлен пакет. Прохождение пакета выше по схеме или, иными словами, передача его RouterOS так же называется отправкой пакета на cpu-порт чипа коммутации. Это означает, что в момент пересылки коммутатором пакета на cpu-порт, этот пакет начинает обрабатываться RouterOS как пакет, прибывший на какой-либо из интерфейсов. Пока пакет не достиг cpu-порта, его обработка полностью осуществляется логикой коммутатора, не требуя какого-либо участия центрального процессора, и эта обработка происходит с проводной скоростью при любом размере кадра.


Порт ether1 на RB450G имеет особенность, которая позволяет ему быть исключённым/добавленным из/в коммутируемой(ую) группы(у) по умолчанию. По умолчанию порт ether1 будет включён в группу коммутации. Данная конфигурация может быть изменена с помощью команды /interface ethernet switch set switch1 switch-all-ports=no.

  • switch-all-ports=yes/no -

"yes" означает, что порт ether1 является портом коммутатора и поддерживает создание групп коммутации и все остальные расширенные возможности чипа Atheros8316, включая расширенную статистику (/interface ethernet print stats).

"no" означает, что порт ether1 не является частью коммутатора, что, фактически, делает его самостоятельным Ethernet-портом – это способ увеличения пропускной способности между ним и другими портами в режимах сетевого моста и маршрутизации, но в то же время исключает возможность коммутации на этом порту.

Схема №4 коммутации портов на маршрутизаторе MikroTik

Зеркалирование порта

Зеркалирование порта позволяет коммутатору отслеживать весь входящий и исходящий трафик какого-либо одного порта (mirror-source) и отправлять копию этих пакетов на какой-либо другой порт (mirror-target). Эта функция может быть использована для простого создания "прослушивающего" устройства, которое получает весь входящий/исходящий трафик какого-либо конкретного порта. Обратите внимание, что порты mirror-source и mirror-target должны принадлежать одному и тому же коммутатору (Увидеть, какому коммутатору принадлежит тот или иной порт можно через меню /interface ethernet switch port). Также опции mirror-target может быть присвоено значение "cpu", это означает то, что перехваченные пакеты должны быть отправлены с cpu-порта чипа коммутации. Зеркалирование порта происходит независимо от того, были или не были созданы группы коммутации.

Таблица MAC-адресов

В основном данная таблица позволяет чипу коммутации сопоставить MAC-адрес с портом. Она может содержать два типа записей: динамический и статический. Динамические записи добавляются автоматически, это так же называется процессом обучения: когда чип коммутации получает пакет с определенно порта, он добавляет MAC-адрес "X" источника пакета и порт, через который был получен этот пакет, в таблицу MAC-адресов, и когда приходит пакет, у которого MAC-адрес назначения совпадает со значением "X", чип коммутации "знает", в какой порт должен быть направлен данный пакет. Если запись о MAC-адресе назначения отсутствует в таблице MAC-адресов, то в этом случае чип коммутации отправит пакет через все порты группы. Время хранения динамических записей составляет около 5 минут. Режим обучения доступен только на портах, которые сконфигурированы как группа коммутации. Таким образом, вы не увидите динамических записей, если вами не заданы master-порты. Также можно добавлять статические записи, которые будут замещать динамические в случае, если динамическая запись с таким же MAC-адресом уже существует. Кроме того, добавив статическую запись, вы получите доступ к некоторому более широкому функционалу, которым можно управлять посредством следующих параметров:

  • copy-to-cpu=yes/no - пакет может быть клонирован и отправлен в cpu-порт
  • redirect-to-cpu=yes/no - пакет может быть перенаправлен в cpu-порт
  • mirror=yes/no - пакет может быть клонирован и отправлен в порт mirror-target, заданный в "/interface ethernet switch"
  • drop=yes/no - пакет с определённым MAC-адресом, пришедший с определённых портов, может быть отброшен

Операции "copy-to-cpu", "redirect-to-cpu", "mirror" выполняются с пакетами, MAC-адрес назначения которых, соответствует MAC-адресу, имеющемуся в записях таблицы, операция "drop" выполняется с пакетами, MAC-адрес источника которых, соответствует MAC-адресу, имеющемуся в записях таблицы.

Другим преимуществом статических записей является то, что MAC-адрес может быть сопоставлен с более чем одним портом, включая cpu-порт.

Vlan-таблица

Vlan-таблицы задают определённые правила пересылки пакетов, содержащих теги стандарта 802.1q. Эти правила имеют более высокий приоритет, чем группы коммутации, созданные с помощью параметра "master-port". В основном таблица содержит записи, которые сопоставляют определённые идентификаторы vlan-тегов с группой из одного или нескольких портов. Пакеты, содержащие vlan-теги, покидают чип коммутации через один или несколько портов, указанных в соответствующих записях таблицы. Строгая логика, которая контролирует, как обрабатываются пакеты с vlan-тегами, управляется с помощью параметра "vlan-mode", значения которого можно менять для каждого порта коммутатора в отдельности через меню /interface ethernet switch port. Параметр "vlan-mode" может принимать следующие значения:

  • disabled - игнорировать vlan-таблицу, обрабатывать пакеты, содержащие vlan-теги точно так же, как если бы они не содержали vlan-тегов;
  • fallback - режим по умолчанию – обрабатывать пакеты, содержащие vlan-теги, не представленные в vlan-таблице, точно так же, как если бы они не содержали vlan-тегов. Пакеты, содержащие vlan-теги, представленные в vlan-таблице, но входящий порт не соответствует какому-либо порту в записях vlan-таблицы, не будут отброшены.
  • check - отбрасывать пакеты, содержащие vlan-теги, не представленные в vlan-таблице. Пакеты, содержащие vlan-теги, представленные в vlan-таблице, но входящий порт не соответствует какому-либо порту в записях vlan-таблицы, не будут отброшены.
  • secure - отбрасывать пакеты, содержащие vlan-теги, не представленные в vlan-таблице. Пакеты, содержащие vlan-теги, представленные в vlan-таблице, но входящий порт не соответствует какому-либо порту в записях vlan-таблицы, тоже будут отброшены.

При пересылке пакетов на основе идентификатора в vlan-теге так же принимается во внимание MAC-адреса, добавленные в таблицу MAC-адресов в процессе обучения или вручную.

Пакеты, не содержащие vlan-тегов, обрабатываются так же, как если бы они содержали vlan-тег с vlan id = 0. Это означает, что если параметру "vlan-mode" присвоено значение "check" или "secure", то для того, чтобы было возможно пересылать пакеты без vlan-тегов, вам будет необходимо добавить в vlan-таблицу отдельную запись, в которой указать vlan-идентификатор (vlan id) со значением "0".

Опция vlan-header (доступна для настройки через меню /interface ethernet switch port) задаёт режим VLAN-тега на исходящем порте. Данная опция функционирует только на чипе Atheros 8316 и может принимать следующие значения:

  • leave-as-is - пакет не подвергается изменениям на исходящем порте;
  • always-strip - если VLAN-заголовок присутствует, он будет удалён из пакета;
  • add-if-missing - если VLAN-заголовок отсутствует, он будет добавлен к пакету.

Таблица правил

Таблица правил является очень мощным инструментом, позволяющим на проводной скорости (wire speed) производить операции пакетной фильтрации, пересылки и vlan-тегирования, основываясь на соответствиях по определённым значениям в полях заголовков протоколов L2,L3,L4-уровней.

Каждое правило состоит из блока условий и блока действий (action). За блок действий отвечают следующие параметры:

  • copy-to-cpu=yes/no - клонирует удовлетворяющий условиям пакет и отправляет его на cpu-порт;
  • redirect-to-cpu=yes/no - пересылает удовлетворяющий условиям пакет на cpu-порт;
  • mirror=yes/no - клонирует удовлетворяющие условиям пакеты и отправляет их на порт mirror-target;
  • new-dst-ports - принудительно изменяет порт назначения на указанный, можно указать несколько портов, включая cpu-порт. Неочевидной функцией данного параметра является отбрасывание удовлетворяющих условиям пакетов для портов, неуказанных в списке (Удобно для фильтрации, например, мультикастового трафика на одном или нескольких портах, входящих в одну и ту же группу коммутации. Как пример - исключение определённых портов группы коммутации из IPTV-трансляции - прим. переводчика);
  • new-vlan-id (применимо только для Atheros 8316) - изменяет имеющееся значение идентификатора vlan-тега или присваивает новый vlan-тег, если он отсутствовал;
  • new-vlan-priority - изменяет биты приоритета vlan-тега;
  • rate (применимо только для Atheros 8327) - устанавливает ограничение (количество битов в секунду) для всего соответствующего условиям трафика. Может быть использовано только для первых 32 правил текущей таблицы.


За блок условий отвечают следующие параметры:

  • ports - соответствие по порту, с которого приходит пакет (можно указать несколько портов);
  • Условия MAC-уровня
    • dst-mac-address - соответствие по MAC-адресу назначения и маске;
    • src-mac-address - соответствие по MAC-адресу источника и маске;
    • vlan-header - соответствие по наличию vlan-заголовка;
    • vlan-id (применимо только для Atheros 8316) - соответствие по идентификатору vlan-тега;
    • vlan-priority (применимо только для Atheros 8316) - соответствие приоритету vlan-тега;
    • mac-protocol - соответствие по MAC-протоколу (при наличии vlan-тегов, эти теги будут игнорироваться);
  • IP-условия
    • dst-address - соответствие по IP-адресу назначения и маске;
    • src-address - соответствие по IP-адресу источника и маске;
    • dscp - соответствие по dscp-полю IP-заголовка;
    • protocol - соответствие по IP-протоколу;
  • IPv6-условия
    • dst-address6 - соответствие по IPv6-адресу назначения и маске;
    • src-address6 - соответствие по IPv6-адресу источника и маске;
    • flow-label - соответствие по IPv6-метке потока (flow label);
    • traffic-class - соответствие по IPv6-классу трафика;
    • protocol - соответствие по IPv6-протоколу;
  • Условия L4-уровня
    • src-port - соответствие по диапазону tcp/udp-портов назначения;
    • dst-port - соответствие по диапазону tcp/udp-портов источника;

IPv4 и IPv6-условия не могут быть использованы одновременно в одном и том же правиле. Таблица содержит упорядоченный список правил, как и в меню /ip firewall filter. Вследствие того, что таблица правил полностью обрабатывается за счёт аппаратных возможностей чипа коммутации, существует ограничение на количество правил, которое вы можете задать. В зависимости от количества заданных условий (MAC-уровня, IP-уровня, IPv6, L4-уровня), используемых в ваших правилах, количество активных правил может варьировать от 8 до 32 для чипа Atheros 8316 и от 24 до 96 для чипа Atheros 8327. Вы всегда можете запустить команду /interface ethernet switch rule print после модификации вашего набора правил, чтобы проконтролировать, что в конце списка отсутствуют правила с меткой "invalid", которая означает, что чип коммутации не в состоянии обработать данные правила.

Примеры настройки

Пример 1. Создание 802.1Q-транка средствами Atheros 8316

Схема №5 коммутации портов на маршрутизаторе MikroTik

Роутерборды, построенные на основе коммутационного чипа Atheros 8316, могут быть использованы для создания 802.1Q-транков. В данном примере интерфейсы ether2, ether3 и ether4 являются портами доступа (access ports), в то время как ether5 является транк-портом (trunk port). VLAN-идентификаторы (VLAN-ID) для каждого порта доступа: ether2 – 200, ether3 – 300, ether4 – 400.

  • Зададим параметры vlan-mode и vlan-header на выходе каждого из портов. Используйте vlan-mode=secure для того, чтобы обеспечить строгое соответствие содержимому VLAN-таблицы. Для портов доступа (access port) используйте параметр vlan-header=always-strip – в этом случае VLAN-заголовки будут удаляться из фрейма на выходе из коммутационного чипа. Для транкового порта (trunk port) используйте параметр vlan-header=add-if-missing, который будет добавлять VLAN-заголовок к нетегированным фреймам.
/interface ethernet switch port
set 1 vlan-header=always-strip vlan-mode=secure
set 2 vlan-header=always-strip vlan-mode=secure
set 3 vlan-header=always-strip vlan-mode=secure
set 4 vlan-header=add-if-missing vlan-mode=secure
  • Для портов доступа и транк-порта задайте правила перенаправления. У нетегированных фреймов, поступающих на порты доступа, исходный VLAN-ID будет изменён ещё до того, как они будут отосланы на транк-порт. Фреймы, полученные на транк-порте будут отправлены на соответствующие порты доступа согласно значениям своих VLAN-ID.
/interface ethernet switch rule
add new-dst-ports=ether2 ports=ether5 switch=switch1 vlan-header=present vlan-id=200
add new-dst-ports=ether3 ports=ether5 switch=switch1 vlan-header=present vlan-id=300
add new-dst-ports=ether4 ports=ether5 switch=switch1 vlan-header=present vlan-id=400
add new-dst-ports=ether5 new-vlan-id=200 ports=ether2 switch=switch1 vlan-header=not-present
add new-dst-ports=ether5 new-vlan-id=300 ports=ether3 switch=switch1 vlan-header=not-present
add new-dst-ports=ether5 new-vlan-id=400 ports=ether4 switch=switch1 vlan-header=not-present
  • Добавьте записи в VLAN-таблицу для того, чтобы разрешить на входящем порте фреймы с определёнными значениями VLAN-ID.
/interface ethernet switch vlan
add ports=ether5 switch=switch1 vlan-id=200
add ports=ether5 switch=switch1 vlan-id=300
add ports=ether5 switch=switch1 vlan-id=400
add ports=ether2,ether3,ether4 switch=switch1 vlan-id=0

Пример 2. Trunk и Access Ports

Routerboards with Atheros switch chips can be used for 802.1Q Trunking. This feature in RouterOS version 6 is supported by QCA8337, AR8316, AR8327, AR8227 and AR7240 switch chips.
In this example ether3,ether4 and ether5 interfaces are access ports, while ether2 is a trunk port. VLAN IDs for each access port: ether3 - 200, ether4 - 300, ether5 - 400.


Схема №6 коммутации портов на маршрутизаторе MikroTik
  • Create a group of switched ports by selecting one master-port and setting it for other ports.
/interface ethernet
set ether3 master-port=ether2
set ether4 master-port=ether2
set ether5 master-port=ether2
  • Add VLAN table entries to allow frames with specific VLAN IDs between ports.
/interface ethernet switch vlan
add ports=ether2,ether3 switch=switch1 vlan-id=200
add ports=ether2,ether4 switch=switch1 vlan-id=300
add ports=ether2,ether5 switch=switch1 vlan-id=400
  • Assign "vlan-mode" and "vlan-header" mode for each port and also "default-vlan-id" on ingress for each access port.

Setting "vlan-mode=secure" ensures strict use of VLAN table.
Setting "vlan-header=always-strip" for access ports removes VLAN header from frame when it leaves the switch chip.
Setting "vlan-header=add-if-missing" for trunk port adds VLAN header to untagged frames.
"Default-vlan-id" specifies what VLAN ID is added for untagged ingress traffic of the access port.

/interface ethernet switch port
set ether2 vlan-mode=secure vlan-header=add-if-missing
set ether3 vlan-mode=secure vlan-header=always-strip default-vlan-id=200
set ether4 vlan-mode=secure vlan-header=always-strip default-vlan-id=300
set ether5 vlan-mode=secure vlan-header=always-strip default-vlan-id=400

Пример 2. Trunk и Hybrid Ports

VLAN Hybrid ports which can forward both tagged and untagged traffic are supported only by some Gigabit switch chips (QCA8337, AR8327)


Схема №7 коммутации портов на маршрутизаторе MikroTik
  • Create a group of switched ports.
/interface ethernet
set ether3 master-port=ether2
set ether4 master-port=ether2
set ether5 master-port=ether2
  • Add VLAN table entries to allow frames with specific VLAN IDs between ports.
/interface ethernet switch vlan
add ports=ether2,ether3,ether4,ether5 switch=switch1 vlan-id=200
add ports=ether2,ether3,ether4,ether5 switch=switch1 vlan-id=300
add ports=ether2,ether3,ether4,ether5 switch=switch1 vlan-id=400
  • In switch port menu set "vlan-mode" on all ports and also "default-vlan-id" on planned hybrid ports.

"Vlan-mode=secure" will ensure strict use of VLAN table.
"Default-vlan-id" will define VLAN for untagged ingress traffic on port.
In Gigabit switch chips when "vlan-mode=secure", it ignores switch port "vlan-header" options. VLAN table entries handle all the egress tagging/untagging and works as "vlan-header=leave-as-is" on all ports.
It means what comes in tagged, goes out tagged as well, only "default-vlan-id" frames are untagged at the egress of port.

/interface ethernet switch port
set ether2 vlan-mode=secure
set ether3 vlan-mode=secure default-vlan-id=200
set ether4 vlan-mode=secure default-vlan-id=300
set ether5 vlan-mode=secure default-vlan-id=400

Management IP Configuration

This example will show one of the possible management IP address configurations. Management IP will be accessible only through trunk port and it will have a separate VLAN with ID 99.

  • Add VLAN table entry to allow management traffic through switch-cpu port and the trunk port.
/interface ethernet switch vlan
add ports=ether2,switch1_cpu switch=switch1 vlan-id=99
  • Configure the port which connects switch-chip with CPU, set "vlan-header=leave-as-is" because management traffic already should be tagged.
/interface ethernet switch port
set switch1_cpu vlan-mode=secure vlan-header=leave-as-is
  • Add VLAN 99 and assign IP address to it. Since the master-port receives all the traffic coming from switch-cpu port, VLAN has to be configured on master-port, in this case "ether2" port.
/interface vlan
add name=vlan99 vlan-id=99 interface=ether2
/ip address
add address=192.168.88.1/24 interface=vlan99 network=192.168.88.0