Skip to content

estwiz/rsu-protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rsu-protocol

Introduction

This project is an implementation for a remote software update (RSU) protocol that could be used for remote software update of devices over the internet. The RSU protocol lies on top of QUIC and lives in the user space (in contrast to the kernel space) of both the server and the devices.

The RSU protocol acts as a communication channel between a central server and the remote devices. Through this network, the remote devices can request software updates from the server and the server can send software updates to the devices.

The RSU protocol is implemented in Python.

Demo Video

Watch this video on youtube: RSU Protocol Demo

Implementation Summary

Read the implementation summary here

Features

  • Secure Communication: The RSU protocol uses TLS 1.3 to secure the communication between the server and the devices.
  • Reliable Communication: The RSU protocol uses QUIC to provide reliable communication between the server and the devices.
  • Software Update: The RSU protocol allows the devices to request software updates from the server and the server to send software updates to the devices.

Installation

1. Generate Certificates (Optional)

sh ./certs/generate.sh

2. Create a virtual environment

python3 -m venv .venv

3. Activate the virtual environment

source ./.venv/bin/activate

4. Install the requirements

pip install -r requirements.txt

5. Run the server

python3 rsu.py server

Optional arguments:

  • --cert: The path to the server certificate file. Default: certs/server.crt
  • --key: The path to the server private key file. Default: certs/server.key
  • --port: The port number to listen on. Default: 4433
  • --host: The host address to listen on. Default: localhost

6. Run the client
The client should be run only after the server is running.

python3 rsu.py client

Optional arguments:

  • --cert: The path to the client certificate file. Default: certs/client.crt
  • --key: The path to the client private key file. Default: certs/client.key
  • --port: The port number to connect to. Default: 4433
  • --host: The host address to connect to. Default: localhost

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published