4. 01
How it all started…
Things (Devices) are getting smarter, from Class-1 to Consumer Electronics.
If a Thing is an Internet node, it’s subject of APIzation.
REST is the most successful Internet/Web API.
CoRE /CoAP
So we decided to start ourselves investing some 480€ to play with:
- 4 6LowPAN capable Motes (360€), 2 Raspberry PI (120€).
- Plus lots of hours of DIY “fun”!
M2M Community
Telefónica Digital
4
5. 02
Is CoAP Rocket Science? No, it’s just REST
Traditional REST WEB APIs relays on HTTP-TCP-IP
CoRE/CoAP = REST APIs over UDP-IP
M2M Community
Telefónica Digital
5
8. 05
Scenario1: Step 1
1.1) Install & compile ccoap in your laptop
https://github.com/ipflavors/ccoap/tree/master/doc
M2M Community
Telefónica Digital
?
8
9. 06
Scenario1: Step 2
1.2) Install Firefox Navigator plus Copper (CU) Plugin
https://addons.mozilla.org/en-US/firefox/addon/copper-270430/
M2M Community
Telefónica Digital
?
9
10. 07
Scenario1: Step 3
1.3) Test Firefox Copper with a CoAP server available in the Internet:
coap://vs0.inf.ethz.ch:5683/
M2M Community
Telefónica Digital
10
11. 08
Scenario1: Step 3b
1.3b) GET operation (of a long resource: 5x64bytes blocks):
coap://vs0.inf.ethz.ch:5683/
M2M Community
Telefónica Digital
11
12. 09
Scenario1: Steps 4 & 5
1.4) Install z-way-server & configure z-wave devices w/ RaspberryPI.
pi@raspberrypi:~$ wget -q -O - razberry.z-wave.me/install | sudo bash
To test installation: http://[IP_address]:8083
1.5) Install libcoap4.0.1 run server example in RaspberryPI.
Download libcoap-4.0.1.tar.gz - http://sourceforge.net/projects/libcoap/
pi@raspberrypi:~$ tar xvzf libcoap-4.0.1.tar.gz
pi@raspberrypi:~$ cd libcoap-4.0.1
pi@raspberrypi:~$ ./configure
pi@raspberrypi:~$make
M2M Community
Telefónica Digital
12
13. 10
Scenario1: Steps 4 & 5
1.6) Run CoAP server example in RaspberryPI.
M2M Community
Telefónica Digital
13
14. 11
Scenario1: Step 6
1.6) Test against our RasPI server with Firefox Copper:
coap://[2a02:9113:****:1f00:b***:****:****:***f]:5683/
M2M Community
Telefónica Digital
14
15. 12
Scenario1: Step 6b
1.6b) Discover resources of our CoAP-RasPI server with Firefox Copper:
coap://[2a02:9113:****:1f00:b***:****:****:***f]:5683/
M2M Community
Telefónica Digital
15
16. 13
Scenario1: Step 6c
1.6c) GET operation (Firefox Copper):
coap://[2a02:9113:****:1f00:b***:****:****:***f]:5683/
M2M Community
Telefónica Digital
16
17. 14
Scenario1: Step 6d
1.6d) OBSERVE operation (PUSH Notifications) (Firefox Copper):
coap://[2a02:9113:****:1f00:b***:****:****:***f]:5683/
M2M Community
Telefónica Digital
17
18. 15
Scenario1: Step 7
1.7) Modify server example to create CoAP resources based on z-wave dev:
- Follow IPSO Alliance Recs:
http://www.ipso-alliance.org/wp-content/media/draft-ipso-app-framework-04.pdf
M2M Community
Telefónica Digital
18
19. 16
Scenario1: Implementing all this in FI-WARE
We are updating some FI-WARE IoT Ges to support this:
- “FIGWAY” SW to export CoAP resources too.
https://github.com/telefonicaid/fiware-raspberryPI-M2M-Gateway
M2M Community
Telefónica Digital
19
20. 17
Scenario1: A nice Project out there
WEBIPOI – Exports RasPI GPIO (wired) devices (CoRE & REST)
http://code.google.com/p/webiopi/wiki/INTRODUCTION
M2M Community
Telefónica Digital
?
20
21. 18
Scenario2: CoAP (6LowPAN) Devices!
Two (or more) Contiki-supported motes
…
http://www.contiki-os.org/hardware.html
http://www.advanticsys.com/
http://www.zolertia.com
http://www.libelium.com (own Stack / OS)
“Nooliberry” -> 6LowPAN RasPI GPIO card
Your laptop
- MACOSX, Linux, Windows…
Install Instant-Contiki VM in your Laptop
http://www.contiki-os.org/start.html
App coding:
- Device: expose REST Resources over CoAP
- Client: consume REST Resources (CoAP or HTTP)
Web development as usual! Examples:
https://github.com/contiki-os/contiki/blob/master/examples/rest-example/coap?
M2M Community
Telefónica Digital
client-server-example.csc
21
23. 20
Scenario2: Who’re already on board?
“Talking at CES today, Cerf described his home's
sensor network, which uses IPv6 radios and the
Arch Rock PhyNet smart grid system to track
information like light levels, temperature, and
humidity. This is important for a wine cellar…”
M2M Community
Telefónica Digital
23
25. 01
CoAP: Constrained Application Protocol
Internet
Constrained Enviroments
Low-power
Lossy, high packet error rates
Low thtoughpunt of 10s of kbps
Sensor
Resources
CoAP
HTTP
Proxy
Server
HTTP
Client
CoAP
UDP
6LoWPAN
802.15.4
Contiki, Tiny OS, …
8-bit microcontrollers
Aprox. 100KB of RAM for code,
heap, data…
No filesystem
CoAP is an application layer protocol that enables web services for even the
most constrained devices and networks, while integrating with the web
architecture and HTTP.
M2M Community
Telefónica Digital
25
26. 02
CoAP: Designed for M2M
•
CoAP implements the REST architectural style:
can be transparently mapped to HTTP
•
CoAP goes beyond HTTP providing:
M2M Community
Telefónica Digital
Very low over-head, avoids the need of IPv6 fragmentation
Built-in discovery of services and resources
Multicast support
Asynchronous messages exchanges
Native push notification
26
27. 02
CoAP: The Web Architecture vs CoAP Architecture
The interaction model of CoAP is similar to the client/server model of
the Web. However, M2M interactions typically result in a CoAP
implementation acting in both client and server roles.
M2M Community
Telefónica Digital
27
28. 03
CoAP: Messaging Model
•
•
•
•
•
•
•
Short fixed-length binary header (4bytes)
Messages must fit in a single IP datagram
Default IP: 1280bytes,
6LoWPAN and IEEE802.15.4 127bytes
Messages can be confirmable (CON) or non confirmable (NON).
Naturally runs over UDP and supports :
multicast IP destination addresses
DTLS security
Piggy-backed REST request/response
The response to a CON message is carried in the ACK
Request methods: GET, PUT, POST, and DELETE almost as in
HTTP.
Response methods: 2.xx (success), 4.xx (client error), 5.xx (server
error).
M2M Community
Telefónica Digital
28
30. 05
CoAP: Unreliable Transmission
•
•
•
Tipically, repeated readings from a sensor
If server lacks context to answer the request, sends Reset (RST)
Client can send the same mesage several times to ensure it reaches
the server
M2M Community
Telefónica Digital
30
32. 07
CoAP: Reliable Transmission
•
Normally bounded to non-reliable transport protocols, CoAP
implements a lightweight reliability mechanism based on:
Stop&wait retransmisssion for CON
Duplicated detection for CON and NON
M2M Community
Telefónica Digital
32
36. 11
CoAP: Proxying and Caching
•
CoAP supports caching
Cacheability determined by response code
An option number mask determines if it is a cache key.
Max-age option indicates cache lifetime
Validity checked using the Etag Option
•
Caching can be at endpoint or intermediary (proxy).
•
Proxy can be used to
Improve performance (reduce network load)
Access sleeping nodes
Security reasons
•
Very easy mapping CoAP (Cross-protocol-proxy)HTTP
M2M Community
Telefónica Digital
36
38. 13
CoAP: Endpoints and URIs
•
•
•
•
•
A CoAP endpoint is a source or destination of a message.
URI representations for resources:
coap-URI = "coap:" "//" <HOST> [ ":" <PORT> ] <PATH> [ "?" <QUERY> ]
coaps-URI = "coaps:" "//" <HOST> [ ":" <PORT> ] <PATH> [ "?" <QUERY> ]
HOST can be an IP address or a registered name.
PORT where CoAP server is located (default CoAP port: 5683)
Example: coap://example.com:436/sensors/temp?min=10
M2M Community
Telefónica Digital
Host: example.com
Port: 436
Path: sensors/temp
Query: min=10
38
39. 14
CoAP: Service and Resource Discovery
1. Discovering the servers:
If unknown, the client has to learn HOST server
2. Discovering the resources
The client queries the well known URI of the server on port 5683
The server returns the list of resources in CoRE Link Format
GET /.well-known/core
<sensors/temp>;sz=512;title=Temperature Sensor;ct=50,
<actuators/jack>;sz=256;title=Hydraulic Jacks;ct=50
3. Both steps can be merged, querying the well known URI of “all
4.
CoAP nodes” using multicast address FF0X:0:0:0:0:0:0:C0A7
Resource Directories can be used
Related spec:
• RFC 5785 defines the a path prefix for "well-known locations“
• RFC 5988 defines the types of web links and a registry for them
• RFC 6690 defines a link format for user Web Link in CORE.
M2M Community
Telefónica Digital
39
40. 15
CoAP: RESTful Group Communication
•
CoAP supports making requests to IP multicast groups in NON
•
•
Leisure time
CoAP does not support yet the use of multicast with security
M2M Community
Telefónica Digital
40
41. 16
CoAP: Security
•
•
•
•
•
•
•
CoAP is secured using Datagram TLS (RFC6347) over UDP.
The endpoint initiates session to the server and, after the DTLS
handshake, it can send the 1st CoAP request.
All CoAP messages are sent as DTLS “application data”.
DTLS adds a limited per-datagram overhead of aprox 13 bytes.
Security info (e.g. keys, ACLs) must be provided during the
provisioning of the device.
The device can be in 1 of 4 security modes:
NoSec: DTLS is disabled. Can be combined with alternative security
(e.g. IPSEC)
PreSharedKey: DTLS enabled, preshared keys authenticate peers or
groups of peers.
RawPublicKey: DTLS enabled, asymmetric keys without certificate.
Certificate: DTLS enabled, asymmetric keys with x.509 certificate.
DTLS is not appropriate to group keying (multicast).
M2M Community
Telefónica Digital
41
42. 17
CoAP: Status, Advantages and Limitations
•
Proposed standard since July, 2013: draft-ietf-core-coap-18.
•
Advantages:
•
Designed for M2M, IoT
Easily mapped to HTTP, compatible with Proxy infrastructures.
Easy to map legacy protocols to CoAP
Extensions: push notifications, discovery and Multicast.
Limitations and work in progress:
End to end secure connection required for CoAP/HTTP mapping at a
proxy using DTLS/TLS.
Securing multicast communications.
Semantics should be standardized.
Caching of requests should also be allowed
M2M Community
Telefónica Digital
42