github.com/noisysockets/noisysockets@v0.21.2-0.20240515114641-7f467e651c90/README.md (about) 1 # Noisy Sockets 2 3 Noisy Sockets is a secure service-to-service communications library based on the [Noise Protocol Framework](https://noiseprotocol.org/). Endpoints are identified by Curve25519 public keys, traffic is encrypted and authenticated using ChaCha20-Poly1305, and sent/received as UDP packets. Noisy Sockets is wire compatible with [WireGuard](https://www.wireguard.com/). 4 5 Noisy Sockets implements a [drop-in replacement](./network/network.go) for the Go [net](https://pkg.go.dev/net) package, allowing it to be used with any existing code. This is implemented using a userspace TCP/IP stack based on [Netstack](https://gvisor.dev/docs/user_guide/networking/) from the [gVisor](https://github.com/google/gvisor) project. 6 7 ## Usage 8 9 Examples of how to use Noisy Sockets can be found in the [examples](./examples) directory. 10 11 ## Performance 12 13 Surprisingly decent, I've been able to saturate a 1Gbps link with approximately two CPU cores and a single noisy socket. Interestingly it appears to outperform the kernel implementation of WireGuard. 14 15 Some preliminary benchmark results can be found in the [benchmarks](https://github.com/noisysockets/benchmarks) respository. 16 17 ## Credits 18 19 Noisy Sockets is based on code originally from the [wireguard-go](https://git.zx2c4.com/wireguard-go) project by Jason A. Donenfeld. 20 21 WireGuard is a registered trademark of Jason A. Donenfeld.