Currently implemented functionality:
-
RFC5389 (new STUN protocol) full server and client implementations. We do not maintain strict compatibility with the obsolete RFC 3489 "old STUN" protocol.
-
RFC5766 TURN protocol full server and client implementations. We support file-based long term user credentials, for now. We added experimental DTLS protocol, too.
-
RFC6156 TURN IPv6 extension.
-
We support the following client-to-server network transports for TURN messages: a) UDP b) TCP c) TLS d) DTLS
-
Performance tested.
-
Torture and stability tests.
-
Multiple *NIX platforms tested and supported.
-
TTL field handling implemented for all platforms, preferred behavior in RFC5766.
-
TOS (DiffServ and ECN) field handling (preferred behavior of RFC 5766) implemented, for Linux. Other platforms support the alternative behavior of RFC 5766.
-
DF field alternative behavior of RFC 5766 implemented.
-
Bandwidth limitation per session implemented.
-
RFC 5769 test vectors implemented (where applicable).
-
RFC 5780 STUN extension: NAT behavior discovery.
-
C++ mapping implemented.
-
RFC 6062 TCP relaying implemented.
-
Users can be stored in PostgreSQL database.
-
Users can be stored in MySQL database.
-
TURN Server REST API implemented.
-
Short-term credentials mechanism implemented.
-
Simple load-balancing with ALTERNATE-SERVER implemented.
-
Redis database support added.
-
RFC3489 backward compatibility.
-
Multithreaded TCP relay processing (UDP relay has been multithreaded from the beginning).
-
Networking engine 2.0 implemented, with more scalable approach to the UDP sockets handling.
-
DOS attack prevention logic added to the server; DOS attack client emulation implemented.
-
Linux UDP sockets workaround added to counter RFC 1122 behavior.
-
DTLS sockets re-implemented for better scalability and for Cygwin compatibility.
-
A number of TLS/DTLS improvements added: multiple protocols support, certificate check option.
-
SHA256 support added (experimental).
-
UDP network engine optimized for the new Linux kernels (3.9+).
-
ICE Mobility draft implemented (experimental).
-
CLI implemented.
-
DH and EC TLS ciphers added.
-
HTTP "keep alive" request supported.
-
Optimized (for thousands and more sessions) timers implementation.
-
TCP network engine optimized for the new Linux kernels (3.9+).
-
telnet-based monitor implemented.
-
Package memory copy eliminated in traffic routing.
-
Congestion avoidance implemented, for all protocols.
-
Coturn project forked from rfc5766-turn-server.
-
Multi-tenant server implemented (ORIGIN support).
-
Bandwidth draft support added.
-
MongoDB support added.
-
Double (dual) allocation added (SSODA draft).
-
Secure MySQL connection implemented.
-
Third-party security mechanism (through oAuth) implemented.
-
SQLite support added as default database.
-
DTLS1.2 supported.
-
ALPN stun.turn and stun.nat-discovery supported.
-
SSLv2 support cancelled.
-
The short-term credentials server-side support cancelled (still supported in the client library).
-
Web HTTPS admin interface implemented.
-
SHA384 and SHA512 support added (experimental).
-
native SCTP experimental support.
-
Multi-tenant implementation based upon third-party authorization (oAuth).
-
TLS1.3 support (with openssl-1.1.1+)
-
openssl-3.0 support
-
Windows build support, MSVC and MinGW
-
Add support to Prometheus as metrics interface
-
Sanitize DB connection strings before printing to log
-
Syslog facility support as an additional logging mechanism provider
-
Support LibreSSL
-
CMake as an alternative build system
Things to be implemented in future (the development roadmap) are described in the TODO file.