Intro
A Virtual Private Network (VPN) boasts various properties, including secure data transmission and protection against tracking of location and identity, among others. Despite offering exciting features, there are some issues. For instance, VPNs may face crashes, be banned in certain countries, or experience high workloads, resulting in low speeds. NexaLoak addresses these problems by employing the Raft algorithm. Distributed nodes collaborate to provide a well-designed solution to these issues, and a leader is responsible for achieving consensus, maintaining system uptime, removing filtered or banned nodes, overseeing a bot, and providing metrics.
Architecture
The architecture of the system comprises various components that demonstrate how they are interconnected. To provide more details, refer to the document below, which contains several chapters as illustrated.
- Definitions
- Consensus
- System Design
- Technologies
- Implementation
Chapter 1 includes the terms used in this project. Typically, in distributed systems, terms are overloaded, and therefore, defining their actual meanings is necessary.
Chapter 2 illustrates how the system achieves agreement and validity despite asynchronous conditions. (Termination is no longer a requirement for consensus). Additionally, this section discusses which parts of the algorithm are precisely modified to achieve the system's objectives.
Chapter 3 discusses the relationships among various segments, including clients, distributed nodes, domain name services, providers, etc. The insight into how the system truly operates is demonstrated step by step in a flowchart.
Chapter 4 introduces the technologies utilized in implementing the project, including the programming language, a reliable in-memory database, remote procedure call protocol, top-level tunneling protocol, etc.
Finally, Chapter 5 highlights the crucial aspects of the implementation and briefly provides technical documentation for APIs and code spaces.
Documentation
Implementation
NexaLoak divides the implementation into three modules. The first module, called logman, is responsible for implementing log management for the Raft algorithm. Its duties include providing a persistent log manager for each node, transmitting committed logs to the hard disks to prevent potential issues, and integrating with the Redis database. The second and third modules, which have not been implemented yet, will be responsible for the RPC protocol and the Raft algorithm, respectively. For more details, click on each part linked with GitHub pages and explore further.
Contact