coap
DESCRIPTION
CoAPTRANSCRIPT
![Page 1: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/1.jpg)
1
ARM IoT Tutorial
Zach Shelby
April 30th, 2014
CoAP: The Web of Things Protocol
![Page 2: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/2.jpg)
2
Introduction
![Page 3: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/3.jpg)
3 3
M2M Internet of Things
Little Data
Big Data
Web
Evolution from M2M to IoT
The Web
Things
Services
![Page 4: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/4.jpg)
4
CoAP: The Web of Things Protocol
§ Open IETF Standard
§ Compact 4-byte Header
§ UDP, SMS, (TCP) Support
§ Strong DTLS Security
§ Asynchronous Subscription
§ Built-in Discovery
![Page 5: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/5.jpg)
5
From Web Applications to IoT Nodes
Web Application
1000s of bytes
HTTP
IP
TLS / TCP
DTLS / UDP
Binary Web Object CoAP
IP
100s bytes 10s of bytes
IoT Backhaul IoT Node Network
Proxy Router
Web Object
DTLS / UDP
Binary Web Object CoAP
6LoWPAN
![Page 6: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/6.jpg)
6
CoAP is One Key IoT Standard
Local Network
Protocols, Security
Application
ZigBee IP ZigBee NAN BT Smart IP
TLS Based Security Web: CoAP & HTTP
Lightweight M2M Application Objects ZigBee Web Objects
Mature New
ZigBee IP 1.X
CoRE
6LoWPAN
![Page 7: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/7.jpg)
7
The Web and REST
![Page 8: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/8.jpg)
8
The Web Architecture
![Page 9: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/9.jpg)
9
Web Naming
![Page 10: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/10.jpg)
10
URL Resolution
![Page 11: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/11.jpg)
11
An HTTP Request
See RFC2616 - Hypertext Transfer Protocol v1.1
![Page 12: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/12.jpg)
12
Web Paradigms
![Page 13: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/13.jpg)
13
A REST Request
![Page 14: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/14.jpg)
14
CoAP: Constrained Application Protocol
![Page 15: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/15.jpg)
15
CoAP Design Requirements
![Page 16: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/16.jpg)
16
The CoAP Architecture
![Page 17: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/17.jpg)
17
What CoAP is (and is not) § Sure, CoAP is
§ A very efficient RESTful protocol
§ Ideal for constrained devices and networks
§ Specialized for M2M applications
§ Easy to proxy to/from HTTP
§ But hey, CoAP is not
§ A general replacement for HTTP
§ HTTP compression
§ Restricted to isolated “automation” networks
![Page 18: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/18.jpg)
18
CoAP Features § Embedded web transfer protocol (coap://)
§ Asynchronous transaction model
§ UDP binding with reliability and multicast support
§ GET, POST, PUT, DELETE methods
§ URI support
§ Small, simple 4 byte header
§ DTLS based PSK, RPK and Certificate security
§ Subset of MIME types and HTTP response codes
§ Built-in discovery
§ Optional observation and block transfer
![Page 19: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/19.jpg)
19
Transaction Model § Transport
§ CoAP currently defines:
§ UDP binding with DTLS security
§ CoAP over SMS or TCP possible
§ Base Messaging
§ Simple message exchange between endpoints
§ Confirmable or Non-Confirmable Message answered by Acknowledgement or Reset Message
§ REST Semantics
§ REST Request/Response piggybacked on CoAP Messages
§ Method, Response Code and Options (URI, content-type etc.)
![Page 20: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/20.jpg)
20
Message Header (4 bytes)
![Page 21: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/21.jpg)
21
Option Format
![Page 22: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/22.jpg)
22
Base Specification Options
![Page 23: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/23.jpg)
23
Request Example
Piggy-backed Response
Confirmable Request
![Page 24: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/24.jpg)
24
Dealing with Packet Loss
![Page 25: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/25.jpg)
25
Separate Response
![Page 26: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/26.jpg)
26
Bits and bytes...
![Page 27: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/27.jpg)
27
Caching
§ CoAP includes a simple caching model § Cacheability determined by response code § An option number mask determines if it is a cache key
§ Freshness model § Max-Age option indicates cache lifetime
§ Validation model § Validity checked using the Etag Option
§ A proxy often supports caching § Usually on behalf of a constrained node, § a sleeping node, § or to reduce network load
![Page 28: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/28.jpg)
28
Proxying and caching
![Page 29: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/29.jpg)
29
Observation
See draft-ietf-core-observe
![Page 30: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/30.jpg)
30
Block transfer
See draft-ietf-core-block
![Page 31: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/31.jpg)
31
Getting Started with CoAP
§ There are many open source implementations available § mbed includes CoAP support § Java CoAP Library Californium § C CoAP Library Erbium § libCoAP C Library § jCoAP Java Library § OpenCoAP C Library § TinyOS and Contiki include CoAP support
§ CoAP is already part of many commercial products/systems § ARM Sensinode NanoService § RTX 4100 WiFi Module
§ Firefox has a CoAP plugin called Copper § Wireshark has CoAP dissector support § Implement CoAP yourself, it is not that hard!
![Page 32: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/32.jpg)
32
Discovery & Semantics
![Page 33: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/33.jpg)
33
What is Web Linking?
§ Links have been around a long time § Web Linking formalizes links with defined relations, typed links
§ HTML and Atom have allow links
§ RFC5988 defines a framework for Web Linking § Combines and expands the Atom and HTML relation types § Defines a unified typed link concept
§ A link can be serialized in any number of formats § RFC5988 revives the HTTP Link Header and defines its format § Atom and HTML are equivalent serializations
![Page 34: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/34.jpg)
34
What is Web Linking?
§ A type link consists of: § Context URI – What the link is from § Relation Type – Indicates the semantics of the link § Target URI – What the link is too § Attributes – Key value pairs describing the link or its target
§ Relations include e.g. copyright, author, chapter, service etc. § Attributes include e.g. language, media type, title etc. § Example in HTTP Link Header format: Link: <http://example.com/TheBook/chapter2>; rel="previous"; title="previous chapter" !
![Page 35: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/35.jpg)
35
Resource Discovery
§ Service Discovery § What services are available in the first place? § Goal of finding the IP address, port and protocol § Usually performed by e.g. DNS-SD when DNS is available
§ Resource Discovery § What are the Web resources I am interested in? § Goal of finding URIs § Performed using Web Linking or some REST interface § CoRE Link Format is designed to enable resource discovery
![Page 36: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/36.jpg)
36
CoRE Link Format
§ RFC6690 is aimed at Resource Discovery for M2M § Defines a link serialization suitable for M2M § Defines a well-known resource where links are stored § Enables query string parameters for filtered GETs § Can be used with unicast or multicast (CoAP)
§ Resource Discovery with RFC6690 § Discovering the links hosted by CoAP (or HTTP) servers § GET /.well-known/core?optional_query_string § Returns a link-header style format § URL, relation, type, interface, content-type etc.
![Page 37: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/37.jpg)
37
CoRE Resource Discovery
!!!
!
!
!
!
</dev/bat>;obs;rt="ipso:dev-bat";ct="0",!
</dev/mdl>;rt="ipso:dev-mdl";ct="0",!
</dev/mfg>;rt="ipso:dev-mfg";ct="0”,!
</pwr/0/rel>;obs;rt="ipso:pwr-rel";ct="0",!
</pwr/0/w>;obs;rt="ipso:pwr-w";ct="0",!
</sen/temp>;obs;rt="ucum:Cel";ct="0"!
![Page 38: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/38.jpg)
38
Resource Directory
§ CoRE Link Format only defines § The link format § Peer-to-peer discovery
§ A directory approach is also useful § Supports sleeping nodes § No multicast traffic, longer battery life § Remote lookup, hierarchical and federated distribution
§ The CoRE Link Format can be used to build Resource Directories § Nodes POST (register) their link-format to an RD § Nodes PUT (refresh) to the RD periodically § Nodes may DELETE (remove) their RD entry § Nodes may GET (lookup) the RD or resource of other nodes
See draft-ietf-core-resource-directory
![Page 39: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/39.jpg)
39
Resource Directory
See draft-ietf-core-resource-directory
![Page 40: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/40.jpg)
40
How to get Semantic?
§ So how to use CoRE in real applications? § Resources need meaningful naming (rt=) § A resource needs an interface (if=)
§ See [draft-vial-core-link-format-wadl] on using WADL for this
§ A payload needs a format (EXI, JSON etc.) § Deployment or industry specific today § oBIX, SensorML, EEML, sMAP etc. § SenML is a promising format [draft-jennings-senml] § CBOR is a standard for binary JSON [RFC7049]
§ Promising data semantics for use with CoAP § OMA Lightweight M2M [http://j.mp/lwm2m] § IPSO Objects [http://www.ipso-alliance.org/smart-object-committee-charter] § CoRE Interfaces [draft-ietf-core-interfaces]
![Page 41: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/41.jpg)
41
CoRE Link Format Semantics
§ RFC6690 = Simple semantics for machines § IANA registry for rt= and if= parameters
§ Resource Type (rt=) § What is this resource and what is it for? § e.g. Device Model could be rt=“ipso.dev.mdl”
§ Interface Description (if=) § How do I access this resource? § e.g. Sensor resource accessible with GET if=“core.s”
§ Content Type (ct=) § What is the data format of the resource payloads? § e.g. text/plain (0)
![Page 42: CoAP](https://reader033.vdocument.in/reader033/viewer/2022051518/5695cfa01a28ab9b028eda47/html5/thumbnails/42.jpg)
42
CoRE Interfaces
§ CoRE Interfaces [draft-ietf-core-interfaces] § A paradigm for REST profiles made up of function sets § Simple interface types !