Gestione di una rete IoT basta su LoRaWAN tramite The Things Network
La gestione di una rete IoT basata su LoRaWAN necessita ovviamente di un’infrastruttura di gestione su cui gestire centralmente i vari dispositivi e i dati inviati, uno dei primi progetti che ha avuto questo obbiettivo è The Things Network nato nell’agosto 2015 con una prima sperimentazione ad Amsterdam in un progetto per la cura e la gestione delle imbarcazioni nei canali. The Things Network (TTN) si è poi consolidato attraverso una serie numerosa di altre esperienze che ha permesso al progetto di crescere a livello internazionale e ad oggi abbraccia varie città nel mondo fra cui alcune città italiane (a riguardo si veda la pagina dedicata alle Communities).
Per approfondire l’architettura di rete del progetto The Things Network è possibile fare riferimento alla sezione Manage your Applications and Devices or even run parts of the network on your own servers in cui viene illustrato come in una tipica rete IoT il gateway funga da ponte tra specifici protocolli radio e Internet inoltrando i pacchetti IP provenienti dai dispositivi, nel caso in cui questi supportino lo stack IP. Nel caso in cui i dispositivi utilizzino protocolli non IP, come LoRaWAN, è necessaria una qualche forma di routing ed elaborazione prima che i messaggi possano essere consegnati a un’applicazione. The Things Network è posizionato tra i gateway e le applicazioni e si occupa di gestire il routing e l’elaborazione necessarie.
Scendendo nel dettaglio dell’architettura la visione di The Things Network è quella di eseguire tutte le funzioni di routing in modo decentralizzato e distribuito. In questo modo ogni implementazione è in grado di creare la propria rete e la propria parte del back-end e al contempo può partecipare alla rete della comunità globale.
I Device trasmettono messaggi LoRaWAN, tramite il protocollo radio LoRa, i device possono inviare dati sporadicamente (classe A), ricevere dati regolarmente (classe B) o essere in ricezione continua (classe C). Il Gateway è un dispositivo che riceve messaggi LoRa e li inoltra verso il router. Il Router è un microservizio responsabile della gestione dello stato del gateway e della programmazione delle trasmissioni. A sua volta ogni router è connesso a uno o più Broker che rappresentano la parte centrale di The Things Network, il broker è un microservizio che identifica il device, deduplica il traffico e invia il pacchetto all’handler su cui l’applicazione è registrata. I broker si occupano di associare un dispositivo a un’applicazione e di inoltrare i messaggi di uplink all’applicazione corretta e di inoltrare i messaggi di downlink al router corretto che a sua volta li inoltra a un gateway. Un Handler è un microservizio responsabile della gestione dei dati di una o più applicazioni e per svolgere tale compito si connette a un Broker in cui registra applicazioni e dispositivi. L’Handler è anche il punto in cui i dati vengono crittografati o decrittografati.
In base al traffico di rete sarà necessario valutare quanti gateway utilizzare per garantire scalabilità e ridondanza. Con più gateway infatti è possibile ridurre la distanza rispetto ai device e quindi aumentare la velocità di trasferimento dati e quindi ridurre il tempo di trasmissione e l’utilizzo del canale, con un effetto esponenziale sulla capacità della rete grazie all’utilizzo dell’algoritmo ADR (Adaptive Data Rate) che esegue lo scaling automatico.
Oltre ai componenti di rete l’architettura è composta anche dal Network Server su cui è mantenuto il device registry e tiene traccia degli stati dei device, mentre il Discovery Server tiene traccia dei vari componenti che sono registrati nella rete.
The Things Network Foundation ospita questi componenti che possono essere utilizzati da chiunque gratuitamente, mentre i partners possono contribuire affiancando ai componenti open source dei componenti aggiuntivi rispetto a quelli open source per migliorare la gestione, la sicurezza e fornire integrazioni aggiuntive. L’obiettivo di The Things Network è quello di essere molto flessibile in termini di opzioni di implementazione e di connettersi preferibilmente alla rete di comunità pubblica ospitata da The Things Network Foundation, o dai suoi partner, e solitamente l’applicazione si connette ad un Public Community Network Handler utilizzando l’API MQTT.
I microservizi (router, broker e handler) sono scalati orizzontalmente in tutto il mondo per aumentare la ridondanza e mantenere i dati il più vicino possibile ai gateway e alle applicazioni, inoltre nelle regioni geografiche a maggior traffico i microservizi vengono anche ridondati verticalmente. Things Network Foundation lavora con i partner della comunità per distribuire il traffico sull’infrastruttura di rete donata e rispettare i regolamenti che prevedono che in determinati stati i dati non debbano essere portati al di fuori di determinate regioni geografiche.
Come indicato nell’articolo The Things Network Architecture e nella sezione Network Architecture
sarà anche possibile distribuire i componenti su reti private per non memorizzare i dati Internet, ma in questo tipo di scenari occorre utilizzare l’account server di TTN per gestire autenticazione e autorizzazioni. I servizi di routing possono essere eseguiti in reti private e si sta lavorando affinché questi possano scambiare dati con la rete della comunità pubblica, ma è comunque possibile configurare i componenti in modo tale che i pacchetti di dati non lascino mai la rete privata. In questo modo sarà possibile creare una piattaforma in cui i microservizi sono in hosting presso una rete privata e continuare a sfruttare la rete globale.
Se le distribuzioni ibride saranno invece possibili in futuro in alternativa, al momento, The Things Network consente di eseguire solo l’Handler nelle rete privata e non tutti i microservizi, in questo modo la crittografia e la decrittografia dei payload delle applicazioni viene eseguita nella rete privata.
La public community network è gratuita è ha dimostrato di essere stabile, ma occorre tenere presente viene fornita senza alcuna garanzia. Per ottenere livelli di servizio garantiti, manutenzione e supporto è possibile rivolgersi, ad esempio, a The Things Industries che fornisce tali servizi sia come installazione on-premises sia secondo il modello fully hosted pay-as-you-go, scendendo nel dettaglio The Things Industries può offrire un LoRaWAN Network Server e Hardware (Gateway LoRaWAN, LoRa Modem e Device LoRA con sensori e attuatori). Per approfondimenti sulle modalità di deploy offerta da TheThings Industries la sezione dedicata al Network Server, di seguito alcune FAQ:
Can I create a private LoRaWAN network with your software?
Yes, this is exactly what the Professional and Enterprise pack allow you to do. You can run it on Amazon Web Services or Microsoft Azure having the ability to host it on premises or by us.
Can I run the Network Server on a Raspberry PI like computer?
Yes, you can run the entire stack on a small computer, supporting gateways on premises without connecting them to the internet.
Can I connect this to existing Internet of Things platforms?
Yes, we invested heavily in hooks and integrations with existing platforms so we can focus on our strength, providing the last mile. Platforms like AWS IoT, Azure IoT, Cayenne and many more are supported out of the box.
I would like to leverage the global network (The Things Network) with my private network, can I do that?
Yes, you can opt in to collaborate with the community but only if you also contribute to The Things Network.
Is it possible to use both the community network and my private network in parallel?
We intend to make it possible to securely exchange data by federating the public network (The Things Network) and your private network. However this feature is not supported yet.
Per maggiori dettagli sull’architettura di rete e sul funzionamento di TTN si veda la sezione Network Architecture, mentre nella sezione Build applications on The Things Network viene invece illustrato come aggiungere un’applicazione alla console, come costruire un’applicazione tramite le APIs, l’SDK o tramite integrazione. Nel repository su GitHub The Things Network Azure IoT Hub Integration viene fornito un esempio di integrazione di TTN con Azure IoT Hub.
Per quanto riguarda la sicurezza, come indicato nella sezione Network Security, TTN è una rete pubblica che supporta la crittografia end-to-end, mitigazioni di vari attacchi di tipo man-in-the-middle e offre il supporto per diverse chiavi di crittografia a 128 bit per ogni singolo dispositivo. Inoltre LoRaWAN impone l’utilizzo di controlli di integrità dei messaggi AES a 128 bit e crittografia del payload che sono completamente crittografati tra il nodo e il componente Handler del back-end. I componenti Router e Broker instradano i dati in base ai metadati pubblici e non possono decrittografare il payload. Come già accennato precedentemente per utilizzare TTN public community network è necessario un account identificato da un nome utente o indirizzo e-mail, protetto da una password che è memorizzato sull’ account server.