Switch Chip и аппаратная коммутация на MikroTik
Switch Chip — это аппаратный коммутационный чип, установленный на плате MikroTik, который выполняет коммутацию L2/L3-трафика без участия центрального процессора. Понимание работы Switch Chip критически важно для правильной настройки сети: когда аппаратная коммутация активна, трафик между портами одного чипа проходит на скорости линии (wire speed), не создавая нагрузки на CPU. Когда она отключена или недоступна — каждый пакет обрабатывается программно, что на младших моделях приводит к падению производительности в разы. В этом руководстве разберём, какие чипы используются в устройствах MikroTik, как включить и проверить Hardware Offloading, и почему Bridge VLAN Filtering заменил устаревшие Switch Rules.
Описание
Что такое Switch Chip
В каждом маршрутизаторе или коммутаторе MikroTik присутствует один или несколько аппаратных switch-чипов. Каждый чип объединяет группу Ethernet-портов и может самостоятельно выполнять ряд функций коммутации без вмешательства CPU:
- L2 коммутация — пересылка кадров между портами по MAC-таблице
- VLAN-обработка — назначение PVID, тегирование/снятие тегов, VLAN-фильтрация
- STP/RSTP — участие в Spanning Tree Protocol на аппаратном уровне
- IGMP Snooping — фильтрация мультикастового трафика
- Port Isolation — запрет прямого обмена между портами
- Mirror — зеркалирование трафика на диагностический порт
Когда Switch Chip берёт на себя обработку трафика — это называется Hardware Offloading. Пакеты проходят через чип напрямую, не попадая в CPU. Пропускная способность при этом определяется возможностями чипа, а не мощностью процессора.
Модели Switch Chip
В устройствах MikroTik используются чипы нескольких производителей. Возможности Hardware Offloading напрямую зависят от модели чипа:
| Производитель чипа | Серии чипов | Используется в | Ключевые возможности |
|---|---|---|---|
| Atheros | AR8316, AR8327, QCA8513 | hAP, hEX, RB951, RB2011, hAP ac | Базовый VLAN offload, STP, port isolation |
| MediaTek (MT) | MT7621, MT7531 | hAP ax2, hAP ax3, hAP ax lite | VLAN filtering offload, IGMP snooping |
| Marvell (MV) | 88E6393X, Prestera DX, Aldrin | CRS3xx, CRS5xx, CCR2216 | Полный VLAN offload, L3 HW, ACL, QoS, bonding offload |
| Realtek | RTL8367 | Некоторые hEX, hAP lite | Базовый L2 offload |
Atheros — наиболее распространённые чипы в бюджетных и средних устройствах. Поддерживают базовый VLAN offloading и STP, но имеют ограничения при сложных конфигурациях.
MediaTek — новое поколение чипов в устройствах Wi-Fi 6 серии hAP ax. Хорошая поддержка Bridge VLAN Filtering, включая IGMP snooping на аппаратном уровне.
Marvell — чипы для коммутаторов серии CRS. Наиболее продвинутые — поддерживают L3 Hardware Offloading (маршрутизация на чипе), ACL, аппаратный QoS, bonding offload. CRS3xx использует серию 88E6393X, а CRS5xx — чипы Prestera.
Один чип vs несколько чипов
На многих устройствах MikroTik установлено более одного switch-чипа. Например:
- RB2011 — два чипа: один для портов ether1-ether5 (Gigabit Atheros), второй для ether6-ether10 (Fast Ethernet Atheros) и SFP
- hAP ac² — один чип Atheros для ether1-ether5
- RB5009 — один чип Marvell для ether1-ether8 + SFP+ cage
Критически важно: Hardware Offloading работает только между портами, подключёнными к одному switch-чипу. Если вы добавите в один Bridge порты из разных чипов — коммутация между ними пойдёт через CPU. Трафик внутри одного чипа будет аппаратным, а между чипами — программным.
Проверить, к какому чипу подключён каждый порт:
[admin@MikroTik] >/interface/ethernet/print detail
Колонка switch показывает принадлежность порта к чипу.
Hardware Offloading vs Software Bridging
Сравнение производительности на примере hAP ax2 (MediaTek MT7621):
| Параметр | HW Offload (Switch Chip) | Software Bridge (CPU) |
|---|---|---|
| Throughput L2 | 1 Gbps wire speed | ~600-700 Mbps |
| Нагрузка на CPU | ~0% | 40-80% |
| Latency | <10 μs | 50-200 μs |
| Поддержка VLAN | Аппаратная | Программная |
| Поддержка Firewall Bridge | Нет | Да |
Bridge VLAN Filtering vs Switch Rules (legacy)
В RouterOS 6 существовало два способа работы с VLAN:
- Switch Rules (
/interface/ethernet/switch/vlan) — прямая настройка VLAN на switch-чипе. Работала быстро, но конфигурация зависела от модели чипа и была непереносимой. - Bridge VLAN Filtering (
/interface/bridge) — настройка VLAN через bridge, с автоматическим offloading на чип при поддержке.
Начиная с RouterOS 7, Switch Rules полностью убраны. Единственный способ настройки VLAN — через Bridge VLAN Filtering. При этом RouterOS автоматически передаёт поддерживаемые функции на switch-чип, если Hardware Offloading включён.
Преимущества Bridge VLAN Filtering:
- Единая конфигурация — одинаковый синтаксис для любого устройства
- Автоматический offload — RouterOS сама определяет, что может быть выполнено на чипе
- Переносимость — конфигурация работает при замене устройства на другую модель
- Совместимость — одновременно работают VLAN, STP, DHCP Snooping на bridge
Настройка
Шаг 1: Создание Bridge с Hardware Offloading
Создаём Bridge и включаем Hardware Offloading на портах:
[admin@MikroTik] >/interface/bridge add name=bridge-LAN protocol-mode=rstp \ comment="Основной LAN bridge с HW offload" /interface/bridge/port add bridge=bridge-LAN interface=ether2 hw=yes /interface/bridge/port add bridge=bridge-LAN interface=ether3 hw=yes /interface/bridge/port add bridge=bridge-LAN interface=ether4 hw=yes /interface/bridge/port add bridge=bridge-LAN interface=ether5 hw=yes
Параметр hw=yes включает попытку аппаратной коммутации. RouterOS проверит, могут ли порты использовать switch-чип, и при успехе установит флаг H (Hardware Offloaded).
Важно: по умолчанию hw=yes уже установлен для всех bridge-портов в RouterOS 7. Явная установка нужна только если вы ранее отключали offloading.
Шаг 2: Назначение IP-адреса на Bridge
[admin@MikroTik] >/ip/address add address=192.168.88.1/24 interface=bridge-LAN
Шаг 3: Включение VLAN Filtering (при необходимости)
Если вы используете VLAN на Bridge — включите VLAN Filtering:
[admin@MikroTik] ># Сначала настраиваем VLAN-правила /interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN,ether5 \ untagged=ether2,ether3 vlan-ids=10 /interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN,ether5 \ untagged=ether4 vlan-ids=20 # Устанавливаем PVID для access-портов /interface/bridge/port set [find interface=ether2] pvid=10 /interface/bridge/port set [find interface=ether3] pvid=10 /interface/bridge/port set [find interface=ether4] pvid=20 # Включаем фильтрацию ПОСЛЕ настройки правил /interface/bridge set bridge-LAN vlan-filtering=yes
При включённом VLAN Filtering и HW offload — VLAN-обработка будет выполняться на switch-чипе (если чип это поддерживает).
Внимание: включайте vlan-filtering=yes только после полной настройки VLAN. Преждевременное включение может заблокировать доступ к устройству.
Настройка на коммутаторах CRS3xx
На коммутаторах серии CRS3xx (Marvell чип) доступно больше аппаратных функций. Пример настройки CRS326-24G-2S+ как managed-коммутатора:
[admin@MikroTik] ># Создаём Bridge со всеми портами /interface/bridge add name=bridge1 protocol-mode=rstp \ vlan-filtering=no comment="CRS326 managed switch" # Добавляем все порты с HW offload :for i from=1 to=24 do={ /interface/bridge/port add bridge=bridge1 \ interface=("ether" . $i) hw=yes } /interface/bridge/port add bridge=bridge1 interface=sfp-sfpplus1 hw=yes /interface/bridge/port add bridge=bridge1 interface=sfp-sfpplus2 hw=yes # Настраиваем VLAN /interface/bridge/vlan add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \ untagged=ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8 vlan-ids=10 add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \ untagged=ether9,ether10,ether11,ether12,ether13,ether14,ether15,ether16 vlan-ids=20 add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \ untagged=ether17,ether18,ether19,ether20,ether21,ether22,ether23,ether24 vlan-ids=30 # Устанавливаем PVID :for i from=1 to=8 do={ /interface/bridge/port set [find interface=("ether" . $i)] pvid=10 } :for i from=9 to=16 do={ /interface/bridge/port set [find interface=("ether" . $i)] pvid=20 } :for i from=17 to=24 do={ /interface/bridge/port set [find interface=("ether" . $i)] pvid=30 } # Включаем VLAN filtering /interface/bridge set bridge1 vlan-filtering=yes
Все VLAN-операции на CRS326 будут выполняться Marvell-чипом без нагрузки на CPU.
Проверка
Проверка статуса Hardware Offloading
Основная команда для проверки — вывод портов bridge:
[admin@MikroTik] >/interface/bridge/port print
В колонке HW (или hardware-offload) смотрим статус:
yes— порт использует аппаратную коммутациюno— порт работает через CPU (software bridge)
Более детальный вывод:
[admin@MikroTik] >/interface/bridge/port print detail
Здесь видны поля hw=yes (запрашивается offload) и hw-offload=yes (offload реально активен). Если hw=yes, но hw-offload=no — чип не может выполнить offload для данной конфигурации.
Проверка принадлежности портов к switch-чипу
[admin@MikroTik] >/interface/ethernet print
Колонка switch показывает, к какому чипу принадлежит порт. Все порты в bridge должны быть на одном чипе для полного HW offload.
Информация о switch-чипе
[admin@MikroTik] >/interface/ethernet/switch print
Выводит название чипа, тип и количество портов. Полезно для идентификации модели чипа.
Таблица MAC-адресов на чипе
[admin@MikroTik] >/interface/ethernet/switch/host print
Показывает MAC-адреса, изученные аппаратным коммутатором. Если таблица пуста при активном трафике — offloading не работает.
Счётчики портов Switch Chip
[admin@MikroTik] >/interface/ethernet/switch/port-counters print
Аппаратные счётчики пакетов. Позволяют видеть трафик, проходящий через switch-чип, без нагрузки на CPU.
Мониторинг трафика через Bridge
[admin@MikroTik] >/interface/bridge/host print
MAC-таблица bridge. При HW offloading часть записей будет помечена как external — это записи из аппаратной таблицы switch-чипа.
Проверка нагрузки на CPU
Косвенный способ проверить, работает ли offloading — наблюдать за нагрузкой CPU при прогоне трафика:
[admin@MikroTik] >/system/resource print
Если при активном трафике между портами bridge CPU остаётся на уровне 0-5% — offloading работает. Если CPU растёт до 30-80% — трафик идёт через software bridge.
Таблица поддержки Hardware Offloading по моделям
Возможности offloading зависят от чипа и версии RouterOS:
| Функция | Atheros (hAP, hEX) | MediaTek (hAP ax) | Marvell (CRS3xx) | Marvell (CRS5xx) |
|---|---|---|---|---|
| L2 коммутация | Да | Да | Да | Да |
| VLAN Filtering | Частично | Да | Да | Да |
| STP/RSTP | Да | Да | Да | Да |
| MSTP | Нет | Нет | Да | Да |
| IGMP Snooping | Нет | Да | Да | Да |
| DHCP Snooping | Нет | Нет | Да | Да |
| Port Isolation | Да | Да | Да | Да |
| Bonding (LACP) | Нет | Нет | Да | Да |
| Mirror | Да | Да | Да | Да |
| ACL (Access Control Lists) | Нет | Нет | Да | Да |
| L3 HW Offloading | Нет | Нет | Да | Да |
| QoS (аппаратный) | Нет | Нет | Да | Да |
Atheros — минимальный набор функций. VLAN offloading работает, но с ограничениями: при включении некоторых функций bridge (например, DHCP snooping) offloading автоматически отключается.
MediaTek — значительно лучше Atheros. Полная поддержка Bridge VLAN Filtering с аппаратным offloading, включая IGMP snooping.
Marvell CRS3xx/5xx — полный набор функций. Всё перечисленное в таблице работает аппаратно, включая L3 маршрутизацию, ACL и QoS.
L3 Hardware Offloading на CRS3xx (кратко)
Коммутаторы серии CRS3xx с чипом Marvell поддерживают маршрутизацию на аппаратном уровне. Это позволяет выполнять inter-VLAN routing на скорости коммутации без участия CPU.
Включение L3 HW offloading:
[admin@MikroTik] >/interface/ethernet/switch set 0 l3-hw-offloading=yes
Требования:
- RouterOS 7.x
- Bridge с включённым
vlan-filtering=yes - IP-адреса назначены на VLAN-интерфейсы (не на bridge напрямую)
- Только статические маршруты и connected-сети
Маршруты, выполняемые аппаратно, отмечены флагом H (HW offloaded):
[admin@MikroTik] >/ip/route print detail where hw-offloaded=yes
Подробнее о L3 HW offloading — в отдельной статье.
Типичные ошибки
HW Offloading не активируется
Симптом: hw=yes установлен, но hw-offload показывает no.
Причины:
-
Порты из разных switch-чипов в одном Bridge. Проверьте
/interface/ethernet print— все порты bridge должны быть на одном чипе. На RB2011, например, ether1-ether5 и ether6-ether10 на разных чипах. -
Несовместимые функции bridge. Некоторые функции отключают HW offload:
protocol-mode=noneс определёнными чипами- DHCP Snooping на Atheros-чипах
- Bridge Firewall Filter rules (правила
/interface/bridge/filter) - Bridge NAT rules
-
Беспроводной интерфейс в bridge. Wi-Fi интерфейсы не подключены к switch-чипу — их невозможно offload. Однако проводные порты в том же bridge могут сохранять offload между собой.
[admin@MikroTik] ># Проверяем, что мешает offloading /interface/bridge/port print detail where hw-offload=no
Потеря связи при включении VLAN Filtering
Симптом: после команды set vlan-filtering=yes устройство становится недоступным.
Решение:
Настраивайте VLAN-правила ДО включения фильтрации. Включите management VLAN:
[admin@MikroTik] ># Создаём management VLAN для доступа к устройству /interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN vlan-ids=1 # ИЛИ добавляем management VLAN с конкретным ID /interface/bridge/vlan add bridge=bridge-LAN \ tagged=bridge-LAN,ether5 untagged=ether2 vlan-ids=99 # Назначаем IP на VLAN-интерфейс /interface/vlan add name=vlan99-mgmt interface=bridge-LAN vlan-id=99 /ip/address add address=192.168.99.1/24 interface=vlan99-mgmt # Только после этого включаем фильтрацию /interface/bridge set bridge-LAN vlan-filtering=yes
Также используйте Safe Mode (Ctrl+X в терминале) — при потере связи изменения будут автоматически отменены.
Неправильная интерпретация offloading при наличии Wi-Fi
Симптом: wlan1 добавлен в bridge, пользователь ожидает полный HW offload.
Реальность: Wi-Fi интерфейсы всегда работают через CPU. HW offload действует только между Ethernet-портами на одном чипе. Трафик ether2↔ether3 будет аппаратным, но трафик wlan1↔ether2 — программным. Это нормальное поведение.
Degraded offloading — частичный offload
Симптом: offloading работает, но не все функции. Например, STP обрабатывается CPU, хотя L2 коммутация аппаратная.
Причина: чип не поддерживает конкретную функцию. RouterOS включает offload для поддерживаемых функций и обрабатывает остальные программно. Проверьте таблицу поддержки по вашей модели чипа.
Устаревшие Switch Rules после миграции на RouterOS 7
Симптом: после обновления с RouterOS 6 на 7 VLAN не работают, switch rules исчезли.
Решение: RouterOS 7 не поддерживает Switch Rules. Необходимо полностью перенастроить VLAN через Bridge VLAN Filtering:
[admin@MikroTik] ># Проверить текущую конфигурацию bridge /interface/bridge print /interface/bridge/port print /interface/bridge/vlan print # Если конфигурация пустая — нужно создать заново # Следуйте шагам из раздела "Настройка" выше
При обновлении с ROS 6 рекомендуется сделать /export старой конфигурации, выполнить сброс и настроить заново по документации ROS 7.
Проблемы с IGMP Snooping и HW offloading
Симптом: мультикаст-трафик (IPTV) не работает после включения IGMP Snooping на bridge с Atheros-чипом.
Причина: Atheros-чипы не поддерживают аппаратный IGMP Snooping. При включении этой функции на bridge, мультикаст обрабатывается CPU, что может снизить производительность.
Решение: на устройствах с Atheros-чипом лучше отключить IGMP Snooping на bridge и настроить IGMP Proxy на уровне маршрутизатора.
[admin@MikroTik] >/interface/bridge set bridge-LAN igmp-snooping=no
На устройствах с MediaTek или Marvell — IGMP Snooping работает аппаратно и не вызывает проблем.
Рекомендации
-
Всегда проверяйте HW offload после настройки bridge — используйте
/interface/bridge/port printи смотрите колонку HW. -
Используйте порты одного switch-чипа — размещайте LAN-порты в bridge из портов одного чипа для максимальной производительности.
-
Bridge VLAN Filtering — единственный правильный способ — не пытайтесь использовать устаревшие switch rules в RouterOS 7.
-
CRS3xx для коммутации — если нужен managed-коммутатор с полным набором L2/L3 аппаратных функций, используйте серию CRS3xx.
-
Обновляйте RouterOS — каждая версия улучшает поддержку HW offloading. RouterOS 7.20+ имеет лучшую совместимость с Bridge VLAN Filtering на всех чипах.
/interface/ethernet/print detail
/interface/bridge add name=bridge-LAN protocol-mode=rstp \
comment="Основной LAN bridge с HW offload"
/interface/bridge/port add bridge=bridge-LAN interface=ether2 hw=yes
/interface/bridge/port add bridge=bridge-LAN interface=ether3 hw=yes
/interface/bridge/port add bridge=bridge-LAN interface=ether4 hw=yes
/interface/bridge/port add bridge=bridge-LAN interface=ether5 hw=yes
/ip/address add address=192.168.88.1/24 interface=bridge-LAN
# Сначала настраиваем VLAN-правила
/interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN,ether5 \
untagged=ether2,ether3 vlan-ids=10
/interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN,ether5 \
untagged=ether4 vlan-ids=20
# Устанавливаем PVID для access-портов
/interface/bridge/port set [find interface=ether2] pvid=10
/interface/bridge/port set [find interface=ether3] pvid=10
/interface/bridge/port set [find interface=ether4] pvid=20
# Включаем фильтрацию ПОСЛЕ настройки правил
/interface/bridge set bridge-LAN vlan-filtering=yes
# Создаём Bridge со всеми портами
/interface/bridge add name=bridge1 protocol-mode=rstp \
vlan-filtering=no comment="CRS326 managed switch"
# Добавляем все порты с HW offload
:for i from=1 to=24 do={
/interface/bridge/port add bridge=bridge1 \
interface=("ether" . $i) hw=yes
}
/interface/bridge/port add bridge=bridge1 interface=sfp-sfpplus1 hw=yes
/interface/bridge/port add bridge=bridge1 interface=sfp-sfpplus2 hw=yes
# Настраиваем VLAN
/interface/bridge/vlan
add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \
untagged=ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8 vlan-ids=10
add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \
untagged=ether9,ether10,ether11,ether12,ether13,ether14,ether15,ether16 vlan-ids=20
add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 \
untagged=ether17,ether18,ether19,ether20,ether21,ether22,ether23,ether24 vlan-ids=30
# Устанавливаем PVID
:for i from=1 to=8 do={
/interface/bridge/port set [find interface=("ether" . $i)] pvid=10
}
:for i from=9 to=16 do={
/interface/bridge/port set [find interface=("ether" . $i)] pvid=20
}
:for i from=17 to=24 do={
/interface/bridge/port set [find interface=("ether" . $i)] pvid=30
}
# Включаем VLAN filtering
/interface/bridge set bridge1 vlan-filtering=yes
/interface/bridge/port print
/interface/bridge/port print detail
/interface/ethernet print
/interface/ethernet/switch print
/interface/ethernet/switch/host print
/interface/ethernet/switch/port-counters print
/interface/bridge/host print
/system/resource print
/interface/ethernet/switch set 0 l3-hw-offloading=yes
/ip/route print detail where hw-offloaded=yes
# Проверяем, что мешает offloading
/interface/bridge/port print detail where hw-offload=no
# Создаём management VLAN для доступа к устройству
/interface/bridge/vlan add bridge=bridge-LAN tagged=bridge-LAN vlan-ids=1
# ИЛИ добавляем management VLAN с конкретным ID
/interface/bridge/vlan add bridge=bridge-LAN \
tagged=bridge-LAN,ether5 untagged=ether2 vlan-ids=99
# Назначаем IP на VLAN-интерфейс
/interface/vlan add name=vlan99-mgmt interface=bridge-LAN vlan-id=99
/ip/address add address=192.168.99.1/24 interface=vlan99-mgmt
# Только после этого включаем фильтрацию
/interface/bridge set bridge-LAN vlan-filtering=yes
# Проверить текущую конфигурацию bridge
/interface/bridge print
/interface/bridge/port print
/interface/bridge/vlan print
# Если конфигурация пустая — нужно создать заново
# Следуйте шагам из раздела "Настройка" выше
/interface/bridge set bridge-LAN igmp-snooping=no