Александр Уфимцев. Использование Python для управления интернетом вещей
Я расскажу о том, как мы использовали Python для создания Fijoport Server — платформы для доступа к удаленным устройствам и управления интернетом вещей. С живой демонстрацией продукта в работе.
Fijowave Ltd Штаб-квартира: Дублин, Ирландия Работает c 2011 года Специализируется на разработке платформы для Интернета Вещей (IoT) с умным удаленным управлением. 3
Какую проблему решает Fijoport? Установленное у клиентов оборудование, которое нужно обслуживать. Этого оборудования много и/или оно находится далеко географически Клиенты затрудняются установить TeamViewer или подобный софт Сисадмины клиентов просят установить свой клиент ВПН Ваши инженеры, ежедневно проводящие 10-12 часов в разъездах:
Fijoport Server Solution: Overview 5 Internet Bad guys Client Network AES256 + PFS Fijoport Server Corporate Firewall M2M API Users and Operators LAN NAT SysAdmin
Fijoport + Portal Server Унифицированный удалённый доступ Работает в 95% из коробки без модификаций файрвола Интеграция авторизации, права доступа Автоматизация повторяющихся задач (бэкап) Восстановление удаленных систем коммутации и маршрутизации (OOB) 9
Fijoport + Portal Server Унифицированное обновление firmware Встраиваемый виртуальный Fijoport непосредственно в IoT устройства Мониторинг и оповещения Контроль за функциональностью 10
11 Fijoport Products Fijoport Classic Cheap Slow Ethernet Only IP access Only Fijoport 3001 Not Cheap POE Fast Ethernet, 3G, 4G IP and Serial Fijoport Virtual Docker or VM-based Fast Ethernet Only IP access Only FijoSat Not Cheap ++ Fast Ethernet, Satellite IP and Serial (In development with ESA)
Fijoport Server: Schematics 12 Fijoport 1 Fijoport 2 Fijoport N ... Fijoport Server Operators API calls over secure link User sends commands to portal Result Result Automated and scheduled tasks
Fijoport Server: Implementation Details 13 Fijoport 1 Fijoport 2 Fijoport N ... Fijoport Server Operators C Python (Django) Bits of C (for performance) Little JS Some bash scripts C, sh
Fijoport Server: Connectivity 14 Fijoport 1 Fijoport 2 Fijoport N ... Fijoport Server Operators Secure link encrypted by AES256 + PFS Local network IPsec OpenVPN
16 Server Architecture Hardware Server 1 Hardware Server 2 Hardware Server N ... VM 1 VM 2 VM 3 VM N DB cluster File cluster Hardware Platform: Ubuntu Linux LTS Virtual Machines: Ubuntu Linux LTS Virtualisation: KVM DB Cluster: MySQL File Cluster HA: GlusterFS ... Business Logic Layer
17 VM Breakdown apps web qmng lb db gluster mon Connection logic API calls UI / M2M API Handling Async Queue Manager Load Balancer Monitoring Database File Storage Architecture is horizontally scalable, i.e. we can add more servers as needed
APP API 20 Handle Fijoport connects/disconnects Monitor Fijoport Connectivity Establish RAS session (connect/disconnect) Send API calls to Fijoports from web UI and REST API apps
Плагины для сервера Сервер поддерживает плагины для разных типов устройсв В настоящее время добавлена поддержка 10+ устройств (Access, Backup, Monitoring) Типы устройств: PBXы, коммутаторы 22
Трудности разработки и администрирования 24 Firewalls: Неправильно сконфигурированные DPI (слишком “умные” файрволлы) Государственные или корпоративные файрволлы Нестабильные сетевые соединения Заброшенные устройства
Трудности разработки 25 Вечные дебаты: Стабильность работы, безопасность, новые фичи Откуда брать пакеты: Ubuntu, Launchpad, PyPi Рефакторинг и убирание технического долга и новый функционал Как и когда обновлять прошивки на удаленных устройствах Трафик стоит денег vs безопасность
Глобальный Roadmap Оптимизация задержки пакетов на спутниковой связи (ESA проект) Переход на UDP связ (QUIC?) Минимизация трафика между Fijoportами и сервером Минимизация ОЗУ для сервера: Текущее решение создает процесс на каждое подключение 27