Главная » Хабрахабр » Ни минуты оффлайн — Выбираем промышленный LTE-роутер

Ни минуты оффлайн — Выбираем промышленный LTE-роутер

промышленный LTE роутер Termit CR41P, с антеннами Триада MA-2697

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

Я решил сравнить несколько промышленных роутеров, чтобы выяснить, оправдывают ли они свое название, и насколько они лучше моих костылей. Мне надоело самостоятельно изобретать failover на USB модемах, и захотелось делегировать это отдельной умной железке. В статье будут сравниваться роутеры производителей iRZ, Termit, Robustel.

Основные требования к роутерам:

  • 2 SIM-карты и автоматическое переключение между операторами — роутер должен автоматически определять потерю связи на одном операторе и переключаться на резервного. Это особенно важно для подвижных систем, когда покрытие сотовой сети не идеально.
  • Подключение по Ethernet — основная система должна видеть только шлюз по умолчанию, и не должна знать о модемной подсистеме на стороне роутера и переключениях каналов, поэтому никаких USB.
  • Поддержка современных протоколов VPN: IKEv2 и OpenVPN — для удобства администрирования, и чтобы не зависеть от реальных IP-адресов, роутеры должны уметь VPN. При этом поддерживать не только устаревшие PPTP и L2TP, но и современные протоколы.
  • (Опционально) поддержка GPS, наличие GPIO, serial интерфейсов RS-232/485 — эти функции не обязательны для наших задач, но мы рассмотрим их тоже, как бонус, который, возможно, будет кому-то полезен.

Проблема самодельных костылей

Роутер Zyxel с двумя USB-модемами, закрепленный на стене. К модему подключены провода от внешних антенн.Wi-Fi-роутер c двумя USB-модемами (Фото: Дмитрий Бевза dgl.ru)

Failover — аварийное переключение интернет-канала на резервный, в случаях недоступности основного.

Он позволяет настроить автоматическое резервирование и балансировку между несколькими интернет-каналами, в том числе, между проводным подключением и USB-модемом. Обычно, для резервирования интернет-каналов я использовал бытовой Wi-Fi-роутер с прошивкой OpenWRT, и пакет mwan3.

Мне нравились модемы Huawei E3372h с прошивкой HiLink (эмуляция Ethernet). Главный недостаток такого подхода — в разнородном оборудовании и хлипкой конструкции внешних USB-модемов. Жесткие провода антенны создают рычаг, и модемы банально вылазят из USB-порта, да и сам антенный разъем CRC9 не так надежен, как SMA, потому что не имеет резьбового крепления. Эти модемы достаточно стабильные и дешевые, но, при подключении внешних антенн, вся конструкция становится очень хлипкой.

Антенный разъем в USB-модемах не позволяет надежно зафиксировать внешние антенны. Модем Huawei E3372h.  Они легко выдергиваются
Сборки на внешних USB-модемах очень хрупкие: антенные разъемы не фиксируются, модемы вываливаются из портов

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

Пришлось писать watchdog-скрипт, который бы отдельно следил за доступностью модемов, помимо mwan3, следящим за доступностью интернета. Иногда в роутерах зависала подсистема USB, и модемы становились недоступны. В какой-то момент мне это надоело, и я стал искать решение в одной коробочке, где все проблемы уже решили за меня.

Сравнительная таблица моделей

Промышленные роутеры дороже бытовых, даже с учетом отдельной покупки модемов. Поэтому главным критерием выбора моделей для обзора была стоимость. Дополнительные функции вроде Wi-Fi, выводов GPIO и системы GPS в нашем случае не нужны, но мы все равно сравним их как опции, влияющие на стоимость.

Модель

2 SIM

Проводной WAN

Порты LAN

Wi-Fi

GPS

Цена

Termit CR41P

⁣⁣⁢⁢✓

4

≈13 000 ₽

Robustel R2000

2

X

X

≈12 000 ₽

iRZ RU22W

4

≈15 000 ₽

Методика тестирования

Главная задача сравниваемых роутеров — обеспечивать бесперебойный интернет в любых условиях, поэтому мы будем сравнивать, как хорошо роутер переключается на резервный канал в случае проблем на основном. Для этого будем симулировать потерю связи, и замерять на стороне сервера, как быстро роутер смог восстановить связь.

На нем будет запущен OpenVPN, подключенный к серверу. В качестве целевого хоста к каждому тестируемому роутеру будет подключен маленький роутер TP-Link MR3020, который будет выполнять роль компьютера с полезной нагрузкой. На сервере будет запущен мониторинг, следящий за доступностью адреса внутри VPN-тоннеля.

Независимо от того, через какой канал идет трафик на роутере, сервер мониторинга будет взаимодействовать с одним адресом. То есть, на стороне сервера будет мониториться один фиксированный IP-адрес, назначенный на mr3020 через VPN-тоннель. Соответственно, если адрес доступен, это значит, что роутер успешно переключил канал, и в сети за NAT-ом есть интернет.
Чтобы OpenVPN-тоннель восстанавливался максимально быстро, на стороне сервера установим опцию keep-alive на минимальные значения, и отключим шифрование:

cipher none
ping 1
ping-restart 4

Нужно учитывать, что на переподключение VPN уходит время, и в реальности интернет восстанавливается быстрее, чем видно на графиках. Однако такой тест позволяет более честно оценить факт переключения канала, так как показывает, что клиенты за роутером смогли восстановить TCP-подключения и вернуться к штатной работе.

Роутер MR3020 выполняет роль компьютера с запущенным VPN-клиентом. Схема тестового стенда.  Работающим интернетом считается доступность IP-адреса 10.  Удаленный сервер мониторит IP-адрес VPN-клиента.
К каждому роутеру подключен TP-Link MR3020, с запущенным VPN-тоннелем. 0. 0. 1 на стороне сервера

PingPlotter — программа для мониторинга

Программа мониторинга и сервер OpenVPN находятся на одном физическом компьютере с VPN-сервером. Мониторить я буду утилитой MultiPing, с помощью обычных ICMP Echo-запросов. Интервал запросов — 1 секунда — это позволяет видеть на графике даже кратковременную недоступность хоста.

Аналог консольного MTR." src="https://habrastorage.org/webt/xl/jo/hr/xljohrfhzsbcqlkvxibmyg9r5oi.jpeg"/>
Программа PingPlotter рисует удобные графики пинга, показывая задержку и потери пакетов <img alt="Программа PingPlotter для мониторинга доступности хостов.

Пробовал zabbix, cacti, скрипты на bash + rrdtool, но все это показалось слишком переусложненным для моих задач. Признаюсь, я долго пытался выбрать систему мониторинга. Программа позволяет в реальном времени мониторить группу хостов с разрешением вплоть до 1 секунды, и рисовать подробные графики. В итоге я нашел прекрасную программу PingPlotter и ее упрощенный вариант без трассировки маршрута — MultiPing.

Антенна

Широкополосная антенна Триада MA-2697, подходит для основных диапазонов сотовой связи

По заверениям производителя, антенна широкополосная, и работает в диапазонах GSM-900\1800 МГц, 3G-2100 МГц, Wi-Fi-2400МГц и 4G WiMAX-2600МГц. Чтобы исключить разное качество приема из-за разных антенн, ко всем роутерам будут подключены одинаковые антенны Триада MA-2697. Даже если она плохая, все роутеры будут работать в одинаковых условиях приёма. Проверять качество антенны я не буду.

Мобильные операторы

В каждый роутер будут установлены SIM-карты Мегафон и МТС, с обычным тарифом для физических лиц. Мегафон будет выбран основным, МТС резервным. В таком приоритете нет никакой логики, выбор случайный. В месте проведения тестов оба оператора имеют одинаково хорошее покрытие LTE.

Недостатки тестового стенда

Все роутеры, разом подключенные на столе. Целая куча проводов и антенн.
Тестовый стенд, развернутый на столе

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

Termit CR41P

Роутер предоставлен компанией Цифровой Ангел (digitalangel.ru)

3
RAM: 128MB
Flash-память: 16MB
Wi-Fi: 802. SoC: Atheros AR9344 rev. 4GHz)
Модем: Quectel EC25-E (LTE Cat 4)
Прошивка: на базе OpenWRT 15. 11n (2. 1
USB Host
MicroSD
Крепление на DIN-рейку
GPS/GLONASS: активная антенна 3V
Последовательные интерфейсы: RS-232/485
Выводы I/O: 2 цифровых входа (0-3V / 0-30V, гальванически развязанный), 1 аналоговый вход (0-24V), 1 цифровой выход (30V, 250 mA открытый коллектор), 1 выход реле (40V, 4A SPST) 05.

Для установки SIM-карты необходимо раскрутить четыре винта и снять заднюю крышку.

Что ж, это повод рассмотреть внутренности подробнее.

кликабельно

Модемная часть выполнена в виде шилда, который надевается на основную плату.
В углу видно реле для мощной нагрузки, выведенное на пины I/O.

Имеет проводной WAN, а также позволяет использовать Wi-Fi в режиме станции (клиента), как отдельный WAN. Самый богатый по функциям роутер в обзоре. То есть может иметь четыре резервных интернет канала.

Это видно как по дизайну, который не пытались замаскировать, так и по путям в URL. Веб-интерфейс сразу выдает LuCI из OpenWRT. В прошивку добавлены промышленные функции: Modbus, VRRP, MQTT. На мой взгляд, это скорее плюс, так как позволяет легко допилить систему под себя. Через Modbus и MQTT можно управлять базовыми функциями, получать состояние сети, координаты GPS, температуру, переключать профили, перезагружать роутер, управлять пинами I/O.

Вместо него рекомендуется mwan3. Мониторинг интернет-каналов сделан через пакет multiwan, который в wiki OpenWRT назван устаревшим.

Обзор веб-интерфейса и дополнительных функций

Выводы I/O

Управление пинами I/O выполняется через веб-интерфейс, тут же можно посмотреть статус и переименовать каждый пин. Это не заменит полноценный микроконтроллер, но для простой автоматизации может подойти. Например, открыть дверь или поднять шлагбаум по SMS, MQTT или HTTP-запросу, выполнить действие при срабатывании датчика и послать уведомление об этом. Довольно интересная функциональность, которая позволяет обойтись одним устройством.

Можно указать диапазон напряжений, в котором сработает триггер, либо настроить на срабатывание при выходе из диапазона Интерфейс настройки триггера для аналогового входа роутера Termit CR41P
Интерфейс настройки триггера для аналогового входа.

Последовательные интерфейсы RS-232/485

Физически интерфейс RS-232 выполнен в виде разъема DB9 (COM-порта), а RS-485 — в виде съемной клеммной колодки. В веб-интерфейсе можно выбрать четыре режима работы порта:

  • Системная консоль — доступ как по SSH
  • Serial over IP — проброс последовательного порта через интернет
  • Шлюз Modbus — конвертер modbus TCP<->RTU
  • NTRIP client — передача данных от GPS

Выбор режима работы serial-портов в роутере Termit CR41P
Выбор режима работы serial-портов

GPS

Модуль GPS встроен в чип модема и доступен как USB устройство. Позволяет отслеживать координаты устройства и синхронизировать системные часы по GPS, при этом роутер может быть NTP-сервером и предоставлять точное время для устройств в сети, даже без интернета. Есть функция Geofencing, позволяющая задать географическую зону в качестве триггера, который срабатывает при посещении зоны или ухода из неё. Может быть полезно для роуминга, при покидании домашнего региона. Зону можно определить только одну, и только в радиусе от точки, то есть зона всегда представляет собой круг.


Настройка географической зоны для срабатывания триггера

Вывод dmesg

000000] Linux version 3. [ 0. 44 (gediminas@gediminas-H110M-S2H) (gcc version 4. 18. 3 (OpenWrt/Linaro GCC 4. 8. 04 r40569) ) #14 Fri May 25 15:09:41 EEST 2018
[ 0. 8-2014. 000000] bootconsole [early0] enabled
[ 0. 000000] MyLoader: sysp=30fe861a, boardp=21046795, parts=5c8953fe
[ 0. 000000] SoC: Atheros AR9344 rev 3
[ 0. 000000] CPU0 revision is: 0001974c (MIPS 74Kc)
[ 0. 000000] memory: 08000000 @ 00000000 (usable)
[ 0. 000000] Determined physical RAM map:
[ 0. 000000] Zone ranges:
[ 0. 000000] Initrd not found or empty — disabling initrd
[ 0. 000000] Movable zone start for each node
[ 0. 000000] Normal [mem 0x00000000-0x07ffffff][ 0. 000000] node 0: [mem 0x00000000-0x07ffffff][ 0. 000000] Early memory node ranges
[ 0. 000000] On node 0 totalpages: 32768
[ 0. 000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff][ 0. 000000] Normal zone: 256 pages used for memmap
[ 0. 000000] free_area_init_node: node 0, pgdat 803802b0, node_mem_map 81000000
[ 0. 000000] Normal zone: 32768 pages, LIFO batch:7
[ 0. 000000] Normal zone: 0 pages reserved
[ 0. 000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[ 0. 000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0. 000000] pcpu-alloc: [0] 0
[ 0. 000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0. Total pages: 32512
[ 0. 000000] Built 1 zonelists in Zone order, mobility grouping on. 000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0. 000000] Kernel command line: board=TLT-RUT900 console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd lpj=1370112 quiet loglevel=3
[ 0. 000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0. 000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0. 000000] Readback ErrCtl register=00000000
[ 0. 000000] Writing ErrCtl register=00000000
[ 0. 000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0. 000000] Memory: 125728K/131072K available (2611K kernel code, 155K rwdata, 552K rodata, 256K init, 189K bss, 5344K reserved)
[ 0. 000000] Clocks: CPU:550. 000000] NR_IRQS:83
[ 0. 000MHz, AHB:200. 000MHz, DDR:400. 000MHz
[ 0. 000MHz, Ref:40. 02 BogoMIPS (lpj=1370112)
[ 0. 000000] Calibrating delay loop (skipped) preset value… 274. 000000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0. 000000] pid_max: default: 32768 minimum: 301
[ 0. 000000] NET: Registered protocol family 16
[ 0. 000000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0. 450000] pca953x 0-0074: interrupt support not compiled in
[ 0. 000000] MIPS: machine is TELTONIKA TLT-RUT900
[ 0. 0: using pins 17 (SDA) and 16 (SCL)
[ 0. 450000] i2c-gpio i2c-gpio. 450000] NET: Registered protocol family 2
[ 0. 450000] Switched to clocksource MIPS
[ 0. 450000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0. 450000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0. 450000] TCP: reno registered
[ 0. 450000] TCP: Hash tables configured (established 1024 bind 1024)
[ 0. 450000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0. 450000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0. 450000] PCI: CLS 0 bytes, default 32
[ 0. 450000] NET: Registered protocol family 1
[ 0. 460000] squashfs: version 4. 460000] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0. 460000] jffs2: version 2. 0 (2009/01/31) Phillip Lougher
[ 0. 460000] msgmni has been set to 245
[ 0. 2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) © 2001-2006 Red Hat, Inc.
[ 0. 460000] io scheduler deadline registered (default)
[ 0. 460000] io scheduler noop registered
[ 0. 460000] console [ttyS0] disabled
[ 0. 460000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[ 0. 0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 2500000) is a 16550A
[ 0. 480000] serial8250. 480000] bootconsole [early0] disabled
[ 0. 480000] console [ttyS0] enabled
[ 0. 0: ttyATH0 at MMIO 0x18500000 (irq = 14, base_baud = 2500000) is a AR934X UART
[ 0. 480000] ar934x-hs-uart. 0: found gd25q128, expected m25p80
[ 0. 500000] m25p80 spi0. 0: gd25q128 (16384 Kbytes)
[ 0. 500000] m25p80 spi0. 0
[ 0. 500000] 7 teltonika partitions found on MTD device spi0. 0»:
[ 0. 500000] Creating 7 MTD partitions on «spi0. 500000] 0x000000020000-0x000000030000: «config»
[ 0. 500000] 0x000000000000-0x000000020000: «u-boot»
[ 0. 500000] 0x000000040000-0x0000001630ac: «kernel»
[ 0. 500000] 0x000000030000-0x000000040000: «art»
[ 0. 500000] mtd: device 4 (rootfs) set to be root filesystem
[ 0. 500000] 0x0000001630ac-0x000000f70000: «rootfs»
[ 0. 510000] 0x000000b30000-0x000000f70000: «rootfs_data»
[ 0. 510000] 1 squashfs-split partitions found on MTD device rootfs
[ 0. 510000] 0x000000f70000-0x000001000000: «event-log»
[ 0. 510000] 0x000000040000-0x000000f70000: «firmware»
[ 0. 110000] ag71xx-mdio. 520000] libphy: ag71xx_mdio: probed
[ 1. 140000] eth0: Atheros AG71xx at 0xba000000, irq 5, mode:GMII
[ 1. 1: Found an AR934X built-in switch
[ 1. 0: connected to PHY at ag71xx-mdio. 730000] ag71xx ag71xx. 730000] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode:MII
[ 1. 1:04 [uid=004dd042, driver=Generic PHY][ 1. 740000] NET: Registered protocol family 17
[ 1. 740000] TCP: cubic registered
[ 1. Update your scripts to load br_netfilter if you need this.
[ 1. 740000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. 740000] 8021q: 802. 740000] Bridge firewalling registered
[ 1. 8
[ 1. 1Q VLAN Support v1. 750000] Freeing unused kernel memory: 256K (803a0000 — 803e0000)
[ 5. 750000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[ 1. 030000] usbcore: registered new interface driver hub
[ 5. 030000] usbcore: registered new interface driver usbfs
[ 5. 050000] SCSI subsystem initialized
[ 5. 030000] usbcore: registered new device driver usb
[ 5. 0 'Enhanced' Host Controller (EHCI) Driver
[ 5. 050000] ehci_hcd: USB 2. 050000] ehci-platform ehci-platform: EHCI Host Controller
[ 5. 050000] ehci-platform: EHCI generic platform driver
[ 5. 060000] ehci-platform ehci-platform: TX-TX IDP fix enabled
[ 5. 050000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
[ 5. 080000] ehci-platform ehci-platform: USB 2. 060000] ehci-platform ehci-platform: irq 3, io mem 0x1b000000
[ 5. 00
[ 5. 0 started, EHCI 1. 0: USB hub found
[ 5. 080000] hub 1-0:1. 0: 1 port detected
[ 5. 080000] hub 1-0:1. 090000] usbcore: registered new interface driver usb-storage
[ 5. 080000] uhci_hcd: USB Universal Host Controller Interface driver
[ 5. 550000] hub 1-1:1. 400000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[ 5. 550000] hub 1-1:1. 0: USB hub found
[ 5. 830000] usb 1-1. 0: 3 ports detected
[ 5. 620000] mount_root: loading kmods from internal overlay
[ 7. 1: new full-speed USB device number 3 using ehci-platform
[ 6. 080000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
[ 7. 080000] jffs2: notice: (339) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[ 7. 240000] jffs2: notice: (336) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[ 7. 130000] block: extroot: not configured
[ 7. 480000] block: extroot: not configured
[ 7. 430000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
[ 7. 980000] random: ubusd urandom read with 18 bits of entropy available
[ 11. 480000] mount_root: switching to jffs2 overlay
[ 9. 410000] ntfs: driver 2. 260000] NET: Registered protocol family 10
[ 11. 31 [Flags: R/O MODULE].
[ 11. 1. 430000] NET: Registered protocol family 15
[ 11. 430000] Initializing XFRM netlink socket
[ 11. 6
[ 11. 440000] tun: Universal TUN/TAP device driver, 1. 500000] l2tp_core: L2TP core driver, V2. 440000] tun: © 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 11. 500000] l2tp_netlink: L2TP netlink interface
[ 11. 0
[ 11. 510000] ip_gre: GRE over IPv4 tunneling driver
[ 11. 510000] gre: GRE over IPv4 demultiplexor driver
[ 11. 580000] nf_conntrack version 0. 540000] ip6_tables: © 2000-2006 Netfilter Core Team
[ 11. 0 (1968 buckets, 7872 max)
[ 12. 5. 130000] ppdev: user-space parallel port driver
[ 12. 110000] lp: driver loaded but no devices found
[ 12. 290000] input device check on
[ 12. 290000] u32 classifier
[ 12. 330000] Mirror/redirect action on
[ 12. 290000] Actions configured
[ 12. 1:1. 460000] cdc_acm 1-1. It is not a modem.
[ 12. 0: This device cannot do calls on its own. 1:1. 460000] cdc_acm 1-1. 460000] usbcore: registered new interface driver cdc_acm
[ 12. 0: ttyACM0: USB ACM device
[ 12. 470000] usbcore: registered new interface driver cdc_wdm
[ 12. 460000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 12. 4-rc5-1913-gc8fdf68
[ 12. 500000] Loading modules backported from Linux version v4. 690000] Ebtables v2. 500000] Backport generated by backports.git backports-20151218-0-g2f58d9d
[ 12. 730000] ip_tables: © 2000-2006 Netfilter Core Team
[ 12. 0 registered
[ 12. 30.
[ 12. 820000] Netfilter messages via NETLINK v0. 890000] usbcore: registered new interface driver usbserial
[ 12. 850000] usbcore: registered new interface driver usblp
[ 12. 890000] usbserial: USB Serial support registered for generic
[ 12. 890000] usbcore: registered new interface driver usbserial_generic
[ 12. 050000] xt_time: kernel timezone is -0000
[ 13. 960000] xt_coova: ready
[ 13. 050000] usbserial: USB Serial support registered for ark3116
[ 13. 050000] usbcore: registered new interface driver ark3116
[ 13. 060000] usbserial: USB Serial support registered for Belkin / Peracom / GoHubs USB Serial Adapter
[ 13. 060000] usbcore: registered new interface driver belkin_sa
[ 13. 170000] usbcore: registered new interface driver cdc_ncm
[ 13. 090000] usbcore: registered new interface driver cdc_ether
[ 13. 860000] usbserial: USB Serial support registered for ch341-uart
[ 13. 860000] usbcore: registered new interface driver ch341
[ 13. 860000] usbserial: USB Serial support registered for cp210x
[ 13. 860000] usbcore: registered new interface driver cp210x
[ 13. 860000] usbserial: USB Serial support registered for DeLorme Earthmate USB
[ 13. 860000] usbcore: registered new interface driver cypress_m8
[ 13. 860000] usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
[ 13. 860000] usbserial: USB Serial support registered for HID->COM RS232 Adapter
[ 13. 880000] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 13. 880000] usbcore: registered new interface driver ftdi_sio
[ 13. 900000] usbcore: registered new interface driver keyspan
[ 13. 880000] usbcore: registered new interface driver huawei_cdc_ncm
[ 13. 900000] usbserial: USB Serial support registered for Keyspan 1 port adapter
[ 13. 900000] usbserial: USB Serial support registered for Keyspan — (without firmware)
[ 13. 900000] usbserial: USB Serial support registered for Keyspan 4 port adapter
[ 13. 900000] usbserial: USB Serial support registered for Keyspan 2 port adapter
[ 13. 93: registering with nfnetlink.
[ 14. 990000] ctnetlink v0. 020000] usbserial: USB Serial support registered for pl2303
[ 14. 020000] usbcore: registered new interface driver pl2303
[ 14. 4. 030000] PPP generic driver version 2. 040000] PPP MPPE Compression module registered
[ 14. 2
[ 14. 040000] PPTP driver version 0. 040000] NET: Registered protocol family 24
[ 14. 5
[ 14. 8. 140000] l2tp_ppp: PPPoL2TP kernel driver, V2. 050000] usbcore: registered new interface driver qmi_wwan
[ 14. 140000] usbcore: registered new interface driver option
[ 14. 0
[ 14. 160000] usbcore: registered new interface driver qcserial
[ 14. 140000] usbserial: USB Serial support registered for GSM modem (1-port)
[ 14. 200000] ath: EEPROM regdomain: 0x0
[ 14. 160000] usbserial: USB Serial support registered for Qualcomm USB modem
[ 14. 200000] ath: doing EEPROM country->regdmn map search
[ 14. 200000] ath: EEPROM indicates default country code should be used
[ 14. 200000] ath: Country alpha2 being used: US
[ 14. 200000] ath: country maps to regdmn code: 0x3a
[ 14. 210000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 14. 200000] ath: Regpair used: 0x3a
[ 14. 280000] mmc_spi spi0. 210000] ieee80211 phy0: Atheros AR9340 Rev:3 mem=0xb8100000, irq=47
[ 14. 2-3. 1: ASSUMING 3. 330000] mmc_spi spi0. 4 V slot power
[ 17. 330000] mmc_spi spi0. 1: SD/MMC host mmc0, no DMA, no WP, no poweroff
[ 17. 330000] mmc0: error -22 whilst initialising SDIO card
[ 17. 1: no support for card's volts
[ 17. 1: no support for card's volts
[ 17. 330000] mmc_spi spi0. 340000] mmc_spi spi0. 330000] mmc0: error -22 whilst initialising SD card
[ 17. 340000] mmc0: error -22 whilst initialising MMC card
[ 20. 1: no support for card's volts
[ 17. 3: new high-speed USB device number 4 using ehci-platform
[ 20. 700000] usb 1-1. 3:1. 920000] option 1-1. 920000] usb 1-1. 0: GSM modem (1-port) converter detected
[ 20. 930000] option 1-1. 3: GSM modem (1-port) converter now attached to ttyUSB0
[ 20. 1: GSM modem (1-port) converter detected
[ 20. 3:1. 3: GSM modem (1-port) converter now attached to ttyUSB1
[ 20. 940000] usb 1-1. 3:1. 950000] option 1-1. 950000] usb 1-1. 2: GSM modem (1-port) converter detected
[ 20. 960000] option 1-1. 3: GSM modem (1-port) converter now attached to ttyUSB2
[ 20. 3: GSM modem (1-port) converter detected
[ 20. 3:1. 3: GSM modem (1-port) converter now attached to ttyUSB3
[ 21. 970000] usb 1-1. 3:1. 000000] qmi_wwan 1-1. 000000] qmi_wwan 1-1. 4: cdc-wdm0: USB WDM device
[ 21. 4: Quectel EC21&EC25&EC20 R2. 3:1. 010000] qmi_wwan 1-1. 0 work on RawIP mode
[ 21. 4 wwan0: register 'qmi_wwan' at usb-ehci-platform-1. 3:1. 600000] jffs2: notice: (1621) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[ 28. 3, WWAN/QMI device, 3a:a9:1d:1a:9e:d9
[ 25. 890000] br-lan: port 1(eth0) entered forwarding state
[ 28. 880000] device eth0 entered promiscuous mode
[ 28. 010000] br-lan: port 1(eth0) entered disabled state
[ 34. 890000] br-lan: port 1(eth0) entered forwarding state
[ 30. 420000] br-lan: port 2(wlan0) entered forwarding state
[ 34. 410000] device wlan0 entered promiscuous mode
[ 34. 460000] br-lan: port 2(wlan0) entered disabled state
[ 41. 420000] br-lan: port 2(wlan0) entered forwarding state
[ 34. 530000] br-lan: port 2(wlan0) entered forwarding state
[ 43. 530000] br-lan: port 2(wlan0) entered forwarding state
[ 41. 350000] Ports leds ON
[ 54. 530000] br-lan: port 2(wlan0) entered forwarding state
[ 51. 390000] random: nonblocking pool is initialized

Настройка WAN

Интерфейс настройки приоритетов интернет-каналов. Можно выбрать один основной и два резервных. В нашем случае, модем выбран основным, а проводной WAN резервным.

Можно выбрать основной и резервные
Настройка приоритетов интернет-каналов.

Система мониторинга проверяет доступность интернета в каждом канале с помощью ping-запросов на заданный хост. Нужно иметь в виду, что модем (радиомодуль) в роутере один, и только одна SIM-карта может быть одномоментно в сети. Условия переключения SIM-карт настраиваются отдельно, и не зависят от общего мониторинга. При этом нельзя проверить, на какой из двух SIM-карт есть интернет, можно только переключить на другой канал: проводной или Wi-Fi.

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

Пакет multiwan может только переключать основной сетевой интерфейс. Так как мониторинг доступности (пакет multiwan из openwrt) воспринимает модем как один интерфейс, он не может инициировать переключение SIM-карты в случае недоступности интернета на модеме. То есть, в некоторых случаях, модем может не переключить SIM-карту, даже если на ней нет интернета. Условия переключения SIM-карты настраиваются отдельно, и среди условий можно выбрать только следующее: слабый сигнал, лимит трафика, роуминг, нет сети, отсутствует подключение PPP. В таком случае, ни одно условие переключения SIM-карты не будет выполнено, так как формально связь с оператором есть. Например, если у оператора сбой в сети, при этом на модеме есть IP-адрес, или если оператор заблокировал доступ в сеть за неуплату, и редиректит запрос на заглушку с интерфейсом оплаты.


Настройка условий переключения между SIM-картами не работает в связке с мониторингом доступности интернета

Симуляция аварии

Нам не удалось придумать способ программно симулировать условия для переключения SIM-карты на резервную в этом роутере, поэтому мы будем проверять переключение на резервный проводной канал. Для этого отключим антенны от роутера и посмотрим на график. Время переключения составляет в среднем 12-15 секунд, с учетом восстановления VPN-подключения. Можно сократить это время, уменьшив интервал проверок и число потерянных пакетов для срабатывания переключения, но слишком агрессивные настройки мониторинга будут часто вызывать ложные срабатывания, когда связь пропала всего на пару секунд.


Время переключения на резервный канал составляет около 15 секунд

Вывод

Роутер с большим количеством дополнительных функций. Интересно выполнена работа с модулем I/O: есть аналоговые и цифровые выводы, силовое реле. Можно управлять выводами удаленно и настроить триггеры. Это позволяет на одном лишь роутере построить простую автоматизацию с внешней периферией. Например, управлять теплицей или обогревом помещения.

Плюсы

  • Много дополнительных функций
  • Открытая платформа OpenWRT
  • Поддержка LTE Cat 4
  • Три типа WAN: модем, Ethernet, WiFi

Минусы

  • Нельзя указать разные адреса мониторинга для каждой SIM-карты
  • Условия переключения на резервную SIM-карту вынесены отдельно от мониторинга доступности интернета

Robustel R2000

Роутер предоставлен компанией Евромобайл (euromobile.ru)

SoC: Atheros 533MHz
RAM: 64MB
Flash память: 16MB
Модем: Huawei ME909s-120 (LTE Cat 4)
Прошивка: закрытая, на основе Linux

Только один из LAN-портов может выполнять роль WAN. Роутер с двумя Ethernet-портами и минимумом функций. Консоль ограничена своим интерпретатором с несколькими командами (подобно устройствам Ubiquiti). Прошивка закрытая, root доступа по SSH нет.

Обзор веб-интерфейса

VPN

Прошивка поддерживает протоколы OpenVPN и IPsec IKEv2.


Интерфейс настройки IPsec-тоннеля


Интерфейс настройки OpenVPN-тоннеля

Логирование

Есть поддержка удаленного логирования через syslog

Можно установить триггеры на системные события и посылать уведомления по email и SMS

User LED

Индикацию на передней панели можно настроить на разные события. Например, показывать подключен VPN или нет.

Настройка WAN

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

  • Cold backup: активен только основной канал, резервные каналы отключаются
  • Warm backup: резервные каналы активны, используется только основной (невозможно активировать две SIM одновременно)
  • Load balancing: Используются оба канала одновременно

В настройках по-умолчанию почему-то отключено возвращение на основной канал после переключения на резервный. Это задается в Revert Interval, при установке в ноль, канал никогда не переключится назад после перехода на резервный.


Настройка приоритетов и режимов WAN

Для каждого интерфейса можно отдельно настроить адрес для проверки доступности интернета, и свои интервалы. Каждая SIM-карта настраивается как отдельный интерфейс: WWAN1 и WWAN2. Это полезно для защиты от ложных срабатываний, когда проверочный хост упал, но интернет при этом есть. Это единственный роутер в обзоре, где можно указать сразу два хоста для проверки.


Каждой SIM-карте можно установить свои настройки для проверки доступности интернета

Соответственно никакие самодельные скрипты и пакеты на роутер установить не получится, вся функциональность строго ограничена возможностями родной прошивки. Прошивка роутера не предполагает root-доступа к системе, поэтому без вскрытия корпуса мне не удалось выяснить, на каком чипсете сделано устройство. Есть возможность установить несколько дополнительных пакетов из родного репозитория robustel.com/products/app-center/, но это не сравнится с набором пакетов из репозитория OpenWRT.

С другой стороны, такая закрытость системы может быть полезна для защиты от неконтролируемых изменений прошивки, которые потом нельзя увидеть в веб-интерфейсе.

Симуляция аварии

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


Переключение на вторую SIM-карту занимает 15-30 секунд

Полагаю, что больше всего времени занимает регистрация в сети второго оператора. В среднем роутер переключается на вторую SIM-карту за 15-30 секунд. Существуют промышленные роутеры с двумя независимыми модемами, которые одновременно подключены к двум мобильным операторам. Так как во всех наших роутерах используется один модем, одномоментно в сети может находится только одна SIM-карта. В таком случае переключение канала происходит быстрее.

Вывод

Компактный и простой роутер с минимумом функций, простой в настройке. Закрытая платформа и отсутсвие root-доступа может кому-то помешать. Можно рекомендовать для случаев, когда простота настройки важнее.

Плюсы

  • Отдельные настройки failover для каждой SIM-карты
  • Поддержка LTE Cat 4
  • Режим «Warm backup», в котором резервный канал не отключается
  • Простота настройки

Минусы

  • Закрытая платформа, нет root-доступа
  • Урезанная SSH-консоль
  • Только один Ethernet-порт может работать как WAN

iRZ RU22W

Роутер предоставлен компанией Цифровой Ангел (digitalangel.ru)

11n (2. SoC: MediaTek MT7620A ver:2 eco:6
RAM: 64
Flash память: 16
Wi-Fi: 802. 05 4GHz)
Модем: Huawei MU709s-2
Поддержка карт MicroSD
GPS
Прошивка: на базе OpenWRT 15.

Есть поддержка GPS, Wi-Fi и последовательных интерфейсов. Роутер без поддержки LTE, поддерживаются только 3G-стандарты HSPA+/UMTS (900/2100 MHz) и 2G GSM/GPRS (850/900/1800/1900 MHz), при этом самый дорогой. Wi-Fi может работать в режиме станции (клиента), и также быть WAN. По-умолчанию все Ethernet-порты объединены в один коммутатор, при желании каждый порт можно выделить в отдельный VLAN и использовать его как WAN. Неплохо. Суммарно, с двумя SIM-картами это позволяет получить 7 WAN-интерфейсов.

Обзор веб-интерфейса

Веб-интерфейс


Главная страница, доступная без авторизации, показывает состояние интерфейсов, таблицу маршрутизации, IMEI, и много другой информации.

Сканирования сетей нет, нужно явно указывать SSID вручную.
Wi-Fi-интерфейс может работать в режиме точки доступа (AP) или клиента (Station).

VPN

OpenVPN поддерживается полностью, а вот IPSec — нет. Есть только Cisco IPSec, при этом нет IKEv2.

Интерфейс настройки Cisco IPSec не поддерживает протокол IKEv2

Есть поддержка Ethernet over IP

RS-232/485

Последовательные интерфейсы можно настроить только в режиме serial over ip и конвертера modbus TCPRTU. Режим AT-модема через последовательный порт недоступен.

GPIO

Работа c GPIO сделана странно. Можно только переключать состояния из веб-интерфейса, при этом нельзя создать триггеры, вызываемые по изменению состояния. Возможно, есть какое-то API, реализованное через фирменный софт, не знаю. Нельзя даже переименовать нужные пины. Пользы от такого управления не вижу.

Настройка WAN

Можно выбрать один из двух режимов: failover и балансировка. Приоритеты интерфейсов выбираются в меню Routes. Первый переключит канал на резервный интерфейс в случае недоступности основного, а второй распределит трафик поровну между интерфейсами, на уровне NAT.

Например, сервис /usr/bin/pinger посылает пинги, переключает интерфейсы и управляет светодиодами. Мониторинг доступности и аварийное переключение интерфейсов сделано с помощью самодельных bash-скриптов компании iRZ. Довольно суровый башизм 🙂

Настройка SIM-карт

Для каждой SIM-карты можно установить свой хост проверки связи. Это удобно для случаев, когда мы хотим выбрать разные сервера, в зависимости от оператора связи. Например, в роуминге мы используем один сервер, а в домашнем регионе другой.


Можно установить разные хосты, до которых будет проверяться связь, для каждой SIM-карты

GPS

Я не нашел возможности как-либо задействовать GPS-модуль, кроме как через gpsctl из консоли. В веб-интерфейсе вообще нет его упоминания. Полагаю, что он задействуется через родные облачные сервисы для централизованного управления роутерами. Невозможность использовать API GPS самостоятельно считаю недостатком.

Симуляция аварии

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

Не уверен, связано ли это с модемом или с особенностями мобильного оператора. Из нескольких попыток среднее время переключения составляет 30 секунд, иногда вторая SIM-карта долго регистрируется, и переключение растягивается на минуту.

Вывод

Понравилась возможность получить целых 4 проводных WAN и отдельные настройки failover для каждой SIM-карты. Осталось непонятным назначение GPS-модуля, воспользоваться им без стороннего софта не получилось.

Плюсы

  • Открытая платформа на базе OpenWRT
  • Отдельные настройки failover для каждой SIM-карты
  • Все LAN-порты могут работать как WAN

Минусы

  • Нет поддержки IPsec IKEv2
  • Непонятно, как пользоваться GPS и выводами GPIO без стороннего софта

Заключение

На мой взгляд, специализированные промышленные решения намного удобнее самодельных конструкций на базе SOHO-роутера. Хотя в большинстве случаев используется та же прошивка OpenWRT, все нюансы уже учтены, настройка сводится к установке нескольких параметров в веб-интерфейсе, и не нужно самому писать костыли типа watchdog-скриптов, все уже есть из коробки.

Дополнительные функции вроде GPIO и модуля GPS позволяют, во многих случаях, обойтись одним устройством вместо двух, для простых задач автоматизации и сбора данных.

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Киберпреступники пять месяцев контролировали ASUS Live Update

Злоумышленники разместили на сервере вредоносный файл с бэкдором, подписанный валидным сертификатом ASUS. Как сообщает «Лаборатория Касперского», хакеры из APT-группировки ShadowHammer 5 месяцев контролировали сервис обновлений ASUS Live Update и заразили более полумиллиона компьютеров по всему миру.Исследователи из «Лаборатории Касперского» обнаружили, ...

Kubernetes 1.14: обзор основных новшеств

14. Этой ночью состоится очередной релиз Kubernetes — 1. По сложившейся для нашего блога традиции, рассказываем о ключевых изменениях в новой версии этого замечательного Open Source-продукта. 14 и сооветствующих issues, pull requests, Kubernetes Enhancement Proposals (KEP). Информация, использованная для подготовки ...