In the previous year, we conducted SME stage 1 experiment on our platform using the Fed4FIRE+ testbeds. It was successful and it generated multiple insights about our platform. The details of the stage 1 experiments can be found in our blog “An Efficient Procedure to Develop, Deploy and Monitor Iterative Performance Tests for IoT-FOTA Platform”. Since then, we have brought in a slew of changes in the asvin platform for performance, security and user experience. we have researched and integrated multiple cryptographic encryption technologies such as Physical Unclonable Functions (PUF), Functional encryption, OAuth2.0 etc. This year, asvin was selected for Blockchers program in which we worked with Alastria and assembled Hyperledger Besu in our platform as a blockchain solution. Hyperledger Besu is an Ethereum client. The asvin platform was deployed to Kubernetes cluster on Google cloud. We use Nginx ingress controller as load balancer, SSL termination and reverse proxy for the applications running in our Kubernetes cluster.
To stress test our enhanced platform, we have conducted Fed4FIRE+ stage 2 experiment named “Extended Stress Tests for asvin.io”. The idea was to validate all the new features integrated after the stage 1 experiment. We divided it into 3 major objectives. Firstly, enhanced experiments on scalability to check if the platform can handle millions of devices smoothly. Secondly, check the scalability and feasibility of new cryptographic encryptions such as PUF, Homomorphic and Functional encryptions. Finally, monitor the effects of stressful network conditions by limiting network bandwidth and latency.
For the Stage 2 experiment, we used jFed to provision and manage resources on Virtual Wall testbed. We simulated a docker image as an IoT device which was then deployed on Kubernetes cluster. The experiment was managed using control and influxDB server and results were analysed using Grafana dashboard. Experiment setup is similar to the setup described in our previous Fed4FIRE+ experiment blog.
Since scalability and resilience were the main priorities of our solution, the experiment was designed to test the platform for these factors by the scaling of number of devices registered and connected to the platform. The first iteration included deploying 1 pod on a Kubernetes cluster hosted on 3 nodes on Virtual Wall. The pod was as designed to function as an IoT device. The pod ran 10 parallel threads which means one running pod simulated 10 IoT devices. Iteratively, we scaled the devices to 100, 1000, and 10,000 by increasing number of nodes on the testbed and the pods. The plan was to test the behaviour and performance of the asvin platform. In the next stage, we ran a Kubernetes cluster with 150 nodes where we simulated 100,000 IoT devices. The docker image was composed of a python file which ran multiple parallel threads. Each thread had a flow from registering as a device to updating the device. The figure below shows a very basic flow diagram of a thread. Each thread interacted with the asvin platform using the REST API endpoints over HTTPS. These requests were closely monitored for success and failure. We also noted down the response time of each request dusing this process.
Results
The stage 2 experiment results affirm that asvin platform is highly scalable because of its distributed and decentralised nature. The execution was successful with promising results and measurements of the performance of our platform. The asvin platform seamlessly handles large number of devices without generating congestion. In the Scalability and reliability stress test, the platform performed exceptionally well during high volume of requests. The blockchain server, IPFS server handled and served the request in seamless manner. All the devices were successfully updated with new firmware according to the rollouts. The following figure shows the firmware updates performed in a given time window.
Conclusion
The asvin platform is composed of 4 core components as depicted in the figure below. Each component in the platform performs a specific set of tasks. This modular architecture makes asvin platform scalable and resilient.
The experiment also included the performance and scalability of individual components of the asvin platform and cryptographic encryptions. We are going to showcase the experiment results and learning in a series of blog. This is the first blog in this series. The details of the subsequents blogs will be provided here.