Industrial IoT without REST

Executive Summary

It is commonly assumed that REST (Representational State Transfer) using HTTP is the best communication architecture for embedded devices for the IoT.  Valuable as this approach may be for human interactions on the Internet, it is not adequate for the high-speed performance necessary to support the Industrial IoT.  The connectionless request/response approach used by REST and HTTP introduces both performance and architectural problems that are unavoidable.  The Skkynet ETK overcomes all of these issues to produce a faster, lower cost, and more scalable data communication solution for the IIoT.

REST and the IoT

The Internet of Things (IoT) can be thought of in terms of a client-server architecture where the “things” are smart devices with embedded micro-controllers.  The devices generate data based on sensors, and send that data to a server that is usually elsewhere on the Internet.  Similarly, they can be controlled by retrieving data from the server and acting upon it, say to turn on an air conditioner.

The communication mechanism typically used for devices to communicate with the servers is called REST (Representational State Transfer) using HTTP.  Every communication between the device and server occurs as a distinct HTTP request.  When the device wants to send data to the server it makes an HTTP PUT call.  When it wants to get data (like a new thermostat setting) it makes an HTTP GET call.  Each HTTP call opens a distinct socket, performs the transaction, and then closes the socket.  The protocol is said to be “connectionless”.  Every transaction includes all of the socket set-up time and communication overhead.  Since there is no connection, all transactions must take the form of “request/response” where the device sends a request to the server and collects the response.  The server can never initiate a transaction with the device.

REST APIs work very well in low-speed transactional systems.  However, they have a number of disadvantages when applied to high speed, low latency systems, and to systems where data transfer from the server to the device is frequent.  Industrial IoT systems are characterized by exactly these requirements, making REST an inappropriate communication model for IIoT.  These are exactly the problems that the Skkynet API solves.

The Skkynet ETK

Skkynet’s ETK (Embedded Toolkit) implements a persistent connection between the device and server, meaning that there is always an open communication channel that can immediately transmit data without the overhead of socket set-up.  Once the communication channel is open, either the server or the device can initiate a transaction.  Every transaction consists of a request and optionally a response.  If no response is required then none is transmitted, saving bandwidth and improving speed.  This persistent connection allows the client to use a publish/subscribe model for retrieving data.  The benefits of this approach are numerous.


The ETK is more efficient on bandwidth for a number of reasons:

  • The connection is only set up once, instead of each transaction.
  • The transaction can be one-sided. No response is necessary in most cases.
  • There is no header on transactions or responses. In REST systems the HTTP header is often larger than the payload.  With the ETK there is only payload.

Latency measures the amount of time that passes between an event occurring and the user receiving notification.  In a REST system, the latency is the sum of:

  • The client’s polling rate
  • Socket set-up time
  • Network transmission latency to send the request
  • Transmission overhead for HTTP headers
  • Transmission time for the request body
  • Transit time through the server
  • Network transmission latency to send the response
  • Socket take-down time

In the Skkynet ETK, the latency is:

  • Network transmission latency to send the request
  • Transmission time for the request body

The largest sources of latency in a REST system (polling rate, socket set-up, response delivery) are all eliminated when using the Skkynet ETK.  This allows the ETK to achieve transmission latencies that are mere microseconds above network latencies.

This advantage becomes even clearer in systems where two devices are communicating with one another through an IoT server.  The Skkynet ETK can achieve practical data rates hundreds or thousands of time faster than a REST API.  REST APIs were never designed for this kind of data transmission.


One of the factors in scalability is the rate at which a server responds to transactions from the device.  In a REST system a device must constantly poll the server to retrieve new data.  If the device polls the server quickly then it causes many transactions to occur, most of which produce no new information.  If the device polls the server slowly, it may miss important data or will experience a significant time lag (latency) due to the polling rate.  As the number of devices increases, the server quickly becomes overloaded and the system must make a choice between the number of devices and the latency of transmission.

The ETK does not require the device to poll the server.  Once the device has made the connection and subscribed to the data, it may never send another message to the server.  The server informs the device when a value changes, without added latency and without using excess bandwidth.  This produces a system that is far more scalable than REST systems can be.  For example, some REST-based systems limit each user to 250 transactions per minute.  The ETK can comfortably handle 1,000,000 transactions per minute.


REST APIs generally assume that the data flow will be asymmetrical.  That is, the device will send a lot of data to the server, but retrieve data from the server infrequently.  In order to maintain reasonable efficiency, the device will typically transmit frequently, but poll the server infrequently.  This causes additional latency, as discussed earlier.  In some systems this might be a reasonable sacrifice, but in IIoT systems it usually is not.  For example, a good IIoT server can accept 10,000 data point changes per second from an industrial process and retransmit that entire data set to another industrial process, simulator, or analytics system without introducing serious alterations to the data timing.  To do that, the server must be capable of transmitting data just as quickly as it receives it.  Since the Skkynet ETK uses a persistent connection, it provides a symmetrical communication channel.  If the device needs to receive 10,000 data changes per second the communication mechanism will support it.


Industrial applications are often mission-critical to their owners.  This is one of the big issues holding back the IIoT.  What happens if the Internet connection goes down?

In the typical IoT scenario, the device is making REST calls to a server running in the cloud.  In some ways this is a by-product of the business model, and in some ways it is due to the REST implementation.  A REST server is typically a web server with custom URL handlers, tightly coupled to a proprietary server-side application and database.  If the Internet connection is lost, the device is cut off, even if the device is inside an industrial plant providing data to a local control system via the cloud.  If the cloud server is being used to issue controls to the device, then control becomes impossible, even locally.  This could be characterized as “catastrophic degradation” when the Internet connection is lost.

The Skkynet ETK uses the same communication protocol as the Cogent DataHub, meaning that the device can make a connection to a local computer inside the plant, integrate directly with a control system using standard protocols like OPC and DDE, and also transmit its data to the cloud.  If the Internet connection is lost, the local network connection to the control system is still available.  The device is not completely cut off, and control can continue.  This is a “graceful degradation” when the Internet connection is lost.


The received wisdom of the IoT is that REST APIs based on HTTP represent the best communication architecture for embedded devices.  Yet they suffer from both performance and architectural problems that cannot be overcome due to their connectionless request/response nature.  The Skkynet ETK overcomes all of these issues to produce a faster, lower cost and more scalable data communication solution for the IIoT.