Модульный роутер с Docker-ом, на базе Banana PI и OpenWRT

!!!-image.png

Швейцарский нож из бананы :)

Привет, Хабр! В прошлогодней статье про открытый роутер на базе Banana Pi  + OpenWRT я оставил коммент, что есть ещё одно интересное решение этой связки. Привёл скрины и фото готового девайса, а так же пообещал написать статью с описанием функционала. Обещал — выполняю.

Началось всё с того, что в марте 24 года, ко мне обратился знакомый руководитель с вопросом — сможем ли мы сделать устройство со следующими характеристиками:

·         CPU ARM 64bit 4-cores Cortex A53 1,5GHz и выше
·         1GB RAM
·         64–128GB NAND
·         Fanless
·         OS Ubuntu, Debian (возможность установки)
·         4×10/100Mbit/s ports Switch-chip (опционально 4×10/100/1000Mbit/s)
·         2–4 x LTE 4–6Cat Quectel EC25EU, EC200A, MEIG SLM750-V…
·         1х WiFi 2.4GHz 802.11b/g/n (ax) MIMO 2×2 (опционально)
·         1x WiFi 5GHz 802.11a/n/ac (ax) MIMO 2×2 (опционально)
·         1x WiFi 5GHz 802.11a/n/ac (ax) MIMO 2×2 (опционально)
·         1x USB 2.0/3.0
·         Компактный корпус (использование в качестве оконечного устройства)
·         Объем в год: около 1000 шт.

Срок сдачи рабочего прототипа — до 15 декабря 2024 года.

Спойлер:

Мы справились с задачей и прототип получился многообещающим, с отличным функционалом. Для себя определили проект как «швейцарский ножик из бананы».

Good.png

BSR-424WL

4 LTE модема

4 LTE модема

Теперь про процесс.

Понятно, что изготовить с нуля за 9 месяцев такое можно только если ввалить немалую сумму в разработку, поэтому мы решили найти что-то похожее из одноплатников, а затем доработать под требования. Если проект выстрелил бы — можно было задуматься о полноценном проектировании.

Первым делом подобрали более-менее подходящий одноплатник на базе Banana PI. Но ни у одного одноплатника нет возможности одновременной установки четырёх 4 LTE модемов и двух WiFi модулей. Чтобы пройти под эти требования, запустили проектирование платы на 4 LTE модема. Благо, в бананке достаточно периферии, куда можно зацепиться.

Параллельно запустили проектирование корпуса под одноплатник и начали думать за охлаждение и WiFi. Перекинуть банку памяти под требования в 64 ГБ — не самая сложная задача.

Пока решались «железные» задачи, стали смотреть, что есть по прошивкам.

SinoVoip — ребята хорошие, делают неплохие железки, но с прошивками просто беда. Особенно, если одноплатник свежий. Выкатить прошивку, в которой не работает сеть — запросто. К примеру, есть модуль WiFi 7 для этого одноплатника, который работает только с бубном и то через раз (на 7G диапазоне).

В ТЗ стоит возможность установки Debian/Ubuntu, но стало интересно погонять OpenWRT. Я до этого лет семь-восемь назад её краем глаза смотрел — не впечатлило. Но сейчас она очень даже заинтересовала функционалом.  

Спойлер:

В конечном итоге тема с OpenWRT не просто понравилась, на этой базе можно делать очень интересные вещи. Можно собирать прошивки под конкретные задачи интеграции — когда в прошивке не будет ничего лишнего, но будет только необходимый функционал. Для себя сделали прошивку «швейцарский нож». Остались довольны.

Начали пилить свою прошивку на базе OpenWRT.

По функционалу, чтобы не изобретать велосипеды, открыли Winbox и микротовский сетевой функционал, какой мог пригодиться, перетащили в OpenWRT. В результате, в прошивке есть богатый набор сетевых инструментов, который может закрыть практически все сетевые задачи малого и не только бизнеса. В прошивку включали всё, что когда-либо приходилось использовать в интеграциях. Кратко перечислю основные моменты прошивки:

Есть DOCKER!

Очень часто при интеграциях нам не хватало того или иного небольшого функционала в оборудовании. Какая-нибудь мелочь, но ради этой мелочи приходилось придумывать костыльные решения. Мы порадовались, когда в микроты на arm завезли пакет container, но огорчились, когда попробовали с этим пакетом поработать. Теперь же у нас есть полноценный Docker, в который очень осторожно можно сгружать дополнительный функционал, который не был предусмотрен роутером. И это работает и работает нормально. НО тут надо сделать оговорку — с докером надо быть предельно аккуратным, ибо легко и непринуждённо можно не просто «прострелить себе коленку», а скомпрометировать вообще всё. Поэтому мы выпилили WEB-управление докером и оставили только консоль (выше порог вхождения и ниже вероятность накосячить). Тем не менее Docker работает. Оперативки и проца хватает. В роутер возможна установка M2 SSD — проблем с местом для контейнера не будет. Для тестирования на роутер поставили контейнер с HomeAssistant. Это далеко не самый легковесный контейнер. Требования для него «выше среднего». Тем не менее и роутер и контейнер себя прекрасно чувствуют.

HA.png

Докер, прекрасно себя чувствует в роутере. И сам роутер себя прекрасно чувствует.

FRR — динамическая маршрутизация. (e/i) BGP, OSPF, VRRP и пр. Если у вас в головном офисе используется «динамика» — небольшой уделённый офис не будет «отщепенцем».

MultiWAN — некий аналог SD-WAN. При желании, можно «приземлить»  MultiWAN на каком-нибудь своём серваке и «склеить» каналы.  Получится отказоустойчивое в плане сети решение.

LTE_MultiWAN-3.png

Статус MutliWAN. 4xLTE модема и WiFi клиент

Различные туннели и бриджы: bridge, IP4-in-IP4, 6in4, 6to4, GRE/GRETAP, EoIP, IPIP, L2TP OpenVPN, SSH-туннелинг, WEB-туннелинг, ICMP-туннелинг, DNS over HTTPS, Wireguard, SSTP, PPP, PPPoE, Open FortiVPN, VXLAN и много чего ещё. VRF позволит раскидывать роутинг по разным таблицам и гибко настраивать маршрутизацию. Наличие VXLAN — приятно радует возможностью разворачивать оверлейные сети. В связке с FRR — очень интересные возможности.

Interfaces.jpg

Список возможных интерфейсов

Как говорил выше, спроектировали/развели плату под 4 LTE модема, поставили 4 Quecktel EP-06E всё завелось корректно, работает как часы. Модемы под агрегацию несущих частот не прошивали. Тестировали Quecktel EC25-E — тоже взлетело. Модемы можно разные ставить — по количеству и категориям под задачи.

001_mobile_MTS_Tele2_Megafon_Yota.png

LTE модемы в апе

Для решения проблемы «устаревающих кеширующих серверов Google» и не только, в прошивку включены такие пакеты как:

V2Ray, Xray, OpenConnect, Ygdrasslil, i2p, cloak, udp2raw

Радует возможность самостоятельно оперативно добавлять тот или иной функционал, если какой-либо из методов «починки серверов» перестал работать.

По полезным полезностям, что могут пригодиться:

ACME, fail2ban, banIP, WoL, LLDP, SNMP, StrongSwan и пр. Установлен пакет OpenWISP — он будет полезен, если в инфраструктуре используется таких роутеров больше трёх. Можно использовать для управления инфраструктурой Ansible/Terraform и пр. Но если хочется красиво и удобно, без консоли — можно развернуть OpenWISP и в вебе рулить роутерами.

Как говорил выше — функционала хватает, чтобы закрыть все сетевые задачи малого и не только бизнеса. Возможность в любой момент допилить прошивку под появившиеся задачи — это супер!

Аппаратная часть роутера.

Параметр

ТЗ

Реализовано

CPU

ARM 64bit 4-cores Cortex A53 1,5GHz

ARM 64bit 4-cores Corex-A73@1,8 ГГц

RAM

1GB

4 Gb DDR4

NAND

64–128GB

Реализовано, возможна установка M2 SSD

LAN

4×10/100Mbit/s ports Switch-chip (опционально 4×10/100/1000Mbit/s)

4×10/100/1000Mbit
2×10Gbit SFP+

LTE

2–4 x LTE 4–6Cat Quectel EC25EU

4 x LTE 6Cat Quectel EP-06E

WiFi

1х WiFi 2.4GHz 802.11b/g/n (ax) MIMO 2×2 (опционально)


WiFi 2.4GHz, WiFi 5GHz  на базе MTK7915

WiFi

1x WiFi 5GHz 802.11a/n/ac (ax) MIMO 2×2 (опционально)

USB

1x USB 2.0/3.0

1x USB 2.0/3.0

OS

Ubuntu, Debian (возможность установки)

OpenWRT, Ubuntu, Debian

Fanless

+

Реализовано

 За основу была взята плата Banana Pi BPI R4, что-то выпаяли, что-то перепаяли, плату для модемов спроектировали/сделали сами. При заявленном тираже в 1000 экземпляров можно было договориться с китайцами, чтобы все наши переделки организовали на заводе.

Очень интересный момент получился с диском. Изначально мы накидывали банку eMMC на 64 гига и всё работало. Но потом нашли другое решение — т.к. в OpenWRT используется OverlayFS, можно M2 SSD использовать в качестве внешнего оверлея. И таким образом мы получаем размер файловой системы равный размеру M2 диска. Нет необходимости перекидывать банку. Скорость у M2 выше, чем у eMMC, ёмкость диска можно подбирать под задачу. Хороший такой конструктор.

По корпусу было несколько итераций. На производстве не получалось изготовить под наши размеры в нужный нам техпроцесс. Помимо этого на производстве косячили. Пример:

center.png

На производстве забыли запрессовать бонку. Прямо по центру. Бывает…

В итоге через несколько итераций мы получили нужный нам результат. Не идеальный, но за который не стыдно. Размеры корпуса получились: 160×135х40 мм (ШхГхВ)

Fanless

Чтобы обеспечить хорошее пассивное охлаждение проца, решили делать теплоотведение через верхнюю алюминиевую крышку с оребрением, через медный радиатор. Система получилась довольно эффективной. При нагрузке камня на 100% (на всех ядрах), температура камня не поднималась выше 50…51 градуса

sensors.png

Температура камня при загрузке всех четырёх ядер на 100%

CPU_load.png

Т.к. данный роутер позиционировался как оборудование для малого бизнеса, встал вопрос скорости VPN туннелирования. Шифрование производится процом, поэтому надо было замерить, какой канал шифрованного трафика можно переварить. Собрали тестовую лабу, соединили наш роутер Wireguard-ом по SFP+ с компом, запустили iperf в 4 потока. Когда все ядра легли на полку, получили 1,93 Gbit/s. Вполне неплохо для такого роутера.

wireguard.jpg

Без малого 2 Гигабита

В сети есть следующие результаты различных типов туннелей

Пропускная способность — NAT и туннели, Гбит/с

WAN → LAN × 1

WAN → LAN × 8

LAN → WAN × 1

LAN → WAN × 8

WAN → LAN/LAN → WAN × 1

WAN → LAN/LAN → WAN × 8

NAT

9,33

9,49

9,48

9,5

9,10/9,38

8,6/9,47

PPPoE

8,24

6,68

5,48

4,48

1,77/3,79

0,94/3,9

PPTP

0,84

0,81

1,89

1,52

0,03/2,02

0,007/1,75

PPTP (MPPE128)

0,33

0,38

0,47

0,47

0,04/0,45

0,02/0,46

L2TP: IKEv2/IPsec (AES-256-CBC, SHA-256, MODP2048)

1,4

1,48

2,26

2,37

1,13/2,19

0,52/2,16

 Что по итогу:

Готовое решение мы предложили в конце ноября 2024 г. т.е. за две недели до окончания обозначенного срока. Но у генерального заказчика, похоже, поменялись планы. Путь роутера будет более тернистым.

Что нам самим понравилось в результате — модульность как по набивке железом (модемы/WiFi модули/диски), так и по прошивке. Наличие докера развязывает руки, но надо к этому относиться очень аккуратно.

Дальнейшие планы:

В конце января пробная партия роутеров будет отправлена на «боевое тестирование». К концу февраля получим обратную связь и дошлифуем шероховатости. Получим готовый к выводу на рынок продукт.

По стоимости — сейчас будет зависеть от того, какой предзаказ сможем собрать. Партия в 20 единиц и в 2 000 единиц очень сильно отличаются по цене за штуку.  Целевые показатели стоимости при серийном производстве (в зависимости от набивки) — между Mikrotik RB и Mikrotik CCR.

© Habrahabr.ru