Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The constrained application protocol (CoAP)

The constrained application protocol (CoAP)
Constrained network protocol for using IoT

  • Be the first to comment

The constrained application protocol (CoAP)

  1. 1. The Constrained Application Protocol (CoAP) Khamdamboy Urunov, a Ph.D. student.,
  2. 2. • Resource of Presentation : – CoAP: The Internet of Things Protocol (Zach Shelby, Chief Nerd) • – Observing Resources in the Constrained Application Protocol (CoAP) RFC 7641 • – The Constrained Application Protocol (CoAP) • 2
  3. 3. Source Code of the CoAP • Source code of the CoAP – • A CoAP framework in C# The Constrained Application Protocol (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
  4. 4. 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
  5. 5. Internet of Things 5 Things Services The Web Little Data Big Data
  6. 6. Web Resource Identification 6
  7. 7. 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.
  8. 8. 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.
  9. 9. CoAP Design Requirements 9
  10. 10. The CoAP Architecture 10
  11. 11. 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
  12. 12. 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)
  13. 13. 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)
  14. 14. 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.
  15. 15. 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
  16. 16. 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
  17. 17. 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.
  18. 18. 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 resource The Uri-Path Option specifies one segment of the absolute path to the resource The Uri-Query Option specifies one argument parameterizing the resource
  19. 19. Request Example 19 CoAP Client – Server communication
  20. 20. Dealing with Packet Loss 20
  21. 21. Separate Response 21
  22. 22. Example 22
  23. 23. Caching 23 • CoAP includes a simple caching model Cache ability 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
  24. 24. Proxying and caching 24
  25. 25. 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
  26. 26. 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
  27. 27. 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!
  28. 28. 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
  29. 29. 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
  30. 30. Resource Directory 30
  31. 31. CoRE Interfaces 31 • CoRE Interfaces [draft-shelby-core-interfaces] A paradigm for REST profiles made up of function sets Simple interface types
  32. 32. Architecture 32
  33. 33. • Thank you ! 33