WireGuard is already a fast, efficient VPN solution because it is implemented in the kernel and uses modern cryptography. While it supports parallel encryption and decryption of data packets, the implementation has been unstable in the past, and it does not scale well to datacenter or backbone-level performance.
This project's goal is to improve performance and robustness by:
- Auditing the code for bottlenecks, race conditions, and other issues
- Implementing features such as GRO to better use modern network hardware, and
- Collecting data on throughput and latency characteristics under load to develop strategies to maximize performance in a variety of scenarios.
Because of its statelessness and efficiency, WireGuard is well-suited to mobile applications. However, there is currently no official front end for mobile phones. A secondary goal of this project is to implement an Android application to create and configure a WireGuard interface using wg(8) and the Android VPN framework. After that, a patch for Android distributions will add WireGuard directly to the system VPN settings with a simplified configuration interface.