mozilla-vpn-client
mozilla-vpn-client copied to clipboard
Experiment: Update MacOS daemon to use boringtun
Description
This is a bit of an experiment to try out Wireguard tunneling on MacOS using boringtun, which seems to have a couple of benefits:
- It's a rust crate, meaning we can drop the use of Golang entirely for MacOS.
- The daemon can become a monolithic binary as the
wireguard-gotool no longer exists. Allowing daemon management viaSMJobBless(future work). - Multihop happens entirely in-process, so we can simplify the routing table management.
- Better MTU handling.
As a downside. Packet encryption and handling is all done within the Qt event loop, which effectively makes it single-threaded. Potentially impacting network throughput.
Reference
i.e Jira or Github issue URL
Checklist
- [ ] My code follows the style guidelines for this project
- [ ] I have not added any packages that contain high risk or unknown licenses (GPL, LGPL, MPL, etc. consult with DevOps if in question)
- [ ] I have performed a self review of my own code
- [ ] I have commented my code PARTICULARLY in hard to understand areas
- [ ] I have added thorough tests where needed