SlideShare una empresa de Scribd logo
1 de 151
Descargar para leer sin conexión
IOT: Protocolli, Dispositivi, Architetture

...come scegliere e non pentirsi

Stefano Valle

Meeting Knohub del 18/09/2019 ℅ Knowledge Center
DiTeDi 

https://knohub.it
@stefanovalle



Lavoro per...
http://longtailrisk.com

Sensori /
attuatori

Dispositivi
intelligenti

Collettore
dati

Cloud
gateway

Analisi dati

Storage

Sul campo / in impianto
 In Cloud

compute and storage resources

are placed 

at the edge of the Internet,

in close proximity to

mobile devices or sensors

https://softwareengineeringdaily.com/wp-content/uploads/2018/09/hu-apsys2016.pdf



Edge device

Vantaggi

Performance

dovuto a minore latenza



Privacy e sicurezza

applicati e allineati standard sicurezza fra
dispositivi



Efficienza e costi

grazie a minore traffico dati

Edge necessario se il dispositivo...

• usa standard di connettività specifici (es.
OPC-*)

• usa tecnologie di comunicazione short
range

• non è in grado di implementare necessari
protocolli di sicurezza

• non è in grado di connettersi alla rete 

https://softwareengineeringdaily.com/2018/09/14/edge-computing-and-the-future-of-the-cloud/



Sensori /
attuatori

Collettore
dati

Dispositivi
intelligenti

Cloud
gateway

Analisi dati

Storage

Sul campo / in impianto
 In Cloud

AWS IoT reference architecture

https://www.mactores.com/services/aws-iot/



Azure IoT reference architecture

https://docs.microsoft.com/it-it/azure/architecture/reference-architectures/iot/



Think big,

but start small

Principio n. 5,

“The Amazon Way on IoT”,

John Rossman



1. Buona architettura

2. Preferire

tecnologie aperte

3. Uso consapevole

dei protocolli

https://www.eclipse.org/smarthome/

MQTT
 CoAP
 AMQP
 HTTP

TCP

...

UDP

IPv4 e IPv6 / 6LoWPAN

IEEE
802.3

IEEE
802.11

IEEE
802.16

...
IEEE
802.15

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

MQTT
 CoAP
 AMQP
 HTTP

TCP

...

UDP

IPv4 a IPv6 / 6LoWPAN

IEEE
802.3

IEEE
802.11

IEEE
802.16

...
IEEE
802.15

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

From Flickr - The Conmunity - Pop Culture Geek - the dash from Paul Nigh's Time Car Delorean from Back to the Future II

Posizione, velocità,
decelerazioni improvvise

Posizione, velocità,
decelerazioni improvvise

MQTT
 CoAP
 AMQP
 HTTP

TCP

...

UDP

IPv4 a IPv6 / 6LoWPAN

IEEE
802.3

IEEE
802.11

IEEE
802.16

...
IEEE
802.15

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

?

Posizione, velocità,
decelerazioni improvvise

Posizione, velocità,
decelerazioni improvvise

?
 ?

HTTP

HTTP

client
 server

GET http://www.mysite.com/bikes
200 OK
client
 server
{["vendor": "...",
"model": "..."],
[...]}
Richiesta HTTP

(+headers +body)
Verbo
 URL

GET http://www.mysite.com/bikes
200 OK
client
 server
{["vendor": "...",
"model": "..."],
[...]}
Risposta HTTP

(+headers)

Status code

Body

GET http://www.mysite.com/bikes
200 OK
POST
/bikes/myBike/position
POST
/bikes/myBike/speed
200 OK
200 OK
{"position": [25.1212, 55.1535],
"time": 2018-06-15T14:22:13.421Z}
{"speed": 4.5,
"time": 2018-06-15T14:22:13.421Z}
https://martinfowler.com/articles/richardsonMaturityModel.html

Richardson

Maturity

Model

POST
/bikes/myBike/position
POST
/bikes/myBike/speed
200 OK
200 OK
{"position": [25.1212, 55.1535],
"time": 2018-06-15T14:22:13.421Z}
{"speed": 4.5,
"time": 2018-06-15T14:22:13.421Z}
RMM 

Level 2

HTTP

HTTP

HTTP

HTTP

Attivazione freno

Entità

Comando Evento
Richiede
cambiamento di
stato

Notifica
cambiamento di
stato

HTTP

HTTP

HTTP

HTTP

HTTP

Come raggiungere
l’host?

CoAP

Introduction to Resource-Oriented Applications in Constrained Networks - Zach Shelby

Internet
 Constrained Environments

URI

coap://www.abcd.com:5683/sensors/temperature

nuovo schema
 host
 porta

(default 5683)

risorsa

Metodi

GET

POST

PUT

DELETE

Stessa semantica di
HTTP

Understanding Constrained Application Protocol - Vishnu Sharma

CON - Confirmable message

Richiede una risposta (positiva / negativa)

Tipi di messaggi

CON - Confirmable message

NON - Non-confirmable message

Non richiede una risposta, per i casi in cui
la perdita di un messaggio non è un
problema

Tipi di messaggi

CON - Confirmable message

NON - Non-confirmable message

ACK - Acknowledgement

Conferma ricezione di messaggio CON



Tipi di messaggi

CON - Confirmable message

NON - Non-confirmable message

ACK - Acknowledgement

RST - Negative acknowledgment

Indica un problema nella ricezione / lettura
dei dati

Tipi di messaggi

Understanding Constrained Application Protocol - Vishnu Sharma

Response codes

(0) 2.00 OK

(1) 2.01 Created

(14) 3.04 Not Modified

(20) 4.00 Bad Request

(21) 4.01 Unauthorized

…

(40) 5.00 Internal Server Error

Understanding Constrained Application Protocol - Vishnu Sharma

Understanding Constrained Application Protocol - Vishnu Sharma

Client
 Server

GET /speed - Token 0x11 - Observe: empty
Observe Option

Client
 Server

GET /speed - Token 0x11 - Observe: empty
2.05 Content - Token 0x11 - Observe: 1
Payload: 32
2.05 Content - Token 0x11 - Observe: 2
Payload: 21
2.05 Content - Token 0x11 - Observe: 23
Payload: 8
HTTP vs CoAP

Per tutti i dispositivi in grado
di connettersi a Internet



TCP



Non supporta multicast



Modello client / server





Richiede comunicazione
sincrona



Pacchetti di maggiore
dimensione



Per dispositivi con risorse
limitate



UDP



Supporta multicast



Modello client / server e
pub/sub



Comunicazione sincrona e
asincrona



Pacchetti di minore
dimensione



From Flickr - Alessandro Grussu - 100° Giro d'Italia - 02

MQTT

broker

client A

client B

subscribe

consegna

client C

subscribe

pubblica

consegna

Modello pub / sub

broker

client A

client B

client C

topic A

topic B

topic ...

pubblica

topic A

sub
 topic A

sub
 topic B

https://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-establishment/

https://www.hivemq.com/blog/mqtt-essentials-part-4-mqtt-publish-subscribe-unsubscribe/

https://www.hivemq.com/blog/mqtt-essentials-part-4-mqtt-publish-subscribe-unsubscribe/

Temperatura della stanza

temperatura-kc

topic valido?

topic comodo da usare?

SI

NO

Topics best practices

uniPN/edificioS/aulaS8/temperatura

gerarchia
generico
 specifico

Topics best practices

uniPN/edificioS/aulaS8/temperatura

separatore

Le temperature di

tutte le aule dell’edificio S?

uniPN/edificioS/+/temperatura

wildcard +

Tutti i dati di tutte le aule
dell’edificio S?

uniPN/edificioS/#

wildcard #

?
 ?

broker

MQTT

MQTT

broker

bk99/bike1/position

{"position": [25.1212, 55.1535],
"time": 2018-06-15T14:22:13.421Z}
broker

subscribe

messaggio

Entità

Comando Evento
QoS

QoS 0 - al massimo uno

QoS 1 - almeno uno

QoS 2 - esattamente uno

QoS

QoS 0 - al massimo uno

QoS 1 - almeno uno

QoS 2 - esattamente uno

broker
client A
 client B

subscribe

Qos Y

publish

QoS X

broker

come sapere se 

client va offline?

https://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-establishment/

broker

come possiamo 

non perdere messaggi
se rimaniamo offline
per un po’?

https://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-establishment/

broker

quali dati visualizzati
allo startup?

broker

https://www.hivemq.com/blog/mqtt-essentials-part-4-mqtt-publish-subscribe-unsubscribe/

broker

(retainFlag = true)

broker

(retainFlag = true)

ws

• Protocollo di messaggistica

• Necessario un broker

• TCP per il livello di trasporto

• Semplice, adatto a reti lente /
dispositivi con capacità limitate

MQTT 5

(non retrocompatibile con v. 3.1.1)

• scadenza messaggi e sessioni

• shared subscriptions: load balancing dei
clients

• flow control (limita numero di messaggi
in attesa di consegna)

• estensibile via user properties

Limitazioni su AWS e Azure

• Versione 3.1.1

• No QoS 2

• No flag retain

• Altre minori (ma da tenere a mente)

AMQP

queue

sender

enqueue

receiver

dequeue

queue A
sender
A

recv B

recv C
sender
E

recv D

Casi d’uso più comuni

• operazioni batch

• scambio messaggi asincrono /
sincronizzazione processi

• suddivisione carico di lavoro

queue A
sender
A

recv B

Server

sender
A

recv B

Virtual host

Exchange

Queue
Binding

Exchange

Fanout
Direct
 Topic
 Headers

Exchange

Fanout
Direct
 Topic
 Headers

(unicast) routing key == binding key

ex

queue B

queue A
BK = A
RK = A

BK = B

Exchange

Fanout
Direct
 Topic
 Headers

(broadcast) messaggio pubblicato su tutte le code

ex

queue B

queue A

Exchange

Fanout
Direct
 Topic
 Headers

instradamento via pattern matching

ex

queue B

queue A
BK = 1.*.3
RK = 1.2.3

BK = 3.#

Exchange

Fanout
Direct
 Topic
 Headers

routing via attributi espressi sugli header dei msg

ex

queue B

queue A
headers match?

Server

sender
A

recv B

Virtual host

Exchange

Queue
Binding

AMQP
0.9.1 

!=

AMQP 

1.0 

via plugin

Container
Container

Container
Container

Connection

Container
Container

Connection

Session

Container
Container

Connection

Session

Channel

Container
Container

Connection

Session

Channel

Node
 Node

Container
Container

Connection

Session

Channel

Node
 Node

Casi d’uso

Exchange >> Nodes + Links

Nodo

consumer A

link

Producer

consumer N

consumer B

filter:

field = 1.*.3

Topic exchange

?
 ?

broker

AMQP

AMQP

Entità

Comando Evento
Rispetto a MQTT

• acknowledgment dei messaggi

• supporto per transazioni

• code a priorità

• controllo di flusso

• routing avanzato

HTTP
 CoAP

MQTT
 AMQP

Prestazioni
 M2M vs IoT

Controllo di
flusso avanzato

Limitazioni hw

Routing flessibile

Message overhead
basso
 alto

Messagesize
basso
alto

HTTP

CoAP

MQTT

AMQP

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

Resource Requirement
basso
 alto

PowerConsumption
basso
alto

HTTP

CoAP

MQTT

AMQP

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

Latency
basso
 alto

Bandwidth
basso
alto

HTTP

CoAP

MQTT

AMQP

Adapted from Choice of Effective Messaging Protocols for IoT Systems: MQTT, CoAP, AMQP and HTTP - Nitin Naik

orientato al Web;
contesti richiesta /
risposta

HTTP

dispositivi limitati;
contesti richiesta /
risposta

CoAP

pub / sub; 

dispositivi limitati

MQTT

code di messaggi;
gestione evoluta del
routing

AMQP

broker
MQTT

MQTT

HTTP +
Web
Socket

queue

queue

Polyglot programming

Neal Ford, 2006

applications should be written in a 

mix of languages to take advantage
of the fact that different languages
are suitable for tackling different
problems

Martin Fowler

Polyglot programming

Neal Ford, 2006

Polyglot persistence

Scott Leberknight, 2008

Polyglot messaging

no official definition

From Flickr - Bre Pettis - Dave's Bike Tools

3. Uso consapevole

dei protocolli

Grazie per l’attenzione

Per saperne di più...

● http://mqtt.org/

● https://www.hivemq.com/mqtt-essentials/

● https://coap.technology/

● https://www.amqp.org/

● https://martinfowler.com/articles/richardson
MaturityModel.html

@stefanovalle

s.valle@mvlabs.it









Lavoriamo Assieme?
https://www.mvlabs.it/it/offerte-lavoro-software


Más contenido relacionado

Similar a IoT: protocolli, dispositivi, architetture

9 Intranetting
9 Intranetting9 Intranetting
9 Intranetting
acapone
 
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
TiborRacman
 
Iperf 090524073201-phpapp01
Iperf 090524073201-phpapp01Iperf 090524073201-phpapp01
Iperf 090524073201-phpapp01
Jamil Jamil
 
5 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte35 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte3
Majong DevJfu
 
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
TiborRacman
 

Similar a IoT: protocolli, dispositivi, architetture (20)

Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
 
Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19Introduzione a Internet (1/2) - 18/19
Introduzione a Internet (1/2) - 18/19
 
02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)02 - Introduzione a Internet (I)
02 - Introduzione a Internet (I)
 
MQTT: il protocollo che rende possibile l'Internet of Things (Ott. 2015)
MQTT: il protocollo che rende possibile l'Internet of Things (Ott. 2015)MQTT: il protocollo che rende possibile l'Internet of Things (Ott. 2015)
MQTT: il protocollo che rende possibile l'Internet of Things (Ott. 2015)
 
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
 
9 Intranetting
9 Intranetting9 Intranetting
9 Intranetting
 
Iperf
IperfIperf
Iperf
 
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
 
2 - Introduzione a Internet (1/2) - 16/17
2 - Introduzione a Internet (1/2) - 16/172 - Introduzione a Internet (1/2) - 16/17
2 - Introduzione a Internet (1/2) - 16/17
 
Crouzet Automation - em4 Ethernet opuscolo, versione italiana
Crouzet Automation - em4 Ethernet opuscolo, versione italiana Crouzet Automation - em4 Ethernet opuscolo, versione italiana
Crouzet Automation - em4 Ethernet opuscolo, versione italiana
 
Iperf 090524073201-phpapp01
Iperf 090524073201-phpapp01Iperf 090524073201-phpapp01
Iperf 090524073201-phpapp01
 
5 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte35 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte3
 
Socket python
Socket pythonSocket python
Socket python
 
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
Analisi e prototipazione di un sistema di streaming per la localizzazione in ...
 
2 - Introduzione ad Internet (1/2)
2 - Introduzione ad Internet (1/2)2 - Introduzione ad Internet (1/2)
2 - Introduzione ad Internet (1/2)
 
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
 
Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDN
 
ESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàESB e Architetture per l'Interoperabilità
ESB e Architetture per l'Interoperabilità
 
2 - Introduzione a Internet (1/2) - 17/18
2 - Introduzione a Internet (1/2) - 17/182 - Introduzione a Internet (1/2) - 17/18
2 - Introduzione a Internet (1/2) - 17/18
 

Más de Stefano Valle

Más de Stefano Valle (7)

Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2
 
NoSQL Containers get Rich
NoSQL Containers get RichNoSQL Containers get Rich
NoSQL Containers get Rich
 
Asset management with Zend Framework 2
Asset management with Zend Framework 2Asset management with Zend Framework 2
Asset management with Zend Framework 2
 
Moduli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarliModuli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarli
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
Stime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agileStime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agile
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
 

IoT: protocolli, dispositivi, architetture