# Welcome to fastd’s documentation!

fastd is a very small VPN daemon which tunnels IP packets and Ethernet frames over UDP. It supports various modern encryption and authentication schemes and can be used in many different network topologies (1:1, 1:n, meshed).

fastd runs on Linux, FreeBSD, OpenBSD and macOS. Android support exists in the code, but is currently unmaintained. Binary packages are provided by many major Linux distributions.

User manual

- Command line options
- Configuration file format
  - Main configuration
  - Peer configuration
- Encryption & authentication methods
  - Recommended methods
  - List of methods
- MTU configuration
  - Guidelines
  - Examples

Release notes

- fastd v23
  - Bugfixes
  - Other changes
- fastd v22
  - New features
  - Bugfixes
  - Other changes
- fastd v21
  - Bugfixes
- fastd v20
  - New features
  - Bugfixes
  - Other changes
- fastd v19
  - New features
  - Removed features
  - Bugfixes
  - Other changes
- fastd v18
  - New features
  - Bugfixes
  - Other changes
- fastd v17
  - New features
  - Bugfixes
  - Other changes
- fastd v16
  - Bugfixes
  - Other changes
- fastd v15
  - New features
  - Bugfixes
  - Other changes

Cryptographic algorithms

- ec25519
  - Twisted Edwards curves
  - The curve used by ec25519
  - Implementation
  - Bibliography
- FHMQV-C
  - Protocol specification
  - Usage in fastd
  - Bibliography
- Ciphers
  - AES128-CTR
  - Salsa20(/12)
  - Bibliography
- Message Authentication Codes
  - GHASH / Galois/Counter Mode (GCM) / GMAC
  - UHASH / UMAC
  - Bibliography
- Method providers
  - generic-gmac
  - composed-gmac
  - generic-umac
  - composed-umac
  - generic-poly1305
  - null-l2tp
  - null
  - cipher-test

Developer documentation

- Building fastd
  - Dependencies
  - Building
  - Build settings
- Protocol specification
  - Basic protocol design
  - L2TP control message headers
  - Handshake format
  - Payload packets