Chirpstack (anciennement LoRa Server) est un network server LoRaWAN open source distribué sous licence MIT.

Ecrit en Rust depuis sa version 4, il est un des outils les plus robustes et les plus utilisés du marché.

Architecture

Chirpstack fonctionne avec plusieurs composants, ce qui permet de l'installer sous forme d'une architecture micro-services, et donc de faire de la scalaibilité horizontale.

Les composants principaux du systèmes sont les suivants :

  • Chirpstack en lui-même.
  • Une base de données PostegreSQL permettant de stocker les données du parc des tenants, des utilisateurs et des applications.
  • Une base de données à faible latente REDIS, où sont notamment stockées les clefs de sessions, utilisées pour décrypter chaque message reçu.
  • Un broker MQTT (par défaut Mosquitto).
  • Des agents (appelés gateway bridge ou MQTT Packet Forwarder) , installés sur les gateways selon les marques et modèles ou sur le serveur.

Communication avec les gateways

Plusieurs modes de communication permettent aux gateway de dialoguer avec le network server.

Communication UDP, agent installé côté serveur

Le gateway bridge ou le MQTT Packer Forwarder est installé côté serveur. L'ensemble des gateways envoie alors ses données au travers du protocole UDP (Semtech Packer Forwarder ou Basic Station) jusqu'au serveur, puis l'agent envoie les données au network server à travers MQTT (si l'agent est installé sur le même serveur que le network server, TLS n'est pas requis).

Avantages

Cette configuration ne nécessite pas l'installation de l'agent sur les gateways. Elle est très simple à mettre en oeuvre, il suffit simplement de faire pointer l'url du Packet Forwarder vers le serveur.

Inconvénients

La communication UDP n'est pas entièrement sécurisée. Bien que les packets soient nativement cryptés en AES128, comme tous les messages LoRaWAN, certaines informations seront visibles, ouvrant ainsi la porte à du spoofing de gateways. C'est pourquoi cette configuration est déconseillée en production.

Communication MQTT, agent installé côté gateway

Le gateway bridge ou le MQTT Packer Forwarder est installé sur les gateways. La communication entre les gateways et le network server est alors effectué à travers le protocole MQTT. Il est impératif de configurer MQTT sur TLS, afin d'assurer l'intégrité et la sécurité des données. L'authentification se fait par certificats, qui sont générés dans le menu gateway de l'interface de Chirpstack.

Avantages

Cette configuration est la plus adaptée à la production :

  • Elle permet un contrôle fin des données envoyées, notamment grâce au filtrage par NetID ou DevId des paquets, qui peut limiter la consommation de données, notamment lorsqu'une liaison 3/4/5G ou LTE-M est utilisée.
  • Elle offre un niveau de sécurité important pour la communication entre les gateways et le network server.

Inconvénients

La configuration et l'installation des agents sur les gateways est un travail d'expert qui peut être également très consommateur de temps s'il n'est pas automatisé.

Communication mixte

Il est possible de créer des réseaux mixtes, où certaines Gateway utilisent leur propre agent, et où d'autres communiquent en UDP.

Intégration avec des services tiers

Ressources