The constrained application protocol (CoAP)

33
The Constrained Application Protocol (CoAP) Khamdamboy Urunov, a Ph.D. student., [email protected]

Transcript of The constrained application protocol (CoAP)

Page 1: The constrained application protocol (CoAP)

The Constrained Application Protocol (CoAP)

Khamdamboy Urunov, a Ph.D. student.,[email protected]

Page 2: The constrained application protocol (CoAP)

• Resource of Presentation :

– CoAP: The Internet of Things Protocol (Zach Shelby, Chief Nerd)• http://www.iot.gen.tr/2016/02/08/coap-the-internet-of-things-protocol-zach-shelby-chief-nerd/

– Observing Resources in the Constrained Application Protocol (CoAP) RFC 7641• https://tools.ietf.org/html/rfc7641

– The Constrained Application Protocol (CoAP)• https://tools.ietf.org/html/rfc7252

2

Page 3: The constrained application protocol (CoAP)

Source Code of the CoAP• Source code of the CoAP

– https://coap.codeplex.com/

• A CoAP framework in C#

The Constrained Application Protocol (CoAP) https://datatracker.ietf.org/doc/draft-ietf-core-coap/is a RESTful web transfer protocol for resource-constrained networks and nodes.CoAP.NET is an implementation in C# providing CoAP-based services to .NET applications. Reviews and suggestions would be appreciated.

Example:Client part:

// new a GET request Request request = new Request(Method.GET); request.URI = new Uri("coap://[::1]/hello-world");

request.Send(); // wait for one response Response response = request.WaitForResponse();

3

Page 4: The constrained application protocol (CoAP)

Contents• The Web of Things

• The Web & REST?

• Introduction

• Protocol overview

• The Observe Option

• Client-server requirements

• Server-side Requirements

• Web Linking

• Security Considerations

• Example

4

Page 5: The constrained application protocol (CoAP)

Internet of Things

5

Things

Services

The Web

Little Data

Big Data

Page 6: The constrained application protocol (CoAP)

Web Resource Identification

6

Page 7: The constrained application protocol (CoAP)

The Web service Paradigm

7

the Web Services Description Language. It is commonly used to spell out in detail the services offered by a SOAP server. While WSDL is flexible in service binding options (for example, services can be offered via SMTP mail servers), it did not originally support HTTP operations other than GET and POST.Since REST services often use other HTTP verbs, such as PUT and DELETE, WSDL was a poor choice for documenting REST services.

the Web Application Description Language. WADL is lightweight, easier to understand and easier to write than WSDL. In some respects, it is not as flexible as WSDL (no binding to SMTP servers), but it is sufficient for any REST service and much less verbose.

Page 8: The constrained application protocol (CoAP)

Introduction

8

is a RESTful transfer protocol for constrained nodes and networks; messages work well for the small payloads;

CoAP (Constrained Application Protocol)

the term "payload" will be used for the actual content of a single CoAP message, i.e.a single block being transferred, while the term "body" will be used for the entire resource representation that is being transferred in a block-wise fashion.

Page 9: The constrained application protocol (CoAP)

CoAP Design Requirements

9

Page 10: The constrained application protocol (CoAP)

The CoAP Architecture

10

Page 11: The constrained application protocol (CoAP)

CoAP Feature

11

• 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 12: The constrained application protocol (CoAP)

12

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

What CoAP is (and is not)

Page 13: The constrained application protocol (CoAP)

The Transaction Model

13

• Transport- CoAP is defined for UDP

•Messaging- Simple message exchange between end-points- CON, NON, ACK, RST

•REST - Request/response piggybacked on messages- Method, Response Code and Options (URI, content-type)

Page 14: The constrained application protocol (CoAP)

Similar to HTTP a CoAP request is sent by a client using a Method Code to request an action on a URI identifiable

resource.

The server replies with a Response Code which may include a resource representation.

CoAP model is essentially client/server architecture enabling the client to request for service from server as needed

and the server responds.

The message layer interfaces with UDP layer which formats the data received into a datagram and sends it to the

lower layers of the OSI or the TCP/IP Model.

14

Application

Request / Response

Message

UDP

Simple message exchange between end-points

Confirmable (CON), Non-confirmable(NON), Acknowledgement (ACK), Reset (RST)

CoAP Layering

The CoAP messaging model is based on the exchange of messages over UDP between endpoints.

Page 15: The constrained application protocol (CoAP)

15

Confirmable Message

Some messages require an acknowledgement. These messages are called "Confirmable". When no packets are lost,

each Confirmable message elicits exactly one return message of type Acknowledgement or type Reset.

Non-confirmable Message

Some other messages do not require an acknowledgement. This is particularly true for messages that are repeated

regularly for application requirements, such as repeated readings from a sensor.

Acknowledgement Message

An Acknowledgement message acknowledges that a specific Confirmable message arrived. By itself, an

Acknowledgement message does not indicate success or failure of any request encapsulated in the Confirmable

message, but the Acknowledgement message may also carry a Piggybacked Response

Reset Message

A Reset message indicates that a specific message (Confirmable or Non-confirmable) was received, but some

context is missing to properly process it. This condition is usually caused when the receiving node has rebooted

and has forgotten some state that would be required to interpret the message. Provoking a Reset message (e.g., by

sending an Empty Confirmable message) is also useful as an inexpensive check of the liveness of an endpoint

("CoAP ping").

Message

Page 16: The constrained application protocol (CoAP)

CoAP messages are encoded in a simple binary format. The Message Header (4 bytes).The variable-length token value 0 and 8 bytes long.

16

Ver - Version (1) 2 bit unsigned integer . Implementations of this field to 1 (01 binary).

T – Message Type 2- bit unsigned integer. (Confirmable, Non-Confirmable, Acknowledgement, Reset).

TKL- Token Length 4-bit unsigned integer. Indicates the length of the variable-length Token field (0-8 bytes).

Code – 8-bit unsighted integer. 3 bit class(most signification bits). 5 bits detail (least significant bits).

Request Method (1-10) or Response Code (40-255)

Message ID – 16-bit identifier for matching responses

Token – Optional response matching token

Message Format

Standards Track RFC 7252 June, 2014

Page 17: The constrained application protocol (CoAP)

Option Format

17

Option Delta - Difference between this option type and the previous.

4 bit unsigned integer. A value between 0 and 12 indicates the Optional Delta.

Length - Length of the option value

4 bit unsigned integer. A value between 0 and 12 indicates the length of the Optional Value, in bytes.

Value - The value of Length bytes immediately follows Length

CoAP defined a number of options that can be included in a message.

Page 18: The constrained application protocol (CoAP)

Base Specification Options

18

The Uri-Host Option specifies the Internet host of the resource being requested. The Uri-Post Option specifies the transport-layer port number of the resourceThe Uri-Path Option specifies one segment of the absolute path to the resourceThe Uri-Query Option specifies one argument parameterizing the resource

Page 19: The constrained application protocol (CoAP)

Request Example

19

CoAP Client – Server communication

Page 20: The constrained application protocol (CoAP)

Dealing with Packet Loss

20

Page 21: The constrained application protocol (CoAP)

Separate Response

21

Page 22: The constrained application protocol (CoAP)

Example

22

Page 23: The constrained application protocol (CoAP)

Caching

23

• CoAP includes a simple caching modelCache ability determined by response code

An option number mask determines if it is a cache key

• Freshness modelMax-Age option indicates cache lifetime

• Validation modelValidity checked using the Etag Option

• A proxy often supports cachingUsually on behalf of a constrained node,

a sleeping node,

or to reduce network load

Page 24: The constrained application protocol (CoAP)

Proxying and caching

24

Page 25: The constrained application protocol (CoAP)

Observation

25

COAP Observation

PROBLEM: REST paradigm is often “PULL” type, that is, data is obtained by issuing an explicit request

Information/data in WSN is often periodic/

triggered (e.g., get me a temperature sample every

2 seconds or get me a warning if temperature goes

below 5°C)

SOLUTION: use Observation on COAP resources

Page 26: The constrained application protocol (CoAP)

Block transfer

26

COAP Block Transfer

PROBLEM:

avoid segmentation in the lower layers

(IPv6)

SOLUTION:

COAP Block Transfer Mode n brings up

fragmentation at the application layer

Page 27: The constrained application protocol (CoAP)

Getting Started with CoAP

27

• There are many open source implementations available

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

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 28: The constrained application protocol (CoAP)

Resource Discovery

28

• 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

GOAL: Discovering the links hosted by CoAP (or HTTP) servers

GET /.well-known/core?optional_query_string

Page 29: The constrained application protocol (CoAP)

Resource Directory

29

• 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

Page 30: The constrained application protocol (CoAP)

Resource Directory

30

Page 31: The constrained application protocol (CoAP)

CoRE Interfaces

31

• CoRE Interfaces [draft-shelby-core-interfaces]A paradigm for REST profiles made up of function setsSimple interface types

Page 32: The constrained application protocol (CoAP)

Architecture

32

Page 33: The constrained application protocol (CoAP)

• Thank you !

33