O documento discute protocolos de comunicação para Internet das Coisas (IoT). Ele apresenta Anderson Santos e Cesar Nascimento, especialistas em arquitetura de sistemas e tecnologia da informação. Também descreve um caso de uso de iluminação pública inteligente e requisitos para seleção do protocolo, listando candidatos como CoAP, DDS, MQTT e XMPP e características como taxa de mensagens, latência e segurança.
1. Globalcode – Open4education
Trilha – IoT
Anderson Santos
Arquiteto de Sistemas
Cesar Nascimento
Arquiteto de T.I
Application Protocols
Selecionando protocolos para IoT
16/05/2015 V2.0
3. Globalcode – Open4education
Quem somos?
Anderson Santos (adsantos@gmail.com)
Cesar Nascimento (cesar.nascimento@gmail.com)
Anderson - Arquiteto de sistemas com mais de 20 anos de
experiência em TI, onde os últimos 10 anos em empresas de
telecomunicações. Graduado em Matemática, PMP, com MBA em
Gestão de Projetos pela FGV e mestrando pelo IPT. Especializado
em SOA, atuando como consultor para Telefonica | Vivo.
Cesar Nascimento é formado em Ciência da Computação, pós-
graduado em Desenvolvimento de Jogos Eletrônicos e mestrando em
Eng de Soft pelo IPT. Desde 1998 atuando em T.I, já foi consultor na
Accenture e há 7 anos trabalha na IBM do Brasil como Arquiteto de
T.I com foco em SOA, BPM, Cloud e Arquitetura Corporativa.
Todas as opiniões expressas são pessoais e não representam
nenhuma empresa ou instituição.
4. Globalcode – Open4education
O segredo do sucesso de uma
implementação de IoT começa
com a correta seleção dos
protocolos de comunicação.
Introdução ...
6. Globalcode – Open4education
Introdução ...
7 pessoas para cada
website
http://www.internetlivestats.com
09 Maio 2015
http://www.worldometers.info/world-population/
9. Globalcode – Open4education
O método ...
① Identificar o tipo de aplicação que queremos
implementar;
② Coletar os requisitos não-funcionais da aplicação
relevantes à seleção do protocolo;
③ Listar os protocolos candidatos;
④ Elencar as suas características;
⑤ Identificar quais características dos protocolos
atendem os requisitos não-funcionais da
aplicação;
⑥ Selecionar o(s) protocolo(s) mais adequado(s).
12. Globalcode – Open4education
Cenário ...
Aplicação
Controle de iluminação publica.
Requisitos
Funcionais
1. Monitorar e controlar 600.000 lâmpadas para a cidade X;
2. As lâmpadas devem ser acionadas gradualmente ao anoitecer (100 lux);
3. As lâmpadas devem ser desligadas ao amanhecer (1.000 lux);
4. Acionamento e desligamento acidentais devem ser ignorados;
5. Em caso de não-acionamento ou não-desligamento uma mensagem deve ser enviada
indicado a situação;
6. As unidades de controle deverão aceitar comandos de acionamento (100%,
desligamento (0%) e incrementos de luminosidade (0 < x < 100%);
7. A cada transição de estado da lâmpada, uma mensagem deve ser enviada;
8. Deve ser possível verificar o estado de uma lâmpada em qualquer momento.
Não funcionais
1. A unidade de controle da lâmpada deve enviar mensagens utilizando protocolo(s)
aberto(s);
2. O tempo entre a detecção de um estado e o recebimento de uma mensagem, ou o envio
de um comando, não deve ser superior a 2 segundos;
3. As mensagens serão enviadas, via internet sem fio, para as aplicações de controle e
monitoramento.
25. Globalcode – Open4education
CoAP: The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for
use with constrained nodes and constrained networks in the Internet of Things. [15]
DDS - The OMG Data-Distribution Service for Real-Time Systems (DDS) is the first open
international middleware standard directly addressing publish-subscribe communications for
real-time and embedded systems. [7]
MQTT: is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was
designed as an extremely lightweight publish/subscribe messaging transport. [8]
MQTT-SN: a pub/sub protocol for wireless sensor networks. MQTT-SN can be considered as
a version of MQTT which is adapted to the peculiarities of a wireless communication
environment. [8]
REST - Representational State Transfer (REST) is a software architecture style consisting of
guidelines and best practices for creating scalable web services. [6]
XMPP: The Extensible Messaging and Presence Protocol (XMPP) is an open technology for
real-time communication, which powers a wide range of applications including instant
messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight
middleware, content syndication, and generalized routing of XML data. [14]
27. Globalcode – Open4education
Características
Característica Descrição / Critério
Rede Camada de rede (IPv4, IPv6,
Camada física Ethernet, GSM/GPRS, Wi-Fi
Taxa mensagens* Número de mensagens por segundo considerando um nó em uma rede local.
Rede/Comunicação Camada da rede / comunicação
Suporte a IPv6 Se o protocolo suporta IPv6
Latência Tempo que a mensagem leva de um ponto a outro.
Segurança Protocolos de segurança suportados.
QoS Qualidade do Serviço, um acordo entre o remetente e o destinatário sobre o envio da
mensagem.
Real-time De acordo com a definição deste apresentação é um serviço cujo a latência esta
entre 10us a 10ms.
Interoperabilidade É uma propriedade do sistema de trabalhar com outros sistemas sem restrições.
Tipo de aplicação Taxonomia que classifica os sistemas quanto ao fluxo de suas mensagens. S2S,
D2S e D2D.
Recurso utilizado pelo
protocolo
Recursos (memória) utilizado pelo protocolo.
Padrão de mensagem Padrão de distribuição da mensagem adotado pela arquitetura do sistema.
Plataforma independente Dispõe de clientes e servidores em diversas plataformas.
Padrão aberto Indica se a definição do protocolo é aberto ou proprietário.
28. Globalcode – Open4education
⑤ Identificar quais
características dos
protocolos atendem os
requisitos não-funcionais
da aplicação;
⑥Selecionar o(s)
protocolo(s) mais
adequado(s).
29. Globalcode – Open4education
XMPP DDS*
Rede WAN e LAN Memória compartilhada, WAN e LAN
Física Ethernet / Wi-fi / GPRS Ethernet / Wi-fi
Taxa mensagens ~ 1.900 m/s [24] ~ 11.000 m/s [26]
Rede/Comunicação TCP UDP, TCP
Suporte a IPv6 Sim Sim
Latência 100ms a segundos 100us a milisegundos
Segurança TLS DTLS
QoS N/A Availability, Delivery, Timeliness, Res
Real-time Não Sim
Interoperabilidade Java, DotNet, C Java, C
Tipo de aplicação D2S D2D
Recurso utilizado pelo
protocolo
~ 14k Flash *
Padrão de mensagem Publish/Subscriber, Request/Response, Spoke-hub Publish/Subscriber, Point-to-Point
Plataforma independente Sim Sim
Padrão aberto Sim Sim
* Não encontramos implementação para arduino
Característicasdosprotocolos
** Não encontramos implementação para GSM/GPRS
31. Globalcode – Open4education
Referências
1. Understanding The Protocols Behind The Internet Of Things - http://electronicdesign.com/embedded/understanding-protocols-behind-internet-things
2. Understanding The Internet Of Things - http://electronicdesign.com/communications/understanding-internet-things
3. IPV6: How Many IP Addresses Can Dance on the Head of a Pin? - http://www.edn.com/electronics-blogs/other/4306822/IPV6-How-Many-IP-Addresses-Can-
Dance-on-the-Head-of-a-Pin-
4. Stomp - http://stomp.github.io
5. AMQP - http://www.amqp.org
6. REST - http://www.w3.org/2001/sw/wiki/REST
7. DDS - http://portals.omg.org/dds/
8. MQTT - http://mqtt.org
9. Choosing Your Messaging Protocol: AMQP, MQTT, or STOMP - http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-
stomp.html
10. The Internet of Things: Dr. John Barrett at TEDxCIT - https://youtu.be/QaTIt1C5R-M
11. Uniduino: Arduino Plugin for Unity - Teaser - https://youtu.be/EdSnjB-GIGg
12. 5 Things to Know About MQTT – The Protocol for Internet of Things -
https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_mqtt_the_protocol_for_internet_of_things?lang=en
13. Ending the IoT Protocol Wars - http://www.apiacademy.co/blogs/index.php/ending-the-iot-protocol-wars/
14. IoT Protocol Wars: MQTT vs CoAP vs XMPP - http://www.iotprimer.com/2013/11/iot-protocol-wars-mqtt-vs-coap-vs-xmpp.html
15. Constrained Application Protocol for Internet of Things - http://www.cse.wustl.edu/~jain/cse574-14/ftp/coap/index.html
16. M2M, IOT, Device Managment: COAP/LWM2M to rule them all? - http://pt.slideshare.net/jvermillard/m2m-iot-device-managment-coaplwm2m-to-rule-them-all
17. ISO/IEC/IEEE 29148:2011(E), Systems and software engineering – Lifecycle processes - Requirements engineering
18. IoT-A Unified Requirements list - http://www.iot-a.eu/public/requirements/copy_of_requirements
19. IoT - Internet of Things - na Iluminação Pública - http://pt.slideshare.net/cpqd/iot-internet-of-things-na-iluminacao-publica
20. Ethernet MAC And PHY - http://electronicdesign.com/embedded/ethernet-mac-and-phy
21. What can DDS do for You? - http://www.omg.org/hot-topics/documents/dds/CoreDX_DDS_Why_Use_DDS.pdf
22. Internet of Things (IoT) protocols COAP MQTT OSCON2014 - http://pt.slideshare.net/vgholkar/io-t-protocolsoscon2014
23. Five Ways to Secure a Real-Time Distributed System Without Compromising Performance - http://pt.slideshare.net/RealTimeInnovations/five-ways-to-
secure-a-realtime-distributed-system-without-compromising-performance
24. Performance tests XMPP - https://iotprotocols.wordpress.com/2015/03/31/performance-tests-xmpp/
25. Speedtests in a simulated IoT scenario with the CoAP protocol - https://iotprotocols.wordpress.com/2015/01/19/speedtests-in-a-simulated-iot-scenario-with-
the-coap-protocol/
26. Stresstesting an OpenDDS IoT scenario - https://iotprotocols.wordpress.com/2015/01/20/stresstesting-an-opendds-iot-scenario/
27. A performance test of my MQTT scenario - https://iotprotocols.wordpress.com/2015/01/18/a-performance-test-of-my-mqtt-scenario/
28. Comparing Performance of Web Service Interaction Styles: SOAP vs. REST - http://proc.conisar.org/2012/pdf/2208.pdf