Во многих системах связь с интернетом критически важна, и даже несколько минут простоя могут дорого стоить, например, в банкоматах, сигнализациях, системах мониторинга и контроля доступа.
В таких системах обычно используется несколько подключений к интернету и автоматическое переключение между разными каналами в случае недоступности основного канала.
Мне надоело самостоятельно изобретать failover на USB модемах, и захотелось делегировать это отдельной умной железке. Я решил сравнить несколько промышленных роутеров, чтобы выяснить, оправдывают ли они свое название, и насколько они лучше моих костылей. В статье будут сравниваться роутеры производителей iRZ, Termit, Robustel.
Основные требования к роутерам:
- 2 SIM-карты и автоматическое переключение между операторами — роутер должен автоматически определять потерю связи на одном операторе и переключаться на резервного. Это особенно важно для подвижных систем, когда покрытие сотовой сети не идеально.
- Подключение по Ethernet — основная система должна видеть только шлюз по умолчанию, и не должна знать о модемной подсистеме на стороне роутера и переключениях каналов, поэтому никаких USB.
- Поддержка современных протоколов VPN: IKEv2 и OpenVPN — для удобства администрирования, и чтобы не зависеть от реальных IP-адресов, роутеры должны уметь VPN. При этом поддерживать не только устаревшие PPTP и L2TP, но и современные протоколы.
- (Опционально) поддержка GPS, наличие GPIO, serial интерфейсов RS-232/485 — эти функции не обязательны для наших задач, но мы рассмотрим их тоже, как бонус, который, возможно, будет кому-то полезен.
Проблема самодельных костылей
Failover — аварийное переключение интернет-канала на резервный, в случаях недоступности основного.
Обычно, для резервирования интернет-каналов я использовал бытовой Wi-Fi-роутер с прошивкой OpenWRT, и пакет mwan3. Он позволяет настроить автоматическое резервирование и балансировку между несколькими интернет-каналами, в том числе, между проводным подключением и USB-модемом.
Главный недостаток такого подхода — в разнородном оборудовании и хлипкой конструкции внешних USB-модемов. Мне нравились модемы Huawei E3372h с прошивкой HiLink (эмуляция Ethernet). Эти модемы достаточно стабильные и дешевые, но, при подключении внешних антенн, вся конструкция становится очень хлипкой. Жесткие провода антенны создают рычаг, и модемы банально вылазят из USB-порта, да и сам антенный разъем CRC9 не так надежен, как SMA, потому что не имеет резьбового крепления.
Конструкцию из двух USB-модемов с внешними антеннами приходилось очень жестко фиксировать, но все равно физические повреждения и выпадение из портов были главной проблемой. Такое решение подходит для статического монтажа в труднодоступных местах, но совершенно не подходит для установки в автомобиль или в электрощит на DIN-рейку.
Иногда в роутерах зависала подсистема USB, и модемы становились недоступны. Пришлось писать watchdog-скрипт, который бы отдельно следил за доступностью модемов, помимо mwan3, следящим за доступностью интернета. В какой-то момент мне это надоело, и я стал искать решение в одной коробочке, где все проблемы уже решили за меня.
Сравнительная таблица моделей
Промышленные роутеры дороже бытовых, даже с учетом отдельной покупки модемов. Поэтому главным критерием выбора моделей для обзора была стоимость. Дополнительные функции вроде Wi-Fi, выводов GPIO и системы GPS в нашем случае не нужны, но мы все равно сравним их как опции, влияющие на стоимость.
сновном. Для этого будем симулировать потерю связи, и замерять на стороне сервера, как быстро роутер смог восстановить связь.
В качестве целевого хоста к каждому тестируемому роутеру будет подключен маленький роутер TP-Link MR3020, который будет выполнять роль компьютера с полезной нагрузкой. На нем будет запущен OpenVPN, подключенный к серверу. На сервере будет запущен мониторинг, следящий за доступностью адреса внутри VPN-тоннеля.
То есть, на стороне сервера будет мониториться один фиксированный IP-адрес, назначенный на mr3020 через VPN-тоннель. Независимо от того, через какой канал идет трафик на роутере, сервер мониторинга будет взаимодействовать с одним адресом. Соответственно, если адрес доступен, это значит, что роутер успешно переключил канал, и в сети за NAT-ом есть интернет.
Чтобы OpenVPN-тоннель восстанавливался максимально быстро, на стороне сервера установим опцию keep-alive на минимальные значения, и отключим шифрование:
cipher none ping 1 ping-restart 4
Нужно учитывать, что на переподключение VPN уходит время, и в реальности интернет восстанавливается быстрее, чем видно на графиках. Однако такой тест позволяет более честно оценить факт переключения канала, так как показывает, что клиенты за роутером смогли восстановить TCP-подключения и вернуться к штатной работе.
PingPlotter — программа для мониторинга
Программа мониторинга и сервер OpenVPN находятся на одном физическом компьютере с VPN-сервером. Мониторить я буду утилитой MultiPing, с помощью обычных ICMP Echo-запросов. Интервал запросов — 1 секунда — это позволяет видеть на графике даже кратковременную недоступность хоста.
Признаюсь, я долго пытался выбрать систему мониторинга. Пробовал zabbix, cacti, скрипты на bash + rrdtool, но все это показалось слишком переусложненным для моих задач. В итоге я нашел прекрасную программу PingPlotter и ее упрощенный вариант без трассировки маршрута — MultiPing. Программа позволяет в реальном времени мониторить группу хостов с разрешением вплоть до 1 секунды, и рисовать подробные графики.
Антенна
Чтобы исключить разное качество приема из-за разных антенн, ко всем роутерам будут подключены одинаковые антенны Триада MA-2697. По заверениям производителя, антенна широкополосная, и работает в диапазонах GSM-9001800 МГц, 3G-2100 МГц, Wi-Fi-2400МГц и 4G WiMAX-2600МГц. Проверять качество антенны я не буду. Даже если она плохая, все роутеры будут работать в одинаковых условиях приёма.
Мобильные операторы
В каждый роутер будут установлены SIM-карты Мегафон и МТС, с обычным тарифом для физических лиц. Мегафон будет выбран основным, МТС резервным. В таком приоритете нет никакой логики, выбор случайный. В месте проведения тестов оба оператора имеют одинаково хорошее покрытие LTE.
Недостатки тестового стенда
Так как тестовый стенд находится неподвижно в помещении, качество покрытия сотовой сети не изменяется. В таких условиях невозможно искусственно имитировать плохое покрытие, когда сигнал сотовой сети есть, но потери пакетов слишком большие. По-хорошему, нужно было поместить стенд на поезд или автомобиль, и возить по отдаленным от города местам. Тогда можно было бы сравнивать, насколько хорошо встроенные модемы работают с плохим сигналом.
В нашем случае, мы сможем только воссоздать полную потерю связи на основном канале, и наблюдать, как быстро роутер переключится на резервный.
Termit CR41P
Роутер предоставлен компанией
SoC: Atheros AR9344 rev. 3
RAM: 128MB
Flash-память: 16MB
Wi-Fi: 802.11n (2.4GHz)
Модем: Quectel EC25-E (LTE Cat 4)
Прошивка: на базе OpenWRT 15.05.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)
Для установки SIM-карты необходимо раскрутить четыре винта и снять заднюю крышку.
Что ж, это повод рассмотреть внутренности подробнее.
Модемная часть выполнена в виде шилда, который надевается на основную плату.
В углу видно реле для мощной нагрузки, выведенное на пины I/O.
Самый богатый по функциям роутер в обзоре. Имеет проводной WAN, а также позволяет использовать Wi-Fi в режиме станции (клиента), как отдельный WAN. То есть может иметь четыре резервных интернет канала.
Веб-интерфейс сразу выдает LuCI из OpenWRT. Это видно как по дизайну, который не пытались замаскировать, так и по путям в URL. На мой взгляд, это скорее плюс, так как позволяет легко допилить систему под себя. В прошивку добавлены промышленные функции: Modbus, VRRP, MQTT. Через Modbus и MQTT можно управлять базовыми функциями, получать состояние сети, координаты GPS, температуру, переключать профили, перезагружать роутер, управлять пинами I/O.
Мониторинг интернет-каналов сделан через пакет multiwan, который в wiki OpenWRT назван устаревшим. Вместо него рекомендуется mwan3.
Настройка WAN
Интерфейс настройки приоритетов интернет-каналов. Можно выбрать один основной и два резервных. В нашем случае, модем выбран основным, а проводной WAN резервным.
Нужно иметь в виду, что модем (радиомодуль) в роутере один, и только одна SIM-карта может быть одномоментно в сети. Система мониторинга проверяет доступность интернета в каждом канале с помощью ping-запросов на заданный хост. При этом нельзя проверить, на какой из двух SIM-карт есть интернет, можно только переключить на другой канал: проводной или Wi-Fi. Условия переключения SIM-карт настраиваются отдельно, и не зависят от общего мониторинга.
Нужно иметь в виду, что модем (радиомодуль) в роутере один, и только одна SIM-карта может быть одномоментно в сети. Система мониторинга проверяет доступность интернета в каждом канале с помощью ping-запросов на заданный хост. При этом нельзя проверить, на какой из двух SIM-карт есть интернет, можно только переключить на другой канал: проводной или Wi-Fi. Условия переключения SIM-карт настраиваются отдельно, и не зависят от общего мониторинга.
Настройка мониторинга доступности интернет-канала. Можно указать хост, который будет проверяться, интервалы проверок и число попыток
Так как мониторинг доступности (пакет multiwan из openwrt) воспринимает модем как один интерфейс, он не может инициировать переключение SIM-карты в случае недоступности интернета на модеме. Пакет multiwan может только переключать основной сетевой интерфейс. Условия переключения SIM-карты настраиваются отдельно, и среди условий можно выбрать только следующее: слабый сигнал, лимит трафика, роуминг, нет сети, отсутствует подключение PPP. То есть, в некоторых случаях, модем может не переключить SIM-карту, даже если на ней нет интернета. Например, если у оператора сбой в сети, при этом на модеме есть IP-адрес, или если оператор заблокировал доступ в сеть за неуплату, и редиректит запрос на заглушку с интерфейсом оплаты. В таком случае, ни одно условие переключения SIM-карты не будет выполнено, так как формально связь с оператором есть
Симуляция аварии
Нам не удалось придумать способ программно симулировать условия для переключения SIM-карты на резервную в этом роутере, поэтому мы будем проверять переключение на резервный проводной канал. Для этого отключим антенны от роутера и посмотрим на график. Время переключения составляет в среднем 12-15 секунд, с учетом восстановления VPN-подключения. Можно сократить это время, уменьшив интервал проверок и число потерянных пакетов для срабатывания переключения, но слишком агрессивные настройки мониторинга будут часто вызывать ложные срабатывания, когда связь пропала всего на пару секунд.
Вывод
Роутер с большим количеством дополнительных функций. Интересно выполнена работа с модулем I/O: есть аналоговые и цифровые выводы, силовое реле. Можно управлять выводами удаленно и настроить триггеры. Это позволяет на одном лишь роутере построить простую автоматизацию с внешней периферией. Например, управлять теплицей или обогревом помещения.
Плюсы
- Много дополнительных функций
- Открытая платформа OpenWRT
- Поддержка LTE Cat 4
- Три типа WAN: модем, Ethernet, WiFi
Минусы
- Нельзя указать разные адреса мониторинга для каждой SIM-карты
- Условия переключения на резервную SIM-карту вынесены отдельно от мониторинга доступности интернета
Robustel R2000
Роутер предоставлен компанией
SoC: Atheros 533MHz
RAM: 64MB
Flash память: 16MB
Модем: Huawei ME909s-120 (LTE Cat 4)
Прошивка: закрытая, на основе Linux
Роутер с двумя Ethernet-портами и минимумом функций. Только один из LAN-портов может выполнять роль WAN. Прошивка закрытая, root доступа по SSH нет. Консоль ограничена своим интерпретатором с несколькими командами (подобно устройствам Ubiquiti).
Настройка WAN
Есть несколько режимов резервирования и балансировки. Второй вариант может быть полезен для быстрого переключения между каналами.
- Cold backup: активен только основной канал, резервные каналы отключаются
- Warm backup: резервные каналы активны, используется только основной (невозможно активировать две SIM одновременно)
- Load balancing: Используются оба канала одновременно
В настройках по-умолчанию почему-то отключено возвращение на основной канал после переключения на резервный. Это задается в Revert Interval, при установке в ноль, канал никогда не переключится назад после перехода на резервный.
Каждая SIM-карта настраивается как отдельный интерфейс: WWAN1 и WWAN2. Для каждого интерфейса можно отдельно настроить адрес для проверки доступности интернета, и свои интервалы. Это единственный роутер в обзоре, где можно указать сразу два хоста для проверки. Это полезно для защиты от ложных срабатываний, когда проверочный хост упал, но интернет при этом есть.
Прошивка роутера не предполагает root-доступа к системе, поэтому без вскрытия корпуса мне не удалось выяснить, на каком чипсете сделано устройство. Соответственно никакие самодельные скрипты и пакеты на роутер установить не получится, вся функциональность строго ограничена возможностями родной прошивки. Есть возможность установить несколько дополнительных пакетов из родного репозитория robustel.com/products/app-center/, но это не сравнится с набором пакетов из репозитория OpenWRT.
С другой стороны, такая закрытость системы может быть полезна для защиты от неконтролируемых изменений прошивки, которые потом нельзя увидеть в веб-интерфейсе.
Симуляция аварии
Так как мы можем указать разные хосты для проверки доступности каждой SIM-карте, для симуляции аварии мы укажем первой SIM-карте наш подконтрольный сервер, и в какой-то момент отключим его. Для чистоты эксперимента установим интервалы проверки такими же, как у первого роутера в обзоре.
В среднем роутер переключается на вторую SIM-карту за 15-30 секунд. Полагаю, что больше всего времени занимает регистрация в сети второго оператора. Так как во всех наших роутерах используется один модем, одномоментно в сети может находиться только одна SIM-карта. Существуют промышленные роутеры с двумя независимыми модемами, которые одновременно подключены к двум мобильным операторам. В таком случае переключение канала происходит быстрее.
Вывод
Компактный и простой роутер с минимумом функций, простой в настройке. Закрытая платформа и отсутсвие root-доступа может кому-то помешать. Можно рекомендовать для случаев, когда простота настройки важнее.
Плюсы
- Отдельные настройки failover для каждой SIM-карты
- Поддержка LTE Cat 4
- Режим «Warm backup», в котором резервный канал не отключается
- Простота настройки
Минусы
- Закрытая платформа, нет root-доступа
- Урезанная SSH-консоль
- Только один Ethernet-порт может работать как WAN
iRZ RU22W
Роутер предоставлен компанией
SoC: MediaTek MT7620A ver:2 eco:6
RAM: 64
Flash память: 16
Wi-Fi: 802.11n (2.4GHz)
Модем: Huawei MU709s-2
Поддержка карт MicroSD
GPS
Прошивка: на базе OpenWRT 15.05
Роутер без поддержки LTE, поддерживаются только 3G-стандарты HSPA+/UMTS (900/2100 MHz) и 2G GSM/GPRS (850/900/1800/1900 MHz), при этом самый дорогой. Есть поддержка GPS, Wi-Fi и последовательных интерфейсов. По-умолчанию все Ethernet-порты объединены в один коммутатор, при желании каждый порт можно выделить в отдельный VLAN и использовать его как WAN. Wi-Fi может работать в режиме станции (клиента), и также быть WAN. Суммарно, с двумя SIM-картами это позволяет получить 7 WAN-интерфейсов. Неплохо.
Настройка WAN
Приоритеты интерфейсов выбираются в меню Routes. Можно выбрать один из двух режимов: failover и балансировка. Первый переключит канал на резервный интерфейс в случае недоступности основного, а второй распределит трафик поровну между интерфейсами, на уровне NAT.
Мониторинг доступности и аварийное переключение интерфейсов сделано с помощью самодельных bash-скриптов компании iRZ. Например, сервис /usr/bin/pinger посылает пинги, переключает интерфейсы и управляет светодиодами. Довольно суровый башизм 🙂
Настройка SIM-карт
Для каждой SIM-карты можно установить свой хост проверки связи. Это удобно для случаев, когда мы хотим выбрать разные сервера, в зависимости от оператора связи. Например, в роуминге мы используем один сервер, а в домашнем регионе другой.
GPS
Я не нашел возможности как-либо задействовать GPS-модуль, кроме как через gpsctl из консоли. В веб-интерфейсе вообще нет его упоминания. Полагаю, что он задействуется через родные облачные сервисы для централизованного управления роутерами. Невозможность использовать API GPS самостоятельно считаю недостатком.
Симуляция аварии
Мы указали для каждой SIM-карты разные хосты проверки доступности интернета, поэтому можем легко симулировать аварию. Для этого мы заблокируем на фаерволле хост от первой SIM-карты и посмотрим, как роутер отреагирует на это. Для чистоты эксперимента мы установим такие же интервалы проверки и число попыток, как и у первого роутера.
Вывод
Плюсы
- Открытая платформа на базе OpenWRT
- Отдельные настройки failover для каждой SIM-карты
- Все LAN-порты могут работать как WAN
Минусы
- Нет поддержки IPsec IKEv2
- Непонятно, как пользоваться GPS и выводами GPIO без стороннего софта
Заключение
На мой взгляд, специализированные промышленные решения намного удобнее самодельных конструкций на базе SOHO-роутера. Хотя в большинстве случаев используется та же прошивка OpenWRT, все нюансы уже учтены, настройка сводится к установке нескольких параметров в веб-интерфейсе, и не нужно самому писать костыли типа watchdog-скриптов, все уже есть из коробки.
Дополнительные функции вроде GPIO и модуля GPS позволяют, во многих случаях, обойтись одним устройством вместо двух, для простых задач автоматизации и сбора данных.
У всех трех производителей есть свой софт для централизованного управления роутерами. В рамках этой статьи мы его не рассматривали. Он полезен для большого числа установок, и позволяет управлять всеми роутерами из одной контрольной панели. Возможно, стоит изучить этот софт тоже.
Источник: https://habr.com/ru/post/443196/
Больше интересных и полезных статей на нашем форуме по АСУ ТП: https://p4b.su/forums
Тендера фриланс по АСУ ТП: https://p4b.su/projects
Библиотека с технической литературой по промышленной автоматизации: https://p4b.su/library