top of page

Benchmarks

We tested Copxy against MQTT and HTTP to demonstrate the efficiency and benefit of the CoAP protocol. All benchmarks are using secured connections and model a constrained IoT device with sparse periodic short messages

​

We are not benchmarking against lwM2M, as it uses the same protocol (CoAP) you can expect similar results. Copxy resembles most the HTTP API and REST API notations and data model where as lwM2M does not, it uses the object/resource model. See more about the differences between Copxy and lwM2M in this comparison

Basic telemtry

Basic Telemetry

We created a simple setup on one of the most popular IoT platforms - AWS IoT core 

Our test device is sending a simple telemetry report
(38 bytes) in four secured methods:

  • MQTT directly IoT Core using mosquitto client

  • HTTP directly to IoT Core using curl client

  • Copxy with X.509 credentials using copxy client

  • Copxy with PSK credentials using copxy client

basic_telemetry.png
BM6_message_size.png

Copxy can send the same payload using only 13% the size of the same MQTT transaction

​

That's about x7.5 better than MQTT and HTTP

BM6_duration.png

Message delivery time is better with Copxy even though we are using a proxy and not a direct call

Coap advantage

The CoAP advantage

Copxy is using CoAP and DTLS as the transport protocol. CoAP is performing best in short messages that characterise IoT devices

In this experiment we compared The total message size, duration and the efficiency of secured CoAP MQTT and HTTP with payloads from 128 bytes to 16 Kbytes

 

CoAP is clearly dominant for payload sizes below 4096, where as typical IoT messages are less than 1024 bytes

BM4_graphs.png

CoAP sizes are between x4.5 – x7 smaller for messages below 1024 bytes

CoAP duration is similar or shorter than MQTT/HTTP up to 4 Kbytes, and loses its benefit for larger messages

Multiple requests

Multiple requests aggregation

Being a proxy, Copxy is ideal for aggregating requests from multiple application servers

In this benchmark our IoT device wakes periodically to send a telemetry report. At the same time it gets local weather from a weather service and also a time update

​

Since each server is different, using HTTP requests every query involves a separate TLS connection. Using Copxy we only need to establish one connection for all the calls

​

Copxy can aggregate these calls under the same DTLS connection to achieve much better performance

BM2_scheme.png
BM2_sizes.png

By grouping the requests Copxy is x10.5 more efficient than calling the servers directly

BM2_duration.png

By grouping the requests the total duration is shortened by 35% 

Copxy vars

Copxy Vars

Copxy is boosted with some tricks specifically designed for IoT scenarios. For example the ability to store and reuse variables (we call it Copxy vars)

​

In this benchmark we substitute a JWT with a Copxy variable

Many applications require the use of a JWT (Json Web Token) to authenticate their clients. A JWT is typically inserted in the header section of HTTP requests. The JWT can be quite large, typically ~ 1 kByte, much bigger than the payload itself

 

By using Copxy Variables clients can store their JWT securely on Copxy and reuse it many times saving almost all of its size in their message payloads. The following benchmark tested a short message, authenticated with JWT using HTTP, Copxy and Copxy+Vars

 

Just by using Copxy our message was reduced x4.5 and using Copxy Variables by x7.7

BM5_size.png

Just by using Copxy our messages are x4.5 smaller, by adding Copxy vars x7.7 

BM5_duration.png

Message duration is much shorter

bottom of page