Build P2P encrypted Networking stack

Job ID: 33063301

Budget: £3,000 – £5,000 GBP

Summary
-----------------------------
We develop innovative software solutions based on patent-pending container technology that enables fully featured applications to run on multiple device platforms, such as Windows, Mac, and Linux - even if the operating system on your device does not normally support those applications. What makes their container technology different from other containers is that it does not require you to be connected to the Cloud to run your applications. Your applications run locally on your device online as well as offline. Their solutions enable you to focus on being productive on the device of your choice without any loss of features, functionality, or familiarity.

They are looking for a candidate with strong networking experience (UDP, TCP/IP, optimally experience developing VPNs or similar software) and either Go, Rust, or C experience to develop a peer-to-peer private network connecting software running in virtual machines with each other. Potentially based on existing protocols (e.g. wireguard, tailscale or similar).


General Information
-----------------------------
The position is open to full-time and part-time candidates able to provide some overlap with European timezones.


Tasks and Deliverables
-----------------------------
You will be working on networking and properly integrating the client and server sides of the containers, beginning with Windows as a client. They are flexible in terms of the programming language with a preference towards Rust or Go, but C is also an option.

It can be roughly broken down to the following components:

- Server (Linux only) that handles authentication, IP address assignment, key exchange for clients
- User-mode TCP/IP stack (Linux+Windows, probably based on existing software, e.g. slirp or smoltcp) that integrates into qemu virtual machine (on the host side). Receives raw ethernet packets from the guest OS, which should be routed on the private network.


Required Experience
-----------------------------
- Go, Rust, or C
- Networking experience


Bonus Experience
-----------------------------
- Experience with VPNs.
- Experience developing VMs.